From 41daaf52513a6c4497bf6456c7ba797af588e21a Mon Sep 17 00:00:00 2001 From: Sanchayan Maity Date: Tue, 4 Oct 2022 18:17:44 +0530 Subject: [PATCH] sway: Refactor sway configuration --- sway/.config/sway/config | 256 +----------------- sway/.config/sway/config.d/10-statusbar.conf | 16 ++ sway/.config/sway/config.d/20-outputs.conf | 9 + sway/.config/sway/config.d/30-keymaps.conf | 91 +++++++ sway/.config/sway/config.d/40-inputs.conf | 4 + sway/.config/sway/config.d/50-workspaces.conf | 36 +++ sway/.config/sway/config.d/60-exit.conf | 14 + sway/.config/sway/config.d/70-app.conf | 7 + .../sway/config.d/80-systemd-user.conf | 7 + .../sway/config.d/90-sway-session.conf | 1 + 10 files changed, 186 insertions(+), 255 deletions(-) create mode 100644 sway/.config/sway/config.d/10-statusbar.conf create mode 100644 sway/.config/sway/config.d/20-outputs.conf create mode 100644 sway/.config/sway/config.d/30-keymaps.conf create mode 100644 sway/.config/sway/config.d/40-inputs.conf create mode 100644 sway/.config/sway/config.d/50-workspaces.conf create mode 100644 sway/.config/sway/config.d/60-exit.conf create mode 100644 sway/.config/sway/config.d/70-app.conf create mode 100644 sway/.config/sway/config.d/80-systemd-user.conf create mode 100644 sway/.config/sway/config.d/90-sway-session.conf diff --git a/sway/.config/sway/config b/sway/.config/sway/config index 1644374..d1b63b2 100644 --- a/sway/.config/sway/config +++ b/sway/.config/sway/config @@ -1,274 +1,20 @@ -# Base on the default config for sway -# -# Read `man 5 sway` for a complete reference. - -### Variables -# -# Logo key. Use Mod1 for Alt. set $mod Mod4 set $prev bracketleft set $next bracketright -# Your preferred terminal emulator set $term foot set $alt_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 dmenu_path | dmenu | xargs swaymsg exec -- set $menu fuzzel -# Screenshots set $screenshot grim ~/Pictures/screenshots/scrn-$(date +"%Y-%m-%d-%H-%M-%S").png set $screenclip slurp | grim -g - ~/Pictures/screenshots/scrn-$(date +"%Y-%m-%d-%H-%M-%S").png -# Lock set $lock swaylock -# Colors set $color_urgent #cc241d set $color_focus #458588 set $color_bg #282828 -# Client colors client.focused $color_focus $color_focus $color_bg $color_focus $color_focus client.focused_inactive $color_bg $color_bg $color_focus $color_bg $color_bg client.unfocused $color_bg $color_bg $color_focus $color_bg $color_bg client.urgent $color_urgent $color_urgent $color_bg $color_urgent $color_urgent -# Gaps & Borders -gaps inner 4 -default_border pixel 1 -default_floating_border pixel 1 - -### Output configuration -# -# Default wallpaper -output * bg ~/.config/sway/wallpaper.jpg fill - -# Set DPI for work laptop -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 -# -# 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. -input "type:keyboard" { - xkb_layout "us" - xkb_model "pc101" -} - -### Key bindings -# -# Basics: -# - # Start a terminal - bindsym $mod+Return exec $term - bindsym $mod+f exec $alt_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+r reload - - # Screenshots - bindsym $mod+Print exec $screenshot - bindsym $mod+Shift+Print exec $screenclip - - # Notifications - bindsym Control+Space exec makoctl dismiss - bindsym Control+Shift+Space exec makoctl dismiss --all - - # Multimedia - bindsym --locked XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume $(pacmd list-sinks |awk '/* index:/{print $3}') +5% - bindsym --locked XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume $(pacmd list-sinks |awk '/* index:/{print $3}') -5% - bindsym --locked XF86AudioMute exec --no-startup-id pactl set-sink-mute $(pacmd list-sinks |awk '/* index:/{print $3}') toggle - bindsym --locked XF86AudioPlay exec playerctl play-pause - bindsym --locked XF86AudioNext exec playerctl next - bindsym --locked XF86AudioPrev exec playerctl previous - - # Brightness controls - bindsym --locked XF86MonBrightnessUp exec --no-startup-id light -A 10 - bindsym --locked XF86MonBrightnessDown exec --no-startup-id light -U 10 - -# -# Moving around: -# - 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+$prev workspace prev - bindsym $mod+$next workspace next - # 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+h 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+Shift+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 - - # Return to default mode - bindsym Return mode "default" - bindsym Escape mode "default" -} -bindsym $mod+r mode "resize" - -# -# Status Bar: -# -bar { - position top - font pango:DejaVu Sans Mono, FontAwesome 15 - status_command i3status-rs - colors { - # Whole color settings - background #3c3836 - statusline #ebdbb2 - separator #666666 - - focused_workspace #458588 #458588 #ebdbb2 - active_workspace #83a598 #83a598 #ebdbb2 - inactive_workspace #504945 #504945 #ebdbb2 - urgent_workspace #cc241d #cc241d #504945 - } -} - -set $mode_system System: (l) lock, (e) logout, (s) suspend, (r) reboot, (S) shutdown, (R) UEFI -mode "$mode_system" { - bindsym l exec $lock, mode "default" - bindsym e exit - bindsym s exec --no-startup-id systemctl suspend, mode "default" - bindsym r exec --no-startup-id systemctl reboot, mode "default" - bindsym Shift+s exec --no-startup-id systemctl poweroff -i, mode "default" - bindsym Shift+r exec --no-startup-id systemctl reboot --firmware-setup, mode "default" - - # return to default mode - bindsym Return mode "default" - bindsym Escape mode "default" -} -bindsym $mod+Shift+e mode "$mode_system" - -include /etc/sway/config.d/* - -# Application for which we want some default settings or layout -for_window [app_id="pavucontrol"] floating enable, resize set width 1080 px height 720px -for_window [app_id="blueman-manager"] floating enable, resize set width 800 px height 600px -for_window [title="Firefox — Sharing Indicator"] floating enable -for_window [title="Firefox — Sharing Indicator"] no_focus -for_window [app_id="gst-launch-1.0"] floating enable, resize set width 1920 px height 1080px -assign [app_id="gst-launch-1.0"] 4 -assign [title="gst-play-1.0"] 4 - -exec_always "systemctl --user start sway-session.target" +include ~/.config/sway/config.d/* diff --git a/sway/.config/sway/config.d/10-statusbar.conf b/sway/.config/sway/config.d/10-statusbar.conf new file mode 100644 index 0000000..565907d --- /dev/null +++ b/sway/.config/sway/config.d/10-statusbar.conf @@ -0,0 +1,16 @@ +bar { + position top + font pango:DejaVu Sans Mono, FontAwesome 15 + status_command i3status-rs + colors { + # Whole color settings + background #3c3836 + statusline #ebdbb2 + separator #666666 + + focused_workspace #458588 #458588 #ebdbb2 + active_workspace #83a598 #83a598 #ebdbb2 + inactive_workspace #504945 #504945 #ebdbb2 + urgent_workspace #cc241d #cc241d #504945 + } +} diff --git a/sway/.config/sway/config.d/20-outputs.conf b/sway/.config/sway/config.d/20-outputs.conf new file mode 100644 index 0000000..051212c --- /dev/null +++ b/sway/.config/sway/config.d/20-outputs.conf @@ -0,0 +1,9 @@ +gaps inner 4 +default_border pixel 1 +default_floating_border pixel 1 + +# Default wallpaper +output * bg ~/.config/sway/wallpaper.jpg fill + +# Set DPI for work laptop +output eDP-1 scale 1.5 diff --git a/sway/.config/sway/config.d/30-keymaps.conf b/sway/.config/sway/config.d/30-keymaps.conf new file mode 100644 index 0000000..9e2b260 --- /dev/null +++ b/sway/.config/sway/config.d/30-keymaps.conf @@ -0,0 +1,91 @@ +# Start a terminal +bindsym $mod+Return exec $term +bindsym $mod+f exec $alt_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+r reload + +# Screenshots +bindsym $mod+Print exec $screenshot +bindsym $mod+Shift+Print exec $screenclip + +# Notifications +bindsym Control+Space exec makoctl dismiss +bindsym Control+Shift+Space exec makoctl dismiss --all + +# Multimedia +bindsym --locked XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume $(pacmd list-sinks |awk '/* index:/{print $3}') +5% +bindsym --locked XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume $(pacmd list-sinks |awk '/* index:/{print $3}') -5% +bindsym --locked XF86AudioMute exec --no-startup-id pactl set-sink-mute $(pacmd list-sinks |awk '/* index:/{print $3}') toggle +bindsym --locked XF86AudioPlay exec playerctl play-pause +bindsym --locked XF86AudioNext exec playerctl next +bindsym --locked XF86AudioPrev exec playerctl previous + +# Brightness controls +bindsym --locked XF86MonBrightnessUp exec --no-startup-id light -A 10 +bindsym --locked XF86MonBrightnessDown exec --no-startup-id light -U 10 + +# +# Moving around: +# +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 + +# You can "split" the current object of your focus with +# $mod+b or $mod+v, for horizontal and vertical splits +# respectively. +bindsym $mod+h 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+Shift+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 + +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 + + # Return to default mode + bindsym Return mode "default" + bindsym Escape mode "default" +} +bindsym $mod+r mode "resize" diff --git a/sway/.config/sway/config.d/40-inputs.conf b/sway/.config/sway/config.d/40-inputs.conf new file mode 100644 index 0000000..dfd7ca5 --- /dev/null +++ b/sway/.config/sway/config.d/40-inputs.conf @@ -0,0 +1,4 @@ +input "type:keyboard" { + xkb_layout "us" + xkb_model "pc101" +} diff --git a/sway/.config/sway/config.d/50-workspaces.conf b/sway/.config/sway/config.d/50-workspaces.conf new file mode 100644 index 0000000..ab789e4 --- /dev/null +++ b/sway/.config/sway/config.d/50-workspaces.conf @@ -0,0 +1,36 @@ +bindsym $mod+$prev workspace prev +bindsym $mod+$next workspace next + +# 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 + +# 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/sway/.config/sway/config.d/60-exit.conf b/sway/.config/sway/config.d/60-exit.conf new file mode 100644 index 0000000..78a690d --- /dev/null +++ b/sway/.config/sway/config.d/60-exit.conf @@ -0,0 +1,14 @@ +set $mode_system System: (l) lock, (e) logout, (s) suspend, (r) reboot, (S) shutdown, (R) UEFI +mode "$mode_system" { + bindsym l exec $lock, mode "default" + bindsym e exit + bindsym s exec --no-startup-id systemctl suspend, mode "default" + bindsym r exec --no-startup-id systemctl reboot, mode "default" + bindsym Shift+s exec --no-startup-id systemctl poweroff -i, mode "default" + bindsym Shift+r exec --no-startup-id systemctl reboot --firmware-setup, mode "default" + + # return to default mode + bindsym Return mode "default" + bindsym Escape mode "default" +} +bindsym $mod+Shift+e mode "$mode_system" diff --git a/sway/.config/sway/config.d/70-app.conf b/sway/.config/sway/config.d/70-app.conf new file mode 100644 index 0000000..5210f79 --- /dev/null +++ b/sway/.config/sway/config.d/70-app.conf @@ -0,0 +1,7 @@ +for_window [app_id="pavucontrol"] floating enable, resize set width 1080 px height 720px +for_window [app_id="blueman-manager"] floating enable, resize set width 800 px height 600px +for_window [title="Firefox — Sharing Indicator"] floating enable +for_window [title="Firefox — Sharing Indicator"] no_focus +for_window [app_id="gst-launch-1.0"] floating enable, resize set width 1920 px height 1080px +assign [app_id="gst-launch-1.0"] 4 +assign [title="gst-play-1.0"] 4 diff --git a/sway/.config/sway/config.d/80-systemd-user.conf b/sway/.config/sway/config.d/80-systemd-user.conf new file mode 100644 index 0000000..d75ccdb --- /dev/null +++ b/sway/.config/sway/config.d/80-systemd-user.conf @@ -0,0 +1,7 @@ +# sway does not set DISPLAY/WAYLAND_DISPLAY in the systemd user environment +# See FS#63021 +# Adapted from xorg's 50-systemd-user.sh, which achieves a similar goal. + +exec systemctl --user import-environment DISPLAY WAYLAND_DISPLAY SWAYSOCK XDG_CURRENT_DESKTOP +exec hash dbus-update-activation-environment 2>/dev/null && \ + dbus-update-activation-environment --systemd DISPLAY WAYLAND_DISPLAY SWAYSOCK XDG_CURRENT_DESKTOP diff --git a/sway/.config/sway/config.d/90-sway-session.conf b/sway/.config/sway/config.d/90-sway-session.conf new file mode 100644 index 0000000..89c96c6 --- /dev/null +++ b/sway/.config/sway/config.d/90-sway-session.conf @@ -0,0 +1 @@ +exec_always "systemctl --user start sway-session.target"