Truly the John Major of operating systems
Switched from Ubuntu to Debian on my laptop this weekend, long overdue. I was on Ubuntu 20.04, which was past the end of its support period, so instead of updating to 24.04 I thought I’d try Debian and then if it all went horribly wrong I could use it as an opportuniy to update Ubuntu anyway. I also wanted to take the chance to get away from Canonical, the bastards, et cetera! The VPS is on Debian and it’s never seemed massively different from what I was used to, so I felt confident enough that it would be usable.
With previous Linux installations I’ve been addled by my time as a ricing bro in 2018-ish and insisted on setting everything up from a set of install scripts and dOtFiLeS, but this time I thought … it’s been four years, let’s have a nice time making new decisions about how things should look. Let’s use an actual desktop environment instead of an extremely minimalistic window manager with no support for extremely basic functions (like, er, locking the screen when I close the laptop lid). I chose XFCE because it’s meant to be lightweight and robust; I’m not bothered by all that flashy GNOME stuff tbh.
1. Questions I asked myself before installing, and their answers
- Will it recognise the USB keyboard that I intermittently use because several of the laptop keys no longer work? And will there be an onscreen keyboard I can download once the installation process is finished? Yes, no problem. I’m using xvkbd which is nice and small, and set
xvkbd -compact
in the XFCE autostart. - Debian is old and never gets updates waa waaa, how do I get new software? You were using an Ubuntu version from 2020 jfc. Also just download .deb files from websites.
- Will emacs28 work? Will it work with mu4e since there was a problem with that when I tried upgrading once before, and I specifically need that package for running Dreamwidth challenges that hardly anyone participates in? Yeah it’s fine. emacs28 was in the apt repository. I had to suppress a couple of new warnings in my config file and switch a couple of packages to newer alternatives, but everything works as it should.
- How do I even create the installation media? I used the instructions on the Ubuntu website (as a means of getting rid of Ubuntu lol), although what it didn’t say is that you have to run the program with escalated privileges or it’ll just fail with a very uninformative error message. Booting from it was a bit trickier because for some reason I thought it would show up in GRUB, but it didn’t so I had to get into the Windows UEFI settings which involved mashing F11 repeatedly (fortunately not one of the keys that don’t work).
The installer on the live Debian iso is extremely user-friendly and worked great, although I had to go through it a couple of times because the first time I set my username to something including one of the broken key letters and as, unlike in Ubuntu(/GNOME?), you have to retype your username at login, that would have meant I could only log in if I happened to be carrying the external USB keyboard with me.
Things I had to install using apt: wget
, zsh
, xvkbd
, openssh-client
, zsh-syntax-highlighting
, python3-pip
, pipx
, libxcb-cursor0
, feh
, maildir-utils
, mu4e
, git
, python3-requests
, python3-bs4
, texlive
, python3-pylast
, python3-discogs-client
, emacs
.
Thing I installed using pipx: hyfetch
(once a ricing bro always a ricing bro, but at least an LGBT one).
Thing I installed using pip3 even though it’s apparently very bad and naughty to do so: orgparse
(needs to be done with --break-system-packages
). If I understood venvs properly I’d have done this in the approved way, but, shrug.
Things I downloaded from their own websites and installed using dpkg
or whatever like a noob: Vivaldi, syncthing, rclone, GIMP.
2. Other things I should probably note
- Set the compose key using
sudo dpkg-reconfigure keyboard-configuration
. - Set zsh as the shell:
sudo chsh -s /bin/zsh [username]
. I forgot the default prompt is %, taking me back to the days of tcsh on Mac OS X 10.1 wow! - After installing syncthing,
mkdir ~/.config/autostart
,cp /usr/share/applications/syncthing-start.desktop ~/.config/autostart
. Or could just enable it in the autostart settings obviously. - The GIMP download is just an AppImage, so
chmod +x
and add to PATH somewhere. - Need to run
pipx ensure
after installing pipx. ~/.offlineimaprc
may be required for mu, but then again, it may not?? After installing mu, runmkdir ~/Maildir
and thenmu init
but there’s no need to do anything after that as I’m not actually using this to read emails.git config --global user.name
anduser.email
.- Clone git repos using their SSH addresses so the SSH key is actually relevant.
- Uncheck “raise windows when any mouse button is pressed” in the window manager tweaks preferences to allow scrolling in background windows.
3. Customisations
- Obviously the terminal defaults to incel mode, so I set it to solarized-light. Also set a bit of transparency. Fortunately it has an option to disable middle-click shenanigans; also to disable program-specific keyboard shortcuts (Alt-F was doing something very weird, I just want to go forward by one word, thanks).
- Got rid of the second panel, set the first one to be a Windows-style bottom bar with program launchers etc. Installed custom icon and cursor themes from xfce-look although I think it’s hard to beat the default window/GTK theme without going full plasma/“I want it to look like I’m using a MacBook” mode.
I misunderstood the instructions for verifying my SSH key for Forgejo and ended up getting fail2banned from my own VPS after too many failed login attempts lol, so I turned off wifi on my phone and sshed in from {telephone network IP address} and then ran fail2ban-client set sshd unbanip [my IP]
. But I also set a ssh key for accessing the VPS normally, so now I don’t have to copy and paste the password from the Vultr web interface every time.
I didn’t install any of the zeitgeisty zsh customisation stuff apart from syntax highlighting, so this is my entire .zshrc
:
export PATH=~/.local/bin:$PATH # case-insensitive autocomplete autoload -Uz +X compinit && compinit zstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z}' zstyle ':completion:*' menu select # commands alias gimp="~/.local/bin/GIMP-3.0.4-x86_64.AppImage" alias scrobble="python3 ~/Documents/proj/utils/scrobble.py" alias otd="python3 ~/Documents/proj/utils/otd.py" alias track="cd ~/Documents/proj/trackers && ./build.sh && cd -" alias updatesite="cd ~/Documents/proj/notes && ./build.sh && cd -" # prompt + tab titles PS1="%~ %% " export PROMPT_COMMAND='printf "\033]0;%s\007" "${PWD/#$HOME/~}"' precmd() { eval "$PROMPT_COMMAND" } # this has to go last source /usr/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
The XFCE screenshot tool includes an “automatically post to imgur” option, which is mindblowing! Here’s a screenshot that isn’t on imgur though.

You can find this post on the fediverse by searching for https://fed.brid.gy/r/https://tre.praze.net/notes/20250714/
in your fediverse client.
Comments
You can comment on this post if you like. Comments will be posted below after moderation. All comments are anonymous and email addresses, if provided, will not be published.