Mostly excellent “free” software

A near-exhaustive list of software I use, not an exhaustive list of the best software. There could very well exist superior alternatives. Feel free to point them out.

Latest update: 2024-12-06, 11:21:02 CET.

Some arguments to consider financially supporting developers who share their work for free without ads: What if I paid for all my free software?

Table of contents

Linux

Click to see my hardware.
  • PSU: Corsair HX1000i (2022).
  • MOBO: Gigabyte Z790 Gaming X AX, ATX.
  • CPU: Intel Core i5-13600K.
  • Thermal paste: ARCTIC MX-6.
  • CPU fan: Noctua NH-D15.
  • RAM: 2 x 16 ㎇ Corsair DDR5 Vengeance 5600.
  • GPU: MSI GeForce RTX 3060 Ti Gaming Z Trio 8G LHR.
  • NVMe SSD: 2 x 500 ㎇ WD_BLACK SN850.
  • SSD: 128 ㎇ Samsung 840 PRO & 250 ㎇ Samsung 850 EVO.
  • HDD: 500 ㎇ Seagate Momentus 7200.4 ST9500420AS.
  • Case: Thermaltake Core V71.
  • Monitor: 27" QHD 165 ㎐ LG UltraGear 27GP850-B.
  • Keyboard: Keychron K3 (V2); (RGB, hot swappable, switch: Low Profile Keychron Optical Brown (ERGO-KCK3E3;K3V2)).
  • Numerical keyboard: Logilink ID0184.
  • Mouse: EVGA X15.
  • USB flash drive: 256 ㎇ Kingston DataTraveler USB 3.2 Gen 2.

Internet

Smartphone

Model: 1. Samsung S10e (second-hand), 2. OnePlus One (2014).

OS: 1. Android 12, 2. LineageOS (18.1) + microG (No Google account needed!).

F-Droid app catalogue:

Smartphone

Aurora Store app catalogue:

Miscellaneous


Linux installation checklist

Installation checklist of my preferred Arch-based Linux operating system EndeavourOS. Need help? Read the EndeavourOS wiki, the Manjaro wiki, or use the remarkably extensive ArchWiki.

  1. Backup what you don’t want to lose on a separate medium. It brings peace of mind to have a second personal computer (PC) in case something breaks and renders your current PC temporarily unusable.
  2. Download the OS and create the install medium with Ventoy.
  3. To launch the OS from the USB key: reboot and press F12 / some other F-key / delete during the startup to pick/edit the drive to boot from. During the start up process it usually mentions which button to push to change boot device.
  4. Install the OS.
  5. Disable fast startup when dual-booting Windows!

Packages

I have certain set of software I install on every new machine. Here follows a list I copy-paste so I don't have to install everything individually each time.

Default:

pacman -Syu --needed btop yakuake xscreensaver redshift rsync grsync hblock gnome-disk-utility gparted hunspell hunspell-nl hunspell-en_GB hunspell-fr qalculate-qt smplayer okular fwupd tmux libreoffice-still libreoffice-still-en-gb libreoffice-still-nl libreoffice-still-fr calibre npm transmission-qt kdeconnect nheko ncdu zed mousepad xfce4-taskmanager megasync
yay autokey-gtk input-remapper-git simplescreenrecorder-bin lyx rustdesk-bin rate-mirrors zen-browser-bin crow-translate
npm install -g live-server

Direct download: Beeper, Notesnook, YT Music 🚫 ads

Number crunching

boinc opencl-nvidia python-requests

Optional/legacy packages

Click to see the optional/legacy packages.
pacman -Syu --needed vivaldi vivaldi-ffmpeg-codecs element-desktop shotcut rssguard discord bluez bluez-utils texstudio sagemath sagemath-doc xsane seahorse noto-fonts-emoji playerctl xfce4-systemload-plugin xfce4-sensors-plugin gst-plugins-good geany-plugins android-tools catfish ffmpeg ffmpegthumbs ffmpegthumbnailer gufw bash-completion thunar gvfs gvfs-mtp tumbler thunar-media-tags-plugin thunar-volman xdotool qt5-imageformats xournalpp make automake base-devel texlive-latex texlive-latexextra remmina libvncserver x11vnc inotify-tools dnsutils baobab peek thunderbird birdtray clementine torbrowser-launcher audio-recorder zsh vscodium-bin libreoffice-fresh
yay sblock-git

To configure

Wallpaper

Forest Clearing

Forest Clearing by Ironclad.

Shell

Bash/Zsh aliases

