diff --git a/home/crow/common/optional/desktops/sway/default.nix b/home/crow/common/optional/desktops/sway/default.nix new file mode 100644 index 0000000..1e40cab --- /dev/null +++ b/home/crow/common/optional/desktops/sway/default.nix @@ -0,0 +1,12 @@ +{config, ...}: { + home.file."${config.xdg.configHome}/sway/sway.conf" = { + source = ./sway.conf; + }; + + wayland.windowManager.sway = { + enable = true; + systemd.enable = true; + xwayland = true; + }; +} + diff --git a/home/crow/common/optional/desktops/sway/sway.conf b/home/crow/common/optional/desktops/sway/sway.conf new file mode 100644 index 0000000..c454e2d --- /dev/null +++ b/home/crow/common/optional/desktops/sway/sway.conf @@ -0,0 +1,187 @@ +set $mod Mod4 +########################### +### Systemd Integration ### +########################### + +exec systemctl --user import-environment XDG_SESSION_TYPE XDG_CURRENT_DESKTOP +exec dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP=sway + + +################ +### MONITORS ### +################ + +#include /home/crow/.config/sway/monitors.conf +output HDMI-A-1 mode 1920x1080@74.973Hz +output HDMI-A-1 pos 0 0 +output HDMI-A-1 transform 270 + +output DP-1 mode 2560x1440@169.831Hz +output DP-1 pos 1080 215 + +# Backgrounds +output HDMI-A-1 background /home/crow/.config/sway/background-2 fill +output DP-1 background /home/crow/.config/sway/background-1 fill + +# Assign specific workspaces to specific outputs +workspace 1 output HDMI-A-1 # Firefox +workspace 2 output HDMI-A-1 # Comms +workspace 3 output DP-1 # Terminal +workspace 5 output DP-1 # Mudlet + +# Assign wacom tablet to primary monitor +input type:tablet_tool map_to_output DP-1 + + +################### +### MY PROGRAMS ### +################### + +set $term foot +set $menu wofi --show run | xargs swaymsg exec -- + +exec waybar +exec swaync +exec udiskie +exec /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1 + +################### +### IDLE CONFIG ### +################### + +exec swayidle -w timeout 300 'hyprlock' +exec wljoywake # prevent screen sleep on joystick input + +set $lock 'hyprlock' +bindswitch --reload --locked lid:on exec $lock +for_window [app_id="firefox"] inhibit_idle fullscreen +bindsym $mod+Shift+z exec $lock + +### 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. + +################### +### KEYBINDINGS ### +################### + +bindsym $mod+Return exec $term +bindsym $mod+Shift+q kill +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' +bindsym $mod+Shift+n exec networkmanager_dmenu +bindsym $mod+n exec swaync-client -t -sw +bindsym $mod+d exec $menu +bindsym $mod+Shift+d exec UDISKIE_DMENU_LAUNCHER="wofi" udiskie-dmenu -matching regex -dmenu -i -no-custom -multi-select +# Reload the configuration file +bindsym $mod+Shift+c reload + +floating_modifier $mod normal + +bindsym $mod+Left focus left +bindsym $mod+Down focus down +bindsym $mod+Up focus up +bindsym $mod+Right focus right + +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 ### +################## + +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 +# +# 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" { + 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" + +# Media controls: +bindsym XF86AudioRaiseVolume exec pactl set-sink-volume @DEFAULT_SINK@ +5% +bindsym XF86AudioLowerVolume exec pactl set-sink-volume @DEFAULT_SINK@ -5% +bindsym XF86AudioMute exec pactl set-sink-mute @DEFAULT_SINK@ toggle +bindsym XF86AudioMicMute exec pulseaudio-ctl mute-input +bindsym XF86AudioPlay exec playerctl play-pause +bindsym XF86AudioNext exec playerctl next +bindsym XF86AudioPrev exec playerctl previous +bindsym XF86MonBrightnessUp exec brightnessctl s +5% +bindsym XF86MonBrightnessDown exec brightnessctl s 5%- +bindsym Print exec grim -g "$(slurp)" - | swappy -f -