[sway] Move config and use

This commit is contained in:
Tibo De Peuter 2023-11-14 22:37:04 +01:00
parent 5ab3c4d70b
commit 1f36989d3d
16 changed files with 530 additions and 498 deletions

View file

@ -1,35 +0,0 @@
#!/usr/bin/env bash
#
# ~/.config/sway/autostart.sh
# List of applications to autostart
#
function execute () {
setsid --fork $SHELL -c "${1}" &> /dev/null
}
# Idle script
execute "~/.scripts/idle.sh"
# Gamma and brightness
execute "clight"
# Notification manager
execute "dunst -verbosity crit"
# Fix [Slow launch for some GTK apps](https://github.com/swaywm/sway/issues/5732)
dbus-update-activation-environment --systemd DISPLAY WAYLAND_DISPLAY SWAYSOCK
# Fix JetBrain IDE's showing properly
wmname LG3
sleep 3
# --- Everything that requires tray to be active ---
# Nextcloud client
execute "nextcloud --background"
# Activity watch server & client
execute "aw-qt"

View file

@ -1,178 +0,0 @@
#
# ~/.config/sway/commands
# Keybinds for sway
#
# Variables
set {
$alt Mod1
$flag Mod4
$term alacritty
$notify ~/.scripts/notify.sh
}
# Focus
bindsym {
$flag+h focus left
$flag+j focus down
$flag+k focus up
$flag+l focus right
$flag+Left focus left
$flag+Down focus down
$flag+Up focus up
$flag+Right focus right
$flag+semicolon focus mode_toggle
$flag+p focus parent
}
# Move windows
bindsym {
$flag+Shift+h move left
$flag+Shift+j move down
$flag+Shift+k move up
$flag+Shift+l move right
$flag+Shift+Left move left
$flag+Shift+Down move down
$flag+Shift+Up move up
$flag+Shift+Right move right
$flag+Next move scratchpad
$flag+KP_Next move scratchpad
$flag+Prior scratchpad show
$flag+KP_Prior scratchpad show
}
# Layouts
bindsym {
$flag+w layout toggle split
$flag+x layout tabbed
$flag+c split h
$flag+v split v
$flag+f floating enable, border normal 1
$flag+Shift+f floating disable, border pixel 1
$alt+Next border pixel 1 # Show window title
$alt+KP_Next border pixel 1
$alt+Prior border normal 1 # Hide window title
$alt+KP_Prior border normal 1
$flag+s sticky toggle
}
# Workspaces
set {
$ws1 "1:1"
$ws2 "2:2"
$ws3 "3:3"
$ws4 "4:4"
$ws5 "5:5"
$ws6 "6:6"
$ws7 "7:7"
$ws8 "8:8"
$ws9 "9:9"
$ws10 "10:10"
$ws11 "11:Soc"
$ws12 "12:Ent"
}
bindsym {
$flag+1 workspace $ws1
$flag+2 workspace $ws2
$flag+3 workspace $ws3
$flag+4 workspace $ws4
$flag+5 workspace $ws5
$flag+6 workspace $ws6
$flag+7 workspace $ws7
$flag+8 workspace $ws8
$flag+9 workspace $ws9
$flag+0 workspace $ws10
$flag+minus workspace $ws11
$flag+equal workspace $ws12
$flag+Shift+1 move container to workspace $ws1, workspace $ws1
$flag+Shift+2 move container to workspace $ws2, workspace $ws2
$flag+Shift+3 move container to workspace $ws3, workspace $ws3
$flag+Shift+4 move container to workspace $ws4, workspace $ws4
$flag+Shift+5 move container to workspace $ws5, workspace $ws5
$flag+Shift+6 move container to workspace $ws6, workspace $ws6
$flag+Shift+7 move container to workspace $ws7, workspace $ws7
$flag+Shift+8 move container to workspace $ws8, workspace $ws8
$flag+Shift+9 move container to workspace $ws9, workspace $ws9
$flag+Shift+0 move container to workspace $ws10, workspace $ws10
$flag+Shift+minus move container to workspace $ws11, workspace $ws11
$flag+Shift+equal move container to workspace $ws12, workspace $ws12
$flag+Control+j focus output 'eDP-1'
$flag+Control+h workspace prev_on_output
$flag+Control+l workspace next_on_output
$flag+Control+k focus output 'HDMI-A-1'
$flag+Control+Down focus output 'eDP-1'
$flag+Control+Left workspace prev_on_output
$flag+Control+Right workspace next_on_output
$flag+Control+Up focus output 'HDMI-A-1'
$flag+Control+Shift+j \
move container to output 'eDP-1', focus output 'eDP-1'
$flag+Control+Shift+h \
move container to workspace prev_on_output, workspace prev_on_output
$flag+Control+Shift+l \
move container to workspace next_on_output, workspace next_on_output
$flag+Control+Shift+k \
move container to output 'HDMI-A-1', focus output 'HDMI-A-1'
$flag+Control+Shift+Down \
move container to output 'eDP-1', focus output 'eDP-1'
$flag+Control+Shift+Left \
move container to workspace prev_on_output, workspace prev_on_output
$flag+Control+Shift+Right \
move container to workspace next_on_output, workspace next_on_output
$flag+Control+Shift+Up \
move container to output 'HDMI-A-1', focus output 'HDMI-A-1'
}
# System
bindsym --locked {
# Brightness
XF86MonBrightnessDown exec brightnessctl -e s 5%- && $notify -b
XF86MonBrightnessUp exec brightnessctl -e s +5% && $notify -b
# Volume control (Pulsemixer is slow!)
XF86AudioRaiseVolume exec pamixer -i 2 --set-limit 100 && $notify -v
XF86AudioLowerVolume exec pamixer -d 2 && $notify -v
XF86AudioMute exec pamixer -t && $notify -v
XF86AudioMicMute exec pactl set-source-mute @DEFAULT_SOURCE@ toggle
# Media control
F7 exec playerctl play-pause
Shift+XF86AudioLowerVolume exec playerctl previous
Shift+XF86AudioRaiseVolume exec playerctl next
}
# Special commands
set $fzf ~/.scripts/fzf-jump
bindsym {
# Reload sway
$alt+Shift+r reload
# Dialog to exit sway
$alt+Shift+e exec swaynag -t warning -m 'Do you really want to exit sway?' \
-B 'Yes, exit sway' 'swaymsg exit'
$flag+q kill # Kill focused window
$flag+Return exec $term -e bash -c "zellij attach || zellij" # Start a terminal
$flag+Delete exec swaylock # Lockscreen
# Start application launcher
$alt+space exec $term --title 'FZF-Jump' -e $fzf/launcher.sh
# Window switcher
$alt+Tab exec $term --title 'FZF-Jump' -e $fzf/standalone.sh $fzf/modules/windows.sh $fzf/modules/workspaces.sh
# File explorer
$flag+e exec $term -e vifm
# Internet explorer
$flag+i exec firefox
}

