Status of this document
The desktop portion of this document is mid-conversion (starting early 2026) from a Kubuntu-based system to a Debian/Sway system. Lots of things aren't working yet, and it's not recommended to follow the guide as-is. In particular, the following things aren't working:
-
What's not working on boot and/or login
Several things (mako, mount, other?) may be blocked by not going to graphical-session.target. Fix that first.
System Tray (try dbus-tray? as in here?
Desktop Notifications
Mount encrypted drive automatically. Run mount.sh upon login (if needed), but not upon tmux.
-
Auto-start of i-t_control_panel daemon
start dropbox (working but not sure how)
-
The current approach to startup on boot
All of these things get started by systemd services. Current config, which probably isn't all correct, is:
System boots to
graphicalandmulit-usertargets et al. No customization applied.Upon login?, user boots to basic, default, paths, sockets, and timers. But NOT to sound (pulseaudio and pipewire are in default, so OK I guess), graphical-session-pre, or graphical-session. next thing to try: have graphical-session and graphical-session-pre start when logging in/starting sway?
User systemd services include i-t_control_panel; first_login and mount_encfs, which both do the same thing; dropbox
-
Inconsistent environment variables
2026-06-06 Approach: greetd and wlgreet handle some things; TK on the rest. 2026-06-05 Approach: Set wayland stuff in /etc/environment.d/wayland.conf; set XDG stuff in ~/.config/sway/config.d/xdg-desktop-portal, which is called by sway config. Set PATH in ~/.profile (which therefore requires ~/bin to be permanent, not a symlink to an encrypted dir). Results: … TBD.Once boot stuff is figured out, here are all the environment variables that mostly sorted themselves out in Kubuntu but need more love now
-
exec ~/.config/sway/config.d/xdg-desktop-portalPATH should include ~/bin, ~/.local/bin, ~/.cargo/bin/export PATHexport XDG_DATA_DIRS="/usr/local/share:/usr/share:/var/lib/flatpak/exports/share"export XDG_CONFIG_HOME=/home/s/.config/WAYLAND_DISPLAY= whatever wayland sets it, but make sure it propagatesexport MOZ_ENABLE_WAYLAND=1export XDG_SESSION_TYPE=waylandexport XDG_CURRENT_DESKTOP=swayLet's try setting this in .config/xdg-desktop-portal/portals.conf as per https://whynothugo.nl/journal/2024/04/09/darkman-portal-configuration/ Symptoms of this not being adequately sorted out:
Okular used to work but now hangs
This seems important:
In environments that are assembled out of individual components by the user, it is the user’s responsibility to ensure that this system integration has been done, for example by using dbus-update-activation-environment(1) or systemctl –user import-environment VAR….Source
-
-
Style problems in this document
Fix stuff for this document, including
-
BUG: Saving hangs in nmxl mode with undo-tree enabled. Workaround is ctrl-G and then M-X undo-tree-mode but still.
-
We don't have a good way to show alternatives. stepalternatives breaks the formatting.
-
bottom nav is stuck in the middle column on Part index pages.
-
-
Control panel integration
-
Suspend button
-
Previous, Play/Pause, Next
-
Light or Dark
Foot terminal
Emacs
Wallpaper
Firefox
Chromium
-
-
Emacs problems
Try out all the EGLOT features (see docs at gnu.org).
Try out outline mode, including sorting out keybindings already in init.el
Incomplete IDE setup for Python, lisp, bash
Try using projectile to navigate within code in emacs
warning spam on startup
Try using straight? instead of use-package NOPE
-
Other problems
-
Note that libreoffice requires libreoffice-gtk3. Why not libreoffice-gtk4? why not libreoffice-qt6?Figure this out or give up and document it below.
Hibernation doesn't work
Encrypted hibernation doesn't work
Make virtualenv set CDPATH.
Test if autologin is vulnerable during suspend.
Try laptop Tools: https://simondalvai.org/blog/debian-sway-v1/
Audio and video sharing on Zoom/Prevail/etc—untested. (see sway/config.d)
wofi or other launcher, i.e., always-on control box like f2, maybe keyed to pedal
direct, reliable control of chrome font size in Firefox and Chromium
Figure out how to make LAN naming consistent, i.e., should ssh foobar always work, or ssh foobar.local, or ssh foobar.venesia.aufrecht.org? currently it's a little inconsistent machine to machine. Part of that, but not all of it, is how we use ~/.ssh/config to automate cert usage.
-
Replace find with fd-find?
-
Faster GRUB timeout or GRUB debugging or something
sudo cp /etc/default/grub /etc/default/grub.orig (this makes a backup of your /etc/default/grub first)
sudo sed -i 's/^GRUB_TIMEOUT_STYLE=hidden/GRUB_TIMEOUT_STYLE=menu/' /etc/default/grub
sudo sed -i 's/^GRUB_TIMEOUT=0/GRUB_TIMEOUT=5/' /etc/default/grub
sudo sed -i 's/^#GRUB_DISABLE_OS_PROBER=false/GRUB_DISABLE_OS_PROBER=false/' /etc/default/grub
sudo update-grub
-
echo -e "# Enable password feedback\nDefaults pwfeedback" | sudo tee /etc/sudoers.d/pwfeedback
sudo chmod 0440 /etc/sudoers.d/pwfeedback
-
reduce user timeout. why? what was this for?
sudo mkdir -p /etc/systemd/system.conf.d && echo -e "# Reduce timeout (default = 90s)\n\n[Manager]\nDefaultTimeoutStopSec=15s" | sudo tee /etc/systemd/system.conf.d/99-systemtimeout.confsudo mkdir -p /etc/systemd/user.conf.d && echo -e "# Reduce timeout (default = 90s)\n\n[Manager]\nDefaultTimeoutStopSec=15s" | sudo tee /etc/systemd/user.conf.d/99-usertimeout.conf
-