| 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:
- Thinkpad T14 Gen 1 –
hostname=goofy - Sony Vaio SVT1313 –
hostname=casperhostname=mickey
System installation
Installation by debian-installer and apt
- For non-encrypted UEFI system: (Thinkpad main)
- Simply
apt full-upgradefromDebian 12/Bookworm(see older guide) toTrixie. /dev/nvme1n1p1:/boot/EFI– EFI boot partition in FAT32/dev/nvme1n1p5: Btrfs holding many subvolumes:@rootfs,@osamu, …/dev/nvme1n1p6: swap
- Simply
- For non-encrypted UEFI system: (Thinkpad sub)
- Brute force
apt full-upgradeseveral times fromDebian 11/BullseyetoTrixie.- I forgot to upgrade to
Bookwormpreviously. - Newer keys are copied to
/etc/apt/trusted.gpg.d/from main system.
- I forgot to upgrade to
/dev/nvme1n1p1:/boot/EFI– EFI boot partition in FAT32/dev/nvme0n1p1: Btrfs holding a subvolume:@rootfs/dev/nvme0n1p2: Unused
- Brute force
- For encrypted MBR system (Sony main):
- Perform full disk encrypted installation (default).
- See Rescue media(2) for the system migration
- A primary partition (
/dev/sda1) formatted to Ext4 for/(system data). - A LUKS encrypted PV == VG which holds 2 LVs (in
/dev/sda5)- A 30G LV formatted to ext4 for
/(system data). - A 8G LV formatted to swap used for swap.
- A 408G LV formatted to btrfs (
@homesubvolume used for/homefor user data).
- A 30G LV formatted to ext4 for
- A primary partition (
- For non-encrypted MBR system (Sony sub):
- Refreshed partition to make UUID of
/dev/sdb1discovered by the recent Linux kernel. (/dev/sdb1now starts at sector 2024.) /dev/sdb1: 21G Ext4 //dev/sdb2: 1.5G swap
- Refreshed partition to make UUID of
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:
- packages under
libssection - packages under
DependsandRecommendsfor:aptdpkgaptitudedebconftask-desktopetc. (if installed)
- Add a few packages …
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:
- Copy ssh public keys of the main machine into new machine’s
~/.ssh/authorized_keysto allow access to the new machine from the main machine. - Run
ssh-keygento generate ssh keys for the new machine - Copy ssh public keys of the new machine into the main machine’s
~/.ssh/authorized_keysto allow access from the new machine to the main machine. (optional) - Disable password-based login via
sudo vi /etc/ssh/sshd_configto setPasswordAuthentication nofor all machines after setting passwordless SSH logins.
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:
sudo update-grubsudo dpkg-reconfigure grub-efi-amd64# UEFI systemsudo dpkg-reconfigure grub-pc# MBR system
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
- Disable “F10”
- Use
MONO 14or equivalent (HACK NERD FONT MONO)- Install
*.ttffiles into~/.fonts/for a single user or/usr/local/share/fonts/for system wide installation.
- Install
- Add “080x24”, “080x43”, “127x43” or similar
- (Set shell as login shell if you want anything other than Bash.)
Wallpaper for GNOME (Settings+Tweaks)
You can set wallpaper graphics from:
- Desktop:
Settings->Appearance->Background - Desktop:
Tweaks->Appearance->Background(zoom, …) - Lock Screen: Blur only
- GDM3: — Not so easy (leave this as is)
Keyboard customization limitations
- Any use of
SUPER+modifier+SPACEorSUPER-SPACEbreaks normalSUPER-SPACEfor rotating input method and bad idea SUPER-Pseems to be unresponsiveSUPER-Oseems to be unresponsive- Alt-` (Alt-backtick) is grubbed by Gnome Desktop
- No windows style toggle IM with Alt-backtick.
Keyboard customization (Settings)
- Install Debian
ibus-mozcpackage Settings->Keyboardtab- Set up
Input Sourceswith:Japanese (Mozc)English (US)English (intl., with AltGr dead keys)
- Set up
Settings->KeyboardtabKeyboard Shortcuts->View and Customize ShortcutsSound and MediaSUPER-,: volume mute/un-mute
Custom ShortcutsSUPER-\: Name: Terminal, Command:gnome-terminal
(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)
- Install my GNOME extension: Quick switching of input method and touchpad – source
- Log out and log in to GNOME
- Enabled shortcuts from GNOME shell extension preference menu as:
- Input Method Shortcuts
CTRL-SUPER: English (US)SHIFT-SUPER: MozcSUPER-CTRL: English (international)
- Touchpad Shortcuts
SUPER-.: Touchpad OnSUPER-/: Touchpad Off
- Input Method Shortcuts
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:
- Keymap style:
MS-IME(default) –> ClickCustomize ... - 全角かな入力 (hiragana mode) 変換キー equivalent for US keyboard:
Direct Inputmode:Shift Spacekey :Activate IME
- 英数半角入力 (latin mode) 無変換キー equivalent for US keyboard:
Precompositionmode:Ctrl Spacekey :Deactivate IMECompositionmode:Ctrl Spacekey :Deactivate IME(originallyInsert HW Space)Conversionmode:Ctrl Spacekey :Deactivate IME
- UI consistency adjustment
Conversionmode:Ctrl Enterkey :CommitOnlyFirstSegment(originallyCommit)
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).
Settings->Mouse & Touchpad(side) ->Touchpadtab (top)- -> “Secondary Click”: select “Corner Push”
- -> “Tap to Click”: disable
- -> “Scrolling”: select “Two Finger”
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.
bss: Btrfs Subvolume Snapshot Utility- src: https://github.com/osamuaoki/bss
- This helps me with easy backup and snapshot using btrfs.
unzip-i18n: patched unzip (-Oand-Ioptions to support encoding of filenames)- src: https://github.com/osamuaoki/unzip
- This replaces Debian unzip program which lacks
-Iand-Ooptions to offer functionality available under other distribution.- Use
unzip -Osjis filename.zipto unzip Japanese zip files.
- Use
00-min: Osamu’s Task Packages – WIP updating- src: https://github.com/osamuaoki/osamu-task
- This comes with configuration dot files under
/usr/share/doc/00-min/examples/
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.
- Main editor:
NVIM_APPNAME=nvim_osamu nvimwith~/.config/nvim_osamu(aliasvi)- Configuration by my forked LazyVim starter placed in
~/.config/nvim_osamu/. - Install a few required packages found by
:checkhealth:git,ripgrep, …
- Configuration by my forked LazyVim starter placed in
- Fallback editor:
nvim -u NONE(aliasv0)- No configuration bare neovim.
- Fallback editor:
vim- Configuration by https://github.com/osamuaoki/dot-vim in
~/.vimrc.
- Configuration by https://github.com/osamuaoki/dot-vim in
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:
- GUI:
- Evolution (GNOME online account)
- CLI:
devscripts(add “BTS_SENDMAIL_COMMAND='/home/osamu/bin/sendmail-p.d.o'” to~/.devscripts)reportbug(add “mta /home/osamu/bin/sendmail-p.d.o” to~/.reportbugrc)mail(add “set sendmail=/home/osamu/bin/sendmail-p.d.o” to~/.mailrc)mutt(add “set sendmail = '/home/osamu/bin/sendmail-p.d.o'” to~/.muttrc)
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:
admsrcstaffsudo– by adding this, you enable sudo with passwordwww-data– for web server
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 | *** |