View file

@ -1,54 +0,0 @@
#
# .config/sway/config
# Personal config for sway
# Requires noto-fonts-cjk
#
# Import other config files
include {
commands
modes
style
}
input type:touchpad {
natural_scroll enabled
scroll_factor 0.6
middle_emulation enabled
tap enabled
}
seat seat0 hide_cursor when-typing enable
# Output
output * {
bg "~/Pictures/wallpapers/bg.*" fill
}
output 'Dell Inc. DELL P2214H 29C2937M4YTL' {
# Vertical monitor
transform 270
}
output 'Samsung Electric Company SAMSUNG 0x00000001' {
# Zoom in because long distance
scale 2
}
# Focus
focus_follows_mouse no
floating_modifier Mod4 normal
# Window rules
for_window [window_role="pop-up"] floating enable
for_window [window_role="task_dialog"] floating enable
for_window [window_role="splash"] floating enable
for_window [class="Qalculate"] floating enable
for_window [class="Caprine"] floating enable, border normal 2
for_window [title="^FZF-Jump$"] floating enable, border pixel 0, resize set 600 350
for_window [class="^Betterbird$"] move container to workspace "11:Soc"
exec "~/.config/sway/autostart.sh"

View file

@ -1,93 +0,0 @@
#
# ~/.config/sway/modes
# Modes for sway
#
set {
$alt Mod1
$flag Mod4
}
# Resizing
bindsym $flag+r mode "resize"
mode "resize" bindsym {
l resize grow width 10 px or 10 ppt
k resize grow height 10 px or 10 ppt
h resize shrink width 10 px or 10 ppt
j resize shrink height 10 px or 10 ppt
Shift+l resize grow width 50 px or 50 ppt
Shift+k resize grow height 50 px or 50 ppt
Shift+h resize shrink width 50 px or 50 ppt
Shift+j resize shrink height 50 px or 50 ppt
Right resize grow width 10 px or 10 ppt
Up resize grow height 10 px or 10 ppt
Left resize shrink width 10 px or 10 ppt
Down resize shrink height 10 px or 10 ppt
Shift+Right resize grow width 50 px or 50 ppt
Shift+Up resize grow height 50 px or 50 ppt
Shift+Left resize shrink width 50 px or 50 ppt
Shift+Down resize shrink height 50 px or 50 ppt
$flag+h move left
$flag+j move down
$flag+k move up
$flag+l move right
$flag+Left move left
$flag+Down move down
$flag+Up move up
$flag+Right move right
Return mode "default"
Escape mode "default"
$flag+r mode "default"
}
# System actions
set $mode_system System (l)ock, (s)leep, (h)ibernate, (r)eboot, (Shift+s)hutdown
bindsym Control+$alt+Delete mode "$mode_system"
mode "$mode_system" bindsym {
l exec swaylock, mode "default"
s exec systemctl suspend, mode "default"
h exec systemctl hibernate, mode "default"
r exec systemctl reboot, mode "default"
Shift+s exec systemctl poweroff -i, mode "default"
Return mode "default"
Escape mode "default"
Control+$alt+Delete mode "default"
}
# Screenshots
set $mode_screenshot Screenshot of (a)rea, current (w)indow, (s)creen - Shift to save
set $save_format ~/Pictures/Screenshots/$(date +%F-%H-%M-%S).png
bindsym Print mode "$mode_screenshot"
mode "$mode_screenshot" bindsym {
a exec grimshot copy area, mode "default"
w exec grimshot --notify copy active, mode "default"
s exec grimshot --notify copy screen, mode "default"
Print exec grimshot --notify save screen $save_format mode "default" # Super fast screens!
Shift+a exec grimshot --notify save area $save_format, mode "default"
Shift+w exec grimshot --notify save active $save_format, mode "default"
Shift+s exec grimshot --notify save screen $save_format, mode "default"
Return mode "default"
Escape mode "default"
}
# Some preferences
set $mode_preferences Toggle (s)unset, (n)otifications, (f)ocus
bindsym $alt+end mode "$mode_preferences"
mode "$mode_preferences" bindsym {
s exec "~/.scripts/wlsunset.sh", mode "default"
n exec "~/.scripts/dnd.sh", mode "default"
f exec "~/.scripts/focus.sh", mode "default"
Return mode "default"
Escape mode "default"
$alt+end mode "default"
}

