Debian Trixie + Sway computer setup
I’ve been circling this decision for a while, trying to figure out the best setup for my day-to-day tasks. I’ve worked with multiple operating systems, including Windows 3.1, 95, 98, NT, 2000, XP, 8, 10, 11, Mac OS9 and OSX from the cats to the parks, HPUX, Solaris, Linux RedHat, Slackware, CentOS, Fedora, Ubuntu, and my personal favorite: FreeBSD.
I like my operating systems lean. I don’t like all the extra stuff computer manufacturers add, and lately all the AI stuff, glassy/see-through effects, and dozens of useless notifications features which only eat my memory and cpu cycles. Actually, I’m writing this post on TTY1, using Helix. So, most of the time I’m not looking for “a desktop experience”. I’m looking for a machine that feels calm, predictable, and lightweight. Something that gets out of my way and lets me think.
Choosing an OS
I realized I care about a few things more than “features”:
- I want the OS to feel simple and understandable.
- I want no GUI by default. If I want graphics, I want to ask for them.
- I want my system to stay stable and boring.
- I don’t want to see ads when I want to run an application or check my email
- I don’t want to fight packaging systems or “special” app delivery models. Just basic
apt/rpm/pkgoptions. - I want Wayland + a minimal window manager (sway really clicked for me).
- I don’t need a full desktop environment, loaded with appplications that I’m not going to use.
So my ideal system looks like boot → TTY, login → sway, only when I feel like it.
FreeBSD, the one I love
I love FreeBSD, but it’s not the one I picked. Honestly, I still think it does some things more beautifully than Linux:
- the rc system is elegant and readable
- the root layout makes sense to my brain
- the base system feels coherent in a way Linux distros often don’t
But I’m building a computer that I want to run with the Wayland compositor, which I really wanted to try. And for better or worse, Linux is usually the smoother road for desktop plumbing, especially when you factor in nvidia drivers and the general ecosystem gravity.
From different comments I found on the internet, it feels that users feel ok with X11 which, to me, it means slower progress in the Wayland field,despite there’s a full chapter in the FreeBSD documentation website.
Debian, the one I picked
Debian has a similar vibe, it’s well documented, has been around for a long time, it seems like hardware drivers usually come out first for it, and I’m familiar with apt.
With the netinst ISO I can install a clean base system, skip the desktop task, and end up with a machine that behaves like a classic Unix box. From there I can add exactly what I want.
I don’t want an exciting OS. I want a dependable one.
systemd was what almost stopped me from choosing it. I like the older rc-style approach. I’m used to scripts and straightforward service toggles. But then I realized that systemd is what most modern Linux systems use, and once I accepted that, it became less “weird” and more “okay, it’s a standard”. That’s the same reason that took me some years ago to take the CentOS path. So, these are the things to keep in mind now:
- systemctl to control services
- journalctl to read logs
- units as my mental model
Fedora, the one I almost chose
Fedora is very tempting. It’s modern, clean, and it’s basically a Wayland-forward distro by nature. But I’m not really sold into the flatpak idea. I’m not saying it’s bad, I just feel the same about snap, and others.
Ubuntu, I don’t want the snap story
Ubuntu Server could absolutely do what I want: minimal install, start sway manually, and live mostly in the terminal. It’s very polished and there’s a lot of documentation for everything.
But the big turn-off for me is ideological, I don’t want to build my system around the “snap as default desktop delivery” approach. I’m not even saying snap is evil, it’s just not how I want my machine to work.
I want the packaging story to be simple with apt packages, conventional paths, predictable configs.
Debian feels closer to that “just the OS” philosophy.
That’s enough.
What I want at the end of this is a machine that feels like:
- boot to text
- start sway when I want graphics
- run Firefox and alacritty all day
- minimal background noise
- minimal “ecosystem opinions” imposed on me
- and all day internet radio via cmus
Debian + Sway hits that exact shape. It’s not the flashiest choice. But it feels like the choice I’ll still be happy in the long run. I grew up with DOS + Windows 3.1, then later, Slackware + Window Maker. This really feels good to me.
Installing the system
Initial steps
- Boot your computer with the Debian ISO USB plugged in, and select Install, not Graphical install.
- At the Partition disks screen, select Guided - use entire disk.
- Then, still during Partition disks, but some steps after the previous screen, select All files in one partition (recommended for new users).
- Approve the changes and continue the process.
- At the Software selection screen, leave only the following options checked:
[ ] Debian desktop environment
[ ] GNOME
[ ] Xfce
[ ] GNOME Flashback
[ ] KDE Plasma
[ ] Cinnamon
[ ] MATE
[ ] LXDE
[ ] LXQt
[ ] web server
[x] SSH server
[x] Standard system utilities
[ ] Choose a Debian blend for installation
- Complete the process and let the computer reboot.
Installing the initial applications
Login as root, or use su - to switch to a root session, then:
1apt update
2apt install intel-microcode # because I have an intel computer
3apt install build-essential
4apt install hx btop tmux
5apt install sway waybar alacritty firefox-esr
6sway
The installation process will automatically install the Nouveau driver, so no nvidia drivers are required. Run the following command to check if the Nouveau driver is working:
1$ lsmod | grep nouveau
2nouveau 3055616 17
3mxm_wmi 12288 1 nouveau
4drm_gpuvm 45056 1 nouveau
5drm_exec 12288 2 drm_gpuvm,nouveau
6gpu_sched 65536 1 nouveau
7drm_display_helper 274432 1 nouveau
8drm_ttm_helper 16384 2 nouveau
9ttm 106496 2 drm_ttm_helper,nouveau
10drm_kms_helper 253952 3 drm_display_helper,drm_ttm_helper,nouveau
11i2c_algo_bit 16384 1 nouveau
12video 81920 1 nouveau
13button 24576 1 nouveau
14drm 774144 17 gpu_sched,drm_kms_helper,drm_exec,drm_gpuvm,drm_display_helper,drm_ttm_helper,ttm,nouveau
15wmi 28672 6 video,intel_wmi_thunderbolt,wmi_bmof,think_lmi,mxm_wmi,nouveau
Note: I tried installing the nvidia drivers following Debian’s Nvidia page, but the process breaks sway. It’ll be worth checking again in the future.
Configuring sway
I have a HiDPI monitor, and found the default resolution very small in sway. But there’s an easy fix to it. Start by finding the output name:
1$ swaymsg -t get_outputs
2Output DP-2 'Samsung Electric Company U32J59x HCHNB01726' (focused)
3 Current mode: 3840x2160 @ 59.997 Hz
4 Power: on
5 Position: 0,0
6 Scale factor: 1.000000
7 Scale filter: nearest
8 Subpixel hinting: unknown
9 Transform: normal
10 Workspace: 1
11 Max render time: off
12 Adaptive sync: disabled
13 Allow tearing: no
14 Available modes:
15 3840x2160 @ 59.997 Hz
16 3840x2160 @ 30.000 Hz
17 3840x2160 @ 29.970 Hz
18 2560x1440 @ 59.951 Hz
19 1920x1080 @ 60.000 Hz
20 1920x1080 @ 59.940 Hz
21 1680x1050 @ 59.954 Hz
22 1600x900 @ 60.000 Hz
23 1280x1024 @ 75.025 Hz
24 1280x1024 @ 60.020 Hz
25 1440x900 @ 59.887 Hz
26 1280x800 @ 59.810 Hz
27 1152x864 @ 75.000 Hz
28 1280x720 @ 60.000 Hz
29 1280x720 @ 59.940 Hz
30 1024x768 @ 75.029 Hz
31 1024x768 @ 70.069 Hz
32 1024x768 @ 60.004 Hz
33 832x624 @ 74.551 Hz
34 800x600 @ 75.000 Hz
35 800x600 @ 72.188 Hz
36 800x600 @ 60.317 Hz
37 800x600 @ 56.250 Hz
38 640x480 @ 75.000 Hz
39 640x480 @ 72.809 Hz
40 640x480 @ 66.667 Hz
41 640x480 @ 60.000 Hz
42 640x480 @ 59.940 Hz
43 720x400 @ 70.082 Hz
DP-2 in my case, and try setting a different scale factor:
1$ swaymsg output DP-2 scale 2
2$ swaymsg output DP-2 scale 2.5
sway docs say integer scale is recommended, but fractional values are supported with caveats, especially for Xwayland apps which can look blurry.
Now, edit ~/.config/sway/config to make it permanent:
1# create the sway configuration directory
2mkdir -p ~/.config/sway
3# copy a base configuration if you don't have one
4# cp /etc/sway/config ~/.config/sway
5# edit the configuration file
6hx ~/.config/sway/config
Add the following line:
1output DP-2 scale 2
While editing the config file, set alacritty as the default terminal
1set $term alacritty
Installing Nerd Fonts
Additional terminal font for alacritty to display nice and useful glyphs:
1$ apt install unzip
2$ mkdir -p ~/.local/share/fonts
3$ unzip JetBrainsMono.zip
4$ rm JetBrainsMono.zip
5$ mv * ~/.local/share/fonts
6$ fc-cache -f -v
7$ fc-list | grep -i 'jetbrains'
Additional applications
Some additional software that I frequently use:
1apt install cmake git tree gnupg
2apt install oathtool
3systemctl reboot # important for oathtool
Also, I love cmus. But I’m using my own branch at the moment, while the main one publishes some updates related to https streaming. I’m building with:
1$ ./configure --prefix="/home/andres/.local"
2$ make
3$ make install
Keep reading, audio is configured below.
Changing the default font size for TTY
TTY font sizes can get really small on HiDPI monitors. Debian comes with multiple font options.
1# as root
2$ dpkg-reconfigure console-setup
3# restart so debian takes the changes
4$ systemctl reboot
I found the best font to work on my HiDPI monitor to be DejaVU 24x43, despite multiple recommendations of using Terminus. I found Terminus to be very thin and illegible.
Rebooting and turning off computer
I’m used to the shutdown command, but systemd’s way to do it:
1systemctl poweroff
2systemctl reboot
Installing audio
In Debian 13 Trixie, PipeWire is the recommended option, and the recommended metapackage to install is pipewire-audio. See Debian’s PipeWire page for additional info.
Verify that the system is finding the audio card
1$ cat /proc/asound/cards
2 0 [PCH ]: HDA-Intel - HDA Intel PCH
3 HDAudio-Lenovo-DualCodecs
4 1 [NVidia ]: HDA-Intel - HDA NVidia
5 HDA NVidia at 0xe0080000 irq 57
Install pipewire-audio:
1$ apt install pipewire-audio
2$ systemctl reboot # important
Note: Before adding
pipewire-audioI tried to verify if they were already installed, and it seemed like they were, but nothing worked until I ran both previous commands (install and reboot).
Use wpctl to adjust the volume level. The tool is provided by wireplumber and installed as part pipewire-audio.
1# Increase volume by 5%
2$ wpctl set-volume @DEFAULT_SINK@ 5%+
3# Decrease volume by 5%
4$ wpctl set-volume @DEFAULT_SINK@ 5%-
5# Set volume to a specific volume, 0.75, 0.90, 1.0, etc.
6$ wpctl set-volume @DEFAULT_SINK@ 0.75
7# Get current volume
8$ wpctl get-volume @DEFAULT_SINK@
9# Toggle mute state
10$ wpctl set-mute @DEFAULT_SINK@ toggle
I haven’t tried it, but
alsamixeris an alternative to control volume (apt install alsa-utils).
Printing
CUPS is the default printing system for Debian, but Berkeley’s LPR is also available. Debian Printing.
Visit Debian’s SystemPrinting for additional information on printing.
1# install cups
2$ apt install cups
3# Verify the service is running, as a regular user
4$ lpstat -r
5scheduler is running
Visit http://localhost:631 on the browser to add a new printer.
Note: At any point, if you’re asked for a user and password, use your
rootcredentials.
First, try clicking on Printers. There’s a chance it will be automatically detected and added. If not, click on Administration and follow the prompts. I added an ipp printer, which doesn’t need an additional driver, and selected HP LaserJet Pro M404-M405 (driverless). Then selected ipp://192.168.1.162/ipp/print for the URL field. Continue until you’re done with the process.
When you’re finished, make it the default one: Go back to Printers on the website and select yours. Click on the Administration dropdown and select Set as Server Default.
Go back to TTY1 and try:
1echo "Hola Mundo" | lp
Use the following to list the available printers and check the default one:
1lpstat -p -d
Conclusion
I’ll keep updating this document as new needs rise up.
Be happy. Live simple. Don’t let others take your peace away from you.
