I'm hoping to get a MNT Pocket Reform at some point and I heard that it comes with Sway as the default window manager. No problem, I can get into that. Years ago I was a fan of ratpoison and i3. Today, I'm trying to use sway. I think my biggest problem right now is that the pipe/backslash key works like a < and > key. How weird is that. Maybe some weird key binding that is coming back to haunt me.
In order to get started, I copied `/etc/sway/config` to `~/.config/sway/config` and started making some changes.
Scrolling with the touch pad was weird. Somehow inverted! The answer was to have `natural_scroll enabled` for the touchpad input. This didn't always work. And the scroll wheel was different than the touchpad. So right now I'm using the following:
input * { dwt enabled tap enabled middle_emulation disabled xkb_layout us xkb_variant altgr-intl xkb_options compose:caps } input type:touchpad { natural_scroll enabled }
This also makes Caps Lock the Compose Key again.
Getting the less key instead of the backslash key remained a problem. There are so many variants in `/usr/share/X11/xkb/symbols/us`. After a while I realised that I needed a variant with LSGT (less/greater) being mapped to `backslash` and `bar`, like this:
key <LSGT> { [ backslash, bar ] };
The options I had seemed to be: `euro`, `ibm2381`, `intl`, and so on. But also anything that contained dead keys was no good:
key <TLDE> { [dead_grave, dead_tilde, grave, asciitilde ] };
In these variants, I have to type every back-quote, single-quote, double-quote and circumflex twice. @bkhl@social.sdfeu.org pointed me to `altgr-intl`. Thanks!
Now I'm wondering about suspending the laptop. With Gnome, I'd hit the GUI key and type "suspend", Enter, done. But there is no "suspend" command. I ended up installing `wlogout` which gives me huge buttons to lock, logout, suspend, hibernate, shutdown and reboot. But, surprisingly, when it suspends, and it comes back, no password is required. That's weird!
I installed `cryptsetup-suspend` which adds something the old setup did not have: returning from a suspend now asks for the disk decryption password but still does not ask for the account password. Well, on a single user system like mine, one of the two is good enough, I guess. But still. And then the other time I tried it (by running wlogout and choosing "suspend") the system would go to sleep and I couldn't find a way to get it back. And when I reset it, it wiped my keyboard's config?? I don't quite understand but I hate all of it. I uninstalled it again.
β#Administration β#Sway β#Window Manager
Time has passed and today I added keybindings for lowering and raising the volume.
bindsym XF86AudioLowerVolume exec amixer set Master '10%-' bindsym XF86AudioRaiseVolume exec amixer set Master '10%+'
So proud of myself. π
As for playback from the command-line, right now I'm using `mpv`:
mpv "https://somafm.com/secretagent.pls"
OK, time for fiddling with stuff. Every minute, the script called to produce the status bar.
bar { position top status_command while ~/.config/sway/status.fish; do sleep 60; done colors { statusline #ffffff background #323232 inactive_workspace #32323200 #32323200 #5c5c5c } }
The script prints something like this:
Bandu 65% π‘ 100% π fully-chargedπ 2023-10-31 15:40
This is the code. As you can see it calls `awk`, `perl` and tons of other stuff. Yikes!
#!/usr/bin/fish # The Sway configuration file in ~/.config/sway/config calls this script. # You should see changes to the status bar after saving this script. # If not, do "killall swaybar" and $mod+Shift+c to reload the configuration. set date (date +'%Y-%m-%d %R') set battery (upower --show-info (upower --enumerate | grep 'BAT') | perl -e ' use utf8; binmode(STDOUT,":utf8"); while (<>) { if (/state:\s*(.*)/) { print $1; } elsif (/percentage:\s*([0-9]+)/) { print $1 > 20 ? "π" : "πͺ«"; } }') # "amixer -M" gets the mapped volume for evaluating the percentage # which is more natural to the human ear according to "man amixer". # The current volume percentage comes in brackets, e.g., "[36%]" # followed by "[off]" or "[on]" depending on whether sound is muted or # not. "tr -d []" removes brackets around the volume. I'm looking at # "Front Left:" because of how amixer reports volumes on my laptop. set audio_volume (amixer -M get Master |\ awk '/Front Left:/ {print $6=="[off]" ?\ $5" π": \ $5=="[100%]" ? \ $5" π": \ $5" π"}' |\ tr -d []) set wlan (nmcli --get-values name,device,type connection show --active \ | grep wireless \ | string split ':') # $bar = join("", " βββββ βββ", int(9*$1/$2), 1); \ set ssid $wlan[1] set device $wlan[2] set q (/sbin/iwconfig $device | perl -e ' use utf8; binmode(STDOUT,":utf8"); while (<>) { if (/([0-9]+)\/([0-9]+)/) { print int(100*$1/$2) . "% " . substr("π΄π π‘π’π’", int(4*$1/$2), 1); } }') set lan (nmcli --get-values type connection show --active|awk '/ethernet/ { print "π§" }') echo $lan $ssid $q $audio_volume $battery $date
I'm learning quite a bit about controlling my system from the command line. I hadn't known about `nmcli`.
In order for the computer to lock when when idle, install `swayidle` (a separate Debian package). Then the following will have the expected effect:
exec swayidle -w \ timeout 300 'swaylock -f -c 000000' \ timeout 600 'swaymsg "output * dpms off"' resume 'swaymsg "output * dpms on"' \ before-sleep 'swaylock -f -c 000000'
With no more X11, I noticed that `dmenu` no longer worked and I replaced it with `wofi`. The following lets me use GUI+d to start desktop applications and GUI+Shift+d to start binaries on my `$PATH`.
set $desktop-menu wofi --show=drun set $run-menu wofi --show=run --term=foot # Start your launcher bindsym $gui+d exec $desktop-menu bindsym $gui+Shift+d exec $run-menu
I also had to rebuild Emacs using `./configure --with-pgtk` to get a graphical Emacs without X11.
This is going to be interesting.
bindsym $gui+s exec fuzzel bindsym $gui+c exec $term --window-size-chars=80x25 orpie bindsym $gui+d exec evince bindsym $gui+Period exec /home/alex/.local/bin/bemoji -t bindsym $gui+e exec emacsclient --create-frame --alternate-editor=
The config file sets the terminal and gets rid of transparency:
terminal=foot [colors] background=fdf6e3ff text=657b83ff match=cb4b16ff selection=eee8d5ff selection-text=657b83ff border=002b36ff
Removing x11proto-dev is also impossible. So many other dev packages seem to depend on it, I suspect Emacs would no longer work.
Removing x11-utils removes Chromium, the backup browser! Now it really starts to hurt.
I guess X11 is here to stay.
exec swaync bindsym $gui+n exec swaync-client -t -sw
Oh. And Gimp needs X11? "Cannot open display:" β¦ that's bad.
I tried to use another file manager. Something leaner. Like midnight commander? I also looked at `nnn`. I think it uses `xdg-open` to open files.
Here's what's weird. The default application for PDF files is Gimp instead of Evince. I want to change that, but it appears to have no effect.
alex@melanobombus ~> xdg-mime query default application/pdf gimp.desktop alex@melanobombus ~> xdg-mime default Evince.desktop application/pdf alex@melanobombus ~> cat .config/mimeapps.list [Default Applications] application/pdf=Evince.desktop alex@melanobombus ~> xdg-mime query default application/pdf gimp.desktop
In desperation, I uninstalled Gimp. The default was set to Libre Office Draw. I uninstalled that, too. Now the default was correct: `org.gnome.Evince.desktop`. What a headache. I'm sure it can be specified somewhere, but I don't know how.
OK, reinstalled Gimp, same problem. But now:
alex@melanobombus ~> xdg-mime default org.gnome.Evince.desktop application/pdf alex@melanobombus ~> xdg-mime query default application/pdf org.gnome.Evince.desktop
Oh, and installing xwayland, of course, so that I can run Gimp again.
[Settings] gtk-application-prefer-dark-theme=1
Sadly, the above only changes my Firefox theme and doesn't seem to affect this site's CSS. The following has no effect:
@media (prefers-color-scheme: dark) { β¦ }
At the console, the following still returns `false`, disappointingly:
window.matchMedia('(prefers-color-scheme: dark)').matches
It works with Chromium. My Firefox is 115.9.1esr (64-bit). This is unrelated to Sway: The situation is unchanged when I switch to Gnome. I feel like this has worked before?
input * { dwt enabled tap enabled middle_emulation disabled xkb_layout eu # xkb_layout us # xkb_variant altgr-intl xkb_options compose:caps }
The tricky parts:
Strangely, on Windows, more combos are possible but Caps Lock is no Compose Key.