alias xyz="xdg-open path/to/file.ods"
alias xyz="cd path/to/folder/"
alias xyz="cd /path/to/scripts/ && ./script-name.sh $1"
alias upd="yes | sudo pacman -Syu"
alias gimps="cd .GIMPS/p95v308b17.linux64/ && ./mprime -m"
alias cync="cd /home/…/public/ && git pull && xdotool key ctrl+shift+t && live-server"
alias clean="sudo pacman -Sc && rm -rf ~/.cache/* && sudo pacman -Rns $(pacman -Qtdq)"
alias gitp="git push -u origin main"
sleep 1; xset dpms force off

Zsh

To install Linux Manjaro's zsh config: yay manjaro-zsh-config, copy-paste the text below into the .zshrc file in the home directory, within the terminal settings change /bin/bash to /bin/zsh, close and re-open the terminal.

# Use powerline
USE_POWERLINE="true"
# Has weird character width
# Example:
#    is not a diamond
HAS_WIDECHARS="false"
# Source manjaro-zsh-configuration
if [[ -e /usr/share/zsh/manjaro-zsh-config ]]; then
  source /usr/share/zsh/manjaro-zsh-config
fi
# Use manjaro zsh prompt
if [[ -e /usr/share/zsh/manjaro-zsh-prompt ]]; then
  source /usr/share/zsh/manjaro-zsh-prompt
fi

If the font renders incorrectly after a KDE Plasma 6 upgrade, then use the following font in your Konsole profile: NotoSansM Nerd Font Mono

uBlock Origin

Globally block 3rd-party scripts and 3rd-party frames.

* * 3p-frame block
* * 3p-script block

Hosts file

sBlock

mkdir /etc/sblock/ && sudo echo -e 'http://sbc.io/hosts/hosts\nhttp://sbc.io/hosts/alternates/porn-only/hosts' > /etc/sblock/sources.list
sblock

To whitelist a domain, add arscyni.cc and www.arscyni.cc to /etc/sblock/allow.list and run sblock again.

Code editor

Zed

Extensions: HTML, Emmet, LTeX, SCSS

~/.config/zed/settings.json:

{
  "features": {
    "inline_completion_provider": "none"
  },
  "ui_font_size": 16,
  "buffer_font_size": 16,
  "theme": {
    "mode": "system",
    "light": "Atelier Cave Dark",
    "dark": "One Dark"
  },
  "soft_wrap": "editor_width",
  "tab_size": 2,
  "lsp": {
    "ltex": {
      "settings": {
        "ltex": {
          "language": "en-GB"
        }
      }
    }
  }
}

~/.config/zed/keymap.json:

[
  {
    "context": "Workspace",
    "bindings": {
      // "shift shift": "file_finder::Toggle"
    }
  },
  {
    "context": "Editor",
    "bindings": {
      // "j k": ["workspace::SendKeystrokes", "escape"]
      "ctrl-s": "workspace::SaveWithoutFormat",
      "ctrl-k": "editor::Format"
    }
  }
]

By default Zed uses the VSCode/VSCodium keymappings, and it supports Emmet. However, for some reason, "Emmet: wrap with abbreviation" is not supported yet, which I frequently use to wrap HTML tags around words with. In the meantime one can use AutoKey by assigning the following script to a hotkey:

text_selected = clipboard.get_selection()
text_input = dialog.input_dialog(title="Wrap with a tag.", message="E.g., type cite to get <cite>.", default="")
keyboard.send_key("")
clipboard.fill_clipboard(f"<{text_input[1]}>{text_selected}")
keyboard.send_keys("+v")

VSCodium

To change the minimap colors, etc. [source 1, 2, 3, 4], go to File → Preferences → Settings → in the search box, type: workbench.colorCustomizations → click "Edit in settings.json"

Click to show the VSCodium config.
{
  "editor.tabSize": 2,
  "editor.wordWrap": "on",
  "cSpell.language": "en-GB",
  "editor.minimap.showSlider": "always",
  "workbench.colorCustomizations": {
    "editor.background": "#faebd7",
    "editor.foreground": "#000000",
    // "editor.lineHighlightBorder": "#ffffff",
    "editor.lineHighlightBackground": "#f1fdff",
    "editor.selectionBackground": "#7cffc2",
    "editor.selectionHighlightBackground": "#d2e6d780",
    "scrollbarSlider.activeBackground": "#95efff",
    "scrollbarSlider.hoverBackground": "#c0ebff",
    "scrollbarSlider.background": "#dfeeff",
  },
  "workbench.colorTheme": "Default Light Modern",
  "editor.fontFamily": "'Droid Sans Mono', 'monospace', monospace",
  "editor.fontSize": 16,
  "editor.hover.above": false,
  "editor.hover.delay": 700,
}

Frequently used shortcuts:

