New beginnings
Interviewing for an Engineering Manager at an interesting FinTech company.
The journey into Hyprland continues its never ending (?) journey. I recently discovered HyDE which provides a rich desktop environment on top of Hyprland. Initially the install script was used but it does seem that HyDE-CLI tool is a newer and seemingly more effective approach.
Continued to manage my digitised music, including Megadeth, Ozzy Osbourne, Bryan Adams and The Offspring.
Hyperlandλ︎
Some valuable fixes and updates were recently added to the HyDE project which improves the rich desktop environment that HyDE configures on top of Hyprland.
Pulling updated commits and rerunning the Scripts/install.sh
script did update all the Hyprland related configs but left the desktop in a broken state.
The HyDE Git Org also includes the HyDE-CLI tool which seems a newer and seemingly more effective approach. HyDE-CLI provides a terminal UI (TUI) allowing a simple way to select themes and other options.
As HyDE-CLI is a TUI it can be run on a pure terminal session, e.g. Ctrl+Alt F3
, especially useful as I could not run a terminal after logging into Hyprland session.
I did have to removed .config/hypr
directory and reran Hyde-install
so that the install ran correctly and provided a working desktop environment.
Touchpadλ︎
The vertical scrolling of the touchpad does not use natural scrolling, so the page scrolls as if moving the scroll bar rather than moving the page.
In the Input section of the Hyperland config generated by HyDE sets natural_scroll = no
. Change to yes
to have natural scrolling.
I assume this setting would be overwritten with a HyDE update.
TODO: test if natural_scroll
can be set in a user config that is not overwritten, e.g. ~/.config/hypr/userprefs.conf
Enable natrual scrolling for touchpad
Kittyλ︎
HyDE provides a kitty configuration which overrode my kitty config. My kitty config was in version control, so easy to restore.
HyDE includes a userprefs.conf
file into which I copied my Kitty config fieles, except those configs related to themes.
Example
# Set your personal kitty configuration here
# ---------------------------------------------------------
# Key bindings
# Open new tab in current window
map ctrl+shift+t launch --cwd=current --type=tab
# ---------------------------------------------------------
# ---------------------------------------------------------
# Tab styles
# fade slant separator powerline custom hidden
tab_bar_style powerline
tab_bar_align left
tab_powerline_style angled
# --------------------------------------------------------
# ---------------------------------------------------------
# Fonts
# BEGIN_KITTY_FONTS
font_family family="FiraCode Nerd Font"
bold_font auto
italic_font auto
bold_italic_font auto
# END_KITTY_FONTS
font_size 12
# adjust_line_height 0
# adjust_column_width 0
# adjust_baseline 0
# ---------------------------------------------------------
My Kitty config uses FirCode font which needed to be installed for Arch Linux
Zshλ︎
The ~/.zshrc
file added by HyDE can be used to add personal configurations which should not be overwritten by HyDE updates.
HyDE contains its specific configuration in ~/.hyde.zshrc
and ~/.zshenv
which shouldnt be used for personal configuration as they would be overwritten by HyDE updates.
.zshrc user configuration
# Add user configurations here
# For HyDE not to touch your beloved configurations,
# we added 2 files to the project structure:
# 1. ~/.hyde.zshrc - for customizing the shell related hyde configurations
# 2. ~/.zshenv - for updating the zsh environment variables handled by HyDE // this will be modified across updates
# Plugins
# oh-my-zsh plugins are loaded in ~/.hyde.zshrc file, see the file for more information
# Aliases
# Add aliases here
[[ ! -f ~/.config/shell-aliases ]] || source ~/.config/shell-aliases # (1)!
# This is your file
# Add your configurations here
- Practicalli aliases included by loading
~/.config/shell-aliases
Screencastsλ︎
OBS is an advanced tool for screen-casts and live broadcasts and supports Wayland when using Pipedrive.
HyDE mentions these Wayland based recording packages:
- wl-screenrec a high performance recorder making use of the GPU.
- wf-recorder basic recording tool
- kooha
Kooha is a simple screen recorder with a minimal interface. You can simply click the record button without having to configure a bunch of settings.
The main features of Kooha include the following:
- 🎙️ Record microphone, desktop audio, or both at the same time
- 📼 Support for WebM, MP4, GIF, and Matroska formats
- 🖥️ Select a monitor or a portion of the screen to record
- 🛠️ Configurable saving location, pointer visibility, frame rate, and delay
- 🚀 Experimental hardware-accelerated encoding
Install Kooha screen recorder in Arch Linux
Kooha saves the recording using the WebM video container format. This format is not supported without installing ... packages.
I assume Opus tools is required and I use Opus format for music and audiobooks.
Kooha generates error
An error occurred each time using the default WebM container (2 attempts) although a .webm
video was created both times. The error occurred even after insatlling the WebM package.
The error did not occur when using the Matroska format.
There does not seem to be a webm package in the Arch Linux repositories:
❯ sudo pacman -Sy webm
:: Synchronizing package databases...
core is up to date
extra is up to date
multilib is up to date
chaotic-aur is up to date
error: target not found: webm
Searching packages does not seem to show relevant a package
❯ sudo pacman -Ss webm
extra/firefox-extension-mailvelope 5.2.0-1 (firefox-addons)
Browser extension for OpenPGP encryption with Webmail
extra/ruby-webmock 3.24.0-1
Allows stubbing HTTP requests and setting expectations on HTTP requests.
extra/texlive-plaingeneric 2024.2-4 (texlive)
TeX Live - Plain (La)TeX packages
extra/webp-pixbuf-loader 0.2.7-1
WebM GDK Pixbuf Loader library
chaotic-aur/webmin 2.202-1
A web-based administration interface for Unix systems
AUR fails and not sure why as there is a webm package
❯ yay -Sy webm-git
:: Synchronizing package databases...
core is up to date
extra is up to date
multilib is up to date
chaotic-aur is up to date
-> No AUR package found for webm-git
there is nothing to do
The package name was incorrect
Details of installing WebM from Arch Linux User Repository
❯ yay -Sy webm
[sudo] password for practicalli:
:: Synchronizing package databases...
core is up to date
extra is up to date
multilib is up to date
chaotic-aur 651.0 KiB 295 KiB/s 00:02 [-------------------------------------------------------------] 100%
AUR Explicit (1): webm-0.12.1-1
:: (1/1) Downloaded PKGBUILD: webm
1 webm (Build Files Exist)
==> Packages to cleanBuild?
==> [N]one [A]ll [Ab]ort [I]nstalled [No]tInstalled or (1 2 3, 1-3, ^4)
==> a
:: Deleting (1/1): /home/practicalli/.cache/yay/webm
HEAD is now at a4962ce bikeshedding
1 webm (Build Files Exist)
==> Diffs to show?
==> [N]one [A]ll [Ab]ort [I]nstalled [No]tInstalled or (1 2 3, 1-3, ^4)
==> A
diff --git /home/practicalli/.cache/yay/webm/PKGBUILD /home/practicalli/.cache/yay/webm/PKGBUILD
new file mode 100644
index 0000000..cc8d166
--- /dev/null
+++ /home/practicalli/.cache/yay/webm/PKGBUILD
@@ -0,0 +1,34 @@
+# Maintainer: neeshy <neeshy@tfwno.gf>
+pkgname=webm
+pkgver=0.12.1
+pkgrel=1
+pkgdesc="Cross-platform command-line WebM converter"
+arch=('any')
+url="https://github.com/Kagami/webm.py"
+license=('custom:CC0')
+depends=('python' 'ffmpeg')
+optdepends=('mpv: for interactive mode')
+makedepends=('python-setuptools')
+source=("https://github.com/Kagami/webm.py/archive/v$pkgver.tar.gz"
+ "mpv-options.patch"
+ "drop-python2-support.patch")
+sha256sums=('786244edc928583a49e210cbb5533d192bf9ad31bc82eb0a66d393964db119c8'
+ 'ddaf7c409fb7e0d6a50c638338b1d18fb2df3f7555503d6c9d0e5054703ad958'
+ '70308ed9a2f0a3d9fc445fec5a8cebf8f8e7fb51686af2a9fcc77953094bce0d')
+
+prepare() {
+ cd "$srcdir/webm.py-$pkgver"
+ patch -Np1 -i "$srcdir/mpv-options.patch"
+ patch -Np1 -i "$srcdir/drop-python2-support.patch"
+}
+
+build() {
+ cd "$srcdir/webm.py-$pkgver"
+ python setup.py build
+}
+
+package() {
+ cd "$srcdir/webm.py-$pkgver"
+ python setup.py install --root="$pkgdir/" --optimize=1 --skip-build
+ install -Dm644 COPYING "$pkgdir/usr/share/licenses/$pkgname/COPYING"
+}
diff --git /home/practicalli/.cache/yay/webm/drop-python2-support.patch /home/practicalli/.cache/yay/webm/drop-python2-support.patch
:: Proceed with install? [Y/n] y
==> Making package: webm 0.12.1-1 (Sun 02 Feb 2025 01:04:30 AM UTC)
==> Retrieving sources...
-> Downloading v0.12.1.tar.gz...
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
100 19489 0 19489 0 0 30446 0 --:--:-- --:--:-- --:--:-- 30446
-> Found mpv-options.patch
-> Found drop-python2-support.patch
==> WARNING: Skipping verification of source file PGP signatures.
==> Validating source files with sha256sums...
❯ yay -Sy webm
[sudo] password for practicalli:
:: Synchronizing package databases...
core is up to date
extra is up to date
multilib is up to date
chaotic-aur 651.0 KiB 295 KiB/s 00:02 [-------------------------------------------------------------] 100%
AUR Explicit (1): webm-0.12.1-1
:: (1/1) Downloaded PKGBUILD: webm
1 webm (Build Files Exist)
==> Packages to cleanBuild?
==> [N]one [A]ll [Ab]ort [I]nstalled [No]tInstalled or (1 2 3, 1-3, ^4)
==> a
:: Deleting (1/1): /home/practicalli/.cache/yay/webm
HEAD is now at a4962ce bikeshedding
1 webm (Build Files Exist)
==> Diffs to show?
==> [N]one [A]ll [Ab]ort [I]nstalled [No]tInstalled or (1 2 3, 1-3, ^4)
==> A
diff --git /home/practicalli/.cache/yay/webm/PKGBUILD /home/practicalli/.cache/yay/webm/PKGBUILD
new file mode 100644
index 0000000..cc8d166
--- /dev/null
+++ /home/practicalli/.cache/yay/webm/PKGBUILD
@@ -0,0 +1,34 @@
+# Maintainer: neeshy <neeshy@tfwno.gf>
+pkgname=webm
+pkgver=0.12.1
+pkgrel=1
+pkgdesc="Cross-platform command-line WebM converter"
+arch=('any')
+url="https://github.com/Kagami/webm.py"
+license=('custom:CC0')
+depends=('python' 'ffmpeg')
+optdepends=('mpv: for interactive mode')
+makedepends=('python-setuptools')
+source=("https://github.com/Kagami/webm.py/archive/v$pkgver.tar.gz"
+ "mpv-options.patch"
+ "drop-python2-support.patch")
+sha256sums=('786244edc928583a49e210cbb5533d192bf9ad31bc82eb0a66d393964db119c8'
+ 'ddaf7c409fb7e0d6a50c638338b1d18fb2df3f7555503d6c9d0e5054703ad958'
+ '70308ed9a2f0a3d9fc445fec5a8cebf8f8e7fb51686af2a9fcc77953094bce0d')
+
+prepare() {
+ cd "$srcdir/webm.py-$pkgver"
+ patch -Np1 -i "$srcdir/mpv-options.patch"
+ patch -Np1 -i "$srcdir/drop-python2-support.patch"
+}
+
+build() {
+ cd "$srcdir/webm.py-$pkgver"
+ python setup.py build
+}
+
+package() {
+ cd "$srcdir/webm.py-$pkgver"
+ python setup.py install --root="$pkgdir/" --optimize=1 --skip-build
+ install -Dm644 COPYING "$pkgdir/usr/share/licenses/$pkgname/COPYING"
+}
diff --git /home/practicalli/.cache/yay/webm/drop-python2-support.patch /home/practicalli/.cache/yay/webm/drop-python2-support.patch
:: Proceed with install? [Y/n] y
==> Making package: webm 0.12.1-1 (Sun 02 Feb 2025 01:04:30 AM UTC)
==> Retrieving sources...
-> Downloading v0.12.1.tar.gz...
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
100 19489 0 19489 0 0 30446 0 --:--:-- --:--:-- --:--:-- 30446
-> Found mpv-options.patch
-> Found drop-python2-support.patch
==> WARNING: Skipping verification of source file PGP signatures.
==> Validating source files with sha256sums...
v0.12.1.tar.gz ... Passed
mpv-options.patch ... Passed
drop-python2-support.patch ... Passed
:: (1/1) Parsing SRCINFO: webm
==> Making package: webm 0.12.1-1 (Sun 02 Feb 2025 01:04:32 AM UTC)
==> Checking runtime dependencies...
==> Checking buildtime dependencies...
==> Retrieving sources...
-> Found v0.12.1.tar.gz
-> Found mpv-options.patch
-> Found drop-python2-support.patch
==> Validating source files with sha256sums...
v0.12.1.tar.gz ... Passed
mpv-options.patch ... Passed
drop-python2-support.patch ... Passed
==> Removing existing $srcdir/ directory...
==> Extracting sources...
-> Extracting v0.12.1.tar.gz with bsdtar
==> Starting prepare()...
patching file webm.py
patching file webm.py
==> Sources are ready.
==> Making package: webm 0.12.1-1 (Sun 02 Feb 2025 01:04:34 AM UTC)
==> Checking runtime dependencies...
==> Checking buildtime dependencies...
==> WARNING: Using existing $srcdir/ tree
==> Starting build()...
running build
running build_py
creating build/lib
copying webm.py -> build/lib
==> Entering fakeroot environment...
==> Starting package()...
running install
/usr/lib/python3.13/site-packages/setuptools/_distutils/cmd.py:66: SetuptoolsDeprecationWarning: setup.py install is deprecated.
!!
********************************************************************************
Please avoid running ``setup.py`` directly.
Instead, use pypa/build, pypa/installer or other
standards-based tools.
See https://blog.ganssle.io/articles/2021/10/setup-py-deprecated.html for details.
********************************************************************************
!!
self.initialize_options()
running install_lib
creating /home/practicalli/.cache/yay/webm/pkg/webm/usr/lib/python3.13/site-packages
copying build/lib/webm.py -> /home/practicalli/.cache/yay/webm/pkg/webm/usr/lib/python3.13/site-packages
byte-compiling /home/practicalli/.cache/yay/webm/pkg/webm/usr/lib/python3.13/site-packages/webm.py to webm.cpython-313.pyc
writing byte-compilation script '/tmp/tmpjtdo_3jw.py'
/usr/bin/python /tmp/tmpjtdo_3jw.py
removing /tmp/tmpjtdo_3jw.py
running install_egg_info
running egg_info
creating webm.egg-info
writing webm.egg-info/PKG-INFO
writing dependency_links to webm.egg-info/dependency_links.txt
writing entry points to webm.egg-info/entry_points.txt
writing top-level names to webm.egg-info/top_level.txt
writing manifest file 'webm.egg-info/SOURCES.txt'
reading manifest file 'webm.egg-info/SOURCES.txt'
adding license file 'COPYING'
writing manifest file 'webm.egg-info/SOURCES.txt'
Copying webm.egg-info to /home/practicalli/.cache/yay/webm/pkg/webm/usr/lib/python3.13/site-packages/webm-0.12.1-py3.13.egg-info
running install_scripts
Installing webm script to /home/practicalli/.cache/yay/webm/pkg/webm/usr/bin
==> Tidying install...
-> Removing libtool files...
-> Purging unwanted files...
-> Removing static library files...
-> Stripping unneeded symbols from binaries and libraries...
-> Compressing man and info pages...
==> Checking for packaging issues...
==> Creating package "webm"...
-> Generating .PKGINFO file...
-> Generating .BUILDINFO file...
-> Generating .MTREE file...
-> Compressing package...
==> Leaving fakeroot environment.
==> Finished making: webm 0.12.1-1 (Sun 02 Feb 2025 01:04:36 AM UTC)
==> Cleaning up...
loading packages...
resolving dependencies...
looking for conflicting packages...
Package (1) New Version Net Change
webm 0.12.1-1 0.18 MiB
Total Installed Size: 0.18 MiB
:: Proceed with installation? [Y/n]
(1/1) checking keys in keyring [-------------------------------------------------------------] 100%
(1/1) checking package integrity [-------------------------------------------------------------] 100%
(1/1) loading package files [-------------------------------------------------------------] 100%
(1/1) checking for file conflicts [-------------------------------------------------------------] 100%
(1/1) checking available disk space [-------------------------------------------------------------] 100%
:: Processing package changes...
(1/1) installing webm [-------------------------------------------------------------] 100%
Optional dependencies for webm
mpv: for interactive mode
:: Running post-transaction hooks...
(1/1) Arming ConditionNeedsUpdate...
v0.12.1.tar.gz ... Passed
mpv-options.patch ... Passed
drop-python2-support.patch ... Passed
:: (1/1) Parsing SRCINFO: webm
==> Making package: webm 0.12.1-1 (Sun 02 Feb 2025 01:04:32 AM UTC)
==> Checking runtime dependencies...
==> Checking buildtime dependencies...
==> Retrieving sources...
-> Found v0.12.1.tar.gz
-> Found mpv-options.patch
-> Found drop-python2-support.patch
==> Validating source files with sha256sums...
v0.12.1.tar.gz ... Passed
mpv-options.patch ... Passed
drop-python2-support.patch ... Passed
==> Removing existing $srcdir/ directory...
==> Extracting sources...
-> Extracting v0.12.1.tar.gz with bsdtar
==> Starting prepare()...
patching file webm.py
patching file webm.py
==> Sources are ready.
==> Making package: webm 0.12.1-1 (Sun 02 Feb 2025 01:04:34 AM UTC)
==> Checking runtime dependencies...
==> Checking buildtime dependencies...
==> WARNING: Using existing $srcdir/ tree
==> Starting build()...
running build
running build_py
creating build/lib
copying webm.py -> build/lib
==> Entering fakeroot environment...
==> Starting package()...
running install
/usr/lib/python3.13/site-packages/setuptools/_distutils/cmd.py:66: SetuptoolsDeprecationWarning: setup.py install is deprecated.
!!
********************************************************************************
Please avoid running ``setup.py`` directly.
Instead, use pypa/build, pypa/installer or other
standards-based tools.
See https://blog.ganssle.io/articles/2021/10/setup-py-deprecated.html for details.
********************************************************************************
!!
self.initialize_options()
running install_lib
creating /home/practicalli/.cache/yay/webm/pkg/webm/usr/lib/python3.13/site-packages
copying build/lib/webm.py -> /home/practicalli/.cache/yay/webm/pkg/webm/usr/lib/python3.13/site-packages
byte-compiling /home/practicalli/.cache/yay/webm/pkg/webm/usr/lib/python3.13/site-packages/webm.py to webm.cpython-313.pyc
writing byte-compilation script '/tmp/tmpjtdo_3jw.py'
/usr/bin/python /tmp/tmpjtdo_3jw.py
removing /tmp/tmpjtdo_3jw.py
running install_egg_info
running egg_info
creating webm.egg-info
writing webm.egg-info/PKG-INFO
writing dependency_links to webm.egg-info/dependency_links.txt
writing entry points to webm.egg-info/entry_points.txt
writing top-level names to webm.egg-info/top_level.txt
writing manifest file 'webm.egg-info/SOURCES.txt'
reading manifest file 'webm.egg-info/SOURCES.txt'
adding license file 'COPYING'
writing manifest file 'webm.egg-info/SOURCES.txt'
Copying webm.egg-info to /home/practicalli/.cache/yay/webm/pkg/webm/usr/lib/python3.13/site-packages/webm-0.12.1-py3.13.egg-info
running install_scripts
Installing webm script to /home/practicalli/.cache/yay/webm/pkg/webm/usr/bin
==> Tidying install...
-> Removing libtool files...
-> Purging unwanted files...
-> Removing static library files...
-> Stripping unneeded symbols from binaries and libraries...
-> Compressing man and info pages...
==> Checking for packaging issues...
==> Creating package "webm"...
-> Generating .PKGINFO file...
-> Generating .BUILDINFO file...
-> Generating .MTREE file...
-> Compressing package...
==> Leaving fakeroot environment.
==> Finished making: webm 0.12.1-1 (Sun 02 Feb 2025 01:04:36 AM UTC)
==> Cleaning up...
loading packages...
resolving dependencies...
looking for conflicting packages...
Package (1) New Version Net Change
webm 0.12.1-1 0.18 MiB
Total Installed Size: 0.18 MiB
:: Proceed with installation? [Y/n]
(1/1) checking keys in keyring [-------------------------------------------------------------] 100%
(1/1) checking package integrity [-------------------------------------------------------------] 100%
(1/1) loading package files [-------------------------------------------------------------] 100%
(1/1) checking for file conflicts [-------------------------------------------------------------] 100%
(1/1) checking available disk space [-------------------------------------------------------------] 100%
:: Processing package changes...
(1/1) installing webm [-------------------------------------------------------------] 100%
Optional dependencies for webm
mpv: for interactive mode
:: Running post-transaction hooks...
(1/1) Arming ConditionNeedsUpdate...
Opus tools package provides encoder and decoder tools for the Opus audio format.
Something installed the opus codec already.
❯ sudo pacman -Ss opus
extra/libopusenc 0.2.1-5
High-level API for encoding .opus files
extra/opus 1.5.2-1 [installed]
Totally open, royalty-free, highly versatile audio codec
extra/opus-docs 1.5.2-1
Totally open, royalty-free, highly versatile audio codec (documentation)
extra/opus-tools 0.2-6
Collection of tools for Opus audio codec
extra/opusfile 0.12-4
Library for opening, seeking, and decoding .opus files
multilib/lib32-opus 1.5.2-1
Totally open, royalty-free, highly versatile audio codec (32-bit)
I installed Opus tools as that I what I add in a Debian system.
NFS and NASλ︎
I have several Network Attached Storage devices to hold work and entertainment.
I use NFS shares on the NAS devices which feels the most reliable way to connect laptops and computers to share files.
Arch Linux requires the nfs-utils
package to connect to NFS shares.
/etc/hosts
was updated to define local network names and IP addresses for each NAS device.
Host entries for NAS devices
Configure 'static' network address for NAS devices
Configure the local network DHCP service to always issue the same IP address lease. Update the local network router network settings and assign the Ethernet adapter MAC address of each NAS device to a specific IP address)
Alternativelyc, configure each NAS device to have a static IP address (and ensure the local DHCP server does not try and alocate the NAS static IP addresses to any other network device by setting the DHCP lease IP address range).
Create directories that will be the mount points for each NFS share.
/etc/fstab
was updated to add each NFS share connection.
Host entries for NAS devices
The NFS share can now be mounted using the directory name, e.g. /media/ents
Nautilus file explorer shows mount points
NFS shares defined in /etc/fstab
automatically show in the Gnome Nautilus file explorer, sudo -Sy nautilus
Click on the NFS share name in Nautilus to mount the share and access the files it contains.
Thank you.