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: 2025-06-22.

❦

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

Internet

Smartphone

Model: 1. Ulefone Armor Mini 20 Pro [affiliate link], 2. Samsung S10e [second-hand], 3. OnePlus One (2014).

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

F-Droid app catalogue:

Smartphone

Aurora Store app catalogue:

Miscellaneous

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.

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 using commandline. Don't use Ventoy because Ventoy might be compromised.
  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

Software I usually install on every new machine.

pacman -Syu --needed btop tilda xscreensaver grsync hblock gnome-disk-utility gparted hunspell hunspell-nl hunspell-en_GB hunspell-fr qalculate-gtk smplayer okular fwupd libreoffice-still libreoffice-still-en-gb libreoffice-still-nl libreoffice-still-fr calibre npm transmission-qt xed keepassxc playerctl simple-scan tesseract-data-nld tesseract-data-eng tesseract-data-fra tesseract-data-chi_sim libavif webp-pixbuf-loader kimageformats shared-mime-info numlockx

yay autokey-qt && yay input-remapper-git && yay librewolf-bin && yay zen-browser-bin && yay youtube-music-bin && yay simplescreenrecorder-bin && yay lyx && yay rustdesk-bin && yay notesnook-bin && yay betterbird-bin && pot-translation-git && yay nvitop && yay mintlocale && yay lightdm-settings && gpu-screen-recorder-gtk

npm install -g live-server

Manual download: MEGA, Phoenix Code

Prime number hunting

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 nheko ncdu xfce4-taskmanager kdeconnect tmux rsync redshift brightnessctl

yay sblock-git rate-mirrors zen-browser-bin crow-translate compiz brightness cortile vscodium-bin

❦

To configure

Wallpaper

Birds at play by Angelino Desmet.

A leafless tree standing amidst a typical flat Flanders farm land with no end in sight. Five birds* are flying around the tree, seemingly playfully.
The sky is perfectly clear and sunset has slowly commenced so the golden hour is causing an orange warm horizon on which one can see a multitude of trees and a couple of small discernible but unobtrusive buildings.

*I forgot whether the birds were crows or pigeons.

El Capitan by unknown.

El Capitan

Changing LightDM login background

The current EndeavourOS version is called Mercury, hence the only appropriate login background:

Freddie Mercury on stage with his right fist raised. He's wearing a crown and king's cape looking powerfully to his right.

To do so, use lightdm-settings, or manually place the background file in /usr/share/endeavouros/backgrounds/ and edit /etc/lightdm/slick-greeter.conf.

One might need to convert the AVIF file above to PNG or JPEG for it to show on the login screen. For some unknown reason the AVIF image renders on my desktop PC, but not on my laptop, the only difference seemingly being the latter having no GPU.

Desktop environment & window manager

Now using DE Cinnamon because I find it to be the perfect compromise between Xfce, KDE Plasma, Gnome, and Budgie. It's fast, user friendly for both ex Windows/Mac users, while still offering a wide variety of immediately useful features without being overwhelming. It doesn't come with bloat software as well. Intuitive, clean, remarkably satisfying to use.

Click to see legacy DE configurations.

Xfce

Whisker Menu

For some reason not all distributions have a shortcut to Whisker Menu, which is remarkably annoying. To add it: "Keyboard" β†’ "Application Shortcuts" β†’ "xfce4-popup-whiskermenu".

Using shortcut Super + Space* is advised when using Compiz, simply using Super will prevent Compiz shortcuts that use the Super button as well.

* The Super button is the Windows button with the ⊞ icon.

xfce4-screensaver

"Where are all the screensavers?" XScreenSaver is used by xfce4-screensaver, but doesn't add all of XScreenSaver's screensavers by default. Annoying. To add one of its screensavers, place the file xfce-glmatrix.desktop containing the lines below in /usr/share/applications/screensavers/. All XScreenSaver's screensavers and their options can be found in /usr/share/xscreensaver/config/.

[Desktop Entry]
Type=Application
Name=glmatrix
Exec=/usr/lib/xscreensaver/glmatrix -root --no-rotate
TryExec=/usr/lib/xscreensaver/glmatrix
Categories=Screensaver;
Window tiling
xfwm4

To enable window tiling when nearing the edge of a screen, open "Window Manager Tweaks" and enable "β˜‘ Automatically tile windows when moving towards the screen edge".

