Since I have been asked quiet frequently about my Linux desktop setup, I decided to write about it. Do not expect this blog post to be a nicely written article. Instead, expect a collection of settings and tweaks that I use to create a comfortable Linux desktop environment.
Please note, that this post is work in progress and will be updated over time.
I recently purchased the Lenovo Thinkpad X1 Carbon 6th gen. Read more about it here: /posts/2018-03-12-thinkpadx1c6/.
Other than this nice laptop, I have an external SAMSUNG UHD monitor and that’s about it.
Currently, I am running Fedora 27 on my Thinkpad X1, because it runs reliably on this very new hardware.
My default desktop environment is the awesome i3 tiling window manager (https://i3wm.org/). It is a very stable product, allowing to work mainly with shortcuts. It ships a good default configuration, which does not require much tweaking for me. Thanks to its minimalistic approach, the GPU is always at ease. This leads to quiet fans and great battery life (much better compared to more feature rich environments, such as GNOME or KDE, etc.).
You can read more about my i3 setup here.
IBus (Intelligent Input Bus)
I need to switch the keyboard layout regularly. This is done best by utilizing IBUS. This is all you need to do in order to use it:
- install it:
dnf install ibus-setup
- configure it to run under i3:
exec --no-startup-id ibus-daemon --daemonize
After you re-login to your i3, you will notice a system tray. Right click it to configure keyboard layouts, shortcuts, etc.
Using i3, you will be doomed to make use of
xrandr to configure screens. Because I am lazy, I chose the very cool
arandr graphical front-end for
xrandr instead. It allows to configure your screen with different resolutions, layouts, etc. much like macOS or MS Windows.
A neat feature of
arandr is, that it allows you to save the configured screen layout. I did this with two layouts,
$ ls ~/.screenlayout/ screen-default.sh screen-home.sh
arandr suggests to save your layouts in your
$HOME path, which is exactly what I did.
arandr saves your
xrandr configurations in ready-to-execute scripts. I use those scripts to configure my screen settings depending on my work environment (
default means that I use the laptop screen only,
home means that I have my SAMSUND UHD monitor attached to my laptop.. you get the idea). When I leave home and disconnect the external screen, I execute
Using this approach, I have a small number of scripts ready to configure my screen every-time exactly the same way I want.
An example configuration (internal screen is default screen & external screen [via HDMI] is configured to be “above” default screen) generated by
$ cat ~/.screenlayout/screen-home.sh #!/bin/sh xrandr --output HDMI-2 --off --output HDMI-1 --mode None --pos 0x0 --rotate \ normal --output DP-1 --off --output eDP-1 --primary --mode 2560x1440 --pos \ 448x2160 --rotate normal --output DP-2 --off
WXHD (high dpi)
The Thinkpad X1C6 comes with a display resolution of 2560 x 1440 pixels. It looks really nice, but renders fonts, UI elements, etc. too small for my old eyes.
To solve this issue, I need to configure DPI settings of X11 (i3 uses pretty much all functionality of X11 instead of re-implementing it, like many other desktop environments):
cat ~/.Xresources Xft.dpi: 140 # default is 220, which is too small
Other than that, I only needed to configure two other tools: Thunderbird and VirtualBox.
Using Thunderbird, install the
No Small Text addon and configure the minimum font size.
With VirtualBox, I had no trouble with the GUI, but the guest VMs interface. All I needed to do is configure the
Scale Factor via VM window -> View -> Scale Factor -> 125%.
I prefer tap-to-click with the Trackpad. Tap-to-click can be enabled as following:
xinput list # list input devices xinput list-props "SynPS/2 Synaptics Touchpad" # list trackpad input options xinput set-prop "SynPS/2 Synaptics TouchPad" "libinput Tapping Enabled" 1 # set trackpad tap to click input option
For power management and battery life optimization, I use
powertop to create a
dnf install tuned-utils powertop2tuned new_profile_name tuned-adm profile new_profile_name systemctl enable tuned systemctl start tuned
By the way, I always use powertop with all options enabled (
--enable), even if not recommended. I did this (USB auto suspend, etc.) for the last ten years, without experiencing stability issues. However, use this flag at your own risk. You have been warned :wink:.
For further power management settings, I use the
- install it:
dnf install xfce4-power-manager
- configure i3:
exec --no-startup-id /usr/bin/xfce4-power-manager
xfce4-power-managervia system tray
For network management, I use
network manager, which is shipped by default on Fedora and many other distributions. I access
network manager through
- configure i3:
exec --no-startup-id /usr/bin/nm-applet
- configure network through
To lock the screen on i3, I use i3lock:
install the package:
dnf install i3lock
bindsum $mod+l exec /usr/bin/i3lock -c 000000
- using this configuration, I can lock my screen with SUPER+l, just like Windows users lock their screens
In order to have a locked screen on resume from suspend, I use the following
systemdconfiguration (don’t forget to set
User=to your username):
[Service] User=USERNAME Type=forking Environment=DISPLAY=:0 ExecStart=/usr/bin/i3lock -c 000000 [Install] WantedBy=sleep.target
Enable the configuration:
systemctl enable i3lock