diff --git a/module/Sway.nix b/module/Sway.nix index e9e31e2..3ead977 100644 --- a/module/Sway.nix +++ b/module/Sway.nix @@ -48,6 +48,7 @@ }; environment.variables = { - FOOT_CONFIG = ./sway/Foot.ini; + FOOT_CONFIG = ./foot/Foot.ini; + SWAY_CONFIG = ./sway/module; }; } diff --git a/module/sway/Foot.ini b/module/foot/Foot.ini similarity index 100% rename from module/sway/Foot.ini rename to module/foot/Foot.ini diff --git a/module/sway/Config b/module/sway/Config index 88087b1..d9b5c33 100644 --- a/module/sway/Config +++ b/module/sway/Config @@ -1,226 +1,3 @@ # Read `man 5 sway` for a complete reference. -# Meta key. Use Mod1 for Alt. -set $mod Mod4 - -# Navigation keys. -set $down s -set $left a -set $right d -set $up w - -# Terminal emulator. -set $term foot --config=$FOOT_CONFIG - -# Application launcher. -# Note: pass the final command to swaymsg so that the resulting window can be opened -# on the original workspace that the command was run on. -set $menu dmenu_path | wmenu | xargs swaymsg exec -- - -# Disable title bar. -default_border none -default_floating_border none -# font pango:monospace 0 -titlebar_padding 1 -titlebar_border_thickness 0 - -# Wallpaper. -output * bg / fill #000000 - -# -# 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 * power off"' resume 'swaymsg "output * power 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 -# -# Example configuration: -# -# input "2:14:SynPS/2_Synaptics_TouchPad" { -# dwt enabled -# tap enabled -# natural_scroll enabled -# middle_emulation enabled -# } -# -# You can get the names of your inputs by running: swaymsg -t get_inputs -# Read `man 5 sway-input` for more information about this section. - -### Key bindings -# -# Basics: -# -# Start a terminal -bindsym $mod+Escape exec $term - -# Kill focused window -bindsym $mod+x kill - -# Start your launcher -bindsym $mod+space 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 focus. -bindsym $mod+$down focus down -bindsym $mod+$left focus left -bindsym $mod+$right focus right -bindsym $mod+$up focus up - -bindsym $mod+Down focus down -bindsym $mod+Left focus left -bindsym $mod+Right focus right -bindsym $mod+Up focus up - -# Move the focused window. -bindsym $mod+Shift+$down move down -bindsym $mod+Shift+$left move left -bindsym $mod+Shift+$right move right -bindsym $mod+Shift+$up move up - -bindsym $mod+Shift+Down move down -bindsym $mod+Shift+Left move left -bindsym $mod+Shift+Right move right -bindsym $mod+Shift+Up move up - -# -# Workspaces: -# -# Switch to workspace. -bindsym $mod+1 workspace number 1 -bindsym $mod+2 workspace number 2 -bindsym $mod+3 workspace number 3 -bindsym $mod+4 workspace number 4 -bindsym $mod+5 workspace number 5 -bindsym $mod+6 workspace number 6 -bindsym $mod+7 workspace number 7 -bindsym $mod+8 workspace number 8 -bindsym $mod+9 workspace number 9 -bindsym $mod+0 workspace number 10 - -# Move focused container to workspace. -bindsym $mod+Shift+1 move container to workspace number 1 -bindsym $mod+Shift+2 move container to workspace number 2 -bindsym $mod+Shift+3 move container to workspace number 3 -bindsym $mod+Shift+4 move container to workspace number 4 -bindsym $mod+Shift+5 move container to workspace number 5 -bindsym $mod+Shift+6 move container to workspace number 6 -bindsym $mod+Shift+7 move container to workspace number 7 -bindsym $mod+Shift+8 move container to workspace number 8 -bindsym $mod+Shift+9 move container to workspace number 9 -bindsym $mod+Shift+0 move container to workspace number 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+backslash splith -bindsym $mod+minus splitv - -# Switch the current container between different layout styles -# TODO: Rekey. -# bindsym $mod+s layout stacking -# bindsym $mod+w layout tabbed -# bindsym $mod+e layout toggle split - -# Fullscreen. -bindsym $mod+f fullscreen - -# Toggle tiling. -# 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+Shift+minus 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+minus 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 $down resize grow height 10px - bindsym $left resize shrink width 10px - bindsym $right resize grow width 10px - bindsym $up resize shrink height 10px - - bindsym Down resize grow height 10px - bindsym Left resize shrink width 10px - bindsym Right resize grow width 10px - bindsym Up resize shrink height 10px - - # Return to default mode - bindsym Escape mode "default" - bindsym Return 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 %X'; do sleep 1; done -# -# colors { -# statusline #ffffff -# background #323232 -# inactive_workspace #32323200 #32323200 #5c5c5c -# } -# } - -include /etc/sway/config.d/* +include $SWAY_CONFIG/* diff --git a/module/sway/module/00-Display b/module/sway/module/00-Display new file mode 100644 index 0000000..a619dcc --- /dev/null +++ b/module/sway/module/00-Display @@ -0,0 +1,6 @@ +# +# 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 diff --git a/module/sway/module/00-Input b/module/sway/module/00-Input new file mode 100644 index 0000000..18c0ef5 --- /dev/null +++ b/module/sway/module/00-Input @@ -0,0 +1,13 @@ +### Input configuration +# +# Example configuration: +# +# input "2:14:SynPS/2_Synaptics_TouchPad" { +# dwt enabled +# tap enabled +# natural_scroll enabled +# middle_emulation enabled +# } +# +# You can get the names of your inputs by running: swaymsg -t get_inputs +# Read `man 5 sway-input` for more information about this section. diff --git a/module/sway/module/10-Idle b/module/sway/module/10-Idle new file mode 100644 index 0000000..4be288a --- /dev/null +++ b/module/sway/module/10-Idle @@ -0,0 +1,12 @@ +### Idle configuration +# +# Example configuration: +# +# exec swayidle -w \ +# timeout 300 'swaylock -f -c 000000' \ +# timeout 600 'swaymsg "output * power off"' resume 'swaymsg "output * power 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. diff --git a/module/sway/module/10-Launcher b/module/sway/module/10-Launcher new file mode 100644 index 0000000..1eda461 --- /dev/null +++ b/module/sway/module/10-Launcher @@ -0,0 +1,4 @@ +# Application launcher. +# Note: pass the final command to swaymsg so that the resulting window can be opened +# on the original workspace that the command was run on. +set $menu dmenu_path | wmenu | xargs swaymsg exec -- diff --git a/module/sway/module/10-Leader b/module/sway/module/10-Leader new file mode 100644 index 0000000..beafcc6 --- /dev/null +++ b/module/sway/module/10-Leader @@ -0,0 +1,2 @@ +# Meta key. Use Mod1 for Alt. +set $mod Mod4 diff --git a/module/sway/module/10-StatusBar b/module/sway/module/10-StatusBar new file mode 100644 index 0000000..a62b0e9 --- /dev/null +++ b/module/sway/module/10-StatusBar @@ -0,0 +1,14 @@ +# 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 %X'; do sleep 1; done +# +# colors { +# statusline #ffffff +# background #323232 +# inactive_workspace #32323200 #32323200 #5c5c5c +# } +# } diff --git a/module/sway/module/10-Terminal b/module/sway/module/10-Terminal new file mode 100644 index 0000000..6469588 --- /dev/null +++ b/module/sway/module/10-Terminal @@ -0,0 +1,2 @@ +# Terminal emulator. +set $term foot --config=$FOOT_CONFIG diff --git a/module/sway/module/10-TitleBar b/module/sway/module/10-TitleBar new file mode 100644 index 0000000..a91891f --- /dev/null +++ b/module/sway/module/10-TitleBar @@ -0,0 +1,6 @@ +# Disable title bar. +default_border none +default_floating_border none +# font pango:monospace 0 +titlebar_padding 1 +titlebar_border_thickness 0 diff --git a/module/sway/module/10-Wallpaper b/module/sway/module/10-Wallpaper new file mode 100644 index 0000000..1a5cca0 --- /dev/null +++ b/module/sway/module/10-Wallpaper @@ -0,0 +1,2 @@ +# Wallpaper. +output * bg / fill #000000 diff --git a/module/sway/module/20-Keybind b/module/sway/module/20-Keybind new file mode 100644 index 0000000..259be97 --- /dev/null +++ b/module/sway/module/20-Keybind @@ -0,0 +1,21 @@ +# Start a terminal. +bindsym $mod+Escape exec $term + +# Kill focused window. +bindsym $mod+x kill + +# Start your launcher. +bindsym $mod+space 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' diff --git a/module/sway/module/20-Navigation b/module/sway/module/20-Navigation new file mode 100644 index 0000000..7538c29 --- /dev/null +++ b/module/sway/module/20-Navigation @@ -0,0 +1,27 @@ +# Navigation keys. +set $down s +set $left a +set $right d +set $up w + +# Move focus. +bindsym $mod+$down focus down +bindsym $mod+$left focus left +bindsym $mod+$right focus right +bindsym $mod+$up focus up + +bindsym $mod+Down focus down +bindsym $mod+Left focus left +bindsym $mod+Right focus right +bindsym $mod+Up focus up + +# Move the focused window. +bindsym $mod+Shift+$down move down +bindsym $mod+Shift+$left move left +bindsym $mod+Shift+$right move right +bindsym $mod+Shift+$up move up + +bindsym $mod+Shift+Down move down +bindsym $mod+Shift+Left move left +bindsym $mod+Shift+Right move right +bindsym $mod+Shift+Up move up diff --git a/module/sway/module/20-Resize b/module/sway/module/20-Resize new file mode 100644 index 0000000..7075985 --- /dev/null +++ b/module/sway/module/20-Resize @@ -0,0 +1,21 @@ +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 $down resize grow height 10px + bindsym $left resize shrink width 10px + bindsym $right resize grow width 10px + bindsym $up resize shrink height 10px + + bindsym Down resize grow height 10px + bindsym Left resize shrink width 10px + bindsym Right resize grow width 10px + bindsym Up resize shrink height 10px + + # Return to default mode + bindsym Escape mode "default" + bindsym Return mode "default" +} +bindsym $mod+r mode "resize" + diff --git a/module/sway/module/20-ScratchPad b/module/sway/module/20-ScratchPad new file mode 100644 index 0000000..d793064 --- /dev/null +++ b/module/sway/module/20-ScratchPad @@ -0,0 +1,9 @@ +# 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+Shift+minus 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+minus scratchpad show diff --git a/module/sway/module/20-Tiling b/module/sway/module/20-Tiling new file mode 100644 index 0000000..6bef507 --- /dev/null +++ b/module/sway/module/20-Tiling @@ -0,0 +1,21 @@ +# Toggle tiling. +# 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 + +# Split directions. +bindsym $mod+backslash splith +bindsym $mod+minus splitv + +# Switch the current container between different layout styles +# TODO: Rekey. +# bindsym $mod+s layout stacking +# bindsym $mod+w layout tabbed +# bindsym $mod+e layout toggle split + +# Fullscreen. +bindsym $mod+f fullscreen diff --git a/module/sway/module/20-Workspace b/module/sway/module/20-Workspace new file mode 100644 index 0000000..27abf03 --- /dev/null +++ b/module/sway/module/20-Workspace @@ -0,0 +1,25 @@ +# Switch to workspace. +bindsym $mod+1 workspace number 1 +bindsym $mod+2 workspace number 2 +bindsym $mod+3 workspace number 3 +bindsym $mod+4 workspace number 4 +bindsym $mod+5 workspace number 5 +bindsym $mod+6 workspace number 6 +bindsym $mod+7 workspace number 7 +bindsym $mod+8 workspace number 8 +bindsym $mod+9 workspace number 9 +bindsym $mod+0 workspace number 10 + +# Move focused container to workspace. +bindsym $mod+Shift+1 move container to workspace number 1 +bindsym $mod+Shift+2 move container to workspace number 2 +bindsym $mod+Shift+3 move container to workspace number 3 +bindsym $mod+Shift+4 move container to workspace number 4 +bindsym $mod+Shift+5 move container to workspace number 5 +bindsym $mod+Shift+6 move container to workspace number 6 +bindsym $mod+Shift+7 move container to workspace number 7 +bindsym $mod+Shift+8 move container to workspace number 8 +bindsym $mod+Shift+9 move container to workspace number 9 +bindsym $mod+Shift+0 move container to workspace number 10 +# Note: workspaces can have any name you want, not just numbers. +# We just use 1-10 as the default.