---
title: Development Environment
---

This page documents Naomi's local development environment. The information here is provided to allow contributors to mirror the environment as closely as possible, ensuring the smoothest developer experience.

## 1. System Information

Naomi's local environment runs on the Arch Linux kernel.

### 1.1. `hyfetch`

This is the current diagnostic report from `hyfetch`.

```bash title="hyfetch"
naomi@
------
OS: Arch Linux x86_64
├─Kernel: 6.16.1-arch1-1
├─Locale: en_GB.UTF-8
├─Shell: /usr/bin/zsh 5.9
├─WM: sway version 1.10.1
├─Terminal: ghostty
Host: 20TK0049US ThinkPad X1 Extreme Gen 3
├─BIOS: LENOVO 1.30 (08/29/2023)
├─CPU: Intel i7-10850H (12) @ 5.1GHz [67.0°on]
├─GPU: NVIDIA GeForce GTX 1650 Ti Mobile
├─Disk: /home: 247G/888G (30%)
├───Root: /: 44G/49G (95%)
├───Boot: /boot: 350M/1022M (35%)
└─Memory: 8.79 GiB / 19.22 GiB (45%)

Programming Languages
---------------------
Bash: 5.3.3(1)-release
Clang: 20.1.8
C++: 15.2.1
Dart: 3.8.1
└─Flutter
Dotnet: 9.0.109
└─C-sharp Compiler: 3.9.0-6.21124.20
Go: 1.24.6
Haskell: 9.4.8
└─Cabal: 3.8.1.0
Java: version
├─Gradle: 8.14.3
└─Kotlin: 2.2.0-release-294
Lua: 5.4.8
PHP: 8.4.11
Python: 3.13.7
└─PIP: 25.2
Node: v24.6.0
├─NPM: 11.5.2
├─Yarn: 1.22.22
└─PNPM: 10.12.3
Ruby: 3.4.5
Rust: 1.89.0
├─Rustup
└─Cargo: 1.89.0
TypeScript: 5.9.0-dev
Zig: 0.14.1

Databases
---------
MongoDB: v8.0.12
└─Mongo Shell: v8.0.12
MySQL: 9.3.0
PostgreSQL: 17.5
SQlite: 3.50.4

Tools
-----
Browser: Zen 1.14.11b
Editor: Emacs 30.2
└─Nano: 8.5
```

## 2. Packages

Naomi uses the following packages.

### 2.1. Foreign Packages

These packages come from unofficial repositories, such as the AUR. This list is generated with `yay -Qm`.

<details>
  <summary>Expand List</summary>

```txt frame="terminal" title="yay -Qm"
1password 8.11.6-27
1password-cli 2.31.1-1
affine-bin 0.24.1-1
affine-bin-debug 0.24.1-1
angular-cli 20.1.6-1
chatgpt-desktop-bin 1.1.0-1
chatgpt-desktop-bin-debug 1.1.0-1
curl-impersonate-chrome-debug 1:1.0.0-1
cursor-bin 1.4.5-9
electron33 33.4.11-2
espanso-wayland 2.2.4-1
google-chat-linux-bin 5.29.23-1
google-chat-linux-bin-debug 5.29.23-1
google-messages 1.4.2-2
google-messages-debug 1.4.2-2
gpu-usage-waybar-git 0.1.19.r15.g98b2a91-1
insomnium-bin 0.2.3-1
insomnium-bin-debug 0.2.3-1
lrexlib-pcre5.1 2.9.0-2
lrexlib-pcre5.1-debug 2.9.0-2
lua-yajl 2.0-2
lua-yajl-debug 2.0-2
lua51-lcf 5.1-3
lua51-sql-sqlite 2.3.0-4
lua51-sql-sqlite-debug 2.3.0-4
luazip5.1 1.2.7-1
luazip5.1-debug 1.2.7-1
mailspring-bin-debug 1.15.1-2
mommy 1.6.0-1
mpris-discord-rpc-bin 0.5.1-1
mpris-discord-rpc-bin-debug 0.5.1-1
mudlet-bin 4.19.1-1
open-dyslexic-fonts 0.91.12-2
phonon-qt6-mpv 0.1.0-3
python-audioop-lts-debug 0.2.1-1
python-curl-cffi-debug 0.11.1-2
python-deadlib 3.13.0-2
python-edge-tts 7.0.2-1
python-gpt4all 2.2.1-1
python-gpt4all-debug 2.2.1-1
python-livepng 0.1.8-3
python-pocketsphinx 5.0.4-1
python-safetensors 0.6.2-1
python-safetensors-debug 0.6.2-1
python-sounddevice 0.5.2-1
python-speechrecognition 3.14.3-1
python-speechrecognition-debug 3.14.3-1
python-voicevox-client 0.4.1-1
python-wordllama 0.3.9-1
python-wordllama-debug 0.3.9-1
roam 174.0.0.beta001-1
shellspec 0.28.1-3
stripe-cli-bin 1.29.0-1
stripe-cli-bin-debug 1.29.0-1
vibe-bin 3.0.5-2
vibe-bin-debug 3.0.5-2
whatsapp-for-linux 1.7.0-1.3
windscribe-v2-bin 2.16.14-1
xf86-video-vmware 13.4.0-4
yay-debug 12.5.0-1
```

</details>

### 2.2. Explicit Installations

These are all of the packages Naomi has specifically installed. This list is generated with `yay -Qe`.

<details>
  <summary>Expand List</summary>

```txt frame="terminal" title="yay -Qe"
1password 8.11.6-27
1password-cli 2.31.1-1
7zip 25.01-1
activitywatch-bin 0.13.2-1.1
affine-bin 0.24.1-1
alsa-utils 1.2.14-1
amberol 2025.1-2
android-tools 35.0.2-17
angular-cli 20.1.6-1
base 3-2
base-devel 1-2
bash-language-server 5.6.0-1
bind 9.20.11-1
brave-bin 1:1.81.135-1
brightnessctl 0.5.1-3
btop 1.4.4-1
cabal-install 3.8.1.0-74
calc 2.15.1.1-1
certbot 4.2.0-1
certbot-dns-cloudflare 4.2.0-1
chaotic-keyring 20250614-1
chaotic-mirrorlist 20240724-3
chatgpt-desktop-bin 1.1.0-1
clamav 1.4.3-1
cliphist 1:0.6.1-1
cloudflared 2025.8.0-1
cmus 2.12.0-3
cursor-bin 1.4.5-9
dart 3.8.1-1
ddcci-driver-linux-dkms 0.4.5-1.1
discord 1:0.0.105-1
dmenu 5.4-1
docker 1:28.3.3-1
doctl 1.139.0-1
dotnet-host 9.0.8.sdk109-1
dotnet-runtime 9.0.8.sdk109-1
dotnet-runtime-6.0 6.0.36.sdk136-2
dotnet-runtime-7.0 7.0.20.sdk120-2
dotnet-runtime-8.0 8.0.19.sdk119-1
dotnet-sdk 9.0.8.sdk109-1
dotnet-sdk-6.0 6.0.36.sdk136-2
dotnet-sdk-7.0 7.0.20.sdk120-2
dotnet-sdk-8.0 8.0.19.sdk119-1
downgrade 11.5.2-1
dunst 1.12.2-1
efibootmgr 18-3
emacs 30.2-1
eslint-language-server 3.0.16-1
espanso-wayland 2.2.4-1
evolution 3.56.2-2
eza 0.23.0-1
flyctl-bin 0.3.107-1
foot 1.23.1-1
fprintd 1.94.5-1
ghc 9.4.8-1
ghostty 1.1.3-1
gimp 3.0.4-3
git 2.50.1-3
github-cli 2.76.2-1
google-chat-linux-bin 5.29.23-1
google-messages 1.4.2-2
gpu-usage-waybar-git 0.1.19.r15.g98b2a91-1
grim 1.5.0-2
gst-plugin-pipewire 1:1.4.7-1
gwenview 25.08.0-1
htop 3.4.1-1
hyfetch 1.99.0-2
insomnium-bin 0.2.3-1
intel-media-driver 25.2.5-1
intel-ucode 20250812-1
iwd 3.9-1
kdenlive 25.08.0-1
kotlin 2.2.0-2
kwallet 6.17.0-1
libgnome-keyring 1:3.12.0+r14+g23438cc-1
libpulse 17.0+r43+g3e2bb8a1e-1
libreoffice-fresh 25.2.5-2
libva-intel-driver 2.4.1-5
light 1.2.2-5
linux 6.16.1.arch1-1
linux-firmware 20250808-1
moc-pulse 2.5.2-17
mommy 1.6.0-1
mongodb 8.0.12-2
mono 6.12.0.206-1
mpc 0.35-1
mpd 0.24.5-1
mpris-discord-rpc-bin 0.5.1-1
mudlet-bin 4.19.1-1
musescore 4.5.2-1
mysql 9.3.0-1
nano 8.5-1
nodejs 24.6.0-1
noto-fonts 1:2025.08.01-1
noto-fonts-cjk 20240730-1
noto-fonts-emoji 1:2.048-1
npm 11.5.2-1
npm-check-updates 18.0.2-1
obs-studio 31.1.2-1
oh-my-zsh-git r7574.736632228-1
ollama 0.11.4-1
open-dyslexic-fonts 0.91.12-2
openssh 10.0p1-4
otf-opendyslexic-nerd 3.4.0-1
pavucontrol 1:6.1-1
perl-image-exiftool 13.30-3
php 8.4.11-1
pipewire 1:1.4.7-1
pipewire-alsa 1:1.4.7-1
pipewire-jack 1:1.4.7-1
pipewire-pulse 1:1.4.7-1
polkit-gnome 0.105-11
polkit-qt6 0.200.0-1
postgresql 17.5-5
proton-vpn-gtk-app 4.9.7-1
python-adb-shell 0.4.4-3
python-lsp-server 1.12.2-1
python-openai-whisper 20250625-1
python-pipenv 2025.0.4-1
python-pyquery 2.0.1-1
riseup-vpn 0.24.10-1.5
roam 174.0.0.beta001-1
rofimoji 6.6.0-2
ruby 3.4.5-1
rust 1:1.89.0-1
sddm 0.21.0-6
signal-desktop 7.66.0-1
slack-desktop 4.45.64-1
slurp 1.5.0-1
smartmontools 7.5-1
sof-firmware 2025.05-1
spotdl 4.4.0-1
starship 1.23.0-1
stripe-cli-bin 1.29.0-1
sway 1:1.10.1-3
swaybg 1.2.1-1
swayidle 1.8.0-2
swaylock-fprintd-git r314.ffd639a-2.4
tea 0.10.1-1
thefuck 3.32-11
thermald 2.5.9-3
thunar 4.20.4-1
thunderbird 141.0-1
typescript 5.9.2-1
typescript-language-server 4.4.0-1
universal-android-debloater-bin 1.1.1-2
uv 0.8.12-1
vibe-bin 3.0.5-2
vim 9.1.1623-1
visual-studio-code-bin 1.103.1-1
vulkan-intel 1:25.1.7-1
vulkan-radeon 1:25.1.7-1
waterfox-bin 6.5.11-1
waybar 0.14.0-1
waybar-module-pacman-updates-git 0.2.9-1
wget 1.25.0-2
whatsapp-for-linux 1.7.0-1.3
windscribe-v2-bin 2.16.14-1
wine 10.12-1
wireless_tools 30.pre9-4
wireplumber 0.5.10-1
wlr-randr 0.5.0-1
wofi 1.5.1-1
wpa_supplicant 2:2.11-3
xdg-desktop-portal-wlr 0.7.1-1
xdg-utils 1.2.1-1
xf86-video-amdgpu 25.0.0-1
xf86-video-ati 1:22.0.0-2
xf86-video-nouveau 1.0.18-1
xf86-video-vmware 13.4.0-4
xorg-server 21.1.18-2
xorg-xinit 1.4.4-1
xorg-xwayland 24.1.8-1
yaml-language-server 1.19.0-1
yarn 1.22.22-2
yay 12.5.0-1
yay-debug 12.5.0-1
zen-browser-bin 1.14.11b-1
zig 0.14.1-2
zip 3.0-11
zoom 6.5.8-1
zram-generator 1.2.1-1
```

</details>

### 2.3. Pinned Packages

These packages have updates ignored, due to incompatibility issues. This list is generated with `grep "^IgnorePkg" /etc/pacman.conf`.

```ini frame="code" title="pacman.conf"
IgnorePkg = sway
```

### 2.4. All Packages

This is a complete list of all packages on the machine. This list is generated with `yay -Q`.

:::caution
This list is quite large.
:::

<details>
  <summary>Expand List</summary>

```txt frame="terminal" title="yay -Q"
1password 8.11.6-27
1password-cli 2.31.1-1
7zip 25.01-1
aalib 1.4rc5-19
abseil-cpp 20250512.1-1
accounts-qml-module 0.7-6
accountsservice 23.13.9-2
acl 2.3.2-1
activitywatch-bin 0.13.2-1.1
adwaita-cursors 48.1-1
adwaita-fonts 49.0-2
adwaita-icon-theme 48.1-1
adwaita-icon-theme-legacy 46.2-3
affine-bin 0.24.1-1
affine-bin-debug 0.24.1-1
alsa-card-profiles 1:1.4.7-1
alsa-lib 1.2.14-1
alsa-topology-conf 1.2.5.1-4
alsa-ucm-conf 1.2.14-2
alsa-utils 1.2.14-1
amberol 2025.1-2
android-tools 35.0.2-17
android-udev 20250525-1
angular-cli 20.1.6-1
aom 3.12.1-1
appstream 1.0.5-2
appstream-glib 0.8.3-2
archlinux-keyring 20250807.1-1
argon2 20190702-6
at-spi2-core 2.56.4-1
atkmm 2.28.4-1
attica 6.17.0-1
attr 2.5.2-1
audit 4.0.5-1
autoconf 2.72-1
automake 1.18.1-1
avahi 1:0.9rc2-1
ayatana-ido 0.10.4-1
babl 0.1.114-1
baloo 6.17.0-1
base 3-2
base-devel 1-2
bash 5.3.3-2
bash-language-server 5.6.0-1
bind 9.20.11-1
binutils 2.45+r29+g2b2e51a31ec7-1
bison 3.8.2-8
blas 3.12.1-2
bluez-libs 5.83-1
boost 1.88.0-3
boost-libs 1.88.0-3
botan2 2.19.5-2
brave-bin 1:1.81.135-1
breeze-icons 6.17.0-1
brightnessctl 0.5.1-3
brotli 1.1.0-3
btop 1.4.4-1
bubblewrap 0.11.0-1
bzip2 1.0.8-6
c-ares 1.34.5-1
ca-certificates 20240618-1
ca-certificates-mozilla 3.115-1
ca-certificates-utils 20240618-1
cabal-install 3.8.1.0-74
cairo 1.18.4-1
cairomm 1.14.5-1
cairomm-1.16 1.18.0-1
calc 2.15.1.1-1
cantarell-fonts 1:0.303.1-2
cbindgen 0.29.0-1
cblas 3.12.1-2
cdparanoia 10.2-9
certbot 4.2.0-1
certbot-dns-cloudflare 4.2.0-1
cfitsio 1:4.6.2-1
chaotic-keyring 20250614-1
chaotic-mirrorlist 20240724-3
chatgpt-desktop-bin 1.1.0-1
chatgpt-desktop-bin-debug 1.1.0-1
chromaprint 1.5.1-10
clamav 1.4.3-1
clang 20.1.8-1
clang18 18.1.8-2
clang19 19.1.7-1
cliphist 1:0.6.1-1
cloudflared 2025.8.0-1
clucene 2.3.3.4-16
cmake 4.0.3-1
cmark 0.31.1-1
cmus 2.12.0-3
colord 1.4.8-1
compface 1.5.2-13
compiler-rt 20.1.8-1
compiler-rt18 18.1.8-1
compiler-rt19 19.1.7-1
containerd 2.1.4-1
convertlit 1.8-12
coreutils 9.7-1
cppdap 1.58.0-2
cryptsetup 2.8.0-1
curl 8.15.0-1
curl-impersonate-chrome-debug 1:1.0.0-1
cursor-bin 1.4.5-9
dart 3.8.1-1
dav1d 1.5.1-1
db5.3 5.3.28-5
dbus 1.16.2-1
dbus-broker 37-2
dbus-broker-units 37-2
dbus-glib 0.114-1
dbus-units 37-2
dconf 0.40.0-3
ddcci-driver-linux-dkms 0.4.5-1.1
debugedit 5.2-1
default-cursors 3-1
desktop-file-utils 0.28-1
device-mapper 2.03.34-1
diffutils 3.12-2
discord 1:0.0.105-1
dkms 3.2.1-1
dmenu 5.4-1
dmidecode 3.6-1
dnssec-anchors 20250524-1
docker 1:28.3.3-1
doctl 1.139.0-1
dotnet-host 9.0.8.sdk109-1
dotnet-runtime 9.0.8.sdk109-1
dotnet-runtime-6.0 6.0.36.sdk136-2
dotnet-runtime-7.0 7.0.20.sdk120-2
dotnet-runtime-8.0 8.0.19.sdk119-1
dotnet-sdk 9.0.8.sdk109-1
dotnet-sdk-6.0 6.0.36.sdk136-2
dotnet-sdk-7.0 7.0.20.sdk120-2
dotnet-sdk-8.0 8.0.19.sdk119-1
dotnet-targeting-pack 9.0.8.sdk109-1
dotnet-targeting-pack-6.0 6.0.36.sdk136-2
dotnet-targeting-pack-7.0 7.0.20.sdk120-2
dotnet-targeting-pack-8.0 8.0.19.sdk119-1
double-conversion 3.3.1-1
downgrade 11.5.2-1
duktape 2.7.0-7
dunst 1.12.2-1
e2fsprogs 1.47.3-1
ebook-tools 0.2.2-9
efibootmgr 18-3
efivar 39-1
egl-gbm 1.1.2.1-1
egl-wayland 4:1.1.20-1
egl-x11 1.0.3-1
eglexternalplatform 1.2.1-1
eigen 3.4.0-2
electron33 33.4.11-2
electron34 34.5.8-1
electron35 35.7.4-1
ell 0.79-1
emacs 30.2-1
enchant 2.8.12-1
eslint-language-server 3.0.16-1
espanso-wayland 2.2.4-1
evolution 3.56.2-2
evolution-data-server 3.56.2-2
exempi 2.6.6-2
exiv2 0.28.5-1
exo 4.20.0-2
expat 2.7.1-1
extra-cmake-modules 6.17.0-1
eza 0.23.0-1
faac 1.31.1-1
faad2 2.11.2-1
fakeroot 1.37.1.2-1
fcft 3.3.2-1
ffmpeg 2:7.1.1-5
fftw 3.3.10-7
file 5.46-5
filesystem 2025.05.03-1
findutils 4.10.0-3
flac 1.5.0-1
flex 2.6.4-5
fluidsynth 2.4.7-1
flyctl-bin 0.3.107-1
fmt 11.2.0-1
fontconfig 2:2.17.1-1
foot 1.23.1-1
fprintd 1.94.5-1
freeglut 3.6.0-2
freetype2 2.13.3-3
frei0r-plugins 2.3.3-4
fribidi 1.0.16-2
fuse-common 3.17.1-1
fuse2 2.9.9-5
fuse3 3.17.1-1
fzf 0.65.1-1
gawk 5.3.2-1
gc 8.2.8-2
gcc 15.2.1+r22+gc4e96a094636-1
gcc-libs 15.2.1+r22+gc4e96a094636-1
gcc14 14.3.1+r25+g42e99e057bd7-1
gcc14-libs 14.3.1+r25+g42e99e057bd7-1
gcr 3.41.2-2
gcr-4 4.4.0.1-1
gd 2.3.3-8
gdbm 1.25-1
gdk-pixbuf2 2.42.12-2
gegl 0.4.62-1
gendesk 1.0.10-1
geoclue 2.7.2-1
geocode-glib-2 3.26.4-4
geocode-glib-common 3.26.4-4
gettext 0.26-1
gflags 2.2.2-5
ghc 9.4.8-1
ghc-libs 9.4.8-1
ghostscript 10.05.1-2
ghostty 1.1.3-1
ghostty-shell-integration 1.1.3-1
ghostty-terminfo 1.1.3-1
giflib 5.2.2-2
gimp 3.0.4-3
git 2.50.1-3
github-cli 2.76.2-1
gjs 2:1.84.2-1
glib-networking 1:2.80.1-1
glib2 2.84.4-2
glibc 2.42+r17+gd7274d718e6f-1
glibmm 2.66.8-1
glibmm-2.68 2.84.0-1
glslang 1:1.4.321.0-1
glu 9.0.3-2
gmp 6.3.0-2
gn 0.2238.a84e399f-1
gnome-autoar 0.4.5-1
gnome-desktop 1:44.3-1
gnome-desktop-4 1:44.3-1
gnome-desktop-common 1:44.3-1
gnome-keyring 1:48.0-1
gnome-mimeapps 0.1-1
gnome-session 48.0-1
gnome-settings-daemon 48.1-1
gnome-shell 1:48.4-1
gnu-free-fonts 20120503-8
gnulib-l10n 20241231-1
gnupg 2.4.8-1
gnutls 3.8.10-1
go 2:1.24.6-1
gobject-introspection 1.84.0-2
gobject-introspection-runtime 1.84.0-2
google-chat-linux-bin 5.29.23-1
google-chat-linux-bin-debug 5.29.23-1
google-glog 0.7.1-1
google-messages 1.4.2-2
google-messages-debug 1.4.2-2
gperf 3.1-5
gperftools 2.17-1
gpgme 2.0.0-1
gpgmepp 2.0.0-2
gpm 1.20.7.r38.ge82d1a6-6
gpsd 3.26.1-2
gpu-usage-waybar-git 0.1.19.r15.g98b2a91-1
gradle 8.14.3-1
graphene 1.10.8-2
graphite 1:1.3.14-5
graphviz 13.1.2-1
grep 3.12-2
grim 1.5.0-2
groff 1.23.0-7
gsettings-desktop-schemas 48.0-1
gsettings-system-schemas 48.0-1
gsfonts 20200910-5
gsm 1.0.22-2
gspell 1.14.0-2
gssdp 1.6.4-1
gst-libav 1.26.5-1
gst-plugin-pipewire 1:1.4.7-1
gst-plugins-bad 1.26.5-1
gst-plugins-bad-libs 1.26.5-1
gst-plugins-base 1.26.5-1
gst-plugins-base-libs 1.26.5-1
gst-plugins-good 1.26.5-1
gstreamer 1.26.5-1
gtest 1.17.0-1
gtk-layer-shell 0.9.2-1
gtk-update-icon-cache 1:4.18.6-1
gtk2 2.24.33-5
gtk3 1:3.24.50-1
gtk4 1:4.18.6-1
gtkmm-4.0 4.18.0-2
gtkmm3 3.24.10-1
gtkspell 2.0.16-9
gts 0.7.6.121130-3
guile 3.0.10-1
gupnp 1:1.6.9-1
gupnp-dlna 0.12.0-4
gupnp-igd 1.6.0-2
gvfs 1.57.2-4
gwenview 25.08.0-1
gzip 1.14-2
harfbuzz 11.4.1-1
harfbuzz-icu 11.4.1-1
haskell-async 2.2.5-134
haskell-base16-bytestring 1.0.2.0-122
haskell-base64-bytestring 1.2.1.0-154
haskell-cabal-install-solver 3.8.1.0-27
haskell-cryptohash-sha256 0.11.102.1-133
haskell-echo 0.1.4-6
haskell-ed25519 0.0.5.0-26
haskell-edit-distance 0.2.2.1-250
haskell-hackage-security 0.6.2.6-74
haskell-hashable 1.4.4.0-119
haskell-http 4000.4.1-308
haskell-lukko 0.1.1.3-245
haskell-network 3.1.4.0-63
haskell-network-uri 2.6.4.2-75
haskell-os-string 2.0.7-58
haskell-random 1.2.1.3-14
haskell-regex-base 0.94.0.3-2
haskell-regex-posix 0.96.0.2-2
haskell-resolv 0.2.0.2-243
haskell-safe-exceptions 0.1.7.4-72
haskell-splitmix 0.1.0.5-105
haskell-tar 0.5.1.1-214
haskell-th-compat 0.1.6-25
haskell-zlib 0.7.0.0-9
hdf5 1.14.6-5
hdparm 9.65-3
hicolor-icon-theme 0.18-1
hidapi 0.15.0-1
highway 1.3.0-1
htop 3.4.1-1
http-parser 2.9.4-2
hunspell 1.7.2-2
hwdata 0.398-1
hwloc 2.12.1-1
hyfetch 1.99.0-2
hyphen 2.8.8-6
iana-etc 20250612-1
icu 76.1-1
iio-sensor-proxy 3.8-1
ijs 0.35-6
imagemagick 7.1.2.1-1
imake 1.0.10-2
imath 3.1.12-4
imlib2 1.12.5-1
insomnium-bin 0.2.3-1
insomnium-bin-debug 0.2.3-1
intel-gmmlib 22.7.2-1
intel-media-driver 25.2.5-1
intel-oneapi-common 2024.1.0-1
intel-oneapi-compiler-shared-runtime-libs 2025.0.4-2
intel-oneapi-mkl 2025.0.1-3
intel-oneapi-openmp 2025.0.4-1
intel-oneapi-tbb 2021.12.0-2
intel-oneapi-tcm 1.2.0-3
intel-ucode 20250812-1
iproute2 6.16.0-2
iptables 1:1.8.11-2
iputils 20250605-1
iso-codes 4.18.0-1
iw 6.9-1
iwd 3.9-1
jansson 2.14.1-1
jasper 4.2.5-1
java-environment-common 3-6
java-runtime-common 3-6
jbig2dec 0.20-1
jbigkit 2.1-8
jdk21-openjdk 21.0.8.u9-1
jemalloc 1:5.3.0-5
jq 1.8.1-1
js128 128.13.0-2
json-c 0.18-2
json-glib 1.10.6-1
jsoncpp 1.9.6-3
kaccounts-integration 25.08.0-1
karchive 6.17.0-1
karchive5 5.116.0-1
kauth 6.17.0-1
kauth5 5.116.0-1
kbd 2.8.0-1
kbookmarks 6.17.0-1
kcmutils 6.17.0-1
kcodecs 6.17.0-1
kcodecs5 5.116.0-1
kcolorpicker 0.3.1-4
kcolorscheme 6.17.0-1
kcompletion 6.17.0-1
kconfig 6.17.0-1
kconfig5 5.116.0-1
kconfigwidgets 6.17.0-1
kconfigwidgets5 5.116.0-1
kcoreaddons 6.17.0-1
kcoreaddons5 5.116.0-1
kcrash 6.17.0-1
kdbusaddons 6.17.0-1
kdbusaddons5 5.116.0-1
kdenlive 25.08.0-1
keyutils 1.6.3-3
kfilemetadata 6.17.0-2
kglobalaccel 6.17.0-1
kguiaddons 6.17.0-1
kguiaddons5 5.116.0-1
ki18n 6.17.0-1
ki18n5 5.116.0-1
kiconthemes 6.17.0-1
kiconthemes5 5.116.0-1
kidletime 6.17.0-1
kimageannotator 0.7.1-3
kio 6.17.0-1
kirigami 6.17.0-1
kirigami2 5.116.0-1
kitemmodels 6.17.0-1
kitemviews 6.17.0-1
kjobwidgets 6.17.0-1
kmod 34.2-1
knewstuff 6.17.0-1
knotifications 6.17.0-1
knotifyconfig 6.17.0-1
kotlin 2.2.0-2
kpackage 6.17.0-1
kparts 6.17.0-1
krb5 1.21.3-2
kservice 6.17.0-1
ktextwidgets 6.17.0-1
kwallet 6.17.0-1
kwidgetsaddons 6.17.0-1
kwidgetsaddons5 5.116.0-1
kwindowsystem 6.17.0-1
kxmlgui 6.17.0-1
l-smash 2.14.5-4
lame 3.100-5
lapack 3.12.1-2
lcms2 2.17-1
leancrypto 1.5.1-1
lensfun 1:0.3.4-5
less 1:679-1
level-zero-loader 1.22.5-1
lib32-acl 2.3.2-1
lib32-audit 4.0.5-1
lib32-brotli 1.1.0-1
lib32-bzip2 1.0.8-4
lib32-dbus 1.16.2-1
lib32-e2fsprogs 1.47.3-1
lib32-expat 2.7.1-1
lib32-fontconfig 2:2.17.1-1
lib32-freetype2 2.13.3-3
lib32-gcc-libs 15.2.1+r22+gc4e96a094636-1
lib32-gettext 0.25-1
lib32-glib2 2.84.4-2
lib32-glibc 2.42+r17+gd7274d718e6f-1
lib32-harfbuzz 11.4.1-1
lib32-icu 76.1-1
lib32-keyutils 1.6.3-2
lib32-krb5 1.21.3-1
lib32-libcap 2.76-1
lib32-libffi 3.5.1-1
lib32-libgcrypt 1.11.1-1
lib32-libgpg-error 1.55-1
lib32-libldap 2.6.10-1
lib32-libnl 3.11.0-1
lib32-libnsl 2.0.1-1
lib32-libpcap 1.10.5-3
lib32-libpng 1.6.50-1
lib32-libtirpc 1.3.6-2
lib32-libunwind 1.8.1-1
lib32-libx11 1.8.12-2
lib32-libxau 1.0.11-2
lib32-libxcb 1.17.0-1
lib32-libxcrypt 4.4.38-1
lib32-libxcursor 1.2.3-1
lib32-libxdmcp 1.1.5-1
lib32-libxext 1.3.6-1
lib32-libxfixes 6.0.1-2
lib32-libxi 1.8.2-1
lib32-libxkbcommon 1.11.0-1
lib32-libxml2 2.14.5-1
lib32-libxrandr 1.5.4-1
lib32-libxrender 0.9.11-2
lib32-openssl 1:3.5.2-1
lib32-pam 1.7.0-1
lib32-pcre2 10.45-1
lib32-systemd 257.8-1
lib32-util-linux 2.41.1-1
lib32-wayland 1.23.1-1
lib32-xz 5.8.1-1
lib32-zlib 1.3.1-2
lib32-zstd 1.5.7-2
libabw 0.1.3-5
libaccounts-glib 1.27-3
libaccounts-qt 1.17-1
libadwaita 1:1.7.6-1
libaec 1.1.4-2
libaio 0.3.113-3
libao 1.2.2-7
libappindicator-gtk3 12.10.0.r298-4
libarchive 3.8.1-1
libass 0.17.4-1
libassuan 3.0.0-1
libasyncns 1:0.8+r3+g68cd5af-3
libatasmart 0.19-6
libatomic_ops 7.8.2-1
libavc1394 0.5.4-6
libavif 1.3.0-1
libavtp 0.2.0-3
libayatana-appindicator 0.5.94-1
libayatana-indicator 0.9.4-1
libb2 0.98.1-3
libblockdev 3.3.1-1
libblockdev-crypto 3.3.1-1
libblockdev-fs 3.3.1-1
libblockdev-loop 3.3.1-1
libblockdev-mdraid 3.3.1-1
libblockdev-nvme 3.3.1-1
libblockdev-part 3.3.1-1
libblockdev-swap 3.3.1-1
libbluray 1.3.4-3
libbpf 1.5.1-1
libbs2b 3.1.0-9
libbsd 0.12.2-2
libbytesize 2.11-1
libc++ 20.1.6-2
libc++abi 20.1.6-2
libcaca 0.99.beta20-5
libcanberra 1:0.30+r2+gc0620e4-4
libcap 2.76-1
libcap-ng 0.8.5-3
libcdio 2.2.0-1
libcdio-paranoia 10.2+2.0.2-1
libcdr 0.1.8-2
libcloudproviders 0.3.6-2
libcmis 0.6.2-5
libcolord 1.4.8-1
libcue 2.3.0-1
libcups 2:2.4.12-2
libdaemon 0.14-6
libdatachannel 0.23.1-1
libdatrie 0.2.13-4
libdbusmenu-glib 16.04.0.r498-2
libdbusmenu-gtk3 16.04.0.r498-2
libdc1394 2.2.7-1
libdca 0.0.7-2
libde265 1.0.16-1
libdecor 0.2.3-1
libdeflate 1.24-1
libdiscid 0.6.5-2
libdisplay-info 0.2.0-2
libdovi 3.3.2-1
libdrm 2.4.125-1
libdv 1.0.0-11
libdvdnav 6.1.1-2
libdvdread 6.1.3-2
libe-book 0.1.3-18
libebur128 1.2.6-2
libedit 20250104_3.1-1
libei 1.4.1-1
libelf 0.193-5
libepoxy 1.5.10-3
libepubgen 0.1.1-5
libetonyek 0.1.12-3
libev 4.33-4
libevdev 1.13.4-1
libevent 2.1.12-4
libexif 0.6.25-1
libexttextcat 3.4.7-1
libfabric 2.2.0-1
libfdk-aac 2.0.3-1
libffi 3.5.1-1
libfontenc 1.1.8-1
libfprint 1.94.9-1
libfreeaptx 0.2.2-1
libfreehand 0.1.2-5
libgccjit 15.2.1+r22+gc4e96a094636-1
libgcrypt 1.11.2-1
libgdiplus 6.2-1
libgdm 48.0-2
libgexiv2 0.14.6-1
libgirepository 1.84.0-2
libgit2 1:1.9.1-1
libglvnd 1.7.0-3
libgme 0.6.4-1
libgnome-keyring 1:3.12.0+r14+g23438cc-1
libgoa 3.54.5-1
libgpg-error 1.55-1
libgsf 1.14.53-2
libgtop 2.41.3-2
libgudev 238-3
libgusb 0.4.9-2
libgweather-4 4.4.4-2
libgxps 0.3.2-5
libheif 1.20.2-1
libibus 1.5.32-1
libical 3.0.20-2
libice 1.1.2-1
libid3tag 0.16.3-2
libidn 1.43-1
libidn2 2.3.7-1
libiec61883 1.2.0-8
libimagequant 4.4.0-1
libimobiledevice 1.3.0-17
libimobiledevice-glue 1.3.2-1
libinih 61-1
libinput 1.29.0-1
libinstpatch 1.1.7-2
libiptcdata 1.0.5-4
libisl 0.27-1
libixion 0.20.0-2
libjpeg-turbo 3.1.1-1
libjuice 1.6.1-1
libjxl 0.11.1-4
libkdcraw 25.08.0-1
libksba 1.6.7-2
liblangtag 0.6.7-2
liblc3 1.1.3-1
libldac 2.0.2.3-2
libldap 2.6.10-2
libliftoff 0.5.0-1
liblqr 0.4.3-1
liblrdf 0.6.1-5
libltc 1.3.2-2
liblzf 3.6-5
libmad 0.15.1b-10
libmanette 0.2.12-1
libmaxminddb 1.12.2-2
libmd 1.1.0-2
libmicrodns 0.2.0-2
libmikmod 3.3.13-1
libmm-glib 1.24.2-1
libmms 0.6.4-5
libmng 2.0.3-4
libmnl 1.0.5-2
libmodplug 0.8.9.0-6
libmpc 1.3.1-2
libmpcdec 1:0.1+r475-6
libmpdclient 2.23-1
libmspack 1:1.11-1
libmspub 0.1.4-17
libmtp 1.1.22-1
libmwaw 0.3.22-3
libmypaint 1.6.1-2
libmysofa 1.3.3-1
libmysqlclient 9.3.0-1
libnautilus-extension 48.3-1
libndp 1.9-1
libnet 2:1.3-1
libnetfilter_conntrack 1.0.9-2
libnewt 0.52.25-1
libnfnetlink 1.0.2-2
libnfs 6.0.2-5
libnftnl 1.3.0-1
libnghttp2 1.66.0-1
libnghttp3 1.11.0-1
libngtcp2 1.13.0-2
libnice 0.1.22-2
libnl 3.11.0-1
libnm 1.54.0-1
libnma-common 1.10.6-3
libnma-gtk4 1.10.6-3
libnotify 0.8.6-1
libnsl 2.0.1-1
libnumbertext 1.0.11-2
libnvme 1.15-1
libodfgen 0.1.8-4
libogg 1.3.6-1
libopenmpt 0.8.2-1
libopusenc 0.2.1-5
liborcus 0.20.1-1
libosinfo 1.12.0-2
libotf 0.9.16-5
libp11-kit 0.25.5-1
libpagemaker 0.0.4-4
libpaper 2.2.6-1
libpcap 1.10.5-3
libpciaccess 0.18.1-2
libpgm 5.3.128-3
libphonenumber 1:9.0.12-1
libpipeline 1.5.8-1
libpipewire 1:1.4.7-1
libplacebo 7.351.0-2
libplist 2.7.0-1
libpng 1.6.50-1
libportal 0.9.1-2
libportal-gtk4 0.9.1-2
libproxy 0.5.10-1
libpsl 0.21.5-2
libpst 0.6.76-10
libpulse 17.0+r43+g3e2bb8a1e-1
libqxp 0.0.2-13
libraqm 0.10.2-1
libraw 0.21.4-1
libraw1394 2.1.2-4
libreoffice-fresh 25.2.5-2
librevenge 0.0.5-3
librsvg 2:2.61.0-1
libsamplerate 0.2.2-3
libsasl 2.1.28-5
libseccomp 2.5.6-1
libsecret 0.21.7-1
libshout 1:2.4.6-5
libsidplayfp 2.15.0-1
libsigc++ 2.12.1-1
libsigc++-3.0 3.6.0-1
libsixel 1.10.5-1
libsm 1.2.6-1
libsndfile 1.2.2-3
libsodium 1.0.20-1
libsoup 2.74.3-4
libsoup3 3.6.5-1
libsoxr 0.1.3-4
libspiro 1:20240903-1
libsrtp 1:2.7.0-1
libssh 0.11.2-1
libssh2 1.11.1-1
libstaroffice 0.0.7-4
libstemmer 3.0.1-1
libsysprof-capture 48.0-7
libtasn1 4.20.0-1
libteam 1.32-2
libthai 0.1.29-3
libtheora 1.2.0-1
libtiff 4.7.0-1
libtirpc 1.3.6-2
libtommath 1.3.0-1
libtool 2.5.4+r62+g6389dce8-1
libunibreak 6.1-1
libunistring 1.3-1
libunwind 1.8.2-1
libupnp 1.14.24-1
liburcu 0.15.3-1
liburing 2.11-1
libusb 1.0.29-1
libusbmuxd 2.1.1-1
libutf8proc 2.10.0-1
libuv 1.51.0-1
libva 2.22.0-1
libva-intel-driver 2.4.1-5
libvdpau 1.5-3
libverto 0.3.2-5
libvisio 0.1.8-3
libvorbis 1.3.7-4
libvpl 2.15.0-1
libvpx 1.15.0-1
libwacom 2.16.1-1
libwebp 1.6.0-1
libwireplumber 0.5.10-1
libwmf 0.2.13-4
libwpd 0.10.3-5
libwps 0.4.14-3
libx11 1.8.12-1
libxau 1.0.12-1
libxaw 1.0.16-1
libxcb 1.17.0-1
libxcomposite 0.4.6-2
libxcrypt 4.4.38-1
libxcursor 1.2.3-1
libxcvt 0.1.3-1
libxdamage 1.1.6-2
libxdmcp 1.1.5-1
libxext 1.3.6-1
libxfce4ui 4.20.2-1
libxfce4util 4.20.1-1
libxfixes 6.0.1-2
libxfont2 2.0.7-1
libxft 2.3.9-1
libxi 1.8.2-1
libxinerama 1.1.5-2
libxkbcommon 1.11.0-1
libxkbcommon-x11 1.11.0-1
libxkbfile 1.1.3-1
libxml2 2.14.5-1
libxmlb 0.3.22-1
libxmp 4.6.3-1
libxmu 1.2.1-1
libxpm 3.5.17-2
libxpresent 1.0.1-2
libxrandr 1.5.4-1
libxrender 0.9.12-1
libxshmfence 1.3.3-1
libxslt 1.1.43-2
libxss 1.2.4-2
libxt 1.3.1-1
libxtst 1.2.5-1
libxv 1.0.13-1
libxxf86vm 1.1.6-1
libyaml 0.2.5-3
libytnef 1:2.1.2-2
libyuv r2426+464c51a03-1
libzip 1.11.4-1
libzmf 0.0.2-17
licenses 20240728-1
light 1.2.2-5
lilv 0.24.26-1
linux 6.16.1.arch1-1
linux-api-headers 6.16-1
linux-firmware 20250808-1
linux-firmware-amdgpu 20250808-1
linux-firmware-atheros 20250808-1
linux-firmware-broadcom 20250808-1
linux-firmware-cirrus 20250808-1
linux-firmware-intel 20250808-1
linux-firmware-mediatek 20250808-1
linux-firmware-nvidia 20250808-1
linux-firmware-other 20250808-1
linux-firmware-radeon 20250808-1
linux-firmware-realtek 20250808-1
linux-firmware-whence 20250808-1
lld 20.1.8-1
lld18 18.1.6-2
lld19 19.1.7-2
llhttp 9.2.1-2
llvm 20.1.8-1
llvm-libs 20.1.8-1
llvm15-libs 15.0.7-3
llvm18-libs 18.1.8-2
llvm19-libs 19.1.7-2
lm_sensors 1:3.6.2-1
lmdb 0.9.33-1
localsearch 3.9.0-3
lpsolve 5.5.2.11-3
lrexlib-pcre5.1 2.9.0-2
lrexlib-pcre5.1-debug 2.9.0-2
lsof 4.99.5-2
lua 5.4.8-2
lua-yajl 2.0-2
lua-yajl-debug 2.0-2
lua51 5.1.5-13
lua51-filesystem 1.8.0-5
lua51-lcf 5.1-3
lua51-luautf8 0.1.6-1
lua51-sql-sqlite 2.3.0-4
lua51-sql-sqlite-debug 2.3.0-4
luajit 2.1.1753364724-1
luazip5.1 1.2.7-1
luazip5.1-debug 1.2.7-1
lv2 1.18.10-1
lxsession 1:0.5.6-1
lz4 1:1.10.0-2
lzo 2.10-5
m17n-db 1.8.8-1
m17n-lib 1.8.5-1
m4 1.4.20-1
mailcap 2.1.54-2
mailspring-bin-debug 1.15.1-2
make 4.4.1-2
man-db 2.13.1-1
mbedtls 3.6.4-1
md4c 0.5.2-1
mdadm 4.4-1
media-player-info 26-1
mesa 1:25.1.7-1
meson 1.8.3-1
minizip 1:1.3.1-2
mjpegtools 2.2.1-3
mkinitcpio 39.2-3
mkinitcpio-busybox 1.36.1-1
mlt 7.32.0-2
mobile-broadband-provider-info 20250613-1
moc-pulse 2.5.2-17
mommy 1.6.0-1
mongodb 8.0.12-2
mono 6.12.0.206-1
mpc 0.35-1
mpd 0.24.5-1
mpdecimal 4.0.1-1
mpfr 4.2.2-1
mpg123 1.33.1-1
mpris-discord-rpc-bin 0.5.1-1
mpris-discord-rpc-bin-debug 0.5.1-1
mpv 1:0.40.0-5
mtdev 1.1.7-1
mudlet-bin 4.19.1-1
mujs 1.3.7-1
musescore 4.5.2-1
mutter 48.4-1
mypaint-brushes1 1.3.1-2
mysql 9.3.0-1
mysql-clients 9.3.0-1
nano 8.5-1
nasm 2.16.03-2
nautilus 48.3-1
ncurses 6.5-4
neon 0.35.0-1
net-tools 2.10-3
netpbm 10.86.47-1
netstandard-targeting-pack 9.0.8.sdk109-1
nettle 3.10.2-1
networkmanager-openvpn 1.12.2-1
nftables 1:1.1.4-1
ninja 1.12.1-2
node-gyp 11.3.0-1
nodejs 24.6.0-1
nodejs-nopt 7.2.1-1
noto-fonts 1:2025.08.01-1
noto-fonts-cjk 20240730-1
noto-fonts-emoji 1:2.048-1
npm 11.5.2-1
npm-check-updates 18.0.2-1
npth 1.8-1
nspr 4.37-1
nss 3.115-1
numactl 2.0.19-1
nvidia-utils 580.76.05-4
obs-studio 31.1.2-1
ocl-icd 2.3.3-1
oh-my-zsh-git r7574.736632228-1
ollama 0.11.4-1
oniguruma 6.9.10-1
open-dyslexic-fonts 0.91.12-2
openal 1.24.3-1
openblas 0.3.30-1
opencore-amr 0.1.6-2
openexr 3.3.5-1
openh264 2.6.0-1
openjpeg2 2.5.3-1
openmp 20.1.8-1
openmpi 5.0.8-2
openpmix 5.0.8-1
openssh 10.0p1-4
openssl 3.5.2-1
opentimelineio 0.17.0-2
openucx 1.19.0-1
openvpn 2.6.14-1
opus 1.5.2-1
opusfile 0.12-4
orc 0.4.41-1
osinfo-db 20250606-1
otf-opendyslexic-nerd 3.4.0-1
p11-kit 0.25.5-1
pacman 7.0.0.r6.gc685ae6-6
pacman-contrib 1.12.0-1
pacman-mirrorlist 20250702-2
pam 1.7.1-1
pambase 20250719-1
pango 1:1.56.4-1
pangomm 2.46.4-1
pangomm-2.48 2.56.1-1
parted 3.6-2
patch 2.8-1
patchelf 0.18.0-3
pavucontrol 1:6.1-1
pciutils 3.14.0-1
pcre 8.45-4
pcre2 10.45-1
pcsclite 2.3.3-1
perl 5.42.0-1
perl-error 0.17030-2
perl-image-exiftool 13.30-3
perl-mailtools 2.22-2
perl-timedate 2.33-8
phonon-qt6 4.12.0-5
phonon-qt6-mpv 0.1.0-3
php 8.4.11-1
pinentry 1.3.2-1
pipewire 1:1.4.7-1
pipewire-alsa 1:1.4.7-1
pipewire-audio 1:1.4.7-1
pipewire-jack 1:1.4.7-1
pipewire-pulse 1:1.4.7-1
pixman 0.46.4-1
pkcs11-helper 1.30.0-2
pkgconf 2.5.1-1
plasma-activities 6.4.4-1
playerctl 2.4.1-4
pnpm 10.15.0-1
polkit 126-2
polkit-gnome 0.105-11
polkit-qt5 0.200.0-1
polkit-qt6 0.200.0-1
poppler 25.08.0-1
poppler-data 0.4.12-2
poppler-glib 25.08.0-1
poppler-qt6 25.08.0-1
popt 1.19-2
portaudio 1:19.7.0-3
portmidi 1:2.0.6-1
postgresql 17.5-5
postgresql-libs 17.5-5
pps-tools 1.0.3-2
procps-ng 4.0.5-3
protobuf 31.1-2
proton-vpn-gtk-app 4.9.7-1
prrte 3.0.11-1
psmisc 23.7-1
pugixml 1.15-2
purpose 6.17.0-1
pybind11 3.0.0-1
python 3.13.7-1
python-aaf2 1.7.1-3
python-absl 2.3.1-1
python-acme 4.2.0-1
python-adb-shell 0.4.4-3
python-aiohappyeyeballs 2.6.1-1
python-aiohttp 3.12.15-1
python-aiosignal 1.4.0-1
python-annotated-types 0.7.0-2
python-anyio 4.10.0-1
python-argcomplete 3.6.2-1
python-asgiref 3.9.1-1
python-astor 0.8.1-8
python-astunparse 1.6.3-9
python-attrs 25.3.0-1
python-audioop-lts 0.2.2-1
python-audioop-lts-debug 0.2.1-1
python-autocommand 2.2.2-7
python-bandcamp-api 0.2.3-2.1
python-bcrypt 4.3.0-1
python-beautifulsoup4 4.13.4-1
python-bleach 6.2.0-2
python-boto3 1.39.9-1
python-botocore 1.39.9-1
python-build 1.3.0-1
python-cachetools 6.1.0-1
python-cairo 1.28.0-1
python-certifi 2025.08.03-1
python-cffi 1.17.1-2
python-charset-normalizer 3.4.3-1
python-click 8.2.1-1
python-cloudflare 2.12.5-4
python-colorama 0.4.6-5
python-configargparse 1.5.5-3
python-configobj 5.0.9-5
python-contourpy 1.3.3-1
python-cryptography 45.0.5-1
python-cssselect 1.2.0-8
python-curl-cffi-debug 0.11.1-2
python-cycler 0.12.1-3
python-dacite 1.9.2-2
python-dateutil 2.9.0-6
python-dbus 1.4.0-1
python-deadlib 3.13.0-2
python-decorator 5.2.1-1
python-demjson3 3.0.6-2.1
python-deprecated 1.2.18-1
python-distlib 0.4.0-1
python-distro 1.9.0-3
python-dnspython 1:2.7.0-1
python-docstring-to-markdown 0.15-3
python-dotenv 1.1.1-1
python-edge-tts 7.0.2-1
python-eventlet 0.40.2-1
python-expandvars 1.1.1-1
python-fastapi 0.116.1-1
python-fastjsonschema 2.21.2-1
python-filelock 3.18.0-1
python-flatbuffers 25.2.10-1
python-fonttools 4.59.1-1
python-frozenlist 1.7.0-1
python-gast 0.6.0-2
python-gevent 25.5.1-1
python-gmpy2 2.2.1-2
python-gnupg 0.5.5-1
python-gobject 3.52.3-3
python-google-auth 2.40.3-1
python-google-auth-oauthlib 1.2.2-1
python-gpt4all 2.2.1-1
python-gpt4all-debug 2.2.1-1
python-greenlet 3.2.4-1
python-grpcio 1.74.1-1
python-grpcio-tools 1.74.1-1
python-gtts 2.5.4-2
python-h11 0.16.0-1
python-h2 4.2.0-1
python-h5py 3.14.0-1
python-hpack 4.1.0-1
python-html5lib 1.1-15
python-httpcore 1.0.9-2
python-httplib2 0.22.0-8
python-httptools 0.6.4-2
python-httpx 0.28.1-3
python-hyperframe 6.1.0-1
python-i3ipc 2.2.1-8
python-idna 3.10-2
python-importlib-metadata 8.7.0-1
python-iniconfig 2.1.0-1
python-installer 0.7.0-10
python-jaconv 0.4.0-1
python-jaraco.classes 3.4.0-2
python-jaraco.collections 5.1.0-1
python-jaraco.context 6.0.1-1
python-jaraco.functools 4.1.0-1
python-jaraco.text 4.0.0-2
python-jedi 0.19.2-1
python-jeepney 0.9.0-1
python-jinja 1:3.1.6-1
python-jiter 0.10.0-1
python-jmespath 1.0.1-5
python-joblib 1.4.2-2
python-josepy 2.1.0-1
python-jsonlines 4.0.0-4
python-keras 3.11.2-1
python-keyring 25.6.0-1
python-kiwisolver 1.4.7-1
python-lark-parser 1.2.2-3
python-livepng 0.1.8-3
python-llvmlite 0.44.0-1
python-lsp-jsonrpc 1.1.2-5
python-lsp-server 1.12.2-1
python-lxml 6.0.0-2
python-mako 1.3.10-1
python-markdown 3.8.2-1
python-markdown-it-py 4.0.0-1
python-markupsafe 3.0.2-1
python-matplotlib 3.10.5-1
python-mdurl 0.1.2-8
python-ml-dtypes 0.5.3-1
python-more-itertools 10.7.0-1
python-mpmath 1.3.0-4
python-multidict 6.6.3-1
python-mutagen 1.47.0-3
python-networkx 3.5-1
python-numba 0.61.0-1
python-numpy 2.3.2-1
python-oauth2client 4.1.3-11
python-oauthlib 3.3.1-1
python-openai 1.97.1-1
python-openai-whisper 20250625-1
python-opt_einsum 3.4.0-1
python-optree 0.17.0-1
python-packaging 25.0-1
python-pandas 2.3.1-1
python-parsedatetime 2.6-10
python-parso 1:0.8.4-3
python-pasta 0.2.0-9
python-pillow 11.3.0-1
python-pip 25.2-1
python-pipenv 2025.0.4-1
python-platformdirs 4.3.8-1
python-pluggy 1.6.0-1
python-pocketsphinx 5.0.4-1
python-poetry-core 2.1.3-1
python-pooch 1.8.2-4
python-propcache 0.3.2-1
python-protobuf 31.1-2
python-proton-core 0.4.0-4
python-proton-keyring-linux 0.2.0-4
python-proton-vpn-api-core 0.42.5-1
python-proton-vpn-local-agent 1.4.5-1
python-proton-vpn-network-manager 0.12.14-1
python-psutil 7.0.0-1
python-pyasn1 0.6.1-1
python-pyasn1-modules 0.4.2-1
python-pyaudio 0.2.14-4
python-pycparser 2.22-3
python-pydantic 2.11.7-1
python-pydantic-core 2:2.33.2-2
python-pydantic-extra-types 2.10.5-1
python-pydantic-settings 2.10.1-1
python-pydot 3.0.4-1
python-pydub 0.25.1-7
python-pygame 2.6.1-2
python-pygments 2.19.2-1
python-pyinotify 0.9.6-15
python-pykakasi 2.3.0-2
python-pylatexenc 2.10-5
python-pynacl 1.5.0-3
python-pyopenssl 25.1.0-1
python-pyparsing 3.2.3-1
python-pyproject-hooks 1.2.0-3
python-pyquery 2.0.1-1
python-pyrfc3339 1.1-14
python-pyte 0.8.2-4
python-pytest 1:8.4.1-1
python-python-multipart 0.0.20-1
python-pytorch 2.7.1-4
python-pytube 15.0.0-4
python-pytz 2025.2-1
python-rapidfuzz 3.13.0-1
python-redis 6.2.0-1
python-regex 2025.7.34-1
python-requests 2.32.5-1
python-requests-oauthlib 1.3.1-5
python-requests-toolbelt 1.0.0-3
python-respx 0.22.0-3
python-rich 14.1.0-1
python-rsa 4.9.1-1
python-s3transfer 0.13.1-1
python-safetensors 0.6.2-1
python-safetensors-debug 0.6.2-1
python-scikit-learn 1.7.1-1
python-scipy 1.16.1-1
python-secretstorage 3.3.3-6
python-sentry_sdk 2.35.0-1
python-setuptools 1:80.9.0-1
python-six 1.17.0-1
python-slugify 8.0.4-3
python-sniffio 1.3.1-4
python-soundcloud-v2 1.6.0-1.1
python-sounddevice 0.5.2-1
python-soupsieve 2.7-1
python-speechrecognition 3.14.3-1
python-speechrecognition-debug 3.14.3-1
python-spotipy 2.25.1-1
python-srt 3.5.3-2
python-starlette 0.47.2-1
python-sympy 1.14.0-1
python-syncedlyrics 1.0.1-1.1
python-tabulate 0.9.0-5
python-tensorboard_plugin_wit 1.8.1-10
python-tensorflow 2.19.0-3
python-termcolor 3.1.0-1
python-text-unidecode 1.3-12
python-threadpoolctl 3.5.0-2
python-tiktoken 0.8.0-1
python-tokenizers 0.21.4-1
python-toml 0.10.2-12
python-tqdm 4.67.1-2
python-typing-inspection 0.4.1-1
python-typing_extensions 4.14.1-1
python-ujson 5.10.0-2
python-urllib3 2.5.0-1
python-uvloop 0.21.0-2
python-virtualenv 20.34.0-1
python-virtualenv-clone 0.5.7-6
python-voicevox-client 0.4.1-1
python-wcwidth 0.2.13-3
python-webencodings 0.5.1-12
python-websockets 15.0.1-1
python-werkzeug 3.1.3-1
python-wheel 0.45.1-1
python-wordllama 0.3.9-1
python-wordllama-debug 0.3.9-1
python-wrapt 1.17.3-1
python-xlib 0.33-4
python-yaml 6.0.2-2
python-yarl 1.21.1-1
python-ytmusicapi 1.11.0-1
python-zipp 3.21.0-2
python-zope-event 5.1.1-1
python-zope-interface 7.2-1
qca-qt6 2.3.10-2
qhull 2020.2-5
qqc2-desktop-style 6.17.0-1
qrencode 4.1.1-4
qt5-base 5.15.17+kde+r123-1
qt5-declarative 5.15.17+kde+r21-1
qt5-gamepad 5.15.17-1
qt5-graphicaleffects 5.15.17-1
qt5-location 5.15.17+kde+r7-1
qt5-multimedia 5.15.17+kde+r2-1
qt5-quickcontrols 5.15.17-1
qt5-quickcontrols2 5.15.17+kde+r5-1
qt5-remoteobjects 5.15.17-1
qt5-svg 5.15.17+kde+r5-1
qt5-tools 5.15.17+kde+r3-2
qt5-translations 5.15.17-1
qt5-wayland 5.15.17+kde+r57-1
qt5-webchannel 5.15.17+kde+r3-1
qt5-webengine 5.15.19-2
qt5-x11extras 5.15.17-1
qt6-5compat 6.9.1-1
qt6-base 6.9.1-5
qt6-declarative 6.9.1-2
qt6-multimedia 6.9.1-1
qt6-multimedia-ffmpeg 6.9.1-1
qt6-networkauth 6.9.1-1
qt6-positioning 6.9.1-1
qt6-scxml 6.9.1-1
qt6-shadertools 6.9.1-1
qt6-speech 6.9.1-1
qt6-svg 6.9.1-1
qt6-tools 6.9.1-2
qt6-translations 6.9.1-1
qt6-wayland 6.9.1-1
qt6-webchannel 6.9.1-1
qt6-webengine 6.9.1-2
qtkeychain-qt5 0.15.0-3
raptor 2.0.16-7
rasqal 1:0.9.33-7
rav1e 0.7.1-1
re2 1:20240702-5
readline 8.3.001-1
redland 1:1.0.17-9
rhash 1.4.4-1
ripgrep 14.1.1-1
riseup-vpn 0.24.10-1.5
rnnoise 1:0.2-1
roam 174.0.0.beta001-1
rofimoji 6.6.0-2
rsync 3.4.1-2
rtkit 0.13-3
rtmpdump 1:2.4.r105.6f6bb13-1
rubberband 4.0.0-1
ruby 3.4.5-1
rubygems 3.6.9-1
runc 1.3.0-1
rust 1:1.89.0-1
sbc 2.1-1
sddm 0.21.0-6
sdl2-compat 2.32.56-2
sdl2_image 2.8.8-1
sdl2_mixer 2.8.1-2
sdl2_ttf 2.24.0-1
sdl3 3.2.20-1
seatd 0.9.1-1
sed 4.9-3
semver 7.7.2-1
serd 0.32.4-1
shaderc 2025.3-1
shadow 4.18.0-1
shared-mime-info 2.4-2
shellspec 0.28.1-3
signal-desktop 7.66.0-1
signon-kwallet-extension 25.08.0-1
signon-plugin-oauth2 0.25-3
signon-ui 0.17+20231016-3
signond 8.61-3
simdjson 1:3.13.0-1
slack-desktop 4.45.64-1
slang 2.3.3-4
slurp 1.5.0-1
smartmontools 7.5-1
snappy 1.2.2-2
sndio 1.10.0-1
sof-firmware 2025.05-1
solid 6.17.0-1
sonnet 6.17.0-1
sord 0.16.18-1
sound-theme-freedesktop 0.8-6
soundtouch 2.4.0-1
spandsp 0.0.6-5
spdlog 1.15.3-1
speex 1.2.1-2
speexdsp 1.2.1-2
spirv-tools 1:1.4.321.0-1
spotdl 4.4.0-1
sqlite 3.50.4-1
sratom 0.6.18-1
srt 1.5.4-1
starship 1.23.0-1
startup-notification 0.12-8
stripe-cli-bin 1.29.0-1
stripe-cli-bin-debug 1.29.0-1
sudo 1.9.17.p1-1
suitesparse 7.11.0-1
svt-av1 3.1.0-1
svt-hevc 1.5.1-3
sway 1:1.10.1-3
sway-contrib 1.11-1
swaybg 1.2.1-1
swayidle 1.8.0-2
swaylock-fprintd-git r314.ffd639a-2.4
syndication 6.17.0-1
systemd 257.8-2
systemd-libs 257.8-2
systemd-sysvcompat 257.8-2
taglib 2.1.1-1
tar 1.35-2
tdb 1.4.14-1
tea 0.10.1-1
tensorboard 2.20.0-1
tensorflow 2.19.0-3
texinfo 7.2-1
thefuck 3.32-11
thermald 2.5.9-3
thunar 4.20.4-1
thunderbird 141.0-1
tinysparql 3.9.2-2
tinyxml2 11.0.0-1
totem-pl-parser 3.26.6+r30+g51b8439-2
tpm2-tss 4.1.3-1
tree-sitter 0.25.8-1
tslib 1.23-1
twolame 0.4.0-4
typescript 5.9.2-1
typescript-language-server 4.4.0-1
tzdata 2025b-1
uchardet 0.0.8-3
udisks2 2.10.1-6
unionfs-fuse 3.6-1.1
universal-android-debloater-bin 1.1.1-2
unzip 6.0-23
upower 1.90.9-1
usbutils 018-1
uthash 2.3.0-2
util-linux 2.41.1-1
util-linux-libs 2.41.1-1
uv 0.8.12-1
uvicorn 0.35.0-1
v4l-utils 1.30.1-1
vapoursynth 72-1
vibe-bin 3.0.5-2
vibe-bin-debug 3.0.5-2
vid.stab 1.1.1-2
vim 9.1.1623-1
vim-runtime 9.1.1623-1
visual-studio-code-bin 1.103.1-1
vmaf 3.0.0-1
volume_key 0.3.12-11
vte-common 0.80.3-1
vte4 0.80.3-1
vulkan-headers 1:1.4.321.0-1
vulkan-icd-loader 1.4.321.0-1
vulkan-intel 1:25.1.7-1
vulkan-radeon 1:25.1.7-1
wasi-compiler-rt 20.1.6-1
wasi-libc 1:0+440+3f7eb4c7-1
wasi-libc++ 20.1.6-2
wasi-libc++abi 20.1.6-2
waterfox-bin 6.5.11-1
wavpack 5.8.1-1
waybar 0.14.0-1
waybar-module-pacman-updates-git 0.2.9-1
wayland 1.24.0-1
webkit2gtk 2.48.5-1
webkit2gtk-4.1 2.48.5-1
webkitgtk-6.0 2.48.5-1
webrtc-audio-processing-1 1.3-5
wget 1.25.0-2
whatsapp-for-linux 1.7.0-1.3
which 2.23-1
wildmidi 0.4.6-1
windscribe-v2-bin 2.16.14-1
wine 10.12-1
wireless_tools 30.pre9-4
wireplumber 0.5.10-1
wl-clipboard 1:2.2.1-3
wlr-randr 0.5.0-1
wlroots0.18 0.18.2-1
wlroots0.19 0.19.0-1
woff2 1.0.2-6
wofi 1.5.1-1
wpa_supplicant 2:2.11-3
wxwidgets-common 3.2.8.1-2
wxwidgets-gtk3 3.2.8.1-2
x264 3:0.164.r3108.31e19f9-3
x265 4.1-1
xcb-proto 1.17.0-3
xcb-util 0.4.1-2
xcb-util-cursor 0.1.5-1
xcb-util-errors 1.0.1-2
xcb-util-image 0.4.1-3
xcb-util-keysyms 0.4.1-5
xcb-util-renderutil 0.3.10-2
xcb-util-wm 0.4.2-2
xdg-dbus-proxy 0.1.6-1
xdg-desktop-portal 1.20.3-1
xdg-desktop-portal-gnome 48.0-2
xdg-desktop-portal-gtk 1.15.3-1
xdg-desktop-portal-wlr 0.7.1-1
xdg-user-dirs 0.18-2
xdg-user-dirs-gtk 0.14-1
xdg-utils 1.2.1-1
xf86-input-libinput 1.5.0-1
xf86-video-amdgpu 25.0.0-1
xf86-video-ati 1:22.0.0-2
xf86-video-nouveau 1.0.18-1
xf86-video-vmware 13.4.0-4
xfconf 4.20.0-2
xkeyboard-config 2.45-1
xmlsec 1.3.7-2
xorg-fonts-encodings 1.1.0-1
xorg-server 21.1.18-2
xorg-server-common 21.1.18-2
xorg-server-xvfb 21.1.18-2
xorg-setxkbmap 1.3.4-2
xorg-xauth 1.1.4-1
xorg-xinit 1.4.4-1
xorg-xkbcomp 1.4.7-1
xorg-xmodmap 1.0.11-2
xorg-xprop 1.2.8-1
xorg-xrdb 1.2.2-2
xorg-xset 1.2.5-2
xorg-xwayland 24.1.8-1
xorgproto 2024.1-2
xvidcore 1.3.7-3
xxhash 0.8.3-1
xz 5.8.1-1
yajl 2.1.0-6
yaml-cpp 0.8.0-2
yaml-language-server 1.19.0-1
yarn 1.22.22-2
yasm 1.3.0-8
yay 12.5.0-1
yay-debug 12.5.0-1
yt-dlp 2025.07.21-1
zbar 0.23.93-4
zen-browser-bin 1.14.11b-1
zeromq 4.3.5-2
zig 0.14.1-2
zimg 3.0.5-1
zip 3.0-11
zix 0.6.2-1
zlib 1:1.3.1-2
zlib-ng 2.2.5-1
zoom 6.5.8-1
zram-generator 1.2.1-1
zsh 5.9-5
zstd 1.5.7-2
zvbi 0.2.44-1
zxing-cpp 2.3.0-5
zziplib 0.13.80-1
```

