Since many years I'm running Arch Linux on my computers at home. Having "grown up" at work with UNIX and command line, this is just the best I can have. Everything configured is transparent, setup can be easily duplicated by copy & paste, own scripts can help to automate things, etc. And I always have the latest, greatest status of programs, libraries and kernel (and hardly ever experienced difficulties with that). In my earlier Linux days, I have been using (open)SuSE (also buying the boxes with several CDs or later DVDs) with its YAST installer and configuration GUI. Here it always was pretty tedious to make a larger upgrade to a newer version and it was not always clear where what configuration would end up. My first Linux experiences were on an old 386 computer in the 1990ies, with a Slackware distribution on 3.5" floppy disks. Command line only at that time.
The Arch Linux Wiki contains a lot of information, also valuable beyond Arch.
Correct umask Definition for GNOME Programs
Programs running under GNOME most likely create and store files with a default umask
of 022.
That means “world-readable”.
Any umask
command within a shell profile file only has effect for the shell but not for those
other programs running under GNOME.
Remedy is to update the PAM setup file /etc/pam.d/system-login
by adding a line as following:
session optional pam_umask.so umask=0027
Then, after logging in again, GNOME programs will also obey the defined umask setting.
GNOME File Manager (Nautilus)
I have noticed that, despite the above umask correction, the default GNOME file manager Nautilus still is not obeying this. My solution is to deinstall Nautilus and instead use another file manager, like Thunar (from the XFCE environment), which does correctly obey the umask setting.
Anyway, I'm seldomly using the file manager GUI as I'm doing most on the command line (within XTerm).
Disabling Automatic Suspend on GDM Login Screen
Annoying might be that by default the GDM login screen would automatically suspend the computer after some time without interaction. The current setup for this can be checked with:
root@host$ sudo -u gdm dbus-run-session gsettings list-recursively org.gnome.settings-daemon.plugins.power
To deactivate this, following can be done:
root@host$ sudo -u gdm dbus-run-session gsettings set org.gnome.settings-daemon.plugins.power sleep-inactive-ac-type 'nothing'
root@host$ sudo -u gdm dbus-run-session gsettings set org.gnome.settings-daemon.plugins.power sleep-inactive-battery-type 'nothing'
Separate GNOME Profiles
Having both a desktop/server computer and a laptop on which I work with the same user account
(synchronizing data in between them with rsync
), I'd like to have different GNOME setup for both.
Screen sizes, keyboard layouts and more is different between the two computers.
By default, GNOME stores its (dconf
) setup as:
~/.config/dconf/user
That would be the default on my desktop/server computer.
By adding a file /etc/dconf/profile/host
on my laptop with following content (use e.g. a computer
name instead of “laptop”):
user-db:user_laptop
And adding following line to /etc/environment
:
DCONF_PROFILE=host
Then GNOME will store my user settings on the laptop separately in following file:
~/.config/dconf/user_laptop
To have some initial setup available for the laptop, the user
file can be copied to the
user_laptop
file before logging in on the laptop (e.g. via remote login).
No Unwanted Sub-Directories in Home Directory
By default GNOME would create a set of sub-directories within one's home directory.
Not all directories, like ~/Desktop
, ~/Templates
, ~/Public
, etc. (see
/etc/xdg/user-dirs.defaults
) might be wanted.
Automatic creation of these directories can be avoided by having following line active in
/etc/xdg/user-dirs.conf
(system-wide) or ~/.config/user-dirs.conf
(user-based):
enabled=False
See also the manual pages of user-dirs.conf
and xdg-user-dirs-update
.
Controlling the User Directories
As per the above, GNOME is using a number of default directories for specific tasks.
In case the GNOME defaults are not wanted, different locations can be specified within a file
~/.config/user-dirs.dirs
, e.g.:
XDG_DOCUMENTS_DIR="$HOME/Documents"
XDG_DOWNLOAD_DIR="$HOME/tmp"
XDG_PICTURES_DIR="$HOME/Pictures"
XDG_VIDEO_DIR="$HOME/Video"
See also the manual page of user-dirs.dirs
for a list of possible directories.
Note that the explicit XDG_PICTURES_DIR
definition also seems to help to have the GNOME
screenshot feature store its results under ~/Pictures/Screenshots/
instead of ~/Screenshots/
.
Meanwhile, any environment variables, like $XDG_PICTURES_DIR
, don't seem to have effect anymore.
Using the New Copilot Key as Compose Key
My new laptop has the (in?)famous Copilot key instead of the usual Menu key.
On other computers I'm using the Menu key as so-called “Compose” key to enter special
characters.
On my new laptop, so far, I was using the available right Control key for that (see the article
about GNOME on Wayland Tips).
Apparently with the Linux 6.14 kernel (and newer) the Copilot key gets a correct mapping, which
allows to remap it for other purposes.
This still is a bit tricky and requires the keyd
system program (part of the
Arch Linux standard packages).
The Copilot key by default generates a key combination of: Left-Meta, Left-Shift and F23.
This can be seen with
root@host$ keyd monitor
The following mapping can be provided in a file /etc/keyd/keyd.conf
to have the Copilot key
function as Compose key (any file name *.conf
at that location can be used):
[ids]
*
[main]
leftmeta+leftshift+f23 = overload(control,compose)
rightshift = rightshift
rightcontrol = rightcontrol
Instead of “*
” as keyboard id (for any keyboard), a dedicated id can be specified, which also
can be found with keyd monitor
(e.g. “0001:0001:70533846
” in my case).
The main specification results in the Copilot key to act as Compose key when tapped (pressed
and released) and as Control key when hold.
Furthermore, the right Shift and Control keys need to mapped back to themselves.
Otherwise these will result in their left version.
Now the keyd
system service can be enabled and started with:
root@host$ systemctl enable --now keyd.service
Then the Copilot key will be available e.g. in GNOME as the Menu key (Compose internally maps to Menu). And that key then can be used for Compose functionality.