Desktop Environment
A Linux distribution usually has two types of interfaces. One of them is virtual console (CLI) and the other is GUI. Virtual console is the default interface from Linux kernel and does not support Unicode. For example, in Debian/Ubuntu, type <ctrl>+<alt>+F@{1-6@} can change between virtual console and GUI. Specifically, <ctrl>+<alt>+F2 can change to the GUI, and <ctrl>+<alt>+F@{3,4,5,6@} are different virtual consoles. Desktop environment is a collection of GUI programs that replaces CLI and is one of the most complicated subsystem in Linux. It breaks up the limitation of shell and provides a more flexiable interface for users. By default, the startup program, i.e., systemd, will initialize the GUI desktop. The desktop also can be opened manually. For example, sudo startx is the command to start an x11 service. x11 and Wayland are two communication protocol that relates a display server and the client. Most of the desktop and libraries are based on them.
Graphicless compares the follow open-source desktop environments.
@multitable @columnfractions .2 .2 .2 .2 .2 @headitem @tab KDE @tab GNOME @tab xfce @tab LXQT
@item Toolkit @tab QT @tab GTK @tab GTK @tab QT
@item Display manager @tab SDDM @tab gdm @tab LightDM @tab SDDM
@item Session manager @tab ksmserver @tab gnome-session @tab xfce4-session @tab lxqt-session @item Windows manager @tab KWin @tab gnome-shell @tab xfwm4 @tab Openbox
@item Desktop manager @tab - @tab - @tab xfdesktop @tab -
@item File manager @tab Dolphin @tab Nautilus @tab Thunar @tab PcManFm-qt
@item Launcher @tab Kickoff @tab - @tab xfce-panel @tab lxqt-runner @item Editor @tab Kate @tab gnome-text-editor @tab Mousepad @tab -
@item Terminal @tab Konsole @tab gnome-terminal @tab xfce4-terminal @tab QTerminal
@item Network @tab Network Manager @tab Network Manager @tab - @tab -
@item Capturer @tab Spectacle @tab GNOME Screenshot @tab xfce4-screenshooter @tab Screengrab
@item Document viewer @tab Okular @tab Evince @tab - @tab -
@item Image viewer @tab Gwenview @tab Loupe @tab Ristretto @tab Lximage-qt
@item Input method @tab - @tab - @tab - @tab -
@item Advanced setting @tab - @tab gnome-tweaks @tab - @tab -
@item Development @tab KDevelop @tab GNOME Builder @tab - @tab -
@end multitable
GNOME
Advanced Setting
gnome-tweaks gives advanced settings for gnome. It support swap of Caplock and Ctrl. Download it in Debian with
sudo apt install gnome-tweaks
This swap is only useful in gnome-based GUI. Windows has a similar tool that named as PowerToys.
xfce4
Graphicless tests xfce4 in Debian 12. It uses xfce4-terminal and firefox as the default applications for terminal and web browser, respectively.
Window Manager
@multitable @columnfractions .2 .2 .2 .2 .2 @headitem @tab Openbox @tab i3 @tab xmonad @tab sway @item Protocol @tab x11 @tab x11 @tab Wayland @tab Wayland @end multitable
Openbox
Install Openbox with apt
sudo apt install openbox
By default, openbox has a refresh issue in Ubuntu. The applications will not automatic refresh after opening them. To fix this, change the configuration file
sudo vim /usr/lib/x86_64-linux-gnu/openbox-autostart
Uncommand the line test -z $BG || $BG -solid "#303030"
tmux
Tmux is a famous terminal multiplexer. It works like a window manager in terminal. This is only part of the common keys and commands for tmux. To read the full list, use man tmux or type <C-b> + ?. The keybindings are in the “DEFAULT KEY BINDINGS” section.
<C-b> is the default prefix key of tmux. The follow shortcuts omit the prefix key.
Normal mode
@example # Session d # Detach the window from the session s # Select a new session (/) # Move to the previous/next session
tmux ls/list # List sessions
tmux attach/detach # Attach/Detach the window to the session
tmux kill-session -t <session-name> # Close (Kill) the session
# Window
c # Create new window
l # Toggle last active window
n/p # Next/Previous window
w # List windows
tmux new -s <session-name> # Create a new window for the session
# Pane
o # Go to next pane
q <num> # Switch to the pane
x # Close the pane
z # Toggle pane zoom
@{ or @} # Move the pane to left/right
% or " # Split pane with vertical/horizontal
<Up>/<Down>/<Left>/<right> # Go to the up/down/left/right pane
@end example
Copy mode
In copy mode, user can view the contents in tmux pane. The user also can use vim-like commands to view and copy the content. @example [ # Enter copy mode. @end example
Command line mode
The follow key does not need prefix key.
@example : # Enter command-line mode @end example