Debian Workstation (Trixie) (v2025-09)

Date: 2025/09/03 (initial publish), 2025/09/11 (last update)

Source: note-00080

Previous Post Top ***

TOC

XXX WIP XXX

Workstation usability

Here is the system configuration memo on my workstation running Debian 13 Trixie stable release with GNOME 48. This is mostly a rewrite of the older guide for Debian 12 Bookworm.

I am trying to keep my workstation as clean Trixie installation as possible.

This is non-hardware specific notes and tips. For the hardware specific notes and tips, see also:

System installation

Installation by debian-installer and apt

I left the domain name as blank for debian-installer. All hosts on the same local subnet can be accessed by adding .local at the end of each host name thanks to Avahi (avahi-autoipd package).

All packages with Priority: values required, important and standard are installed by debian-installer.

Initial manual setup

If your system boot into the GUI console for any reason, use “CTRL-ALT-F?” (? can be 1-6) to access Linux virtual terminal login prompt. Otherwise, you are already at login prompt on Linux virtual terminal.

Login to the root account and execute:

$ su bash
 ...
# apt-get update
# apt-get install aptitude sudo vim mc wget nano-

NOTE: If you didn’t set password for root during system installation with debian-installer in the expert mode, sudo is configured for you and you need to use it to gain root privilege.

Tidy-up package installation status for aptitude

I use aptitude as the primary package maintenance tool and identify intentionally installed packages as a scrollable list by typing in ~i!~M~poptional in the l prompt of aptitude.

Since debian-installer installed packages doesn’t set the auto install flag (M), I usually tidy-up them up before installing optional packages by setting missing M flags to groups of files:

You can print list of intentionally installed packages as a plain text with:

$ aptitude search '!~M~poptional~i'
i  00-min - Task for the minimal non-GUI system
i  aptitude - terminal-based package manager
i  bss - Btrfs Subvolume Snapshot Utility
i  btrfs-progs - Checksumming Copy on Write Filesystem utilities
i  chromium - web browser
i  cmake - cross-platform, open-source make system
i  cryptsetup - disk encryption support - startup scripts
i  devscripts - scripts to make the life of a Debian Package maintainer easier
i  dgit - git interoperability with the Debian archive
i  dh-exec - Scripts to help with executable debhelper files
i  discover - hardware identification system
i  dmsetup - Linux Kernel Device Mapper userspace library
i  firmware-iwlwifi - Binary firmware for Intel Wireless cards
i  firmware-linux - Binary firmware for various drivers in the Linux kernel (metapackage)
i  firmware-misc-nonfree - Binary firmware for various drivers in the Linux kernel
i  firmware-realtek - Binary firmware for Realtek network and audio chips
i  gdisk - GPT fdisk text-mode partitioning tool
i  gitk - fast, scalable, distributed revision control system (revision tree visualizer)
i  gnome-firmware - GTK front end for fwupd
i  gparted - GNOME partition editor
i  grub-efi-amd64 - GRand Unified Bootloader, version 2 (EFI-AMD64 version)
i  hugo - Fast and flexible Static Site Generator written in Go
i  ibus-mozc - Mozc engine for IBus - Client of the Mozc input method
i  imediff - interactive full screen 2/3-way merge tool
i  installation-report - system installation report
i  isc-dhcp-client - DHCP client for automatically obtaining an IP address (deprecated)
i  libcap2-bin - POSIX 1003.1e capabilities (utilities)
i  linux-image-amd64 - Linux for 64-bit PCs (meta-package)
i  locales-all - GNU C Library: Precompiled locale data
i  lvm2 - Linux Logical Volume Manager
i  mc - Midnight Commander - a powerful file manager
i  moreutils - additional Unix utilities
i  neovim - heavily refactored vim fork
i  npm - package manager for Node.js
i  rsyslog - reliable system and kernel logging daemon
i  sbuild - Tool for building Debian binary packages from Debian sources
i  ssh-askpass-gnome - interactive X program to prompt users for a passphrase for ssh-add
i  task-english - General English environment
i  task-gnome-desktop - GNOME
i  task-laptop - laptop
i  task-ssh-server - SSH server
i  unzip-i18n - De-archiver for .zip files with i18n supports
i  usbutils - Linux USB utilities
i  vim - Vi IMproved - enhanced vi editor
i  vim-scripts - plugins for vim, adding bells and whistles
i  xxd - tool to make (or reverse) a hex dump
i  zip - Archiver for .zip files

(This intentionally ignores some outdated packages with priority=extra packages.)

Initial manual setup (SUDO)

For the passwordless sudo operation, configure sudo from root by adding /etc/sudoers.d/passwordless as:

# No passowrd required for the user in sudo group
# please note the last match wins configuration
%sudo ALL = (ALL:ALL) NOPASSWD: ALL
# No password for 8 hours
#Defaults timestamp_timeout = 480
#Defaults timestamp_type = global

