aboutsummaryrefslogtreecommitdiff
path: root/dot_config/sway
diff options
context:
space:
mode:
Diffstat (limited to 'dot_config/sway')
-rw-r--r--dot_config/sway/config180
-rw-r--r--dot_config/sway/config.d/20_swaysome64
-rw-r--r--dot_config/sway/config.d/30_clipboard6
-rw-r--r--dot_config/sway/config.d/40_keyboards16
4 files changed, 177 insertions, 89 deletions
diff --git a/dot_config/sway/config b/dot_config/sway/config
index 4b9b7f4..629dec8 100644
--- a/dot_config/sway/config
+++ b/dot_config/sway/config
@@ -21,6 +21,10 @@ set $lock swaylock
# on the original workspace that the command was run on.
set $menu dmenu_path | dmenu | xargs swaymsg exec --
+set $trans 0.7
+set $alphamark "α"
+for_window [con_mark=$alphamark] opacity set $trans
+
include /etc/sway/config-vars.d/*
### Output configuration
@@ -44,122 +48,109 @@ exec swayidle -w \
### Input configuration
#
-# built-in Thinkpad keyboard
-input "1:1:AT_Translated_Set_2_keyboard" {
- xkb_file /home/rak/.xkb/keymap/icd.laptop.xkb
+# This is only used to make bindsym --to-code map all of the default bindings to
+# the same physical keys as the default us layout.
+# The layouts are actually set by $XDG_CONFIG_HOME/sway/config.d/20_keyboards
+input * {
+ xkb_layout us
+}
+
+bindsym --locked {
+ XF86AudioMute exec wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle
+ XF86AudioLowerVolume exec wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-
+ XF86AudioRaiseVolume exec wpctl set-volume -l 1.5 @DEFAULT_AUDIO_SINK@ 5%+
+ XF86AudioMicMute exec wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle
+ XF86MonBrightnessUp exec --no-startup-id light -A 10
+ XF86MonBrightnessDown exec --no-startup-id light -U 10
}
-### Key bindings
#
# Basics:
#
+bindsym --to-code {
# Start a terminal
- bindsym $mod+Return exec $term
+ $mod+Return exec $term
# Kill focused window
- bindsym $mod+Shift+q kill
+ $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
+ $mod+d exec $menu
# Reload the configuration file
- bindsym $mod+Shift+c reload
+ $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'
+ $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'
# Lock screen
- bindsym $mod+F5 exec swaymsg 'output * dpms toggle'
- bindsym $mod+F7 exec $lock
+ $mod+F5 exec swaymsg 'output * dpms toggle'
+ $mod+F7 exec $lock
+
+ # List all windows
+ $mod+u exec wofi-window-switcher
+
+ $mod+Shift+t mark --toggle "$alphamark" ; [con_id=__focused__] opacity set 1 ; [con_mark=$alphamark con_id=__focused__] opacity set $trans
#
# 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
+ $mod+$left focus left
+ $mod+$down focus down
+ $mod+$up focus up
+ $mod+$right focus right
# Or use $mod+[up|down|left|right]
- bindsym $mod+Left workspace prev
- bindsym $mod+Down focus down
- bindsym $mod+Up focus up
- bindsym $mod+Right workspace next
+ $mod+Left workspace prev
+ $mod+Down focus down
+ $mod+Up focus up
+ $mod+Right workspace next
# 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
+ $mod+Shift+$left move left
+ $mod+Shift+$down move down
+ $mod+Shift+$up move up
+ $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+ampersand workspace number 1
- bindsym $mod+bracketleft workspace number 2
- bindsym $mod+braceleft workspace number 3
- bindsym $mod+braceright workspace number 4
- bindsym $mod+parenleft workspace number 5
- bindsym $mod+equal workspace number 6
- bindsym $mod+asterisk workspace number 7
- bindsym $mod+parenright workspace number 8
- bindsym $mod+plus workspace number 9
- bindsym $mod+bracketright workspace number 10
+ $mod+Shift+Left move left
+ $mod+Shift+Down move down
+ $mod+Shift+Up move up
+ $mod+Shift+Right move right
- bindgesture swipe:right workspace prev
- bindgesture swipe:left workspace next
-
- # Move focused container to workspace
- bindsym $mod+percent move container to workspace number 1
- bindsym $mod+7 move container to workspace number 2
- bindsym $mod+5 move container to workspace number 3
- bindsym $mod+3 move container to workspace number 4
- bindsym $mod+1 move container to workspace number 5
- bindsym $mod+9 move container to workspace number 6
- bindsym $mod+0 move container to workspace number 7
- bindsym $mod+2 move container to workspace number 8
- bindsym $mod+4 move container to workspace number 9
- bindsym $mod+6 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.
+ # Move focus between outputs
+ $mod+x focus output next
+ $mod+Shift+x focus output prev
#
# 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
+ $mod+b splith
+ $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
+ $mod+s layout stacking
+ $mod+w layout tabbed
+ $mod+e layout toggle split
# Make the current focus fullscreen
- bindsym $mod+f fullscreen
+ $mod+f fullscreen
# Toggle the current focus between tiling and floating mode
- bindsym $mod+Shift+space floating toggle
+ $mod+Shift+space floating toggle
# Swap focus between the tiling area and the floating area
- bindsym $mod+space focus mode_toggle
+ $mod+space focus mode_toggle
# Move focus to the parent container
- bindsym $mod+a focus parent
+ $mod+a focus parent
#
# Scratchpad:
#
@@ -167,36 +158,47 @@ input "1:1:AT_Translated_Set_2_keyboard" {
# You can send windows there and get them back later.
# Move the currently focused window to the scratchpad
- bindsym $mod+Shift+minus move scratchpad
+ $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
+ $mod+minus scratchpad show
+
+}
+ bindgesture swipe:right workspace prev
+ bindgesture swipe:left workspace next
+
+ # 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
#
# Resizing containers:
#
-mode "resize" {
+mode "resize" bindsym --to-code {
# 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
+ $left resize shrink width 10px
+ $down resize grow height 10px
+ $up resize shrink height 10px
+ $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
+ Left resize shrink width 10px
+ Down resize grow height 10px
+ Up resize shrink height 10px
+ Right resize grow width 10px
# Return to default mode
- bindsym Return mode "default"
- bindsym Escape mode "default"
+ Return mode "default"
+ Escape mode "default"
}
-bindsym $mod+r mode "resize"
+bindsym --to-code $mod+r mode "resize"
# use for_window instead of assign when we want to follow the window and focus
@@ -206,8 +208,8 @@ for_window [class="Signal"] move container to workspace number 3; focus
bar swaybar_command waybar
exec_always pkill kanshi; exec kanshi
-exec wl-paste --watch cliphist store
-bindsym $mod+y exec cliphist list | dmenu | cliphist decode | wl-copy
font pango:Iosevka Regular 8
+
include /etc/sway/config.d/*
+include ~/.config/sway/config.d/*
diff --git a/dot_config/sway/config.d/20_swaysome b/dot_config/sway/config.d/20_swaysome
new file mode 100644
index 0000000..f928bba
--- /dev/null
+++ b/dot_config/sway/config.d/20_swaysome
@@ -0,0 +1,64 @@
+bindsym --to-code {
+ # Change focus between workspaces
+ $mod+1 exec "swaysome focus 1"
+ $mod+2 exec "swaysome focus 2"
+ $mod+3 exec "swaysome focus 3"
+ $mod+4 exec "swaysome focus 4"
+ $mod+5 exec "swaysome focus 5"
+ $mod+6 exec "swaysome focus 6"
+ $mod+7 exec "swaysome focus 7"
+ $mod+8 exec "swaysome focus 8"
+ $mod+9 exec "swaysome focus 9"
+ $mod+0 exec "swaysome focus 0"
+
+ # Move containers between workspaces
+ $mod+Shift+1 exec "swaysome move 1"
+ $mod+Shift+2 exec "swaysome move 2"
+ $mod+Shift+3 exec "swaysome move 3"
+ $mod+Shift+4 exec "swaysome move 4"
+ $mod+Shift+5 exec "swaysome move 5"
+ $mod+Shift+6 exec "swaysome move 6"
+ $mod+Shift+7 exec "swaysome move 7"
+ $mod+Shift+8 exec "swaysome move 8"
+ $mod+Shift+9 exec "swaysome move 9"
+ $mod+Shift+0 exec "swaysome move 0"
+
+ # Focus workspace groups
+ $mod+Alt+1 exec "swaysome focus-group 1"
+ $mod+Alt+2 exec "swaysome focus-group 2"
+ $mod+Alt+3 exec "swaysome focus-group 3"
+ $mod+Alt+4 exec "swaysome focus-group 4"
+ $mod+Alt+5 exec "swaysome focus-group 5"
+ $mod+Alt+6 exec "swaysome focus-group 6"
+ $mod+Alt+7 exec "swaysome focus-group 7"
+ $mod+Alt+8 exec "swaysome focus-group 8"
+ $mod+Alt+9 exec "swaysome focus-group 9"
+ $mod+Alt+0 exec "swaysome focus-group 0"
+
+ # Move containers to other workspace groups
+ $mod+Alt+Shift+1 exec "swaysome move-to-group 1"
+ $mod+Alt+Shift+2 exec "swaysome move-to-group 2"
+ $mod+Alt+Shift+3 exec "swaysome move-to-group 3"
+ $mod+Alt+Shift+4 exec "swaysome move-to-group 4"
+ $mod+Alt+Shift+5 exec "swaysome move-to-group 5"
+ $mod+Alt+Shift+6 exec "swaysome move-to-group 6"
+ $mod+Alt+Shift+7 exec "swaysome move-to-group 7"
+ $mod+Alt+Shift+8 exec "swaysome move-to-group 8"
+ $mod+Alt+Shift+9 exec "swaysome move-to-group 9"
+ $mod+Alt+Shift+0 exec "swaysome move-to-group 0"
+
+ # Move focused container to next output
+ $mod+o exec "swaysome next-output"
+ # Move focused container to previous output
+ $mod+Shift+o exec "swaysome prev-output"
+
+ # Move focused workspace group to next output
+ $mod+Alt+o exec "swaysome workspace-group-next-output"
+ # Move focused workspace group to previous output
+ $mod+Alt+Shift+o exec "swaysome workspace-group-prev-output"
+}
+
+# Init workspaces for every screen
+exec "swaysome init 1"
+
+# vim:set ft=swayconfig:
diff --git a/dot_config/sway/config.d/30_clipboard b/dot_config/sway/config.d/30_clipboard
new file mode 100644
index 0000000..eca377b
--- /dev/null
+++ b/dot_config/sway/config.d/30_clipboard
@@ -0,0 +1,6 @@
+exec wl-paste --watch cliphist store
+
+bindsym --to-code $mod+y exec cliphist list | wofi -d | cliphist decode | wl-copy
+bindsym --to-code $mod+Shift+y exec cliphist clear
+
+# vim:set ft=swayconfig:
diff --git a/dot_config/sway/config.d/40_keyboards b/dot_config/sway/config.d/40_keyboards
new file mode 100644
index 0000000..524147d
--- /dev/null
+++ b/dot_config/sway/config.d/40_keyboards
@@ -0,0 +1,16 @@
+input type:keyboard {
+ xkb_layout "icd,ru"
+ xkb_variant "icd,"
+}
+# built-in Thinkpad keyboard
+input "1:1:AT_Translated_Set_2_keyboard" {
+ xkb_options "nbsp:level3n,lalt_meta:lalt_meta,caps:swapescape,grp:shifts_toggle,lv3:ralt_switch_multikey"
+}
+input "kinesis????" {
+ xkb_options "nbsp:level3n,lalt_meta:lalt_meta,caps:swapescape,grp:shifts_toggle,lv3:switch"
+}
+input "ergodox????" {
+ xkb_options "nbsp:level3n,lalt_meta:lalt_meta,caps:swapescape,grp:shifts_toggle,lv3:switch"
+}
+
+# vim:set ft=swayconfig: