From eaaffa743aafdef1f23948c3aadccc55d5c9179c Mon Sep 17 00:00:00 2001 From: 514fpv Date: Thu, 4 Jan 2024 11:48:30 +0800 Subject: [PATCH] home(sway): add sway configuration --- home/sway/home.nix | 47 +++++++++++++++++++++++++++++++++++++++++++++ home/sway/nixos.nix | 23 ++++++++++++++++++++++ 2 files changed, 70 insertions(+) create mode 100644 home/sway/home.nix create mode 100644 home/sway/nixos.nix diff --git a/home/sway/home.nix b/home/sway/home.nix new file mode 100644 index 00000000..8019d015 --- /dev/null +++ b/home/sway/home.nix @@ -0,0 +1,47 @@ +{ pkgs +, lib +, config +, ... }: with lib; mkIf config.passthrough.gui { + wayland.windowManager.sway = { + enable = true; + swaynag.enable = true; + config = { + modifier = "Mod4"; + keybindings = let + modifier = config.wayland.windowManager.sway.config.modifier; + in mkOptionDefault { + XF86MonBrightnessUp = "light -A 5"; + XF86MonBrightnessDown = "light -U 5"; + + "Control+Alt+l" = "exec ${pkgs.swaylock}/bin/swaylock -c 000000"; + "Print" = "exec ${pkgs.grim}/bin/grim - | ${pkgs.wl-clipboard}/bin/wl-copy"; + "${modifier}+Print" = "exec ${pkgs.grim}/bin/grim -g \"$(${pkgs.slurp}/bin/slurp)\" - | ${pkgs.wl-clipboard}/bin/wl-copy"; + "${modifier}+q" = "exec google-chrome-stable"; + }; + + menu = "wofi -show drun -modi drun"; + bars = [ { + mode = "dock"; + position = "bottom"; + workspaceButtons = true; + workspaceNumbers = true; + statusCommand = "${pkgs.i3status}/bin/i3status"; + fonts = { + names = [ "monospace" ]; + size = 8.0; + }; + trayOutput = "primary"; + # sets transparency + colors.background = "00000000"; + } ]; + gaps.inner = 12; + gaps.outer = 5; + # dodge the status bar + gaps.bottom = 0; + + input."*".natural_scroll = "enabled"; + input."type:touchpad".tap = "enabled"; + output."*".bg = "${../../share/54345906_p0.jpg} fill"; + }; + }; +} diff --git a/home/sway/nixos.nix b/home/sway/nixos.nix new file mode 100644 index 00000000..f6900dd3 --- /dev/null +++ b/home/sway/nixos.nix @@ -0,0 +1,23 @@ +{ pkgs +, lib +, config +, ... }: with lib; let + gui = with config.faucet.gui; ( enable && session ); +in mkIf gui { + services.xserver.displayManager.sessionPackages = [ + (pkgs.writeTextFile { + name = "sway-session"; + destination = "/share/wayland-sessions/sway.desktop"; + text = '' + [Desktop Entry] + Name=Sway + Comment=An i3-compatible Wayland compositor + Exec=sway --unsupported-gpu + Type=Application + ''; + } // { providedSessions = [ pkgs.sway.meta.mainProgram ]; }) + ]; + + security.pam.services.swaylock = { }; + programs.light.enable = true; +}