๐Ÿ”ง Where my dotfiles lives in harmony and peace, most of the time

๐Ÿ”ง Integrate UWSM session management in Hyprland

- Launch applications through UWSM for proper session handling
- Update application execution to use uwsm app wrapper
- Add clipboard management with wl-clip-persist and cliphist
- Improve audio controls with wpctl instead of pactl
- Add special workspace (scratchpad) keybindings
- Enhance window management and media key bindings
- Update animations and styling for better performance
- Add launch prefix for fuzzel application launcher

+91 -75
+1
hypr/frappe.conf
··· 1 $rosewater = rgb(f2d5cf) 2 $rosewaterAlpha = f2d5cf 3
··· 1 + 2 $rosewater = rgb(f2d5cf) 3 $rosewaterAlpha = f2d5cf 4
+1
hypr/fuzzel/fuzzel.ini
··· 7 vertical-pad=20 8 inner-pad=10 9 show-actions=yes 10 11 [colors] 12 background=303446ff
··· 7 vertical-pad=20 8 inner-pad=10 9 show-actions=yes 10 + launch-prefix='uwsm app -- ' 11 12 [colors] 13 background=303446ff
+89 -75
hypr/hyprland.conf
··· 1 # Hyprland Configuration 2 3 - # Monitor configuration 4 - # https://wiki.hyprland.org/Configuring/Monitors/ 5 - # monitor=,highrr,auto,1 6 source=~/.config/hypr/monitor.conf 7 8 - # Execute Apps 9 - exec-once = hyprpaper 10 - exec-once = waybar & mako # & wl-clip-persist --clipboard regular 11 - exec-once = /usr/lib/polkit-kde-authentication-agent-1 12 - exec-once = nm-applet 13 - # exec-once = wl-paste --type text --watch cliphist store 14 - # exec-once = wl-paste --type image --watch cliphist store 15 16 - # Source external configuration files 17 source=~/.config/hypr/frappe.conf 18 19 - # Set Variables 20 $terminal = alacritty 21 $fileManager = thunar 22 $menu = fuzzel 23 24 - # Default Environment Variables 25 - env = XDG_CURRENT_DESKTOP,Hyprland 26 - env = XDG_SESSION_TYPE,wayland 27 - env = XDG_SESSION_DESKTOP,Hyprland 28 - env = GDK_BACKEND,wayland 29 - env = QT_QPA_PLATFORM,wayland 30 - env = QT_QPA_PLATFORMTHEME,qt6ct 31 - env = XCURSOR_SIZE,20 32 - env = EDITOR,nano 33 - env = ELECTRON_OZONE_PLATFORM_HINT,wayland 34 35 - # https://wiki.hyprland.org/Configuring/Variables/ 36 input { 37 numlock_by_default = true 38 kb_layout = es ··· 46 sensitivity = 0 47 } 48 49 - # https://wiki.hyprland.org/Configuring/Variables/ 50 general { 51 gaps_in = 6 52 - gaps_out = 18 53 - border_size = 4 54 col.active_border = $blue $green 90deg 55 col.inactive_border = $crust 56 layout = dwindle 57 } 58 59 ecosystem { 60 no_update_news = true 61 } 62 63 - # https://wiki.hyprland.org/Configuring/Variables/ 64 decoration { 65 rounding = 2 66 shadow { ··· 71 } 72 } 73 74 animations { 75 enabled = yes 76 77 - animation = windows, 1, 4, default 78 - animation = windowsOut, 1, 4, default 79 - animation = border, 1, 8, default 80 - animation = borderangle, 1, 8, default 81 - animation = fade, 1, 8, default 82 - animation = workspaces, 1, 4, default 83 } 84 85 - # https://wiki.hyprland.org/Configuring/Dwindle-Layout/ 86 dwindle { 87 - pseudotile = yes # master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below 88 - preserve_split = yes # you probably want this 89 force_split = 2 90 - # no_gaps_when_only = -1 91 } 92 93 - # Smart Gaps 94 workspace = w[tv1], gapsout:0, gapsin:0 95 workspace = f[1], gapsout:0, gapsin:0 96 - windowrulev2 = bordersize 0, floating:0, onworkspace:w[tv1] 97 - windowrulev2 = rounding 0, floating:0, onworkspace:w[tv1] 98 - windowrulev2 = bordersize 0, floating:0, onworkspace:f[1] 99 - windowrulev2 = rounding 0, floating:0, onworkspace:f[1] 100 101 - # https://wiki.hyprland.org/Configuring/Master-Layout/ 102 master { 103 new_status = master 104 } 105 106 - # https://wiki.hyprland.org/Configuring/Variables/ 107 gestures { 108 - workspace_swipe = off 109 } 110 111 misc { 112 disable_hyprland_logo = true 113 disable_splash_rendering = true 114 } 115 116 - # https://wiki.hyprland.org/Configuring/Keywords/ 117 $mainMod = SUPER 118 119 - # https://wiki.hyprland.org/Configuring/Binds/s 120 - bind = $mainMod, Return, exec, $terminal 121 bind = $mainMod SHIFT, Q, killactive, 122 bind = $mainMod, M, exit, 123 - bind = $mainMod, E, exec, $fileManager 124 bind = $mainMod, V, togglefloating, 125 bind = $mainMod, F, fullscreen, 126 - bind = $mainMod, BackSpace, exec, $menu 127 bind = $mainMod, P, pseudo, # dwindle 128 bind = $mainMod, J, togglesplit, # dwindle 129 ··· 163 bind = $mainMod SHIFT, 9, movetoworkspacesilent, 9 164 bind = $mainMod SHIFT, 0, movetoworkspacesilent, 10 165 166 # Scroll through existing workspaces with mainMod + scroll 167 bind = $mainMod, mouse_down, workspace, e+1 168 bind = $mainMod, mouse_up, workspace, e-1 ··· 173 174 # Screenshots 175 bind = SHIFT, Print, exec, grim -g "$(slurp)" - | wl-copy && wl-paste > $(xdg-user-dir PICTURES)/screenshot-$(date +%F_%T).png 176 - bind = , Print, exec, grim - | wl-copy && wl-paste > $(xdg-user-dir PICTURES)/screenshot-$(date +%F_%T).png 177 - 178 - # Screenshot in laptop (windows shift + p) 179 bind = $mainMod shift, p, exec, grim -g "$(slurp)" - | wl-copy && wl-paste > $(xdg-user-dir PICTURES)/screenshot-$(date +%F_%T).png 180 - 181 - # Define editor variable 182 - # $project_editor = cursor 183 - # $project_editor = zeditor 184 - $project_editor = code 185 186 # Open Code Projects 187 - bind = $mainMod shift, BackSpace, exec, ls "$HOME/projects" | fuzzel -x 20 -d -I --prompt="๐Ÿ–ฅ๏ธ > " | xargs -I {} $project_editor -n "$HOME/projects/{}" 188 189 # Open Claude in Project 190 - bind = $mainMod shift, minus, exec, ls "$HOME/projects" | fuzzel -x 20 -d -I --prompt="๐Ÿค– > " | xargs -I {} alacritty --working-directory "$HOME/projects/{}" --command zsh -ic "claude --dangerously-skip-permissions" 191 192 # Emoji 193 - bind = $mainMod SHIFT, E, exec, bemoji -n 194 195 - # Claude AI 196 - bind = $mainMod SHIFT, A, exec, brave --app=https://claude.ai/new 197 198 - # Media Keys 199 - bind = , XF86AudioRaiseVolume, exec, pactl set-sink-volume @DEFAULT_SINK@ +2% 200 - bind = , XF86AudioLowerVolume, exec, pactl set-sink-volume @DEFAULT_SINK@ -2% 201 - bind = , XF86AudioMute, exec, pactl set-sink-mute @DEFAULT_SINK@ toggle 202 - bind = , XF86AudioPlay, exec, playerctl play-pause 203 - bind = , XF86AudioPause, exec, playerctl play-pause 204 - bind = , XF86AudioNext, exec, playerctl next 205 - bind = , XF86AudioPrev, exec, playerctl previous 206 207 - # Screen Backlight 208 - bind = , XF86MonBrightnessUp, exec, light -A 5 209 - bind = , XF86MonBrightnessDown, exec, light -U 5 210 211 # Resize mode 212 bind = $mainMod, R, submap, resize ··· 225 bind = , s, exec, systemctl suspend 226 bind = , r, exec, systemctl reboot 227 bind = , p, exec, systemctl poweroff -i 228 - bind = , l, exec, hyprlock && hyprctl dispatch submap reset 229 bind = , escape, submap, reset 230 bind = , return, submap, reset 231 submap = reset
··· 1 # Hyprland Configuration 2 3 + # Monitors - https://wiki.hyprland.org/Configuring/Monitors/ 4 source=~/.config/hypr/monitor.conf 5 6 + # Autostart Applications 7 + exec-once = uwsm app -- hyprpaper 8 + exec-once = uwsm app -- waybar 9 + exec-once = uwsm app -- mako 10 + exec-once = uwsm app -- nm-applet 11 + 12 + # Clipboard Manager 13 + exec-once = uwsm app -- wl-clip-persist --clipboard regular 14 + exec-once = uwsm app -- wl-paste --type text --watch cliphist store 15 + exec-once = uwsm app -- wl-paste --type image --watch cliphist store 16 17 + # Theme 18 source=~/.config/hypr/frappe.conf 19 20 + # Programs 21 $terminal = alacritty 22 $fileManager = thunar 23 $menu = fuzzel 24 25 + # Environment Variables 26 + # env = XDG_CURRENT_DESKTOP,Hyprland 27 + # env = XDG_SESSION_TYPE,wayland 28 + # env = XDG_SESSION_DESKTOP,Hyprland 29 + # env = GDK_BACKEND,wayland 30 + # env = QT_QPA_PLATFORM,wayland 31 + # env = QT_QPA_PLATFORMTHEME,qt6ct 32 + # env = XCURSOR_SIZE,20 33 + # env = EDITOR,nano 34 + # env = ELECTRON_OZONE_PLATFORM_HINT,wayland 35 36 + # Inputs - https://wiki.hyprland.org/Configuring/Variables/#input 37 input { 38 numlock_by_default = true 39 kb_layout = es ··· 47 sensitivity = 0 48 } 49 50 + # Permissions 51 + # permission = /usr/(bin|local/bin)/grim, screencopy, allow 52 + # permission = /usr/(lib|libexec|lib64)/xdg-desktop-portal-hyprland, screencopy, allow 53 + # permission = /usr/(bin|local/bin)/hyprpm, plugin, allow 54 + 55 + # General - https://wiki.hyprland.org/Configuring/Variables/ 56 general { 57 gaps_in = 6 58 + gaps_out = 12 59 + border_size = 3 60 col.active_border = $blue $green 90deg 61 col.inactive_border = $crust 62 layout = dwindle 63 } 64 65 + # Ecosystem - https://wiki.hyprland.org/Configuring/Permissions/ 66 ecosystem { 67 no_update_news = true 68 } 69 70 + # Decorations - https://wiki.hyprland.org/Configuring/Variables/ 71 decoration { 72 rounding = 2 73 shadow { ··· 78 } 79 } 80 81 + # Animations - https://wiki.hyprland.org/Configuring/Animations/ 82 animations { 83 enabled = yes 84 85 + animation = windows, 1, 3, default, slide 86 + animation = fade, 1, 5, default 87 + animation = border, 1, 10, default 88 + animation = borderangle, 1, 10, default 89 + animation = workspaces, 1, 5, default 90 } 91 92 + # Dwindle - https://wiki.hyprland.org/Configuring/Dwindle-Layout/ 93 dwindle { 94 + pseudotile = yes 95 + preserve_split = yes 96 force_split = 2 97 } 98 99 + # Smart Gaps - https://wiki.hyprland.org/Configuring/Workspace-Rules/ 100 workspace = w[tv1], gapsout:0, gapsin:0 101 workspace = f[1], gapsout:0, gapsin:0 102 + windowrule = bordersize 0, floating:0, onworkspace:w[tv1] 103 + windowrule = rounding 0, floating:0, onworkspace:w[tv1] 104 + windowrule = bordersize 0, floating:0, onworkspace:f[1] 105 + windowrule = rounding 0, floating:0, onworkspace:f[1] 106 107 + # Layout - https://wiki.hyprland.org/Configuring/Master-Layout/ 108 master { 109 new_status = master 110 } 111 112 + # Gestures - https://wiki.hyprland.org/Configuring/Variables/#gestures 113 gestures { 114 + workspace_swipe = false 115 } 116 117 + # Misc - https://wiki.hyprland.org/Configuring/Variables/#misc 118 misc { 119 + force_default_wallpaper = false 120 disable_hyprland_logo = true 121 disable_splash_rendering = true 122 } 123 124 + # Keywords - https://wiki.hyprland.org/Configuring/Keywords/ 125 $mainMod = SUPER 126 127 + # Binds - https://wiki.hyprland.org/Configuring/Binds/ 128 + bind = $mainMod, Return, exec, uwsm app -- $terminal 129 bind = $mainMod SHIFT, Q, killactive, 130 bind = $mainMod, M, exit, 131 + bind = $mainMod, E, exec, uwsm app -- $fileManager 132 bind = $mainMod, V, togglefloating, 133 bind = $mainMod, F, fullscreen, 134 + bind = $mainMod, BackSpace, exec, uwsm app -- $menu 135 bind = $mainMod, P, pseudo, # dwindle 136 bind = $mainMod, J, togglesplit, # dwindle 137 ··· 171 bind = $mainMod SHIFT, 9, movetoworkspacesilent, 9 172 bind = $mainMod SHIFT, 0, movetoworkspacesilent, 10 173 174 + # Special workspace (scratchpad) 175 + bind = $mainMod, S, togglespecialworkspace, magic 176 + bind = $mainMod SHIFT, S, movetoworkspace, special:magic 177 + 178 # Scroll through existing workspaces with mainMod + scroll 179 bind = $mainMod, mouse_down, workspace, e+1 180 bind = $mainMod, mouse_up, workspace, e-1 ··· 185 186 # Screenshots 187 bind = SHIFT, Print, exec, grim -g "$(slurp)" - | wl-copy && wl-paste > $(xdg-user-dir PICTURES)/screenshot-$(date +%F_%T).png 188 bind = $mainMod shift, p, exec, grim -g "$(slurp)" - | wl-copy && wl-paste > $(xdg-user-dir PICTURES)/screenshot-$(date +%F_%T).png 189 + bind = , Print, exec, grim - | wl-copy && wl-paste > $(xdg-user-dir PICTURES)/screenshot-$(date +%F_%T).png 190 191 # Open Code Projects 192 + bind = $mainMod shift, BackSpace, exec, ls "$HOME/projects" | fuzzel -x 20 -d -I --prompt="๐Ÿ–ฅ๏ธ > " | xargs -I {} uwsm app -- code -n "$HOME/projects/{}" 193 194 # Open Claude in Project 195 + bind = $mainMod shift, minus, exec, ls "$HOME/projects" | fuzzel -x 20 -d -I --prompt="๐Ÿค– > " | xargs -I {} uwsm app -- alacritty --working-directory "$HOME/projects/{}" --command zsh -ic "claude --dangerously-skip-permissions" 196 + 197 + # Claude AI 198 + bind = $mainMod SHIFT, A, exec, uwsm app -- brave --app=https://claude.ai/new 199 200 # Emoji 201 + bind = $mainMod SHIFT, E, exec, uwsm app -- bemoji -n 202 + 203 + # Volume 204 + bindel = ,XF86AudioRaiseVolume, exec, wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 2%+ 205 + bindel = ,XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 2%- 206 + bindel = ,XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle 207 + bindel = ,XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle 208 209 + # Multimedia Control 210 + bindl = , XF86AudioNext, exec, playerctl next 211 + bindl = , XF86AudioPause, exec, playerctl play-pause 212 + bindl = , XF86AudioPlay, exec, playerctl play-pause 213 + bindl = , XF86AudioPrev, exec, playerctl previous 214 + 215 + # Screen 216 + bindel = ,XF86MonBrightnessUp, exec, brightnessctl -e4 -n2 set 5%+ 217 + bindel = ,XF86MonBrightnessDown, exec, brightnessctl -e4 -n2 set 5%- 218 219 + # Ignore maximize requests from apps 220 + windowrule = suppressevent maximize, class:.* 221 222 + # Fix some dragging issues with XWayland 223 + windowrule = nofocus,class:^$,title:^$,xwayland:1,floating:1,fullscreen:0,pinned:0 224 225 # Resize mode 226 bind = $mainMod, R, submap, resize ··· 239 bind = , s, exec, systemctl suspend 240 bind = , r, exec, systemctl reboot 241 bind = , p, exec, systemctl poweroff -i 242 + bind = , l, exec, uwsm app -- hyprlock && hyprctl dispatch submap reset 243 bind = , escape, submap, reset 244 bind = , return, submap, reset 245 submap = reset