</details>

## 3. Configuration

Naomi's specific application configurations are noted here for posterity.

### 3.1. `git`

The most important thing to note is that Naomi signs her commits with her SSH key, not a GPG key.

```ini frame="code" title="~/.gitconfig"
[gpg]
    format = ssh
[gpg "ssh"]
    program = /opt/1Password/op-ssh-sign
[commit]
    gpgsign = true
[user]
    signingkey = ssh-rsa  
    name = Naomi Carrigan
    email = commits@nhcarrigan.com
[core]
    editor = emacs -nw
[push]
    autoSetupRemote = true
[init]
    defaultBranch = main
[credential]
    helper = store
```

### 3.2. `zsh`

Naomi uses Oh My ZSH instead of bash.

```bash frame="code" title="~/.zshrc"
####################
# Dotfile for Oh My Zsh.
# Installs on top of zsh,
# so install that first.
####################

# SYSTEM
####################
# Path to your Oh My Zsh installation.
export ZSH="$HOME/.oh-my-zsh"

# Plugins
plugins=(git zsh-256color zsh-autosuggestions zsh-syntax-highlighting)

source $ZSH/oh-my-zsh.sh

# We're lazy. :3
alias zshrc="source ~/.zshrc"
# We hate nano
alias nano="emacs -nw"
alias code="emacs -nw ."

# Listing files
alias ls="eza -ahl --extended --octal-permissions --git -g"

# More details on which thing to run
alias which="type -a"

# Untar
alias untar="tar -xvzf"

# Packages
alias yay-list="yay -Qs"
alias yay-clean="yay -Scc"
alias yay-update="yay -Syu"
alias yay-new="yay -Syuu"
alias yay-install="yay" # Just for consistency.
alias yay-uninstall="yay -R"

# File System
alias .2="cd ../.."
alias .3="cd ../../.."
alias .4="cd ../../../.."
alias .5="cd ../../../../.."
alias delete="rm -rf"
alias cp="cp -i"
alias mkdir="mkdir -p"

# git
alias clone="git clone"
alias comm="git add -A && git commit"
alias commv="git add -A && git commit --no-verify"
alias push="git push"
alias pull="git pull"
alias upmain="git checkout main && git fetch upstream && git merge upstream/main"
alias co="git checkout"
alias cob="git checkout -b"

alias fcc="cd ~/code/freecodecamp"
alias ridm="cd ~/code/rythm"
alias sc="cd ~/code/streamcord"
alias dg="cd ~/code/deepgram"
alias naomi="cd ~/code/naomi"

alias hug="curl -L https://api.github.com/octocat\?s\=You%20deserve%20a%20hug"

alias tunnel2="cloudflared tunnel --config ~/.cloudflared/local2.yml run local2"
alias tunnel1="cloudflared tunnel --config ~/.cloudflared/local.yml run local"

# Silly
alias tree="cbonsai -S"
alias poke="pokemon-colorscripts --no-title -r"
alias fish="asciiquarium --transparent"
alias matrix="cmatrix -r"
alias pipe="pipes.sh"
alias hacker="hollywood"

# THE FUCK
eval $(thefuck --alias)

alias shit="fuck"
alias damn="fuck"
alias crap="fuck"

# pnpm
export PNPM_HOME="/home/naomi/.local/share/pnpm"
case ":$PATH:" in
  *":$PNPM_HOME:"*) ;;
  *) export PATH="$PNPM_HOME:$PATH" ;;
esac
# pnpm end
export PATH=$HOME/.local/bin:$PATH
# sonarqube
export SONAR_SCANNER_HOME="/opt/sonar-scanner"
export PATH=${SONAR_SCANNER_HOME}/bin:${PATH}
# dotnet
export PATH="$PATH:/home/naomi/.dotnet/tools"

# Starship
eval "$(starship init zsh)"


# Load Angular CLI autocompletion.
source <(ng completion script)
```

