From 25d154e3cd3d4a32dbde348cdb8aa207e7c6a3a2 Mon Sep 17 00:00:00 2001 From: matt1432 Date: Thu, 15 Jun 2023 17:00:03 -0400 Subject: [PATCH] feat: make nixos handle hyprland to fix gsettings and add tablet mode --- .gitignore | 1 + TODO.md | 3 + hypr/hyprland.conf | 235 +--------------------------- hypr/main.conf | 237 +++++++++++++++++++++++++++++ hypr/scripts/tablet/laptop-mode.sh | 1 - hypr/scripts/tablet/tablet-mode.sh | 2 +- 6 files changed, 243 insertions(+), 236 deletions(-) create mode 100644 TODO.md mode change 100644 => 120000 hypr/hyprland.conf create mode 100644 hypr/main.conf diff --git a/.gitignore b/.gitignore index 51529233..d8200070 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ cef_user_data/ +environment.d/ gtk-3.0/bookmarks Kvantum/**/ chromium/ diff --git a/TODO.md b/TODO.md new file mode 100644 index 00000000..2d359de2 --- /dev/null +++ b/TODO.md @@ -0,0 +1,3 @@ +change tray icons +center tablet-toggle +decide on layers for eww and waybar diff --git a/hypr/hyprland.conf b/hypr/hyprland.conf deleted file mode 100644 index fb9c8b75..00000000 --- a/hypr/hyprland.conf +++ /dev/null @@ -1,234 +0,0 @@ -# Plugins -plugin = /nix/store/60x0zlg3fbq7nzz8249fxsb89pn541z8-hyprland-touch-gestures-0.3.0/lib/libtouch-gestures.so - -plugin { - touch_gestures { - # default sensitivity is probably too low on tablet screens, - # I recommend turning it up to 4.0 - sensitivity = 20.0 - } -} - -# See https://wiki.hyprland.org/Configuring/Monitors/ -monitor=eDP-1,1920x1200@60,0x0,1 - -$menu = "$HOME/.config/rofi/launcher.sh" -$scripts = "$HOME/.config/hypr/scripts" - -# See https://wiki.hyprland.org/Configuring/Keywords/ for more - -# Execute your favorite apps at launch -exec-once = bash -c "sleep 3; nm-applet" -exec-once = bash -c "sleep 4; blueman-applet" -exec-once = bash -c "sleep 5; nextcloud --background" -exec-once = bash -c "sleep 6; tutanota-desktop -a" -exec-once = bash -c "sleep 7; GalaxyBudsClient /StartMinimized" - -exec-once = eww daemon -exec-once = eww open tablet-toggle -exec-once = eww open notif-panel -#exec-once = sudo input-emulator start touch --x-max 1920 --y-max 1200 --slots 4 -#exec = $HOME/.config/lisgd/config -exec-once = killall libinput-debug-events | libinput-gestures - -exec-once = dbus-update-activation-environment --all -exec-once = gnome-keyring-daemon --start --components=secrets - -exec-once = $menu -exec-once = hyprpaper -exec-once = $scripts/lose-focus.sh - -exec-once = waybar -exec-once = swaync -exec-once = /nix/store/4cssj191kj5y7n738r2a90m0vplm83gr-polkit-kde-agent-1-5.27.5/libexec/polkit-kde-authentication-agent-1 - -exec-once = wl-paste --watch cliphist store - -# OSD window -exec-once = swayosd - -# Change HandleLidSwitch to lock in logind.conf -exec-once = swayidle -w lock $HOME/.config/gtklock/scripts/lock.sh - -# Source a file (multi-file configs) -# source = ~/.config/hypr/myColors.conf - -# Some default env vars. -env = XCURSOR_SIZE,24 - -# For all categories, see https://wiki.hyprland.org/Configuring/Variables/ -input { - kb_layout = ca - kb_variant = multix - kb_model = - kb_options = - kb_rules = - - follow_mouse = 1 - - touchpad { - natural_scroll = no - } - - sensitivity = 0 # -1.0 - 1.0, 0 means no modification. -} - -general { - # See https://wiki.hyprland.org/Configuring/Variables/ for more - - gaps_in = 5 - gaps_out = 5 - border_size = 2 - col.active_border = rgb(411C6C) - #col.active_border = rgba(33ccffee) rgba(00ff99ee) 45deg - col.inactive_border = rgba(595959aa) - - layout = dwindle -} - -decoration { - # See https://wiki.hyprland.org/Configuring/Variables/ for more - - rounding = 20 - blur = yes - blur_size = 3 - blur_passes = 1 - blur_new_optimizations = on - - drop_shadow = yes - shadow_range = 4 - shadow_render_power = 3 - col.shadow = rgba(1a1a1aee) -} - -animations { - enabled = yes - - # Some default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more - - bezier = myBezier, 0.05, 0.9, 0.1, 1.05 - - animation = windows, 1, 7, myBezier - animation = windowsOut, 1, 7, default, popin 80% - animation = border, 1, 10, default - animation = borderangle, 1, 8, default - animation = fade, 1, 7, default - animation = workspaces, 1, 6, default -} - -dwindle { - # See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more - pseudotile = yes # master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below - preserve_split = yes # you probably want this -} - -master { - # See https://wiki.hyprland.org/Configuring/Master-Layout/ for more - new_is_master = true -} - -gestures { - # See https://wiki.hyprland.org/Configuring/Variables/ for more - workspace_swipe = yes - workspace_swipe_fingers = 3 - workspace_swipe_cancel_ratio = 0.15 - #workspace_swipe_forever = yes -} - -# Example windowrule v1 -# windowrule = float, ^(kitty)$ -# Example windowrule v2 -# windowrulev2 = float,class:^(kitty)$,title:^(kitty)$ -# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more - -windowrule = float,^(org.kde.polkit-kde-authentication-agent-1)$ -windowrule = float,^(org.gnome.Calculator)$ -windowrule = float,^(GalaxyBudsClient)$ - -windowrule = size 1231 950,title:^(Open Folder)$ -windowrule = float,title:^(Open Folder)$ - -windowrule = size 1231 950,title:^(Open File)$ -windowrule = float,title:^(Open File)$ - -windowrule = pin,^(nm-tray)$ -#windowrule = move cursor 0 -35,^(nm-tray)$ - -windowrule = float,^(.blueman-manager-wrapped)$ -windowrule = move cursor 0 0,^(.blueman-manager-wrapped)$ -windowrule = size 400 581,^(.blueman-manager-wrapped)$ - -# See https://wiki.hyprland.org/Configuring/Keywords/ for more -$mainMod = SUPER - -# Touchscreen stuff -#bind =, swipe:3:l, exec, $scripts/gestures.sh next -#bind =, swipe:3:r, exec, $scripts/gestures.sh prev - -bind = $mainMod, V, exec, cliphist list | ~/.config/rofi/dmenu.sh | cliphist decode | wl-copy - -# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more -bind = $mainMod, Q, exec, alacritty -bind = $mainMod, C, killactive, - -bind = $mainMod, L, exec, $HOME/.config/gtklock/scripts/lock.sh -bind = $mainMod SHIFT, E, exec, eww open closer && $HOME/.config/eww/scripts/open.sh powermenu -bind = $mainMod SHIFT, SPACE, togglefloating, -bind = $mainMod, D, exec, $menu -bind = $mainMod, P, pseudo, # dwindle -bind = $mainMod, J, togglesplit, # dwindle - -# Move focus with mainMod + arrow keys -bind = $mainMod, left, movefocus, l -bind = $mainMod, right, movefocus, r -bind = $mainMod, up, movefocus, u -bind = $mainMod, down, movefocus, d - -# Switch workspaces with mainMod + [0-9] -bind = $mainMod, 1, workspace, 1 -bind = $mainMod, 2, workspace, 2 -bind = $mainMod, 3, workspace, 3 -bind = $mainMod, 4, workspace, 4 -bind = $mainMod, 5, workspace, 5 -bind = $mainMod, 6, workspace, 6 -bind = $mainMod, 7, workspace, 7 -bind = $mainMod, 8, workspace, 8 -bind = $mainMod, 9, workspace, 9 -bind = $mainMod, 0, workspace, 10 - -# Move active window to a workspace with mainMod + SHIFT + [0-9] -bind = $mainMod SHIFT, 1, movetoworkspace, 1 -bind = $mainMod SHIFT, 2, movetoworkspace, 2 -bind = $mainMod SHIFT, 3, movetoworkspace, 3 -bind = $mainMod SHIFT, 4, movetoworkspace, 4 -bind = $mainMod SHIFT, 5, movetoworkspace, 5 -bind = $mainMod SHIFT, 6, movetoworkspace, 6 -bind = $mainMod SHIFT, 7, movetoworkspace, 7 -bind = $mainMod SHIFT, 8, movetoworkspace, 8 -bind = $mainMod SHIFT, 9, movetoworkspace, 9 -bind = $mainMod SHIFT, 0, movetoworkspace, 10 - -# Scroll through existing workspaces with mainMod + scroll -bind = $mainMod, mouse_down, workspace, e+1 -bind = $mainMod, mouse_up, workspace, e-1 - -# Move/resize windows with mainMod + LMB/RMB and dragging -bindm = $mainMod, mouse:272, movewindow -bindm = $mainMod, mouse:273, resizewindow - -# Take a screenshot -bind =, Print, exec, bash -c 'grim -g "$(slurp)" - | swappy -f -' - -# Volume control -binde =, XF86AudioRaiseVolume, exec, swayosd --output-volume raise -binde =, XF86AudioLowerVolume, exec, swayosd --output-volume lower -bind =, XF86AudioMute, exec, swayosd --output-volume mute-toggle -bind =, XF86AudioMicMute, exec, swayosd --input-volume mute-toggle - -bindr = CAPS, Caps_Lock, exec, swayosd --caps-lock - -# Brightness control -binde =, XF86MonBrightnessUp, exec, swayosd --brightness raise -binde =, XF86MonBrightnessDown, exec, swayosd --brightness lower -#binde =, XF86MonBrightnessUp, exec, brightnessctl set 5%+ -#binde =, XF86MonBrightnessDown, exec, brightnessctl set 5%- diff --git a/hypr/hyprland.conf b/hypr/hyprland.conf new file mode 120000 index 00000000..c4e0a699 --- /dev/null +++ b/hypr/hyprland.conf @@ -0,0 +1 @@ +/nix/store/bz29bpif91v5k2xf12pv0y1lra7lad6x-home-manager-files/.config/hypr/hyprland.conf \ No newline at end of file diff --git a/hypr/main.conf b/hypr/main.conf new file mode 100644 index 00000000..1edfb9f0 --- /dev/null +++ b/hypr/main.conf @@ -0,0 +1,237 @@ +# Plugins +plugin = /nix/store/60x0zlg3fbq7nzz8249fxsb89pn541z8-hyprland-touch-gestures-0.3.0/lib/libtouch-gestures.so + +plugin { + touch_gestures { + # default sensitivity is probably too low on tablet screens, + # I recommend turning it up to 4.0 + sensitivity = 20.0 + } +} + +# See https://wiki.hyprland.org/Configuring/Monitors/ +monitor=eDP-1,1920x1200@60,0x0,1 + +$menu = "$HOME/.config/rofi/launcher.sh" +$scripts = "$HOME/.config/hypr/scripts" + +# See https://wiki.hyprland.org/Configuring/Keywords/ for more + +# Execute your favorite apps at launch +exec-once = bash -c "sleep 3; nm-applet" +exec-once = bash -c "sleep 4; blueman-applet" +exec-once = bash -c "sleep 5; nextcloud --background" +exec-once = bash -c "sleep 6; tutanota-desktop -a" +exec-once = bash -c "sleep 7; GalaxyBudsClient /StartMinimized" + +exec-once = eww daemon +exec-once = eww open tablet-toggle +exec-once = eww open notif-panel + +exec-once = dbus-update-activation-environment --all +exec-once = gnome-keyring-daemon --start --components=secrets +exec-once = squeekboard + +exec-once = $menu +exec-once = hyprpaper +exec-once = $scripts/lose-focus.sh + +# after boot, there are 2 bars for some reason, so I kill them and rerun the command +#exec-once = waybar +exec-once = bash -c "killall -r -0 waybar && killall -r waybar; waybar" +exec-once = swaync +exec-once = /nix/store/4cssj191kj5y7n738r2a90m0vplm83gr-polkit-kde-agent-1-5.27.5/libexec/polkit-kde-authentication-agent-1 + +exec-once = wl-paste --watch cliphist store + +# OSD window +exec-once = swayosd + +# Change HandleLidSwitch to lock in logind.conf +exec-once = swayidle -w lock $HOME/.config/gtklock/scripts/lock.sh + +# Source a file (multi-file configs) +# source = ~/.config/hypr/myColors.conf + +# Some default env vars. +env = XCURSOR_SIZE,24 + +# For all categories, see https://wiki.hyprland.org/Configuring/Variables/ +input { + kb_layout = ca + kb_variant = multix + kb_model = + kb_options = + kb_rules = + + follow_mouse = 1 + + touchpad { + natural_scroll = no + } + + sensitivity = 0 # -1.0 - 1.0, 0 means no modification. +} + +general { + # See https://wiki.hyprland.org/Configuring/Variables/ for more + + gaps_in = 5 + gaps_out = 5 + border_size = 2 + col.active_border = rgb(411C6C) + #col.active_border = rgba(33ccffee) rgba(00ff99ee) 45deg + col.inactive_border = rgba(595959aa) + + layout = dwindle +} + +misc { + disable_hyprland_logo = true + disable_splash_rendering = true +} + +decoration { + # See https://wiki.hyprland.org/Configuring/Variables/ for more + + rounding = 20 + blur = yes + blur_size = 3 + blur_passes = 1 + blur_new_optimizations = on + + drop_shadow = yes + shadow_range = 4 + shadow_render_power = 3 + col.shadow = rgba(1a1a1aee) +} + +animations { + enabled = yes + + # Some default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more + + bezier = myBezier, 0.05, 0.9, 0.1, 1.05 + + animation = windows, 1, 7, myBezier + animation = windowsOut, 1, 7, default, popin 80% + animation = border, 1, 10, default + animation = borderangle, 1, 8, default + animation = fade, 1, 7, default + animation = workspaces, 1, 6, default +} + +dwindle { + # See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more + pseudotile = yes # master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below + preserve_split = yes # you probably want this +} + +master { + # See https://wiki.hyprland.org/Configuring/Master-Layout/ for more + new_is_master = true +} + +gestures { + # See https://wiki.hyprland.org/Configuring/Variables/ for more + workspace_swipe = yes + workspace_swipe_fingers = 3 + workspace_swipe_cancel_ratio = 0.15 + #workspace_swipe_forever = yes +} + +# Example windowrule v1 +# windowrule = float, ^(kitty)$ +# Example windowrule v2 +# windowrulev2 = float,class:^(kitty)$,title:^(kitty)$ +# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more + +windowrule = float,^(org.kde.polkit-kde-authentication-agent-1)$ +windowrule = float,^(org.gnome.Calculator)$ +windowrule = float,^(GalaxyBudsClient)$ + +windowrule = size 1231 950,title:^(Open Folder)$ +windowrule = float,title:^(Open Folder)$ + +windowrule = size 1231 950,title:^(Open File)$ +windowrule = float,title:^(Open File)$ + +windowrule = pin,^(nm-tray)$ +#windowrule = move cursor 0 -35,^(nm-tray)$ + +windowrule = float,^(.blueman-manager-wrapped)$ +windowrule = move cursor 0 0,^(.blueman-manager-wrapped)$ +windowrule = size 400 581,^(.blueman-manager-wrapped)$ + +# See https://wiki.hyprland.org/Configuring/Keywords/ for more +$mainMod = SUPER + +# Touchscreen stuff +#bind =, swipe:3:l, exec, $scripts/gestures.sh next +#bind =, swipe:3:r, exec, $scripts/gestures.sh prev + +bind = $mainMod, V, exec, cliphist list | ~/.config/rofi/dmenu.sh | cliphist decode | wl-copy + +# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more +bind = $mainMod, Q, exec, alacritty +bind = $mainMod, C, killactive, + +bind = $mainMod, L, exec, $HOME/.config/gtklock/scripts/lock.sh +bind = $mainMod SHIFT, E, exec, eww open closer && $HOME/.config/eww/scripts/open.sh powermenu +bind = $mainMod SHIFT, SPACE, togglefloating, +bind = $mainMod, D, exec, $menu +bind = $mainMod, P, pseudo, # dwindle +bind = $mainMod, J, togglesplit, # dwindle + +# Move focus with mainMod + arrow keys +bind = $mainMod, left, movefocus, l +bind = $mainMod, right, movefocus, r +bind = $mainMod, up, movefocus, u +bind = $mainMod, down, movefocus, d + +# Switch workspaces with mainMod + [0-9] +bind = $mainMod, 1, workspace, 1 +bind = $mainMod, 2, workspace, 2 +bind = $mainMod, 3, workspace, 3 +bind = $mainMod, 4, workspace, 4 +bind = $mainMod, 5, workspace, 5 +bind = $mainMod, 6, workspace, 6 +bind = $mainMod, 7, workspace, 7 +bind = $mainMod, 8, workspace, 8 +bind = $mainMod, 9, workspace, 9 +bind = $mainMod, 0, workspace, 10 + +# Move active window to a workspace with mainMod + SHIFT + [0-9] +bind = $mainMod SHIFT, 1, movetoworkspace, 1 +bind = $mainMod SHIFT, 2, movetoworkspace, 2 +bind = $mainMod SHIFT, 3, movetoworkspace, 3 +bind = $mainMod SHIFT, 4, movetoworkspace, 4 +bind = $mainMod SHIFT, 5, movetoworkspace, 5 +bind = $mainMod SHIFT, 6, movetoworkspace, 6 +bind = $mainMod SHIFT, 7, movetoworkspace, 7 +bind = $mainMod SHIFT, 8, movetoworkspace, 8 +bind = $mainMod SHIFT, 9, movetoworkspace, 9 +bind = $mainMod SHIFT, 0, movetoworkspace, 10 + +# Scroll through existing workspaces with mainMod + scroll +bind = $mainMod, mouse_down, workspace, e+1 +bind = $mainMod, mouse_up, workspace, e-1 + +# Move/resize windows with mainMod + LMB/RMB and dragging +bindm = $mainMod, mouse:272, movewindow +bindm = $mainMod, mouse:273, resizewindow + +# Take a screenshot +bind =, Print, exec, bash -c 'grim -g "$(slurp)" - | swappy -f -' + +# Volume control +binde =, XF86AudioRaiseVolume, exec, swayosd --output-volume raise +binde =, XF86AudioLowerVolume, exec, swayosd --output-volume lower +bind =, XF86AudioMute, exec, swayosd --output-volume mute-toggle +bind =, XF86AudioMicMute, exec, swayosd --input-volume mute-toggle + +bindr = CAPS, Caps_Lock, exec, swayosd --caps-lock + +# Brightness control +binde =, XF86MonBrightnessUp, exec, swayosd --brightness raise +binde =, XF86MonBrightnessDown, exec, swayosd --brightness lower diff --git a/hypr/scripts/tablet/laptop-mode.sh b/hypr/scripts/tablet/laptop-mode.sh index 36f724e6..bedf1441 100755 --- a/hypr/scripts/tablet/laptop-mode.sh +++ b/hypr/scripts/tablet/laptop-mode.sh @@ -1,6 +1,5 @@ #!/usr/bin/env bash eww update toggle-state=false -/usr/bin/setsysmode laptop gsettings set org.gnome.desktop.a11y.applications screen-keyboard-enabled false diff --git a/hypr/scripts/tablet/tablet-mode.sh b/hypr/scripts/tablet/tablet-mode.sh index 7b3527ea..b2156cc1 100755 --- a/hypr/scripts/tablet/tablet-mode.sh +++ b/hypr/scripts/tablet/tablet-mode.sh @@ -1,7 +1,7 @@ #!/usr/bin/env bash eww update toggle-state=true -setsysmode tablet +echo $XDG_DATA_DIRS >> ~/log.log gsettings set org.gnome.desktop.a11y.applications screen-keyboard-enabled true brightnessctl -d tpacpi::kbd_backlight s 0