Skip to content

Debian Linux scripting

I am reviewing the Practicalli web sites and issues already created to find the most useful things to work on.

Continuing to add Terminal UI (TUI) apps to my development environment. Adding those I find useful to the dev tools install script for Debian Linux.

This week I noticed that Node.js website has a configurable script for installing Node.js (and NPM). I took this script and tweaked it so it supports both XDG_CONFIG_HOME and classic $HOME installs.

I have been trying out different desktop greeters, the tool that presents a graphical login. Gnome edition of Debian Linux comes with Gnome Desktop Manager (gdm). I switched to LightDM which uses far fewer resources and has a nice Arctica theme.

TUIλ︎

Evaluating more TUI apps for software development and writing content. This week I've been running Lychee to check the Practicalli websites.

Lychee is also included in the Megalinter config which runs as a CI workflow for each push or pull request to a Practicalli Website.

I can run Megalinter locally, but that requires Docker and I only use that as a background check infrequently.

Lychee should encourage me to check a published website more often, especially if I make some changes or it has been a while since I reviewed a website.

A Command line tool to check the hyperlinks in a website.

Installed via DRA.

Added to dev-tools-install.sh file in the Debian Linux post install scripts.

Test Practicalli Cycling with Lychee CLI

lychee https://practical.li/cycling
Lychee test of Practicalli Cycling website
 lychee https://practical.li/cycling
47/47 ━━━━━━━━━━━━━━━━━━━━ Finished extracting links                                                                                                                                                                                   Issues found in 1 input. Find details below.

[https://practical.li/cycling]:
     [404] https://practical.li/assets/stylesheets/modern/main.1e989742.min.css | Rejected status code: 404 Not Found (configurable with "accept" option)
     [404] https://practical.li/assets/stylesheets/modern/palette.dfe2e883.min.css | Rejected status code: 404 Not Found (configurable with "accept" option)
     [404] https://practical.li/components/ | Rejected status code: 404 Not Found (configurable with "accept" option)
     [404] https://practical.li/computers-sensors/ | Rejected status code: 404 Not Found (configurable with "accept" option)
     [404] https://practical.li/docs/experiences/#ride-of-the-falling-leaves | Rejected status code: 404 Not Found (configurable with "accept" option)
     [404] https://practical.li/experiences/ | Rejected status code: 404 Not Found (configurable with "accept" option)
     [404] https://practical.li/experiences/#audax | Rejected status code: 404 Not Found (configurable with "accept" option)
     [404] https://practical.li/experiences/#charity-rides | Rejected status code: 404 Not Found (configurable with "accept" option)
     [404] https://practical.li/experiences/#kent-tour-de-france-sportive | Rejected status code: 404 Not Found (configurable with "accept" option)
     [404] https://practical.li/experiences/#lands-end-to-john-ogroats | Rejected status code: 404 Not Found (configurable with "accept" option)
     [404] https://practical.li/experiences/#oasts-and-coasts-300 | Rejected status code: 404 Not Found (configurable with "accept" option)
     [404] https://practical.li/first-aid/ | Rejected status code: 404 Not Found (configurable with "accept" option)
     [404] https://practical.li/hills/ | Rejected status code: 404 Not Found (configurable with "accept" option)
     [404] https://practical.li/kit/ | Rejected status code: 404 Not Found (configurable with "accept" option)
     [404] https://practical.li/lights/ | Rejected status code: 404 Not Found (configurable with "accept" option)
     [404] https://practical.li/maintenance/ | Rejected status code: 404 Not Found (configurable with "accept" option)
     [404] https://practical.li/route-planning/ | Rejected status code: 404 Not Found (configurable with "accept" option)
     [404] https://practical.li/routes/ | Rejected status code: 404 Not Found (configurable with "accept" option)
     [404] https://practical.li/toolbag/ | Rejected status code: 404 Not Found (configurable with "accept" option)
     [404] https://practical.li/training-plan/ | Rejected status code: 404 Not Found (configurable with "accept" option)
     [404] https://practical.li/training/ | Rejected status code: 404 Not Found (configurable with "accept" option)
     [404] https://practical.li/zensical-tips/ | Rejected status code: 404 Not Found (configurable with "accept" option)

🔍 47 Total (in 2s)  12 OK 🚫 23 Errors  12 Unsupported

Debian Linuxλ︎

Its a good time for a package upgrade as I am not doing anything critical and I think everything is backed up or pushed to the cloud. I have Debian Live on a USB stick if something should go badly wrong.

I created the Debian Live stick after a certain opinionated Arch Linux based distro went badly wrong after an update.

Regolith desktopλ︎

I use Regolith desktop as it provides an excellent tiling desktop environment. Regolith uses the i3 window manager and packages configuration to make the window manager and tooling really simple to work with.

Now that Debian Linux Trixie has been released, I checked the Apt sources definition and I was still using the testing release.

The Debian Linux instructions for Regolith use a stable URL, with trixie 3.4 as the release name.

The Apt sources on the rogueone computer uses the newer sources format:

Regolith apt sources for Debian Linux Trixie - new list format

deb [arch=amd64 signed-by=/usr/share/keyrings/regolith-archive-keyring.gpg] https://archive.regolith-desktop.com/debian/stable trixie v3.4 main

Apt upgradeλ︎

apt update && apt upgrade
Packages to be upgraded
# apt upgrade
Upgrading:
  1password                              libgimp-3.0-0                  regolith-i3-i3xrocks                regolith-sway-kbd-layout
  arc-icon-theme                         libimage-magick-perl           regolith-i3-ilia                    regolith-sway-media-keys
  ayu-theme                              libimage-magick-q16-perl       regolith-i3-root-config             regolith-sway-next-workspace
  bind9-dnsutils                         libmagickcore-7.q16-10         regolith-i3-session                 regolith-sway-polkit
  bind9-host                             libmagickcore-7.q16-10-extra   regolith-i3-unclutter               regolith-sway-root-config
  bind9-libs                             libmagickwand-7.q16-10         regolith-i3xrocks-config            regolith-sway-screensharing
  childe                                 libpq5                         regolith-inputd                     regolith-sway-session
  firefox-esr                            libssl3t64                     regolith-look-ayu-dark              regolith-sway-touchpad-gestures
  firefox-esr-l10n-en-gb                 libtrawldb                     regolith-look-default               regolith-sway-unclutter
  fonts-nerd-font-bitstreamverasansmono  linux-image-amd64              regolith-look-default-loader        regolith-unclutter-xfixes
  fonts-nerd-font-cousine                linux-libc-dev                 regolith-look-gruvbox               regolith-wm-base-launchers
  fonts-nerd-font-hack                   openjdk-21-jdk                 regolith-powerd                     regolith-wm-config
  gimp                                   openjdk-21-jdk-headless        regolith-rofication                 regolith-wm-ftue
  gimp-data                              openjdk-21-jre                 regolith-session-common             regolith-wm-navigation
  gir1.2-gimp-3.0                        openjdk-21-jre-headless        regolith-session-flashback          regolith-wm-networkmanager
  google-chrome-stable                   openssl                        regolith-session-flashback-ext      regolith-wm-resize
  gruvbox-gtk                            openssl-provider-legacy        regolith-session-sway               regolith-wm-rofication-ilia
  i3-next-workspace                      python3-urllib3                regolith-sway-background            regolith-wm-swap-focus
  i3-swap-focus                          regolith-avizo                 regolith-sway-clamshell             regolith-wm-workspace-config
  i3xrocks                               regolith-compositor-picom-glx  regolith-sway-control-center-gnome  sway-audio-idle-inhibit
  i3xrocks-cpu-usage                     regolith-default-settings      regolith-sway-dbus-activation       sway-regolith
  i3xrocks-net-traffic                   regolith-desktop               regolith-sway-default-style         trawlcat
  i3xrocks-time                          regolith-displayd              regolith-sway-gaps                  usbmuxd
  ilia                                   regolith-ftue                  regolith-sway-grimshot              xdg-desktop-portal-regolith-wayland-config
  imagemagick                            regolith-i3-compositor         regolith-sway-gsd                   xdg-desktop-portal-regolith-x11-config
  imagemagick-7-common                   regolith-i3-dbus-activation    regolith-sway-gtklock               xrescat
  imagemagick-7.q16                      regolith-i3-default-style      regolith-sway-i3status-rs
  inetutils-telnet                       regolith-i3-gaps               regolith-sway-ilia

Installing dependencies:
  linux-image-6.12.69+deb13-amd64

Suggested packages:
  firmware-linux-free  linux-doc-6.12  debian-kernel-handbook

Summary:
  Upgrading: 110, Installing: 1, Removing: 0, Not Upgrading: 0
  Download size: 0 B / 633 MB
  Space needed: 198 MB / 203 MB available

Continue? [Y/n]

Software development toolsλ︎

I want the stability that Debian Linux provides so I don't have unexpected maintenance or show-stopping issues (like I've had with rolling releases like Arch Linux).