However, this will sneakily deselect and thus disable within "Window Manager" β†’ "Wrap workspaces when reaching the screen edge", the option "☐ With a dragged window". This means one cannot grab and move a window towards another workspace.

Compiz

Stopped using Compiz because its latest update was three years ago.

To autostart Compiz, here in Xfce, execute:

xfconf-query -c xfce4-session -p /sessions/Failsafe/Client0_Command -t string -sa xfsettingsd
  xfconf-query -c xfce4-session -p /sessions/Failsafe/Client1_Command -t string -sa compiz

CompizConfig Settings Manager:

KDE Plasma

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".

XScreenSaver in KDE Plasma
Enable XScreenSaver in KDE Plasma.

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

Click to show the VSCodium config. Not using it anymore because Microsoft…

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"

{
    "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": "#f1fdff3a",
      "editor.selectionBackground": "#0e531a",
      "editor.selectionHighlightBackground": "#c23256",
      "scrollbarSlider.activeBackground": "#95efff",
      "scrollbarSlider.hoverBackground": "#c0ebff",
      "scrollbarSlider.background": "#5e6368",
    },
    "workbench.colorTheme": "Visual Studio Dark",
    "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.

Click to see Zed config. Not using Zed anymore due to bugs.

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 x.", default="") keyboard.send_key("<delete>") clipboard.fill_clipboard(f"<{text_input[1]}>{text_selected}</{text_input[1]}>") keyboard.send_keys("<ctrl>+v")

LyX

Click to expand.

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

Install texlive-latex texlive-latexextra texlive-fontsrecommended 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.

Zen Browser / LibreWolf

I use LibreWolf on older machines, or where stability is required. Zen browser for everything else.

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

Click to expand.

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;
    left: 0;
    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;
    left: 0;
    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.

Source: Mozilla.

#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

Commands

Click to expand my .xscreensaver configuration file content.
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 --speed 10 --epoch 59820	      \
				  --reaction 2 --radius 60		    \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				    \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			    \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				    \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 --wireframe		    \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\

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".

Use AutoKey and terminal to search on a website

  1. Within AutoKey create a "Phrase" containing exo-open --launch WebBrowser https://en.wikipedia.org/wiki/
  2. "Paste using" to Ctrl+Shift+V
  3. "Set Abbreviations" β†’ "Trigger on:"
    β˜‘ Remove typed abbreviation
    β˜‘ Trigger immediately (don't require a trigger character)
  4. Type the chosen abbreviation in a terminal and it will automatically expand to the full aforementioned command. To search for a single word simply append with the word. To search for a phrase, use quotes if searching for multiple words fails.

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.

LLM

Install DeepSeek locally on Arch Linux

Based on this Debian-oriented It's FOSS tutorial, but adapted for Arch.

  1. pacman -S ollama
  2. ollama run deepseek-r1:1.5b

Now one can interact with DeepSeek from the terminal. To interact with the LLM from a browser UI:

  1. yay open-webui
  2. systemctl start open-webui.service
  3. Acces the Open WebUI server at http://localhost:8080.

SSH

Create a drop-in file for sshd.service

Creating a drop-in file to configure the SSH service prevents having to edit the /etc/ssh/sshd_config config file that contains all the default values. Doing so is more orderly and less likely to result in accidental security issues.

In the directory /etc/ssh/sshd_config.d/ add a .conf file with the settings one wants changed from the aforementioned config file. β€œAll files with the suffix ".conf" from this directory will be merged in the alphanumeric order and parsed after the main unit file itself has been parsed.” For example, mine contains:

PasswordAuthentication no
AuthenticationMethods publickey
X11Forwarding yes

After doing so restart sshd: systemctl restart sshd.service

KeePassXC

KeePassXC Secret Service as keyring

Instead of using GNOME Keyring or KDE Wallet one can use wallet manager KeePassXC's Secret Service integration [source].

  1. Open KeePassXC β†’ Tools β†’ βš™οΈ Settings β†’ Secret Service Integration:
    β˜‘ Enable KeepassXC Freedesktop.org Secret Service integration and exit this settings window.
  2. Create a new group in the vault that one wants to use the Secret Service with.
  3. Click Database β†’ Database Settings β†’ Secret Service Integration:
    Click πŸ”˜ Expose entries under this group: and select the new group made in step 2.

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

When it asks for one's Microsoft account, press Shift + F10, and type start ms-cxh:localonly. This should prompt the window to create a local account instead.

Click to see the legacy BypassNRO method below that has been disabled by the sociopaths at Microsoft.

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.