Stupid Linux Garbage I Had To Search For And Troubleshoot

Archived here so you don't have to do that.

← Return to Main page

Linux is cool because if something breaks I know I can usually fix it myself instead of waiting for an upstream patch from a corporation to eventually fix my issue.

However, heavy lifting is hard sometimes, and finding results on the internet sucks because of SEO stupidity.

So here's my attempt to solve the problem without making a five-trillion-line Gist and praying to Steve Ballmer that it shows up on Google or Bing or Dog Pile.

May you attain enlightenment:

  1. Getting intimate with software internals.
  2. Stupid solutions that make you slap your head.
  3. Familiarity with the command line.


Browsers, Websites, and Extensions

This isn't Linux-specific, but it's worth documenting.

HTML Elements on various websites randomly resize or reflow when you focus them

Symptoms and relations:

  • You've recently installed the DeepL extension to your browser to translate text.

What's happening?

The DeepL extension is fucking awful and will forcibly inject itself into and around contenteditable and textarea nodes on the off chance you want to translate your text into other languages.

How do I fix it?

Uninstall or disable the extension. Sorry, mac.


rEFInd

rEFInd boots the wrong initramfs file for your kernel flavor

Symptoms and relations:

  • You're probably on Arch or a derivative.
  • You are running more than 1 flavor of Linux kernel.
  • After upgrading, booting sends you to an emergency shell.
  • You can prevent the shell by pressing F2 or tab and selecting a very specific kernel, usually the last one that got upgraded.
  • You can also fix it by meticulously managing your refind.conf file, but that sucks and takes time and you have to do this every time you upgrade.

What's happening?

By default rEFInd assumes that the end of a kernel file is its version number: like, vmlinuz-linux-4.8 will obviously match with initramfs-linux-4.8, and so on with flavors like initramfs-linux-zen-4.8.

Arch decided to be different and spunky and doesn't put version numbers on its kernels whatsoever, so rEFInd fucks up and assumes that -zen is the version number it's looking for. As a result it will just load a random initramfs and vmlinuz file and assume they both work together. (Ok, it's not random, but it's based on which file got touched last so it's effectively random.)

How do I fix it?

  1. Open up /boot/EFI/refind/refind.conf
  2. Search for "extra_kernel_version_strings"
  3. If that line is commented out, uncomment it.
  4. Whatever is in there, make sure the last thing in the list is linux without anything else after it.

    Here's what mine is set to:
    extra_kernel_version_strings linux-lts,linux-rt,linux-hardened,linux-zen,linux-rt-lts,linux

While you're there, consider uncommenting the fold_linux_kernels option as well, which will split all your various flavors into individual bootable buttons instead of putting them all under one generic "Arch Linux" bootable option.


Vulkan

After a fresh install, random Steam games fail to launch with cryptic, unsearchable error messages

Symptoms and relations:

  • You're on Arch Linux.
  • You have an NVidia video card.
  • You selected to install steam as an optional install package during your archinstall process.
  • SteamVR gives you "Error 308: A Component Is Not Working Correctly".
  • Capcom games crash with "ERR03: Failed to Initialize DirectX11".

What's happening?

Valve wants all your games to run properly when you install Steam, so as a part of its package install process it will try to install proper packages as dependencies to run things like DXVK and 32-bit drivers for your hardware.

During the archinstall process, though, it doesn't know anything about your hardware and will just assume you have an AMD card, installing the AMD drivers in the process.

Needless to say, your NVidia card won't care at all about these AMD drivers.

How do I fix it?

pacman -S nvidia-utils lib32-nvidia-utils

Pacman will complain that installing this will conflict with some other provider of vulkan-driver and lib32-vulkan-driver, just have it remove the other one and tell it everything is going to be okay.


Xorg/X11

Edits to xorg.conf fail to apply, even though the file saves correctly and errors still make X11 exit

Symptoms and relations:

  • You're on Manjaro Linux.
  • Regardless of how much you change xorg.conf, somehow it seems to completely ignore whatever you write.
  • NVidia users will find that nvidia-settings settings don't persist after a reboot.

What's happening?

Manjaro doesn't use xorg.conf. At least, it does, but not directly. Anyway, quit touching it.

Arch doesn't generate an xorg.conf anymore by default, but that breaks spectacularly in edge cases. Because Manjaro is specifically designed to be user friendly, it overengineers a nice conf file setup particular for your computer when you first install it in a way that will ideally scale up well as you change your hardware.

Part of this setup involves not editing the main xorg.conf and instead importing a bunch of smaller conf files that it can swap out as it needs. These are found in /etc/X11/mhwd.d/, and are - of course - managed by mhwd.

How do I fix it?

Edit the files in /etc/X11/mhwd.d/ instead, or at least go to the linked folder from there and make your own conf to activate with mhwd.



On an older DVI monitor, some video modes are completely missing

Symptoms and relations:

  • You're on NVidia.
  • Your monitor is from like 1999.
  • You're using DVI.
  • You know for an absolute fact your monitor is specifically 720p, but every time you try to set that resolution specifically you can't find it. All you have are 1280x768 and 1280x1024.

What's happening?

Computers are fucking STUPID is what's happening.

So when the first few HDTVs and HD monitors came out some computers were still stuck with Extended VGA modes, and that meant they had no clue how to output to progressive scan TVs.

So the idea was instead you just tell your monitor to output to a 4:3 resolution and the TV would squish it to be 720p. Then make your video player display a stretched fullscreen image and presto, you can watch your DVDs on your computer!

Unfortunately, it's now $CURRENT_YEAR and your modern day graphics card has no qualms outputting a grid of pixels, but the EDID on your TV is saying "Nooo I don't support that! Don't break your TV tuner!"

Windows just doesn't care and forcibly puts 720p as one of the resolutions available if it detects similar resolutions being reported by the TV (though that doesn't stop it from trying to set 1280x768 as the default.) X11 is a bit more strict, though, and will read the EDID and take it at its word, meaning that the resolution you need just doesn't show up.

How do I fix it?

Pop open your xorg.conf or equivalent.

You've probably read in the NVidia docs(External) that you should use options like Option "ModeValidation" "NoEdidModes" or Option "UseEdidFreqs" "false".

These are wrong and the actual option isn't even in this part of the NVidia Docs. In fact, the first option straight up got deprecated without warning and doesn't work anymore. Computers are awesome (sarcasm).

The actual option you want is this:
Option "ModeValidation" "AllowNonEdidModes"

In fact, it's probably not a good idea to enable that for every single monitor or you'd be flooded with possible resolutions. You can enable non-EDID modes for individual outputs like this:
Option "ModeValidation" "DVI-D-0:AllowNonEdidModes"

You can get the names of your outputs from xrandr.