feat: add hyprland sound system with event-triggered audio feedback;

feat: implement new hyprland plugins (hyprfocus, hyprbars, dynamic-cursors);
refactor: reorganize hyprland autostart with delay staging and plugin configuration;
feat: add notification urgency-based sound system to swaync;
feat: enhance waybar with battery module, mpd controls, and dock bar;
refactor: update waybar taskbar with active window indicators and sorting;
feat: add hyprland shutdown sound and login audio greeting;
fix: adjust cava sleep timer and mpd sticker database configuration;
feat: update rmpc keybindings for improved playlist management;
fix: modify rofi keybindings for better navigation;
chore: add zsh aliases and misspell corrections;
refactor: update styling across swaync, waybar, and hyprland with new border radii and accent colors.
This commit is contained in:
2025-12-29 20:47:57 +03:00
parent b453f9efd7
commit f30e7d0085
36 changed files with 387 additions and 129 deletions

View File

@@ -27,15 +27,27 @@
"keyboard-shortcuts": true,
"notification-grouping": false,
"image-visibility": "when-available",
"show-per-app-icon": true,
"transition-time": 100,
"hide-on-clear": false,
"hide-on-action": true,
"text-empty": "No nothing",
"text-empty": "No disturbances",
"script-fail-notify": true,
"scripts": {
"notification-sound": {
"exec": "sh $HOME/.config/swaync/scripts/sound.sh",
"app-name": "^(?!.*AyuGram).*$"
"notification-sound-low": {
"exec": "sh $HOME/.config/swaync/scripts/sound.sh low",
"app-name": "^(?!.*AyuGram).*$",
"urgency": "Low"
},
"notification-sound-normal": {
"exec": "sh $HOME/.config/swaync/scripts/sound.sh normal",
"app-name": "^(?!.*AyuGram).*$",
"urgency": "Normal"
},
"notification-sound-critical": {
"exec": "sh $HOME/.config/swaync/scripts/sound.sh critical",
"app-name": "^(?!.*AyuGram).*$",
"urgency": "Critical"
}
},
"notification-visibility": {
@@ -48,8 +60,6 @@
"widgets": [
"menubar",
"buttons-grid",
"volume",
"slider#brightness",
"inhibitors",
"title",
"notifications",

View File

@@ -5,29 +5,42 @@ if [ $(swaync-client --get-dnd) == "true" ]; then
exit 0
fi
# Directory containing your notification sounds
SOUND_DIR="$HOME/.config/swaync/scripts/sounds"
SOUND_LOW_DIR="$HOME/.config/swaync/scripts/sounds/low"
SOUND_NORMAL_DIR="$HOME/.config/swaync/scripts/sounds/normal"
SOUND_CRITICAL_DIR="$HOME/.config/swaync/scripts/sounds/critical"
case $1 in
low)
DIR=$SOUND_LOW_DIR
;;
normal)
DIR=$SOUND_NORMAL_DIR
;;
critical)
DIR=$SOUND_CRITICAL_DIR
;;
*)
echo "Unknown urgency level '$1'"
exit 1
;;
esac
# Enable nullglob to prevent literal interpretation when no files match
shopt -s nullglob
# Get a list of audio files in the directory (simpler approach)
SOUND_FILES=()
for ext in wav mp3 ogg flac; do
SOUND_FILES+=("$SOUND_DIR"/*."$ext")
SOUND_FILES+=("$DIR"/*."$ext")
done
# Check if any sound files exist
if [ ${#SOUND_FILES[@]} -eq 0 ]; then
echo "No sound files found in $SOUND_DIR"
exit 0 # Exit with success so notifications still work
echo "No sound files found in $SOUND_NORMAL_DIR"
exit 0
fi
# Select a random sound file
RANDOM_INDEX=$((RANDOM % ${#SOUND_FILES[@]}))
RANDOM_SOUND="${SOUND_FILES[$RANDOM_INDEX]}"
# Play the random sound
play -v 0.5 "$RANDOM_SOUND" 2>/dev/null || {
echo "Failed to play $RANDOM_SOUND"
}

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -20,6 +20,8 @@
--button-top: #505050;
--button-on-top: #CE5268;
--button-off: #2e2d31;
--accent: #E83C82;
}
* {
@@ -66,12 +68,12 @@ button:hover {
}
.notification-row .notification-background {
padding: 6px 12px;
padding: 6px 15px;
}
.notification-row .notification-background .notification {
/* The actual notification */
border-radius: 12px;
border-radius: 15px;
border: 1px solid var(--noti-border-color);
padding: 0;
transition: background 0.15s ease-in-out;
@@ -88,18 +90,35 @@ button:hover {
.notification-row .notification-background .notification.critical {
/* Critical Priority Notification */
border-color: var(--accent);
}
/* Critical Priority Notification */
.notification-row .notification-background .notification.critical .notification-default-action .notification-content .text-box .summary {
color: var(--accent);
text-shadow: 0px 0px 8px var(--accent);
}
.notification-row .notification-background .notification.critical .notification-default-action .notification-content .text-box .summary {
color: var(--accent);
text-shadow: 0px 0px 8px var(--accent);
}
.notification-row .notification-background .notification.critical .notification-default-action .notification-content .text-box .body {
color: var(--accent);
text-shadow: 0px 0px 8px var(--accent);
}
.notification-row .notification-background .notification .notification-default-action {
/* The large action that also displays the notification summary and body */
padding: 4px;
padding: 10px;
margin: 0;
box-shadow: none;
background: transparent;
border: none;
color: var(--text-color);
transition: background 0.15s ease-in-out;
border-radius: 12px;
border-radius: 15px;
}
.notification-row:focus .notification-background .notification .notification-default-action {
@@ -118,7 +137,7 @@ button:hover {
.notification-row .notification-background .notification .notification-default-action .notification-content {
background: transparent;
border-radius: 12px;
border-radius: 15px;
padding: 0;
}
@@ -194,14 +213,14 @@ button:hover {
color: var(--text-color);
caret-color: var(--text-color);
border: 1px solid var(--noti-border-color);
border-radius: 12px;
border-radius: 15px;
}
.notification-row .notification-background .notification .notification-default-action .notification-content .inline-reply .inline-reply-button {
margin-left: 4px;
background: rgba(var(--noti-bg), var(--noti-bg-alpha));
border: 1px solid var(--noti-border-color);
border-radius: 12px;
border-radius: 15px;
color: var(--text-color);
}
@@ -218,8 +237,8 @@ button:hover {
.notification-row .notification-background .notification .notification-alt-actions {
background: none;
border-bottom-left-radius: 12px;
border-bottom-right-radius: 12px;
border-bottom-left-radius: 15px;
border-bottom-right-radius: 15px;
padding: 4px;
}
@@ -230,7 +249,7 @@ button:hover {
}
.notification-row .notification-background .notification .notification-action > button {
border-radius: 12px;
border-radius: 15px;
}
.notification-group {
@@ -256,7 +275,7 @@ button:hover {
}
.notification-group .notification-group-close-button .close-button {
margin: 12px 20px;
margin: 15px 20px;
}
.notification-group .notification-group-buttons, .notification-group .notification-group-headers {
@@ -363,7 +382,7 @@ button:hover {
.widget-title > button {
margin: 0px;
border-radius: 12px;
border-radius: 15px;
}
/* DND widget */
@@ -374,7 +393,7 @@ button:hover {
}
.widget-dnd switch {
border-radius: 12px;
border-radius: 15px;
margin: 8px;
}
@@ -384,7 +403,7 @@ button:hover {
.widget-dnd switch slider {
border-radius: 12px;
border-radius: 15px;
}
/* Label widget */
@@ -410,7 +429,7 @@ button:hover {
.widget-mpris .widget-mpris-player {
margin: 16px 20px;
border-radius: 12px;
border-radius: 15px;
box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.75);
}
@@ -429,7 +448,7 @@ button:hover {
}
.widget-mpris .widget-mpris-player .mpris-overlay .widget-mpris-album-art {
border-radius: 12px;
border-radius: 15px;
box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.75);
-gtk-icon-size: var(--mpris-album-art-icon-size);
}
@@ -464,11 +483,11 @@ button:hover {
min-height: 50px;
padding: 8px;
margin: 8px;
border-radius: 12px;
border-radius: 15px;
}
.widget-buttons-grid flowboxchild > button {
border-radius: 12px;
border-radius: 15px;
height: auto;
}
@@ -513,7 +532,7 @@ button:hover {
}
.widget-menubar > .menu-button-bar > .widget-menubar-container button {
border-radius: 12px;
border-radius: 15px;
padding: 0px 15px;
margin: 0 4px;
background-color: var(--noti-bg-selection);
@@ -536,7 +555,7 @@ button:hover {
}
.widget-menubar > revealer button {
border-radius: 12px;
border-radius: 15px;
margin: 8px;
margin-top: 0;
}
@@ -553,7 +572,7 @@ button:hover {
.widget-volume {
padding: 8px;
margin: 8px;
border-radius: 12px;
border-radius: 15px;
}
.widget-volume label:first-child {
@@ -573,14 +592,14 @@ button:hover {
background-color: var(--noti-bg-alt);
padding: 4px 8px 8px 8px;
margin: 0px 8px 8px 8px;
border-radius: 12px;
border-radius: 15px;
}
/* Slider widget */
.widget-slider {
padding: 8px;
margin: 8px;
border-radius: 12px;
border-radius: 15px;
}
.widget-slider trough highlight {
@@ -595,7 +614,7 @@ button:hover {
.widget-backlight {
padding: 8px;
margin: 8px;
border-radius: 12px;
border-radius: 15px;
}
/* Inhibitors widget */
@@ -606,7 +625,7 @@ button:hover {
.widget-inhibitors > button {
margin: 8px;
border-radius: 12px;
border-radius: 15px;
}
.notification-row:parent {