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:
- Getting intimate with software internals.
- Stupid solutions that make you slap your head.
- 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 touch
ed last so it's effectively random.)
How do I fix it?
- Open up
/boot/EFI/refind/refind.conf
- Search for "
extra_kernel_version_strings
" - If that line is commented out, uncomment it.
- 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 yourarchinstall
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 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
.