Files
i3-dot/sway/config
T
2026-09-21 19:05:35 +07:00

302 lines
11 KiB
Plaintext
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 Mod1
# 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 drun
set $menu rofi -show drun
# Font for window titles.
font pango:NotoSans 12
### Output configuration
#
set $wallpaper_dir /media/sync/images/wallpapers
set $screenlock '~/.config/sway/scripts/lock-now $wallpaper_dir'
#
exec --no-startup-id ~/.config/sway/scripts/wallpaper-rotate $wallpaper_dir
# Example configuration:
#
#output HDMI-A-1 resolution 1920x1080@120hz position 1920,0
#
# You can get the names of your outputs by running: swaymsg -t get_outputs
output DP-2 adaptive_sync on
### Idle configuration
#
# Import the compositor socket into the systemd --user environment. Without
# this, systemd-managed services (and dbus-activated apps like portals) can't
# reach the compositor at all - this is why swayidle silently failed to run
# after being restarted via systemd earlier.
exec --no-startup-id systemctl --user import-environment WAYLAND_DISPLAY SWAYSOCK XDG_CURRENT_DESKTOP DISPLAY
exec --no-startup-id hash dbus-update-activation-environment 2>/dev/null && dbus-update-activation-environment --systemd WAYLAND_DISPLAY SWAYSOCK XDG_CURRENT_DESKTOP DISPLAY
#
# Example configuration:
#
exec swayidle -w \
timeout 300 $screenlock \
timeout 900 'swaymsg "output * power off"' resume 'swaymsg "output * power on"' \
before-sleep $screenlock
#
# This will lock your screen after 300 seconds (5 min) of inactivity, then
# turn off your displays after 900 seconds (15 min), and turn your screens
# back on when resumed. It will also lock your screen before your computer
# goes to sleep.
### Input configuration
input "type:touchpad" {
tap enabled
natural_scroll enabled
middle_emulation enabled
}
# 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 "2:7:SynPS/2_Synaptics_TouchPad" {
events disabled_on_external_mouse
}
input "5426:156:Razer_Razer_DeathAdder_V2_X_HyperSpeed_Mouse" {
accel_profile "flat" # disable mouse acceleration (enabled by default; to set it manually, use "adaptive" instead of "flat")
pointer_accel 0.5 # set mouse sensitivity (between -1 and 1)
}
#exec --no-startup-id /usr/bin/gnome-keyring-daemon --start --components=gpg,pkcs11,secrets,ssh
exec --no-startup-id source ~/.config/fcitx.sh
exec --no-startup-id fcitx5
exec --no-startup-id kwalletd6
#exec --no-startup-id blueman-applet
exec --no-startup-id owncloud
exec --no-startup-id waybar
exec --no-startup-id nm-applet --indicator
exec --no-startup-id nohup gentoo-pipewire-launcher restart >/dev/null 2>&1 &
exec --no-startup-id xset m 1/1 0
exec --no-startup-id /usr/lib/pam_kwallet_init
set $lower-volume wpctl set-volume @DEFAULT_SINK@ 0.01-
set $raise-volume wpctl set-volume @DEFAULT_SINK@ 0.01+ --limit 1
set $mute-sink wpctl set-mute @DEFAULT_SINK@ toggle
set $mute-source wpctl set-mute @DEFAULT_SOURCE@ toggle
bindsym XF86AudioRaiseVolume exec --no-startup-id $raise-volume
bindsym XF86AudioLowerVolume exec --no-startup-id $lower-volume
bindsym XF86AudioMute exec --no-startup-id $mute-sink
bindsym XF86AudioMicMute exec --no-startup-id $mute-source
bindsym $mod+slash exec --no-startup-id $mute-sink
bindsym $mod+period exec --no-startup-id $raise-volume
bindsym $mod+comma exec --no-startup-id $lower-volume
# Brightness key bindings
bindsym XF86MonBrightnessUp exec brightnessctl set +5%
bindsym XF86MonBrightnessDown exec brightnessctl set 5%-
# Media player key bindings (need media-sound/playerctl for playerctl.)
bindsym XF86AudioPlay exec playerctl play
bindsym XF86AudioPause exec playerctl pause
bindsym XF86AudioNext exec playerctl next
bindsym XF86AudioPrev exec playerctl previous
bindsym $mod+Shift+comma exec playerctl previous
bindsym $mod+Shift+period exec playerctl next
bindsym $mod+Shift+slash exec playerctl play-pause
bindsym Print exec --no-startup-id bash -c 'f="$(xdg-user-dir PICTURES)/$(date +%s_grim.png)" && grim -g "$(slurp)" "$f" && wl-copy < "$f" && notify-send "Screenshot saved" "$f"'
bindsym $mod+Print exec --no-startup-id bash -c 'f="$(xdg-user-dir PICTURES)/$(date +%s_grim.png)" && grim "$f" && wl-copy < "$f" && notify-send "Screenshot saved" "$f"'
### 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+l exec ~/.config/sway/scripts/lock-now $wallpaper_dir
bindsym $mod+Shift+o exec ~/.config/sway/scripts/lock-now $wallpaper_dir && systemctl suspend
# 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
# Reload the configuration file
bindsym $mod+Shift+c reload
# restart sway in place (preserves your layout/session, can be used to upgrade sway)
bindsym $mod+Shift+r restart
# 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'
bindsym $mod+Shift+p exec systemctl poweroff
bindsym $mod+Shift+l exec swaymsg exit
#
# 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
# move focused window
#bindsym $mod+Shift+j move left
#bindsym $mod+Shift+k move down
#bindsym $mod+Shift+l move up
#bindsym $mod+Shift+semicolon move right
# alternatively, you can use the cursor 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+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+h or $mod+v, for horizontal and vertical splits
# respectively.
bindsym $mod+h split h
bindsym $mod+v split v
# 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+space fullscreen toggle
# Toggle the current focus between tiling and floating mode
bindsym $mod+f 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
#
bindsym $mod+Tab workspace back_and_forth
# Resizing containers:
#
mode "resize" {
# These bindings trigger as soon as you enter the resize mode
# Pressing left will shrink the windows width.
# Pressing right will grow the windows width.
# Pressing up will shrink the windows height.
# Pressing down will grow the windows height.
bindsym j resize shrink width 10 px or 10 ppt
bindsym k resize grow height 10 px or 10 ppt
bindsym l resize shrink height 10 px or 10 ppt
bindsym semicolon resize grow width 10 px or 10 ppt
# same bindings, but for the arrow keys
bindsym Left resize shrink width 10 px or 10 ppt
bindsym Down resize grow height 10 px or 10 ppt
bindsym Up resize shrink height 10 px or 10 ppt
bindsym Right resize grow width 10 px or 10 ppt
# back to normal: Enter or Escape or $mod+r
bindsym Return mode "default"
bindsym Escape mode "default"
bindsym $mod+r mode "default"
}
bindsym $mod+r mode "resize"
# Status bar is provided by waybar (started above); no built-in sway bar.
# class border bground text indicator child_border
client.focused #3A7CA5 #3A7CA5 #E2EBF0 #0D1B27 #3A7CA5
client.placeholder #0D1B27 #0D1B27 #BDD5E4 #0D1B27 #0D1B27
client.unfocused #0D1B27 #152535 #6A8DA0 #0D1B27 #152535
client.focused_inactive #1A3347 #1A3347 #6A8DA0 #1A3347 #1A3347
for_window [class="^.*"] border pixel 1
# Don't lock or blank the screen while a fullscreen window (game, video,
# presentation) is focused - ties into the same idle protocol swayidle uses.
for_window [app_id="^.*"] inhibit_idle fullscreen
for_window [class="^.*"] inhibit_idle fullscreen
#floating
for_window [app_id="signal"] floating enable
for_window [app_id="fluffychat"] floating enable
for_window [app_id="im.dino.Dino"] floating enable
for_window [app_id="desktopclient.owncloud.com.owncloud"] floating enable
for_window [app_id="firefox-bin"] move to workspace 1
for_window [app_id="thunderbird"] move container to workspace 4
for_window [app_id="thunar"] move container to workspace 3
for_window [title="wtui"] floating enable
include ~./config/sway/*
#include /etc/sway/config.d/*