Some of the development tools I use regularly do not have their latest version packaged in Debian, however, I have a simple script that uses Download Release Artifices (DRA) tool to download and install the latest version of a tool from its GitHub Repository.

Some tools also provide a handy install script, like Node.js.

I am creating a series of scripts, one for each tool.

A 'debian-linux-post-install' script will call each tool script to installs (or updates) everything in one go. This is most useful after a fresh install of Debian Linux (or if tools havent been updated in a considerable time).

Nodejsλ︎

A script was created to install Node.js, using the official script on the website. This script was updated to use the XDG_CONFIG_HOME/nvm/ location for Node Version Manager (NVM) if it exists, otherwise use the classic $HOME/.nvm/ location.

The script needs to source the NVIM location after NVM is installed, so that NVM can be used to install Node.js within the same script.

Nodejs Dev Tool install script for Debian Linux

#!/usr/bin/env bash

# NOTE: run this script after setting up preferred shell, e.g. zsh
# and XDG environment variables are defined
# as the NVM script adds itself to the shell resource configuration

echo "# ---------------------------------------"
echo "Nodejs install via Node Version Manager - NVM"

# Nodejs official install script for vm
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash

# Source the NVM script
if [ -d $XDG_CONFIG_HOME/nvm ]; then
 echo "Source NVM script from XDG_CONFIG_HOME/nvim"
 \. "$XDG_CONFIG_HOME/nvm/nvm.sh"
else
 echo "Source NVM script from HOME/.nvim"
 \. "$HOME/.nvm/nvm.sh"
fi

# Install the given version of nodejs
nvm install 24

# Confirm node was installed
node --version
echo "# ---------------------------------------"
Install of Nodejs & NPM via NVM - X
❯ ./nodejs-nvm-install-node24.sh
# ---------------------------------------
Nodejs install via Node Version Manager - NVM
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 16631  100 16631    0     0   248k      0 --:--:-- --:--:-- --:--:--  249k
=> nvm is already installed in /home/practicalli/.config/nvm, trying to update using git
=> => Compressing and cleaning up git repository

=> nvm source string already in /home/practicalli/.config/zsh/.zshrc
=> bash_completion source string already in /home/practicalli/.config/zsh/.zshrc
=> Close and reopen your terminal to start using nvm or run the following to use it now:

export NVM_DIR="$HOME/.config/nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"  # This loads nvm bash_completion
Downloading and installing node v24.13.1...
Downloading https://nodejs.org/dist/v24.13.1/node-v24.13.1-linux-x64.tar.xz...
######################################################################################################################################### 100.0%
Computing checksum with sha256sum
Checksums matched!
Now using node v24.13.1 (npm v11.8.0)
Creating default alias: default -> 24 (-> v24.13.1)
v24.13.1
# ---------------------------------------

Desktop Display Managerλ︎

GDM2 was the default window manager when I installed Debian Linux (Gnome desktop environment). This is a good tool but was curious as to the other options.

Lightdm is a lightweight greeter with theme support. It is packaged in several deb packages, so only the features needed can be installed.

SDDM is a popular tool with Hyprland based distributions, as it is highly configurable.

Debian Linux Greeter packages
❯ apt search --names-only greeter
arctica-greeter/stable 0.99.9.4-1 amd64
  LightDM Arctica Greeter

arctica-greeter-guest-session/stable 0.99.9.4-1 all
  LightDM Arctica Greeter - Guest Session Support

arctica-greeter-remote-logon/stable 0.99.9.4-1 all
  LightDM Arctica Greeter - Remote Login Support

arctica-greeter-theme-debian/stable 0.99.9.4-1 all
  LightDM Arctica Greeter - Debian Theme (active theme)

arctica-greeter-theme-debian-ceratopsian/stable 0.99.9.4-1 all
  LightDM Arctica Greeter - Debian Theme (Ceratopsian)

arctica-greeter-theme-debian-emerald/stable 0.99.9.4-1 all
  LightDM Arctica Greeter - Debian Theme (Emerald)

arctica-greeter-theme-debian-futureprototype/stable 0.99.9.4-1 all
  LightDM Arctica Greeter - Debian Theme (futurePrototype)

arctica-greeter-theme-debian-homeworld/stable 0.99.9.4-1 all
  LightDM Arctica Greeter - Debian Theme (Homeworld)

arctica-greeter-theme-debian-softwaves/stable 0.99.9.4-1 all
  LightDM Arctica Greeter - Debian Theme (softWaves)

ayatana-greeter-badges/stable 0.3-1 all
  Session badges for LightDM-based greeters

lightdm-autologin-greeter/stable 1.0-5 all
  Autologin greeter for LightDM

lightdm-gtk-greeter/stable,now 2.0.9-1 amd64 [installed,automatic]
  simple display manager (GTK+ greeter)

lightdm-gtk-greeter-settings/stable 1.2.3-1 all
  settings editor for the LightDM GTK+ Greeter

lomiri-greeter/stable 0.5.0-2 all
  LightDM Greeter for the Lomiri Operating Environment

slick-greeter/stable 2.0.9-1 amd64
  Slick-looking LightDM greeter

ukui-greeter/stable 3.0.3.2-1 amd64
  Lightdm greeter for UKUI

LightDMλ︎

LightDM package has very few package dependencies, most of which are related to LightDM or would be installed with any greeter.

I've used the de facto gtk greeter which does the job nicely.

LightDM package information
❯ apt show lightdm
Package: lightdm
Version: 1.32.0-6+b2
Priority: optional
Section: x11
Source: lightdm (1.32.0-6)
Maintainer: Debian Xfce Maintainers <debian-xfce@lists.debian.org>
Installed-Size: 838 kB
Provides: x-display-manager
Depends: adduser, dbus, libpam-systemd | logind, lightdm-gtk-greeter | lightdm-greeter, debconf (>= 0.5) | debconf-2.0, libaudit1 (>= 1:2.2.1), libc6 (>= 2.34), lib>
Recommends: xserver-xorg
Suggests: accountsservice, upower, xserver-xephyr
Homepage: https://discourse.ubuntu.com/c/light-dm/107
Tag: interface::graphical, interface::x11, role::program
Download-Size: 165 kB
APT-Manual-Installed: yes
APT-Sources: http://deb.debian.org/debian trixie/main amd64 Packages
Description: simple display manager
 An X display manager that:
  * Has a lightweight codebase
  * Is standards compliant (PAM, ConsoleKit, etc)
  * Has a well defined interface between the server and user interface
  * Fully themeable
  * Cross-desktop (greeters can be written in any toolkit)
 .
 Additional software can be useful along with LightDM:
  * xserver-xephyr can be used to add a nested X display by calling
   'dm-tool add-nested-seat`
  * upower can be used to suspend the computer from the display manager
  * accountsservice is used to populate a user list with addition information.

LightDM Themesλ︎

LightDM install on Debian Linux includes a simple Debian based theme.

The arctica theme makes LightDM similar in appearance to the Gnome and KDE style greeters.

EDIT: In hindsight I may switch back to the default theme as Arctica depends on evolution packages (not required for anything else).

Arctica greeter for LightDM - package information
❯ apt show arctica-greeter
Package: arctica-greeter
Version: 0.99.9.4-1
Priority: optional
Section: x11
Maintainer: Debian Remote Maintainers <debian-remote@lists.debian.org>
Installed-Size: 3,292 kB
Provides: lightdm-greeter
Depends: dconf-gsettings-backend | gsettings-backend, libatk1.0-0t64 (>= 1.12.4), libayatana-ido3-0.4-0 (>= 0.4.0), libayatana-indicator3-7 (>= 0.6.0), libc6 (>= 2.>
Recommends: ayatana-indicator-a11y, ayatana-indicator-application, ayatana-indicator-datetime, ayatana-indicator-display, ayatana-indicator-keyboard, ayatana-indica>
Conflicts: lomiri-greeter
Breaks: edubuntu-artwork (<< 12.01.1~)
Homepage: https://github.com/ArcticaProject/arctica-greeter/
Tag: uitoolkit::gtk
Download-Size: 1,672 kB
APT-Sources: http://deb.debian.org/debian trixie/main amd64 Packages
Description: LightDM Arctica Greeter
 A greeter shell for the LightDM login manager. Arctica Greeter can be used as
 local display manager as well as thin client login manager.
 .
 Arctica Greeter has been forked from Ubuntu's Unity Greeter with focus on
 keeping remote logon support a maintained feature and provide a user interface
 based on Ayatana Indicators.
 .
 Arctica Greeter can be extended with various features:
 .
   - remote logon support against RDP, Arctica and X2Go Servers
   - guest session support
   - various themes available / providable
Arctica greeter debian linux package install and dependencies
❯ sudo apt install arctica-greeter                                                                 in 9s971ms   16:39  practicalli󰣚
[sudo] password for practicalli:
Installing:
  arctica-greeter

Installing dependencies:
  ayatana-indicator-a11y             evolution-data-server-common     libecal-2.0-3              libmate-desktop-2-17t64  mate-settings-daemon
  ayatana-indicator-application      fonts-noto-core                  libedata-book-1.2-27t64    libmatekbd-common        mate-settings-daemon-common
  ayatana-indicator-common           gir1.2-ayatanaappindicator3-0.1  libedata-cal-2.0-2t64      libmatekbd4              metacity
  ayatana-indicator-datetime         gtk2-engines-murrine             libedataserver-1.2-27t64   libmatemixer-common      metacity-common
  ayatana-indicator-datetime-common  libaccounts-glib0                libedataserverui-1.2-4t64  libmatemixer0            numix-gtk-theme
  ayatana-indicator-display          libayatana-common0               libgail-common             libmessaging-menu0       numix-icon-theme
  ayatana-indicator-keyboard         libcamel-1.2-64t64               libgail18t64               libmetacity3             numlockx
  ayatana-indicator-power            libdbus-glib-1-2                 libgtk2.0-0t64             libphonenumber8          onboard
  ayatana-indicator-session          libdeviceinfo0                   libgtk2.0-bin              librda-common            onboard-common
  ayatana-indicator-sound            libebackend-1.2-11t64            libgtk2.0-common           librda0                  onboard-data
  espeak-ng                          libebook-1.2-21t64               libical3t64                libxpresent1             xinput
  evolution-data-server              libebook-contacts-1.2-4t64       liblomiri-url-dispatcher0  mate-desktop-common      xsct

Suggested packages:
  indicator-applet          | indicator-applet        | lomiri-system-settings  | indicator-renderer              evolution
  | mate-indicator-applet   | indicator-renderer      apport                    unity-control-center-signon       murrine-themes
  | xfce4-indicator-plugin  mate-power-manager        gnome-screensaver         | gnome-control-center-signon     lomiri-url-dispatcher
  | indicator-renderer      | xfce4-power-manager     | mate-screensaver        | mate-control-center             mousetweaks
  mate-indicator-applet     | switchboard-plug-power  mate-indicator-applet     | lomiri-system-settings
  | xfce4-indicator-plugin  | gnome-power-statistics  | xfce4-indicator-plugin  lomiri-greeter-session-broadcast

Recommended packages:
  geoclue-provider

Summary:
  Upgrading: 0, Installing: 61, Removing: 0, Not Upgrading: 0
  Download size: 35.9 MB
  Space needed: 200 MB / 3,454 MB available

Continue? [Y/n]

Once the package is installed, choose the arttic greeter as the lightdm-greeter

Update Alternatives for LightDM

sudo update-alternatives --config lightdm-greeter
Choose Arctica greeter in update-alternatives
 sudo update-alternatives --config lightdm-greeter
[sudo] password for practicalli:
There are 2 choices for the alternative lightdm-greeter (providing /usr/share/xgreeters/lightdm-greeter.desktop).

  Selection    Path                                              Priority   Status
------------------------------------------------------------
* 0            /usr/share/xgreeters/lightdm-gtk-greeter.desktop   60        auto mode
  1            /usr/share/xgreeters/arctica-greeter.desktop       50        manual mode
  2            /usr/share/xgreeters/lightdm-gtk-greeter.desktop   60        manual mode

Press <enter> to keep the current choice[*], or type selection number: 1
update-alternatives: using /usr/share/xgreeters/arctica-greeter.desktop to provide /usr/share/xgreeters/lightdm-greeter.desktop (lightdm-greeter) in manual mode

SDDMλ︎

SDDM is commonly used with the KDE desktop environment and Hyprland compositor, as its highly customisable and has a wide availability of themes.

SDDM supports both X11 and Wayland sessions.

The Debian Linux package for SDDM depends on many additional packages, although when using KDE rather than Gnome many of these packages will already be installed.

SDDM package install dependencies
❯ sudo apt install sddm
[sudo] password for practicalli:
Installing:
  sddm

Installing dependencies:
  aha                             libkf5iconthemes-bin         libkf6sonnetui6                   libxdgutilsbasedir1.0.1
  apt-config-icons-hidpi          libkf5iconthemes-data        libkf6statusnotifieritem-data     libxdgutilsdesktopentry1.0.1
  apt-config-icons-large          libkf5iconthemes5            libkf6statusnotifieritem6         libxmlsec1t64
  apt-config-icons-large-hidpi    libkf5itemviews-data         libkf6style6                      libxmlsec1t64-openssl
  bluedevil                       libkf5itemviews5             libkf6su-bin                      libzip5
  bluez-obexd                     libkf5jobwidgets-data        libkf6su-data                     media-player-info
  breeze                          libkf5jobwidgets5            libkf6su6                         mesa-utils
  breeze-cursor-theme             libkf5kiocore5               libkf6svg6                        mesa-utils-bin
  breeze-gtk-theme                libkf5kiofilewidgets5        libkf6syndication6                milou
  breeze-icon-theme               libkf5kiogui5                libkf6syntaxhighlighting-data     ocean-sound-theme
  breeze-wallpaper                libkf5kiontlm5               libkf6syntaxhighlighting6         oxygen-sounds
  bup                             libkf5kiowidgets5            libkf6texteditor-bin              partitionmanager
  bup-doc                         libkf5kirigami2-5            libkf6texteditor-data             phonon-backend-vlc-common
  catdoc                          libkf5notifications-data     libkf6texteditor-katepart         phonon4qt6
  clinfo                          libkf5notifications5         libkf6texteditor6                 phonon4qt6-backend-vlc
  cryfs                           libkf5service-bin            libkf6texttemplate6               plasma-activities-bin
  docbook-xsl                     libkf5service-data           libkf6textwidgets-data            plasma-browser-integration
  drkonqi                         libkf5service5               libkf6textwidgets6                plasma-desktop
  evolution-data-server-common    libkf5solid5                 libkf6unitconversion-data         plasma-desktop-data
  fonts-hack                      libkf5solid5-data            libkf6unitconversion6             plasma-desktop-doc
  fonts-noto                      libkf5sonnet5-data           libkf6userfeedback-data           plasma-desktoptheme
  fonts-noto-cjk                  libkf5sonnetcore5            libkf6userfeedback-doc            plasma-discover
  fonts-noto-cjk-extra            libkf5sonnetui5              libkf6userfeedbackcore6           plasma-discover-backend-fwupd
  fonts-noto-core                 libkf5style5                 libkf6wallet-data                 plasma-discover-common
  fonts-noto-extra                libkf5textwidgets-data       libkf6wallet6                     plasma-disks
  fonts-noto-ui-core              libkf5textwidgets5           libkf6walletbackend6              plasma-firewall
  fonts-noto-ui-extra             libkf5wallet-bin             libkf6widgetsaddons-data          plasma-integration
  fonts-noto-unhinted             libkf5wallet-data            libkf6widgetsaddons6              plasma-nm
  frameworkintegration6           libkf5wallet5                libkf6windowsystem-data           plasma-pa
  gdb                             libkf5waylandclient5         libkf6windowsystem6               plasma-systemmonitor
  ibus-data                       libkf5widgetsaddons-data     libkf6xmlgui-data                 plasma-thunderbolt
  isa-support                     libkf5widgetsaddons5         libkf6xmlgui6                     plasma-vault
  kaccounts-providers             libkf5windowsystem-data      libkfontinst6                     plasma-welcome
  kactivitymanagerd               libkf5windowsystem5          libkfontinstui6                   plasma-workspace
  kde-cli-tools                   libkf5xmlgui-bin             libkglobalacceld0                 plasma-workspace-data
  kde-cli-tools-data              libkf5xmlgui-data            libkirigami-data                  plasma-workspace-doc
  kde-config-gtk-style            libkf5xmlgui5                libkirigami6                      plasma5-integration
  kde-config-screenlocker         libkf6archive-data           libkirigamidelegates6             pnp.ids
  kde-config-sddm                 libkf6archive6               libkirigamidialogs6               polkit-kde-agent-1
  kde-config-updates              libkf6attica6                libkirigamilayouts6               powerdevil
  kde-spectacle                   libkf6auth-data              libkirigamiplatform6              powerdevil-data
  kde-style-breeze                libkf6authcore6              libkirigamiprimitives6            python3-fuse
  kde-style-breeze-data           libkf6baloo6                 libkirigamiprivate6               python3-pylibacl
  kde-style-breeze-qt5            libkf6balooengine6           libklipper6                       python3-pyxattr
  kdeconnect                      libkf6bluezqt-data           libkmpris6                        python3-sentry-sdk
  kdeconnect-libs                 libkf6bluezqt6               libkpipewire-data                 python3-tornado
  kded5                           libkf6bookmarks-data         libkpipewire6                     qdbus-qt6
  kded6                           libkf6bookmarks6             libkpipewiredmabuf6               qml-module-gsettings
  kdoctools6                      libkf6bookmarkswidgets6      libkpipewirerecord6               qml-module-gsettings1.0
  keditbookmarks                  libkf6breezeicons6           libkpmcore12                      qml-module-org-kde-kirigami2
  kf6-breeze-icon-theme           libkf6calendarevents6        libkscreen-bin                    qml-module-org-kde-qqc2desktopstyle
  kgamma                          libkf6codecs-data            libkscreen-data                   qml-module-org-kde-sonnet
  kglobalacceld                   libkf6codecs6                libkscreenlocker6                 qml-module-qtgraphicaleffects
  khelpcenter                     libkf6colorscheme-data       libksysguard-bin                  qml-module-qtqml-models2
  khelpcenter-data                libkf6colorscheme6           libksysguard-data                 qml-module-qtquick-controls2
  kinfocenter                     libkf6completion-data        libksysguardformatter2            qml-module-qtquick-layouts
  kio                             libkf6completion6            libksysguardsensorfaces2          qml-module-qtquick-templates2
  kio-extras                      libkf6config-bin             libksysguardsensors2              qml-module-qtquick-window2
  kio-extras-data                 libkf6config-data            libksysguardsystemstats2          qml-module-qtquick2
  kio-fuse                        libkf6configcore6            libkwaylandclient6                qml6-module-org-kde-activities
  kio6                            libkf6configgui6             libkwin6                          qml6-module-org-kde-baloo
  kirigami-addons-data            libkf6configqml6             libkworkspace6-6                  qml6-module-org-kde-bluezqt
  kmenuedit                       libkf6configwidgets-data     liblayershellqtinterface6         qml6-module-org-kde-breeze
  kpackagetool6                   libkf6configwidgets6         libmarkdown2                      qml6-module-org-kde-config
  kscreen                         libkf6contacts-data          libnotificationmanager1           qml6-module-org-kde-coreaddons
  ksshaskpass                     libkf6contacts6              libopenconnect5                   qml6-module-org-kde-desktop
  ksystemstats                    libkf6coreaddons-data        libpackagekitqt6-1                qml6-module-org-kde-draganddrop
  kup-backup                      libkf6coreaddons6            libpam-kwallet-common             qml6-module-org-kde-graphicaleffects
  kwallet6                        libkf6crash6                 libpam-kwallet5                   qml6-module-org-kde-guiaddons
  kwalletmanager                  libkf6dbusaddons-bin         libphonenumber8                   qml6-module-org-kde-iconthemes
  kwayland-integration            libkf6dbusaddons-data        libphonon-l10n                    qml6-module-org-kde-kcmutils
  kwayland5-data                  libkf6dbusaddons6            libphonon4qt6-4t64                qml6-module-org-kde-kdeconnect
  kwayland6-data                  libkf6declarative-data       libplasma-geolocation-interface6  qml6-module-org-kde-kholidays
  kwin-common                     libkf6dnssd-data             libplasma5support-data            qml6-module-org-kde-kirigami
  kwin-data                       libkf6dnssd6                 libplasma5support6                qml6-module-org-kde-kirigamiaddons-components
  kwin-style-breeze               libkf6doctools6              libplasma6                        qml6-module-org-kde-kirigamiaddons-datetime
  kwin-wayland                    libkf6filemetadata-bin       libplasmaactivities6              qml6-module-org-kde-kirigamiaddons-delegates
  kwrited                         libkf6filemetadata-data      libplasmaactivitiesstats1         qml6-module-org-kde-kirigamiaddons-formcard
  layer-shell-qt                  libkf6filemetadata3          libplasmaquick6                   qml6-module-org-kde-kirigamiaddons-tableview
  libaccounts-glib0               libkf6globalaccel-data       libpolkit-qt5-1-1                 qml6-module-org-kde-kirigamiaddons-treeview
  libaccounts-qt6-1               libkf6globalaccel6           libpolkit-qt6-1-1                 qml6-module-org-kde-kitemmodels
  libappimage1.0abi1t64           libkf6guiaddons-bin          libpoppler-qt6-3t64               qml6-module-org-kde-kquickcontrols
  libappstreamqt3                 libkf6guiaddons-data         libpowerdevilcore2                qml6-module-org-kde-kquickcontrolsaddons
  libbabeltrace1                  libkf6guiaddons6             libprocesscore10                  qml6-module-org-kde-ksvg
  libbatterycontrol6              libkf6holidays-data          libpskc0t64                       qml6-module-org-kde-ksysguard
  libboost-chrono1.83.0t64        libkf6holidays6              libqaccessibilityclient-qt6-0     qml6-module-org-kde-kwindowsystem
  libboost-program-options1.83.0  libkf6i18n-data              libqalculate-data                 qml6-module-org-kde-networkmanager
  libcamel-1.2-64t64              libkf6i18n6                  libqalculate23                    qml6-module-org-kde-newstuff
  libcolorcorrect6                libkf6i18nlocaledata6        libqca-qt6-2                      qml6-module-org-kde-notifications
  libdbusmenu-qt5-2               libkf6i18nqml6               libqca-qt6-plugins                qml6-module-org-kde-people
  libddcutil5                     libkf6iconthemes-bin         libqcoro6core0t64                 qml6-module-org-kde-pipewire
  libdebuginfod-common            libkf6iconthemes-data        libqcoro6dbus0t64                 qml6-module-org-kde-plasma-plasma5support
  libdebuginfod1t64               libkf6iconthemes6            libqmobipocket6-2                 qml6-module-org-kde-prison
  libdisplay-info-bin             libkf6iconwidgets6           libqt5qmlworkerscript5            qml6-module-org-kde-purpose
  libdmtx0t64                     libkf6idletime6              libqt5quickcontrols2-5            qml6-module-org-kde-quickcharts
  libebackend-1.2-11t64           libkf6itemmodels6            libqt5quicktemplates2-5           qml6-module-org-kde-sonnet
  libebook-1.2-21t64              libkf6itemviews-data         libqt5texttospeech5               qml6-module-org-kde-syntaxhighlighting
  libebook-contacts-1.2-4t64      libkf6itemviews6             libqt6bluetooth6                  qml6-module-org-kde-userfeedback
  libedata-book-1.2-27t64         libkf6jobwidgets-data        libqt6bluetooth6-bin              qml6-module-qt-labs-folderlistmodel
  libedataserver-1.2-27t64        libkf6jobwidgets6            libqt6core5compat6                qml6-module-qt-labs-platform
  libepub0                        libkf6kcmutils-bin           libqt6labsplatform6               qml6-module-qt-labs-qmlmodels
  libfakekey0                     libkf6kcmutils-data          libqt6multimedia6                 qml6-module-qt5compat-graphicaleffects
  libfmt10                        libkf6kcmutils6              libqt6openglwidgets6              qml6-module-qtcore
  libfuse2t64                     libkf6kcmutilscore6          libqt6positioning6                qml6-module-qtmultimedia
  libgit2-1.9                     libkf6kcmutilsquick6         libqt6positioning6-plugins        qml6-module-qtpositioning
  libgsettings-qt1                libkf6kiocore6               libqt6positioningquick6           qml6-module-qtqml
  libhfstospell11                 libkf6kiofilewidgets6        libqt6printsupport6               qml6-module-qtqml-models
  libhttp-parser2.9               libkf6kiogui6                libqt6quickcontrols2-6            qml6-module-qtqml-workerscript
  libipt2                         libkf6kiowidgets6            libqt6quickshapes6                qml6-module-qtquick
  libkaccounts6-2                 libkf6modemmanagerqt6        libqt6quicktemplates2-6           qml6-module-qtquick-controls
  libkdecorations3-6              libkf6networkmanagerqt6      libqt6quickwidgets6               qml6-module-qtquick-dialogs
  libkdecorations3private2        libkf6newstuff-data          libqt6sensors6                    qml6-module-qtquick-effects
  libkdsoap-qt6-2                 libkf6newstuffcore6          libqt6serialport6                 qml6-module-qtquick-layouts
  libkdsoapwsdiscoveryclient0     libkf6newstuffwidgets6       libqt6shadertools6                qml6-module-qtquick-particles
  libkexiv2qt6-0                  libkf6notifications-data     libqt6sql6                        qml6-module-qtquick-shapes
  libkf5archive-data              libkf6notifications6         libqt6sql6-sqlite                 qml6-module-qtquick-templates
  libkf5archive5                  libkf6notifyconfig-data      libqt6texttospeech6               qml6-module-qtquick-tooling
  libkf5auth-data                 libkf6notifyconfig6          libqt6uitools6                    qml6-module-qtquick-virtualkeyboard
  libkf5authcore5                 libkf6package-data           libqt6virtualkeyboard6            qml6-module-qtquick-window
  libkf5bookmarks-data            libkf6package6               libqt6webchannel6                 qml6-module-qtwebchannel
  libkf5bookmarks5                libkf6parts-data             libqt6webchannelquick6            qml6-module-qtwebengine
  libkf5codecs-data               libkf6parts6                 libqt6webengine6-data             qml6-module-qtwebview
  libkf5codecs5                   libkf6people-data            libqt6webenginecore6              qml6-module-sso-onlineaccounts
  libkf5completion-data           libkf6people6                libqt6webenginecore6-bin          qt6-virtualkeyboard-plugin
  libkf5completion5               libkf6peoplebackend6         libqt6webenginequick6             qtspeech5-speechd-plugin
  libkf5config-bin                libkf6prison6                libqt6webenginewidgets6           rsync
  libkf5config-data               libkf6prisonscanner6         libqt6webview6                    sddm-theme-breeze
  libkf5configcore5               libkf6pty-data               libquickcharts1                   sddm-theme-debian-breeze
  libkf5configgui5                libkf6pty6                   libquickchartscontrols1           signon-plugin-oauth2
  libkf5configwidgets-data        libkf6pulseaudioqt5          libscim8v5                        smartmontools
  libkf5configwidgets5            libkf6purpose-bin            libsignon-plugins-common1         socat
  libkf5coreaddons-data           libkf6purpose-data           libsignon-qt6-1                   sonnet-plugins
  libkf5coreaddons5               libkf6purpose6               libsource-highlight-common        sonnet6-plugins
  libkf5crash5                    libkf6purposewidgets6        libsource-highlight4t64           sse3-support
  libkf5dbusaddons-bin            libkf6qqc2desktopstyle-data  libspdlog1.15                     sshfs
  libkf5dbusaddons-data           libkf6runner6                libsquashfuse0                    switcheroo-control
  libkf5dbusaddons5               libkf6screen8                libstoken1t64                     systemd-coredump
  libkf5doctools5                 libkf6screendpms8            libtaskmanager6                   systemsettings
  libkf5globalaccel-bin           libkf6service-bin            libtomcrypt1                      vulkan-tools
  libkf5globalaccel-data          libkf6service-data           libtommath1                       wayland-utils
  libkf5globalaccel5              libkf6service6               libvoikko1                        xdg-desktop-portal-kde
  libkf5guiaddons-data            libkf6solid-data             libweather-ion7                   xsettingsd
  libkf5guiaddons5                libkf6solid6                 libxapian30                       xwaylandvideobridge
  libkf5i18n-data                 libkf6sonnet-data            libxcb-dpms0
  libkf5i18n5                     libkf6sonnetcore6            libxcb-record0

Suggested packages:
  tk                      libxalan2-java                libpam-fprintd  reiserfsprogs                    network-manager-iodine       python-pyxattr-doc
  | wish                  libxslthl-java                libpam-sss      xfsprogs                         network-manager-l2tp         python3-pycurl
  dbtoepub                xalan                         libpam-pkcs11   phonon4qt6-backend-gstreamer     network-manager-openconnect  python-tornado-doc
  docbook-xsl-doc-html    gdb-doc                       voikko-fi       kde-config-flatpak               network-manager-openvpn      python3-twisted
  | docbook-xsl-doc-pdf   gdbserver                     xapian-tools    plasma-theme-oxygen              network-manager-pptp         python3-braceexpand
  | docbook-xsl-doc-text  libc-dbg                      btrfs-progs     plasma-discover-backend-flatpak  network-manager-ssh          gsmartcontrol
  | docbook-xsl-doc       ibus                          hfsplus         plasma-discover-backend-snap     network-manager-strongswan   smart-notifier
  docbook-xsl-saxon       kde-config-gtk-style-preview  hfsutils        firewalld                        network-manager-vpnc         hspell
  fop                     samba                         jfsutils        | ufw                            gocryptfs
  libsaxon-java           kwin-addons                   reiser4progs    network-manager-fortisslvpn      python-pylibacl-doc

Recommended packages:
  software-properties-qt

Summary:
  Upgrading: 0, Installing: 579, Removing: 0, Not Upgrading: 0
  Download size: 617 MB
  Space needed: 2,081 MB / 3,416 MB available

Continue? [Y/n]

Neovimλ︎

I update the latest versions of neovim packages and external development tools around once a month, or when ever I have no immediate work to do (in case there are issues).

My recommendation is to update packages on a monthly basis, as there are often little fixes that are helpful. I would not recommend waiting more than 3 months between updates (unless there is a known bug or breaking change to avoid - but this is rare in my experience).

Update Packages (Lazy) and Tools (Mason)

  Total: 71 plugins

  Updated (9)
    ● astrocommunity 0.06ms  start
        2adab99 feat(python): Split python pack into seperate smaller packs (#1688) (23 hours ago)
        998e0d0 fix(compiler-nvim): add telescope.nvim to Compiler.nvim dependencies (#1734) (2 weeks ago)

    ● astrocore 21.6ms 󰢱 astrocore  AstroNvim
        41e7e72 chore(main): release 2.1.1 (5 days ago)
        f0ec513 chore(build): auto-generate vimdoc (5 days ago)
        cf7c5ea fix(buffer): make sure to not rule a buffer as large until it is fully loaded (5 days ago)
        852ea56 chore(main): release 2.1.0 (2 weeks ago)
        53a5d69 chore(build): auto-generate vimdoc (2 weeks ago)
        e619a6b feat: add AstroUpdateCompleted event after Mason tools update (2 weeks ago)
        269484c chore(build): auto-generate vimdoc (9 months ago)
        8bba793 chore: configure lua language server to disable formatting (9 months ago)
        cd9a7d8 chore(build): auto-generate vimdoc (9 months ago)
        6ea387b chore: remove unnecessary 0.10 check (9 months ago)

    ○ astrotheme
        cf0e65a chore(main): release 4.10.1 (#174) (2 days ago)
        02530da chore(extras): auto-generate extras (3 days ago)
        1a5d5d5 chore(build): auto-generate vimdoc (3 days ago)
        510b9d1 fix(extras): add in missing comma to yazi extras (3 days ago)
        7894b03 chore(extras): auto-generate extras (4 days ago)
        50c3614 fix(extras): improve yazi status separators (4 days ago)
        fa2d615 chore(extras): auto-generate extras (4 days ago)
        3cd7b3e chore(build): auto-generate vimdoc (4 days ago)
        ba8a858 fix(extras): update Yazi extra for latest release breaking changes (4 days ago)
        4163138 ci: fix test script (5 weeks ago)
        b846665 chore(build): auto-generate vimdoc (5 weeks ago)
        a60a797 docs: fixed typo `terminal_color` -> `terminal_colors` (#172) (5 weeks ago)

    ● catppuccin 4.9ms colorscheme catppuccin-mocha  astrocore
        0a5de4d fix(treesitter): `@type.builtin` styles (#944) (7 days ago)

    ○ conjure  python  lua  janet  fennel  racket  hy  scheme  guile  julia  lisp  rust  sql  clojure
        42048ce Wait for the initial ns pre-creation to complete #759 (9 days ago)
        426c56a Bump all the Clojure deps (9 days ago)

    ○ gist.nvim  GistsList  GistCreate  GistCreateFromFile
        45bdc70 fix: issue with `CreateGistFromFile` (4 days ago)
        f054e0d docs update (11 days ago)
        800e234 feat: add pastecn provider (#27) (11 days ago)

    ● neogit 11.31ms  User AstroGitFile
        d5af26e Add documentation for NeogitDiffLoaded event (14 hours ago)
        455d10b lint (14 hours ago)
        435b10f Expose vim.b.neogit_git_dir variable on status buffer (14 hours ago)
        52fa24d Allow for hunk highlighting to be disabled by setting buffer local variable. (14 hours ago)
        a4da0a3 Emit "NeogitDiffLoaded" event (14 hours ago)
        2a47e1d style: format (2 days ago)
        0060520 refactor: use nvim_echo instead of vimscript echo (2 days ago)
        57142af fix: hide noisy process spinner for background jobs (2 days ago)
        22433ea Fix: https://github.com/NeogitOrg/neogit/issues/1844 (3 days ago)
        df32385 style: add back stylua ignore pragma (6 days ago)
        ad4d7bc fix: prevent `--literal-pathspecs` leaking into git hooks (6 days ago)
        9104991 lint (8 days ago)
        3e973d2 feat: add codediff.nvim as alternative diff viewer (8 days ago)
        75ca811 fix: when private/global ignore file doesn't exist, create it. (10 days ago)

    ● rainbow-delimiters.nvim 1.77ms  User AstroFile
        e2858c4 Merge branch 'templ-goraw' (6 days ago)
        272e99d Update changelog (6 days ago)
        4b9e3c5 Add missing Astro patterns (6 days ago)
        7782606 Add more SPDX license headers (6 days ago)
        50b045d Add rawgo_block query for Templ (7 days ago)
        15a7678 Add license and copyright to generated test specs (6 weeks ago)
        7bac5cf Add explicit license files (6 weeks ago)

    ○ schemastore.nvim

Thank you.

🌐 Practical.li Website

Practical.li GitHub Org practicalli-johnny profile

@practicalli@clj.social @practical_li