View file

@ -1,27 +0,0 @@
#
# ~/.config/sway/style
# Styling for sway
#
# Decrease the height of the window bar thing.
font pango:monospace 1
bar {
swaybar_command /usr/bin/waybar
mode hide
}
default_border pixel 1
default_floating_border normal 1
hide_edge_borders both
smart_borders on
# Mimic no titles
# border backgr. text indic. child_border
client.focused #000000 #00897b #00897b #00897b #000000
client.focused_inactive #000000 #222222 #222222 #222222 #000000
client.unfocused #000000 #222222 #222222 #222222 #000000
client.urgent #ff0000 #ff0000 #ff0000 #ff0000 #ff0000
exec gsettings set org.gnome.desktop.interface icon-theme 'IcoSystem'
exec gsettings set org.gnome.desktop.interface gtk-theme 'Nordic'

View file

@ -1,110 +0,0 @@
{ config, pkgs, lib, ... }:
let
# bash script to let dbus know about important env variables and
# propagate them to relevent services run at the end of sway config
# see
# https://github.com/emersion/xdg-desktop-portal-wlr/wiki/"It-doesn't-work"-Troubleshooting-Checklist
# note: this is pretty much the same as /etc/sway/config.d/nixos.conf but also restarts
# some user services to make sure they have the correct environment variables
dbus-sway-environment = pkgs.writeTextFile {
name = "dbus-sway-environment";
destination = "/bin/dbus-sway-environment";
executable = true;
text = ''
dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP=sway
systemctl --user stop pipewire pipewire-media-session xdg-desktop-portal xdg-desktop-portal-wlr
systemctl --user start pipewire pipewire-media-session xdg-desktop-portal xdg-desktop-portal-wlr
'';
};
# currently, there is some friction between sway and gtk:
# https://github.com/swaywm/sway/wiki/GTK-3-settings-on-Wayland
# the suggested way to set gtk settings is with gsettings
# for gsettings to work, we need to tell it where the schemas are
# using the XDG_DATA_DIR environment variable
# run at the end of sway config
configure-gtk = pkgs.writeTextFile {
name = "configure-gtk";
destination = "/bin/configure-gtk";
executable = true;
text = let
schema = pkgs.gsettings-desktop-schemas;
datadir = "${schema}/share/gsettings-schemas/${schema.name}";
in ''
export XDG_DATA_DIRS=${datadir}:$XDG_DATA_DIRS
gnome_schema=org.gnome.desktop.interface
gsettings set $gnome_schema gtk-theme 'Dracula'
'';
};
in
{
services.xserver = {
enable = true;
displayManager.lightdm.enable = true;
excludePackages = with pkgs; [
xterm
];
};
security.polkit.enable = true;
services.pipewire = {
enable = true;
alsa.enable = true;
pulse.enable = true;
};
services.dbus.enable = true;
xdg.portal = {
enable = true;
wlr.enable = true;
extraPortals = [ pkgs.xdg-desktop-portal-gtk ];
};
programs.sway = {
enable = true;
wrapperFeatures.gtk = true;
};
home-manager.users.tdpeuter = { pkgs, ... }: {
home = {
username = "tdpeuter";
homeDirectory = "/home/tdpeuter";
file = {
".config/sway".source = ../../../../stow/sway/.config/sway;
".config/waybar".source = ../../../../stow/waybar/.config/waybar;
".config/dunst".source = ../../../../stow/dunst/.config/dunst;
# TODO Fix scripts, I don't like it this way
".scripts".source = ../../../../stow/_scripts/.scripts;
};
packages = with pkgs; [
brightnessctl
dunst
font-awesome
pamixer
pavucontrol
playerctl
swayidle
swaylock-effects
waybar
wmname
];
# };
#
# wayland.windowManager.sway = {
# enable = true;
# package = pkgs.sway-unwrapped;
# config = rec {
# terminal = "alacritty";
# startup = [
# {command = "alacritty";}
# ];
# };
};
};
}