Automatically execute a Python script in VSCodium when it is updated

  1. sudo pacman -S inotify-tools
  2. Create a shell script e.g., "auto_execute.sh" containing the code below:
    #!/bin/bash
    while inotifywait -e modify,move_self -qq your_python_script.py; do
      python3 your_python_script.py
    done
    Make sure the shell script is executable by right clicking it → "Properties" → "Permissions" → "Program: ☑ Allow this file to run as a program", or by running the following command: chmod +x auto_execute.sh
  3. Open the terminal in VSCodium and run auto_execute.sh

Now, whenever you save "your_python_script.py", it will instantly throw the output in the VSCodium terminal, or whatever terminal you executed the shell script in. Source: ChatGPT.

LyX

To build LyX one needs packages make automake autoconf, otherwise it throws the following error:

configure: error: cannot compile a simple Qt executable. Check you have the right $QTDIR

Respectively install texlive-latex texlive-latexextra to avoid/fix the error messages below, of which the latter appears only on some documents when using pdflatex.

The selected document class
Article (Standard Class)
  requires external files that are not available.
  The document class can still be used, but the
  document cannot be compiled until the following
  prerequisites are installed:
article.cls
  See section 3.1.2.2 (Class Availability) of the
  User's Guide for more information.

LaTeX Error: File `setspace.sty' not found.

KDE

Custom KRunner/Plasma browser search query

To configure Plasma search to open a browser with a query when entering "xyz example.com", e.g., "viv example.com" that opens example.com in Vivaldi browser:

create a symlink named "viv" in /usr/bin/ to the actual vivaldi binary” —Jan R..

Either there likely already is a symlink named "vivaldi" within /usr/bin/, of which you can make another symlink with a more convenient shorter name: sudo ln -s vivaldi viv

Or go to the directory containing the vivaldi binary, in my case "/opt/vivaldi/", and in that directory run the command: sudo ln -s vivaldi /usr/bin/viv

Web Search Keywords backup

To back up all your custom websites added to the Web Search Keywords KRunner plugin, navigate to ~/.local/share/kf6/searchproviders/ and back up the containing files.

Revert to X11 from Wayland

The upgrade from KDE Plasma 5 to 6 enables Wayland by default despite using X11 before, and it breaks tons of stuff, e.g., Vivaldi browser became unusable, XScreenSaver does not work, et cetera. To revert to X11 open SDDM → Behaviour… → Automatically log in…with session Plasma (X11).

How to reauthorise a Gmail account in KMail

Open kdewallet with kdewalletmanager and delete "akonadi_imap_resource_…" in "Contents" > "imap" > "Passwords".

How to make a unified folder in KMail.

Go to "Settings" > "Plugins" > "Akonadi Agents", and click the slider icon 🎚️ next to "Unified Mailbox Agent".

Zen Browser / LibreWolf

Enable userChrome.css customisation

  1. Create a userChrome.css file in the browser's profile directory, in a folder named "chrome", e.g., ~/.librewolf/rqp0p3up.default-default/chrome/
  2. Add your preferred CSS tweaks in this file.

Favicon-only bookmarks

To hide the names of individual bookmarks and keep the names of folders while removing the folder icons in FireFox or derivatives such as LibreWolf, Zen Browser, or Waterfox:

  1. Save the following code* within the aforementioned userChrome.css file:
    /* Hide the names of individual bookmarks */
    #personal-bookmarks .bookmark-item:not([type="menu"]) .toolbarbutton-text {
        display: none !important;
    }
    
    /* Keep the names of bookmark folders visible */
    #personal-bookmarks .bookmark-item[type="menu"] .toolbarbutton-text {
        display: inline !important;
    }
    
    /* Remove the folder icon of bookmark folders */
    #personal-bookmarks .bookmark-item[type="menu"] .toolbarbutton-icon {
        display: none !important;
    }
  2. Restart the browser.

To simply hide the names of everything in the bookmarks bar, use: #personal-bookmarks .toolbarbutton-text {display:none!important}

– – – – –

* I used ChatGPT for this, sorry.

Bottom bookmarks and navigation bar

To move the bookmarks and navigation bar to the bottom of the window in LibreWolf, save in the aforementioned userChrome.css file the following:

/* Move the bookmarks bar and navigation bar to the bottom of the window */
  @-moz-document url(chrome://browser/content/browser.xhtml) {
    :root:not([inFullscreen]) {
      --uc-nav-bar-height: 36px; /* Adjust this value based on your navigation bar height */
      --uc-bookmarks-bar-height: 30px; /* Adjust this value based on your bookmarks bar height */
    }

    /* Adjust the main browser layout to create space at the bottom */
    #browser, #customization-container {
      margin-bottom: calc(var(--uc-nav-bar-height) + var(--uc-bookmarks-bar-height));
    }

    /* Move the navigation bar to the bottom */
    #nav-bar {
      position: fixed !important;
      bottom: 0 !important;
      width: 100%;
      z-index: 2;
      background-color: #2e2e2e !important;
      opacity: 1 !important;
    }

    /* Move the bookmarks bar above the navigation bar */
    #PersonalToolbar {
      position: fixed !important;
      bottom: var(--uc-nav-bar-height) !important;
      width: 100%;
      z-index: 1;
      background-color: #2e2e2e !important;
      opacity: 1 !important;
    }

    /* Ensure each toolbar element grows appropriately */
    #personal-bookmarks, #nav-bar {
      display: flex;
      flex-grow: 1;
    }
  }
  

Autohide every UI when not hovered over browser

Click to expand the code.
#navigator-toolbox {
  max-height: 0;
  overflow: hidden;
  transition: ease all 5s;
}

#main-window:hover #navigator-toolbox {
  max-height: 100vh;
  animation: 0s pop-in;
  animation-fill-mode: both;
  animation-delay: 5s;
}

@keyframes pop-in {
  from {overflow: hidden}
  to {overflow: unset}
}

KeePassXC in LibreWolf

To enable KeePassXC browser integration in LibreWolf:

  1. In KeePassXC go to "Tools" → "Settings" → "Browser Integration" → "Advanced" → Enable "☑ Use a custom browser configuration location:"
  2. "Config Location:" ~/.librewolf/native-messaging-hosts
  3. Open LibreWolf, assuming the extension KeePassXC-Browser is already installed, and open the extension's settings → "Connected Databases" → "🔗 Connect"

Enhancer for YouTube

Click to expand the exported backup content. {"version":"2.0.126","settings":{"blur":0,"brightness":100,"contrast":100,"grayscale":0,"huerotate":0,"invert":0,"saturate":100,"sepia":0,"applyvideofilters":false,"backgroundcolor":"#000000","backgroundopacity":100,"blackbars":false,"blockautoplay":true,"blockhfrformats":true,"blockwebmformats":false,"boostvolume":false,"cinemamode":false,"cinemamodewideplayer":false,"controlbar":{"active":true,"autohide":false,"centered":true,"position":"absolute"},"controls":["loop","volume-booster","size","pop-up-player","speed","screenshot","options"],"controlsvisible":false,"controlspeed":true,"controlspeedmousebutton":false,"controlvolume":false,"controlvolumemousebutton":true,"convertshorts":false,"customcolors":{"--dimmer-text":"#cccccc","--hover-background":"#232323","--main-background":"#111111","--main-color":"#00adee","--main-text":"#eff0f1","--second-background":"#181818","--shadow":"#000000"},"customcssrules":"","customscript":"","customtheme":false,"darktheme":true,"date":1687771133142,"defaultvolume":true,"disableautoplay":true,"executescript":false,"expanddescription":false,"filter":"none","hidecardsendscreens":false,"hidechat":false,"hidecomments":false,"hiderelated":false,"hideshorts":true,"ignoreplaylists":true,"ignorepopupplayer":false,"localecode":"en_GB","localedir":"ltr","message":false,"miniplayer":true,"miniplayerposition":"_top-left","miniplayersize":"_320x180","newestcomments":false,"overridespeeds":true,"pauseforegroundtab":true,"pausevideos":true,"popuplayersize":"960x540","qualityembeds":"medium","qualityembedsfullscreen":"hd1080","qualityplaylists":"large","qualityplaylistsfullscreen":"hd1080","qualityvideos":"large","qualityvideosfullscreen":"hd1080","reload":false,"reversemousewheeldirection":false,"selectquality":true,"selectqualityfullscreenoff":true,"selectqualityfullscreenon":true,"speed":1,"speedvariation":0.25,"stopvideos":true,"theatermode":true,"theme":"youtube-deep-dark","themevariant":"youtube-deep-dark-kde.css","update":1717776894743,"volume":75,"volumemultiplier":3,"volumevariation":5,"wideplayer":false,"wideplayerviewport":true}}

Reddit Enhancement Suite

☑ "Hide All Child Comments".

Remmina

On the remote computer (server) to connect to:

  1. Install packages: libvncserver x11vnc
  2. Open port 5900 in the firewall settings.
  3. Start the vncserver by running the command: x11vnc -usepw -forever -display :0

On the local computer:

  1. Install packages: remmina libvncserver
  2. In Remmina "Add a new connection profile" by clicking "+" in the top left corner. Type a name. Select protocol "Remmina VNC Plugin". Enter the server: ipaddress:5900. Click "Save and Connect".

The desktop environment of the remote computer should now be visible. Don't forget to set a password in x11vnc when leaving the connection open indefinitely.

BOINC

Install package boinc. Add your username to the boinc user group: gpasswd -a x boinc. Start boinc: systemctl start boinc-client.service.

Double-check if boinc causes log spam: journalctl --grep='Authorization required, but no authorization protocol specified'

If this log spam is present, create a “drop-in file” for boinc-client.service:

mkdir /etc/systemd/system/boinc-client.service.d/ && sudo echo -e '[Service]\nLogFilterPatterns=~no authorization protocol specified' > /etc/systemd/system/boinc-client.service.d/wayland-syslog-spam.conf

To use BOINC via the GUI, click the previous link. When creating the gui_rpc_auth.cfg file and launching boincmgr via commandline it will probably work, but when launching BOINC Manager via an application launcher I recall it throwing an "gui_rpc_auth.cfg exists but can't be read. Check the File permissions." error message. Changing the file's permissions fixed this: chmod 640 ~/gui_rpc_auth.cfg.

To make sure the mouse input suspends the tasks too—after startup/boot/login—and not only keyboard inputs: install "xorg-xhost" and run echo 'xhost si:localuser:boinc' > ~/.xprofile. Or just run xhost si:localuser:boinc in a terminal to not make it persistent.

GpuOwl

It's possible to run GIMPS on the CPU (mprime) and GPU (GpuOwl) simultaneously. [Thanks to kriesel for the tip.]

git clone https://github.com/preda/gpuowl.git
python3 ~/gpuowl/tools/primenet.py -u GIMPSusername
~/gpuowl/build-release/gpuowl

XScreenSaver

Enable XScreenSaver in KDE Plasma.

Commands

Click to expand my .xscreensaver configuration file content.
# XScreenSaver Preferences File
# Written by xscreensaver-settings 6.09 for arsCynic on Sun Oct 27 11:46:40 2024.
# https://www.jwz.org/xscreensaver/

timeout:	0:03:00
cycle:		0:10:00
lock:		False
lockTimeout:	0:00:00
passwdTimeout:	0:00:30
visualID:	default
installColormap:    True
verbose:	False
splash:		True
splashDuration:	0:00:05
demoCommand:	xscreensaver-settings
nice:		10
fade:		True
unfade:		False
fadeSeconds:	0:00:01
ignoreUninstalledPrograms:False
dpmsEnabled:	False
dpmsQuickOff:	False
dpmsStandby:	2:00:00
dpmsSuspend:	2:00:00
dpmsOff:	4:00:00
grabDesktopImages:  False
grabVideoFrames:    False
chooseRandomImages: False
imageDirectory:

mode:		random
selected:	-1

textMode:	url
textLiteral:	XScreenSaver
textFile:
textProgram:	fortune
textURL:	https://en.wikipedia.org/w/index.php?title=Special:NewPages&feed=rss
dialogTheme:	greenblack
settingsGeom:	1,28 -1,-1

programs:								      \
-				maze --root				    \n\
- GL: 				superquadrics --root			    \n\
-				attraction --root			    \n\
-				blitspin --root				    \n\
-				greynetic --root			    \n\
-				helix --root				    \n\
-				hopalong --root				    \n\
-				imsmap --root				    \n\
-				noseguy --root				    \n\
-				pyro --root				    \n\
-				qix --root				    \n\
-				rocks --root				    \n\
-				rorschach --root			    \n\
-				decayscreen --root			    \n\
-				flame --root				    \n\
-				halo --root				    \n\
-				slidescreen --root			    \n\
-				pedal --root				    \n\
-				bouboule --root				    \n\
-				braid --root				    \n\
-				coral --root				    \n\
-				deco --root				    \n\
-				drift --root				    \n\
-				fadeplot --root				    \n\
        galaxy --root				    \n\
-				goop --root				    \n\
-				grav --root				    \n\
-				ifs --root				    \n\
- GL: 				jigsaw --root				    \n\
-				julia --root				    \n\
-				kaleidescope --root			    \n\
- GL: 				moebius --root				    \n\
-				moire --root				    \n\
- GL: 				morph3d --root				    \n\
-				mountain --root				    \n\
-				munch --root				    \n\
-				penrose --root				    \n\
- GL: 				pipes --root				    \n\
-				rdbomb --root				    \n\
- GL: 				rubik --root				    \n\
-				sierpinski --root			    \n\
-				slip --root				    \n\
- GL: 				sproingies --root			    \n\
-				starfish --root				    \n\
-				strange --root				    \n\
-				swirl --root				    \n\
-				triangle --root				    \n\
-				xjack --root				    \n\
-				xlyap --root				    \n\
- GL: 				atlantis --root				    \n\
-				bsod --root				    \n\
- GL: 				bubble3d --root				    \n\
  GL: 				cage --root				    \n\
-				crystal --root				    \n\
-				cynosure --root				    \n\
-				discrete --root				    \n\
-				distort --root				    \n\
-				epicycle --root				    \n\
-				flow --root --no-box			    \n\
- GL: 				glplanet --root				    \n\
-				interference --root			    \n\
-				kumppa --root				    \n\
- GL: 				lament --root				    \n\
-				moire2 --root				    \n\
- GL: 				sonar --root				    \n\
- GL: 				stairs --root				    \n\
-				truchet --root				    \n\
-				vidwhacker --root			    \n\
-				webcollage --root			    \n\
-				blaster --root				    \n\
-				bumps --root				    \n\
-				ccurve --root				    \n\
-				compass --root				    \n\
-				deluxe --root				    \n\
-				demon --root				    \n\
- GL: 				extrusion --root			    \n\
-				loop --root				    \n\
-				penetrate --root			    \n\
-				petri --root				    \n\
-				phosphor --root				    \n\
- GL: 				pulsar --root				    \n\
-				ripples --root				    \n\
-				shadebobs --root			    \n\
  GL: 				sierpinski3d --root --delay 16935 --depth 4 \n\
-				spotlight --root			    \n\
-				squiral --root				    \n\
-				wander --root				    \n\
-				xflame --root				    \n\
-				xmatrix --root				    \n\
- GL: 				gflux --root				    \n\
-				nerverot --root				    \n\
        xrayswarm --root			    \n\
-				xspirograph --root			    \n\
- GL: 				circuit --root				    \n\
- GL: 				dangerball --root			    \n\
- GL: 				dnalogo --root				    \n\
- GL: 				engine --root				    \n\
- GL: 				flipscreen3d --root			    \n\
- GL: 				gltext --root				    \n\
- GL: 				menger --root --delay 32258 --speed 50	    \n\
- GL: 				molecule --root				    \n\
-				rotzoomer --root			    \n\
-				scooter --root				    \n\
-				speedmine --root			    \n\
- GL: 				starwars --root				    \n\
- GL: 				stonerview --root			    \n\
-				vermiculate --root			    \n\
-				whirlwindwarp --root			    \n\
-				zoom --root				    \n\
-				anemone --root				    \n\
-				apollonian --root			    \n\
- GL: 				boxed --root				    \n\
- GL: 				cubenetic --root			    \n\
- GL: 				endgame --root				    \n\
-				euler2d --root				    \n\
-				fluidballs --root			    \n\
- GL: 				flurry --root				    \n\
- GL: 				glblur --root				    \n\
- GL: 				glsnake --root				    \n\
-				halftone --root				    \n\
- GL: 				juggler3d --root			    \n\
- GL: 				lavalite --root				    \n\
-				polyominoes --root			    \n\
- GL: 				queens --root				    \n\
- GL: 				sballs --root				    \n\
- GL: 				spheremonics --root			    \n\
-				twang --root				    \n\
- GL: 				antspotlight --root			    \n\
-				apple2 --root				    \n\
- GL: 				atunnel --root				    \n\
-				barcode --root				    \n\
- GL: 				blinkbox --root				    \n\
- GL: 				blocktube --root			    \n\
- GL: 				bouncingcow --root			    \n\
-				cloudlife --root			    \n\
- GL: 				cubestorm --root			    \n\
-				eruption --root				    \n\
- GL: 				flipflop --root				    \n\
- GL: 				flyingtoasters --root			    \n\
-				fontglide --root			    \n\
- GL: 				gleidescope --root			    \n\
- GL: 				glknots --root				    \n\
  GL: 				glmatrix --root --no-rotate		    \n\
- GL: 				glslideshow --root			    \n\
  GL: 				hypertorus --root			    \n\
- GL: 				jigglypuff --root			    \n\
-				metaballs --root			    \n\
- GL: 				mirrorblob --root			    \n\
-				piecewise --root			    \n\
- GL: 				polytopes --root			    \n\
-				pong --root				    \n\
-				popsquares --root			    \n\
  GL: 				surfaces --root				    \n\
-				xanalogtv --root			    \n\
-				abstractile --root			    \n\
-				anemotaxis --root			    \n\
- GL: 				antinspect --root			    \n\
-				fireworkx --root			    \n\
-				fuzzyflakes --root			    \n\
-				interaggregate --root			    \n\
-				intermomentary --root			    \n\
-				memscroller --root			    \n\
- GL: 				noof --root				    \n\
-				pacman --root				    \n\
- GL: 				pinion --root				    \n\
- GL: 				polyhedra --root			    \n\
- GL: 				providence --root			    \n\
-				substrate --root			    \n\
-				wormhole --root				    \n\
- GL: 				antmaze --root				    \n\
- GL: 				boing --root				    \n\
-				boxfit --root				    \n\
- GL: 				carousel --root				    \n\
-				celtic --root				    \n\
- GL: 				crackberg --root			    \n\
- GL: 				cube21 --root				    \n\
-				fiberlamp --root			    \n\
- GL: 				fliptext --root				    \n\
- GL: 				glhanoi --root				    \n\
- GL: 				tangram --root				    \n\
- GL: 				timetunnel --root			    \n\
- GL: 				glschool --root				    \n\
- GL: 				topblock --root				    \n\
  GL: 				cubicgrid --root			    \n\
-				cwaves --root				    \n\
- GL: 				gears --root				    \n\
- GL: 				glcells --root				    \n\
- GL: 				lockward --root				    \n\
-				m6502 --root				    \n\
- GL: 				moebiusgears --root			    \n\
- GL: 				voronoi --root				    \n\
- GL: 				hypnowheel --root			    \n\
- GL: 				klein --root				    \n\
-				lcdscrub --root				    \n\
- GL: 				photopile --root			    \n\
- GL: 				skytentacles --root			    \n\
- GL: 				rubikblocks --root			    \n\
- GL: 				companioncube --root			    \n\
- GL: 				hilbert --root				    \n\
- GL: 				tronbit --root				    \n\
- GL: 				geodesic --root				    \n\
-				hexadrop --root				    \n\
- GL: 				kaleidocycle --root			    \n\
- GL: 				quasicrystal --root			    \n\
- GL: 				unknownpleasures --root			    \n\
-				binaryring --root			    \n\
- GL: 				cityflow --root				    \n\
- GL: 				geodesicgears --root			    \n\
- GL: 				projectiveplane --root			    \n\
  GL: 				romanboy --root				    \n\
-				tessellimage --root			    \n\
- GL: 				winduprobot --root			    \n\
- GL: 				splitflap --root			    \n\
- GL: 				cubestack --root			    \n\
- GL: 				cubetwist --root			    \n\
- GL: 				discoball --root			    \n\
- GL: 				dymaxionmap --root			    \n\
- GL: 				energystream --root			    \n\
- GL: 				hexstrut --root				    \n\
- GL: 				hydrostat --root			    \n\
- GL: 				raverhoop --root			    \n\
- GL: 				splodesic --root			    \n\
- GL: 				unicrud --root				    \n\
- GL: 				esper --root				    \n\
- GL: 				vigilance --root			    \n\
- GL: 				crumbler --root				    \n\
-				filmleader --root			    \n\
-				glitchpeg --root			    \n\
- GL: 				handsy --root				    \n\
- GL: 				maze3d --root				    \n\
- GL: 				peepers --root				    \n\
- GL: 				razzledazzle --root			    \n\
-				vfeedback --root			    \n\
- GL: 				deepstars --root			    \n\
- GL: 				gravitywell --root			    \n\
- GL: 				beats --root				    \n\
- GL: 				covid19 --root				    \n\
- GL: 				etruscanvenus --root			    \n\
- GL: 				gibson --root				    \n\
- GL: 				headroom --root				    \n\
- GL: 				sphereeversion --root			    \n\
-				binaryhorizon --root			    \n\
-				marbling --root				    \n\
- GL: 				chompytower --root			    \n\
- GL: 				hextrail --root				    \n\
- GL: 				mapscroller --root			    \n\
- GL: 				nakagin --root				    \n\
- GL: 				squirtorus --root			    \n\
- GL: 				cubocteversion --root			    \n\
-				droste --root				    \n\
- GL: 				papercube --root			    \n\
- GL: 				skulloop --root				    \n\
- GL: 				highvoltage --root			    \n\
- GL: 				kallisti --root				    \n\


pointerHysteresis:  10
authWarningSlack:   20

Input Remapper

MOBA “gaming” mice with lots of buttons might be preconfigured to output letters, numbers, etc. These preconfigurations need to be removed first so you can properly remap them with Input Remapper. Otherwise, let's say a button is preconfigured to output number 5, when trying to remap that button, it will remap number 5 on the keyboard is well.

Unfortunately, for my EVGA X15 mouse the Windows-only EVGA Unleash RGB Software is needed to undo the aforementioned default configurations.

To start and indefinitely enable Input Remapper: systemctl enable input-remapper && systemctl restart input-remapper

Click to see my EVGA X15 / Input Remapper configuration.

Functions after "|" apply when the mouse's shift button is pressed as well.

left mouse extra top: copy (F13 = XF86Tools) | cut (F15 = XF86Launch6)
left mouse extra bottom: paste (F14 = XF86Launch5) | unformatted paste (F16 = XF86Launch7)
scroll button: default | shift + middle mouse click (F17 = XF86Launch8)
scroll button left: left  | shift + left (F18 = XF86Launch9)
scroll button right: right | shift + right (F19)
DPI up: page up | home
DPI down: page down | end

1: backspace | CTRL + backspace (F23 = XF86TouchpadOff)
2: backward | CTRL + F1 (F20 = XF86AudioMicMute)
3: forward | CTRL + F2 (F21 = XF86TouchpadToggle)
4: esc | Alt + D (F22 = XF86TouchpadOn)
5: enter | screenshot
6: CTRL + L | F5
7: F12 | tab
8: delete | CTRL + delete (F24)

9: volume up | DPI+
10: volume down | pause/play

tmux

Removing Pinterest and Quora from the search results

To remove websites from the search results, append the query with -site:pinterest.com -site:quora.com.

Opening multiple websites with multi-word queries with one command

Insert in the .bashrc file: alias am="cd /path/to/scripts/ && ./search-amazon.sh"

Insert in a script, here search-amazon.sh:

xdg-open "https://amazon.fr/s?k=$*"
xdg-open "https://amazon.de/s?k=$*"
xdg-open "https://amazon.com.be/s?k=$*"
xdg-open "https://amazon.nl/s?k=$*"

To update bash execute: . ~/.bashrc

Now, within a terminal simply execute am foo bar, and it will open all websites searching for "foo bar".

Launch minimised

Even though some software supports launching minimised or to tray after, it does not always work depending on the OS/installer/DE, etc. For instance building Notesnook or Beeper with Arch's yay uses Electron to run these programs, which handles differently compared to starting them from an AppImage. Not even KDE Plasma's "Window Rules" works to force these Electron apps to start minimised. The solution is to run Notesnook/Beeper from the AppImage available on their website. For Beeper one has to additionally add --hidden as a startup argument.

Miscellaneous commands

Uninstall an Android system app with ADB

How to uninstall a normally uninstallable Android system app, e.g. "Link to Windows".

  1. Android settings → Developer options → enable "USB debugging".
  2. Install ADB, arch: android-tools
  3. Verify connection to phone: adb devices
  4. Enable a shell: adb shell
  5. List all system packages (-s): pm list packages -s, or a specific package: pm list packages -s | grep "microsoft"
  6. Uninstall the package: pm uninstall -k --user 0 com.microsoft.appmanager
  7. Verify unistallation: pm list packages -s | grep "microsoft"

Windoze nonsense

Dual-boot and sharing a drive between Linux and Windows

To share a drive between Linux and Windows (11?) on a dual-boot setup and ensure the drives' files don't get deleted, disable Windows' enabled by default fast startup and hibernation:

  1. Control Panel → Hardware and Sound → Power Options → "Choose what the power button does" → "Change settings that are currently unavailable" → disable "Turn on fast startup (recommended)"
  2. In cmd.exe: powercfg /H off

Bypass Windows 11 Microsoft account prompt

Unplug the Ethernet cable and disable Wi-Fi. When prompted to enter an email address press Shift + F10, and in cmd.exe type oobe\BypassNRO and press enter to reboot. Then click "I don't have internet" → "Continue with limited setup". When asked to enter your name type "Screw Microsoft". Unethical bastards.

If Shift + F10 does not launch anything except for a split-second loading icon, then just use no@thankyou.com as the email address and enter any arbitrary password; "Screw Microsoft" remains an appropriate choice.

Source: How to bypass the Microsoft Account requirement during Windows setup

Disable trending/suggested/Bing/Edge searches from the Windows search box

[Doesn't seem to work anymore. (Su 27 Oct 2024)]

  1. Launch the registry editor regedit
  2. Navigate to HKEY_CURRENT_USER\SOFTWARE\Policies\Microsoft\Windows
  3. Create a new key called Explorer by right clicking "Windows" → "New" → "Key"
  4. Create a DWORD value called DisableSearchBoxSuggestions by right clicking "Explorer" → "New" → "DWORD (32 bit) Value"
  5. Assign the hexadecimal value of 1 to this newly created DWORD and click "OK"

Sources: (1) How to remove "Trending searches" in Windows 10 search? (2) How to: Disable search box suggestions in Windows 11.

Disable Windows Copilot

  1. Launch "Edit group policy" by typing gpedit in the search box.
  2. Browse to: User Configuration → Administrative templates → Windows Components → Windows Copilot
  3. Enable "Turn off Windows Copilot" and click "Apply" → "OK"

Source: How to disable Copilot in Windows 11

Comments

Search for https://fosstodon.org/@stardust/111603722034691744 (fosstodon invite) on one's preferred Mastodon server while logged in, comments appear below.