#### 3.2.1. `starship`

Naomi uses `starship` to manage her customised shell prompt.

Note that her config requires your terminal be using a Nerd Font, or the symbols will not render.

```toml frame="code" title="~/.config/starship.toml"
"$schema" = 'https://starship.rs/config-schema.json'

format = '''
┌─  $username$hostname$fill$git_commit$git_branch󰊢 ─┐
│  $directory$fill$git_state$git_metrics$git_status│
└─  $dotnet$nodejs$golang$python$dart$c$gradle$java$kotlin$php$ruby$rust$package$fill$status$cmd_duration$time ─┘'''

right_format = '$custom'

add_newline = false

[fill]
symbol = " "

[username]
show_always = true
format = '[$user]($style) @ '

[hostname]
ssh_only = false
format = '[$hostname]($style)'

[directory]
truncate_to_repo = true
truncation_length = 5
truncation_symbol = ""

[nodejs]
format = '[$symbol($version )]($style)'

[dotnet]
format = '[$symbol($version )(🎯 $tfm )]($style)'
detect_extensions = ['csproj', 'fsproj', 'xproj', 'sln']

[golang]
format = '[$symbol($version )]($style)'

[python]
format = '[${symbol}${pyenv_prefix}(${version} )(\($virtualenv\) )]($style)'

[dart]
format = '[$symbol($version )]($style)'

[c]
format = '[$symbol($version(-$name) )]($style)'

[gradle]
format = '[$symbol($version )]($style)'

[java]
format = '[${symbol}(${version} )]($style)'

[kotlin]
format = '[$symbol($version )]($style)'

[php]
format = '[$symbol($version )]($style)'

[ruby]
format = '[$symbol($version )]($style)'

[rust]
format = '[$symbol($version )]($style)'

[cmd_duration]
format = 'took [$duration]($style) at '
min_time = 0

[git_commit]
only_detached = false
format = '[$hash$tag]($style) '

[git_status]
conflicted = '!'
untracked = 'u'
modified = 'm'
staged = 's'
renamed = 'r'
deleted = 'd'
stashed = ''

[git_metrics]
disabled = false

[package]
format = '[$symbol$version]($style) '
display_private = true

[time]
disabled = false
format = '[$time]($style) '

[status]
format = '[$symbol $status]($style) '
disabled = false
success_symbol = '✅'

[custom.mommy]
command = "mommy -1 -s $status"
when = true
```

