Technical logbook

Tips, fixes and research notes from my day-to-day as a freelance IT consultant — diagnosed, solved and written up so the next person (often me) doesn't have to start from scratch. Newest first.

  1. Switch the macOS keyboard layout automatically per keyboard (Karabiner-Elements)

    Make macOS pick the right input source for whichever keyboard you actually type on — French (Mac) for the built-in and Apple keyboards, French-PC for a Keychron V6 Max — using two Karabiner-Elements rules, plus the two traps that silently break it: keyboards that also declare themselves as pointing devices, and the console user server not restarting after a Karabiner update.

  2. Boot into Btrfs snapshots from GRUB on Fedora (grub-btrfs + snapper)

    Add a 'Fedora Linux snapshots' submenu to the GRUB boot screen so you can boot directly into a snapper snapshot when the system won't start after a bad update — the recovery case plain snapper can't cover because it needs a working system to log into. grub-btrfs is not in Fedora's repos, so it comes from the kylegospo COPR; a grub-btrfs watcher unit regenerates the menu whenever snapper adds/removes a snapshot. Three gotchas covered: the packaged grub-btrfs.path unit binds to a .snapshots.mount unit that exists only when /.snapshots is separately mounted, so a nested /.snapshots needs a local systemd override; making a rollback permanent cannot use 'snapper rollback', which is silently ignored on a Fedora install that pins subvol=root — the subvolume swap is the procedure that works; and menu generation fails silently, with no output whatsoever, when run from a directory root cannot enter (a FUSE mount such as an rclone-mounted ~/Dropbox), leaving grub2-probe to abort with 'cannot restore the original directory'. Includes the important separate-/boot caveat (kernel/initramfs live on an ext4 partition and are NOT snapshotted) and read-only snapshot boot. Also covers Fedora's menu_auto_hide mechanism: hide the boot menu on healthy boots while it reappears on its own after a failed one, so the snapshot entries are there exactly when they are needed — plus how to summon it on demand for a deliberate rollback. Optional follow-on to the snapper setup.

  3. Dropbox online-only on Fedora 44 with rclone

    Get an online-only Dropbox workflow (similar to Smart Sync on Mac/Windows) on Fedora via an rclone FUSE mount driven by a systemd-user service, with on-demand VFS cache and automatic upload.

  4. Snapper restore points on Fedora (Btrfs) with auto snapshots before every dnf transaction

    Install and configure snapper on a Fedora Btrfs-on-LUKS system to create filesystem restore points: a root config with hourly timeline snapshots and auto-cleanup, plus automatic pre/post snapshots around every dnf transaction. Fedora 44 uses dnf5, which has no snapper plugin, so the dnf hook is wired up with the libdnf5 'actions' plugin calling a small wrapper script that labels snapshots by operation (dnf install / upgrade / remove). Covers what a root config does and does not capture on Fedora's multi-subvolume layout, why /.snapshots belongs in a top-level subvolume rather than nested inside root, and — the part most guides get wrong — why 'snapper rollback' cannot work on a Fedora install that pins subvol=root in fstab and on the kernel command line, with the subvolume-swap procedure that does.

  5. Flatpak apps won't start on Fedora — a hung Keybase FUSE mount (/keybase)

    Extension Manager (and every other Flatpak app) hangs forever at launch with unkillable processes. The cause is not the app: it is the Keybase redirector's dead FUSE mount on /keybase, which Flatpak stats while building its sandbox. How to identify it, unblock it without rebooting, and remove Keybase for good.

  6. Drive both Framework Laptop 16 LED Matrix modules as a live system monitor on Fedora

    Turn the two Framework Laptop 16 LED Matrix input modules into stable left/right displays showing live CPU, memory, temperature and fan metrics — as bars, as figures or as pictograms — configured from a TOML file, re-read on the fly, with power-aware blanking and a systemd user service.

  7. Skip fingerprint auth when the laptop lid is closed (fprintd) on Fedora

    Docked with the lid shut, every sudo/su/polkit prompt still tries the unreachable fingerprint reader first and makes you wait. Put a tiny lid check in front of pam_fprintd via pam_exec so PAM skips fingerprint and goes straight to the password prompt when the lid is closed — instantly, no daemon, reusing your existing enrolled prints.

  8. An ML4W-style Kitty config on Fedora: native tabs, splits, and Tokyo Night

    Recreate the terminal experience from ML4W (My Linux for Work) — Kitty with native tabs and splits, a powerline tab bar, a JetBrainsMono Nerd Font, the Tokyo Night theme, and the Fastfetch system-info greeting on launch — on a plain Fedora GNOME desktop, no Hyprland or tmux required.

  9. Give Ptyxis a Starship powerline prompt with a Tux logo on Fedora

    Turn Fedora's default Ptyxis terminal into a polished setup: a JetBrainsMono Nerd Font, a Starship powerline prompt, and a leading OS glyph swapped from the Fedora mark to the Tux penguin.

  10. Chrome won't start after renaming your machine (hostname change) on Fedora

    Google Chrome silently fails to launch after a hostname change. The cause is a stale SingletonLock symlink in the user profile that still encodes the old machine name; deleting the Singleton* lock files restores normal startup. Applies to every Chromium-based browser and Electron app.

  11. Flutter development environment on Fedora 44 (mise + Android Studio)

    Set up a complete Flutter toolchain on Fedora 44 / GNOME using mise as the runtime version manager, with the Android SDK in the default ~/Android/Sdk so flutter doctor detects it without extra configuration — ending with 'No issues found' across Android, web and Linux desktop targets.

  12. macOS-style screenshot shortcuts on GNOME (Fedora)

    Replicate the macOS screenshot key bindings (Cmd+Shift+3/4/5) on GNOME so muscle memory carries over from a MacBook — including the non-obvious part: Dash to Dock silently steals Super+Shift+N, and the pre-GNOME 42 gsettings keys no longer exist.

  13. Install Claude Code on Fedora Linux with dnf (zsh)

    Install Claude Code on Fedora from Anthropic's signed dnf repository (the recommended method on Fedora/RHEL), configure it for zsh, migrate off a curl|bash native install, and demystify the "Update available!" banner that the stable channel triggers.

  14. Login screen keyboard layout stays QWERTY on Debian/Ubuntu

    The desktop session uses the right keyboard layout, but the display manager greeter is still QWERTY. On Debian and Ubuntu the system-wide layout lives in /etc/default/keyboard and is applied by console-setup — localectl set-x11-keymap is deliberately disabled on these distributions.

  15. Login screen keyboard layout stays QWERTY on systemd distributions (Fedora, RHEL, Arch, openSUSE)

    The greeter of GDM, SDDM or LightDM ignores the layout configured in the desktop session. On localectl-driven distributions the fix is a single command that writes /etc/X11/xorg.conf.d/00-keyboard.conf — which Wayland greeters read too, via xkbcommon.

  16. Stop Claude Code from hijacking mouse clicks (fullscreen mouse capture) on Linux & macOS

    Since fullscreen rendering, Claude Code captures the mouse — clicking in the prompt moves the cursor and a stray click can hit 'Ask something' or a menu option (very easy to do by accident in the JetBrains/IntelliJ terminal). Disable click/drag/hover while keeping wheel scroll with CLAUDE_CODE_DISABLE_MOUSE_CLICKS=1, or kill mouse capture entirely with CLAUDE_CODE_DISABLE_MOUSE=1. There is no settings.json field and no CLI flag — only these environment variables — and a running session must be restarted to pick them up.

  17. Fix fwupd UEFI dbx update failing with "Not enough efivarfs space" on a Framework 16 (AMD)

    fwupdmgr refuses the UEFI dbx (Secure Boot revocation list) update with "does not currently allow updates: Not enough efivarfs space, requested 30,7 kB and got 20,0 kB". The NVRAM variable store is full of legitimate, fragmented Secure Boot key data — the new dbx is larger than the free slot. Diagnose it safely with efivar/efibootmgr, understand why deleting boot entries or efivars does not help, and apply the proven fix: erase and restore Secure Boot keys to defaults in the BIOS, which repacks (defragments) the variable store. Tested on a Framework 16 AMD 7040 / Fedora 44, fwupd 2.1.5.

  18. Check the BIOS version of a Framework Laptop on Linux (dmidecode)

    Read the running BIOS/UEFI firmware version of a Framework Laptop from Linux with dmidecode — install it on Ubuntu or Fedora, interpret every field (vendor, version, release date, ROM size, CPU family.model.stepping), cross-check with lshw and sysfs, and compare against the latest Framework release with fwupd before flashing.

  19. Build an auto-deploying static blog: Astro + a private content repo + OVH (GitHub Actions over SFTP)

    End-to-end recipe for a 100% static Astro blog whose content lives in a separate private GitHub repo, auto-cleaned at build time and deployed to OVH shared hosting over SFTP via GitHub Actions — covering OVH multisite, DNS/SSL, secrets, a push-to-publish loop, and the gotchas that actually bite.

  20. macOS-style Super+C / Super+V copy-paste everywhere on Fedora GNOME (incl. Ptyxis terminal)

    Remap the Super key so Super+C/V/X copy/paste/cut in every app and in the Ptyxis terminal on Fedora GNOME Wayland, just like Cmd+C/V on macOS.

  21. git clone / SSH to GitHub hangs on Fedora + GNOME (gcr-ssh-agent)

    git/ssh to GitHub hangs because GNOME's gcr-ssh-agent freezes when signing passphrase-protected keys and keeps re-hijacking SSH_AUTH_SOCK; fix by running an OpenSSH ssh-agent user service, exporting its socket via environment.d, and masking gcr-ssh-agent.

  22. Framework Laptop 16 keyboard backlight pulses on/off by itself on Fedora

    The FW16 white keyboard backlight self-toggles because of the QMK breathing effect; disable it with qmk_hid (built from source on Fedora).

  23. Framework Laptop 16 — keyboard backlight in GNOME (Fedora 44)

    Wire the FW16's separate QMK keyboard backlight into native GNOME control (Quick Settings slider + brightness keys) via a kernel uleds virtual LED and a qmk_hid bridge daemon.

  24. Ghostty crashes on Fedora 44 → switching to Ptyxis (with Starship)

    Ghostty 1.3.1 crashes at startup on Fedora 44 (a Linux-only bundled-fontconfig/glycin symbol clash); switch to Ptyxis — Starship is shell-side so it carries over, only login-shell and a Nerd Font need setting.

  25. Ghostty Crash on Claude / TUI Output — fontconfig Cache Fix (Fedora)

    Ghostty segfaults when a TUI app prints glyphs that need font fallback, caused by a corrupt user fontconfig cache holding mismatched cache-N versions; clear ~/.cache/fontconfig and rebuild to fix.

  26. GNOME keeps asking to unlock the Login keyring after fingerprint login (Fedora)

    After fingerprint login GNOME repeatedly prompts to unlock the password-encrypted Login keyring; the practical workaround (LUKS required) is to remove the keyring password so it auto-unlocks at session start.

  27. Changing the LUKS Disk Encryption Passphrase on Fedora

    Change a Fedora LUKS2 full-disk-encryption passphrase on a live, mounted system (header backup, luksChangeKey or add-then-kill keyslot) with no reboot or reinstall required.

  28. Diagnosing Bandwidth Saturation — Fedora

    Cascading method to pinpoint the process, device, or protocol family responsible for abnormally low Internet throughput on Fedora (speedtest, nethogs, iftop, iw).

  29. IPv6 Troubleshooting — Fedora behind Orbi + Proximus BBx

    Diagnose and fix broken IPv6 (slow browsing via Happy Eyeballs) on Fedora behind an Orbi in double NAT on a Proximus BBx, from the NetworkManager workaround to the Orbi pass-through fix and PMTUD.