NOTE: Please note that the last matching configuration is the active one for sudo.

Initial manual setup (SSH)

For paswordless ssh operation to the new system, configure ssh server as follows from the primary user:

Initial manual setup (GPG)

After configuring SSH as above, your GPG keys on goofy can be moved to casper by executing the following on goofy:

$ scp -r .gnupg casper.local:.

Initial manual setup (GNOME)

Install task-desktop package which pulls in task-gnome-desktop package to set up a decent GNOME GUI workstation with aptitude if not installed.

Wallpaper for GRUB

Place your JPEG wallpaper graphics (JPEG) in /boot/grub/ and update GRUB configuration using one of the followings:

OS probing for GRUB

No change from older guide for Debian 12 Bookworm.

Multi-boot with GRUB on UEFI system

No change from older guide for Debian 12 Bookworm.

GNOME desktop customization

The gnome-tweak and gnome-shell-extension-manager packages installed along with gnome package help to tweak the system via GUI application Tweak and Extension Manager.

The GNOME extension packages are available from GNOME Extension web site using browser with GNOME Shell integration enabled.

My essential GNOME extension is Input method and touchpad shortcuts (See GNOME shell extension for input methods.)

Terminal customization

Wallpaper for GNOME (Settings+Tweaks)

You can set wallpaper graphics from:

Keyboard customization limitations

Keyboard customization (Settings)

(No more remap of CapsLock as additional Esc with GNOME Tweak. I use jk as Esc for vi.)

NOTE: Non-usable Keyboard shortcut key combos with super

Keyboard and touchpad shortcut customization (Extension)

See GNOME extensions for better UX how I get here.

Keyboard shortcut customization (Internal IM configuration)

For Japanese IM (ibus-mozc), set it up as:

See my old Japanese input on US-keyboard (in Japanese) and its Google translation.

Right mouse click with single button (Setting)

For Mac or some Sony Vaio with single tap pad button, the following allows proper secondary-click (or even middle-click).

Application customization

Personal packages

See Personal DEB package repository for the method to publish personal DEB packages.

You need to add configuration file for personal DEB package repository to use them.

Here are some of my personal binary DEB packages to help my command line.

Editor setups

I use NeoVim 0.11.4 fetched from my HTTP repo with wget and install it with dpkg -i as my main editor.

See Building Neovim for how I set up my HTTP repo.

Web browser

Although Chromium exists in the official Debian repository, it lacks account synchronization capability with other devices since 2021. Although there are some workarounds tips posted on web, installing Chrome can solve this situation for sure.

The official Chrome installer create the APT configuration file /etc/apt/sources.list in old non-DEB822-STYLE FORMAT.

LibreOffice

Debian 13 Trixie (stable release) offers the LibreOffice 25.2. I think it is in good shape.

If any issues arise, I may switch to the latest upstream flatpack package offering from LibreOffice download.

Mail client

Updated in 2025-09-08

Debian 13 Trixie doesn’t require to install MTA such as exim4.

For the GUI access to the remotely hosted IMAP4 mail services, use GNOME Online accounts and Evolution. This approach works for Gmail etc. and compatible with using other devices such as smart phones. Evolution can also be configured to read locally delivered mails to mbox too. (send+receive).

When I need to send mail from shell prompt for Debian BTS or Debian mail gateway services, I use my “@debian.org” address and use ssh+sendmail (created shell script ~/bin/sendmail-p.d.o) to access a Debian host. (The similar trick may be usable for any shell access hosts such as salsa.debian.org etc.)

I have mail configuration for:

For Debian voting, mutt works most reliably.

Miscellaneous tips

Setting group membership

Don’t forget to setup group membership for the primary user (UID=1000). Notable groups to watch out are:

You need to re-login to enable them after setting them.

Re-install and UID/GID issues

UID and GID used by some applications are not fixed. So, if you reinstall the exact same packages in a different order, you end up assigning UID and GID for the application.

UID in range between 101-999 such as ones for avahi, saned, colord, _ssh, … are the most susceptible on this issue.

apt-cacher-ng needs special attention.

EFI-based firmware updates

Install gnome-firmware package and invoke GUI to update firmware on devices supported by fwupd using Linux Vendor Firmware Service.

Many firmware data can be updated using gnome-firmware.

Workaround for some firmware

Some firmware devices may experience some problem to be updated by gnome-firmware.

Most notable one on my system was “Lenovo System Firmware”. (I don’t know if this was version dependent or not.) I used vendor’s BIOS update offered as bootable CD and made USB key containing it image data:

If the BIOS options Security > Secure Boot is enabled, it may restrict booting up from the BIOS Update bootable CD image, you may need to disabled the Secure Boot option to use it.

If Windows 10 or 11 is installed, you may need to reenable Secure Boot after this operation.

Previous Post Top ***