### 3.3. `pacman`

Naomi's package manager configuration.

```ini frame="code" title="/etc/pacman.conf"
[options]
IgnorePkg = sway
HoldPkg     = pacman glibc
Architecture = auto

CheckSpace

SigLevel    = Never
LocalFileSigLevel = Optional
#RemoteFileSigLevel = Required

[core]
Include = /etc/pacman.d/mirrorlist

[extra]
Include = /etc/pacman.d/mirrorlist

[chaotic-aur]
Include = /etc/pacman.d/chaotic-mirrorlist

[multilib]
Include = /etc/pacman.d/mirrorlist
```

### 3.4 `sway`

```ini frame="code" title="~/.config/sway/config"
set $mod Mod4
set $left Left
set $down Down
set $up Up
set $right Right
set $term ghostty
set $menu wofi --show=drun --allow-images

# exec /home/naomi/code/naomi/apod.sh
exec --no-startup-d /usr/lib/xdg-desktop-portal -r
exec /home/naomi/code/naomi/screen.sh

output * bg /home/naomi/bg.png fill
output Unknown-1 scale 2

bindsym $mod+q exec $term
bindsym $mod+c kill
bindsym $mod+r exec $menu
bindsym $mod+e exec thunar
bindsym $mod+v floating toggle
bindsym $mod+x exec cliphist list | wofi --dmenu | cliphist decode | wl-copy
bindsym $mod+f fullscreen

exec swayidle -w \
  timeout 240 'notify-send "Locking workstation due to inactivity."' \
  resume 'notify-send "Cancelled lock." \
  timeout 300 'swaylock' \
  before-sleep 'swaylock'

floating_modifier $mod normal

input * {
  xkb_layout us
  pointer_accel 0
  accel_profile flat
}

focus_follows_mouse yes
default_border none
default_floating_border none
font pango:OpenDyslexicMono 10

bindsym $mod+$left focus left
bindsym $mod+$down focus down
bindsym $mod+$up focus up
bindsym $mod+$right focus right
bindsym $mod+Shift+$left move left
bindsym $mod+Shift+$down move down
bindsym $mod+Shift+$up move up
bindsym $mod+Shift+$right move right
bindsym $mod+Ctrl+$left move container workspace prev
bindsym $mod+Ctrl+$right move container workspace next
bindsym $mod+Shift+h splith
bindsym $mod+Shift+v splitv
bindsym $mod+Shift+s layout stacking
bindsym $mod+Shift+w layout tabbed
bindsym $mod+Shift+e layout toggle split
bindsym $mod+l exec swaylock
bindsym $mod+p focus parent
bindsym $mod+Shift+space focus mode_toggle
bindsym $mod+period exec rofimoji -a copy --skin-tone light
bindsym $mod+period+Ctrl exec rofimoji -f all -a copy --skin-tone light
bindsym --locked XF86AudioMute exec pactl set-sink-mute \@DEFAULT_SINK@ toggle
bindsym --locked XF86AudioLowerVolume exec pactl set-sink-volume \@DEFAULT_SINK@ -1%
bindsym --locked XF86AudioRaiseVolume exec pactl set-sink-volume \@DEFAULT_SINK@ +1%
bindsym --locked XF86AudioPlay exec playerctl play-pause
bindsym --locked XF86AudioNext exec playerctl next
bindsym --locked XF86AudioPrev exec playerctl previous
bindsym --locked XF86MonBrightnessUp exec brightnessctl set +5%
bindsym --locked XF86MonBrightnessDown exec brightnessctl set 5%-
bindsym --locked XF86AudioMicMute exec pactl set-source-mute @DEFAULT_SOURCE@ toggle
bindsym Print exec grimshot --notify --cursor copy area
bindsym Ctrl+Print exec grimshot --notify --cursor --wait 5 copy area
bindsym $mod+Shift+r mode "resize"
bindsym $mod+Shift+c exec swaymsg reload

bindsym $mod+1 workspace number 1
bindsym $mod+2 workspace number 2
bindsym $mod+3 workspace number 3
bindsym $mod+4 workspace number 4
bindsym $mod+5 workspace number 5
bindsym $mod+6 workspace number 6
bindsym $mod+7 workspace number 7
bindsym $mod+8 workspace number 8
bindsym $mod+9 workspace number 9
bindsym $mod+0 workspace number 10
bindsym $mod+Shift+1 workspace number 11
bindsym $mod+Shift+2 workspace number 12
bindsym $mod+Shift+3 workspace number 13
bindsym $mod+Shift+4 workspace number 14
bindsym $mod+Shift+5 workspace number 15
bindsym $mod+Shift+6 workspace number 16
bindsym $mod+Shift+7 workspace number 17
bindsym $mod+Shift+8 workspace number 18
bindsym $mod+Shift+9 workspace number 19
bindsym $mod+Shift+0 workspace number 20

assign [title=".*Discord.*"] 1
assign [title=".*Waterfox.*"] 2
assign [title=".*Chat.*"] 4
assign [title=".*Slack.*"] 5
assign [title=".*Roam.*"] 6
assign [title=".*Mail.*"] 7
assign [title=".*Evolution.*"] 7
assign [title=".*Calendar.*"] 7
assign [title=".*1Password.*"] 8
assign [title=".*Messages.*"] 9

mode "resize" {
    bindsym $left resize shrink width 10px
    bindsym $down resize grow height 10px
    bindsym $up resize shrink height 10px
    bindsym $right resize grow width 10px

    # Return to default mode
    bindsym Return mode "default"
    bindsym Escape mode "default"
}

exec dunst
exec wl-paste --watch cliphist store
# This creates the GUI for apps to ask for sudo perms
exec /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1
exec gsettings set org.gnome.desktop.interface gtk-theme "Sweet-Ambar-Blue"
exec gsettings set org.gnome.desktop.interface color-scheme prefer-dark
exec gsettings set org.gnome.desktop.interface font-name 'OpenDyslexicMono 10'
exec discord
exec waterfox
exec google-chat-linux
exec slack
exec roam
exec evolution
exec 1password
exec google-messages
exec espanso
exec brightnessctl -d tpacpi::kbd_backlight set 2

bar {
  swaybar_command waybar
}
```