View file

@ -3,6 +3,7 @@
./desktop ./desktop
./hardware ./hardware
./networking ./networking
./nix
./programs ./programs
./services ./services
./virtualisation ./virtualisation

View file

@ -1,5 +1,7 @@
{ {
imports = [ imports = [
./gnome ./gnome
./plasma
./sway
]; ];
} }

View file

@ -0,0 +1,128 @@
{ config, lib, pkgs, ... }:
let
cfg = config.sisyphus.desktop.sway;
# bash script to let dbus know about important env variables and
# propagate them to relevent services run at the end of sway config
# see
# https://github.com/emersion/xdg-desktop-portal-wlr/wiki/"It-doesn't-work"-Troubleshooting-Checklist
# note: this is pretty much the same as /etc/sway/config.d/nixos.conf but also restarts
# some user services to make sure they have the correct environment variables
dbus-sway-environment = pkgs.writeTextFile {
name = "dbus-sway-environment";
destination = "/bin/dbus-sway-environment";
executable = true;
text = ''
dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP=sway
systemctl --user stop pipewire pipewire-media-session xdg-desktop-portal xdg-desktop-portal-wlr
systemctl --user start pipewire pipewire-media-session xdg-desktop-portal xdg-desktop-portal-wlr
'';
};
# currently, there is some friction between sway and gtk:
# https://github.com/swaywm/sway/wiki/GTK-3-settings-on-Wayland
# the suggested way to set gtk settings is with gsettings
# for gsettings to work, we need to tell it where the schemas are
# using the XDG_DATA_DIR environment variable
# run at the end of sway config
configure-gtk = pkgs.writeTextFile {
name = "configure-gtk";
destination = "/bin/configure-gtk";
executable = true;
text = let
schema = pkgs.gsettings-desktop-schemas;
datadir = "${schema}/share/gsettings-schemas/${schema.name}";
in ''
export XDG_DATA_DIRS=${datadir}:$XDG_DATA_DIRS
gnome_schema=org.gnome.desktop.interface
# gsettings set $gnome_schema gtk-theme 'Dracula'
'';
};
in {
options.sisyphus.desktop.sway.enable = lib.mkEnableOption "Sway";
config = lib.mkIf cfg.enable {
environment.systemPackages = (with pkgs; [
dbus-sway-environment
configure-gtk
wayland
xdg-utils # Open with default program
glib # gsettings
wl-clipboard
wdisplays # Tool to configure displays
brightnessctl
dunst
libnotify
playerctl
swaybg
swaylock-effects
waybar
wlsunset
# TODO Turn into own module/package?
jq
j4-dmenu-desktop
rofi
]) ++ (with pkgs.sway-contrib; [
grimshot
]);
environment.sessionVariables = {
SCRIPT_DIR = ../../../../scripts;
};
fonts.fonts = with pkgs; [
dejavu_fonts
font-awesome
noto-fonts
noto-fonts-cjk
noto-fonts-emoji
source-han-sans
source-han-sans-japanese
source-han-serif-japanese
];
security.polkit.enable = true;
services = {
atd.enable = true; # Required by sunset.sh
dbus.enable = true;
gnome.gnome-keyring.enable = true;
pipewire = {
enable = true;
alsa.enable = true;
pulse.enable = true;
};
power-profiles-daemon.enable = true;
xserver.displayManager.session = [{
manage = "window";
name = "Sway";
start = ''
${pkgs.sway}/bin/sway --unsupported-gpu &
waitPID=$!
'';
}];
};
xdg.portal = {
enable = true;
wlr.enable = true;
extraPortals = [ pkgs.xdg-desktop-portal-gtk ];
};
programs.sway = {
enable = true;
wrapperFeatures.gtk = true;
};
sisyphus.users.wantedGroups = [
config.users.groups.video.name # Brightnessctl
];
};
}

