mirror of
https://github.com/swaywm/sway.git
synced 2024-12-01 02:49:26 +00:00
Destroyed Fully functional sway desktop with optional GNOME integration under Debian Ubuntu (markdown)
parent
6b66651568
commit
ff580e5baf
|
@ -1,224 +0,0 @@
|
||||||
## Introduction
|
|
||||||
|
|
||||||
**Note**: These instructions are community maintained and are not supported by sway.
|
|
||||||
|
|
||||||
This page is intended to help you set up a fully-functional sway desktop environment integrated with GNOME under Debian 10/Ubuntu. Features that will be covered:
|
|
||||||
|
|
||||||
- Manual and automatic screen locking using `swayidle` and `swaylock`
|
|
||||||
- Working notifications with `mako`.
|
|
||||||
- Nice application launcher and exit menu using `fzf` and `kitty`
|
|
||||||
- Taking of screenshots, optionally selecting a region, using `grim` and `slurp`
|
|
||||||
- Volume control with multimedia keys
|
|
||||||
- Laptop screen brightness adjustment using `brightnessctl` and bound to keyboard keys
|
|
||||||
- Nice status bar using `Waybar`
|
|
||||||
- GNOME integration, so that you can run GNOME apps and use GNOME settings to manage the network.
|
|
||||||
|
|
||||||
These instruction were tested under Debian 10 (Buster), but should also work under Ubuntu with minimal modifications.
|
|
||||||
|
|
||||||
## Sway
|
|
||||||
|
|
||||||
To do a basic install of sway under Debian 10, follow the instructions on the page [Debian-10-(Buster)-Installation](./Debian-10-(Buster)-Installation). They should also work with minimal modifications under Ubuntu.
|
|
||||||
|
|
||||||
Then make a local copy of the default configuration, in order to customize it:
|
|
||||||
|
|
||||||
```
|
|
||||||
mkdir ~/.config/sway
|
|
||||||
cp /usr/local/etc/sway/config ~/.config/sway/config
|
|
||||||
```
|
|
||||||
|
|
||||||
## Screen locking
|
|
||||||
|
|
||||||
To configure manual and automatic screen locking, we'll be using Sway's own swaylock and swayidle. Install then both from source:
|
|
||||||
|
|
||||||
```
|
|
||||||
sudo apt install libpam0g-dev
|
|
||||||
|
|
||||||
# swaylock
|
|
||||||
cd ~/sway-src
|
|
||||||
git clone https://github.com/swaywm/swaylock.git
|
|
||||||
cd swaylock
|
|
||||||
git checkout 1.4
|
|
||||||
meson build
|
|
||||||
sudo ninja -C build install
|
|
||||||
|
|
||||||
# swayidle
|
|
||||||
cd ~/sway-src
|
|
||||||
git clone https://github.com/swaywm/swayidle.git
|
|
||||||
cd swayidle
|
|
||||||
git checkout 1.5
|
|
||||||
meson build
|
|
||||||
sudo ninja -C build install
|
|
||||||
```
|
|
||||||
|
|
||||||
Now edit `~/.config/sway/config` and add the following example settings to start swayidle with Sway, and so enable auto locking and monitor poweroff:
|
|
||||||
|
|
||||||
```
|
|
||||||
exec swayidle -w \
|
|
||||||
timeout 600 'swaylock -f -c 000000' \
|
|
||||||
timeout 300 'swaymsg "output * dpms off"' \
|
|
||||||
resume 'swaymsg "output * dpms on"' \
|
|
||||||
before-sleep 'swaylock -f -c 000000'
|
|
||||||
```
|
|
||||||
|
|
||||||
I find it easier to put it right after the `Variables` section. The arguments are quite self-explanatory.
|
|
||||||
|
|
||||||
You can also set a key combination to trigger a screen lock, like for example by adding this line to sway's config:
|
|
||||||
|
|
||||||
```
|
|
||||||
bindsym $mod+Shift+Alt+l exec swaylock -c 000000
|
|
||||||
```
|
|
||||||
|
|
||||||
## Notifications with mako
|
|
||||||
|
|
||||||
Mako is a lightweight Wayland notification daemon. Let's install it from source:
|
|
||||||
|
|
||||||
```
|
|
||||||
cd ~/sway-src
|
|
||||||
git clone https://github.com/emersion/mako.git
|
|
||||||
cd mako
|
|
||||||
git checkout v1.4
|
|
||||||
meson build
|
|
||||||
sudo ninja -C build install
|
|
||||||
```
|
|
||||||
|
|
||||||
If you want to customize mako:
|
|
||||||
|
|
||||||
```
|
|
||||||
mkdir ~/.config/mako
|
|
||||||
editor ~/.config/mako/config # or open with your gui editor
|
|
||||||
```
|
|
||||||
|
|
||||||
Here is an example configuration:
|
|
||||||
```
|
|
||||||
anchor=bottom-right
|
|
||||||
border-radius=5
|
|
||||||
default-timeout=10000
|
|
||||||
height=500
|
|
||||||
width=400
|
|
||||||
```
|
|
||||||
|
|
||||||
Now edit `~/.config/sway/config` and add the line `exec mako` somewhere, to start mako with sway.
|
|
||||||
|
|
||||||
## Application launcher and exit menu
|
|
||||||
|
|
||||||
We'll improvise an application launcher using `fzf` and the terminal emulator `kitty`, it'll look like this:
|
|
||||||
|
|
||||||
![](https://davidrios.github.io/configs/kitty-fzf-launcher.png)
|
|
||||||
|
|
||||||
We need the newest version of kitty for proper wayland support, so we'll install the binary release from their GitHub repository. Install them:
|
|
||||||
|
|
||||||
```
|
|
||||||
sudo apt install fzf curl xz-utils suckless-tools
|
|
||||||
sudo mkdir /opt/kitty
|
|
||||||
curl -L https://github.com/kovidgoyal/kitty/releases/download/v0.14.4/kitty-0.14.4-x86_64.txz | sudo tar xvJ -C /opt/kitty
|
|
||||||
sudo ln -s /opt/kitty/bin/kitty /usr/local/bin
|
|
||||||
```
|
|
||||||
|
|
||||||
Now configure a profile for the kitty+fzf launcher:
|
|
||||||
|
|
||||||
```
|
|
||||||
mkdir -p ~/.config/kitty
|
|
||||||
cat <<EOF >~/.config/kitty/fzf-launcher.config
|
|
||||||
font_family DejaVu Sans Mono
|
|
||||||
font_size 20
|
|
||||||
enable_audio_bell no
|
|
||||||
remember_window_size no
|
|
||||||
initial_window_width 50c
|
|
||||||
initial_window_height 10c
|
|
||||||
background_opacity 0.85
|
|
||||||
EOF
|
|
||||||
```
|
|
||||||
|
|
||||||
Then edit `~/.config/sway/config` and replace the line `set $menu dmenu_path | dmenu | xargs swaymsg exec --` with the following:
|
|
||||||
|
|
||||||
```
|
|
||||||
set $fzf_launcher kitty --config \"$HOME/.config/kitty/fzf-launcher.config\" --class fzf-launcher --detach
|
|
||||||
set $menu $fzf_launcher sh -c \"dmenu_path | fzf | xargs -r swaymsg exec\"
|
|
||||||
for_window [app_id="fzf-launcher"] focus, floating enabled, border pixel 1
|
|
||||||
```
|
|
||||||
|
|
||||||
This will setup a basic menu launcher that can be summoned with the default `$meta+d` key combination.
|
|
||||||
|
|
||||||
|
|
||||||
### Exit menu
|
|
||||||
|
|
||||||
This is how the exit menu will look:
|
|
||||||
|
|
||||||
![](https://davidrios.github.io/configs/kitty-fzf-exit-menu.png)
|
|
||||||
|
|
||||||
We'll use this simple script: <https://gist.github.com/davidrios/41d72ef3f97104400c353bab3b1b89ab>, like so:
|
|
||||||
|
|
||||||
```
|
|
||||||
cd /tmp
|
|
||||||
curl -L https://gist.githubusercontent.com/davidrios/41d72ef3f97104400c353bab3b1b89ab/raw/a305a9ef3e44bac370de5165eaabaf3ce53e207b/sway-exit | tee sway-exit
|
|
||||||
sudo cp sway-exit /usr/local/bin/
|
|
||||||
sudo chmod +x /usr/local/bin/sway-exit
|
|
||||||
```
|
|
||||||
|
|
||||||
Then edit `~/.config/sway/config` and replace the line:
|
|
||||||
```
|
|
||||||
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'
|
|
||||||
```
|
|
||||||
with:
|
|
||||||
```
|
|
||||||
bindsym $mod+Shift+e exec $fzf_launcher /usr/local/bin/sway-exit
|
|
||||||
```
|
|
||||||
|
|
||||||
Now the default `$mod+Shift+e` key combination will show a nice exit menu with Logout, Sleep, Reboot and Shutdown options.
|
|
||||||
|
|
||||||
|
|
||||||
## Taking screenshots
|
|
||||||
|
|
||||||
For this we'll use [grim](https://github.com/emersion/grim) and [slurp](https://github.com/emersion/slurp). Let's install them first:
|
|
||||||
|
|
||||||
```
|
|
||||||
sudo apt install libjpeg-dev
|
|
||||||
|
|
||||||
cd ~/sway-src
|
|
||||||
git clone https://github.com/emersion/grim.git
|
|
||||||
cd grim
|
|
||||||
git checkout v1.2.0
|
|
||||||
meson build
|
|
||||||
sudo ninja -C build install
|
|
||||||
|
|
||||||
cd ~/sway-src
|
|
||||||
git clone https://github.com/emersion/slurp.git
|
|
||||||
cd slurp
|
|
||||||
git checkout v1.2.0
|
|
||||||
meson build
|
|
||||||
sudo ninja -C build install
|
|
||||||
```
|
|
||||||
|
|
||||||
Now to set sway key bindings. In the example below, the `PrtScn` key save a screenshot of the whole desktop and `Alt+PrtScn` lets you select a region to capture. Add them to the sway config:
|
|
||||||
|
|
||||||
```
|
|
||||||
set $screenshot_file \"$HOME/Pictures/screenshot-$(date '+%Y-%m-%d_%H-%M-%S').png\"
|
|
||||||
bindsym Print exec grim -s1 $screenshot_file
|
|
||||||
bindsym Alt+Print exec (slurp | grim -g- -s1 $screenshot_file)
|
|
||||||
```
|
|
||||||
|
|
||||||
## Volume control with multimedia keys
|
|
||||||
|
|
||||||
Put these keybindings on your Sway config file:
|
|
||||||
|
|
||||||
```
|
|
||||||
bindsym XF86AudioRaiseVolume exec pactl set-sink-volume @DEFAULT_SINK@ $(printf "%s\n" 100 $(($(pacmd dump-volumes | grep -m1 Sink | grep -Po '\d+(?=%)' | head -n1) + 3)) | sort -g | head -n1)%
|
|
||||||
bindsym XF86AudioLowerVolume exec pactl set-sink-volume @DEFAULT_SINK@ -3%
|
|
||||||
bindsym XF86AudioMute exec pactl set-sink-mute @DEFAULT_SINK@ toggle
|
|
||||||
bindsym XF86AudioMicMute exec pactl set-source-mute @DEFAULT_SOURCE@ toggle
|
|
||||||
```
|
|
||||||
|
|
||||||
|
|
||||||
## Screen brightness adjustment
|
|
||||||
|
|
||||||
Install brightnessctl:
|
|
||||||
```
|
|
||||||
sudo apt install brightnessctl
|
|
||||||
```
|
|
||||||
|
|
||||||
And put these keybindings on your Sway config file:
|
|
||||||
|
|
||||||
```
|
|
||||||
bindsym XF86MonBrightnessDown exec brightnessctl set 5%-
|
|
||||||
bindsym XF86MonBrightnessUp exec brightnessctl set +5%
|
|
||||||
```
|
|
Loading…
Reference in a new issue