#### 3.4.1. `swaylock`

```ini frame="code" title="~/.config/swaylock/config"
# Background image
image=/home/naomi/bg.jpg
scaling=fill
screenshot=false

ignore-empty-password
show-failed-attempts

# Background effects
fade-in=0.2
effect-blur=8x2
effect-vignette=0.5:0.5

# Ring customization
indicator-radius=120
indicator-thickness=20
indicator-idle-visible

clock
clockoutline-color=abfcec
clock-color=04624f
clock-radius=60
clock-thickness=10
timestr=%H:%M:%S
datestr=%a, %B %e

# Colors
key-hl-color=04624f
separator-color=04624f
inside-color=04624fcc
inside-clear-color=04624fcc
inside-ver-color=04624fcc
inside-wrong-color=04624fcc

ring-color=abfcec
ring-clear-color=abfcec
ring-ver-color=abfcec
ring-wrong-color=cc8822

line-color=04624f
line-clear-color=04624f
line-ver-color=04624f
line-wrong-color=04624f

text-color=abfcec
text-clear-color=abfcec
text-ver-color=abfcec
text-wrong-color=abfcec

# Text customization
font=OpenDyslexicMono
font-size=24
```

### 3.5 Waybar

These manage Naomi's waybar instance.

#### `config.jsonc`

```json frame="code" title="~/.config/waybar/config.jsonc"
{
    "layer": "top",
    "position": "top",
    "mode": "dock",
    "height": 15,
    "exclusive": true,
    "passthrough": false,
    "gtk-layer-shell": true,
    "reload_style_on_change": true,
    "modules-left": [
        "custom/ws",
        "sway/workspaces",
        "sway/window"
    ],
    "modules-center": [
        "custom/storage",
        "custom/cpuinfo",
        "memory",
        "cpu",
        "custom/gpu-usage",
        "custom/arch",
        "clock#time",
        "clock#date",
        "custom/weather"
    ],
    "modules-right": [
        "pulseaudio",
        "custom/updates",
        "battery",
        "custom/wifi",
        "tray",
        "custom/notifs",
        "custom/power"
    ],
    "custom/notifs": {
        "exec": "~/.config/waybar/scripts/dunst.sh",
        "return-type": "json",
        "interval": 1,
        "tooltip": false,
        "on-click": "dunstctl history-pop",
        "on-click-right": "dunstctl set-paused toggle"
    },
    "custom/ws": {
        "format": "",
        "tooltip": false,
        "on-click": "wofi --show=drun --allow-images"
    },
    "custom/gpu-usage": {
        "format": "{icon} {0}",
        "exec": "gpu-usage-waybar",
        "return-type": "json",
        "format-icons": "󰾲",
        "on-click": "kitty nvtop",
        "min-length": 8,
        "max-length": 10
    },
    "custom/weather": {
        "exec": "python ~/.config/waybar/scripts/weather.py",
        "restart-interval": 300,
        "return-type": "json",
        "on-click": "zen-browser https://weather.com/weather/today/l/f1fc8cc5233b6f8620dda922b1cb97b5cc8781f508c572de2f969ff79c7b293a"
    },
    "custom/updates": {
        "format": "{} {icon}",
        "return-type": "json",
        "format-icons": {
            "has-updates": "<span foreground='#cc0099'>󱍷</span>",
            "updated": "<span foreground='#00b300'>󰂪</span>"
        },
        "exec-if": "which waybar-module-pacman-updates",
        "exec": "waybar-module-pacman-updates --interval-seconds 5 --network-interval-seconds 300",
        "min-length": 4,
        "max-length": 8,
        "on-click": "ghostty -e yay -Syu"
    },
    "sway/workspaces": {
        "all-outputs": false,
        "active-only": false,
        "on-click": "activate",
        "disable-scroll": true,
        "sort-by-number": true
    },
    "sway/window": {
        "format": "{}",
        "separate-outputs": true,
        "rewrite": {
            "naomi@technomancer:(.*)": "  $1",
            "(.*)naomi@technomancer:~": "  naomi@technomancer",
            "Amberol": "<span foreground='#500020'></span> Amberol",
            "(.*) - Visual Studio Code": "<span foreground='#89b4fa'>󰨞</span> $1",
            "(.*) - VSCodium": "<span foreground='#89b4fa'>󰨞</span> $1",
            "(.*) - Sublime Text(.*)": "<span foreground='#f9e2af'>󰘦</span> $1",
            "(.*)Zen Browser": "<span foreground='#94e2d5'>󰇧</span> $1",
            "(.*) — LibreWolf": "<span foreground='#94e2d5'>󰇧</span> $1",
            "(.*) — 1Password": "<span foreground='#89b4fa'>󰢁</span> $1",
            "(.*) - Slack": "<span foreground='#f38ba8'>󰒱</span> $1",
            "(.*)Chat": "<span foreground='#a6e3a1'>󰊭</span> Chat",
            "(.*) - Roam": "<span foreground='#cba6f7'></span> $1",
            "(.*) - Mozilla Thunderbird": "<span foreground='#fab387'>󰊫</span> $1",
            "(.*)Steam": "<span foreground='#89b4fa'>󰓓</span> Steam",
            "(.*) - Discord": "<span foreground='#5865F2'></span>  $1",
            "(.*)GNU Image Manipulation Program": "<span foreground='#a6adc8'></span> $1",
            "(.*)GIMP": "<span foreground='#a6adc8'></span> $1",
            "OBS(.*)": "<span foreground='#a6adc8'></span> OBS Studio",
            "(.*) - FreeTube": "<span foreground='#FF1716'></span> $1",
            "WasIstLos": "<span foreground='#02FB00'></span> WasIstLos",
            "(.*).jpg": " $1.jpg",
            "(.*).png": " $1.png",
            "(.*).svg": " $1.svg",
            "(.*)Thunar": " $1",
            "Espanso.*": "<span foreground='#f9e2af'>󰌵</span> Espanso",
            "(.*) - NHCarrigan": "<span foreground='#f9e2af'></span> $1",
            "": "<span foreground='#cba6f7'></span>  Naomi 󰅂 Technomancer"
        }
    },
    "memory": {
        "states": {
            "c": 90
        },
        "format": "󰘚 {percentage}%",
        "format-c": "<span foreground='#cc0000'>󰀪</span> {percentage}%",
        "tooltip": true,
        "tooltip-format": "{used:0.1f}GB / {total:0.1f}GB",
        "interval": 20,
        "on-click": "ghostty -e btop"
    },
    "cpu": {
        "format": "󰻠 {usage}%",
        "tooltip": true,
        "interval": 5,
        "on-click": "ghostty -e htop"
    },
    "custom/arch": {
        "format": "",
        "tooltip": true,
        "tooltip-format": "Arch Version: {}",
        "interval": 86400,
        "exec": "uname -r",
        "on-click": "ghostty"
    },
    "clock#time": {
        "format": "󱑂 {:%H:%M:%S (%Z)} ",
        "tooltip": true,
        "tooltip-format": "{tz_list}",
        "interval": 1,
        "on-click": "gnome-clocks",
        "timezones": [
            "America/Los_Angeles",
            "America/Chicago",
            "Europe/London",
            "Europe/Berlin",
            "Asia/Tel_Aviv",
            "Asia/Tokyo"
        ]
    },
    "clock#date": {
        "format": "󱨴 {:L%A, %d %B}",
        "tooltip-format": "<tt>{calendar}</tt>",
        "calendar": {
            "mode": "month",
            "mode-mon-col": 3,
            "on-click": "thunderbird",
            "on-click-right": "mode",
            "format": {
                "months": "<span color='#f5e0dc'><b>{}</b></span>",
                "weekdays": "<span color='#f9e2af'><b>{}</b></span>",
                "today": "<span color='#f38ba8'><b>{}</b></span>"
            }
        },
        "actions": {
            "on-click-right": "mode"
        }
    },
    "pulseaudio": {
        "format": "<span foreground='#00b300'>{icon}</span> {volume}%",
        "format-muted": "<span foreground='#cc0099'></span> {volume}%",
        "format-icons": {
            "headphone": "󰋋",
            "default": [
                "󰖀",
                "󰕾"
            ]
        },
        "on-click": "pactl set-sink-mute @DEFAULT_SINK@ toggle",
        "on-click-right": "pavucontrol -t 3",
        "on-scroll-up": "pactl set-sink-volume @DEFAULT_SINK@ +1%",
        "on-scroll-down": "pactl set-sink-volume @DEFAULT_SINK@ -1%",
        "scroll-step": 10
    },
    "custom/power": {
        "format": "<span foreground='#cc0000'></span>",
        "tooltip": false,
        "on-click": "swaylock",
        "on-click-right": "shutdown now",
        "interval": 86400
    },
    "tray": {
        "icon-size": 15,
        "spacing": 5,
        "show-passive-items": true
    },
    "custom/storage": {
        "format": "{}",
        "return-type": "json",
        "tooltip": true,
        "interval": 10,
        "exec": "~/.config/waybar/scripts/disk-use.sh",
        "on-click": "baobab"
    },
    "battery": {
        "states": {
            "warning": 20,
            "critical": 10
        },
        "format": "{icon} {capacity}%",
        "format-icons": [
            "󰂎",
            "󰁻",
            "󰁼",
            "󰁽",
            "󰁾",
            "󰁿",
            "󰂀",
            "󰂁",
            "󰂂",
            "󰁹"
        ],
        "format-charging": " {capacity}%",
        "tooltip-format": "Discharging: {time}",
        "tooltip-format-charging": "Charging: {time}",
        "interval": 1,
        "min-length": 6,
        "max-length": 6
    },
    "custom/wifi": {
        "exec": "~/.config/waybar/scripts/wifi-status.sh",
        "return-type": "json",
        "format": "{}",
        "on-click": "~/.config/waybar/scripts/wifi-menu.sh",
        "on-click-right": "ghostty -e bash -c nmtui",
        "interval": 1,
        "min-length": 1,
        "max-length": 20
    }
}
```

