From 81246671df3acc577f60f3c837624d9e07287336 Mon Sep 17 00:00:00 2001 From: Schrottkatze Date: Wed, 12 Jun 2024 11:11:13 +0200 Subject: [PATCH] setup sway --- modules/desktop-environment/home/default.nix | 1 + .../desktop-environment/home/sway/default.nix | 166 ++++++++++++++++++ modules/desktop/x.nix | 9 +- 3 files changed, 175 insertions(+), 1 deletion(-) create mode 100644 modules/desktop-environment/home/sway/default.nix diff --git a/modules/desktop-environment/home/default.nix b/modules/desktop-environment/home/default.nix index 6891b94..9ea2526 100644 --- a/modules/desktop-environment/home/default.nix +++ b/modules/desktop-environment/home/default.nix @@ -6,6 +6,7 @@ ./compositing.nix ./panels ./xmonad + ./sway ]; }; } diff --git a/modules/desktop-environment/home/sway/default.nix b/modules/desktop-environment/home/sway/default.nix new file mode 100644 index 0000000..d7f849e --- /dev/null +++ b/modules/desktop-environment/home/sway/default.nix @@ -0,0 +1,166 @@ +{ + pkgs, + lib, + config, + ... +}: { + programs.wofi.enable = true; + wayland.windowManager.sway = { + enable = true; + config = { + modes = { + resize = { + Down = "resize grow height 10 px"; + Escape = "mode default"; + Left = "resize shrink width 10 px"; + Return = "mode default"; + Right = "resize grow width 10 px"; + Up = "resize shrink height 10 px"; + h = "resize shrink width 10 px"; + j = "resize grow height 10 px"; + k = "resize shrink height 10 px"; + l = "resize grow width 10 px"; + }; + }; + output = { + "*" = { + bg = "${../xmonad/wallpaper/wallpaper.jpg} fill"; + }; + }; + input = { + "*" = { + xkb_layout = "us"; + xkb_variant = "altgr-intl"; + }; + }; + menu = "wofi -d"; + modifier = "Mod4"; + keybindings = with { + #mod = config.xsession.windowManager.i3.config.modifier; + # mod = "Mod1"; + mod = config.wayland.windowManager.sway.config.modifier; + }; + lib.mkOptionDefault { + # switch window focus + "${mod}+h" = "focus left"; + "${mod}+j" = "focus down"; + "${mod}+k" = "focus up"; + "${mod}+l" = "focus right"; + # move windows + "${mod}+Shift+h" = "move left"; + "${mod}+Shift+j" = "move down"; + "${mod}+Shift+k" = "move up"; + "${mod}+Shift+l" = "move right"; + # layout shit + "${mod}+shift+semicolon" = "split h"; + "${mod}+semicolon" = "split v"; + "${mod}+f" = "fullscreen toggle"; + "${mod}+Shift+w" = "layout tabbed"; + "${mod}+e" = "layout toggle split"; + "${mod}+Shift+space" = "floating toggle"; + # focus parents/children + # "${mod}+Shift+a" = "focus parent"; + # "${mod}+Shift+c" = "focus child"; + # screenshot + # "${mod}+w" = "exec window-screenshot.sh"; + # "${mod}+s" = "exec flameshot gui -c -p $HOME/Pictures/screenshots"; + # "${mod}+a" = "exec flameshot screen -c -p $HOME/Pictures/screenshots"; + # "${mod}+t" = "exec ocr-screenshot.sh"; + + # rofi fuckery + "${mod}+d" = "exec wofi -S drun --allow-images"; + "${mod}+i" = "exec rofimoji --selector wofi -f alchemical_symbols anatolian_hieroglyphs emojis braille_patterns box_drawing chess_symbols emoticons geometric_shapes gothic greek_extended math mathematical_alphanumeric_symbols mathematical_operators miscellaneous_symbols miscellaneous_mathematical_symbols-a miscellaneous_mathematical_symbols-b miscellaneous_symbols_and_arrows miscellaneous_symbols_and_pictographs miscellaneous_technical modi modifier_tone_letters musical_symbols nerd_font number_forms shorthand_format_controls specials variation_selectors vertical_forms -a copy"; + # TODO: wayland + # "${mod}+d" = "exec --no-startup-id rofi -show drun -theme ${../../other/rofi-themes/applauncher.rasi}"; + # "${mod}+space" = "exec --no-startup-id rofi -show combi -combi-show window#run -modes combi -theme ${../../other/rofi-themes/applauncher.rasi}"; + # "${mod}+i" = "exec --no-startup-id rofimoji -f alchemical_symbols anatolian_hieroglyphs emojis braille_patterns box_drawing chess_symbols emoticons geometric_shapes gothic greek_extended math mathematical_alphanumeric_symbols mathematical_operators miscellaneous_symbols miscellaneous_mathematical_symbols-a miscellaneous_mathematical_symbols-b miscellaneous_symbols_and_arrows miscellaneous_symbols_and_pictographs miscellaneous_technical modi modifier_tone_letters musical_symbols nerd_font number_forms shorthand_format_controls specials variation_selectors vertical_forms -a copy"; + # "${mod}+Shift+e" = "exec --no-startup-id rofi -show \"desktopctl\" -modes \"desktopctl:${desktop-ctl.outPath}/bin/desktopctl\" -theme ${../../other/rofi-themes/applauncher.rasi}"; + # "${mod}+m" = "exec --no-startup-id menu-qalc"; + + # "${mod}+o" = "exec --no-startup-id rofi -show searchwolf -modes \"searchwolf:${searchwolf.outPath}/bin/searchwolf\""; + + # audio + "XF86AudioRaiseVolume" = "exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ +10% && $refresh_i3status"; + "XF86AudioLowerVolume" = "exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ -10% && $refresh_i3status"; + "XF86AudioMute" = "exec --no-startup-id pactl set-sink-mute @DEFAULT_SINK@ toggle && $refresh_i3status"; + "XF86AudioMicMute" = "exec --no-startup-id pactl set-source-mute @DEFAULT_SOURCE@ toggle && $refresh_i3status"; + + "XF86AudioNext" = "exec playerctl next"; + "XF86AudioPrev" = "exec playerctl previous"; + "XF86AudioPause" = "exec playerctl pause"; + "XF86AudioPlay" = "exec playerctl play"; + "XF86AudioStop" = "exec playerctl stop"; + + "XF86MonBrightnessUp" = "exec brightnessctl set 5%+"; + "XF86MonBrightnessDown" = "exec brightnessctl set 5%-"; + + "XF86KbdBrightnessUp" = "exec brillo -kA 10.0"; + "XF86KbdBrightnessDown" = "exec brillo -kU 10.0"; + + # macros + # "${mod}+q" = "exec em-record.sh"; + # "${mod}+p" = "exec em-play.sh"; + # "${mod}+Shift+p" = "exec em-play-loop.sh"; + + # permaclip + # "${mod}+c" = "exec rofi -show register -modes \"register:${pc-set.outPath}/bin/pc-set.sh\" -theme gruvbox-dark"; + # "${mod}+v" = "exec rofi -show register -modes \"register:${pc-get.outPath}/bin/pc-get.sh\" -theme gruvbox-dark"; + }; + fonts = { + names = ["Atkinson Hyperlegible"]; + style = "Regular"; + size = 9.0; + }; + gaps = { + #top = 24; + inner = 15; + outer = 0; + smartGaps = true; + smartBorders = "on"; + }; + colors = { + background = "#1d2021"; + focused = { + background = "#282828"; + border = "#504945"; + childBorder = "#7c6f64"; + indicator = "#504945"; + text = "#ebdbb2"; + }; + focusedInactive = { + background = "#1d2021"; + border = "#504945"; + childBorder = "#665c54"; + indicator = "#664c54"; + text = "#d5c4a1"; + }; + placeholder = { + background = "#1d2021"; + border = "#00ff00"; + childBorder = "#504945"; + indicator = "#504945"; + text = "#928374"; + }; + unfocused = { + background = "#1d2021"; + border = "#3c3836"; + childBorder = "#504945"; + indicator = "#504945"; + text = "#bdae93"; + }; + urgent = { + background = "#9d0006"; + border = "#cc241d"; + childBorder = "#3c3836"; + indicator = "#fb4943"; + text = "#ebdbb2"; + }; + }; + + window = { + border = 2; + titlebar = true; + }; + }; + }; +} diff --git a/modules/desktop/x.nix b/modules/desktop/x.nix index 50f9666..1bd4586 100644 --- a/modules/desktop/x.nix +++ b/modules/desktop/x.nix @@ -1,4 +1,4 @@ -{...}: { +{pkgs, ...}: { services.xserver = { enable = true; @@ -8,6 +8,10 @@ displayManager = { gdm.enable = true; + sessionPackages = [ + pkgs.sway + ]; + gdm.autoLogin.delay = 5; }; windowManager.xmonad = { @@ -15,5 +19,8 @@ }; }; + security.polkit.enable = true; + programs.sway.enable = true; + services.displayManager.defaultSession = "none+xmonad"; }