Learning Linux like its 1995
Using Arch Linux (for Hyprland experiments) takes me back to the mid 1990's when I was learning Linux from the ground up.
At the end of 1994 I was installing Slackware Linux (from 82 floppy disks) and spending hours figuring out what to compile into the Linux kernel (before the days of dynamic loading). There was a huge amount to learn (usually without my own internet connection).
Arch Linux wiki pages have a huge amount of information, showing all the possible options for every piece of software and service. This does present a dilemma of choice.
Having experienced many years with Linux, I know many of the concepts and software associated with a Linux system. I don't need to read all the options, but do find myself scrolling a lot until I find something familiar (or simple).
I have an Arch Linux desktop using Hyprland up and running, using HyDE to configure all the extra tools to make Hyprland useable as a desktop (although there are still some things to tweak and add).
LSP file renaming with Neovim & LSP still fails using the Neovim LSP client, although it is fairly simple to rename a namespace and its corresponding file name using clojure-lsp
command line.
Movies & Shows this week:
- Death on the Nile 1978 with Peter Ustinov as Hercule Poirot, including an all-star cast from the time including David Niven, Angela Landsbury and Betty Davis.
- Star Trek - The Original Series started watching this week as a way to switch off each evening, or more likely listen too whilst I write up the days journal.
Goalsλ︎
The goals for this month include
- documenting Neovim & Conjure workflow
- meaningful exercise every day (health permitting)
- bicycle ride (weather permitting)
- avoid Hyprland turning into a huge time sync (couch potato time only)
Neovimλ︎
LSP Renaming of namespaces and filenames is the only feature I do not have working with Clojure LSP and Neovim. nvim-lspconfig supports Clojure but reports the following error when trying to rename a namespace name.
The nvim-lsp-file-operations plugin was used but with no success as yet (not sure why).
clojure-lsp command lineλ︎
clojure-lsp
is available on the command line path, so a command like this will change the namespace and the namespaces corresponding file name.
Clojure LSP rename namespace via command line
Hyprlandλ︎
Hyprland has already taken up a lot of time with getting the basics up and running. It will easily take weeks and most likely months to have a rich configuration with all the eye candy I have seen. Investing that kind of time is not valuable to me, but I would still like to have an engaing setup.
There is much discussion about configuring Hyprland and lots of different community projects.
❯ waybar
(waybar:27164): Gtk-WARNING **: 23:35:32.704: Theme parsing error: gtk.css:6691:68: Invalid name of pseudo-class
[2025-01-18 23:35:32.740] [info] Using configuration file /home/practicalli/.config/waybar/config.jsonc
[2025-01-18 23:35:32.741] [error] Error parsing JSON: * Line 71, Column 18
Syntax error: value, object or array expected.
The error seems related to the "icon-size"
key which had the value ${i_task
which seems incomplete structure.
Chaninging "icon-size"
to a specific icon size seems to make waybar run (at least via the command line)
"wlr/taskbar": {
"all-outputs": true,
"active-first": true,
"markup": true,
"format": "{icon}",
"rotate": "0",
// "icon-size": ${i_task #(1)
"icon-size": "8"
},
- icon-size line seems incomplete, commented and replaced with a fixed value
icon-size fixed in recent commit
commit #936ea5a fixes the bug in this code
The waybar
command in a terminal runs waybar okay, although there are some warnings to review.
❯ waybar
(waybar:27230): Gtk-WARNING **: 23:37:28.210: Theme parsing error: gtk.css:6691:68: Invalid name of pseudo-class
[2025-01-18 23:37:28.246] [info] Using configuration file /home/practicalli/.config/waybar/config.jsonc
[2025-01-18 23:37:28.250] [info] Unable to receive desktop appearance: GDBus.Error:org.freedesktop.DBus.Error.UnknownMethod: No such interface “org.freedesktop.portal.Settings” on object at path /org/freedesktop/portal/desktop
[2025-01-18 23:37:28.250] [info] Using CSS file /home/practicalli/.config/waybar/style.css
[2025-01-18 23:37:28.262] [info] Hyprland IPC starting
[2025-01-18 23:37:28.263] [info] Loading persistent workspaces from Waybar config
[2025-01-18 23:37:28.263] [info] Loading persistent workspaces from Hyprland workspace rules
[2025-01-18 23:37:28.264] [warning] Can't open /dev/input/event0 (are you in the input group?): EACCES Permission denied
[2025-01-18 23:37:28.264] [warning] Can't open /dev/input/event1 (are you in the input group?): EACCES Permission denied
[2025-01-18 23:37:28.264] [warning] Can't open /dev/input/event2 (are you in the input group?): EACCES Permission denied
[2025-01-18 23:37:28.264] [warning] Can't open /dev/input/event3 (are you in the input group?): EACCES Permission denied
[2025-01-18 23:37:28.264] [warning] Can't open /dev/input/event4 (are you in the input group?): EACCES Permission denied
[2025-01-18 23:37:28.264] [warning] Can't open /dev/input/event5 (are you in the input group?): EACCES Permission denied
[2025-01-18 23:37:28.264] [warning] Can't open /dev/input/event6 (are you in the input group?): EACCES Permission denied
[2025-01-18 23:37:28.264] [warning] Can't open /dev/input/event7 (are you in the input group?): EACCES Permission denied
[2025-01-18 23:37:28.264] [warning] Can't open /dev/input/event8 (are you in the input group?): EACCES Permission denied
[2025-01-18 23:37:28.264] [warning] Can't open /dev/input/event9 (are you in the input group?): EACCES Permission denied
[2025-01-18 23:37:28.264] [warning] Can't open /dev/input/event10 (are you in the input group?): EACCES Permission denied
[2025-01-18 23:37:28.264] [warning] Can't open /dev/input/mice (are you in the input group?): EACCES Permission denied
[2025-01-18 23:37:28.264] [warning] Can't open /dev/input/mouse0 (are you in the input group?): EACCES Permission denied
[2025-01-18 23:37:28.264] [warning] Can't open /dev/input/event11 (are you in the input group?): EACCES Permission denied
[2025-01-18 23:37:28.264] [warning] Can't open /dev/input/mouse1 (are you in the input group?): EACCES Permission denied
[2025-01-18 23:37:28.264] [warning] module keyboard-state: Disabling module "keyboard-state", Failed to find keyboard device: EACCES Permission denied
[2025-01-18 23:37:28.488] [info] Bar configured (width: 1600, height: 30) for output: LVDS-1
** (waybar:27230): WARNING **: 23:37:28.492: Status Notifier Item with bus name ':1.28' and object path '/org/ayatana/NotificationItem/udiskie' is already registered
** (waybar:27230): WARNING **: 23:37:28.492: Status Notifier Item with bus name ':1.17' and object path '/org/ayatana/NotificationItem/nm_applet' is already registered
[2025-01-18 23:37:28.497] [error] Item 'udiskie': Could not find an icon named 'drive-removable-media-usb-panel' and no pixmap given.
add user to input groupλ︎
A user account can be added to a group using either gpasswd
or usermod
Arch Linuxλ︎
Arch Linux has many subtle differences from Debian Linux, but most differences were fairly easy to find by an internet search.
Setting local time is almost the same as Debian, except Arch Linux uses timedatectl
command rather than systemctl
on Debian.
Storing a Git SSH key is more challenging (as I am not running a Gnome Destop) as there is no keyring. Currently the agent needs to be started and then the key added to the agent.
Set local timeλ︎
Set the local time via the command line iusing the timectrl
command
ArchLinux uses an NTP server that automatically sets the local time from a remote server (at least after installing HyDE).
To manually set the time with timedatectl
the NTP server must be disabled first.
timedatectl --help
timedatectl [OPTIONS...] COMMAND ...
Query or change system time and date settings.
Commands:
status Show current time settings
show Show properties of systemd-timedated
set-time TIME Set system time
set-timezone ZONE Set system time zone
list-timezones Show known time zones
set-local-rtc BOOL Control whether RTC is in local time
set-ntp BOOL Enable or disable network time synchronization
systemd-timesyncd Commands:
timesync-status Show status of systemd-timesyncd
show-timesync Show properties of systemd-timesyncd
ntp-servers INTERFACE SERVER…
Set the interface specific NTP servers
revert INTERFACE Revert the interface specific NTP servers
Options:
-h --help Show this help message
--version Show package version
--no-pager Do not pipe output into a pager
--no-ask-password Do not prompt for password
-H --host=[USER@]HOST Operate on remote host
-M --machine=CONTAINER Operate on local container
--adjust-system-clock Adjust system clock when changing local RTC mode
--monitor Monitor status of systemd-timesyncd
-p --property=NAME Show only properties by this name
-a --all Show all properties, including empty ones
--value When showing properties, only print the value
-P NAME Equivalent to --value --property=NAME
See the timedatectl(1) man page for details.
Store Git SSH Keyλ︎
Start the SSH agent
Set the SSH agent connection details in the current terminal shell
Add the key to the agent which will prompt for the passphrase of the SSH key.
Command that use the SSH key will now retrieve the details from the agent, avoiding the need to enter the passphrase again.
The current limitation is that this needs to be done each time a terminal session is run. Ideally the SSH key would be registered in the desktop keyring and the passphrase automatically unlocked when the user logs in.
Healthλ︎
My health took more of a knock this week as I am finding it very difficult to walk. I've had pain in my right hip for a couple of weeks and on Friday I started walking and felt a sharp pain. Every step with my right leg is painful and going up and down stairs is particularly painful.
The hip pain coupled with my left knee pain significantly limiting my ability to exercise this week.
Pain started to ease over the weekend, after a very sleepy Saturday and Sunday.
Thank you.