#### `style.css`

```css frame="code" title="~/.config/waybar/style.css"
  #waybar {
    border: none;
    font-family: "OpenDyslexicM Nerd Font";
    font-weight: bold;
    font-size: 10px;
    color: #ffb6c1;
    text-shadow: 0px 0px 5px;
    background: rgba(42, 10, 24, 0.8);
  }
  
  #workspaces button {
    padding: 0px 3px;
    color: #ffb6c1;
    border-radius: 50%;
  }
  
  #tray menu {
    background: rgba(42, 10, 24, 0.8);
    color: #ffb6c1;
    text-shadow: 0px 0px 5px;
  }
  
  #tray menu menuitem:hover {
    background: rgba(255, 239, 239, 0.8);
    color: #db7093;
  }
  
  tooltip {
    color: #ffb6c1;
    border: solid;
    border-radius: 7px;
    border-width: 1px;
    border-color: #ffb6c1;
    background-color: rgba(42, 10, 24, 0.8);
    text-shadow: 0px 0px 5px;
  }
  
  .module {
    background-color: rgba(42, 10, 24, 0.8);
    border: solid;
    border-radius: 10px;
    border-width: 1px;
    border-color: #ffb6c1;
    padding: 0px 4px;
    margin: 0px 0px 0px 0px;
  }
  
  .modules-left .module {
    margin-right: 6px;
    box-shadow: 2px 2px 3px #ffb6c177;
  }
  
  .modules-right .module {
    margin-left: 6px;
    box-shadow: -2px 2px 3px #ffb6c177;
  }
  
  .modules-center .module {
    margin-left: 5px;
    margin-right: 5px;
    box-shadow: 0px 2px 3px #ffb6c177;
  }
  
  #custom-arch,
  #custom-ws {
    padding-left: 8px;
    padding-right: 12px;
  }
  
  #custom-notifs,
  #custom-power {
    padding-left: 8px;
    padding-right: 10px;
  }
  
  #workspaces button:hover {
    background: rgba(255, 239, 239, 0.8);
    color: #db7093;
  }
  
  #workspaces button.visible {
    background: rgba(255, 239, 239, 0.8);
    color: #db7093;
  }
```

#### Scripts

There are a few scripts necessary for waybar to work.

<details>
  <summary><code>disk-use.sh</code></summary>

```sh frame="code" title="~/.config/waybar/scripts/disk-use.sh"
#!/usr/bin/env sh

home_use=$(df -h /home | tail -1);
read -ra home_array <<< "$home_use"

boot_use=$(df -h /boot | tail -1);
read -ra boot_array <<< "$boot_use"

root_use=$(df -h / | tail -1);
read -ra root_array <<< "$root_use"

text=" ${home_array[2]} / ${home_array[1]}";
tooltip="Home: ${home_array[2]} / ${home_array[1]} (${home_array[4]})\nBoot: ${boot_array[2]} / ${boot_array[1]} (${boot_array[4]})\nRoot: ${root_array[2]} / ${root_array[1]} (${root_array[4]})";

echo "{\"text\":\"${text}\", \"tooltip\":\"${tooltip}\"}";
```

</details>

<details>
  <summary><code>cpuinfo.sh</code></summary>

```sh frame="code" title="~/.config/waybar/scripts/cpuinfo.sh"
#!/usr/bin/env sh

model=$(cat /proc/cpuinfo | grep 'model name' | head -n 1 | awk -F ': ' '{print $2}')
utilization=$(top -bn1 | awk '/^%Cpu/ {print 100 - $8}')
freqlist=$(cat /proc/cpuinfo | grep "cpu MHz" | awk '{ print $4 }')
maxfreq=$(cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq | sed 's/...$//')
frequency=$(echo $freqlist | tr ' ' '\n' | awk "{ sum+=\$1 } END {printf \"%.0f/$maxfreq MHz\", sum/NR}")
temp=$(sensors | awk '/Package id 0/ {print $4}' | awk -F '[+.]' '{print $2}')
if [ -z "$temp" ]; then
    temp=$(sensors | awk '/Tctl/ {print $2}' | tr -d '+°C')
fi
if [ -z "$temp" ]; then
    temp="N/A"
fi
set_ico="{\"thermo\":{\"0\":\"󱃃\",\"45\":\"󰔏\",\"65\":\"󱃂\",\"85\":\"<span foreground='#cc0000'>󰸁</span>\"},\"util\":{\"0\":\"󰾆\",\"30\":\"󰾅\",\"60\":\"󰓅\",\"90\":\"<span foreground='#cc0000'>󰀪</span>\"}}"
eval_ico() {
    map_ico=$(echo "${set_ico}" | jq -r --arg aky "$1" --argjson avl "$2" '.[$aky] | keys_unsorted | map(tonumber) | map(select(. <= $avl)) | max')
    echo "${set_ico}" | jq -r --arg aky "$1" --arg avl "$map_ico" '.[$aky] | .[$avl]'
}
thermo=$(eval_ico thermo $temp)
speedo=$(eval_ico util $utilization)
echo "{\"text\":\"${thermo} ${temp}°C\", \"tooltip\":\"${model}\n${thermo} Temperature: ${temp}°C\n${speedo} Utilization: ${utilization}%\n󰘚 Clock Speed: ${frequency}\"}"
```

</details>

<details>
  <summary><code>dunst.sh</code></summary>

```sh frame="code" title="~/.config/waybar/scripts/dunst.sh"
#!/bin/bash

if dunstctl is-paused | grep -q "true"; then
    echo '{"text": "<span foreground=\"#cc0099\"></span>", "class": "paused"}'
else
    echo '{"text": "<span foreground=\"#00b300\"></span>", "class": "active"}'
fi
```

</details>

<details>
  <summary><code>weather.py</code></summary>

```py frame="code" title="~/.config/waybar/scripts/weather.py"
#!/usr/bin/env python

import subprocess
from pyquery import PyQuery
import json

weather_icons = {
    "sunnyDay": "<span foreground='#dbd402'></span>",
    "clearNight": "<span foreground='#3239fc'></span>",
    "cloudyFoggyDay": "<span foreground='#e0dc62'></span>",
    "cloudyFoggyNight": "<span foreground='#6368f9'></span>",
    "rainyDay": "<span foreground='#dddba1'></span>",
    "rainyNight": "<span foreground='#6c71fc'></span>",
    "snowyIcyDay": "<span foreground='#cccbb7'></span>",
    "snowyIcyNight": "<span foreground='#9c9ffc'></span>",
    "severe": "<span foreground='#db0202'></span>",
    "default": "",
}

location_id = "f1fc8cc5233b6f8620dda922b1cb97b5cc8781f508c572de2f969ff79c7b293a"

url = "https://weather.com/weather/today/l/" + location_id
html_data = PyQuery(url=url)

temp = html_data("span[data-testid='TemperatureValue']").eq(0).text()
status = html_data("div[data-testid='wxPhrase']").text()
status = f"{status[:16]}.." if len(status) > 17 else status
status_code = html_data("#regionHeader").attr("class").split(" ")[2].split("-")[2]
icon = (
    weather_icons[status_code]
    if status_code in weather_icons
    else weather_icons["default"]
)
temp_feel = html_data(
    "div[data-testid='FeelsLikeSection'] > span > span[data-testid='TemperatureValue']"
).text()
temp_feel_text = f"Feels like {temp_feel}F"
temp_min = (
    html_data("div[data-testid='wxData'] > span[data-testid='TemperatureValue']")
    .eq(0)
    .text()
)
temp_max = (
    html_data("div[data-testid='wxData'] > span[data-testid='TemperatureValue']")
    .eq(1)
    .text()
)
temp_min_max = f"  {temp_min}\t\t  {temp_max}"
wind_speed = html_data("span[data-testid='Wind']").text()
wind_text = f"  {wind_speed}"
humidity = html_data("span[data-testid='PercentageValue']").text()
humidity_text = f"  {humidity}"
visbility = html_data("span[data-testid='VisibilityValue']").text()
visbility_text = f"  {visbility}"
air_quality_index = html_data("text[data-testid='DonutChartValue']").text()
prediction = html_data("section[aria-label='Hourly Forecast']")(
    "div[data-testid='SegmentPrecipPercentage'] > span"
).text()
prediction = prediction.replace("Chance of Rain", "")
prediction = f"\n\n    (hourly) {prediction}" if len(prediction) > 0 else prediction
tooltip_text = str.format(
    "\t\t{}\t\t\n{}\n{}\n{}\n\n{}\n{}\n{}{}",
    f'<span size="xx-large">{temp}</span>',
    f"<big>{icon}</big>",
    f"<big>{status}</big>",
    f"<small>{temp_feel_text}</small>",
    f"<big>{temp_min_max}</big>",
    f"{wind_text}\t{humidity_text}",
    f"{visbility_text}\tAQI {air_quality_index}",
    f"<i>{prediction}</i>",
)
out_data = {
    "text": f"{icon} {temp}",
    "alt": status,
    "tooltip": tooltip_text,
    "class": status_code,
}
print(json.dumps(out_data))
```

</details>

<details>
  <summary><code>wifi-status.sh</code></summary>
  
```sh frame="code" title="~/.config/waybar/scripts/wifi-status.sh
#!/usr/bin/env bash

DEVICE="wlan0"

# Get station info
station_info=$(iwctl station "$DEVICE" show)

# Check connection
ssid=$(echo "$station_info" | grep "Connected network" | sed 's/.*Connected network *//')
if [ -z "$ssid" ]; then
  echo '{"text": "󰤯", "tooltip": "Not connected to any Wi-Fi network"}'
  exit 0
fi
ssid="${ssid#"${ssid%%[![:space:]]*}"}"  # remove leading space
ssid="${ssid%"${ssid##*[![:space:]]}"}"  # remove trailing space

# Parse fields

# Channel info via `iw`
chan=$(iw dev "$DEVICE" info | awk '/channel/ {print $2, "(" $4 ")"}')

# IP and default gateway
ip_address=$(ip addr show "$DEVICE" | grep "inet " | awk '{print $2}' | head -n1)
gateway=$(ip route | grep "^default" | awk '{print $3}')

# Placeholder for security
security="WPA/WPA2/WPA3 (inferred)"

# Signal icon
icon="󰤨"

# Tooltip
tooltip="$ssid"
tooltip+="\nIP Address: $ip_address"
tooltip+="\nRouter:     $gateway"
tooltip+="\nSecurity:   $security"

# Output for bar/status
echo "{\"text\": \"${icon} ${ssid}\", \"tooltip\": \"${tooltip}\"}"

```

</details>

### 3.6 Ghostty

```ini frame="code" title="~/.config/ghostty/config"
font-family="OpenDyslexicM Nerd Font"
theme="SakuraDreamsDark"
background-opacity=0.8
gtk-titlebar=false
```

```ini frame="code" title="~/.config/ghostty/themes/SakuraDreamsDark"
palette = 0=#26010a
palette = 1=#ff66b2
palette = 2=#ff1493
palette = 3=#db7093
palette = 4=#b03060
palette = 5=#c71585
palette = 6=#d87093
palette = 7=#ff5c8a
palette = 8=#ff85a2
palette = 9=#ff004f
palette = 10=#ff3377
palette = 11=#ff77a8
palette = 12=#ff3b6f
palette = 13=#ff6b94
palette = 14=#ff96b5
palette = 15=#ffe6ee

background = #2a0a18
background-blur-radius = 20
foreground = #ffd1dc
selection-background = #b03060
selection-foreground = #ffe6ee
cursor-color = #ff3b6f
cursor-text = #ffe6ee
```

### 3.7 Discord

```json frame="code" title="~/.config/discord/settings.json"
{
  "chromiumSwitches": {},
  "IS_MAXIMIZED": false,
  "IS_MINIMIZED": false,
  "WINDOW_BOUNDS": {
    "x": 22,
    "y": 42,
    "width": 1876,
    "height": 1016
  },
  "SKIP_HOST_UPDATE": true,
  "DANGEROUS_ENABLE_DEVTOOLS_ONLY_ENABLE_IF_YOU_KNOW_WHAT_YOURE_DOING": true,
  "MINIMIZE_TO_TRAY": true
}
```

### 3.8 Hyfetch

There are two config files here.

```json frame="code" title="~/.config/hyfetch.json"
{
  "preset": "transfeminine",
  "mode": "rgb",
  "light_dark": "dark",
  "lightness": 0.81,
  "color_align": {
    "mode": "vertical",
    "custom_colors": [],
    "fore_back": []
  },
  "backend": "neofetch",
  "args": null,
  "distro": null,
  "pride_month_shown": [],
  "pride_month_disable": false,
  "image": "/home/naomi/pics/profile.png"
}
```

