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:
@@ -25,37 +25,32 @@ $privateBrowser = env GTK_THEME=Adwaita:light zen-browser --private-window
|
||||
$notificationCenter = pkill rofi & swaync-client -t -sw || notify-send --hint int:transient:1 "Error SwayNC is down"
|
||||
|
||||
$mpdpass = kapuchinamusica
|
||||
$startDelay = sleep 2
|
||||
|
||||
#################
|
||||
### AUTOSTART ###
|
||||
#################
|
||||
|
||||
exec = sh -c '[[ $(cat "$HOME/.config/waybar/goal.txt") != "." ]] && swaync-client -C && notify-send -u critical -i "$HOME/Pictures/Fetch/atheism_paint.png" "Reminder" "$(cat $HOME/.config/waybar/goal.txt)"'
|
||||
exec-once = gsettings set org.gnome.desktop.interface color-scheme "prefer-dark"
|
||||
|
||||
# Autostart necessary processes (like notifications daemons, status bars, etc.)
|
||||
# Or execute your favorite apps at launch like this:
|
||||
|
||||
# Le essential hyprland crap
|
||||
# exec-once = hyprpaper
|
||||
exec-once = sh -c '[[ $(cat "$HOME/.config/waybar/goal.txt") != "." ]] && swaync-client -C && notify-send -u critical -i "$HOME/Pictures/Fetch/atheism_paint.png" "Reminder" "$(cat $HOME/.config/waybar/goal.txt)"'
|
||||
exec-once = swww-daemon
|
||||
exec-once = ~/.config/hypr/scripts/autofreeze_swww.sh
|
||||
exec-once = wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 50% && play -v 0.7 ~/.config/hypr/sound/login.ogg
|
||||
exec-once = ~/.config/waybar/run.sh
|
||||
exec-once = swaync
|
||||
exec-once = hypridle
|
||||
exec-once = hyprsunset
|
||||
exec-once = eww daemon
|
||||
exec-once = mullvad-vpn
|
||||
exec-once = ~/.config/hypr/scripts/random_wallpaper.sh
|
||||
exec-once = ~/.config/hypr/scripts/autofreezer.sh
|
||||
exec-once = ~/.config/fastfetch/scripts/fetch_update_count.sh
|
||||
exec-once = copyq --start-server
|
||||
exec-once = /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1
|
||||
exec-once = thunar --daemon
|
||||
exec-once = touch /tmp/toggle_ssocks
|
||||
exec-once = ~/.config/hypr/scripts/toggle_proxy.sh
|
||||
exec-once = nextcloud --background &
|
||||
exec-once = [workspace 8 silent] AyuGram
|
||||
exec-once = $startDelay && hypridle
|
||||
exec-once = $startDelay && hyprsunset
|
||||
exec-once = $startDelay && /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1
|
||||
exec-once = $startDelay && thunar --daemon
|
||||
exec-once = $startDelay && [workspace 8 silent] AyuGram
|
||||
exec-once = $startDelay && swaync
|
||||
exec-once = $startDelay && mullvad-vpn
|
||||
exec-once = $startDelay && touch /tmp/toggle_ssocks
|
||||
exec-once = $startDelay && ~/.config/hypr/scripts/autofreeze_swww.sh
|
||||
exec-once = $startDelay && ~/.config/fastfetch/scripts/fetch_update_count.sh
|
||||
exec-once = $startDelay && ~/.config/hypr/scripts/toggle_proxy.sh
|
||||
exec-once = $startDelay && ~/.config/hypr/scripts/sounds.sh
|
||||
exec-once = $startDelay && ~/.config/hypr/scripts/random_wallpaper.sh
|
||||
exec-once = $startDelay && ~/.config/hypr/scripts/autofreezer.sh
|
||||
|
||||
exec-shutdown = play -v 0.7 $HOME/Templates/Sounds/teleport.mp3
|
||||
|
||||
#############################
|
||||
### ENVIRONMENT VARIABLES ###
|
||||
@@ -92,8 +87,8 @@ env = HYPRCURSOR_SIZE,24
|
||||
|
||||
# https://wiki.hyprland.org/Configuring/Variables/#general
|
||||
general {
|
||||
gaps_in = 12.5
|
||||
gaps_out = 12
|
||||
gaps_in = 15
|
||||
gaps_out = 25
|
||||
|
||||
border_size = 1
|
||||
|
||||
@@ -115,12 +110,11 @@ general {
|
||||
snap {
|
||||
enabled = true
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
# https://wiki.hyprland.org/Configuring/Variables/#decoration
|
||||
decoration {
|
||||
rounding = 10
|
||||
rounding = 15
|
||||
rounding_power = 2
|
||||
border_part_of_window = 0
|
||||
|
||||
@@ -164,7 +158,7 @@ group {
|
||||
col.active = rgba(F8859Eff)
|
||||
col.inactive = rgba(32323264) rgba(32323264) 45deg
|
||||
gaps_in = 5
|
||||
gaps_out = 5
|
||||
gaps_out = 2
|
||||
|
||||
}
|
||||
}
|
||||
@@ -246,16 +240,22 @@ master {
|
||||
new_status = master
|
||||
}
|
||||
|
||||
render {
|
||||
direct_scanout = 1
|
||||
}
|
||||
|
||||
# https://wiki.hyprland.org/Configuring/Variables/#misc
|
||||
misc {
|
||||
force_default_wallpaper = 1 # Set to 0 or 1 to disable the anime mascot wallpapers
|
||||
disable_hyprland_logo = true # If true disables the random hyprland logo / anime girl background. :(
|
||||
force_default_wallpaper = 1
|
||||
disable_hyprland_logo = true
|
||||
vfr = true
|
||||
animate_manual_resizes = true
|
||||
enable_swallow = true
|
||||
swallow_regex = ^(kitty)$
|
||||
middle_click_paste = false
|
||||
enable_anr_dialog = false
|
||||
render_unfocused_fps = 1
|
||||
size_limits_tiled = true
|
||||
}
|
||||
|
||||
##############
|
||||
@@ -303,7 +303,8 @@ gestures {
|
||||
# Workspaces
|
||||
gesture = 4, horizontal, scale: 2, workspace
|
||||
workspace_swipe_forever = true
|
||||
|
||||
workspace_swipe_direction_lock = false
|
||||
workspace_swipe_touch = true
|
||||
gesture = 3, vertical, dispatcher, exec, pkill rofi || $menu
|
||||
|
||||
# Notification center
|
||||
@@ -723,7 +724,7 @@ workspace = 9, gapsin:15, gapsout:40
|
||||
###############
|
||||
### PLUGINS ###
|
||||
###############
|
||||
# exec-once = hyprpm reload -n
|
||||
exec-once = hyprpm reload
|
||||
|
||||
# # Easymotion
|
||||
# bind = SUPER, x, easymotion, action:hyprctl dispatch focuswindow address:{}
|
||||
@@ -731,15 +732,56 @@ workspace = 9, gapsin:15, gapsout:40
|
||||
# Close unfocused
|
||||
# bind = $mainMod SHIFT, x, plugin:xtd:closeunfocused
|
||||
|
||||
# plugin {
|
||||
#
|
||||
# hyprfocus {
|
||||
# animation = hyprfocusIn, 1, 3, quick
|
||||
# animation = hyprfocusOut, 1, 3, quick
|
||||
# fade_opacity = 0.94
|
||||
# mode = flash
|
||||
# }
|
||||
#
|
||||
plugin {
|
||||
|
||||
hyprfocus {
|
||||
animation = hyprfocusIn, 1, 3, quick
|
||||
animation = hyprfocusOut, 1, 3, quick
|
||||
fade_opacity = 0.94
|
||||
mode = flash
|
||||
}
|
||||
hyprbars {
|
||||
enabled = true
|
||||
bar_height = 18
|
||||
bar_color = rgba(1c1c1cce)
|
||||
bar_title_enabled = false
|
||||
bar_buttons_alignment = right
|
||||
bar_blur = true
|
||||
icon_on_hover = true
|
||||
bar_part_of_window = false
|
||||
bar_precedence_over_border = true
|
||||
|
||||
bar_text_font = "Iosevka Nerd Font Propo"
|
||||
bar_text_size = 10
|
||||
|
||||
hyprbars-button = rgba(ff4040ff), 12, X, hyprctl dispatch killactive
|
||||
hyprbars-button = rgba(11ee11ff), 12, F, hyprctl dispatch togglefloating && hyprctl dispatch resizeactive exact 1280 700 && hyprctl dispatch centerwindow
|
||||
hyprbars-button = rgba(eeee11ff), 12, Z, hyprctl dispatch tagwindow zawarudo
|
||||
inactive_button_color = rgba(D583995c)
|
||||
|
||||
on_double_click =
|
||||
|
||||
windowrule = plugin:hyprbars:bar_color rgb(261B1E), class:^(com.ayugram.desktop)
|
||||
windowrule = plugin:hyprbars:bar_color rgb(121214), class:^(vesktop)
|
||||
windowrule = plugin:hyprbars:bar_color rgb(131313), class:^(zen)
|
||||
windowrule = plugin:hyprbars:bar_color rgb(F1F3F4), class:^(draw.io)
|
||||
windowrule = plugin:hyprbars:bar_color rgb(1C1C1C), class:^(thunar)
|
||||
windowrule = plugin:hyprbars:bar_color rgb(1C1C1C), floating:1
|
||||
}
|
||||
|
||||
hyprexpo {
|
||||
}
|
||||
|
||||
dynamic-cursors {
|
||||
shake {
|
||||
threshold = 3
|
||||
limit = 15
|
||||
timeout = 1
|
||||
effects = true
|
||||
nearest = true
|
||||
}
|
||||
}
|
||||
|
||||
# easymotion {
|
||||
# #font size of the text
|
||||
# textsize=72
|
||||
@@ -791,7 +833,7 @@ workspace = 9, gapsin:15, gapsout:40
|
||||
# #if a monitor has a focused special workspace, only put easymotion labels on the windows in the special workspace
|
||||
# only_special = true
|
||||
# }
|
||||
# }
|
||||
}
|
||||
|
||||
debug {
|
||||
disable_logs = false
|
||||
|
||||
@@ -14,14 +14,14 @@ if [ "$HYPRGAMEMODE" = 1 ] ; then
|
||||
if pgrep waybar > /dev/null; then
|
||||
pkill waybar
|
||||
# TODO: lite waybar version
|
||||
waybar -c "$HOME/.config/waybar/config_top.jsonc" -s "$HOME/.config/waybar/style_top.css" &
|
||||
$HOME/.config/waybar/run.sh
|
||||
fi
|
||||
exit
|
||||
fi
|
||||
|
||||
if pgrep waybar > /dev/null; then
|
||||
pkill waybar
|
||||
waybar -c "$HOME/.config/waybar/config_top.jsonc" -s "$HOME/.config/waybar/style_top.css" &
|
||||
$HOME/.config/waybar/run.sh
|
||||
fi
|
||||
|
||||
hyprctl reload
|
||||
|
||||
150
hypr/scripts/sounds.sh
Executable file
150
hypr/scripts/sounds.sh
Executable file
@@ -0,0 +1,150 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
|
||||
SOUND_DIR="$HOME/.config/hypr/sound"
|
||||
PLAYER="play"
|
||||
VOLUME="0.1"
|
||||
|
||||
declare -A SOUND_MAP=(
|
||||
["workspace"]="futuristic-click.wav"
|
||||
["activewindow"]="popup.wav"
|
||||
["activelayout"]="popup.wav"
|
||||
["fullscreen"]="fullscreen.wav"
|
||||
["openwindow"]="open.mp3"
|
||||
["closewindow"]="popup.wav"
|
||||
["movewindow"]="popup.wav"
|
||||
["changefloatingmode"]="float.wav"
|
||||
)
|
||||
|
||||
declare -A EVENT_ENABLED=(
|
||||
["workspace"]=1
|
||||
["activewindow"]=1
|
||||
["activelayout"]=0
|
||||
["fullscreen"]=1
|
||||
["openwindow"]=1
|
||||
["closewindow"]=1
|
||||
["movewindow"]=1
|
||||
["changefloatingmode"]=1
|
||||
)
|
||||
|
||||
declare -A EVENT_COOLDOWN=(
|
||||
["activewindow"]=0.1
|
||||
["movewindow"]=0.2
|
||||
["changefloatingmode"]=0.3
|
||||
)
|
||||
|
||||
DEBUG=1
|
||||
declare -a SOUND_QUEUE=()
|
||||
declare -A COOLDOWN_TIMERS=()
|
||||
|
||||
mkdir -p "$SOUND_DIR"
|
||||
|
||||
log() {
|
||||
if [ $DEBUG -eq 1 ]; then
|
||||
echo "[$(date '+%H:%M:%S')] $1" >&2
|
||||
fi
|
||||
}
|
||||
|
||||
play_sound() {
|
||||
local event="$1"
|
||||
local sound_file="$2"
|
||||
local full_path="$SOUND_DIR/$sound_file"
|
||||
|
||||
if [ ! -f "$full_path" ]; then
|
||||
log "Sound file not found: $full_path"
|
||||
return 1
|
||||
fi
|
||||
|
||||
log "Playing: $event -> $sound_file"
|
||||
|
||||
play -v $VOLUME "$full_path" &
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
handle_event() {
|
||||
local raw_event="$1"
|
||||
local event_type=""
|
||||
local event_data=""
|
||||
|
||||
if [[ "$raw_event" == *">>"* ]]; then
|
||||
event_type="${raw_event%%>>*}"
|
||||
event_data="${raw_event#*>>}"
|
||||
else
|
||||
event_type="$raw_event"
|
||||
fi
|
||||
|
||||
log "Received event: $event_type (data: $event_data)"
|
||||
|
||||
case "$event_type" in
|
||||
"workspace"*)
|
||||
if [[ "$event_data" == *,* ]]; then
|
||||
trigger_event "workspace" "$event_data"
|
||||
fi
|
||||
;;
|
||||
"activelayout"*)
|
||||
trigger_event "activelayout" "$event_data"
|
||||
;;
|
||||
"fullscreen"*)
|
||||
trigger_event "fullscreen" "$event_data"
|
||||
;;
|
||||
"openwindow"*)
|
||||
trigger_event "openwindow" "$event_data"
|
||||
;;
|
||||
"closewindow"*)
|
||||
trigger_event "closewindow" "$event_data"
|
||||
;;
|
||||
"movewindow"*)
|
||||
if [[ "$event_data" == *,*,* ]]; then
|
||||
trigger_event "movewindow" "$event_data"
|
||||
fi
|
||||
;;
|
||||
"changefloating"*)
|
||||
trigger_event "changefloatingmode" "$event_data"
|
||||
;;
|
||||
*)
|
||||
log "Unknown event: $event_type"
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
trigger_event() {
|
||||
local event="$1"
|
||||
local data="$2"
|
||||
|
||||
if [ "${EVENT_ENABLED[$event]:-0}" -ne 1 ]; then
|
||||
log "Event $event is disabled"
|
||||
return
|
||||
fi
|
||||
|
||||
local sound_file="${SOUND_MAP[$event]}"
|
||||
|
||||
if [ -z "$sound_file" ]; then
|
||||
log "No sound mapped for event: $event"
|
||||
return
|
||||
fi
|
||||
|
||||
if [ "$event" = "changefloatingmode" ]; then
|
||||
local state="${data#*,}"
|
||||
if [ "$state" -eq 1 ]; then
|
||||
sound_file="float.wav"
|
||||
else
|
||||
sound_file="tile.wav"
|
||||
fi
|
||||
fi
|
||||
|
||||
play_sound "$event" "$sound_file"
|
||||
}
|
||||
|
||||
echo "Sound directory: $SOUND_DIR"
|
||||
echo "Enabled events:"
|
||||
for event in "${!EVENT_ENABLED[@]}"; do
|
||||
if [ "${EVENT_ENABLED[$event]}" -eq 1 ]; then
|
||||
echo " - $event: ${SOUND_MAP[$event]}"
|
||||
fi
|
||||
done
|
||||
|
||||
socat - "UNIX-CONNECT:$XDG_RUNTIME_DIR/hypr/$HYPRLAND_INSTANCE_SIGNATURE/.socket2.sock" | \
|
||||
while read -r line; do
|
||||
handle_event "$line"
|
||||
done
|
||||
BIN
hypr/sound/add.wav
Normal file
BIN
hypr/sound/add.wav
Normal file
Binary file not shown.
BIN
hypr/sound/change_workspace.wav
Normal file
BIN
hypr/sound/change_workspace.wav
Normal file
Binary file not shown.
BIN
hypr/sound/float.wav
Normal file
BIN
hypr/sound/float.wav
Normal file
Binary file not shown.
BIN
hypr/sound/fullscreen.wav
Normal file
BIN
hypr/sound/fullscreen.wav
Normal file
Binary file not shown.
BIN
hypr/sound/futuristic-click.mp3
Normal file
BIN
hypr/sound/futuristic-click.mp3
Normal file
Binary file not shown.
BIN
hypr/sound/futuristic-click.wav
Normal file
BIN
hypr/sound/futuristic-click.wav
Normal file
Binary file not shown.
BIN
hypr/sound/login.ogg
Normal file
BIN
hypr/sound/login.ogg
Normal file
Binary file not shown.
BIN
hypr/sound/open.mp3
Normal file
BIN
hypr/sound/open.mp3
Normal file
Binary file not shown.
BIN
hypr/sound/popup.wav
Normal file
BIN
hypr/sound/popup.wav
Normal file
Binary file not shown.
BIN
hypr/sound/remove.wav
Normal file
BIN
hypr/sound/remove.wav
Normal file
Binary file not shown.
BIN
hypr/sound/screenshot_notif.wav
Normal file
BIN
hypr/sound/screenshot_notif.wav
Normal file
Binary file not shown.
BIN
hypr/sound/tile.wav
Normal file
BIN
hypr/sound/tile.wav
Normal file
Binary file not shown.
BIN
hypr/sound/volume_notif.wav
Normal file
BIN
hypr/sound/volume_notif.wav
Normal file
Binary file not shown.
Reference in New Issue
Block a user