diff --git a/home/programs/default.nix b/home/programs/default.nix index 00d01ad..f359281 100644 --- a/home/programs/default.nix +++ b/home/programs/default.nix @@ -33,6 +33,7 @@ pavucontrol ripgrep spotify-tui + wl-clipboard xdg-utils yubioath-flutter yubikey-manager diff --git a/home/wm/hyprland/default.nix b/home/wm/hyprland/default.nix index 67815fe..5d1f480 100644 --- a/home/wm/hyprland/default.nix +++ b/home/wm/hyprland/default.nix @@ -8,7 +8,7 @@ let rofi = "${config.programs.rofi.package}/bin/rofi"; slurp = "${pkgs.slurp}/bin/slurp"; swaylock = "${pkgs.swaylock}/bin/swaylock"; - tmux = "${pkgs.tmux}/bin/tmux"; + tmux = "${config.programs.tmux.package}/bin/tmux"; wpctl = "${pkgs.wireplumber}/bin/wpctl"; xdg-user-dir = "${pkgs.xdg-user-dirs}/bin/xdg-user-dir"; change-wallpaper = "${pkgs.scripts}/bin/chpaper ${pkgs.catppuccin-wallpapers}/share/wallpapers"; diff --git a/home/wm/sway/default.nix b/home/wm/sway/default.nix index ef5cba0..da78086 100644 --- a/home/wm/sway/default.nix +++ b/home/wm/sway/default.nix @@ -1,215 +1,225 @@ { config, lib, pkgs, ... }: { - home.packages = with pkgs; [ - wl-clipboard - ]; + wayland.windowManager.sway = { + enable = true; + systemdIntegration = true; + wrapperFeatures.gtk = true; + xwayland = true; + config = { + modifier = "Mod4"; + fonts = { + names = [ "FiraCode Nerd Font" ]; + size = 11.0; + }; + input = { + "type:touchpad" = { + dwt = "enabled"; + tap = "enabled"; + natural_scroll = "enabled"; + middle_emulation = "enabled"; + }; + }; + bars = [ ]; + gaps = { + outer = 2; + inner = 2; + }; + window.titlebar = false; + floating.titlebar = false; + colors = { + background = "#F8F8F2"; + focused = { + background = "#6272A4"; + border = "#6272A4"; + childBorder = "#6272A4"; + indicator = "#6272A4"; + text = "#F8F8F2"; + }; + focusedInactive = { + background = "#44475A"; + border = "#44475A"; + childBorder = "#44475A"; + indicator = "#44475A"; + text = "#F8F8F2"; + }; + placeholder = { + background = "#282A36"; + border = "#282A36"; + childBorder = "#282A36"; + indicator = "#282A36"; + text = "#F8F8F2"; + }; + unfocused = { + background = "#282A36"; + border = "#282A36"; + childBorder = "#282A36"; + indicator = "#282A36"; + text = "#BFBFBF"; + }; + urgent = { + background = "#FF5555"; + border = "#44475A"; + childBorder = "#FF5555"; + indicator = "#FF5555"; + text = "#F8F8F2"; + }; + }; - wayland.windowManager.sway.enable = true; - wayland.windowManager.sway.package = pkgs.sway; - wayland.windowManager.sway.config.modifier = "Mod4"; - wayland.windowManager.sway.config.bars = [ ]; - wayland.windowManager.sway.xwayland = true; - wayland.windowManager.sway.config.fonts = { - names = [ "FiraCode Nerd Font" ]; - size = 11.0; - }; - wayland.windowManager.sway.config.input = { - "type:touchpad" = { - dwt = "enabled"; - tap = "enabled"; - natural_scroll = "enabled"; - middle_emulation = "enabled"; + seat = { + "*" = { + xcursor_theme = "Bibata-Modern-Classic 24"; + }; + }; + + keybindings = + let + modifier = config.wayland.windowManager.sway.config.modifier; + + brightnessctl = "${pkgs.brightnessctl}/bin/brightnessctl"; + grim = "${pkgs.grim}/bin/grim"; + kitty = "${config.programs.kitty.package}/bin/kitty"; + playerctl = "${pkgs.playerctl}/bin/playerctl"; + rofi = "${config.programs.rofi.package}/bin/rofi"; + tmux = "${config.programs.tmux.package}/bin/tmux"; + slurp = "${pkgs.slurp}/bin/slurp"; + swaylock = "${pkgs.swaylock}/bin/swaylock"; + wpctl = "${pkgs.wireplumber}/bin/wpctl"; + xdg-user-dir = "${pkgs.xdg-user-dirs}/bin/xdg-user-dir"; + change-wallpaper = "${pkgs.scripts}/bin/chpaper ${pkgs.catppuccin-wallpapers}/share/wallpapers"; + in + lib.mkOptionDefault { + "${modifier}+Return" = "exec ${kitty} ${tmux} new"; + "${modifier}+Shift+Return" = "exec ${kitty}"; + "${modifier}+d" = "exec ${rofi} -show drun"; + "${modifier}+Shift+c" = "reload"; + "${modifier}+l" = "exec ${swaylock} -f -i /tmp/lockpaper.jpg"; + "${modifier}+Shift+w" = "exec ${change-wallpaper}"; + "${modifier}+Shift+escape" = "exec ${pkgs.scripts}/bin/power-menu"; + "${modifier}+f11" = "exec ${pkgs.scripts}/bin/tmux-sessions"; + + "XF86MonBrightnessUp" = "exec ${brightnessctl} set +5%"; + "XF86MonBrightnessDown" = "exec ${brightnessctl} set 5%-"; + + "XF86AudioMute" = "exec ${wpctl} set-mute @DEFAULT_AUDIO_SINK@ toggle"; + "XF86AudioRaiseVolume" = "exec ${wpctl} set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+"; + "XF86AudioLowerVolume" = "exec ${wpctl} set-volume @DEFAULT_AUDIO_SINK@ 5%-"; + + "XF86AudioPlay" = "exec ${playerctl} play-pause"; + "XF86AudioNext" = "exec ${playerctl} next"; + "XF86AudioPrev" = "exec ${playerctl} previous"; + + "print" = ''exec ${grim} "''$(${xdg-user-dir} PICTURES)/Screenshots/screenshot-''$(date +%Y-%m-%d-%H-%M-%S).png"''; + "Shift+print" = ''exec ${grim} -g "''$(${slurp})" "''$(${xdg-user-dir} PICTURES)/Screenshots/screenshot-''$(date +%Y-%m-%d-%H-%M-%S).png"''; + }; + + startup = [ + { command = "${pkgs.polkit_gnome}/libexec/polkit-gnome-authentication-agent-1"; } + { + command = "${pkgs.scripts}/bin/chpaper ${pkgs.catppuccin-wallpapers}/share/wallpapers"; + always = true; + } + { + command = "systemctl --user restart waybar.service"; + always = true; + } + { + command = "systemctl --user restart kanshi.service"; + always = true; + } + ]; + + window.commands = [ + { + command = "floating enable, focus"; + criteria = { + app_id = "pavucontrol"; + }; + } + { + command = "floating enable, focus"; + criteria = { + app_id = "blueman-manager"; + }; + } + { + command = "floating enable, focus"; + criteria = { + app_id = "solaar"; + }; + } + { + command = "floating enable, focus, resize set width 95ppt"; + criteria = { + app_id = "mpv"; + }; + } + { + command = "floating enable, focus"; + criteria = { + app_id = "eog"; + }; + } + { + command = "floating enable, focus"; + criteria = { + app_id = "io.elementary.files"; + }; + } + { + command = "floating enable, focus"; + criteria = { + app_id = "gnome-system-monitor"; + }; + } + { + command = "floating enable, focus"; + criteria = { + app_id = "virt-manager"; + }; + } + { + command = "floating enable, focus"; + criteria = { + class = "1Password"; + }; + } + { + command = "floating enable, focus"; + criteria = { + app_id = "io.github.celluloid_player.Celluloid"; + }; + } + { + command = "floating enable, focus"; + criteria = { + app_id = "gnome-disks"; + }; + } + { + command = "floating enable, focus"; + criteria = { + app_id = "yubico.org."; + }; + } + { + command = "floating enable, focus"; + criteria = { + app_id = ".yubioath-flutter-wrapped"; + }; + } + { + command = "move container to workspace 2, focus"; + criteria = { + app_id = "firefox"; + }; + } + { + command = "move container to workspace 9, focus"; + criteria = { + class = "Spotify"; + }; + } + ]; }; }; - wayland.windowManager.sway.systemdIntegration = true; - wayland.windowManager.sway.wrapperFeatures = { - gtk = true; - }; - wayland.windowManager.sway.config.colors = { - background = "#F8F8F2"; - focused = { - background = "#6272A4"; - border = "#6272A4"; - childBorder = "#6272A4"; - indicator = "#6272A4"; - text = "#F8F8F2"; - }; - focusedInactive = { - background = "#44475A"; - border = "#44475A"; - childBorder = "#44475A"; - indicator = "#44475A"; - text = "#F8F8F2"; - }; - placeholder = { - background = "#282A36"; - border = "#282A36"; - childBorder = "#282A36"; - indicator = "#282A36"; - text = "#F8F8F2"; - }; - unfocused = { - background = "#282A36"; - border = "#282A36"; - childBorder = "#282A36"; - indicator = "#282A36"; - text = "#BFBFBF"; - }; - urgent = { - background = "#FF5555"; - border = "#44475A"; - childBorder = "#FF5555"; - indicator = "#FF5555"; - text = "#F8F8F2"; - }; - }; - - wayland.windowManager.sway.config.seat = { - "*" = { - xcursor_theme = "Bibata-Modern-Classic 24"; - }; - }; - - wayland.windowManager.sway.config.keybindings = - let - modifier = config.wayland.windowManager.sway.config.modifier; - in - lib.mkOptionDefault { - "${modifier}+Return" = "exec $config.programs.kitty.package}/bin/kitty ${pkgs.tmux}/bin/tmux new"; - "${modifier}+Shift+Return" = "exec ${config.programs.kitty.package}/bin/kitty"; - "${modifier}+d" = "exec ${config.programs.rofi.package}/bin/rofi -show drun"; - "${modifier}+Shift+c" = "reload"; - "${modifier}+l" = "exec ${pkgs.swaylock}/bin/swaylock -f -i /tmp/lockpaper.jpg"; - "${modifier}+Shift+w" = "exec ~/.config/scripts/chpaper.sh"; - "${modifier}+Shift+escape" = "exec ~/.config/scripts/power_menu.sh"; - "${modifier}+f11" = "exec ~/.config/scripts/tmux_sessions.sh"; - - "XF86MonBrightnessUp" = "exec ${pkgs.brightnessctl}/bin/brightnessctl set +5%"; - "XF86MonBrightnessDown" = "exec ${pkgs.brightnessctl}/bin/brightnessctl set 5%-"; - - "XF86AudioMute" = "exec ${pkgs.wireplumber}/bin/wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"; - "XF86AudioRaiseVolume" = "exec ~/.config/scripts/volume_up.sh"; - "XF86AudioLowerVolume" = "exec ${pkgs.wireplumber}/bin/wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-"; - - "XF86AudioPlay" = "exec ${pkgs.playerctl}/bin/playerctl play-pause"; - "XF86AudioNext" = "exec ${pkgs.playerctl}/bin/playerctl next"; - "XF86AudioPrev" = "exec ${pkgs.playerctl}/bin/playerctl previous"; - - "print" = ''exec ${pkgs.grim}/bin/grim "''$(${pkgs.xdg-user-dirs}/bin/xdg-user-dir PICTURES)/Screenshots/screenshot-''$(date +%Y-%m-%d-%H-%M-%S).png"''; - "Shift+print" = ''exec ${pkgs.grim}/bin/grim -g "''$(${pkgs.slurp}/bin/slurp)" "''$(${pkgs.xdg-user-dirs}/bin/xdg-user-dir PICTURES)/Screenshots/screenshot-''$(date +%Y-%m-%d-%H-%M-%S).png"''; - }; - - wayland.windowManager.sway.config.startup = [ - { command = "${pkgs.polkit_gnome}/libexec/polkit-gnome-authentication-agent-1"; } - { - command = "~/.config/scripts/chpaper.sh"; - always = true; - } - { - command = "systemctl --user restart waybar.service"; - always = true; - } - { - command = "systemctl --user restart kanshi.service"; - always = true; - } - ]; - - wayland.windowManager.sway.config.window.commands = [ - { - command = "floating enable, focus"; - criteria = { - app_id = "pavucontrol"; - }; - } - { - command = "floating enable, focus"; - criteria = { - app_id = "blueman-manager"; - }; - } - { - command = "floating enable, focus"; - criteria = { - app_id = "solaar"; - }; - } - { - command = "floating enable, focus, resize set width 95ppt"; - criteria = { - app_id = "mpv"; - }; - } - { - command = "floating enable, focus"; - criteria = { - app_id = "eog"; - }; - } - { - command = "floating enable, focus"; - criteria = { - app_id = "io.elementary.files"; - }; - } - { - command = "floating enable, focus"; - criteria = { - app_id = "gnome-system-monitor"; - }; - } - { - command = "floating enable, focus"; - criteria = { - app_id = "virt-manager"; - }; - } - { - command = "floating enable, focus"; - criteria = { - class = "1Password"; - }; - } - { - command = "floating enable, focus"; - criteria = { - app_id = "io.github.celluloid_player.Celluloid"; - }; - } - { - command = "floating enable, focus"; - criteria = { - app_id = "gnome-disks"; - }; - } - { - command = "floating enable, focus"; - criteria = { - app_id = "yubico.org."; - }; - } - { - command = "floating enable, focus"; - criteria = { - app_id = ".yubioath-flutter-wrapped"; - }; - } - { - command = "move container to workspace 2, focus"; - criteria = { - app_id = "firefox"; - }; - } - { - command = "move container to workspace 9, focus"; - criteria = { - class = "Spotify"; - }; - } - ]; - - wayland.windowManager.sway.config.gaps.outer = 2; - wayland.windowManager.sway.config.gaps.inner = 2; - wayland.windowManager.sway.config.window.titlebar = false; - wayland.windowManager.sway.config.floating.titlebar = false; }