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:

  1. 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)

  2. 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:

    1. System boots to graphical and mulit-user targets et al. No customization applied.

    2. 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?

    3. User systemd services include i-t_control_panel; first_login and mount_encfs, which both do the same thing; dropbox

  3. 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-portal

      PATH should include ~/bin, ~/.local/bin, ~/.cargo/bin/

      export PATH

      export 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 propagates

      export MOZ_ENABLE_WAYLAND=1

      export XDG_SESSION_TYPE=wayland

      export XDG_CURRENT_DESKTOP=sway Let'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

    • And this seems helpful, but German.

  4. 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.

  5. Control panel integration

    • Suspend button

    • Previous, Play/Pause, Next

    • Light or Dark

      • Foot terminal

      • Emacs

      • Wallpaper

      • Firefox

      • Chromium

  6. 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

  7. 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.conf sudo 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