My Linux Desktop: Xfce
I've been using Xfce for about a month now, and have grown to like it so much that its now my daily desktop environment, replacing Openbox!
Things I like:
- usable out-of-box with sensible defaults
- easy to configure and customize
- modular components that can be swapped out for alternatives, or used in non-Xfce desktops
That last point is what led me to try Xfce in the first place. I've successfully used Xfce's power manager for years in Openbox. The great thing about Xfce is that, for a little extra overhead, you get all the flexibility of a window manager like Openbox plus all the added perks of a full desktop. Xfce can be configured to provide a comfortable migration path for new Linux users coming from Windows or Mac OS, or customized to the nth degree for longtime users.
Here are some things I do with Xfce (v4.16) running on (pre-release) Debian 11 Bullseye.
On a new machine, I like to start with a minimal install of Debian, then add Xfce afterwards.
A simple ...
$ sudo apt install task-xfce-desktop
... will pull in the complete bells-and-whistles desktop.
Plus a few desktop extras that I want ...
$ sudo apt install diodon fonts-firacode fonts-ubuntu lightdm-gtk-greeter papirus-icon-theme plymouth-themes qt5-style-plugins wmctrl xdotool
Login, then go to
Applications->Settings->Settings Manager to configure the desktop.
Add applications to run at startup in
Applications->Settings->Session and Startup->Application Autostart.
I like to have a terminal immediately available after login, so I add the command
xfce4-terminal --maximize to the list.
Another useful application to launch at startup is diodon (clipboard).
Customize keyboard shortcuts for managing windows, simple tiling, applications, switching desktops, and whatnot in
At home I connect my laptop to an external monitor that I use as my primary display. Xfce doesn't have a keyboard shortcut for moving windows between the two displays, so I use this python script to provide that function, and set a command shortcut in
Xfce-terminal binds F1 and F11 to help and fullscreen, respectively, which can make using terminal programs like
htop difficult. To disable those shortcuts, edit
(gtk_accel_path "<Actions>/terminal-window/fullscreen" "") (gtk_accel_path "<Actions>/terminal-window/contents" "")
Disable hidden scrollbars
Some (GTK) desktop windows have scrollbars that disappear when the mouse is not moving. If you want scrollbars to always remain visible, add the setting
Add, remove, arrange the components of the xfce-panel in
In addition, I set the
tasklist buttons to expand into available space, and change the styling of other buttons, by creating the file ~/.config/gtk-3.0/gtk.css.
See: "Enlarge size of window button" and "Panelbar theming"
Xfce is styled using themes, which can be installed in
~/.themes. Sometimes with dramatic results.
I like to style my desktop around the Nord colour palette ...
- Download Nordic theme and install in
- Download Nord-xfce-terminal and install
I like Fira Code fonts for the terminal. Select
Fira Code Regular in
For a uniform look between GTK and QT applications, add to ~/.profile ...
LightDM is a display manager + login greeter for desktops.
Select a background wallpaper and theme in
[greeter] background=/usr/share/pixmaps/my_background_wallpaper.jpg theme-name=Adwaita-dark
Set a user avatar by saving a 96x96 pixel image to
/usr/share/lightdm/lightdm.conf.d/01_debian.conf, set ...
$ sudo systemctl restart lightdm.service
Since I already enter a passphrase at boot to unlock my LUKS-encrypted storage, I enable auto-login to skip the login screen.
Example: To enable auto-login for user
foo, change these lines in
/etc/lightdm/lightdm.conf from ...
[Seat:*] #autologin-user= #autologin-user-timeout=0
... to ...
[Seat:*] autologin-user=foo autologin-user-timeout=0
To source the contents of ~/.profile when using LightDM, create ~/.xsessionrc with the entry ...
Plymouth presents a graphical display while the system boots.
/etc/default/grub to set the
splash option, and the GRUB display resolution (example:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash" GRUB_GFXMODE=1366x768
Save changes, and update GRUB ...
$ sudo update-grub
I like Circle from this Plymouth theme collection. To use this theme, download and unpack the collection, then ...
$ sudo cp -r /path/to/plymouth/theme/circle/ /usr/share/plymouth/themes $ sudo plymouth-set-default-theme -R circle
» Later: Getting started with Git and GitLab
« Earlier: Self-host a personal calendar and address book using Radicale