refactor(sway): manage with Home Manager
This commit is contained in:
		
							parent
							
								
									7c8e2d3284
								
							
						
					
					
						commit
						e2a8f86899
					
				
					 5 changed files with 141 additions and 277 deletions
				
			
		|  | @ -1,271 +0,0 @@ | |||
| # Default config for sway | ||||
| # | ||||
| # Copy this to ~/.config/sway/config and edit it to your liking. | ||||
| # | ||||
| # 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: 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 wofi --show run | ||||
| 
 | ||||
| set $browser firefox | ||||
| 
 | ||||
| set $wallpaper ~/.config/sway/wallpaper.jpg | ||||
| 
 | ||||
| ### Output configuration | ||||
| # | ||||
| # Default wallpaper (more resolutions are available in /run/current-system/sw/share/backgrounds/sway/) | ||||
| output * bg $wallpaper 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 | ||||
| output DP-7 resolution 2560x1440 scale 1.0 | ||||
| output eDP-1 scale 1.0 | ||||
| 
 | ||||
| set $laptop eDP-1 | ||||
| bindswitch --reload --locked lid:on output $laptop disable | ||||
| bindswitch --reload --locked lid:off output $laptop enable | ||||
| 
 | ||||
| # bindsym $mod+1 [workspace="1"] move workspace to output current; workspace number 1 | ||||
| # bindsym $mod+2 [workspace="2"] move workspace to output current; workspace number 2 | ||||
| # bindsym $mod+3 [workspace="3"] move workspace to output current; workspace number 3 | ||||
| # bindsym $mod+4 [workspace="4"] move workspace to output current; workspace number 4 | ||||
| # bindsym $mod+5 [workspace="5"] move workspace to output current; workspace number 5 | ||||
| # bindsym $mod+6 [workspace="6"] move workspace to output current; workspace number 6 | ||||
| # bindsym $mod+7 [workspace="7"] move workspace to output current; workspace number 7 | ||||
| # bindsym $mod+8 [workspace="8"] move workspace to output current; workspace number 8 | ||||
| # bindsym $mod+9 [workspace="9"] move workspace to output current; workspace number 9 | ||||
| # bindsym $mod+0 [workspace="10"] move workspace to output current; workspace number 10 | ||||
| 
 | ||||
| bindsym $mod+tab workspace back_and_forth | ||||
| 
 | ||||
| bindsym --locked XF86MonBrightnessDown exec brightnessctl set 5%- | ||||
| bindsym --locked XF86MonBrightnessUp exec brightnessctl set 5%+ | ||||
| 
 | ||||
| ### Idle configuration | ||||
| exec swayidle -w \ | ||||
|     timeout 300 'swaylock -f -i $wallpaper \ | ||||
|     timeout 600 'swaymsg "output * dpms off"' resume 'swaymsg "output * dpms on"' \ | ||||
|     before-sleep "swaylock -f -i $wallpaper" | ||||
| 
 | ||||
| bindsym $mod+Escape exec swaylock -f -i $wallpaper #000000 | ||||
| 
 | ||||
| ### 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+Return exec $term | ||||
| 
 | ||||
|     # Kill focused window | ||||
|     bindsym $mod+Shift+q kill | ||||
| 
 | ||||
|     # Start your launcher | ||||
|     bindsym $mod+d exec $menu | ||||
| 
 | ||||
|     bindsym $mod+Shift+b exec $browser | ||||
| 
 | ||||
|     # 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' | ||||
| 
 | ||||
| exec nm-applet --indicator | ||||
| 
 | ||||
| # | ||||
| # 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 | ||||
| # | ||||
| # 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+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+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 $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 bottom | ||||
|     tray_padding 10px | ||||
|     font pango:DejaVu Sans Mono 16 | ||||
| 
 | ||||
|     # 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 %I:%M:%S %p'; do sleep 1; done | ||||
|     status_command i3status-rs ~/.config/i3status-rust/config-default.toml | ||||
| 
 | ||||