```ini frame="code" title="~/.config/neofetch/config.conf"
home_disk_info() {
    df -h | grep '/home$' | awk '{printf "%s: %s/%s (%s)", $NF, $3, $2, $5}'
}

boot_disk_info() {
    df -h | grep '/boot$' | awk '{printf "%s: %s/%s (%s)", $NF, $3, $2, $5}'
}

root_disk_info() {
    df -h | grep '/$' | awk '{printf "%s: %s/%s (%s)", $NF, $3, $2, $5}'
}

print_info() {
    info title
    info underline
    info "OS" distro
    info "├─Kernel" kernel
    info "├─Locale" locale
    info "├─Shell" shell
    prin "├─WM" "$(sway --version)"
    info "├─Terminal" term
    info "└───Terminal Font" term_font
    info "Host" model
    info "├─BIOS" bios
    info "├─CPU" cpu
    info "├─GPU" gpu
    info "├───GPU Driver" gpu_driver
    prin "├─Disk" "$(home_disk_info)"
    prin "├───Root" "$(root_disk_info)"
    prin "├───Boot" "$(boot_disk_info)"
    info "└─Memory" memory
    prin ""
    prin "Programming Languages"
    info underline
    prin "Bash" "$(bash --version | head -n1 | cut -d' ' -f4)"
    prin "Clang" "$(clang --version | head -n1 | cut -d' ' -f3)"
    prin "C++" "$(cpp --version | head -n1 | cut -d' ' -f3)"
    prin "Dart" "$(dart --version | cut -d' ' -f4)"
    prin "└─Flutter" "$(flutter --version | head -n1 | cut -d' ' -f2)"
    prin "Dotnet" "$(dotnet --version)"
    prin "└─C-sharp Compiler" "$(csc -v | head -n1 | cut -d' ' -f7)"
    prin "Go" "$(go version | cut -d' ' -f3 | sed 's/go//')"
    prin "Haskell" "$(ghc --version | head -n1 | cut -d' ' -f8)"
    prin "└─Cabal" "$(cabal --version | head -n1 | cut -d' ' -f3)"
    prin "Java" "$(java -version 2>&1 | head -n1 | cut -d' ' -f2 | sed 's/\"//g')"
    prin "├─Gradle" "$(gradle -v | head -n3 | tail -n1 | cut -d' '  -f2)"
    prin "└─Kotlin" "$(kotlin -version | cut -d' ' -f3)"
    prin "Lua" "$(lua -v | cut -d' ' -f2)"
    prin "PHP" "$(php -v | head -n1 | cut -d' ' -f2)"
    prin "Python" "$(python --version | cut -d' ' -f2)"
    prin "└─PIP" "$(pip --version | cut -d' ' -f2)"
    prin "Node" "$(node -v)"
    prin "├─NPM" "$(npm -v)"
    prin "├─Yarn" "$(yarn -v)"
    prin "└─PNPM" "$(pnpm -v)"
    prin "Ruby" "$(ruby -v | cut -d' ' -f2)"
    prin "Rust" "$(rustc --version | cut -d' ' -f2)"
    prin "├─Rustup" "$(rustup -V | head -n1 | cut -d' ' -f2)"
    prin "└─Cargo" "$(cargo version | cut -d' ' -f2)"
    prin "TypeScript" "$(tsc -v | cut -d' ' -f2)"
    prin "Zig" "$(zig version)"
    prin ""
    prin "Databases"
    info underline
    prin "MongoDB" "$(mongod --version | head -n1 | cut -d' ' -f3)"
    prin "└─Mongo Shell" "$(mongo --version | head -n1 | cut -d' ' -f4)"
    prin "MySQL" "$(mysql --version | cut -d' ' -f4)"
    prin "PostgreSQL" "$(psql --version | cut -d' ' -f3)"
    prin "SQlite" "$(sqlite3 --version | cut -d' ' -f1)"
    prin ""
    prin "Tools"
    info underline
    prin "Browser" "Zen $(zen-browser --version | cut -d' ' -f3)"
    prin "Editor" "Emacs $(emacs --version | head -n1 | cut -d' ' -f3)"
    prin "└─Nano" "$(nano --version | head -n1 | cut -d' '  -f5)"
}
title_fqdn="on"
kernel_shorthand="on"
distro_shorthand="off"
os_arch="on"
memory_percent="on"
memory_unit="gib"
mem_precision=2
shell_path="on"
shell_version="on"
speed_type="bios_limit"
speed_shorthand="on"
cpu_brand="on"
cpu_speed="on"
cpu_cores="logical"
cpu_temp="on"
gpu_brand="on"
gpu_type="all"
refresh_rate="on"
gtk3="on"
bold="on"
underline_enabled="on"
underline_char="-"
separator=":"
block_range=(0 15)
color_blocks="on"
block_width=3
block_height=1
col_offset="auto"
bar_char_elapsed="-"
bar_char_total="="
bar_border="on"
bar_length=15
bar_color_elapsed="distro"
bar_color_total="distro"
memory_display="on"
disk_display="on"
image_backend="kitty"
image_source="/home/naomi/pics/profile.png"
image_loop="off"
thumbnail_dir="${XDG_CACHE_HOME:-${HOME}/.cache}/thumbnails/neofetch"
crop_mode="normal"
crop_offset="center"
image_size="auto"
catimg_size="2"
gap=3
yoffset=0
xoffset=0
background_color=
stdout="off"
```

### 3.9 Wofi

```css frame="code" title="~/.config/wofi/style.css"
#window {
  background-color: rgba(42, 10, 24, 0.75);
  border-radius: 1rem;
  font-size: 1.2rem;
  font-family: "OpenDyslexicM Nerd Font";
  text-shadow: 0px 0px 5px;
}
#window #outer-box #input {
  background-color: rgba(42, 10, 24, 0.75);
  color: #ffb6c1;
  border: none;
  border-bottom: 1px solid rgba(24, 24, 24, 0.2);
  padding: 0.8rem 1rem;
  font-size: 1.5rem;
  border-radius: 1rem 1rem 0 0;
}
#window #outer-box #input::placeholder {
  color: #ffb6c1;
}
#window #outer-box #input:focus,
#window #outer-box #input:focus-visible,
#window #outer-box #input:active {
  border: none;
  outline: 2px solid transparent;
  outline-offset: 2px;
}
#window #outer-box #scroll #inner-box #entry {
  color: #ffb6c1;
  background-color: rgba(24, 24, 24, 0.1);
  padding: 0.6rem 1rem;
}
#window #outer-box #scroll #inner-box #entry #img {
  width: 1rem;
  margin-right: 0.5rem;
}
#window #outer-box #scroll #inner-box #entry:selected {
  color: #ffb6c1;
  background-color: rgba(255, 255, 255, 0.1);
  outline: none;
}
#text:selected {
  color: rgb(219, 112, 147);
  background-color: #ffb6c1;
}

#img:selected {
  background: none;
}
```

### 3.10 Dunst

`dunst` manages Naomi's system notifications, and (like many other aspects of her environment) has been highly customised.

```toml frame="code" title="~/.config/dunst/dunstrc"
[global]
  follow=mouse
  width=(0, 750)
  height=(0, 250)
  notification_limit=10
  origin=center
  icon_corner_radius=10
  sort=update
  word_wrap=false
  ellipsize=end
  layer=overlay
  show_age_threshold=-1
  stack_duplicates=false
  corner_radius=10
  mouse_left_click=close_current
  mouse_right_click=do_action, close_current
  mouse_middle_click=none
  font=OpenDyslexicMono 12
  format="<b>%a - %s</b>\n<big>%b</big>"
  background="#2a0a1899"
  foreground="#ffb6c1"
  max_icon_size=32
  icon_corner_radius=10
  frame_color="#ffefef"
```

## 4. Code Editors

These are the code editors Naomi uses.

### 4.1. Emacs

Naomi uses `emacs` for her main editor.

#### 4.1.1. Config

```lisp frame="code" title="~/.emacs"
(setq inhibit-startup-message t  ; Don't show the splash screen
      visible-bell t)            ; Flash when the bell rings
(menu-bar-mode -1) ; Turn off menu bar
(scroll-bar-mode -1) ; Turn off scroll bar
(xterm-mouse-mode 1) ; Enable mouse support
(tab-bar-mode 1) ; Enable tab bar

(setq-default indent-tabs-mode nil)
(setq-default tab-width 2)
(setq indent-line-function 'insert-tab)

(setq gc-cons-threshold 100000000) ; Garbage collection threshold of 100MB
(setq read-process-output-max (* 1024 1024)) ; Chunk size for reading files is 1MB

(setf make-backup-files nil) ; Turn off backup files, noisy and useless.
(setf kill-buffer-delete-auto-save-files t) ; Delete autosaves when file is closed.

(setopt display-fill-column-indicator-column 80) ; Line length at 80

(require 'uniquify) ; Uses paths to delinate unique files names as needed
(setq uniquify-buffer-name-style 'forward)

(require 'package) ; This allows us to install packages

(setq package-archives '(("melpa" . "https://melpa.org/packages/")
                        ("org" . "https://orgmode.org/elpa/")
                        ("elpa" . "https://elpa.gnu.org/packages/")))

(package-initialize) ; Prepare packages

(unless (package-installed-p 'use-package)(package-install 'use-package)) ; use-package is better UX than package-install, so make sure we have it
(require 'use-package) ; require it
(setq use-package-always-ensure t) ; So we don't need to :ensure everything

(use-package auto-package-update
  :config
  (setq auto-package-update-delete-old-versions t)
  (setq auto-package-update-hide-results t)
  (auto-package-update-maybe))

(use-package vertico :ensure t :init (vertico-mode)) ; Vertico for tab completion
(use-package marginalia :after vertico :ensure t :init (marginalia-mode)) ; Marginalia for annotations

(use-package savehist :init (savehist-mode)) ; Saves completion history

(setq font-lock-maximum-decoration t) ; MAXIMUM SYNTAX HIGHLIGHTING

;; Line numbers configuration
(global-display-line-numbers-mode 1)  ; Enable line numbers globally
(setq display-line-numbers-type t)

;; Make line numbers stand out a bit
(set-face-background 'line-number-current-line nil)
(set-face-foreground 'line-number-current-line "yellow")

;; Optional: Customize line number format
(setq display-line-numbers-width 4)  ; Reserve space for line numbers
(setq display-line-numbers-widen t)  ; Expand line number space as needed

;; Disable line numbers for some modes where they don't make sense
(dolist (mode '(term-mode-hook
                shell-mode-hook
                treemacs-mode-hook
                eshell-mode-hook))
  (add-hook mode (lambda () (display-line-numbers-mode 0))))

;; Project management
(use-package projectile
  :config
  (projectile-mode +1)
  :bind-keymap ("C-c p" . projectile-command-map))

;; File tree with treemacs
(use-package treemacs
  :bind
  (:map global-map
        ("C-c t" . treemacs))
  :config
  (treemacs-follow-mode t)
  (treemacs-project-follow-mode t))

(use-package treemacs-projectile
  :after (treemacs projectile))

;; LSP Mode base configuration
(use-package lsp-mode
  :init
  (setq lsp-keymap-prefix "C-c l"
        lsp-enable-symbol-highlighting t
        lsp-enable-snippet t
        lsp-enable-indentation t)
  :hook
  ((typescript-mode . lsp)
   (js2-mode . lsp)
   (web-mode . lsp)
   (python-mode . lsp)
   (java-mode . lsp)
   (c++-mode . lsp)
   (c-mode . lsp)
   (csharp-mode . lsp))
  :commands lsp)

;; LSP UI enhancements
(use-package lsp-ui
  :commands lsp-ui-mode
  :config
  (setq lsp-ui-doc-enable t
        lsp-ui-doc-position 'at-point))

(use-package typescript-mode
  :mode ("\\.ts\\'")
  :hook (typescript-mode . (lambda () (setq typescript-indent-level 2))))
(use-package web-mode
  :mode (("\\.tsx\\'" . web-mode)
         ("\\.jsx\\'" . web-mode))
  :config
  (setq web-mode-markup-indent-offset 2
        web-mode-css-indent-offset 2
        web-mode-code-indent-offset 2)
        web-mode-json-indent-offset 2)

;; JavaScript better syntax highlighting
(use-package js2-mode
  :mode "\\.js\\'")
(setq js-indent-level 2)
(setq lsp-eslint-auto-fix-on-save t)

(use-package csharp-mode
  :config
  (add-to-list 'auto-mode-alist '("\\.cs\\'" . csharp-mode)))

(use-package ccls
  :hook ((c-mode c++-mode) . (lambda () (require 'ccls) (lsp))))

(use-package lsp-java
  :config (add-hook 'java-mode-hook 'lsp))

(use-package kotlin-mode)

(use-package python-mode
  :hook (python-mode . (lambda ()
                        (require 'lsp-pyright)
                        (lsp))))
(use-package lsp-pyright
  :ensure t)

(use-package markdown-mode
  :mode (("README\\.md\\'" . gfm-mode)
         ("\\.md\\'" . markdown-mode)
         ("\\.mdx\\'" . markdown-mode))
  :init (setq markdown-command "multimarkdown"))

(use-package git-gutter
  :config
  (global-git-gutter-mode +1))

(use-package hl-todo
  :config
  (setq hl-todo-keyword-faces
        '(("TODO"   . "#FF0000")
          ("FIXME"  . "#FF0000")
          ("DEBUG"  . "#A020F0")
          ("GOTCHA" . "#FF4500")
          ("STUB"   . "#1E90FF")))
  (global-hl-todo-mode))

(use-package prisma-mode
  :vc (prisma-mode :url "https://github.com/pimeys/emacs-prisma-mode"))

(use-package elcord)
  (elcord-mode)

(use-package corfu :ensure t :hook ((prog-mode . corfu-mode))) ; Drop-down completions

(defun eslint-fix-file ()
  (interactive)
  (message "eslint --fixing the file" (buffer-file-name))
  (shell-command (concat "pnpm eslint --fix --max-warnings 0 " (buffer-file-name))))

(add-hook 'js2-mode-hook
          (lambda ()
            (add-hook 'after-save-hook #'eslint-fix-file)))

(add-hook 'typescript-mode-hook
          (lambda ()
            (add-hook 'after-save-hook #'eslint-fix-file)))

(add-hook 'emacs-startup-hook 'treemacs)

(add-hook 'prog-mode-hook #'display-fill-column-indicator-mode) ; Show line length ruler

(custom-set-variables
 ;; custom-set-variables was added by Custom.
 ;; If you edit it by hand, you could mess it up, so be careful.
 ;; Your init file should contain only one such instance.
 ;; If there is more than one, they won't work right.
 '(package-selected-packages nil)
 '(package-vc-selected-packages
   '((prisma-mode :url "https://github.com/pimeys/emacs-prisma-mode"))))
(custom-set-faces
 ;; custom-set-faces was added by Custom.
 ;; If you edit it by hand, you could mess it up, so be careful.
 ;; Your init file should contain only one such instance.
 ;; If there is more than one, they won't work right.
 )
```
