Notes for configuring Fedora and also GNOME.
Some important packages for an initial install:
sudo dnf install -y \
boost-devel cargo clang cloc cmake code compat-openssl10 dconf docker-compose ffmpeg \
gimp gitk go gparted gthumb guile22 hexedit htop inkscape julia maven mc meld mercurial neofetch \
nodejs npm ocaml okular pandoc powerline-fonts qbittorrent qdirstat recode remmina rust \
simplescreenrecorder slack snapd subversion texlive-scheme-full the_silver_searcher \
vim vlc wdiff wondershaper xclip xmlstarlet zsh zstd R R-Rcpp-devel Rstudio-desktop \
smartmontools tldr pv ntpdate fzf wl-clipboard sysstat \
BibTool \
glibc-devel-static \
python3-pip virtualenv \
linux-libertine-fonts \
ftp
Hungarian language pack for LibreOffice:
sudo dnf install -y libreoffice-langpack-hu
sudo dnf install -y tmux
# go to tmux
# SELinux can get in the way of benchmarking, consider disabling it
echo "sudo setenforce 0" >> ~/.bashrc
sudo dnf upgrade -y
sudo dnf install -y htop git wget zstd docker mc vim the_silver_searcher nmon maven
sudo gpasswd -a ${USER} docker
# use `newgrp` or reboot
sudo reboot
# mount NVMe disk
sudo mkfs -t ext4 /dev/nvme1n1
sudo mkdir /data
sudo mount /dev/nvme1n1 /data
sudo chown -R ${USER}:${USER} /data
sudo systemctl stop docker
sudo mkdir -p /etc/docker
echo '{ "data-root": "/data/docker" }' | sudo tee /etc/docker/daemon.json > /dev/null
sudo systemctl start docker
docker run hello-world
Things that do no work on Wayland:
It indeed doesn’t work, see: https://gitlab.gnome.org/GNOME/file-roller/-/issues/4
Nautilus does not show hidden files by default and Ctrl + H only reveals them temporarily. To change this, run:
gsettings set org.gnome.nautilus.preferences show-hidden-files true
By default, Alt + Tab does not cycle between windows of the same application. To amend this, install dconf-editor and follow this guide.
$ sudo dnf install -y dconf-editor
Search for org/gnome/desktop/wm/keybindings, then delete '<Alt>Tab' under switch-applications and add it to switch-windows.
As suggested, install xclip and try the following in the console:
TIMESTAMP=$(date "+%F %H-%M-%S"); gnome-screenshot -acf "/home/dir/path/Pictures/Screenshot from $TIMESTAMP.png" && cat "/home/dir/path/Pictures/Screenshot from $TIMESTAMP.png" | xclip -i -selection clipboard -target image/png
If this works, go to Keyboard shortcuts and assign the following command to a hotkey such as Ctrl + Shift + P:
bash -c 'TIMESTAMP=$(date "+%F %H-%M-%S"); gnome-screenshot -acf "/home/dir/path/Pictures/Screenshot from $TIMESTAMP.png" && cat "/home/dir/path/Pictures/Screenshot from $TIMESTAMP.png" | xclip -i -selection clipboard -target image/png'
On Wayland, use wl-copy:
bash -c 'TIMESTAMP=$(date "+%F %H-%M-%S"); gnome-screenshot -acf "/home/dir/path/Pictures/Screenshot from $TIMESTAMP.png" && cat "/home/dir/path/Pictures/Screenshot from $TIMESTAMP.png" | wl-copy'
The gnome-screenshot tool no longer works in Fedora 35. An alternative is to use the GNOME Screenshot UI as suggested in Fostips and Reddit:
sudo dnf copr enable yalter/gnome-shell-screenshot-ui
sudo dnf upgrade
Reboot and configure the hotkeys in Settings | Keyboard | Keyboard Shortcuts.
Webcam/microphone are not detected – solution:
sudo sysctl -w fs.inotify.max_user_watches=12288
If it works, also provide it as a configuration file:
sudo vim /etc/sysctl.conf
Add:
fs.inotify.max_user_watches=12288
Using the default configuration with a single full HD display, Zoom started magnified to 2x. As suggested, edit the Zoom configuration file (depending on the installation, might be at ~/.config/zoomus.conf or under ~/.local/share/applications/us.zoom.Zoom.desktop) and set:
autoScale=false
Then, restart the application.
To access files (such as certificate and key files for OpenVPN), you might have to relabel (bits of) your home directory with: restorecon -R ~
SELinux blocks OpenVPN. As suggested:
First, check the logs with.
sudo journalctl -f
Jul 15 23:31:21 localhost.localdomain nm-openvpn[53696]: Options error: --ca fails with 'cert-file.crt': Permission denied (errno=13)
The logs have suggestions on how to fix the problem. I ran:
sudo semanage fcontext -a -t home_cert_t cert-file.crt
restorecon -R -v cert-file.crt
And did the same for the .key file as well.
SELinux prevents Docker from mounting files. To fix this:
chcon -Rt svirt_sandbox_file_t file_or_dir_to_mount
Or add the :z modifier as described in the Docker documentation:
docker run ... -v "$(pwd)"/target:/app:z ...
(Where /app is the directory on the host machine to mount.)
Snap commands such as sudo snap refresh can get blocked by SELinux:
SELinux is preventing snapd from read access on the directory /home/runner.
Solution:
sudo chcon -Rt user_home_dir_t /home/runner
restorecon /home/runner
For example, suppose you want to open all video files with VLC:
sudo sed -i 's/vlc.desktop;//g' /usr/share/applications/mimeapps.list
sudo sed -i 's/org.gnome.Totem.desktop;/vlc.desktop;/g' /usr/share/applications/mimeapps.list
sudo sed -i 's/totem.desktop/vlc.desktop/g' /usr/share/applications/mimeapps.list
sudo dnf remove -y totem
Before running the database first, you have to initialize it with:
sudo /usr/bin/postgresql-setup --initdb
ldconfig does not find files under /usr/localA process might return cannot open shared object file: No such file or directory even though the compilation went fine and sudo ldconfig was issued. As per this answer, the problem is that Fedora does not index this directory by default. To amend this, add the following lines to /etc/ld.so.conf, then rerun sudo ldconfig:
/usr/local/lib
/usr/local/lib64
Problem: The default GNOME hotkeys for moving windows between monitors/displays are:
Shift+Super+Left: Move window to leftward monitor andShift+Super+Right: Move window to rightward monitor.However, these stopped working sometime in Oct 2021 (GNOME 40). The same issue persisted with GNOME 41. Other hotkeys (view split on the left/right) continued working.
Solution: Use dconf-editor to edit the following keys in /org/gnome/desktop/wm/keybindings/:
move-to-monitor-leftmove-to-monitor-rightUncheck the “Use default value” option but kept their default values (['<Super><Shift>Left'] and ['<Super><Shift>Right'], respectively).
(See the related Reddit thread.)
I had trouble setting up the network for QEMU virtual machines:
Could not start virtual network 'default': error from service: changeZoneOfInterface: COMMAND_FAILED: 'python-nftables' failed: ...
The problem can be reproduced from the command line by simply issuing:
sudo firewall-cmd --reload
This results in:
Error: COMMAND_FAILED: 'python-nftables' failed:
JSON blob:
{"nftables": [{"metainfo": {"json_schema_version": 1}}, {"add": {"table": {"family": "inet", "name": "firewalld_policy_drop"}}}, {"add": {"chain": {"family": "inet", "table": "firewalld_policy_drop", "name": "filter_input", "type": "filter", "hook": "input", "prio": 9, "policy": "drop"}}}, {"add": {"chain": {"family": "inet", "table": "firewalld_policy_drop", "name": "filter_forward", "type": "filter", "hook": "forward", "prio": 9, "policy": "drop"}}}, {"add": {"chain": {"family": "inet", "table": "firewalld_policy_drop", "name": "filter_output", "type": "filter", "hook": "output", "prio": 9, "policy": "drop"}}}, {"add": {"rule": {"family": "inet", "table": "firewalld_policy_drop", "chain": "filter_input", "expr": [{"match": {"left": {"ct": {"key": "state"}}, "op": "in", "right": {"set": ["established", "related"]}}}, {"accept": null}]}}}, {"add": {"rule": {"family": "inet", "table": "firewalld_policy_drop", "chain": "filter_forward", "expr": [{"match": {"left": {"ct": {"key": "state"}}, "op": "in", "right": {"set": ["established", "related"]}}}, {"accept": null}]}}}, {"add": {"rule": {"family": "inet", "table": "firewalld_policy_drop", "chain": "filter_output", "expr": [{"match": {"left": {"ct": {"key": "state"}}, "op": "in", "right": {"set": ["established", "related"]}}}, {"accept": null}]}}}]}
It seems that the conflict is introduced by Docker/Moby. Of course, uninstalling Docker is not an option for most users. So, a solution to the problem, as suggested in the Red Hat Bugzilla is the following:
Delete or move the firewalld trusted zone configuration file /etc/firewalld/zones/trusted.xml:
sudo mv /etc/firewalld/zones/trusted.xml /etc/firewalld/zones/trusted.xml.bkp
Restart the firewalld and libvirtd services:
sudo systemctl restart firewalld
sudo systemctl restart libvirtd
The virtual network should now start.
Chromium-based applications claim the profile is locked and ask the user to claim Unlock profile and relaunch to continue. This can be traced back to them putting the hostname in the title. By default, the hostname is not set on Fedora, so the solution to this problem is to set it using:
sudo hostnamectl set-hostname ...
On my T480s running Fedora 32 and GNOME 3.36.5, the touchpad did not work after a full reboot. (I never had any problems after suspend.) An external mouse was working fine.
The solution to fix the touchpad, as per Ask Ubuntu, was to run:
sudo sh -c 'echo -n "elantech" > /sys/bus/serio/devices/serio1/protocol'
If you have sound issues, use PulseAudio Volume Control:
sudo dnf install -y pavucontrol
Fedora 34 introduced Pipewire as a default audio-video daemon. Unfortunately, it has some problems (changing the output between speakers and headphones is difficult, sound mixing for some video files can be suboptimal, high CPU usage causes the sound to crackle/scratch, etc.). If these occur, consider reverting to PulseAudio using the following command:
sudo dnf swap --allowerasing pipewire-pulseaudio pulseaudio
From the same thread - if the audio breaks, run:
systemctl --user restart pipewire pipewire-pulse
For me, the combination of unsetting the Switch windows keyboard shortcut, rebooting, and running gsettings as suggested at gnome.org helped:
gsettings set org.gnome.desktop.wm.keybindings switch-applications "[]"
gsettings set org.gnome.desktop.wm.keybindings switch-applications-backward "[]"
gsettings set org.gnome.desktop.wm.keybindings switch-windows "['<Alt>Tab', '<Super>Tab']"
gsettings set org.gnome.desktop.wm.keybindings switch-windows-backward "['<Alt><Shift>Tab', '<Super><Shift>Tab']"
vmplayer throws a Segmentation fault). Version 16.0.0 fixes this problem.$ sudo vboxconfig
vboxdrv.sh: Stopping VirtualBox services.
vboxdrv.sh: Starting VirtualBox services.
vboxdrv.sh: Building VirtualBox kernel modules.
This system is currently not set up to build kernel modules.
Please install the Linux kernel "header" files matching the current kernel
for adding new hardware support to the system.
The distribution packages containing the headers are probably:
kernel-devel kernel-devel-5.7.7-200.fc32.x86_64
This system is currently not set up to build kernel modules.
Please install the Linux kernel "header" files matching the current kernel
for adding new hardware support to the system.
The distribution packages containing the headers are probably:
kernel-devel kernel-devel-5.7.7-200.fc32.x86_64
Solution (source):
sudo dnf install -y "kernel-devel-$(uname -r)"
ulimit problemProblem:
WARNING: Max 1000 open files allowed, minimum of 40000 recommended. See the Neo4j manual.
Solution:
As suggested in this blogpost, to work around this, edit /etc/systemd/user.conf:
sudo vim /etc/systemd/user.conf
And add:
DefaultLimitNOFILE=40000
Some suggest to also edit /etc/systemd/system.conf and add the same variable.
Once you’re done with the edits, reboot your system.
Update: See also the recent official documentation.
Problem: After upgrading to Fedora 33, wifi repeatedly prompts for password and prompts for password (even though the password is correct). The journalctl log shows:
NetworkManager[...]: <warn> [1604657333.4499] device (wlp61s0): Activation: (wifi) association took too long
NetworkManager[...]: <info> [1604657333.4499] device (wlp61s0): state change: config -> failed (reason 'no-secrets', sys-iface-state: 'managed')
NetworkManager[...]: <warn> [1604657333.4554] device (wlp61s0): Activation: failed for connection '...'
Solution: As suggested in the Fedora Magazine, edit /etc/NetworkManager/conf.d/00-macrandomize.conf and add the following:
sudo vim /etc/NetworkManager/conf.d/00-macrandomize.conf
[connection]
wifi.cloned-mac-address=stable
Restart the network manager:
sudo service NetworkManager restart
This setting can also be changed specifically for each connection:
nmcli c modify <guid> 802-11-wireless.cloned-mac-address permanent
In Fedora 33, wifi connection times out for some APs even with the previous issue tackled. This can be a problem with e.g. some eduroam APs.
The journalctl output is along the lines of:
(wlp61s0): supplicant interface state: associating -> disconnected
(p2p-dev-wlp61s0): supplicant management interface state: associating -> disconnected
(wlp61s0): Activation: (wifi) association took too long
(wlp61s0): state change: config -> need-auth (reason 'none', sys-iface-state: 'managed')
(wlp61s0): Activation: (wifi) asking for new secrets
(wlp61s0): supplicant interface state: disconnected -> scanning
(p2p-dev-wlp61s0): supplicant management interface state: disconnected -> scanning
To fix it, revert to Fedora 32 policies as discussed in the Fedora Wiki by issuing the following command:
sudo update-crypto-policies --set DEFAULT:FEDORA32
Then, reboot your machine.
To change e.g. from Totem to VLC player, edit the gnome-mimeapps.list file (as suggested here):
sudo vim /usr/share/applications/gnome-mimeapps.list
Replace the org.gnome.Totem.desktop strings with vlc.desktop.
The keys Ctrl + Alt + F1 to Ctrl + Alt + F12 change between virtual terminals (also known as tty consoles). Sometimes, these cause crashes which can take down the whole system (this happened to me quite a few times on Fedora 32/33 and GNOME 3 when pressing Ctrl + Alt + F12). It seems it is not possible to disable these hotkeys – instead, they should be bound to a combination that is difficult to press. This website suggests adding the b key to the undesirable combinations.
for i in `seq 1 12`; do
echo "Set terminal ${i} to ['<Primary><Alt>F${i}b']"
gsettings set org.gnome.mutter.wayland.keybindings switch-to-session-${i} "['<Primary><Alt>F${i}b']"
done
guake -t to this hotkey in the GNOME settings did not work as expected – the resulting Guake window was was offset from the top left corner, a known issue.HP does not offer official drivers for Linux, so use HPLIP instead.
You may have a partial hplip installation but it will not work if it has missing dependencies.
To check whether all dependencies are available, run hp-check.
In my case, this revealed the following missing packages:
sudo dnf install -y cups libjpeg-devel cups-devel libusb1-devel sane-backends-devel avahi-devel net-snmp-devel python3-PyQt4
sudo dnf install -y xsane avahi-tools python3-notify2
Additionally, you may install the following package for an HPLIP GUI application:
sudo dnf install -y hplip-gui
To install your printer, run:
sudo hp-setup
If you’re using the GUI and it hangs, don’t forget to check the CLI – it may prompt you with a question whether to download a plug-in, accept a license, etc.
Fedora 32+ cannot connect to a TP-Link Archer C6 wifi router on 2.4GHz (meanwhile, the 5GHz variant works fine).
The log of sudo journalctl -xe -u NetworkManager shows the following log:
Aug 07 17:04:30 t480s NetworkManager[1276]: <info> [1628348670.0579] device (wlp61s0): supplicant interface state: disconnected -> scanning
Aug 07 17:04:30 t480s NetworkManager[1276]: <info> [1628348670.0579] device (p2p-dev-wlp61s0): supplicant management interface state: disconnected -> scanning
Aug 07 17:04:33 t480s NetworkManager[1276]: <warn> [1628348673.3745] device (wlp61s0): Activation: (wifi) association took too long
Aug 07 17:04:33 t480s NetworkManager[1276]: <info> [1628348673.3746] device (wlp61s0): state change: config -> failed (reason 'no-secrets', sys-iface-state: 'managed')
Aug 07 17:04:33 t480s NetworkManager[1276]: <info> [1628348673.3763] manager: NetworkManager state is now CONNECTED_LOCAL
Aug 07 17:04:33 t480s NetworkManager[1276]: <warn> [1628348673.3803] device (wlp61s0): Activation: failed for connection 'TP-Link_XXX'
Aug 07 17:04:33 t480s NetworkManager[1276]: <info> [1628348673.3817] device (wlp61s0): state change: failed -> disconnected (reason 'none', sys-iface-state: 'managed')
(There are no errors, just <warn> entries about the lack of secrets.)
This is a frequent problem with this router type.
The solution is to replace the wpa_supplicant service with iwd. Adopting the suggestions on Ask Ubuntu and the Linux Mint Forums:
Install iwd (iNet Wireless Daemon):
sudo dnf install -y iwd
Change the wifi backend:
sudo vim /etc/NetworkManager/conf.d/wifi_backend.conf
Add:
[device]
wifi.backend=iwd
Then, issue the following commands:
sudo systemctl stop wpa_supplicant.service
sudo systemctl disable wpa_supplicant.service
sudo systemctl enable iwd.service
sudo systemctl start iwd.service
sudo systemctl restart NetworkManager.service
If you would like to turn wpa_supplicant back on, change the /etc/NetworkManager/conf.d/wifi_backend.conf file to:
[device]
wifi.backend=wpa_supplicant
Then, run:
sudo systemctl stop iwd.service
sudo systemctl disable iwd.service
sudo systemctl enable wpa_supplicant.service
sudo systemctl start wpa_supplicant.service
sudo systemctl restart NetworkManager.service
This may not be sufficient – for me, a full reboot was needed.