View file

@ -45,7 +45,7 @@ in {
]; ];
sisyphus = { sisyphus = {
desktop.gnome.enable = true; desktop.sway.enable = true;
programs.spotify-adblock.enable = true; programs.spotify-adblock.enable = true;
}; };

View file

@ -44,6 +44,18 @@ in {
source = ../../../stow/openrgb/.config/OpenRGB; source = ../../../stow/openrgb/.config/OpenRGB;
recursive = true; recursive = true;
}; };
".config/sway" = {
enable = config.sisyphus.desktop.sway.enable;
source = ../../../stow/sway/.config/sway;
};
".config/swayidle" = {
enable = (builtins.elem pkgs.swayidle installedPkgs);
source = ../../../stow/swayidle/.config/swayidle;
};
".config/swaylock" = {
enable = config.sisyphus.desktop.sway.enable;
source = ../../../stow/swaylock/.config/swaylock;
};
".config/vifm" = { ".config/vifm" = {
enable = (builtins.elem pkgs.vifm installedPkgs); enable = (builtins.elem pkgs.vifm installedPkgs);
source = ../../../stow/vifm/.config/vifm; source = ../../../stow/vifm/.config/vifm;

View file

@ -0,0 +1,61 @@
#
# ~/.config/sway/config
#
# Variables
set {
$alt Mod1
$flag Mod4
$left h
$down j
$up k
$right l
$scrollUp button4
$scrollDown button5
$term kitty || alacritty || foot
$menu j4-dmenu-desktop --dmenu "rofi -dmenu -i"
$window_switcher /home/tdpeuter/projects/fzf-jump/new.sh
$lock swaylock -f
}
include {
input-output
keybinds
modes
style
}
# Focus
focus_follows_mouse no
floating_modifier $flag normal
# Window rules
for_window {
[window_role="About"] floating enable
[window_role="bubble"] floating enable
[window_role="Organizer"] floating enable
[window_role="page-info"] floating enable
[window_role="pop-up"] floating enable
[window_role="Preferences"] floating enable
[window_role="splash"] floating enable
[window_role="task_dialog"] floating enable
[window_role="task_dialog"] floating enable
[window_role="toolbox"] floating enable
[window_role="webconsole"] floating enable
[window_type="dialog"] floating enable
[window_type="menu"] floating enable
}
exec dbus-sway-environment
exec configure-gtk
exec dbus-update-activation-environment --systemd DISPLAY XAUTHORITY WAYLAND_DISPLAY SWAYSOCK XDG_CURRENT_DESKTOP=sway
exec wlsunset -l 50.50 -L 4.00 -t 3000 -T 6500
exec gnome-keyring-daemon --start --components=secrets # Secrets
exec dunst --verbosity crit # Notification manager
exec swayidle -w
exec nextcloud --background

View file

@ -0,0 +1,11 @@
input type:touchpad {
natural_scroll enabled
scroll_factor 0.8
middle_emulation enabled
tap enabled
}
output * {
bg "~/Nextcloud/Afbeeldingen/wallpapers/bg" fill
}

View file

@ -0,0 +1,195 @@
set $notify ~/projects/sisyphus/scripts/notify.sh
# Focus
bindsym {
$flag+$up focus up
$flag+$right focus right
$flag+$down focus down
$flag+$left focus left
$flag+Up focus up
$flag+Right focus right
$flag+Down focus down
$flag+Left focus left
$flag+p focus parent
$flag+space focus mode_toggle
}
# Move windows
bindsym {
$flag+Shift+$up move up
$flag+Shift+$right move right
$flag+Shift+$down move down
$flag+Shift+$left move left
$flag+Shift+Up move up
$flag+Shift+Right move right
$flag+Shift+Down move down
$flag+Shift+Left move left
$flag+Next move scratchpad
$flag+KP_Next move scratchpad
$flag+Prior scratchpad show
$flag+KP_Prior scratchpad show
}
# Layouts
bindsym {
$flag+z layout toggle split
$flag+x layout tabbed
$flag+c split h
$flag+v split v
$flag+f floating enable, border normal 1
$flag+Shift+f floating disable, border pixel 1
$flag+s sticky toggle
$flag+F11 fullscreen
$alt+Next border pixel 1 # Show window title
$alt+KP_Next border pixel 1
$alt+Prior border normal 1 # Hide window title
$alt+KP_Prior border normal 1
}
# Workspaces
set {
$ws1 "1:1"
$ws2 "2:2"
$ws3 "3:3"
$ws4 "4:4"
$ws5 "5:5"
$ws6 "6:6"
$ws7 "7:7"
$ws8 "8:8"
$ws9 "9:9"
$ws10 "10:10"
$ws11 "11:Soc"
$ws12 "12:Ent"
}
bindsym {
$flag+1 workspace $ws1
$flag+2 workspace $ws2
$flag+3 workspace $ws3
$flag+4 workspace $ws4
$flag+5 workspace $ws5
$flag+6 workspace $ws6
$flag+7 workspace $ws7
$flag+8 workspace $ws8
$flag+9 workspace $ws9
$flag+0 workspace $ws10
$flag+minus workspace $ws11
$flag+equal workspace $ws12
$flag+Shift+1 move container to workspace $ws1, workspace $ws1
$flag+Shift+2 move container to workspace $ws2, workspace $ws2
$flag+Shift+3 move container to workspace $ws3, workspace $ws3
$flag+Shift+4 move container to workspace $ws4, workspace $ws4
$flag+Shift+5 move container to workspace $ws5, workspace $ws5
$flag+Shift+6 move container to workspace $ws6, workspace $ws6
$flag+Shift+7 move container to workspace $ws7, workspace $ws7
$flag+Shift+8 move container to workspace $ws8, workspace $ws8
$flag+Shift+9 move container to workspace $ws9, workspace $ws9
$flag+Shift+0 move container to workspace $ws10, workspace $ws10
$flag+Shift+minus move container to workspace $ws11, workspace $ws11
$flag+Shift+equal move container to workspace $ws12, workspace $ws12
$flag+Control+$left workspace prev_on_output
$flag+Control+$right workspace next_on_output
$flag+Control+Left workspace prev_on_output
$flag+Control+Right workspace next_on_output
--whole-window $flag+$scrollUp workspace prev_on_output
--whole-window $flag+$scrollDown workspace next_on_output
$flag+Control+Shift+$left move container to workspace prev_on_output, workspace prev_on_output
$flag+Control+Shift+$right move container to workspace next_on_output, workspace next_on_output
$flag+Control+Shift+Left move container to workspace prev_on_output, workspace prev_on_output
$flag+Control+Shift+Right move container to workspace next_on_output, workspace next_on_output
}
bindgesture {
swipe:3:right workspace prev_on_output
swipe:3:left workspace next_on_output
}
# Outputs
bindsym {
$flag+Control+$up focus output up
$flag+Control+$down focus output down
$flag+Control+Up focus output up
$flag+Control+Down focus output down
$flag+Control+Shift+$up move container to output up, focus output up
$flag+Control+Shift+$down move container to output down, focus output down
$flag+Control+Shift+Up move container to output up, focus output up
$flag+Control+Shift+Down move container to output down, focus output down
}
# System
bindsym --locked {
# Brightness
XF86MonBrightnessDown exec brightnessctl -e s 5%- && $notify -b
XF86MonBrightnessUp exec brightnessctl -e s +5% && $notify -b
# Audio
XF86AudioRaiseVolume exec wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 2%+ && $notify -v
XF86AudioLowerVolume exec wpctl set-volume @DEFAULT_AUDIO_SINK@ 2%- && $notify -v
XF86AudioMute exec wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle && $notify -v
XF86AudioMicMute exec wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle
# Media
XF86AudioPlay exec playerctl play-pause
XF86AudioPrev exec playerctl previous
XF86AudioNext exec playerctl next
Shift+XF86AudioMute exec playerctl play-pause
Shift+XF86AudioLowerVolume exec playerctl previous
Shift+XF86AudioRaiseVolume exec playerctl next
# Other special keys
XF86Calculator exec qalculate-gtk
}
bindgesture hold:3 exec playerctl play-pause
# Shortcuts
bindsym {
# Reload sway
$alt+Shift+r reload
# Dialog to exit sway
$alt+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'
# Kill focused window
$flag+q kill
# Start a terminal
$flag+Return exec $term
$alt+space exec $menu
$alt+Tab focus prev
$flag+Tab exec $window_switcher
# Lock the screen
$flag+Delete exec $lock
# File explorer
$flag+e exec $term -e vifm
# Internet browser
$flag+i exec firefox
}
bindgesture {
swipe:3:up exec $window_switcher
swipe:4:up exec $menu
# Cancel
swipe:down exec pkill rofi
}

View file

@ -0,0 +1,88 @@
#
# ~/.config/sway/modes
#
set $default "default"
# Resizing
set $resize "Resize"
bindsym $flag+r mode $resize
mode $resize bindsym {
$right resize grow width 10 px or 10 ppt
$up resize grow height 10 px or 10 ppt
$left resize shrink width 10 px or 10 ppt
$down resize shrink height 10 px or 10 ppt
Right resize grow width 10 px or 10 ppt
Up resize grow height 10 px or 10 ppt
Left resize shrink width 10 px or 10 ppt
Down resize shrink height 10 px or 10 ppt
Shift+$right resize grow width 50 px or 50 ppt
Shift+$up resize grow height 50 px or 50 ppt
Shift+$left resize shrink width 50 px or 50 ppt
Shift+$down resize shrink height 50 px or 50 ppt
Shift+Right resize grow width 50 px or 50 ppt
Shift+Up resize grow height 50 px or 50 ppt
Shift+Left resize shrink width 50 px or 50 ppt
Shift+Down resize shrink height 50 px or 50 ppt
$flag+$right move right
$flag+$up move up
$flag+$left move left
$flag+$down move down
$flag+Right move right
$flag+Up move up
$flag+Left move left
$flag+Down move down
Return mode $default
Escape mode $default
$flag+r mode $default
}
# System actions
set $mode_system "System (l)ock, (s)leep, (h)ibernate, (r)eboot, (Shift+s)hutdown"
bindsym Control+$alt+Delete mode $mode_system
mode $mode_system bindsym {
l mode $default, exec $lock
s mode $default, exec $lock, exec systemctl suspend
h mode $default, exec $lock, exec systemctl hibernate
r mode $default, exec systemctl reboot
Shift+s mode $default, exec systemctl poweroff -i
Return mode $default
Escape mode $default
Control+$alt+Delete mode $default
}
# Screenshots
set $mode_screenshot "Screenshot of (a)rea, current (w)indow, (s)creen - Shift to save"
set $save_format ~/Nextcloud/Afbeeldingen/Screenshots/$(date +%F-%H-%M-%S).png
bindsym Print mode $mode_screenshot
mode $mode_screenshot bindsym {
a exec grimshot copy area, mode $default
w exec grimshot --notify copy active, mode $default
s exec grimshot --notify copy screen, mode $default
Shift+a exec grimshot --notify save area $save_format, mode $default
Shift+w exec grimshot --notify save active $save_format, mode $default
Shift+s exec grimshot --notify save screen $save_format, mode $default
Print exec grimshot --notify save screen $save_format, mode $default
Return mode $default
Escape mode $default
}
set $mode_preferences "Toggle (d)ark mode, (s)unset, (n)otification"
bindsym $alt+end mode $mode_preferences {
d exec "${SCRIPT_DIR}/toggle-light-dark.sh", mode $default
s exec "${SCRIPT_DIR}/sunset.sh", mode $default
n exec "${SCRIPT_DIR}/do-not-disturb.sh", mode $default
Return mode $default
Escape mode $default
$alt+end mode $default
}

View file

@ -0,0 +1,31 @@
#
# ~/.config/sway/style
# Styling for sway
#
# Decrease the height of the window title bar.
font pango:monospace 0.1
bar {
swaybar_command waybar
mode hide
}
default_border pixel 1
default_floating_border normal 1
hide_edge_borders smart
smart_borders on
# Mimic no titles by setting the text color to background color
# border backgr. text indic. child_border
client.focused #00897b #00897b #00897b #00897b #00897b
client.focused_inactive #a6a6a6 #a6a6a6 #a6a6a6 #a6a6a6 #a6a6a6
client.unfocused #a6a6a6 #a6a6a6 #a6a6a6 #a6a6a6 #a6a6a6
client.urgent #ff0000 #ff0000 #ff0000 #ff0000 #ff0000
# Configure GTK
exec gsettings set org.gnome.desktop.interface icon-theme 'IcoSystem'
exec gsettings set org.gnome.desktop.interface cursor-theme 'phinger-cursor'
exec gsettings set org.gnome.desktop.interface gtk-theme 'Nordic'
seat seat0 xcursor_theme phinger-cursors 24