๐Ÿ”ง 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 + 1 2 $rosewater = rgb(f2d5cf) 2 3 $rosewaterAlpha = f2d5cf 3 4
+1
hypr/fuzzel/fuzzel.ini
··· 7 7 vertical-pad=20 8 8 inner-pad=10 9 9 show-actions=yes 10 + launch-prefix='uwsm app -- ' 10 11 11 12 [colors] 12 13 background=303446ff
+89 -75
hypr/hyprland.conf
··· 1 1 # Hyprland Configuration 2 2 3 - # Monitor configuration 4 - # https://wiki.hyprland.org/Configuring/Monitors/ 5 - # monitor=,highrr,auto,1 3 + # Monitors - https://wiki.hyprland.org/Configuring/Monitors/ 6 4 source=~/.config/hypr/monitor.conf 7 5 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 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 15 16 16 - # Source external configuration files 17 + # Theme 17 18 source=~/.config/hypr/frappe.conf 18 19 19 - # Set Variables 20 + # Programs 20 21 $terminal = alacritty 21 22 $fileManager = thunar 22 23 $menu = fuzzel 23 24 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 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 34 35 35 - # https://wiki.hyprland.org/Configuring/Variables/ 36 + # Inputs - https://wiki.hyprland.org/Configuring/Variables/#input 36 37 input { 37 38 numlock_by_default = true 38 39 kb_layout = es ··· 46 47 sensitivity = 0 47 48 } 48 49 49 - # https://wiki.hyprland.org/Configuring/Variables/ 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/ 50 56 general { 51 57 gaps_in = 6 52 - gaps_out = 18 53 - border_size = 4 58 + gaps_out = 12 59 + border_size = 3 54 60 col.active_border = $blue $green 90deg 55 61 col.inactive_border = $crust 56 62 layout = dwindle 57 63 } 58 64 65 + # Ecosystem - https://wiki.hyprland.org/Configuring/Permissions/ 59 66 ecosystem { 60 67 no_update_news = true 61 68 } 62 69 63 - # https://wiki.hyprland.org/Configuring/Variables/ 70 + # Decorations - https://wiki.hyprland.org/Configuring/Variables/ 64 71 decoration { 65 72 rounding = 2 66 73 shadow { ··· 71 78 } 72 79 } 73 80 81 + # Animations - https://wiki.hyprland.org/Configuring/Animations/ 74 82 animations { 75 83 enabled = yes 76 84 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 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 83 90 } 84 91 85 - # https://wiki.hyprland.org/Configuring/Dwindle-Layout/ 92 + # Dwindle - https://wiki.hyprland.org/Configuring/Dwindle-Layout/ 86 93 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 94 + pseudotile = yes 95 + preserve_split = yes 89 96 force_split = 2 90 - # no_gaps_when_only = -1 91 97 } 92 98 93 - # Smart Gaps 99 + # Smart Gaps - https://wiki.hyprland.org/Configuring/Workspace-Rules/ 94 100 workspace = w[tv1], gapsout:0, gapsin:0 95 101 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] 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] 100 106 101 - # https://wiki.hyprland.org/Configuring/Master-Layout/ 107 + # Layout - https://wiki.hyprland.org/Configuring/Master-Layout/ 102 108 master { 103 109 new_status = master 104 110 } 105 111 106 - # https://wiki.hyprland.org/Configuring/Variables/ 112 + # Gestures - https://wiki.hyprland.org/Configuring/Variables/#gestures 107 113 gestures { 108 - workspace_swipe = off 114 + workspace_swipe = false 109 115 } 110 116 117 + # Misc - https://wiki.hyprland.org/Configuring/Variables/#misc 111 118 misc { 119 + force_default_wallpaper = false 112 120 disable_hyprland_logo = true 113 121 disable_splash_rendering = true 114 122 } 115 123 116 - # https://wiki.hyprland.org/Configuring/Keywords/ 124 + # Keywords - https://wiki.hyprland.org/Configuring/Keywords/ 117 125 $mainMod = SUPER 118 126 119 - # https://wiki.hyprland.org/Configuring/Binds/s 120 - bind = $mainMod, Return, exec, $terminal 127 + # Binds - https://wiki.hyprland.org/Configuring/Binds/ 128 + bind = $mainMod, Return, exec, uwsm app -- $terminal 121 129 bind = $mainMod SHIFT, Q, killactive, 122 130 bind = $mainMod, M, exit, 123 - bind = $mainMod, E, exec, $fileManager 131 + bind = $mainMod, E, exec, uwsm app -- $fileManager 124 132 bind = $mainMod, V, togglefloating, 125 133 bind = $mainMod, F, fullscreen, 126 - bind = $mainMod, BackSpace, exec, $menu 134 + bind = $mainMod, BackSpace, exec, uwsm app -- $menu 127 135 bind = $mainMod, P, pseudo, # dwindle 128 136 bind = $mainMod, J, togglesplit, # dwindle 129 137 ··· 163 171 bind = $mainMod SHIFT, 9, movetoworkspacesilent, 9 164 172 bind = $mainMod SHIFT, 0, movetoworkspacesilent, 10 165 173 174 + # Special workspace (scratchpad) 175 + bind = $mainMod, S, togglespecialworkspace, magic 176 + bind = $mainMod SHIFT, S, movetoworkspace, special:magic 177 + 166 178 # Scroll through existing workspaces with mainMod + scroll 167 179 bind = $mainMod, mouse_down, workspace, e+1 168 180 bind = $mainMod, mouse_up, workspace, e-1 ··· 173 185 174 186 # Screenshots 175 187 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 188 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 189 + bind = , Print, exec, grim - | wl-copy && wl-paste > $(xdg-user-dir PICTURES)/screenshot-$(date +%F_%T).png 185 190 186 191 # 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/{}" 192 + bind = $mainMod shift, BackSpace, exec, ls "$HOME/projects" | fuzzel -x 20 -d -I --prompt="๐Ÿ–ฅ๏ธ > " | xargs -I {} uwsm app -- code -n "$HOME/projects/{}" 188 193 189 194 # 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" 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 191 199 192 200 # Emoji 193 - bind = $mainMod SHIFT, E, exec, bemoji -n 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 194 208 195 - # Claude AI 196 - bind = $mainMod SHIFT, A, exec, brave --app=https://claude.ai/new 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%- 197 218 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 219 + # Ignore maximize requests from apps 220 + windowrule = suppressevent maximize, class:.* 206 221 207 - # Screen Backlight 208 - bind = , XF86MonBrightnessUp, exec, light -A 5 209 - bind = , XF86MonBrightnessDown, exec, light -U 5 222 + # Fix some dragging issues with XWayland 223 + windowrule = nofocus,class:^$,title:^$,xwayland:1,floating:1,fullscreen:0,pinned:0 210 224 211 225 # Resize mode 212 226 bind = $mainMod, R, submap, resize ··· 225 239 bind = , s, exec, systemctl suspend 226 240 bind = , r, exec, systemctl reboot 227 241 bind = , p, exec, systemctl poweroff -i 228 - bind = , l, exec, hyprlock && hyprctl dispatch submap reset 242 + bind = , l, exec, uwsm app -- hyprlock && hyprctl dispatch submap reset 229 243 bind = , escape, submap, reset 230 244 bind = , return, submap, reset 231 245 submap = reset