96 lines
3.5 KiB
Markdown
96 lines
3.5 KiB
Markdown
---
|
|
title: "Sway Config"
|
|
date: 2021-05-06T19:23:15-06:00
|
|
tags:
|
|
- sway
|
|
- config
|
|
draft: false
|
|
---
|
|
I had been using [dwm](https://dwm.suckless.org/) for a very long time. The keyboard focused interface and minimal resource usage were very appealing to me. When [swaywm](https://swaywm.org/) reached 1.0 release I gave it a try and was hooked. The only thing I really miss from dwm is the default window layout. Wayland uses less resources than xwindows for some reason and all the configuration is in the sway config or the configs for any apps, there is no Xresources and whatever other crazy amount of configs there were for xwindows and it's stack.
|
|
|
|
Progams that I'm using:
|
|
|
|
- [swaywm](https://swaywm.org/): compositor and window manager
|
|
- [waybar](https://github.com/Alexays/Waybar): bar and tray
|
|
- [mako](https://github.com/emersion/mako): notification daemon, replaces twmn from dwm setup
|
|
- [alacritty](https://github.com/alacritty/alacritty): terminal, switched from termite since it is no longer maintained.
|
|
- [wofi](https://hg.sr.ht/~scoopta/wofi): launcher, replaces dmenu from dwm setup
|
|
|
|
Sway allows for the config to be split between files using `include path/to/file/`. The include directive with parse out things like `$(hostname)` so that a machine specific config can be used as well as a default. I used this to create a seperate display config for my home workstation/laptop and my traveling laptop. One has 3 screens and the other typically only one hiDPI screen. This also works well with my new [dotfiles](https://blog.ewpt3ch.dev/posts/dotfiles) approach. Onto the configuration goodies.
|
|
Set some variables to use in the config
|
|
|
|
```config
|
|
### 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
|
|
set $menu wofi
|
|
# setup grim and slurp for screen shots
|
|
set $screenshot grim ~/Images/screenshots/scrn-$(date +"%Y%m%d-%H%M%S").png
|
|
set $screenclip slurp | grim -g - ~/Images/screenshots/scrn-$(date +"%Y%m%d-%H%M%S").png
|
|
set $mail termite --name=mail
|
|
set $mixer termite --name=mixer
|
|
set $volume /home/ewpt3ch/bin/volumeset
|
|
```
|
|
Setup the input devices:
|
|
|
|
```config
|
|
### Input configuration
|
|
# set capslock to be control
|
|
input * xkb_options ctrl:nocaps
|
|
# need to move this to machine level config
|
|
input "2:7:SynPS/2_Synaptics_TouchPad" {
|
|
accel_profile adaptive
|
|
pointer_accel .5
|
|
dwt enabled
|
|
tap enabled
|
|
tap_button_map lrm
|
|
}
|
|
```
|
|
|
|
Hide the cursor after time or when typing:
|
|
|
|
```config
|
|
# hide mouse cursor¬
|
|
seat seat0 hide_cursor 5000¬
|
|
seat seat0 hide_cursor when-typing enable
|
|
```
|
|
|
|
Some keybindings showing the use of previously set variables
|
|
|
|
```config
|
|
### Key bindings
|
|
#
|
|
# Notifications
|
|
bindsym Control+Space exec makoctl dismiss
|
|
bindsym Control+Shift+Space exec makoctl dismiss --all
|
|
|
|
# Screen capture
|
|
bindsym $mod+Print exec $screenshot
|
|
bindsym $mod+Shift+Print exec $screenclip
|
|
|
|
#media
|
|
bindsym XF86AudioMute exec $volume mute
|
|
bindsym XF86AudioRaiseVolume exec $volume up
|
|
bindsym XF86AudioLowerVolume exec $volume down
|
|
```
|
|
|
|
I got this python script to make [inactive windows transparent](https://github.com/swaywm/sway/blob/master/contrib/inactive-windows-transparency.py), we start it like
|
|
|
|
`exec --no-startup-id python ~/bin/inactive-windows-transparency.py`
|
|
|
|
Then the very last lines of the config bring in a system-wide default that gets updated by pacman and my machine-specific configurations
|
|
|
|
```config
|
|
include /etc/sway/config.d/*
|
|
include ~/.config/sway/$(hostname)/*
|
|
```
|