|     colors { | ||||
|         statusline #ffffff | ||||
|         background #323232 | ||||
|         focused_workspace #ffffff #ffffff #333333 | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| default_border pixel 3 | ||||
| 
 | ||||
| input * { | ||||
|     xkb_layout "gb" | ||||
| } | ||||
| 
 | ||||
| input type:touchpad { | ||||
|   tap enabled | ||||
|   dwt enabled | ||||
|   natural_scroll disabled | ||||
| } | ||||
| 
 | ||||
| smart_borders on | ||||
| smart_gaps on | ||||
| gaps inner 10 | ||||
| 
 | ||||
| exec configure-gtk | ||||
| 
 | ||||
| bindsym --locked XF86AudioLowerVolume exec wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%- -l 1.2 | ||||
| bindsym --locked XF86AudioRaiseVolume exec wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+ -l 1.2 | ||||
| 
 | ||||
| assign [app_id="Alacritty"] workspace 1 | ||||
| assign [app_id="firefox"] workspace 2 | ||||
| assign [class="Slack"] workspace 10 | ||||
| assign [class="discord"] workspace 10 | ||||
| # Get app_id with swaymsg -t get_tree | ||||
| 
 | ||||
| include /etc/sway/config.d/* | ||||
| Before Width: | Height: | Size: 2.2 MiB After Width: | Height: | Size: 2.2 MiB | 
|  | @ -257,8 +257,8 @@ in | |||
|     recursive = true; | ||||
|   }; | ||||
| 
 | ||||
|   xdg.configFile.sway = { | ||||
|     source = ../../config/sway; | ||||
|   xdg.configFile.wallpaper = { | ||||
|     source = ../../config/wallpaper; | ||||
|     recursive = true; | ||||
|   }; | ||||
| } | ||||
|  |  | |||
|  | @ -1,4 +1,4 @@ | |||
| { config, pkgs, ... }: { | ||||
| { config, lib, pkgs, ... }: { | ||||
|   home.username = "opdavies"; | ||||
|   home.homeDirectory = "/home/opdavies"; | ||||
| 
 | ||||
|  | @ -6,6 +6,121 @@ | |||
| 
 | ||||
|   programs.home-manager.enable = true; | ||||
| 
 | ||||
|   services.swayidle.enable = true; | ||||
| 
 | ||||
|   services.swayidle.events = [ | ||||
|     { | ||||
|       event = "before-sleep"; | ||||
|       command = "${pkgs.swaylock}/bin/swaylock --daemonize --image ~/.config/wallpaper/wallpaper.jpg"; | ||||
|     } | ||||
|   ]; | ||||
| 
 | ||||
|   services.swayidle.timeouts = [ | ||||
|     { | ||||
|       timeout = 60; | ||||
|       command = "${pkgs.swaylock}/bin/swaylock --daemonize --image ~/.config/wallpaper/wallpaper.jpg"; | ||||
|     } | ||||
|     { | ||||
|       timeout = 300; | ||||
|       command = "swaymsg 'output * dpms off'"; | ||||
|       resumeCommand = "swaymsg 'output * dpms on'"; | ||||
|     } | ||||
|   ]; | ||||
| 
 | ||||
|   programs.swaylock.enable = true; | ||||
|   programs.swaylock.settings = { | ||||
|     daemonize = true; | ||||
|     image = "~/.config/wallpaper/wallpaper.jpg"; | ||||
|   }; | ||||
| 
 | ||||
|   wayland.windowManager.sway.enable = true; | ||||
| 
 | ||||
|   wayland.windowManager.sway.config = { | ||||
|     assigns = { | ||||
|       "1" = [{ app_id = "firefox"; }]; | ||||
|       "2" = [{ app_id = "Alacritty"; }]; | ||||
|       "3" = [{ class = "vlc"; }]; | ||||
|       "10" = [ | ||||
|         { class = "Slack"; } | ||||
|         { class = "discord"; } | ||||
|       ]; | ||||
|       # Get app_id with swaymsg -t get_tree | ||||
|     }; | ||||
| 
 | ||||
|     bars = [ | ||||
|       { | ||||
|         colors = { | ||||
|           background = "#323232"; | ||||
|           focusedWorkspace = { | ||||
|             background = "#ffffff"; | ||||
|             border = "#ffffff"; | ||||
|             text = "#333333"; | ||||
|           }; | ||||
|           statusline = "#ffffff"; | ||||
|         }; | ||||
| 
 | ||||
|         fonts = { | ||||
|           names = [ "DejaVu Sans Mono" ]; | ||||
|           size = 16.0; | ||||
|         }; | ||||
| 
 | ||||
|         statusCommand = "i3status-rs ~/.config/i3status-rust/config-default.toml"; | ||||
|         trayPadding = 10; | ||||
|       } | ||||
|     ]; | ||||
| 
 | ||||
|     gaps.inner = 10; | ||||
|     gaps.smartBorders = "on"; | ||||
|     gaps.smartGaps = true; | ||||
| 
 | ||||
|     input = { | ||||
|       "*" = { | ||||
|         xkb_layout = "gb"; | ||||
|       }; | ||||
| 
 | ||||
|       "type:touchpad" = { | ||||
|         dwt = "enabled"; | ||||
|         tap = "enabled"; | ||||
|       }; | ||||
|     }; | ||||
| 
 | ||||
|     keybindings = | ||||
|       let modifier = config.wayland.windowManager.sway.config.modifier; | ||||
|       in lib.mkOptionDefault { | ||||
|         "${modifier}+Escape" = "exec swaylock --daemonize"; | ||||
|         "${modifier}+Shift+b" = "exec firefox"; | ||||
|         "${modifier}+tab" = "workspace back_and_forth"; | ||||
|     }; | ||||
| 
 | ||||
|     menu = "wofi --show run"; | ||||
|     modifier = "Mod4"; | ||||
| 
 | ||||
|     output = { | ||||
|       "*" = { | ||||
|         bg = "~/.config/wallpaper/wallpaper.jpg fill"; | ||||
|       }; | ||||
| 
 | ||||
|       eDP-1 = { | ||||
|         scale = "1.0"; | ||||
|       }; | ||||
|     }; | ||||
| 
 | ||||
|     terminal = "alacritty"; | ||||
| 
 | ||||
|     window.border = 3; | ||||
|   }; | ||||
| 
 | ||||
|   wayland.windowManager.sway.extraConfig = '' | ||||
|     set $laptop eDP-1 | ||||
|     bindswitch --reload --locked lid:on output $laptop disable | ||||
|     bindswitch --reload --locked lid:off output $laptop enable | ||||
| 
 | ||||
|     bindsym --locked XF86MonBrightnessDown exec brightnessctl set 5%- | ||||
|     bindsym --locked XF86MonBrightnessUp exec brightnessctl set 5%+ | ||||
| 
 | ||||
|     for_window [class="vlc"] inhibit_idle fullscreen | ||||
|   ''; | ||||
| 
 | ||||
|   programs.i3status-rust = { | ||||
|     enable = true; | ||||
| 
 | ||||
|  | @ -44,6 +159,23 @@ | |||
|             format = " $timestamp.datetime(f:'%F %T') "; | ||||
|           } | ||||
|         ]; | ||||
| 
 | ||||
|         settings = { | ||||
|           theme = { | ||||
|             theme = "plain"; | ||||
|             overrides = { | ||||
|               good_bg = "#333333"; | ||||
|               good_fg = "#ffffff"; | ||||
|               idle_bg = "#333333"; | ||||
|               idle_fg = "#ffffff"; | ||||
|               info_bg = "#333333"; | ||||
|               info_fg = "#ffffff"; | ||||
|               separator_bg = "#333333"; | ||||
|               warning_bg = "#333333"; | ||||
|               warning_fg = "#ffffff"; | ||||
|             }; | ||||
|           }; | ||||
|         }; | ||||
|       }; | ||||
|     }; | ||||
|   }; | ||||
|  |  | |||
|  | @ -118,9 +118,12 @@ in { | |||
|     [ | ||||
|       brightnessctl | ||||
|       configure-gtk | ||||
|       i3status-rust | ||||
|       swayidle | ||||
|       swaylock | ||||
|       ffmpegthumbnailer | ||||
|       google-chrome | ||||
|       swaybg | ||||
|       xfce.thunar | ||||
|       xfce.thunar-volman | ||||
|       xfce.tumbler | ||||
|     ]; | ||||
| 
 | ||||
|   xdg.portal = { | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue