Linux Documentation


Edit from 2022-04: This was written more than 1.5 years ago. I was still mostly new back then and have learnt very much since then. How much? A lot. Right, you’re in. So you might not want to take the things I’ve written here too seriously. Some more specific things on this page are still very useful, but once I Finally Make My Website™, I’ll completely revamp this into a tech section with many separate articles.

When I switched to Linux, I had no idea what I was doing, of course. It’s a completely different operating system. I searched the interwebs to find out how to do the things I need to do or issues that arose and I couldn’t figure out by myself. Some things took days to find out. Many “solutions” didn’t work or they were explained in a way that assumed one already knows half of the solution. Like when I asked Amarizo how to do something for my placeholder website before I had learnt web development myself and he just said “use CSS”. Great, but how do I do that?

This page is intended for several purposes: For myself to document things that I have to do with each installation, for others who face the same problems I had and for people who are new to Linux in general and want to know if it’s the right operating system for them. In the end, it turned out to be a complete beginner friendly guide aimed to explain as much as possible with required background knowledge to allow everyone to actually implement the solutions. Not “just use CSS“, but “put this there and this is why and how it works”. And not “why would you want that”, “i dont know i dont have the product” or “the human eye cant see css anyway”.

If you have issues with anything on Linux, take a look at the table of contents below and see if you can find sections that relate to your issue. For example: shortcuts in FamiTracker don’t work. Find and read the sections about FamiTracker and shortcuts. If you don’t understand something, something doesn’t work or you have any other questions, don’t be like me and spend weeks trying to figure it out on your own. Just ask me, I’m happy to help!


Go to Legend (of Zelda) to understand the meaning of line colours and other formatting.

If you clicked on one of the many links that take you do a different section on this page and you want to go back to the line you were at before, simply use your web browser’s back button. You can also press Ctrl F to open a search box.

Is Linux Right for You? Linux Distributions Desktop Environments
Explanations Legend (of Zelda) Basic things you need to know if you’re new to Linux
Installing Linux Pre-Installation Installation Issues
General Configuration System Settings (mostly KDE Plasma) Display Mouse Cursor Speed Influenced by Screen Scaling Physical Mouse Sensor Resolution Appearance Fonts Cursors Workspace Shortcuts User Profile Picture Regional Settings Start with NumLock Active Alt + Click Behaviour DNS Server Drawing Tablet Settings
Other Plasma Configuration Desktop Task Bar Start Menu
Drives Drives on Linux Permanently Mounting Drives Permanently Mounting Samba Shares
Monitors Resolution and scaling on Linux Refresh rate and Nvidia G-Sync on Linux Tearing Activating G-Sync Proprietary Nvidia Drivers
Audio Linux Audio Systems Audio Latency Volume Permanent Default Audio Device Specifying Audio Devices for Single Applications
Custom Keyboard Layouts
Job Scheduling with Cron
Hibernation Hibernation / Suspending to Disk versus Sleep / Power Saving / Suspending to RAM Enabling Hibernation Scheduling Hibernation with Cron
Custom Boot Settings System Output During Boot Changing GRUB Boot Menu Automatic Selection Time GRUB Recordfail Showing the Boot Menu and Setting the Timer to 30
Other Issues Solved Issues Stuck after Login
Unsolved Issues Keyboard Settings Greyed Out Stutter in Games
Applications and Games Prerequisites Installing and Updating Applications Dependencies Uninstalling Applications Compiling Game Graphics Drivers and Vulkan GameMode Wine Lutris Valve Proton Virtual Machines
Native Applications Windows Applications
Native Games Windows Games

Is Linux Right for You?

The main advantages of Linux are privacy, security and user control. Some distributions also use significantly less resources and can make even an old device very responsive. Whether you can and should use it depends on what you need your computer to do and how much computer knowledge you have.

The first user group is the ordinary small-user with small-mixers who only uses their computer for web browsing, emails and similar simple things. This type of user is one of the prime targets for Linux. Everything they need works out of the box and the user experience is the same. The only difference is much greater privacy and security which is especially important and useful for users who are less versed in the digital world.

For people who use more applications, it depends on what you use and need. Many applications are also available for Linux, I was surprised myself that almost everything I use is available natively. And for many applications that are not, there are great alternatives. Look up if the applications you use are available for Linux and take a look at the Applications section for recommendations in almost all areas and what works and doesn’t work on Linux. is also a great resource. If you need an application that is not available on Linux and you can’t or don’t want to use an alternative, this is usually no problem either. Wine is a compatibility layer that allows running nearly every Windows application on Linux. To know if and how well an application runs with Wine, look it up at in the search bar. For the few applications that don’t work, you can try Lutris. It’s based on Wine and intended to play Windows games but it can also run some applications that don’t work with Wine by itself, like Clip Studio Paint. To look up if and how well an application runs with Lutris, look it up at, although you won’t find too many reports for applications as Lutris is mainly for games. If that also doesn’t work, you can always run Windows inside Linux using a virtual machine. To conclude, applications are no problem in almost all cases and Linux is a great choice.

The biggest issue is gaming. While many applications are available for Linux, games are unfortunately far less commonly available for Linux and due to their complex nature it’s not that easy to get Windows games to work on Linux. First, check if the games you play are available for Linux. If not, there are two possibilities. Steam has their own compatibility layer called Proton that is based on Wine and allows playing any game from any platform just by clicking on play as normal. Most Steam games run well but you can look them up at There is also Lutris, as I already mentioned. Using Lutris is not quite as simple as activating a checkmark and then playing everything as normal, but they provide installers for many games and Overwatch for example runs perfectly. Look up how well games run on Lutris here.

If you use music production software or games, audio latency could be a problem by default that you have to manually solve. Also note that G-Sync is only usable with one monitor and that there is only one display scaling value that applies to all monitors.

You can also install Linux in addition to Windows and keep using Windows when you want to play a game that only works there, as I do. Video games can be no problem on Linux but they can also be difficult to set up. When a game doesn’t work out of the box, you are a gamer who is not the best technical support hero and you don’t have anyone who can help you (but you have me), Linux might not be the most comfortable choice for you.

For people who need very specific other things, it could be hard to find out how to do them. But if you need such specific things, you are most likely a technical support hero like me and can figure it out in merely a month. I’m definitely not a computer professional but I daresay I am at least as Advance as Pokémon Pearl Edition. Asking other people would probably be helpful as well. This is the second prime target group for Linux.

Linux Distributions

There are countless different operating systems in the Linux family, called distributions, also, known as distros sometimes. Some popular ones are Ubuntu, Debian, Fedora, Linux Mint, Arch, and Manjaro. Many distributions are based on other distributions, for example, Ubuntu is based on Debian and Manjaro is based on Arch. If you’re new to Linux, I recommend using one that is beginner-friendly and widely used to be able to find help quickly and for maximum application support. Good choices are Ubuntu, Linux Mint, Debian and Manjaro. I use Ubuntu on my computer and Debian on my Raspberry Pi. If you use a lot of creative applications, especially relating to music, I recommend Ubuntu Studio which preinstalls creative applications and other optimisations like realtime audio.

Desktop Environments

The visual desktop environment also provides many different options and can mostly be picked independently of the distribution. Some distributions like Debian offer a selection of many desktop environments to choose from during the installation. Others like Ubuntu offer different flavours, as they call it, different versions that each come with a different desktop environment. For example, I use Kubuntu which is Ubuntu with the KDE Plasma desktop environment because KDE Plasma looks great (to my eyes) and it’s one of the most customisable ones. Some environments offer more customisation and others less, some use few resources and some many. Some notable ones include KDE Plasma, GNOME, Cinnamon, LXQt, LXDE, Budgie, MATE and Xfce. Click on the links to take a look at them and choose one you like.


Legend (of Zelda)

important and you should read it if you don’t want me to send the poodle from next door after you
background information that you might not care about or already know
optional and/or just my personal preference that you might not care about

If something is underlined red in the table of contents, it means that it contains something that you probably won’t look for by yourself but you might need.
If something is underlined yellow, it is an application that I use and recommend or plan to use but haven’t tested enough to recommend yet.
If something is underlined purple, it is an application that someone I trust recommends.

Alt F4 key shortcuts
the state of a tick box

sudo apt update a terminal command
Edit a settings option you have to go to
Chrome the name of an application (and of evil)
/pixelart/SmilesGoForMiles.png a path (a path!)

/home/phalio italic means you have to replace it with your equivalent, for example your username instead of mine

Basic things you need to know if you’re new to Linux

Commands are important and can do many things exclusively or faster than with a graphical user interface. The default shortcut to open the terminal is Ctrl Alt T.
Some commands require admin/root privileges which you can get by prefixing the command with sudo and then entering your password.
The path ~ leads to the current user’s home folder, for example /home/phalio/ which is where common folders like downloads and documents are stored, similar to C:\Users\Phalio\ on Windows. The terminal usually starts at that path and therefore displays ~.
The character after the path in the terminal can either be $ for a regular user that has to use sudo or # when you’re using it as root.

Some common commands are:
sudo apt-get update or the short version sudo apt update to look for updates and new package sources on Debian and its derivatives like Ubuntu
sudo apt-get upgrade or the short version sudo apt upgrade to install those updates
cd /home/phalio/Pictures/ to change the terminal’s current directory, for example to the Pictures folder (paths are case sensitive; if they have spaces, you have to enclose the whole path with quotation marks)
mkdir to make a directory, also, known as a folder sometimes
rm to remove a file or directory
rm -r to remove a directory and all subdirectories
nano to edit text files in the terminal, use the arrow keys to move inside the file

To copy and paste in the terminal, you have to press shift as well Ctrl Shift V because the regular shortcuts without shift are used for other things.

File name extensions like .txt are optional and purely cosmetic on Linux. Files and folders that start with a period are hidden in file managers. Hidden files can be viewed by opening the file manager’s settings and selecting Show Hidden Files.

Installing Linux


If you come from Windows, you should definitely write down your Windows product key, no matter if you want to replace Windows or install Linux next to it, just to make sure you can always install Windows again. Do the same for all other product keys if you haven’t already. You can get your Windows product key with this tool. I don’t know how it is for MacOS.

Installation Issues

When I tried to switch to Linux in the beginning of the year, the proprietary Nvidia drivers were broken and broke the login screen. I gave up then but the solution would have been to deselect proprietary drivers during the installation and getting them later.

During my last installation two weeks ago, the installer always crashed at like 90 %. The only way to fix that was to install the operating system with no internet connection. If you’re connected with a wire and don’t want to unplug it, just boot into a live session first and disconnect the internet connection in the task bar at the bottom right. Installing offline won’t download the proprietary Nvidia drivers if you selected them. You can get them later.

General Configuration

System Settings (mostly KDE Plasma)


The first thing I do is configuring my monitors that are in the wrong order and at 60 hz by default. Maybe I should switch the order of the plugs in the back of my PC. They have different heights, resolutions and refresh rates as well. I start by opening the application System Settings and natigating to Hardware > Display and Monitor. There, the virtual positions can be arranged and resolutions, refresh rates, the global scaling percentage, which monitor is the main screen and other things can be set. I try to position my screens at heights that make my cursor move between screens seamlessly. To be able to quickly reproduce the arrangement at any time, I write the exact positions down, in my case -600 -360.

The refresh rate defaults to 60, even if the monitor supports higher ones. I wonder how many people bought a 144 hz monitor and never set the refresh rate. On Linux, I decided to set my primary monitor’s refresh rate to a multiple of 60 hz, in this case 120 hz, to make it perfectly compatible and synchronous to 60 and 30 fps videos, games and applications. Don’t forget to Apply.

More information about resolution and scaling and about refresh rate and G-Sync is described later. Tearing will be solved here.


Then, I go to Hardware > Input Devices > Mouse. By default, most operating systems like Windows and Linux have cursor acceleration enabled. That means, if you move your mouse twice as fast, the cursor will move (something like) four times as fast. If you didn’t know that setting exists, you’ve probably never realised this and are used to it, like I was. I hate it and switch it off by selecting Acceleration profile = Flat.

The Pointer speed slider is the exact same as on Windows and probably other systems too, so this applies to those as well. I set it to the middle, the sixth step from the left. This leaves the inout from the mouse untouched. The other slider steps will simply double input values (making it skipping pixels on the screen) or skip input values from the mouse to change the cursor speed. The unfortunately unlabelled steps multiply the cursor speed by the following factors:

0.03125 | 0.0625 |  0.25  |  0.5   |  0.75  |   1    |  1.5   |   2    |  2.5   |   3    |  3.5

For example, setting it to × 2 doubles the cursor speed by applying every input value twice, skipping every second pixel. Setting it to × 0.5 halves the cursor speed by ignoring every second input from the mouse. The best option is setting it to 1 for 1:1 smooth mouse input. If you want to be able to move your cursor to every pixel without skipping any, it has to be no higher than 1. This applies only to 100 % display scaling, continue reading for others.

Cursor Speed Influenced by Screen Scaling

Your screen’s DPI scaling percentage also affects your cursor speed and therefore requires other values for 1:1 input or no pixel skipping. For example, with a DPI scale of 200 % and a pointer speed of 0.5, the the DPI scale of 200 % will apply all mouse inputs twice to double the speed and the pointer speed of 0.5 then ignores every second input to halve the speed, therefore it goes back to 1:1 input that allows smooth and pixel perfect mouse movement. Generally, multiplying the DPI scale with the pointer speed gives you a number that tells you your cursor accuracy. If it’s 1, it gives you 1:1 input. If it’s less than 1, the cursor will stay at some pixels twice as long. If it’s greater than 1, it will skip pixels. For example, 125 % × 0.75 = 0.9375. The cursor can be moved to every pixel. 125 % × 1.25 = 1.5652. The cursor will skip about every third pixel.

Physical Mouse Sensor Resolution

CPI (counts per inch), the mouse sensor’s resolution, commonly wrongly referred to as DPI, is another important topic. The usually very high DPI value mice are advertised with is not the whole story. Those mice have a native resolution, usually 800 CPI today, and a maximum interpolated resolution, achieved by guessing the mouse movement between sensor pixels by their brightness. That allows for higher speeds at the cost of accuracy. The higher you set the CPI above the native value, the more the input will jitter. If 1:1 cursor speed is too slow for you, higher mouse CPI is the way of increasing cursor speed with no pixel skipping. However, if you want perfect mouse input, especially for accuracy-based video games, native CPI is the best choice. As I said, it’s usually 800 for proper mice that cost more than 5 € in 2020, but you should check yours either by searching the web for your mice’s name or for its sensor’s name. If you want to know more about this topic, I recommend this reading and this watching.


Back to System Settings. I prefer dark themes, so I select Appearance > Global Theme = Breeze Dark. I like this theme, but there are many others you can get at the bottom right at Get New Global Themes…. A lot of things can be customised in Appearance. I also prefer Application Style > Application Style = Fusion. For some categories, you can even hover over an entry and click on the little pencil icon to edit it yourself. I like duckness with colourful colour accents, so I go to Colors and click on my current global theme’s pencil icon Edit Color Scheme… to change the colours a bit, mostly to yellow.


At Appearance > Fonts > Fonts, I increase all font sizes by 2 to make them big enough for my WQHD screen. At Fonts > Font Management, I install my many downloaded (and self-made) fonts. The preinstalled fonts are located in the subfolders of /usr/share/fonts/. I’ve read that manually installed fonts go there as well, but they aren’t there for me. One application didn’t recognise my custom fonts and I had to manually place it there. Should you have the same problem, try that.


At Cursors, I set Size = 24 at the bottom right because, at least for me, the cursor size keeps changing when I hover over certain things while it’s set to Resolution dependent. I don’t really like the default cursor, but I haven’t found a good one at the custom section. I should make my own.


At Workspace > Workspace Behavior > General Behavior, I like to set Animation Speed = Instant. Animations just waste time and they don’t even look good most of the time, in my opinion. I disable automatic screen locking at Workspace Behavior > Screen Locking > Lock Screen = , because I don’t want to put in my password every time I went to the bathroom or made food, and there’s nobody here who could exploit my absence to use my PC unauthorisedly. I don’t think I’ve ever seen that word in adverb form.

At Workspace > Startup and Shutdown > Desktop Session, I set Confirm logout = because I want the PC to shut down immediately when I click on the button in the start menu instead of going to another menu where I have to click on shutdown again.


In the subsections of Workspace > Shortcuts, I disable some shortcuts that I might accidentally use, like Ctrl W to close an application and shortcuts that conflict with ones from applications, like Global Shortcuts > Other Shortcuts > KWin > Switch to Desktop 1 = Ctrl F1. If an application’s shortcut doesn’t work, check if there is a global shortcut that interferes and disable or change it.

I also change or add some, like Meta T for terminal, Meta C for calculator (a different calculator that I will install later). Global Shortcuts > Other Shortcuts > Plasma > Open Klipper at Mouse Position is quite useful, I bound it to Meta V like on Windows. Unfortunately, the selected clipboard doesn’t get pasted immediately like on Windows, it just gets copied to the actual clipboard that you can then paste into the cyberspace with the ceterl key. The ceterl key.

The Windows key is called Meta, by the way. I wonder if Keyboard manufacturers pay Microsoft to use their logo for that key or if Microsoft pays them all to use their logo instead of the one from a different OS or even a neutral one. When everything is set, of course Apply. The changes can be exported at the bottom right at File > Export Scheme…. If you need access to other drives for that, I will get to that later.

To add custom hotkeys that execute commands, go to your desktop environment’s global shortcut settings. For KDE Plasma, go to the shortcut settings as described above and click on Custom Shortcuts. At the bottom, click on Edit and optionally on New Group first to make a folder if you plan to add multiple shortcuts for one application. If you make a folder, you have to activate its content first by ticking the box to the right of its name. At Edit, click on New > Global Shortcut > Command/URL to make a new shortcut. Go to the Trigger tab and click on Shortcut: None to define a key combination. Click on the Action tab and enter the command you want to be executed. Don’t forget to Apply.

Some audio players (Rhythmbox, Quod Libet and probably others) that have no settings for custom shortcuts have commands that can control things like play/pause and volume. These commands look like this: rhythmbox --play-pause. Try them in the terminal to see if your player supports it or find out its commands with rhythmbox --help. I use --play-pause, --next, --previous, --volume-up and --volume-down.

User Profile Picture

The user account you created during the installation has no profile picture. One can be set at Personalization > Account Details > User Manager > Phalio by clicking on the icon next to your name.

Regional Settings

I like to have my formats in a very specific way, like this to be exact: 2020-09-27, 18:00, 1 000.1 (small non-breaking space), 6.00 € (again), metric. Unfortunately, besides task bar time formatting, the formatting can’t be manually edited. Only formatting used by different regions of the world can be selected at Personalization > Regional Settings > Formats > Detailed Settings. Separate formatting settings are disabled by default, but they all default to German for me, even though I set my region to en_US. I guess it’s because of my physical location. I tried to find regions that use exactly, or at least as close as possible, my desired formatting:

Numbers: Maali
Time: Sweden-English
Currency: Frankriich-Schwiizertüütsch
Measure: Deutsch

Unfortunately, some installation processes didn’t work and displayed locale errors when I had the regional settings set to all kinds of places. I had to switch Detailed Settings off again, making all units German. Disgusting.

Start with NumLock Active

To start with NumLock being active because who wants not to have numbers on the numpad, go to Hardware > Input Devices and set NumLock on Plasma Startup = Turn on.

Alt + Click Behaviour

By default, holding Alt enables you to drag windows by clicking anywhere on them instead of just on the title bar. This is useful but if you actually need to use alt+drag for something, like negative selections in image editing and drawing applications, you can or rather have to either disable it or change it to another key. To do so, go to Workspace Window Management Window Behavior Window Actions and either set Modifier key to the other option, Meta (the Win key; I did this and it doesn’t cause issues with the start menu or anything) or disable it completely by setting the four options next to it to Do nothing.

DNS Server

I don’t know how good your prodiver’s DNS server is, but mine is slow, updates take hours and it blocks some domains. Therefore, I use Cloudflare’s server. They certainly are fast and quickly updating. Otherwise I don’t know, tell me if you know a better one. To specify a DNS server, I go to Network > Connections > IPv4 and set Method = Automatic (Only addresses). Then, I enter the IPs: DNS Servers =, It works the same way in the IPv6 Tab, just with the IPs 2606:4700:4700::1111,2606:4700:4700::1001 After a browser restart, the used DNS server can be checked at

Drawing Tablet Settings

Fortunately, there is no need to install an annoying application to use a Wacom tablet like on Windows. By default, the tablet area is mapped to all screens, which is of course no problem if you have only one. Pressing Ctrl Meta 1 maps it to screen 1. And that’s it, it works just by plugging it in. I’m pretty sure that on Windows with Wacom’s application, the screen is mapped to a 4:3 tablet area by default, messing up the horizontal and vertical sensivity. Another thing that probably many people never change. To make sure it’s actually mapped to a 16:9 area on Linux, I put a physical ruler on my physical tablet and drew lines of the same size, some vertically, some horizontally and then compared their lenghts on the screen. They matched.

The tablet settings are located at Hardware > Input Devices > Graphic Tablet when the tablet is plugged in. All I changed was mapping the pen buttons in the Stylus tab. I use the lower button to switch between the primary and secondary colour and the upper button to move the canvas. I don’t use the 4 buttons on the tablet. My left hand is on the keyboard. I’ve bound all important tools and functions to keys on the left side of the keyboard for very easy and immediate access. The Raw Sample Rate and Suppress Ratesound like something that should be set to the maximum/minimum, but doing so for some reason increases the already noticeable inputlag with this tablet by a lot, so I guess it should stay this way.

Other Plasma Configuration

The desktop can be customised with a lot of panels and widgets at Right Click. For many things like the task bar and start menu, there are multiple versions that can be switched to with Right Click > Show Alternatives….


I use the start menu, task bar and shortcuts to open applications, not the desktop. I set Right Click > Configure Desktop… > Wallpaper > Layout = Desktop to disable files and folders being shown on the desktop. Then, I either set Wallpaper Type = Plain Color to a dark grey fitting to the dark theme or Wallpaper Type = Slideshow to my downloaded wallpapers with a new image every day. All of this has to be done for each monitor separately.

Task Bar

The task bar is called task manager. At Right Click > Configure Task Manager… Behavior, I set Group = Do not group because I want to be able to click on every open application immediately instead of having to click twice and On middle-click = Close window or group to be able to close something with one click instead of rickt click and close.

At Right Click > Edit Panel…, I grab the task bar at Screen Edge and pull it to the top. Then, I grab Height and pull the height to 42 pixels to make it a little bigger and to give it just enough room to display 32×32 icons. I also like to add Right Click > Add Widgets… > System Load Viewer to the task bar to be able to always view the system load and clicking on it opens the Task Manager which is called System Monitor. In the System Monitor, I like to Right Click the category bar with Name, Username etc. and add some columns like GPU usage.

To display the date in addition to the time, I Right Click the time and select Configure Digital Clock… > Show date = . Changing regional settings in the System Settings created some problems when installing applications for me, so I just set Date format = ISO(-8) Date for now.

Start Menu

I don’t need the Favorites, Computer and History tabs in the start menu which is called application launcher. Therefore, I right click the start menu symbol and go to Configure Application Launcher… and drag the tabs I don’t need to the field below.

I want the content of the start menu to be perfectly organised with custom categories and only applications I actually use. To configure it, I right click the symbol again and select Edit Applications…. I customize existing and new submenus with names and icons and I make a submenu to move all applications and categories into that I don’t need, that way I don’t have to delete them. To add a new application that is not automatically added, create a New Item… and then enter the path or command to open it into Command. To the right of Command is a folder button for a gui and to the right of Name is the icon that will be used. This icon is not just for the start menu but will also be displayed in the task bar and the top bar of the application when it’s opened from that start menu shortcut. You can simply use custom icons for applications like this. Applications and submenus can be dragged into and out of submenus with the mouse, but changing the order has to be done with Move Up and Move Down at the top for some reason. But I haven’t installed any other applications yet, so I’ll customise the start menu content later.

The height and width of the start menu can be changed by editing a config file. To be safe, copy the file in its original state first, that way the original state can be restored at any time in case something doesn’t work (this is one very long line):

sudo cp /usr/share/plasma/plasmoids/org.kde.plasma.kickoff/contents/ui/FullRepresentation.qml /usr/share/plasma/plasmoids/org.kde.plasma.kickoff/contents/ui/FullRepresentation.qml.orig

If you want to restore the original, use the following command:

sudo cp /usr/share/plasma/plasmoids/org.kde.plasma.kickoff/contents/ui/FullRepresentation.qml.orig /usr/share/plasma/plasmoids/org.kde.plasma.kickoff/contents/ui/FullRepresentation.qml

Now, to edit the file, use the following command:

sudo nano /usr/share/plasma/plasmoids/org.kde.plasma.kickoff/contents/ui/FullRepresentation.qml

Use to navigate and find the following lines near the top:

Layout.minimumWidth: units.gridUnit * 26
Layout.minimumHeight: units.gridUnit * 34

Change these numbers to anything you like. Save with Ctrl O and confirm with Enter. If you want to see the result before closing the file so that you can keep adjusting the numbers until you get the desired size, open another tab with Ctrl Shift T or open another terminal. In the empty tab or terminal, reload the start menu with plasmashell --replace. When you’re done, close the config file with Ctrl X.

I have no idea what sort of unit this is supposed to be. They don’t have to be whole numbers. I extended the height to fit in 12 entries by setting the height value to 38.4.


Drives on Linux

Any storage device you want to use has to be mounted into the file system first. They can either be mounted temporarily by Left Clicking on their name at the bottom left of the file manager or with the command mount, for example sudo mount /dev/sda1 /media/phalio/livelubuntu, or they can be mounted permanently by adding an entry to the file /etc/fstab. Drives are mounted according to fstab entries at boot, but you can also immediately apply new entries with sudo mount -a instead of having to reboot.

There are two predefined folders to mount storage that you should use: /media/phalio/ for temporary devices like USB drives (if you click on a device in the file manager, it will be mounted there) and /mnt/ for permanent devices like internal drives. You could theoretically mount drives anywhere (as I used to do) but as some things are predefined for these folders, you might run into issues (as I did).

Each storage device has a device path like /dev/sda, /dev/sdb etc. and each partition on it has an additional number at the end to identify it like /dev/sda1, /dev/sda2 etc. These paths are assigned at boot/connection and can change each time, so you should not use them for permanent purposes. Each partition also has a UUID, a universally unique idenfier, that is written to the drive and always the same, even if you connect it to a different PC. To find out device paths and UUIDs, use the command lsblk -f which displays device path, file system, display name, UUID, total space, used space and, if mounted, the mount location of all connected storage devices.

If you already (temporarily) mounted a drive, you have to unmount it in the file manager with Right Click on the drive at the bottom left > Unmount or with sudo umount /dev/sda1 before it can be (permanently) mounted at another location.

Permanently Mounting Local Drives

To mount a drive, it has to be identified either with the device path or preferably the UUID. They can be found out with the command lsblk -f. Look for the partition you want to mount and copy the UUID by marking it and pressing Ctrl Shift C (if you want to mount multiple drives like me, paste them somewhere so you don’t have to do this step again every time). Before you can mount a drive, you have to create the folder to mount it to in /mnt/. That folder can only be edited with root privileges, so use the terminal to create subfolders, for example sudo mkdir /mnt/linuxgames. Then, edit the file systems table with sudo nano /etc/fstab. Add a new line for each drive. Ext4 partitions (Linux) have to be added like this (paste with Ctrl Shift V):

UUID=f070c32f-09af-4b92-b535-da703b8d71c1 /mnt/linuxgames ext4 auto 0 0

To save, press Ctrl O, confirm with Enter and close the file with Ctrl X. Use sudo mount -a to mount all drives according to fstab entries immediately instead of having to reboot first. Remember that they have to be unmounted before mounting them.

To add NTFS (Windows) partitions, you need the package ntfs-3g which is preinstalled on many distributions like Ubuntu. If you type ntfs-3g into the terminal and it doesn’t say “Command 'ntfs-3g' not found”, you already have it. If you don’t have it, you can get it with sudo apt install ntfs-3g. The fstab entry for NTFS drives has to look like this:

UUID=264007F74007CC8D /mnt/fideos ntfs-3g uid=1000,umask=0022 0 0

As you can see, NTFS UUIDs are a lot shorter. uid=1000,umask=0022 is needed for permissions, otherwise some applications won’t have access. UID is your user ID which can be found out with id. Each user has their own UID and they usually start at 1000, so, unless you have multiple users and are not the first one, your UID is most likely 1000. If not, you have to modify the fstab entry to your proper UID.

I like to neatly arrange my many partitions in the bottom left of the file manager, first by giving the main partition a nice name instead of just “1, 2 GiB Hard Drive. To do so, I open KDE Partition Manager on KDE Plasma or any other partition manager like GParted, select the partition (the one at mount point /), name it at Right Click Properties Label. Then, I rearrange the drives in the file manager by dragging them to have the main drive first, then files, fideos, games and Windows partitions.

Permanently Mounting Samba Shares

A Samba entry in fstab has to look like this:

// /mnt/pi cifs username=pi,password=123456,uid=1000 0 0

It consists of:
// local IP and Samba share name
/mnt/pi folder to mount to
cifs the file system “Common Internet File System”
username=pi Samba username
password=123456 Samba password
uid=1000 your user ID on your current PC as explained above to get write permissions

The Samba password must not contain commas or other special characters that fstab would misinterpret. It’s also not the most elegant way to have the password as plain text. There is supposed to be a way to point to an encrypted password file somehow, I believe, which would also eliminate the problem of commas, but figuring this out so far took me long enough. I will probably go back to this at some point. Tell me if you know how it works.


General monitor configuration in the System Settings like setting resolution, refresh rate, primary screen and position are described above.

Resolution and scaling on Linux

On Linux (at least with the X Window System which is the default and currently best display system on Linux), there is only one scaling value for all screens. Wayland allows separate values but it caused a lot of issues for me and gaming is impossible. That means, if you have a 1080p (FHD) and a 2160p (UHD) screen like me, you can’t set the scaling for just the UHD screen to 200 % as you can on Windows. The only way to make everything the same size is reducing the UHD monitor’s resolution to FHD as well or setting the global scale to 200 % and increasing the FHD monitor’s resolution to UHD. The latter method would make use of the full UHD resolution, but not everything works well with a scaling value that is not 100 % and doubling the physical resolution decreases performance, messes up badly scaled things on that screen as well and is just a very messy solution. The former method makes everything visibly blurry on the UHD screen which is especially bad for pixel art.

I found out that xrandr, a command-line application for display configuration which can be installed with sudo apt install x11-xserver-utils and is installed by default on Ubuntu, allows setting the transformation filter to bilinear, which it is by default, or nearest neighbour, which is perfect for pixel art and, I hoped, would eliminate blurryness and make it look like a regular FHD screen. Unfortunately, the version of xrandr included in that package is not up to date and only the latest version at that has to be compiled first adds that function.

I had no idea how to do that and it took me quite a while to successfully compile it without errors. I don’t remember how exactly I did it, but it doesn’t matter because it turned out to be sharp and good for pixel art, but look extremely pixelated for everything else. Way worse than a real FHD screen and, for non-pixel-art, worse than slightly blurry bilinear filtering. Apparently, properly using hardware pixels and subpixel antialiasing makes a big difference to smoothness. Therefore, I decided to stick to bilinear. And my primary screen, which is 1440p (WQHD), used to be at 125 % on Windows, but since WQHD is not a multiple of FHD, I just leave it as it is and increase the global font size a little instead.

Screen scaling can also make your cursor less accurate. It turned out to be a good thing that I can’t use multiple scaling values that are not multiples of each other anymore after all.

Refresh rate and Nvidia G-Sync on Linux

On my PC with Windows and with my Laptop I had before, I had tearing issues in games. Even without tearing and with high fps, games didn’t look smooth at all. That changed once I bought myself a G-Sync 144 hz monitor from the money I got on my 18th birthday. It was incredible. It was like when I was 16 (?) and got my glasses. My visual experience increased tremendously, to a degree that was unimaginable for me before. And the smoothness thanks to G-Sync and 144 hz is just as incredible as the sharpness thanks to my glasses. I could actually see what was written on the board and I could see people’s facial expressions when they were more than 1, 2 metres away from me. And I could see teachers looking me directly in the eyes when they asked me a question, which was scary and required some getting used to. But the most amazing thing was probably that I could see landscapes in 16k and I could actually see the beautiful tiny dots of light in the sky, also, known as stars sometimes. I digress.

144 hz are of course incredible. G-Sync removes tearing, but it also does something else that is just as important to a smooth visual experience as high fps and no tearing: a constant flow of images/frames with the same time frame between each frame no matter how many fps are displayed because G-Sync removes tearing by adjusting the monitor’s refresh rate to the computer’s fps. That means, no matter how many fps one has, at least up to the maximum refresh rate, the flow of frames will be perfectly smooth and not stuttery because some frames are displayed multiple times and others are skipped. This, in my opinion, is the most important factor. Before G-Sync, even 60 fps looked more like 30 fps most of the time, simply because of this. And even lower fps values look good when the frames match the refresh rate.

Now back to Linux. Well, almost. G-Sync only works when one application covers a viewport entirely and when every monitor of that viewport supports G-Sync. That means that it won’t work in general with multiple monitors. On Windows, dedicated fullscreen creates a separate viewport that G-Sync can address, so playing games in proper dedicated full screen allows you to have G-Sync active and multiple monitors. Unfortunately, there’s no such thing as dedicated full screen on Linux. So, with multiple monitors, it’s impossible to use G-Sync. And it only works with the proprietary drivers. I got it to work once with only one screen, but not afterwards.

No G-Sync means that I had to solve the issues of tearing and asynchronous refresh rates otherwise. And unlike in Windows where usually only games have tearing for me, everything was tearing a lot on Linux. But I solved it, and that means you can solve it too, even with no G-Sync. I don’t know what it’s like with AMD FreeSync. I assume it has the same viewport limitations.


I have a Nvidia graphics card and use the proprietary drivers that are required for gaming. I don’t know if tearing is present with the open drivers or with other graphics cards. It definitely is for me, and it can be solved in the application NVIDIA X Server Settings that comes with the proprietary driver. Go to X Server Display Configuration. At the top, all monitors are listed. If you have multiple monitors, you have to click on each one and do the following steps once for each of them. Set Advanced… > Force Full Composition Pipeline = . When you did this for all monitors, click Apply > OK and, to preserve the changes after boot, click Save to X Configuration File > Save > enter your password. Then, close the application with Quit > Quit.

Activating G-Sync

If you have only one monitor as explained above and you want to activate G-Sync (you’ll need the proprietary drivers), open NVIDIA X Server Settings and activate X Screen 0 > OpenGL Settings > Allow G-SYNC/G-SYNC Compatible = and Enable G-SYNC/G-SYNC Compatible Visual Indicator = . Close with Quit > Quit. Now, G-Sync should be active when one application covers your whole screen. When it’s active, the visual text indicator at the top right of your screen should say so. If not, G-Sync is not active, either because not the whole monitor is covered by one application or some other error. If everything works or you give up, you can deactivate the visual indicator.

Proprietary Nvidia Drivers

The proprietary Nvidia drivers are required for acceptable gaming performance and for G-Sync. If you selected to install proprietary graphics drivers during the installation of your operating system, you already have them. The drivers also include the application NVIDIA X Server Settings. If you don’t have them yet and want to manually install them, you can do so easily, either with your driver settings or with the terminal.

On KDE Plasma, the driver settings are located at System Settings > Hardware > Driver Manager. It requires entering the password. Then, in the Additional Drivers tab, select the latest NVIDIA driver metapackage. For me, it’s the one at the top, version 450. You might have to enable proprietary software first in the Ubuntu Software tab with Proprietary drivers for devices (restricted) = .

To install it from the terminal, use the following commands:

sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt update
sudo apt install nvidia-driver-450

For gaming, you might also need the following commands:

sudo dpkg --add-architecture i386
sudo apt install libvulkan1 libvulkan1:i386

You have to reboot to use the new drivers.


Linux Audio Systems

Most Linux distributions use a audio server called PulseAudio that manages and routes sound between applications, inputs and outputs. It works together with the audio driver ALSA. Unfortunately, PulseAudio adds a significant amount of latency to certain kinds of applications like games and audio production software. For me, there was a delay of about a fourth of a second between playing a note or shooting a gun until I heared its sound. I don’t know if it’s that high for everyone, I can’t imagine that it is because if it were, more people would notice this and complain about it. It is possible to send the output directly to an audio device managed by the ALSA driver instead of sending it to PulseAudio first, making the latency as low as possible (I could only do so in Wine but there are surely ways for other applications) but that made audio production software run at very high speeds with very bugged audio and games ran extremely slow with a very high amount of input lag. And supposedly, only one application can send sound to an ALSA device at once. There is another audio server called JACK, made specifically for nearly real-time audio. It adds no latency and enables working with just the almost nonexistent ALSA latency, so it sounds like just what I need. But I’ve read that Wine doesn’t support it and I’ve messed up my Linux sound more than enough times, so I won’t try it for the moment. There is an officially recognised flavour of Ubuntu called Ubuntu Studio which has the most common creative applications and JACK preinstalled and preconfigured. It comes with the desktop environment Xfce but the beta now uses KDE Plasma. They also offer the Ubuntu Studio Installer which installs those things on an already installed official flavour of Ubuntu if you don’t want to reinstall your OS or want to use a different desktop environment. I will probably try that at some point.

Audio Latency

Some applications, including all audio production software and games, had a lot of audio latency for me, about a fourth of a second. It took me days to find the solution. There are two things that influence PulseAudio’s latency. I found both of them on completely different sites by different people. Therefore, they should work on their own. For me, they only had an effect together (tested on two separate Kubuntu installations on my PC). It’s the power of love. The second one is a little more complicated when doing it for the first time, so try the first one by itself first, maybe it works for you. After one or both of these things are done, the latency is as low as it can get with PulseAudio but it’s still a tiny noticeable bit higher compared to Windows. I can live with that, but it could have a negative impact in online games where quick reactions to sound are essential. The solution to that would be using JACK for real-time audio instead of PulseAudio, as I mentioned in the info box above.

Add an environment variable by using the command sudo nano /etc/environment and adding a new line with the following content: PULSE_LATENCY_MSEC=0. For some reason, everyone on the interwebs seems to use PULSE_LATENCY_MSEC=60. I have no idea why others voluntarily use so much additional latency, 0 works perfectly for me. If you encounter any issues, see if a higher value fixes it. Save with Ctrl O, confirm with Enter and close the file with Ctrl X. After a reboot, the latency should be as low as it can be. If not, continue with the second step.

The other thing to do for minimal latency is a little more complicated. If you have any trouble with it, feel free to contact me, I’m happy to guide you through the process. I found it on this website, but following those instructions only changes it temporarily, the original state is restored at boot. It took me another two hours to find out how to change it permanently by myself. But it works now. So many days wasted on this.

First, check the current additional PulseAudio latency for your audio output with pactl list sinks. This lists all outputs along with some details. Take a look at the name in each entry’s second line to find the output you want to change. If you can’t figure out which one is the right one, maybe because you have multiple ones from the same sound card with the same name and just a different number like me, play audio on the device you want to change and run the command again. The first line should now say State: RUNNING. Copy the name of the device without the last period and everything after that and paste it somewhere. For me, it’s alsa_output.pci-0000_0d_00.3 (with .analog-stereo at the end removed) (Remember that copying in the terminal is done with Ctrl Shift C). If you take a look at Latency: a couple of lines below, you will see the current added latency in µseconds (seconds ÷ 1000000) (the first of the two values). This value can’t be set directly, but we will influence it now to be nearly 0.

Use the command pactl list modules. This lists a lot of PulseAudio modules, at least for me. But finding the right one is simple. Every module has a line starting with Name:. We are looking for modules from sound cards, so look for entries with Name: module-alsa-card. For me, they are grouped up from module 7 to 12. In each module’s second line starting with Argument:, the second argument starts with name= and specifies the device name. Find the module-alsa-card entry with the device name you copied. My entry looks like this:

Module #12
Name: module-alsa-card
Argument: device_id="1" name="pci-0000_0d_00.3" card_name="alsa_card.pci-0000_0d_00.3" namereg_fail=false tsched=yes fixed_latency_range=no ignore_dB=no deferred_volume=yes use_ucm=yes avoid_resampling=no card_properties="module-udev-detect.discovered=1"
Usage counter: 6
Properties: = "Lennart Poettering"
module.description = "ALSA Card"
module.version = "13.99.1"

Some arguments have to be changed, added and removed for minimum latency. First, open the text editor of your choice like Kate or gedit. Copy the module entry of the module you want to change and paste it into the text file. At the bottom of your text file, make two new lines to separate the old entry from the now following command that will create the new entry and paste the following three lines into the bottom line:

### Minimize audio latency
unload-module 12
load-module module-alsa-card device_id="1" name="pci-0000_0d_00.3" card_name="alsa_card.pci-0000_0d_00.3" namereg_fail=false tsched=no fixed_latency_range=yes ignore_dB=no deferred_volume=yes use_ucm=yes card_properties="module-udev-detect.discovered=1" fragments=1 fragment_size=15

In these lines, you have to replace the italic parts with the values from your original module entry (the upper section in your text file). Replace the number in unload-module 12 with the module number from your original entry, in my case Module #12. In the long third line, replace the number in device_id="1" and the internal device name in name="pci-0000_0d_00.3" and card_name="alsa_card.pci-0000_0d_00.3" with what they say in your original entry. Then, copy your entire edited new entry (from ### to fragment_size=15).

Next, execute the command sudo nano /etc/pulse/ to edit the PulseAudio configuration file. Navigate down to the bottom of the file. Before the line ### Make some devices default, make two new lines and paste your entry (Remember that pasting in the terminal is done with Ctrl Shift V). It should now look like this:

load-module module-filter-apply

### Minimize audio latency
unload-module 12
pactl load-module module-alsa-card device_id="1" name="pci-0000_0d_00.3" card_name="alsa_card.pci-0000_0d_00.3" namereg_fail=false tsched=no fixed_latency_range=yes ignore_dB=no deferred_volume=yes use_ucm=yes card_properties="module-udev-detect.discovered=1" fragments=1 fragment_size=15

### Make some devices default

Save with Ctrl O, confirm with Enter and close the file with Ctrl X. After a reboot, the latency should be as low as it can be. Test the latency in a game or audio production application and/or check the added latency value as in the beginning with the command pactl list sinks. It is at only 2000 µs for me now, so 2 ms. For the creator of the original guide, it was 20000 µs. Maybe PULSE_LATENCY_MSEC=0 helped. As I said, it’s still a tiny noticeable bit higher than on Windows. If the audio crackles, you have to increase the latency. If not, you can try decreasing it even further. In the very long line you pasted into the configuration file, the numbers in the last two arguments influence the latency. Increase or decrease them for different results.

This is the only way I could get it to work. It loads all devices as normal, unloads the desired audio device and loads it again with different parameters. Since the device is unloaded with its module number, it could unload a different device if you add or remove devices. So, if the latency comes back like it just did for me, you have to do the past steps again and use the new number. If you want to undo all changes, simply edit the configuration file again and remove the lines you added.


There are three different places for volume settings. The most important one is the application PulseAudio Volume Control. At least on KDE Plasma, there is also System Settings > Hardware > Audio which does the same as PulseAudio Volume Control, just worse. Don’t use it. And lastly, there is the command-line tool alsamixer.

I have multiple audio putputs and inputs that I use. For most of them, changing the volume slider in either PulseAudio Volume Control or alsamixer changes it in the other application as well in real time, so they do the same. But for my secondary audio output that I use for music, they are separate. The volume was set to 29 in alsamixer, no matter what I set in PulseAudio Volume Control. And I didn’t know about alsamixer at first, so I was just wondering why the audio is so quiet, even at full volume. I had to set it to 100 in alsamixer.

So, to make sure that all outputs can be fully controlled with audio hotkeys, system settings and PulseAudio Volume Control, which all do the same, open PulseAudio Volume Control first. In the Output Devices and Input Devices tabs, set all volume sliders to 100 %.

Then, use the command alsamixer. Press F6 to go to the sound card selection. The default integrated audio which you’re probably using is called HD-Audio Generic. Nagivate to it or any other sound card with and select it with Enter. Then, you will see all sound channels of the selected sound card. Press F5 to display not just outputs, but inputs as well. Leave all channels that are set to 0 at 0 (the orange number at the bottom) and leave all that are set to 100 at 100. If any channel is somewhere inbetween, set it to 100. Navigate between channels with and change the volume with . If you use multiple sound cards, press F6 again to select another one or press Esc to close, there is no need to save.

Now, the volumes can be fully controlled with audio hotkeys, system settings and PulseAudio Volume Control. Use the latter to set the volumes the way you want them.

Sometimes, opening PulseAudio Volume Control mutes an output’s sound. Don’t worry, it will be back after a few seconds. Sometimes when I mess around with audio settings, a device doesn’t produce any sound but is not muted and the bar displaying the currently played volume is moving around, even though I don’t hear anything. When this happens, restart PulseAudio Volume Control. Starting it again will refresh it and show the device muted in the Output Devices tab. Simply unmute it.

The audio sliders in PulseAudio Volume Control snap to full percentage values. In the System settings, they don’t, so you will never get them to exactly 100 % there, it will be something like 100.01 % forever, unless you use PulseAudio Volume Control to get it back to exactly 100 %.

Permanent Default Audio Device

If you have to change the default audio output and input device, you can do so in PulseAudio Volume Control in the Output Devices and Input Devices tabs by clicking on the tiny blue monitor symbol or whatever that’s supposed to be to the right of the desired device. The same can be done in the System Settings at Hardware > Audio by clicking on Default Device to the right of the desired device. Both do the same. All applications will use these devices, unless you changed them inside the application or they are specified otherwise. Unfortunately, this (cupcake) is only temporary. But there is a way to set it permanently. First, temporarily set your desired default devices in the way I just described.

To keep it permanently, you need to edit a config file. To be safe, copy the file in its original state first, that way the original state can be restored at any time in case something doesn’t work:

sudo cp /etc/pulse/ /etc/pulse/

If you want to restore the original, use the following command:

sudo cp /etc/pulse/ /etc/pulse/

To permanently set an output device, use the command

pacmd list-sinks | grep -e 'name:' -e 'index:'

to list the internal names of connected output devices (PulseAudio calls outputs sinks). A * in front of a device marks the default that you manually set before. Copy the name (without brackets) of the device with the * (press Ctrl Shift C to copy). In my case alsa_output.pci-0000_0d_00.3.analog-stereo. Next, open the config file with

sudo nano /etc/pulse/

and nagivate down to the very bottom with . Find the line

#set-default-sink output

which is the second last for me right now. Remove the # to activate the line and replace output with the device name you copied (press Ctrl Shift V to paste):

set-default-sink alsa_output.pci-0000_0d_00.3.analog-stereo

Save with Ctrl O, confirm with Enter and close the file with Ctrl X. Now that device will be the default audio output device after each boot.

To permanently set an input device, use the command

pacmd list-sources | grep -e 'name:' -e 'index:'

to list the internal names of connected input devices (PulseAudio calls inputs sources). A * in front of a device marks the current default that you manually set before. Copy the name (without brackets) of the device with the * (press Ctrl Shift C to copy). In my case alsa_input.usb-Anua_Mic_CM_900_Anua_Mic_CM_900-00.mono-fallback. Next, open the config file with

sudo nano /etc/pulse/

and nagivate down to the very bottom with . Find the line

#set-default-source input

which is the last for me right now. Remove the # to activate the line and replace input with the device name you copied (press Ctrl Shift V to paste):

set-default-source alsa_input.usb-Anua_Mic_CM_900_Anua_Mic_CM_900-00.mono-fallback

Save with Ctrl O, confirm with Enter and close the file with Ctrl X. Now that device will be the default audio input device after each boot.

Specifying Audio Devices for Single Applications

To make an application use an audio output or input device that is not the default when you can’t specify a device within the application, you can simply do so in PulseAudio Volume Control in the Playback and Recording tabs. All applications currently using audio are listed there, so the application has to be open. If it’s still not there, make it play or record audio, then it will definitely show up. Just select your desired audio device next to it. There is no need to save. The same can be done in the System Settings at Hardware > Audio in the Applications tab.

It will stay like this permanently, unless you temporarily changed your main default audio device as described in the section above and then specify an application’s sound device to the old default audio device that will be restored at boot. Although, it just reset for me after many reboots and I have no idea why.

You can change the input and output device of any application this way. You can even specify an output as an application’s input by selecting the output version that says “Monitor“ in front of it, making it pick up sound from your desktop instead of from a microphone, for example.

Custom Keyboard Layouts

Keyboard layouts are simple text files that can be edited to customise existing layouts or even add a completely new one. Every single key can be customised and multiple additional levels can be added.

All layouts are located at /usr/share/X11/xkb/symbols/. Every language has a file that defines all of its layouts. To modify or add a layout, open the file of your desired language with a text editor. A layout is structured like this:

partial alphanumeric_keys
xkb_symbols "us-phalio"

include "us(basic)"

name[Group1]="English (Phalio)";

key <AB01> { [ z, Z ] };
key <AB02> { [ x, X ] };

include "level3(ralt_switch)"


This is what it means:

xkb_symbols "us-phalio" internal layout name

include "us(basic)" uses another layout for every key that is not newly defined in this layout, that layout is referenced to with filename_internallayoutname, for my layout it would be us(us-phalio)

name[Group1]="English (Phalio)"; the layout’s display name that will be shown when you select a layout in the settings

key <AB01> { [ z, Z ] };

This is the most important part: the key definitions. Inside the <brackets> is the physical key you want to reassign, for example AB01, AB02 etc. for the main keys in the second row from the bottom (Z, X etc.), AC01, AC02 etc. for the third row from the bottom (A, S etc.) and things like SPCE for space, TLDE for tilde (to the left of 1), TAB for tab and so on. To find out a physical key’s name, simply take a look at other layouts or open the file that defines key names at /usr/share/X11/xkb/keycodes/evdev. There, each key code is assigned a name. Most names are self-explanatory. If you still can’t find the name of a key, you can get its code with the following command: xev. Execute it and press any key to get its code. Then, look for the code in the name definitions file to find its name.

Inside { [ these brackets ] }; is the list of characters you want to assign to the key. A-Z and numbers can just be typed as they are. There are two ways to set other characters: Some common characters have names like comma, period, slash, bracketleft, bracketright etc. that you can find out by taking a look at existing layouts: key <AB08> { [ comma, less ] };. If you can’t find a name or it doesn’t have one, you can use its Unicode number. I use the site to do so. Type the character itself into the search bar or try to find it by its name, for example, type “less” to find <. Click on the search result to go to the character’s page. Under the section “Technical information”, you can see its Unicode number. In the keyboard layout, you have to remove the + between U and the number: key <AB08> { [ U002C, U003C ] };.

include "level3(ralt_switch)"

This last part allows you to add special keys for additional levels and some other things. Just pressing a key uses the first level which is the first defined character, like z in key <AB01> { [ z, Z ] };. Holding Shift activates the second level, making pressed keys use the second character, like Z in key <AB01> { [ z, Z ] };. By adding include "level3(ralt_switch)" at the bottom, you add a key to activate a third level, in this case RAlt. This actually adds two levels, level 3 is activated with RAlt(s) and level 4 with Shift RAlt. If you add a key for a third level, specify four characters for each key: key <AB01> { [ z, Z, U2026, U2E31 ] };. Possible keys you can assign level 3 to are located in the same folder as layouts in the file level3. Read the lines starting with // to find the key you want to assign and then use its name in the line starting with xkb_symbols together with include "level3(name)". You can also add a key for the fifth level by taking a look at the file level5 and using the name with include "level5(name)".

Level 1
Level 2 Shift
Level 3 Level 3 Key
Level 4 Shift Level 3 Key
Level 5 Level 5 Key
Level 6 Shift Level 5 Key
Level 7 Level 3 Key Level 5 Key
Level 8 Shift Level 3 Key Level 5 key

Every key has to have a definition for every possible level. By default 2 levels, with a Level 3 Key 4 levels and with a Level 5 Key 8 levels. If you don’t want to define all levels, put NoSymbol in that space: key <AB01> { [ z, Z, U2026, NoSymbol ] };. If a definition is missing, the whole layout won’t work.

Another special key you can add here is the Compose Key. Pressing it once will combine the next two typed characters into one, if possible. For example, pressing Compose Key followed by a and e results in æ. ^ and 1 results in ¹, - and e in ē and all kinds of other things. This allows you to use many more characters without having to assign them to a key. As with the level keys, look for the key you want to assign in the file compose and add a line with include "compose(name)". Take a look at other layouts and other files to find out what else you can do.

Lastly, if you made a completely new layout instead of modifying an existing one, you have to make it selectable by adding its names to the file /usr/share/X11/xkb/rules/evdev.xml. Open it and find the section of the language you used. Press Ctrl F to open a search field and, for example to find the section for English, type indicator for english layouts into it. For some languages, there are multiple of these sections, press enter in the search bar to go to the next. For English, there is one for US that you have to use if you used the us file, but there are also other sections like India, Canada and UK. The same is true for German for example which has entries for Germany, Switzerland and Austria. Take a look at the section’s content to find the right one. Then, create a new line after a </variant> line and paste the following lines:

    <description>English (Phalio)</description>

Replace us-phalio with your layout’s internal name and English (Phalio) with its display name. After a reboot, your layout will be ready to use. For KDE Plasma, open System Settings and go to Hardware > Input Devices > Keyboard and select the Layouts tab. Click Add to select one of the many available layouts, yours should now be among them.

I redefined all numpad keys to be numbers by default and the NumLock key to backspace and equal. Why does NumLock even exist? And I found a key definition for numequal, apparently some keyboards actually have a physical equal key on the numpad. It’s such a waste to just have +, 0 and enter span over 2 keys each instead of having additional keys for things like equal, backspace and comma. Who designed keyboards?

This worked well but unfortunately, some applications (namely VSC and Discord) don’t use the layout defined keys for the numpad. They always used the default keys (arrow keys, home, end etc.). So I had to remove the numpad number and “.” redefinitions again because VSC is one of the main things I need the numpad for. Reassigning just the NumLock key to backspace equal doesn’t work either because pressing that key will always deactivate numlock if it’s active, no matter what it’s defined to do. But it will not activate it when it’s not active. Only / * - + 5 enter can be safely redefined as they don’t have a separate function without numlock active. But don’t forget that shift+enter is commonly used for line break instead of new paragraph or send, so don’t assign that to equal or something as I did at first. NumLock being active activates the second level by the way, just like shift, and when NumLock is active, pressing shift and numpad keys goes back to level 0. Also, FamiTracker, just like on Windows, uses the hardware keys in the pattern editor, so my 0 moved to the left of 1 doesn’t work which is very annoying. But I guess I could use the numpad numbers instead. Can someone please re-invent computer keyboards?

Job Scheduling with Cron

cron lets you schedule commands that will be executed at defined times. It’s probably preinstalled, if not, get it with sudo apt install cron. On KDE Plasma, you can add a graphic interface for it to the system settings by installing sudo apt install kde-config-cron, it will be located at System Settings > Workspace > Startup and Shutdown > Task Scheduler. You can only edit the personal cron file in there which has no root privileges, but it allows setting environment variables which are required for some commands because it doesn’t use the system’s environment variables. You can set them from the terminal as well, but I don’t know how.

To edit the system’s scheduled jobs, use the command sudo nano /etc/crontab. The file explains its usage pretty well: It starts with 5 time variables, minute, hour, day of the month, month and weekday. Specify a number, multiple numbers separated with commas without space for multiple values or a * for all. You can also use @reboot instead of numbers to execute every time your PC is started. Next is the user and everything after that is the command to be executed. For example:

0 15 * * * phalio /usr/bin/poodle

The above line executes /usr/bin/poodle as phalio every day at 15:00.

0,12 17 1 4 * root /usr/bin/poodle

The above line executes /usr/bin/poodle as root every April 1st at 17:00 and 17:12.

@reboot root /usr/bin/poodle

The above line executes /usr/bin/poodle as root every time the PC starts.

Since cron doesn’t use the system’s environment variables, you have to use full paths, like /usr/bin/konsole instead of just konsole. Find out paths with the command which konsole. Some commands only work with the environment variable DISPLAY=:0. You can just insert environment variables at the top of the crontab, there should be some already, at least for me. In the Plasma system settings, you can set them at the bottom by clicking on New Variable… and inputting Variable = DISPLAY= and Value = :0.

At the moment, I use cron for automatic backups and automatic hibernation. I also use it for automatic updates on my Pi. I added an entry that executes apt update && apt -y upgrade. -y answers all questions with yes which is necessary because of the otherwise needed yes or no input. For Flatpak, use flatpak update -y.


Hibernation / Suspending to Disk versus Sleep / Power Saving / Suspending to RAM

Besides completely shutting a computer down, there are two other ways of switching it off, going by a lot of different names like those in the title. I prefer using “suspend to disk/RAM” as they clearly state what they do, but I’ll use hibernate and sleep here because it’s shorter. So, what do they do?

Sleep mode, what is usually activated after not using a computer for a while or when closing a laptop, shuts off every internal and external component, except for the RAM, where everything you currently have open, in other words the session, is stored. RAM is extremely fast, but it can only store data when it’s supplied with power. Therefore, putting your PC in sleep mode shuts your PC down partially while keeping all applications open and it can restart very quickly, but it still requires a little power and the session is gone if access to power is interrupted.

Hibernation, which is not listed as shutdown option by default in some operating systems like newer Windows versions, Ubuntu and Kubuntu for some reason, saves everything you have open, in other words the session or the RAM content, to your permanent drive. Then, it shuts down completely. Therefore, it does not require or use any power and the power supply can be removed. It’s also possible to boot into a different operating system while another operating system’s session is saved to a drive, as the RAM is available. The session only resumes when you boot into the corresponding OS. So, the upside is that it saves your session and shuts down completely, requiring no power. The downside is that it takes longer to shut down and start. It also allows saving the session of one OS and using another OS inbetween.

Apparently, some sleep modes also save a copy of the session to the disk in addition to keeping the RAM powered. That way, if power is lost, the session is not as its copy is still saved on the disk and will be loaded like afer hibernation.

Enabling Hibernation

When experimenting with hibernation or other boot-related things, it’s useful to view the boot log live or after boot as described here.

On some distributions like Ubuntu and Kubuntu, Hibernation is disabled by default. Making the hibernate button show up in the start menu again just requires editing a line in a config file, but unfortunately, no matter what I tried, I could not get the actual hibernation process to work. It started with a new session every time. Maybe it works for you, just search the interwebs for how to do it on your distribution and desktop environment. Fortunately, there are multiple packages that allow hibernation. pm-hibernate and systemctl hibernate didn’t work for me. s2disk did and still does. At least for me at the moment, sometimes after removing from hibernation, the window manager is bugged, causing all other windows to flicker when I minimise, maximise or open a window. This can temporarily be fixed every time it happens by clicking the title bar of one of the flickering windows. Other times, some images and areas are black or filled with noise but they are loaded once the cursor touches them.

To install it, use the command sudo apt install uswsusp. See if it works by using sudo s2disk. If it does, great. If not, I unfortunately can’t help you. Another unfortunate thing is that the hibernation button in the start menu only activates the default hibernation command and it can’t be modified to use this one. Therefore, adding the hibernation button is useless if you’re using this package instead. If you still want an easy way to hibernate instead of having to use the command every time, you can create a script and add a regular start menu entry that executes it.

This hibernation command, as well as the buttons in the KDE Plasma start menu, shut the PC down immediately and restore this same state instead of starting at the login screen first which is a security risk. This problem can also be solved with a script by putting a command to lock the screen before the hibernation command. This means that the custom regular start menu entry that will be described in the next step will be superior to the regular button, although not as nicely positioned. This is the script I made:

echo Hibernate
sudo loginctl lock-sessions
sleep 1
sudo s2disk

To give the computer time to actually lock before it hibernates, sleep 1 is necessary as it makes the script wait one second before continuing. Copy the script, open the text editor of your choice like Kate or gedit, paste it and save the file in a location of your choice with a name of your choice like See if the script works by executing it in the terminal with /path/to/ If your terminal’s current working directory is the same as the script’s location, for example because you saved it in your home folder and the terminal starts there, executing files in the current directory is done like ./

The last step is creating the start menu shortcut. For KDE Plasma, Right Click the start menu icon and select Edit Applications…. Create a New Item… with a name of your choice like Hibernate and click OK. Since the lock and hibernate commands require root privileges, we have to make the start menu shortcut open the terminal and execute the script in it to give us the opportunity to enter the password. In the text field next to Command:, enter the following command:

konsole -e ~/

konsole opens KDE’s terminal and -e makes it execute everything that follows. If you’re not using KDE Plasma, replace konsole -e with your terminal and its option to execute something. Replace ~/ with the path to your script. If you like, you can change the shortcut’s position by dragging it in the list on the left or add an icon to the right of Name, the default hibernation icon can be found at System Icons: All and typing hibernate into the Search: box. Then, click Save at the top left. Now, if you open your start menu, you should see your new entry and if you click on it, the terminal should open and ask you for your password. After entering it, the session should lock and your PC should hibernate.

For some reason, booting after hibernating with s2disk always boots with the recordfail parameter, showing the GRUB boot menu and setting the timer to 30 seconds, at least for me. Learn more here.

Scheduling Hibernation with Cron

If you want to schedule hibernation with cron, for example to hibernate your PC in the middle of the night when it’s done rendering or every evening to prevent you from staying up all night working on fideos and solving Linux issues, you can use the system’s crontab file to execute it as root and therefore don’t need a script to enter the password first. Edit the file with sudo nano /etc/crontab and add a line at the bottom with the following content:

1 2 3 4 5 root loginctl lock-sessions && sleep 1 && s2disk

As you’ve learnt in the cron section, edit 1 2 3 4 5 to the times you want it to execute. To save, press Ctrl O, confirm with Enter and close the file with Ctrl X.

Custom Boot Settings

System Output During Boot

To spot issues during boot, you can enable displaying the system output during boot. You might notice that something is slowing it down and actually see what’s happening instead of staring at a boring empty screen. Enable it by editing Linux’s bootloader GRUB with the command sudo nano /etc/default/grub and changing the line




and reverse it by changing the line back. To save, press Ctrl O, confirm with Enter, close the file with Ctrl X and apply the changes with the command sudo update-grub.

You can also view everything after boot in the log file with the command sudo more /var/log/boot.log. Keep pressing Enter to see more lines.

Changing GRUB Boot Menu Automatic Selection Time

If you have multiple operating systems installed, for example Windows 10 and Ubuntu, Linux’s bootloader will present you with a menu every time you boot to choose what operating system to start. This menu has a timer at the bottom. When it reaches 0, the top entry is automatically selected. If you want to use the first option most of the time and want it to be selected automatically or at least quicker, you can do so. Use the command sudo nano /etc/default/grub and edit the number in the following line to any length in seconds you like, using 0 will boot the first option immediately, unless you hold shift which still opens the menu:


To save, press Ctrl O, confirm with Enter, close the file with Ctrl X and apply the changes with the command sudo update-grub.

GRUB Recordfail Showing the Boot Menu and Setting the Timer to 30

Some things, for example hibernating with s2disk, can cause errors that activate the recordfail parameter, always showing the GRUB boot menu and setting the timer to 30 seconds. If you can’t fix what causes this status from happening and nothing seems to be wrong, you can add a line to the GRUB config file to specify the timer length for this case to a lower number or even to 0, as discussed earlier. Do this by editing the config file with sudo nano /etc/default/grub and adding the following line at the bottom with any number as length in seconds:


To save, press Ctrl O, confirm with Enter, close the file with Ctrl X and apply the changes with the command sudo update-grub.

This worked in the beginning but now I always get a 10 second timer, even though all values are still at 0. I can’t have everything I suppose.

Other Issues

Solved Issues

Stuck after Login

I thought I was finally done and fixed every issue. Today, I booted my computer, logged in and the login screen froze with my correct password still visible. My other screens also changed their heights slightly. The cursor was still working but I couldn’t do anything else. Apparently, there are multiple different issues that can happen in the login screen, like being sent back to a working login screen after entering the password or a complete freeze including the cursor. Some suggestions on the interwebs were that the file ~/.Xauthority should be set to being owned by your user if it’s not or just deleting it to automatically create a new one but that didn’t help. Other commands or booting into recovery options didn’t either. Someone said the issue was that their drive was full and mine was pretty full as well but that made no difference for me.

In the login screen, pressing Ctrl Alt F2 switches from the desktop environment to the terminal view. This allows access to your computer without a graphical interface. You can try fixing things there. After a couple of reboots, I opened the terminal like this after putting in my password in the graphical login screen, so while it was frozen. Pressing Ctrl Alt F1 switches back to the graphical desktop environment. When I switched back while the login screen was already stuck, it sent me right to my desktop. Doing this is a temporary solution. If it’s still broken and you have to use this workaround after every logout and boot like me, read the next paragraph.

I found the solution here. Open the System Settings and go to Hardware Display and Monitor Compositor. Select Enable compositor on startup and Rendering backend = OpenGL 3.1 and apply. For me, it was like this but there was an error message above saying something about a crash and asking me to re-enable it or something. This alone didn’t fix it, I also had to set the environment variables with the command sudo nano /etc/environment by adding two new lines at the bottom and putting the following in there:


Save with Ctrl O and confirm with Enter. After doing this, logging in worked again.

Unsolved Issues

Keyboard Settings Greyed Out

When I was reinstalling Kubuntu for the actual final install after having solved every issue, I could access the keyboard settings in the system settings at first. Later, the Layouts tab was greyed out and in the Hardware tab there was no recognised keyboard model. This meant that I couldn’t change my layout anymore. It stayed like this even after reboots and keyboard reconnects. I couldn’t find much about this on the interwebs, just someone saying that it’s supposed to be fixed by unplugging the keyboard and temporarily connecting a different one. Unfortunately, I threw my other 10 keyboards away last week as they were starting to smell, so it was impossible for me to try this solution. After hours, the only way to get it to work again was reinstalling the operating system. I’m really glad that this happened right after a fresh install. I don’t want to imagine what would have happened if this issue arose after spending weeks setting everything up. I have to pray to Iuppiter that it won’t happen now.

Edit: It’s now the end of 2021. I’ve installed KDE Neon (almost the same as Kubuntu) on my old laptop and this issue happened again. I haven’t had it on my main PC anymore, though. It seems like it only happens after a fresh install.

Stutter in Games

In most 3D games that would run perfectly (Deep Rock Galactic (Proton), Overwatch (Lutris), Slime Rancher (native), NOT in Dolphin), I have a stuttering issue. When the game is running with an FPS value equal to my monitor’s refresh rate, it’s perfectly smooth but every couple of seconds it goes into a series of many small stutters for a second, followed by seconds of smoothness and so on. When I limit the FPS to one less or more than the refresh rate, this does not happen. Instead, I only see exactly one per second the expected one small stutter when the screen shows a frame twice to compensate for the missing frame or one small jump when the excess frame is skipped. Increasing or decreasing the FPS limit further still just results in perfectly rhythmic stutters or jumps caused by the asynchronous FPS. These small stutters or jumps are still very noticeable to me. I have no idea how people can play at the default hz+10 value for FPS in Overwatch, for example. I’ve read of people saying that it’s impossible to notice when the framerate is just a couple of frames off since it’s only a 144th of a second. Either I’m one of the few people with eyes that are good enough to see 144 hz or others just never experience how it could be when it’s perfectly synchronous and therefore don’t know that it would make a difference. A second is very long, dividing that timespan by 144 is not as short as it may sound. Of course, I can’t tell the difference between 144 and 143 hz. But I can very much tell the difference between 144 FPS and 143 FPS displayed on a 144 hz screen because the latter displays one frame twice as long once a second.

Back to the current issue. As I said, only when the FPS value perfectly matches the monitor’s hz do I experience these seconds of many stutters with seconds of perfect smoothness inbetween, tested both at 144 hz and 120 hz. I have no idea why or how to solve this. This is very unfortunate as it’s the only issue I have with games right now. It’s not enough to influence playability much but it’s still annoying.

Applications and Games


Installing and Updating Applications

There are multiple ways to get and install applications or the packages containing them on Linux. The most common and convenient way is installing them with commands like sudo apt install (for Debian-based distributions) or using your distribution’s graphical application manager like Discover or GNOME Software which does the same but is useful if you prefer not using the terminal and it provides an easier way to find applications and provides additional information like descriptions and reviews. This installs the package from a repository where it’s stored and updated. With sudo apt update, added repositories are searched for updates of installed applications that can then be applied with sudo apt upgrade. Your GUI will notify you when there are updates as well. Your distribution’s repository and maybe some additional trusted ones that contain most applications that you will use are added by default. You can also add other repositories but make sure that they are trustworthy. If you see multiple versions of the same application in your application manager, it’s because they are from different repositories it supports. Sometimes, one has a newer version. Take a look at Version, Author and Source at the bottom of their pages to decide which version you want.

Another package type is Snap which provides more security by isolating the application from the system and limiting its permissions. It’s compatible with almost all distributions. If you don’t have it, install it with sudo apt install snap. It’s already preinstalled on Kubuntu and integrated into Discover as a source. You can also browse applications at To install a Snap, use sudo snap install discord. Snaps update automatically four times a day but can also be updated with sudo snap refresh or graphical application managers if they are integrated. If not and you prefer graphical interfaces, look for a way to do so for your application manager. If you can’t access your files or audio devices from an application, it might be a Snap and you have to set its permissions. In Discover at the bottom of an application’s page, take a look at the line beginning with source to see if it says “Source: Snap”, for example. When it does, you can configure permissions a bit above at Configure permissions…. The removable-media setting allows access to both /media/phalio/ and /mnt/. You can also list snap applications with the command snap list, view permissions with snap connections discord and set permissions with snap connect discord:removable-media. Remove permissions with snap disconnect discord:removable-media. Learn more here.

Another package type is Flatpak which also provides more security by isolating the application from the system and limiting its permissions. It’s compatible with almost all distributions. If you don’t have it, install it with sudo apt install flatpak and flatpak remote-add --if-not-exists flathub It’s not preinstalled on Kubuntu but it can be integrated into Discover with sudo apt install plasma-discover-flatpak-backend. You can also browse applications at To install a Flatpak, use flatpak install flathub com.github.micahflee.torbrowser-launcher. Flatpaks have to be updated with flatpak update or in graphical application managers if they are integrated. Those will notify you when there are updates as well. If you can’t access your files or audio devices from an application, it might be a Flatpak and you have to set its permissions. I haven’t used flatpak yet, so look it up yourself at for now (I just found out, add permissions to a path with sudo flatpak override com.getferdi.Ferdi --filesystem=/mnt/data).

Not all applications on common repositories like those of operating systems, Snap and Flatpak are updated frequently. Sometimes, if they are not maintained by the developers themselves, they can be very outdated. Check and compare version numbers to find out if an application is up to date. Adding the developer’s own repository if they use a separate one can be a good idea in those cases. In the application list below, I documented if I noticed that a repository is outdated.

Most applications can also be downloaded from their website like to how it’s done on Windows. Instead of .exe files, there are other formats like .deb that install applications, compressed .tar archives or .AppImage that contain everything and can just be started instead of having to install it first. The downside of this method is that it’s more work and they might not have an update feature. To execute files, they might have to be allowed to be executed first, either in the file manager by right clicking the file and selecting Properties > Permissions > Is executable = or use the terminal with chmod +x nextdoor/ .deb files are installed with sudo apt install /path/to/file.deb. If the file is in the same location as the terminal’s current working directory, put ./ in front of it like sudo apt install ./file.deb. If the path is wrong or if you open the .deb file in the file manager, it will automatically try to find and install the application from known repositories, so if you actually want to install it from the .deb file, make sure to use the command with the correct path.

Not all applications are available in a ready-to-use compiled state. Some are only provided as source code and have to be compiled manually first. You will learn what you need for that in a bit.


Some applications depend on other packages to work. If you get errors about this, you are missing some other package(s). The terminal usually tells or at least hints you to what you need and an application’s official website should list what other packages you have to install.

Uninstalling Applications

Applications installed with your distribution’s graphical interface like Discover and everything installed from sources it supports can be uninstalled there as well.

For APT, use sudo apt remove firefox to remove just the application or use sudo apt purge firefox to remove the application and all other things related to it like configuration files. If you want to remove leftover packages that applications you uninstalled depended on and you don’t need anymore, use sudo apt autoremove.

For Snap, use sudo snap remove discord.

For Flatpak, use flatpak uninstall com.github.micahflee.torbrowser-launcher.

For dpkg, use sudo dpkg -r veracrypt to remove just the application or use sudo dpkg -P veracrypt to remove the application and all other things related to it like configuration files.


There was no application I had to compile during this installation. As soon as I have to compile something, I will describe how to do so here.

Game Graphics Drivers and Vulkan

The right drivers and the Vulkan API are essential for gaming on Linux. Follow the instructions for your distribution and graphics card manufacturer here. For Ubuntu and Nvidia, I already listed what you have to do here.


GameMode is an application for Linux that optimises gaming experience by making the system focus its resources on the game. It has a significant positive impact on performance, at least for me. I recommend tryint it out. Install the dependencies first:

sudo apt install meson libsystemd-dev pkg-config ninja-build git libdbus-1-dev libinih-dev

Then install GameMode in one of these ways:

slightly outdated on the Ubuntu repository
sudo apt install gamemode
git clone
cd gamemode
git checkout 1.6

To check if GameMode is active, use the command gamemoded -s while the game is running.

To use GameMode on any application, start the application with the command gamemoderun /…/application. You can edit start menu shortcuts to include gamemoderun in their command.

To start Steam games with GameMode, right-click the game in the library list and select Properties > SET LAUNCH OPTIONS… and enter gamemoderun %command%. Exactly like that, %command% is not supposed to be replaced or anything. Click OK and Close.

To start Lutris games with GameMode, click on the options icon at the top right in Lutris and go to Preference > System options. Enable Show advanced options at the bottom and find the text box for Command prefix. Enter gamemoderun into it and save. Now, all Lutris games will start with GameMode. Some games also start GameMode by themselves.


Wine is a compatibility layer that allows running Windows applications on Linux. Many applications are available for Linux natively but some are not, unfornunately. For many applications, there are great alternatives on Linux. I always check to find applications that are open source and for Linux, I recommend applications I use below. If you can’t find a suitable alternative, you can run your application with Wine. Some applications won’t run but most do. If you have issues or want to know how well it runs beforehand, look your application up at in the search bar. If they really don’t work with Wine, you can try Lutris which I will talk about next, but it uses Wine, so implement the following instructions first. Lutris is intended to run Windows games with Wine but it can run some applications as well that don’t work with Wine by itself. If that also doesn’t work, you can always use a virtual machine.

To install Wine, use the instructions at In the following, I will describe the instructions for Ubuntu 20. Use these commands:

sudo dpkg --add-architecture i386
wget -nc
sudo apt-key add winehq.key
sudo add-apt-repository 'deb focal main'
sudo apt install --install-recommends winehq-staging
sudo apt install libgnutls30:i386 libldap-2.4-2:i386 libgpg-error0:i386 libxml2:i386 libasound2-plugins:i386 libsdl2-2.0-0:i386 libfreetype6:i386 libdbus-1-3:i386 libsqlite3-0:i386

To open an application with Wine, just double click a .exe. If it doesn’t work, you can right click it and select Open with Wine Windows Program Loader or execute it in the terminal with wine /Downloads/0CC-FamiTracker.exe.

The first time you start an application with Wine, Wine will install some additional things. Click on Install every time.

The files and folders that simulate the Windows structure and that applications get installed into are called a wineprefix. The default wineprefix is located at ~/.wine. Folders with a . at the beginning are hidden in the file manager, view them by opening the file manager’s settings and selecting Show Hidden Files. In the wine folder is the folder drive_c that contains, you guessed it, Mei, I mean the C:\ drive. You can find all installed applications in there.

To make a start menu shortcut, create a new one in the start menu and as command, enter wine "~/applications/0CCft/0CC-FamiTracker.exe". If it’s not in your regular file system but in the Windows file system, either point the path to it like wine "~/.wine/drive_c/Program Files (x86)/Leawo/Blu-ray Player/Leawo Blu-ray Player.exe" or use a Windows path if it’s in the default wineprefix location like wine "~C:\Program Files\CELSYS\CLIP STUDIO 1.5\CLIP STUDIO PAINT\CLIPStudioPaint.exe". If you use a Windows path, you have to do another step. A backslash omits the next character and the start menu editor in KDE Plasma will always mess it up. You have to edit the shortcut afterwards by going to ~/.local/share/applications/ and editing it with the text editor of your choice like Kate or gedit. In the path, add a space after each backslash. The start menu adds another backslash which does not work. It has to be like this: wine "~C:\ Program Files\ CELSYS\CLIP STUDIO 1.5\ CLIP STUDIO PAINT\ CLIPStudioPaint.exe".


Lutris improves and automates running games from other platforms and even native ones on Linux. Many Windows games like Overwatch run perfectly with it and it also allows running some applications that don’t work with Wine by itself. To install it, you need Wine as described in the previous section and, if you want to use it for games with a Nvidia graphics card, get the proprietary Nvidia drivers if you don’t have them already. Then, use these commands:

sudo add-apt-repository ppa:lutris-team/lutris
sudo apt update
sudo apt install lutris

To automatically install a game or application with Lutris, visit, search for it in the search bar and simply click on the install button. If it says in the description next to that you have to do something else, do that first. You can also look up how well games or applications run beforehand.

To manually install a game or application that is a ready-to-use .exe, click on the + icon on the top left in Lutris and select Add Game…. Put in any name and select Wine as runner. In the Game options tab, select the path to the .exe in the field Executable. Save and start it by selecting it and clicking Play.

To manually install a game or application with an installer, click on the + icon on the top left in Lutris and select Add Game…. Put in any name and select Wine as runner. In the Game options tab, select the path to the installer in the field Executable. Save and start it by selecting it and clicking Play. If it doesn’t work the first time, restart your PC. Once it’s installed, you have to click on the wrench icon below Play and go to the Game options tab. The Executable path is still pointing to the installer. Change it to the installed .exe, most likely at ~/.wine/drive_c/ in one of the program files folders or at ~/Games. Save.

To make a start menu shortcut, select the game or application in Lutris and click on Create application menu shortcut in the options below play.

Valve Proton

Besides Lutris, Valve are also working on their own compatibility tool based on Wine: Proton. It can run some Windows Steam games better than Lutris and it’s perfectly simple to use: Just stop the Windows users from nailing him up. I mean, just activate it in the settings and you can start every game from your library, no matter what platform they were programmed for. Some games run better with Lutris and some with Proton. If you have issues or want to know how well they run beforehand, look your application up at If one method doesn’t work, try another.

Virtual Machines

If no way to run a Windows application on Linux and there is no alternative, it’s always possible to use a virtual machine. A virtual machine is an application that simulates an entire isolated operating system within your real operating system. You can run any operating system like this but if they require a license key that of course still applies. Virtual machines or VMs are useful to run applications in a VM that don’t run on your physical operating system. Unfortunately, their resources are limited and gaming is mostly impossible because graphics don’t work well with virtualisation at the moment. VMs are also useful for many other things like securely executing applications as they are confined within the VM and (usually) can’t access or damage your real operating system.

There are two VM applications I recommend: VirtualBox (open source) or VMware Workstation Player (connect any USB device to the VM).

Native Applications


#floss free/libre and open source software
#oss open source software
#css closed source software
#$ requires purchase
#ootb works perfectly out of the box
#semi-ootb works perfectly out of the box, but some optional things can or have to be done under certain circumstances
#s-issues usable, but small issues break some minor things
#m-issues partly usable, but issues make some things unusable
#broken unusable

Multiple code blocks with installation instructions are alternative ways, choose one of them.


Text and voice communication, e2e encrypted and federated

flatpak install flathub im.riot.Riot
sudo apt install -y wget apt-transport-https
sudo wget -O /usr/share/keyrings/riot-im-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/riot-im-archive-keyring.gpg] default main" | sudo tee /etc/apt/sources.list.d/riot-im.list
sudo apt update
sudo apt install element-desktop

Web application

Element is the official client for the Matrix communication protocol. There are other clients available as well if you don’t like this one. Matrix is a new communication protocol that is open source, (end to end) encrypted and decentralised/federalised. Federalised in the same way as the email protocol. Emails are cross-compatible in the sense that it doesn’t matter if you have a mail account at gmail, protonmail or your own server at home. You can send and receive emails to and from anyone with an email address, no matter what provider/server they use. They are all compatible with one another. The interwebs has unfortunately moved away from the old ways of this compatibility and of self-hosting. Now, everyone uses different proprietary centralised communication applications that are not compatible with one another, not encrypted and collect your data. The matrix protocol is a new, modern and continuously developed protocol unlike email and has the potential to revolutionise text and voice communication for personal and group communication.

There are also bridges that allow communicating with people on non-Matrix services like Discord, without encryption of course. I haven’t tried that yet.

If you want to use Matrix in Element or any other application, you have to sign up on a server, like Google or Protonmail for email. Matrix has their own server that is selected by default in Element. You have to input the server address in Element to register or log in at another server. Of course, the best solution is to make your own server. I you don’t want to, I tested some for you. “Presence” is a feature that can be enabled or disabled by servers and transmits the online status from and to its users. If a server has deactivated, nobody can see the online status of their users and their users can’t see the online status of anyone else. If you want presence, choose a server that has it enabled. These are the servers I tested (don’t forget the https:// in front of them when you paste a server URL into Element): Server by the Matrix developers themselves. Sometimes slow because so many people use it. Presence disabled. Location: UK, Netherlands Works perfectly. Presence enabled. Location: Germany Works perfectly. Presence enabled. Email required. Location: New York Works perfectly. Presence disaled. Location: Germany Works perfectly. Presence disabled. Location: Russia Works perfectly. Presence disabled. Location: Singapore Works perfectly. Presence disabled. Works only by registering and logging in on their website, you can then connect to an application. Location: France. Seems to be very overloaded, making it nearly unusable (October 2020). Presence enabled. Location: Belgium Seems to be very overloaded, making it unusable (October 2020). Location: Netherlands Currently doesn’t accept new accounts. Location: Finland

On the Element desktop client, there seems to be a problem with misconfigured Captchas while creating an account on some servers. If a Captcha doesn’t load, use the web or mobile Element client or the server’s own web version.

After creating an account, there is a chance for the error “unable to set up keys”. Just click on try again and then it will work. Since Matrix communication can be encrypted, you should save your Security Key somewhere, preferably in a password manager. Logging in for the first time prompts you to set up a Security Key. Follow that prompt. If you didn’t, you can click on your name at the top left and go to Security & Privacy and set it up at Secure Backup. If you don’t do this, you will lose access to all encrypted chats if you ever log out on your current application on your current device.

If you change your display name and profile picture, it could take a bit to apply after saving but there’s no need to do it more than once.

I just installed it for the first time and I’m currently testing it along with Amarizo. I hope it’s good enough to be my main communication application. It’s looking good so far. If it is, I will try to make a server myself of course and also a community or whatever it’s called here, basically a public Discord server on Matrix. My name is if you want to add me.

Edit: Thanks for 1 like. I mean … Edit: I now have a Matrix server and my current name is My server has presence enabled and, unlike the big public servers, notices changes after like 20 seconds.

If you don’t see link previews in chats: They can be disabled or enabled in room settings (this setting only affects you). In encrypted chats, they are disabled by default because to generate previews, links are sent to the server, weakening end to end encryption. The server generates the preview and not the client because otherwise you could just send someone a link and their client would automatically access the site and reveal their IP.

By the way, Mastodon does the same for a Twitter-like social network (while having much better features), my account is



Integrating all text and partly voice communication into one application

sudo apt install pidgin
flatpak install flathub im.pidgin.Pidgin

For many services, you have to install add-ons first to be able to connect to them.

#floss #semi-ootb


Integrating all text and voice communication (if they have a web version) into one application

flatpak install flathub com.getferdi.Ferdi

.AppImage, .deb

It’s basically a web browser based on Chromium and it adds your communication software’s web version, if it has one. That gives you the security and low CPU and RAM usage of web versions but also denies you features only desktop applications have like automatic game detection for Discord and hotkeys. I want to find an alternative to Discord as my main text and voice communication software but I also have to keep Discord because so many people use it, so I’ll keep it in Ferdi once I switch to something else like Element. But Matrix is supposed to be able to bridge to other services like Discord, so I might not even need Ferdi.

Since it’s a web browser, you can add any site to it. Unfortunately, adding an image for custom sites that will represent it in the left side bar has been broken for many months. If you try to add one, the default image will be gone and it will be an empty field forever, so don’t try it and complain to the devs to finally fix it or fix it yourself.

Discord does not give you a notification for messages that don’t mention you in servers with the public setting where you activated notifications for all messages.

#floss #ootb


Voice communication

sudo apt install mumble
sudo snap install mumble
flatpak install flathub info.mumble.Mumble
official repository
sudo add-apt-repository ppa:mumble/release
sudo apt update
sudo apt install mumble

#floss #ootb


Text and voice communication; very good functionality but questionable privacy

sudo snap install discord
flatpak install flathub com.discordapp.Discord



As Snap, the VSC rich presence plugin (and possibly others) can’t connect to Discord. Discord uses the command ptrace many times per second which can apparently control other processes. Snap blocks this but it can still detect verified and custom games. If VSC rich presence is more important to you than privacy and security, use the .deb instead.

#css #semi-ootb


SIP communication

The APT package on the Ubuntu repository seems to be broken right now (October 2020), use the .AppImage
sudo apt install linphone


I just have it installed to be able to call family members that still live in the age of rotary dial telephones instead of using these new dangerous interwebs that will be forgotten in a year anyway when the kids use something else to waste their time with.

#floss #ootb


Email, RSS, calendar, tasks

sudo apt install thunderbird
sudo snap install thunderbird
flatpak install flathub org.mozilla.Thunderbird


An official extension has to be intalled to add the calendar and to-do list. Click on the menu button on the top right and go to Add-ons > Add-ons. Select Browse all add-ons on the right and then Most Pupular on the left. Lightning should be the first option. Install it and restart. Two new buttons at the top right open tasks and calendar as new tabs.

#floss #semi-ootb


Unofficial ProtonMail desktop client with support for multiple accounts

sudo snap install electron-mail
flatpak install flathub com.github.vladimiry.ElectronMail

.deb, .AppImage and more

If you don’t want to enter your master password every time you open ElectronMail, you have to click on toggle details next to Keep me signed in and either execute the command shown at the bottom or follow the linked FAQ. When adding an account, at API entry point, select your address’s ending, .com, .ch or .onion. In addition to this, only the email address and password have to be entered, unless you use two-factor authentication or two passwords. If you do, follow the links there explaining what you have to do.

By the way, you can unsubscribe from the ProtonMail newsletters in your account settings. Also, ProtonMail itself recommends using a .ch address because the US government could get access to their .com domain and then redirect all emails to their own server instead.

#floss #semi-ootb


Email, RSS, calendar, tasks

sudo apt install kontact
flatpak install flathub org.kde.kontact

It works fine for email and feeds. To make the calendar and to-do list tabs work, calendars have to be ticked at the bottom left of the Calendar tab. They can not be selected or deselected in the To-do List tab. At least for me, Select Categories at the top of To-do List crashes the application.

#floss #m-issues


Web browser, best balance of functionality and privacy

sudo apt install firefox
sudo snap install firefox
flatpak install flathub org.mozilla.firefox


I tried many web browsers, but only the known big ones have proper functionality for everything. Smaller ones are usually based on old or very old versions of Firefox or Chromium and none of the many ones I tested supported all things like videos and gifs on Twitter and streams on Twitch. Many sites don’t work and complain about an outdated browser. If you just want to visit regular websites, other browsers like Midori and Pale Moon might be suitable. Otherwise, Firefox is the only FLOSS browser out of the big ones (apart from Chromium, which apparently is still sending a lot of stuff to Google). Even Firefox seems to have privacy issues, but it’s the best and only browser for full functionality.

All add-ons I recommend are FLOSS.

For privacy and security, using the extension uMatrix for experienced users or uBlock Origin for less experienced users is a must. Unfortunately, the developer of both add-ons just announced the discontinuation of uMatrix. I hope a worthy alternative will arise soon. I also recommend Privacy Badger which, in addition to blocking trackers, turns tracking links like those on Google search results into clean links.

Settings at Preferences I recommend are: Restore previous session = , Always ask you where to save files, Recommend extensions as you browse = ; in the Privacy & Security tab: Strict, Send websites a “Do Not Track” signal = Always, Ask to save logins and passwords = (use KeePassXC if you want a secure password manager (which you should want)).

If you want to specify the site a new tab starts with, Firefox can’t do that by default for some reason. Get this add-on: New Tab Override. I don’t use it because it inserts the url into the address bar and puts the typing cursor in front of it when opening a new tab. This means that I have to delete the url first before I can type one myself.

If Twitter breaks, displaying something like “Oops. The site has experienced a network protocol violation that cannot be repaired.”, you can temporarily bypass the error by reloading the site with Ctrl Shift R or fix it by clicking on i at the left end of the address bar and selecting Clear Cookies and Site Data…. You have to log in again after this.

If you watch Netflix, you have to enable DRM at Preferences > Digital Rights Management Content. As far as I know, Firefox is the only web browser on Linux supporting DRM. Microsoft Edge and the Microsoft Store app are the only applications on computers where Netflix allows playback at higher than 720p as Microsoft allows further prevention of screen recording. Sometimes, resolutions on other browsers are even worse. If you want to be able to use what you paid for, you can install the add-on Netflix 1080p (also available for other Browsers). If that link is broken, take a look at the repository.

If you watch Twitch and want to use BetterTTV emotes, use the open source add-on FrankerFaceZ instead by clicking on download at the bottom. Activate BetterTTV emotes by going to Twitch, clicking on the gear icon below the chat and selecting FrankerFaceZ Control Center > Add-Ons > BetterTTV Emotes. If the sound breaks (this is because of Firefox apparently and not because of the add-on), double-click the Reset Player button at the bottom right of the player. The new button next to the volume slider enables normalising audio, meaning that it will try to adjust both quiet and loud things to the normal volume. This is useful for the many quiet streams. It has to be enabled every time you load a page. If you want global notifications for streamers you follow, I recommend the add-on Twitch Now. The next paragraph relates to Twitch as well.

Firefox mutes autoplaying audio by default. This is usually useful, but on some sites like Twitch it means that streams will always start muted. If you don’t want to manually unmute it every time, click on the lock symbol at the left end of the address bar and next to Autoplay select Allow Audio and Video.

If you have tearing in Firefox after doing this or without proprietary Nvidia drivers, go to Preferences and disable Use smooth scrolling. I don’t have tearing after the Nvidia tearing fix (actually, sometimes still a bit) but it’s scrolling very choppily with smooth scrolling and smooth scrolling in general is naturally very delayed.

#floss #semi-ootb

Tor Browser

Web browsing with onion routing through the Tor network to circumvent censorship and obfuscate identification information, access to .onion sites

sudo apt install torbrowser-launcher
flatpak install flathub com.github.micahflee.torbrowser-launcher


Currently (October 2020), it seems to be broken in all packages on Linux. Either install it from the website or wait for the issue to be fixed. To create a start menu shortcut for the downloaded version, use the command path-to/tor-browser_en-US/start-tor-browser.desktop --register-app

#floss #ootb


Web browser

sudo snap install chromium

Still sends your data to Google but not as bad as Chrome. I just have it installed for when something I have to use only works on Chrome and to test my website for Chromium based browsers.

#floss #ootb

VLC media player

Player for all types of video and audio except for Blu-rays

sudo apt install vlc
sudo snap install vlc
flatpak install flathub org.videolan.VLC

#floss #ootb

Quod Libet

Music player (library view, custom hotkeys, import and export playlists, full integration for SoundCloud, internet radio and audio feeds)

sudo apt install quodlibet
flatpak install flathub io.github.quodlibet.QuodLibet


I tried all music players I could find, none of them had all features I need (library, custom global hotkeys, export and import playlists) and most of them look ugly (and have no dark mode) as well. Rhythmbox is almost what I need but Quod Libet is the only one that has everything and more. It’s not as beautiful as Elisa, but it’s good enough. And it even has a Latin name, it’s exactly what I wished for! The only downside is that the time progress bar is hidden and tiny and can only be temporarily viewed by clicking on > at the top left next to the time. Edit: One year later I took a closer look at the plugins that come with it (because PinePhone) and there is one that adds a screen-wide always-shown bar in the shape of the song’s waveform!

Cycle through different views with Ctrl and 0 - 9 or by clicking on Browse at the top. You can play any SoundCloud song, add them to playlists and even connect your SoundCloud account to see your liked songs. Enable playlist exports by going to File > Plugins and enabling Export as playlist. Then, in the playlist view with Ctrl 2, Right Click a playlist and select Plugins > Export as Playlist….

Custom shortcuts can’t be set in the application itself but it supports commands that can be triggered with shortcuts as described here and here.

#floss #semi-ootb


Music player (library view, custom hotkeys, import and export playlists)

sudo snap install rhythmbox
flatpak install flathub org.gnome.Rhythmbox3

It has almost everything I need as described in the entry above. The only issue is that volume hotkeys have steps of 10 %. That is too high to set the volume to the right value, at least for me. Otherwise, it has a nice UI and works great, so if that’s not a big deal for you, I recommend it. It has SoundCloud integration but you can just search for and play songs and do nothing else. You can’t log in or add SoundCloud songs to playlists or anything.

Custom shortcuts can’t be set in the application itself but it supports commands that can be triggered with shortcuts as described here and here.

#floss #semi-ootb


Music player (library view, import or export playlists, no custom hotkeys)

sudo apt install elisa
flatpak install flathub org.kde.elisa

It has a great graphical interface but without custom hotkeys it’s not in a usable state for me. The default global hotkeys for play, pause and forward/backward work but I need to control the application’s volume separately with hotkeys and having separate hotkeys for everything is very useful when other applications claim the default hotkeys. If you don’t need that it is the best and most beautiful application in my opinion and I fully recommend it.

#floss #ootb


Music player (no library view, with custom global hotkeys, export and import playlists, optionally with perfectly pixelated fonts)

sudo apt install audacious
flatpak install flathub org.atheme.audacious

Global hotkeys can be enabled and configured at File > Settings > Plugins, enable Global Hotkeys and, while it’s marked, click on Settings at the bottom to configure them. They have to be unique, so no global shortcut with the same keys can exist. I set them to Shift Media Keys. Being able to change the volume of just this application with hotkeys is very useful as one can adjust the music’s volume without affecting the global volume for everything else. You can also enable a search tool and playlist manager in the plugins.

It has no library view, you can just add songs to playlists. The reason I use it is because it has functioning hotkeys for everything, including volume with small steps, and it allows perfectly pixelated fonts, even with my own custom fonts. Do to this, I go to File > Settings > Appearance and select Interface = Winamp Classic Interface and the skin Osmosis which has a nice dark colour scheme and the widest area for the scrolling song title. If you want to use a different font, you can customise it below skins. Disable Use bitmap fonts below fonts if your font is not a bitmap font. For my pixel font CFsteel, it was pixel perfect at size 9. This allows me to have the current song title in my stream overlay with a perfectly pixelated font AND with my own pixel font. This is too good to be true.

#floss #semi-ootb


Music streaming service

sudo snap install spotify
flatpak install flathub com.spotify.Client

At least for me, it crashes and breaks a lot, on Windows and Linux.

#css #ootb

Libre Office

Office applications (documents, spreadsheets, presentations etc.)

sudo apt install libreoffice
sudo snap install libreoffice
flatpak install flathub org.libreoffice.LibreOffice



#floss #ootb


Drawing and animation

sudo apt install krita
sudo snap install krita
flatpak install flathub org.kde.krita
sudo add-apt-repository ppa:kritalime/ppa
sudo apt update
sudo apt install krita


Supposedly a very good drawing and animation application and the only one on Linux (except for MyPaint but I have no idea how good that is, and of course the usual Windows applications with Wine).

#floss #ootb


Pixel art and animation


If you buy it on the official website, you get a DRM free download for all operating systems AND a Steam key. The Steam version is DRM free as well.

An incredible pixel art application. I absolutely love it and I enjoy every second of using it, it’s worth every cent. It has many features that make pixel art, sprite work and animation so much easier and more comfortable. There’s also support for custom plugins and themes, I use than which is the default theme with dark colours.

To add a plugin or theme, go to Edit > Preferences… > Extensions and click on Add Extension. Select the .zip file. To select an added theme, go to Themes above Extensions, click on the theme and click Select > Apply. To add a script, put its folder into the scripts folder that can be accessed by going to File > Scripts > Open Scripts Folder.

I also like to change the transparent background to a 1×1 checkered background by going to Edit > Preferences > Background > Size = 1×1. And of course, the most important thing: Opening the timeline/layers with Tab.

#oss #ootb #$

Gnu Image Manipulation Program (GIMP)

Image editing

sudo apt install gimp
sudo snap install gimp
flatpak install flathub org.gimp.GIMP

The only free image editing application on any operating system (and the only on Linux in general, Photoshop is supposed to run with Wine but Affinity Photo currently only runs in Windows VMs) with more than basic features. I tried it once many years ago and hated it but I should give it another try.

#floss #ootb


Vector image editing

(the APT version on the Ubuntu repository is currently (October 2020) outdated, add the official Inkscape repository for the newest version or choose another source for an almost up-to-date version)
sudo apt install inkscape
sudo snap install inkscape
flatpak install flathub org.inkscape.Inkscape
sudo add-apt-repository
sudo apt update
sudo apt install inkscape


#floss #ootb



“Download” it from the link above or, if you don’t want to give them your email address, download the latest .AppImage on their GitHub.

Version 2.1.0 is completely broken on Linux right now (probably, try it yourself). Download version 2.0.0 from GitHub. For some people, apparently for those using proprietary Nvidia drivers because Nvidia sux, it doesn’t work either and gives an OpenGL error. Fortunately, this error can be circumvented by executing it with the argument Storyboarder-2.0.0-linux-x86_64.AppImage --no-sandbox. You can create a .desktop file that executes this command (with a full path to the .AppImage). Right click on an empty spot in your application manager and select Create New > Link to Application and in the Application tab, put the command (with a full path to the .AppImage) in the Command: field. Or edit your start menu shortcut to include the argument. Don’t forget to always decline the offer to update to the new broken version that pops up when you start it.

Pen pressure sensitivity (at least for Wacom, I don’t know about others) does not work on Linux yet. Maybe it works with the Windows version running with Wine.

#oss #m-issues #broken


Audio editing and recording

(the APT version on the Ubuntu repository is currently (October 2020) outdated and has a partly broken layout, use a different package or compile it yourself if you want the newest version)
sudo apt install audacity
sudo snap install audacity
flatpak install flathub org.audacityteam.Audacity

Audio devices have to be changed in PulseAudio Volume Control.

#floss #semi-ootb


Audio production (DAW)

sudo apt install lmms
flatpak install flathub io.lmms.LMMS


For VST support, you have to use LMMS by downloading the .AppImage from the official website instead of versions from repositories and you have to have Wine installed. Apparently, only 32 bit VSTs are supported.

So far, I’ve only used its midi features, so I can’t say how well it works for proper audio production.



Audio production (DAW)


It has a notation editor which LMMS does not and is reasonably priced at 60 $ once, unlike the default applications like Adobe products and FL.

#css #$


Midi editing

Download it from the website. I just use it to view midi events as all other midi capable applications I’ve tried only support volume or something while MidiEditor shows almost everything.

#floss #ootb

MusicBrainz Picard

Audio file metadata editor

sudo apt install picard
sudo snap install picard
flatpak install flathub org.musicbrainz.Picard

I haven’t used it yet but it seems to be very good and it even supports adding cover images to music files.

#floss #ootb


Converting video game music files to midi and sf2

.AppImage (Releases are not located at /releases but at /actions. You have to be logged in to download.)

#floss #ootb

DaVinci Resolve

Video editing

.run installer

It’s an amazing professional application. I’ve used many video editing applications in the past and I really recommend this one. The only downsides are: No easing for position keyframes, no reversing of transitions (to put them at the end of a clip) and it supports very few codecs as input.

When I installed it a month ago, I couldn’t import my database I exported on Windows. Now it worked. Importing single projects always worked.

The title bar is missing, so the application can only be moved and minimised with shortcuts. The bar can be restored, but on my last Kubuntu installation, it disappeared twice, each time after multiple reboots. To restore it, press Alt F3 and select More Actions > Configure Special Application Settings > Appearance & Fixes > No titlebar and frame Force No.



Video editing

sudo apt install kdenlive
slightly outdated
sudo snap install kdenlive
flatpak install flathub org.kde.kdenlive
always up to date official repository
sudo add-apt-repository ppa:kdenlive/kdenlive-stable
sudo apt update
sudo apt install kdenlive


It’s supposed to be good. I haven’t used it yet and I can’t say how it compares to high-end applications like Premiere or Resolve but I know one thing that it can do: scaling with nearest neighbour. As I already said, I’ve used many video editors and none of them had that feature. That means that I don’t have to record my 1080p screen scaled with nearest neighbour to 8K in OBS anymore, using a lot of resources and creating giant files. And all other pixel art things in fideos will finally be much easier. To do so, go to Compositions, drag the filter Composite on the desired clip, click on the filter on the clip and adjust the dimensions or size percentage.

#floss #ootb


3d modelling and animating and much more

sudo apt install blender
sudo snap install blender --classic
flatpak install flathub org.blender.Blender


#floss #ootb


Visual effects

sudo snap install natron
flatpak install flathub fr.natron.Natron


I haven’t used it yet but it’s apparently the only free After Effects alternative and it’s supposed to be good.

#floss #ootb


Code. Editing. Redefined.

flatpak install flathub com.vscodium.codium
Repository from, it’s linked and recommended on the main VSCodium page
wget -qO - | gpg --dearmor | sudo dd of=/etc/apt/trusted.gpg.d/vscodium-archive-keyring.gpgtt
echo 'deb [signed-by=/etc/apt/trusted.gpg.d/vscodium-archive-keyring.gpg] vscodium main' | sudo tee /etc/apt/sources.list.d/vscodium.list
sudo apt update
sudo apt install codium

.deb, .AppImage, .rpm

Visual Studio Code's / VSCode’s / VS Code’s / VSC’s code is open source on github but NOT the compiled version on Microsoft’s site. That version also steals your paintings. It’s similar to Chrome which is not open source but its base is, under the name of Chromium. Only that Microsoft seems to hide that distinction for VSC. You can and should get VSC either by compiling the source code yourself from or by downloading the unofficial precompiled version with no telemetry called VSCodium from one of the three installation options above. I believe, I believe, every day’s a good day when you code and that the .deb .AppImage and .rpm can’t update, so use one of the repositories for automatic updates. VSCodium apparently also allows installing open source extensions while the regular open source version does not have access to extensions at all (if I understood the VSCodium site correctly).

I use the very useful extension Live Server from ritwickdey which adds a button to the bottom right corner that starts a local web server that automatically reloads every time you save. It’s very useful as a live preview of what you’re doing.

I used to use the extension Discord Presence from icrawl for Discord Rich Presence but I use the snap version of Discord now which doesn’t work with the VSC extension. It’s probably good to give Discord a little less personal data.

#floss #ootb


Video game library, Proton

sudo apt install steam
flatpak install flathub com.valvesoftware.Steam


To play not just Linux compatible games on Steam but all games, you have to enable Proton, Valve’s own Wine-based compatibility tool. It allows starting any game just by clicking on play, no additional work is required. To enable Proton, click on Steam in the top left corner of Steam and go to Settings and next to Beta participation, click on CHANGE… and select Steam Beta Update. Click OK and Restart Steam. After it downloaded everything and restarted, go to the settings again and select the Steam Play tab at the bottom. Enable the top tick box to be able to start Windows games with Proton that have been officially tested and work perfectly and enable the bottom tick box to be able to start every Windows game with Proton. Click OK and now you can start every game. With one exception: Easy Anti Cheat. It’s not yet compatible with Wine but it’s finally being worked on with first successful results.

# #

OBS Studio

Screen recording and streaming

outdated on the Ubuntu repository and therefore missing browser source
sudo apt install obs-studio
sudo snap install obs-studio
flatpak install flathub com.obsproject.Studio
sudo apt install ffmpeg
sudo add-apt-repository ppa:obsproject/obs-studio
sudo apt update
sudo apt install obs-studio

Linux uses completely different source types, therefore importing scene collections from Windows will just result in sources that don’t do anything. Only image sources work. Importing a profile from Windows appears to work, but actually doesn’t because the video encoders are different, even though they have the same name. Just like with scenes, they are still listed but not functional. There is no way to get encoders to work in an imported profile from Windows. You have to create all scenes and profiles anew. Write everything down or screenshot everything on Windows.

Every window can have only one window capture. Further window captures capturing the same window will not work. You can still create reference copies, but they all share the same filters. Fortunately, transformations (Right Click on a source > Transform > Edit Transform…) are unique even for reference copies. That means, you can still have multiple sources of the same window with different positions, rotations, sizes, crops and scaling filters (Right Click on a source > Scale Filtering.

#floss #ootb


Virtual machines

sudo apt install virtualbox

.deb, .rpm, .run

It’s supposed to be great and open source but the free open source version does not support connecting USB devices to the VM (except of course for mouse and keyboard). If you don’t need that, VirtualBox is probably the best application for you. Otherwise, use VMware Workstation Player.

#floss #ootb

VMware Workstation Player

Virtual machines

Download the .bundle and execute it in the terminal:

sudo apt install gcc build-essential
chmod +x /your-path/VMware-Player-1.2.3.bundle
sudo bash /your-path/VMware-Player-1.2.3.bundle

Not open source but it allows connecting all USB devices to the VM.

#css #ootb


Android emulator

sudo apt install anbox
sudo snap install --devmode --beta anbox

To get the Google Play Store if you need it, you have to install Anbox, open it, close it and then follow the steps on this website.



Backups, file synchronisation and file versioning

flatpak install flathub org.freefilesync.FreeFileSync

.tar.gz (no automatic updates unless you donate)

I use it to automatically synchronise my most important files with an external hard drive. This allows me to create a backup and enables me to work on my files on another PC when I’m not at home. When I’m back, it applies all changes on the external drive to my own PC. I used to use AllwaySync but every time it started to synchronise it took over my entire RAM and I had to close and restart the process after synchronisation to get RAM space again. And in the last months, it kept running worse, creating thousands of errors and not working properly. FreeFileSync is open source and works perfectly so far.

When you edit the filters, remember that the paths are relative to the folder pair. For example: I added the folder mnt/data/ to a folder pair. If I want to exclude everything in the folder /mnt/data/other/versioning/, I don’t put the full path into the Exclude box but only the path inside the folder pair: other/versioning/. By default, there is an asterisk in the Include box. That means that everything will be included, except for things in the Exclude box. If you only want to include certain things instead of excluding only certain things, simply remove the asterisk and put all locarions you want to include in the Include box instead.

To use versioning, go to the Synchronization tab in the settings, either for all folder pairs or only for a specific one. I want to save old versions of files for seven days in a separate folder. To do so, select Delete files = Versioning, Naming convention = Time stamp [Folder], Last x days = 7 and put the path to a folder into the path box where you want old versions to be saved. For example, I use /mnt/data/other/versioning. If the versioning folder path is in one of the folder pairs that is to be synchronised, you have to add a filter to exclude it. For example, I go to the settings for the folder pair with /mnt/data and add other/versioning/ to the exclusions.

To automatically synchronise files, create a batch job file by clicking on the second save button. Then, use cron to execute the following command at desired times (replace the second part with the path to your .ffs_batch; if you don’t use the Flatpak version, replace the first part with the path to the freefilesync executable):

/usr/bin/flatpak run org.freefilesync.FreeFileSync /mnt/data/other/programmedata/autobackup/SyncSettings-linux.ffs_batch

#floss #semi-ootb



sudo snap install ksnip
flatpak install flathub org.ksnip.ksnip

.AppImage, .deb, .rpm

It seems to be the only screenshot tool on Linux with a magnifying glass for area selections. Unfortunately, the magnifier is always to the bottom right of the cursor, even when that is off-screen. It displays the width and length live as the selection is make Automatic saving and hotkeys work and it has a built-in annotation editor. The editor is of course very useful but it opens after every screenshot and I don’t need it most of the time, so I have to close that window every time I take a screenshot which is a little annoying. The magnifying glass is slightly off, the pixel a bit to the top left is the one that counts and it will be included in the beginning and end of the selection. To bind hotkeys with the Print key to it, the system’s default screenshot hotkeys have to be removed in the system settings.

#floss #semi-ootb



sudo apt install speedcrunch
flatpak install flathub org.speedcrunch.SpeedCrunch

.deb, .AppImage, .rpm



Immediate file search

sudo add-apt-repository ppa:christian-boxdoerfer/fsearch-daily
sudo apt-get update
sudo apt install fsearch-trunk

It’s just like Everything on Windows, it indexes all files and then enables you to find anything immediately. The default searches in file managers are useless compared to this. By default, it indexes only the home folder. You can add more in the settings, I added my /mnt folder.



Password manager

very outdated on the Ubuntu repository
sudo apt install keepassxc
sudo snap install keepassxc
flatpak install flathub org.keepassxc.KeePassXC
sudo add-apt-repository ppa:phoerious/keepassxc
sudo apt-get update
sudo apt install keepassxc


A more developed fork of KeePassX, the Linux port for KeePass. Using a password manager with {a }long, randomly generated and separate passwords for everything is very important and if you use an open source one like this one, your passwords are stored safely and privately. You can even save the encrypted password database on a cloud to be able to access it from any device.

A password generator can be accessed at the die button next to the gear button. I use passwords of 64 characters. Unfortunately, many sites are terrible and have very limited password lengths and allowed characters. Character types can be enabled or disabled with the buttons below and exact characters can be excluded or included by clicking on Advanced to the right. Once generated a password, copy it by selecting it or by clicking on the copy button to the right.

In the settings that can be accessed by clicking on the gear icon, I set Automatically save after every change = to make sure that every password I enter or change is saved immediately. In the Security tab, I set Clear clipboard after = 30 sec to give me enough time to actually paste the password, especially when I need another try because uMatrix broke the first login attempt, for example.

Add an entry by clicking on the plus icon. The default fields are Title, Username, Password, URL and Notes. It’s unfortunate that there is no default field for email address since basically everything requires one and most things use it to log in. Maybe because it’s unusual to have like 10 email addresses like me. Besides adding notes, you can also create more fields by going to the Advanced tab and clicking on the top Add button. To the left is the field’s name and to the right its content. I always add a field for email and sometimes for other things. You can even add files at the bottom. I haven’t used that yet but they will be saved and encrypted inside the database.

Once an entry is created, you can copy its entries with Right Click. Custom attributes like email for me are located at Copy Attribute. It even allows auto-typing the password to prevent anyone from reading it from the clipboard content or key presses. I haven’t used it yet. Just selecting Perform Auto-Type doesn’t seem to work for me but selecting Perform Auto-Type Sequence > any entry works perfectly.

Don’t forget to create regular backups of your database, for example with FreeFileSync.

#floss #semi-ootb


Encryption of folders and partitions

.deb, .rpm

It’s basically the successor of and bases on TrueCrypt, fixing its issues and continuing development. It can turn any file into an encrypted folder that can then be mounted as a partition or encrypt an entire partition or operating system. It also allows creating a regular and a hidden encrypted folder in one file for plausible deniability.

#floss #ootb


Key generation and management and single file encryption between people

GPG, also, known as GnuPG sometimes, is an essential tool for key encryption and used by many Linux components. Therefore it’s most likely preinstalled everywhere. If you prefer a GUI, get Kleopatra. If you want to share keys with someone on Windows, tell them to get Gpg4win which also includes Kleopatra.

Public key cryptography or asymmetric cryptography is a revolutionary concept. Having a regular key or using a cipher like substituting each letter with the next letter in the alphabet has two main weaknesses: Firstly, you have to somehow let the receiver know how they can decrypt the message. This can be intercepted by others. Secondly, if someone finds out what cipher you used to encrypt the message, like substituting each letter with the next one in the alphabet, they simply revert that process by substituting each letter of the encrypted message with the previous one in the alphabet. In public key cryptography, encryption is split into pairs of two keys: one to encrypt and one to decrypt. Anything encrypted with the encryption key cannot be decrypted with that key, so you can give that key to anyone and they will be able to encrypt things for you. It doesn’t matter if someone else finds out about that key because they can’t use it to decrypt the message. Only the decryption key which you keep to yourself in a safe place can decrypt it. Therefore, you can simply send the encryption key to someone and it doesn’t matter if someone intercepts the transmission and also gains access to it. The key to encrypt is called public key. If you want to send something to someone, you need their public key and encrypt it using that key. The key to decrypt is called private key. Only the receiver has that key and keeps it safe. Today, digital encryption is largely based on this concept. If this explanation wasn’t helpful enough and/or you want to know more, take a look at the Wikipedia article.

In the following, I will explain the basic process of creating keys, adding received keys, encrypting and decrypting. GPG uses names and emails but they are just used as usernames basically, you don’t have to use the email address for anything. Keys are stored in an encrypted keyring protected with a password, so get your password manager ready.

To generate a key pair, use the command gpg --full-generate-key. For most cases, the default settings are fine, so just press enter three times, type n and enter again. Then, input a name, email address and optionally a comment to describe this key pair. For example, I use Phalio and After that, you will see everything you entered again and can correct something. Before you continue, copy your password from your password manager if you want to use one. Continue by typing O and pressing enter.

To export your public key, you can write it into a text file with the command gpg --output ~/keys/phalio.key --armor --export The file name and extension can be anything, like PhalioPublicKey7.txt or an inconspicuous hot-cuccoos.jfif.exe. Simply send this file or just the content to anyone when they want to encrypt something for you.

To import someone else’s public key, import the file containing their key with the command gpg --import ~/keys/amarizo.key.

To encrypt files, you have to have the public key of the person you want to send it to imported. Then, use the command gpg --encrypt --sign --armor -r SecretMousePaddyFormula.css to encrypt the file with their key. Replace the email address with the address that person uses for their key (you can press Tab for a list) and the path with the path to the file you want to encrypt. After you press enter, it will ask you if you really want to use that key. If you are certain that the key you imported actually belongs to that person, for example because they sent it to you and you are certain that it was them and the transmission was not compromised, you can ignore this warning and proceed by entering y and pressing enter. Enter the password for your key. Now, you will find a copy of the file in the same location, just in an encrypted state and with the additional file extension .asc. Only the other person’s private key can decrypt the file now. Send the file to them in any way you like.

To decrypt files someone with your public key encrypted and sent to you, simply use the command gpg --decrypt ~/Downloads/SecretMousePaddyFormulaImproved.css.asc > ~/formulas/SecretMousePaddyFormulaImproved.css and enter the password for your key. Replace the first path with the path to the encrypted file and the second path with the path to decrypt the file into.



Font editing

very outdated on the Ubuntu repository
sudo apt install fontforge
flatpak install flathub org.fontforge.FontForge

.AppImage (the first very thick underline is the link)



Manual translation

very outdated on the Ubuntu repository
sudo apt install omegat




Boot drive creation, allows creating permanent live systems that can boot to RAM

sudo add-apt-repository ppa:mkusb/ppa
sudo apt update
sudo apt install mkusb usb-pack-efi

Start the application guidus.



Boot drive creation

sudo add-apt-repository ppa:gezakovacs/ppa
sudo apt-get update
sudo apt-get install unetbootin

Start it with the command sudo mkusb-dus, it will open a GUI.


Windows Applications


#floss free/libre and open source software
#oss open source software
#css closed source software
#$ requires purchase
#ootb works perfectly out of the box
#semi-ootb works perfectly out of the box, but some optional things can or have to be done under certain circumstances
#s-issues usable, but small issues break some minor things
#m-issues partly usable, but issues make some things unusable #broken unusable

#wine-only exists only for Windows and therefore only runs with Wine
#lutris-only only runs with Lutris and not with Wine by itself
#vm-only does not run on Linux, use a VM
#bad-alts there are alternatives for Linux that fulfil the same role, but they are considerably worse
#no-alts there are no alternatives for Linux

Leawo Blu-ray Player

The only Blu-ray player on all platforms that is free of charge.


Install it with wine. For me, the installation freezes near the end and has to be closed with the system monitor, but it still successfully installed. Just start the installed Leawo Blu-ray Player.exe from the start menu or inside the Windows directory.

Apparently, Blu-ray extras use the 32-bit JRE. If you want to use them, download the JRE from here, choose “Windows Offline“. The installation only works with this workaround. Open Winetricks (it comes with Lutris, if you don’t want to install Lutris, look for instructions to install Winetricks). Select Select the default wineprefix > OK > Change settings > OK. At the bottom, select winxp and click OK. Then, install JRE with wine /…/jre-8u261-windows-i586.exe /s. After that, go to the Windows version settings again and select win7 or winver=.

#css #semi-ootb #no-alts #wine-only

Affinity Photo (+ Designer and Publisher)

Image editing

It’s a reasonably priced professional image editing application. Unfortunately, no version has been working with Wine so far. Neither with Lutris. The same goes for their other applications. If GIMP and Inkscape are not good enough for you, you have no choice but to use a VM.

#css #$ #bad-alts #vm-only

Clip Studio Paint

Drawing and animating

It’s a reasonably priced (at sales) professional drawing application with video-editing-like features for animation keyframes like positioning, smoothing, scaling filter settings (useful for pixel art) and more. It only works in .

To install it, click on the + icon on the top left in Lutris and select Add Game…. Put in any name and select Wine as runner. In the Game options tab, select the path to the CSP installer in the field Executable. Save and start it by selecting it and clicking Play. If it doesn’t work the first time, restart your PC.

Once it’s installed, you have to click on the wrench icon below Play and go to the Game options tab. The Executable path is still pointing to the installer. Change it to the installed .exe, most likely at ~/.wine/drive_c/Program Files/CELSYS/CLIP STUDIO 1.5/CLIP STUDIO PAINT/CLIPStudioPaint.exe. If you don’t see the .wine folder, you have to right click the file selection window in an empty spot and activate view hidden files. Save and click on Play again. Logging in is broken, so you have to disconnect your internet connection. You can simply do so in the task bar at the bottom right by clicking on the internet connection icon and selecting Disconnect next to your current connection. Then, Select I already have a licence and Click here if your device is not connected to the Internet at the bottom. Enter your serial number, you can just paste it if you have it saved somewhere. Now you can activate your internet connection again, in the same way you deactivated it earlier if you used that way. Click on the link on the next page (link and log in (or create an account first if you bought CSP before accounts like me). Then, type the 11 blocks of numbers and letters you see in the current CSP window into the CSP website. You can copy each block individually and then click Activate. Now, copy the confirmation key from the website into the CSP window. This one can fortunately be copied and pasted all at once. Click Next and Launch. If you can’t click on a button, click on the window’s title bar first.

To make pen pressure work, go to File > Preferences… > Tablet > Use mouse mode and restart.

To make a start menu shortcut, select CSP in Lutris and click on Create application menu shortcut in the options below play.

#css #$ #lutris-only


8-Bit music production (NES/Famicom tracker)


The regular FamiTracker is not usable with Wine as the instrument editor is broken. Fortunately, 0CC-FamiTracker works perfectly. Just open the .exe with Wine.

0CC-FamiTracker is an improved version of FamiTracker. It adds a lot of incredible quality-of-life features that make FamiTracking much more enjoyable.

The Buffer length at File > Configuration… > Sound is an important setting. By default it’s at 40. A lowe value decreases audio latency but below a certain point the audio breaks and starts crackling. Find the lowest possible value for you. For me it’s 41. But for some reason, half of the time I can set it to 1 with no problem both on Windows and Linux. To significantly reduce audio latency for audio production software and games on Linux, go to Audio Latency. I also recommend right-clicking a channel title volume bar and selecting Meter Decay Rate > Fast. That makes the volume bar follow the actual volume when going down instead of going down very slowly. I hate that.

#floss #ootb #no-alts #wine-only

NSFPlay Synthesia

.nsf (NES music) visualisation


Works with Wine and is both beautiful and interesting to watch.

#floss #ootb #no-alts #wine-only

FL Studio

Music production (DAW)


Not at all reasonably priced, especially with the voice tuning plugin. I just use it to tune voices for Jeff Kaplan songs. I tried other applications but they were horrible at doing this. Actually, FL Studio is horrible at this as well. The voice tuner is very unfriendly to use, some things are broken and there is only one undo state. It’s a pain in the caboose to work with but the result is very good.

Just like for Adobe applications, I can’t and don’t want to pay this price. Especially for an application that I just use once a year. I use the trial version that can’t save and record the result with Audacity.

#css #ootb #wine-only


Keyboard visualiser


A keyboard visualiser is interesting for streams and recordings in my opinion. It’s mostly just for fun, but sometimes it can be useful to document exactly what key whas pressed when. It works with Wine but editing the style crashes the application. Loading a layout with a custom font or just using a custom font in general also crashed it. And it only picks up keyboard inputs in Wine applications, so it can’t be used for non-Wine games. I searched for hours but I couldn’t find a similar application for Linux.

The custom font crash can be solved by copying the font file into a subfolder of the font’s file type at /usr/share/fonts/. My font is a .ttf, therefore I make a subfolder in the folder truetype. These folders can only be edited as root, so use the terminal. Create a new folder with sudo mkdir /usr/share/fonts/truetype/cfpyrite and copy the font(s) into that folder with sudo cp /mnt/data/other/fonts/cf/CFpyrite-Regular.ttf /usr/share/fonts/truetype/CFpyrite/. Unfortunately, this solves the crash but still gives an error message that I couldn’t solve. On my last installation, I got my layout and style to work. I remember adding the link to my font that I store on my website to the keyboard style file located at keyboards/global/ in both "DownloadUrl":lines. I did that now as well but it doesn’t make a difference. Since streaming and recording games with OBS make the FPS drop significantly (at least on Linux? I used Shadowplay to record on Windows) and it doesn’t work with Linux games anyway I won’t bother trying to solve this now.

#floss #m-issues #no-alts #wine-only

AVerMedia RECentral

Recording and streaming with AVerMedia capture cards


It doesn’t work with Wine or Lutris, unfortunately. Running it in a VM works but the recording goes down to like 5 FPS after a couple of seconds. You can record the preview screen with OBS from your real operating system but it’s still a little stuttery. Some capture cards from AVerMedia apparently don’t require this application and can be selected as a V4L2 source in OBS but not my cheap LGP Lite.

#css #vm-only #no-alts

Source Filmmaker

3D animating with the Source Engine

On Steam

Does not work with Proton but with Lutris. According to the Wine database, just Wine should work as well. Unfortunately, it runs at 3 FPS, at least for me.

#css #vm-only #m-issues

Native Games


#floss free/libre and open source software
#oss open source software
#css closed source software
#$ requires purchase
#ootb works perfectly out of the box
#semi-ootb works perfectly out of the box, but some optional things can or have to be done under certain circumstances
#perfect perfect performance
#good good performance
#medium medium performance
#bad barely playable
#s-issues usable, but small issues break some minor things
#m-issues partly usable, but issues make some things unusable
#broken unusable


I played this game back when the blocks were still round

.deb and more

#css #$ #ootb #perfect

ARK: Survival Evolved

Survival with prehistoric creatures

On Steam

Very fun, both thanks to the dinosaurs and thanks to interaction with other players. Don’t play on a PvP server, that’s like a real-life war simulation. Everything takes a lot of work and can be destroyed in seconds be someone on the other end of the globe while you sleep. Very resource intensive but it still runs surprisingly well on medium settings.

#css #$ #ootb #medium

Team Fortress 2

Team-based class-based graphically stylised first-person shooter

On Steam

Incredible game. Unfortunately, for years it has been running terribly on my PC. This is completely independent of graphic settings, it’s the same on maximum and minimum. I just get very low FPS and it’s even worse on Linux. A few people seem to have this problem but others not.

#css #ootb #bad

Portal 2

Portal-based first-person singleplayer and multiplayer puzzle game

On Steam

Incredible game. Unfortunately, it runs even worse than TF2 on Linux for me. I haven’t had a problem with it on Windows.

#css #$ #ootb #bad


GameCube and Wii emulator

sudo apt install dolphin-emu
sudo snap install dolphin-emulator
flatpak install flathub org.DolphinEmu.dolphin-emu
sudo apt-add-repository ppa:dolphin-emu/ppa
sudo apt update
sudo apt install dolphin-emu

Works great on Linux as well. There are so many masterpieces to play, now in high resolutions and framerates while the originals are treasured in my cabinet, never to be used again and only to be lovingly looked at. For many games there are optimisations that improve gameplay like 60 FPS and 16:9 hacks or things that prevent bugs. Always look up a game on the Dolphin Wiki first and implement the recommended changes, settings and improvements for the best experience.

#floss #semi-ootb #perfect

Windows Games Running on Linux


Team-based hero-based graphically stylised first-person shooter

Lutris install script

Currently, it runs nearly perfectly for me with an additional input lag of only 2 ms. The only issue is that it stutters a little for a second every couple of seconds, but that seems not to be the case for others. Sound latency is also an issue by default on Linux that can be minimised. If you already did everything listed under Wine and Game Graphics Drivers and Vulkan, simply click on Install on the Lutris page and then you will install Battle.NET and Overwatch as on Windows. Once you start the game, it will say “Compiling shaders…” at the bottom left. After the first launch, this will take a while. Wait until it’s done. When it’s done once, it will take just a couple of seconds after each launch. Before you actually play, change the graphics settings, including things like the FPS overlay. Set Resolution to your resolution with your monitor’s refresh rate. Set Limit FPS NOT to display-based because that will set it to 10 higher than your actual refresh rate, making G-Sync useless and creating a small jump 10 times per second when one of the extra frames is skipped. Set it exactly to your refresh rate. Activate Reduce Buffering to reduce input lag to a noticeable different minimum. For graphics settings, choose something sensible and preferably 100 % render scale. Changing these settings does not save sometimes, so you might have to restart the game multiple times for them to be permanent. Lastly, you have to run it with Gamemode for it to run perfectly, as described here.

First, get the right drivers and Vulkan API and Wine if you haven’t already. Then, use these commands:

sudo apt install libgnutls30:i386 libldap-2.4-2:i386 libgpg-error0:i386 libsqlite3-0:i386

#css #$ #lutris-only #perfect

Deep Rock Galactic

PvE mining and shooting best played in teams of up to four

On Steam

Runs well at medium graphics settings. A lot of fun to play with friends, especially for someone who loves shooting, mining and friends, like I do.

#css #$ ootb #good