From 3fcbc67bd390bf934d18e0b15f8e58488ce0f30a Mon Sep 17 00:00:00 2001 From: derped Date: Mon, 29 Jul 2024 11:45:46 +0200 Subject: [PATCH] Wrap sway config with nix. --- config/etc.nix | 2 +- config/etc/sway/config | 217 ---------------------------- config/etc/sway/config.nix | 284 +++++++++++++++++++++++++++++++++++++ 3 files changed, 285 insertions(+), 218 deletions(-) delete mode 100644 config/etc/sway/config create mode 100644 config/etc/sway/config.nix diff --git a/config/etc.nix b/config/etc.nix index 950e2cd..6d0e1fa 100644 --- a/config/etc.nix +++ b/config/etc.nix @@ -8,7 +8,7 @@ with lib; { environment.etc = mkIf (elem "etcfiles" config.machine.conffiles) { "rofi.rasi".source = import ./etc/rofi.rasi.nix {inherit pkgs;}; "i3/py3status".source = ./etc/i3/py3status; - "sway/config".source = mkDefault ./etc/sway/config; + "sway/config".source = mkDefault (import ./etc/sway/config.nix {inherit pkgs;}); "mpv/input.conf".source = ./etc/mpv/input.conf; "mpv/mpv.conf".source = ./etc/mpv/mpv.conf; "youtube-dl.conf".source = ./etc/youtube-dl.conf; diff --git a/config/etc/sway/config b/config/etc/sway/config deleted file mode 100644 index 436a6d2..0000000 --- a/config/etc/sway/config +++ /dev/null @@ -1,217 +0,0 @@ -# Read `man 5 sway` for a complete reference. - -### Variables -# -# Logo key. Use Mod1 for Alt. -set $mod Mod4 -# Home row direction keys, like vim -set $left h -set $down j -set $up k -set $right l -# Your preferred terminal emulator -set $term alacritty -# Your preferred application launcher -# Note: it's recommended that you pass the final command to sway -set $menu dmenu_path | dmenu | xargs swaymsg exec - -### Output configuration -# -# Default wallpaper -output * bg ~/Pictures/wallpaper.jpg fill -output eDP-1 scale 1.5 -# -# Example configuration: -# -# output HDMI-A-1 resolution 1920x1080 position 1920,0 -# -# You can get the names of your outputs by running: swaymsg -t get_outputs - -### Idle configuration -# -# Example configuration: -# -# exec swayidle -w \ -# timeout 300 'swaylock -f -c 000000' \ -# timeout 600 'swaymsg "output * dpms off"' \ -# resume 'swaymsg "output * dpms on"' \ -# before-sleep 'swaylock -f -c 000000' -# -# This will lock your screen after 300 seconds of inactivity, then turn off -# your displays after another 300 seconds, and turn your screens back on when -# resumed. It will also lock your screen before your computer goes to sleep. - -### Input configuration -# You can get the names of your inputs by running: swaymsg -t get_inputs xkb_options grp:alt_shift_toggle# Read `man 5 sway-input` for more information about this section. -input "1118:2496:Microsoft_Surface_Type_Cover_Touchpad" { - dwt enabled - tap enabled - natural_scroll disabled - middle_emulation enabled -} - -input "1118:2496:Microsoft_Surface_Type_Cover_Keyboard" { - xkb_layout de - xkb_variant nodeadkeys -} - -### Key bindings -# -# Basics: -# -# start a terminal -bindsym $mod+Return exec $term - -# kill focused window -bindsym $mod+Shift+q kill - -# start your launcher -bindsym $mod+d exec $menu - -# Drag floating windows by holding down $mod and left mouse button. -# Resize them with right mouse button + $mod. -# Despite the name, also works for non-floating windows. -# Change normal to inverse to use left mouse button for resizing and right -# mouse button for dragging. -floating_modifier $mod normal - -# reload the configuration file -bindsym $mod+Shift+c reload - -# exit sway (logs you out of your Wayland session) -bindsym $mod+Shift+e exec swaynag -t warning -m 'You pressed the exit shortcut. Do you really want to exit sway? This will end your Wayland session.' -b 'Yes, exit sway' 'swaymsg exit' -# -# Moving around: -# -# Move your focus around -bindsym $mod+$left focus left -bindsym $mod+$down focus down -bindsym $mod+$up focus up -bindsym $mod+$right focus right -# or use $mod+[up|down|left|right] -bindsym $mod+Left focus left -bindsym $mod+Down focus down -bindsym $mod+Up focus up -bindsym $mod+Right focus right - -# _move_ the focused window with the same, but add Shift -bindsym $mod+Shift+$left move left -bindsym $mod+Shift+$down move down -bindsym $mod+Shift+$up move up -bindsym $mod+Shift+$right move right -# ditto, with arrow keys -bindsym $mod+Shift+Left move left -bindsym $mod+Shift+Down move down -bindsym $mod+Shift+Up move up -bindsym $mod+Shift+Right move right -# -# Workspaces: -# -# switch to workspace -bindsym $mod+1 workspace 1 -bindsym $mod+2 workspace 2 -bindsym $mod+3 workspace 3 -bindsym $mod+4 workspace 4 -bindsym $mod+5 workspace 5 -bindsym $mod+6 workspace 6 -bindsym $mod+7 workspace 7 -bindsym $mod+8 workspace 8 -bindsym $mod+9 workspace 9 -bindsym $mod+0 workspace 10 -# move focused container to workspace -bindsym $mod+Shift+1 move container to workspace 1 -bindsym $mod+Shift+2 move container to workspace 2 -bindsym $mod+Shift+3 move container to workspace 3 -bindsym $mod+Shift+4 move container to workspace 4 -bindsym $mod+Shift+5 move container to workspace 5 -bindsym $mod+Shift+6 move container to workspace 6 -bindsym $mod+Shift+7 move container to workspace 7 -bindsym $mod+Shift+8 move container to workspace 8 -bindsym $mod+Shift+9 move container to workspace 9 -bindsym $mod+Shift+0 move container to workspace 10 -# Note: workspaces can have any name you want, not just numbers. -# We just use 1-10 as the default. -# -# Layout stuff: -# -# You can "split" the current object of your focus with -# $mod+b or $mod+v, for horizontal and vertical splits -# respectively. -bindsym $mod+b splith -bindsym $mod+v splitv - -# Switch the current container between different layout styles -bindsym $mod+s layout stacking -bindsym $mod+w layout tabbed -bindsym $mod+e layout toggle split - -# Make the current focus fullscreen -bindsym $mod+f fullscreen - -# Toggle the current focus between tiling and floating mode -bindsym $mod+Shift+space floating toggle - -# Swap focus between the tiling area and the floating area -bindsym $mod+space focus mode_toggle - -# move focus to the parent container -bindsym $mod+a focus parent -# -# Scratchpad: -# -# Sway has a "scratchpad", which is a bag of holding for windows. -# You can send windows there and get them back later. - -# Move the currently focused window to the scratchpad -bindsym $mod+p move scratchpad - -# Show the next scratchpad window or hide the focused scratchpad window. -# If there are multiple scratchpad windows, this command cycles through them. -bindsym $mod+Shift+p scratchpad show -# -# Resizing containers: -# -mode "resize" { - # left will shrink the containers width - # right will grow the containers width - # up will shrink the containers height - # down will grow the containers height - bindsym $left resize shrink width 10px - bindsym $down resize grow height 10px - bindsym $up resize shrink height 10px - bindsym $right resize grow width 10px - - # ditto, with arrow keys - bindsym Left resize shrink width 10px - bindsym Down resize grow height 10px - bindsym Up resize shrink height 10px - bindsym Right resize grow width 10px - - # return to default mode - bindsym Return mode "default" - bindsym Escape mode "default" -} -bindsym $mod+r mode "resize" - -# -# Status Bar: -# -# Read `man 5 sway-bar` for more information about this section. -bar { - position top - - # When the status_command prints a new line to stdout, swaybar updates. - # The default just shows the current date and time. - #status_command while date +'%Y-%m-%d %l:%M:%S %p'; do sleep 1; done - status_command i3status - #status_command py3status -c /etc/i3/py3status - colors { - separator #586e75 - background #002b36 - statusline #aea79f - focused_workspace #586e75 #586e75 #ffffff - active_workspace #073642 #073642 #ffffff - inactive_workspace #002b36 #002b36 #aea79f - urgent_workspace #77216f #77216f #ffffff - } -} diff --git a/config/etc/sway/config.nix b/config/etc/sway/config.nix new file mode 100644 index 0000000..be6274f --- /dev/null +++ b/config/etc/sway/config.nix @@ -0,0 +1,284 @@ +{pkgs}: +pkgs.writeText "config" +/* +sway +*/ +'' + include /etc/sway/config.d/* + + # Read `man 5 sway` for a complete reference. + + ### Variables + # + # Logo key. Use Mod1 for Alt. + set $mod Mod4 + + workspace "HDMI" output HDMI1 + workspace_auto_back_and_forth yes + default_border pixel + hide_edge_borders both + + + # Home row direction keys, like vim + set $left h + set $down j + set $up k + set $right l + # Your preferred terminal emulator + set $term ${pkgs.wezterm}/bin/wezterm + # Your preferred application launcher + # Note: it's recommended that you pass the final command to sway + set $menu ${pkgs.rofi-wayland}/bin/rofi -config /etc/rofi.rasi -show combi + input type:keyboard xkb_layout de + input type:keyboard xkb_numlock enabled + input type:touchpad { + tap enabled + natural_scroll disabled + dwt disabled + } + ### Output configuration + # + # Default wallpaper + output * bg ${../../../assets/mount3.jpg} fill + #output eDP-1 scale 1.5 + # + # Example configuration: + # + # output HDMI-A-1 resolution 1920x1080 position 1920,0 + # + # You can get the names of your outputs by running: swaymsg -t get_outputs + + ### Idle configuration + # + # Example configuration: + # + # exec swayidle -w \ + # timeout 300 'swaylock -f -c 000000' \ + # timeout 600 'swaymsg "output * dpms off"' \ + # resume 'swaymsg "output * dpms on"' \ + # before-sleep 'swaylock -f -c 000000' + # + # This will lock your screen after 300 seconds of inactivity, then turn off + # your displays after another 300 seconds, and turn your screens back on when + # resumed. It will also lock your screen before your computer goes to sleep. + + ### Input configuration + # You can get the names of your inputs by running: swaymsg -t get_inputs xkb_options grp:alt_shift_toggle# Read `man 5 sway-input` for more information about this section. + ### Key bindings + # + # Basics: + # + # start a terminal + bindsym $mod+Return exec $term + + # kill focused window + bindsym $mod+Shift+q kill + + # start your launcher + bindsym $mod+d exec $menu + + bindsym XF86AudioPlay exec ${pkgs.playerctl}/bin/playerctl play + bindsym XF86AudioPause exec ${pkgs.playerctl}/bin/playerctl pause + bindsym XF86AudioNext exec ${pkgs.playerctl}/bin/playerctl next + bindsym XF86AudioPrev exec ${pkgs.playerctl}/bin/playerctl previous + + bindsym $mod+Mod1+space exec ${pkgs.playerctl}/bin/playerctl play-pause + bindsym $mod+Mod1+Left exec ${pkgs.playerctl}/bin/playerctl position 10- + bindsym $mod+Mod1+Right exec ${pkgs.playerctl}/bin/playerctl position 10+ + bindsym $mod+Mod1+Down exec ${pkgs.playerctl}/bin/playerctl next + bindsym $mod+Mod1+Up exec ${pkgs.playerctl}/bin/playerctl previous + + bindsym $mod+b border toggle + bindsym $mod+m bar mode toggle + bindsym $mod+y move container to output left + bindsym $mod+x move container to output right + bindsym $mod+Shift+y move workspace to output left + bindsym $mod+Shift+x move workspace to output right + bindsym $mod+Alt+l exec ${pkgs.i3lock}/bin/i3lock -efc 000000 + bindsym $mod+minus exec ${pkgs.alsa-utils}/bin/amixer -c 0 sset Master 1%- + bindsym $mod+plus exec ${pkgs.alsa-utils}/bin/amixer -c 0 sset Master 1%+ + bindsym $mod+Mod1+minus exec ${pkgs.alsa-utils}/bin/amixer -D pulse sset Master 1%- + bindsym $mod+Mod1+plus exec ${pkgs.alsa-utils}/bin/amixer -D pulse sset Master 1%+ + bindsym $mod+Shift+minus exec ${pkgs.acpilight}/bin/xbacklight -5 + bindsym $mod+Shift+plus exec ${pkgs.acpilight}/bin/xbacklight +5 + bindsym $mod+Ctrl+1 exec ${pkgs.acpilight}/bin/xbacklight -set 0 + bindsym $mod+Ctrl+2 exec ${pkgs.acpilight}/bin/xbacklight -set 1 + bindsym $mod+Ctrl+3 exec ${pkgs.acpilight}/bin/xbacklight -set 10 + bindsym $mod+Ctrl+4 exec ${pkgs.acpilight}/bin/xbacklight -set 25 + bindsym $mod+Ctrl+5 exec ${pkgs.acpilight}/bin/xbacklight -set 50 + bindsym $mod+Ctrl+6 exec ${pkgs.acpilight}/bin/xbacklight -set 60 + bindsym $mod+Ctrl+7 exec ${pkgs.acpilight}/bin/xbacklight -set 70 + bindsym $mod+Ctrl+8 exec ${pkgs.acpilight}/bin/xbacklight -set 80 + bindsym $mod+Ctrl+9 exec ${pkgs.acpilight}/bin/xbacklight -set 90 + bindsym $mod+Ctrl+0 exec ${pkgs.acpilight}/bin/xbacklight -set 100 + + bindsym $mod+Shift+w sticky toggle + + # Drag floating windows by holding down $mod and left mouse button. + # Resize them with right mouse button + $mod. + # Despite the name, also works for non-floating windows. + # Change normal to inverse to use left mouse button for resizing and right + # mouse button for dragging. + floating_modifier $mod normal + + # reload the configuration file + bindsym $mod+Shift+c reload + + # exit sway (logs you out of your Wayland session) + bindsym $mod+Shift+e exec swaynag -t warning -m 'You pressed the exit shortcut. Do you really want to exit sway? This will end your Wayland session.' -b 'Yes, exit sway' 'swaymsg exit' + # + # Moving around: + # + # Move your focus around + bindsym $mod+$left focus left + bindsym $mod+$down focus down + bindsym $mod+$up focus up + bindsym $mod+$right focus right + # or use $mod+[up|down|left|right] + bindsym $mod+Left focus left + bindsym $mod+Down focus down + bindsym $mod+Up focus up + bindsym $mod+Right focus right + + # _move_ the focused window with the same, but add Shift + bindsym $mod+Shift+$left move left + bindsym $mod+Shift+$down move down + bindsym $mod+Shift+$up move up + bindsym $mod+Shift+$right move right + # ditto, with arrow keys + bindsym $mod+Shift+Left move left + bindsym $mod+Shift+Down move down + bindsym $mod+Shift+Up move up + bindsym $mod+Shift+Right move right + # + # Workspaces: + # + # switch to workspace + bindsym $mod+1 workspace 1 + bindsym $mod+2 workspace 2 + bindsym $mod+3 workspace 3 + bindsym $mod+4 workspace 4 + bindsym $mod+5 workspace 5 + bindsym $mod+6 workspace 6 + bindsym $mod+7 workspace 7 + bindsym $mod+8 workspace 8 + bindsym $mod+9 workspace 9 + bindsym $mod+0 workspace 10 + # move focused container to workspace + bindsym $mod+Shift+1 move container to workspace 1 + bindsym $mod+Shift+2 move container to workspace 2 + bindsym $mod+Shift+3 move container to workspace 3 + bindsym $mod+Shift+4 move container to workspace 4 + bindsym $mod+Shift+5 move container to workspace 5 + bindsym $mod+Shift+6 move container to workspace 6 + bindsym $mod+Shift+7 move container to workspace 7 + bindsym $mod+Shift+8 move container to workspace 8 + bindsym $mod+Shift+9 move container to workspace 9 + bindsym $mod+Shift+0 move container to workspace 10 + + bindsym $mod+c splith + bindsym $mod+v splitv + + # Switch the current container between different layout styles + bindsym $mod+s layout stacking + bindsym $mod+w layout tabbed + bindsym $mod+e layout toggle split + + # Make the current focus fullscreen + bindsym $mod+f fullscreen + + # Toggle the current focus between tiling and floating mode + bindsym $mod+Shift+space floating toggle + + # Swap focus between the tiling area and the floating area + bindsym $mod+space focus mode_toggle + + # move focus to the parent container + bindsym $mod+a focus parent + # + # Scratchpad: + # + # Sway has a "scratchpad", which is a bag of holding for windows. + # You can send windows there and get them back later. + + # Move the currently focused window to the scratchpad + bindsym $mod+p move scratchpad + + # Show the next scratchpad window or hide the focused scratchpad window. + # If there are multiple scratchpad windows, this command cycles through them. + bindsym $mod+Shift+p scratchpad show + # + # Resizing containers: + # + mode "resize" { + # left will shrink the containers width + # right will grow the containers width + # up will shrink the containers height + # down will grow the containers height + bindsym $left resize shrink width 10px + bindsym $down resize grow height 10px + bindsym $up resize shrink height 10px + bindsym $right resize grow width 10px + + # ditto, with arrow keys + bindsym Left resize shrink width 10px + bindsym Down resize grow height 10px + bindsym Up resize shrink height 10px + bindsym Right resize grow width 10px + + # return to default mode + bindsym Return mode "default" + bindsym Escape mode "default" + } + bindsym $mod+r mode "resize" + + # Define kanagawa colors + set $base00 "1F1F28" + set $base01 "2A2A37" + set $base02 "223249" + set $base03 "727169" + set $base04 "C8C093" + set $base05 "DCD7BA" + set $base06 "938AA9" + set $base07 "363646" + set $base08 "C34043" + set $base09 "FFA066" + set $base0A "DCA561" + set $base0B "98BB6C" + set $base0C "7FB4CA" + set $base0D "7E9CD8" + set $base0E "957FB8" + set $base0F "D27E99" + + client.focused $base05 $base0D $base00 $base0D $base0D + client.focused_inactive $base01 $base01 $base05 $base03 $base01 + client.unfocused $base01 $base00 $base05 $base01 $base01 + client.urgent $base08 $base08 $base00 $base08 $base08 + client.placeholder $base00 $base00 $base05 $base00 $base00 + client.background $base07 + + # + # Status Bar: + # + # Read `man 5 sway-bar` for more information about this section. + bar { + position top + + # When the status_command prints a new line to stdout, swaybar updates. + # The default just shows the current date and time. + #status_command while date +'%Y-%m-%d %l:%M:%S %p'; do sleep 1; done + status_command ${pkgs.python3Packages.py3status}/bin/py3status -c /etc/i3/py3status + colors { + background $base00 + separator $base01 + statusline $base04 + + # State Border BG Text + focused_workspace $base05 $base0D $base00 + active_workspace $base05 $base03 $base00 + inactive_workspace $base03 $base01 $base05 + urgent_workspace $base08 $base08 $base00 + binding_mode $base00 $base0A $base00 + } + } +''