Published multiple files
All checks were successful
Build and Deploy Quartz / build (push) Successful in 26s

This commit is contained in:
Quartz Syncer
2026-02-05 09:53:27 -07:00
parent 536652b5b6
commit 125a9b1752
54 changed files with 3140 additions and 34 deletions

View File

@@ -1,7 +1,8 @@
---
publish: true
permalink: /06 AUTHOR/11 METADATA/Phil Skentelbery.md
title: Phil Skentelbery
created: 2026-01-10T15:29:20.601-07:00
created: 2026-01-29T14:04:18.712-07:00
modified: 2026-01-10T21:07:06.051-07:00
cssclasses: ""
---

View File

@@ -1,6 +1,7 @@
---
publish: true
created: 2026-01-21T13:29:26.549-07:00
permalink: /06 AUTHOR/12 MUSINGS/Social Media Isn't Social.md
created: 2026-01-29T14:04:18.833-07:00
modified: 2026-01-21T13:54:49.189-07:00
cssclasses: ""
---
@@ -15,6 +16,6 @@ Then came a realization for The Algorithm, things that you were "interested in"
And this is why I abandoned social media for a long time. I lurked, I scraped around every now and again for something I wanted to see, but I did not engage like I once did. Gone were the days where i tinkered with the HTML to impress my MySpace buddies, now social media was a chore, something i had to occasionally check on so I was not out of the loop.
I missed social media, but it did not exist anymore. Outrage media did not interest me. Then I discovered the [Fediverse](https://en.wikipedia.org/wiki/Fediverse). It is far from perfect, it still has that undertone of enragement engagement from some users, but it is far closer to the social media I remember. I run my own [[GoToSocial]] server from where I engage with folk on my nerdy passions in a way that is somewhat reminiscent of how I used to display my passions in basic HTML. My feed is only content from folks I follow, I have the power to filter it as I see fit, and it is probably the closest I will ever get to the glory days of what I remember through some very heavily rose tinted glasses.
I missed social media, but it did not exist anymore. Outrage media did not interest me. Then I discovered the [Fediverse](https://en.wikipedia.org/wiki/Fediverse). It is far from perfect, it still has that undertone of enragement engagement from some users, but it is far closer to the social media I remember. I run my own [[20-29 HOBBYS/22 SELF HOSTING/22.12 SERVICES/GoToSocial]] server from where I engage with folk on my nerdy passions in a way that is somewhat reminiscent of how I used to display my passions in basic HTML. My feed is only content from folks I follow, I have the power to filter it as I see fit, and it is probably the closest I will ever get to the glory days of what I remember through some very heavily rose tinted glasses.
Just do not let anyone tell you that TikTok, Facebook, Twitter (X?), or whatever else is spawned from the corporate hellscape is Social Media. It's not social, it is something nefarious. You are not some kind of degenerate for yearning for social media either, connection is important, more so today than ever before. Just do not expect to get it from a platform that needs your undivided attention in order to survive.

View File

@@ -1,7 +1,8 @@
---
publish: true
permalink: /10-19 LIFE/11 TRAVEL/11.11 PLACES/US, CO, Fairplay.md
title: US - CO - Fairplay
created: 2026-01-10T15:29:25.889-07:00
created: 2026-01-29T14:04:18.765-07:00
modified: 2026-01-11T15:54:06.320-07:00
tags:
- travel

View File

@@ -1,7 +1,8 @@
---
publish: true
permalink: /10-19 LIFE/11 TRAVEL/11.11 PLACES/US, NV, Las Vegas.md
title: US - NV - Las Vegas
created: 2026-01-10T15:29:21.094-07:00
created: 2026-01-29T14:04:18.359-07:00
modified: 2026-01-20T14:53:41.338-07:00
tags:
- travel

View File

@@ -1,7 +1,8 @@
---
publish: true
permalink: /10-19 LIFE/12 HABITS/12.11 DAILY/10 MLD.md
title: 10 Minimum Lovable Day
created: 2026-01-10T15:29:30.643-07:00
created: 2026-01-29T14:04:18.832-07:00
modified: 2025-07-29T07:24:00.606-06:00
tags:
- productivity

View File

@@ -1,8 +1,80 @@
---
publish: true
created: 2026-01-20T13:37:01.008-07:00
modified: 2026-01-21T13:02:29.790-07:00
permalink: /10-19 LIFE/13 TECH SETUP/13.11 APPS/VeraCrypt.md
title: VeraCrypt
created: 2026-01-29T14:04:18.863-07:00
modified: 2026-02-05T09:11:56.232-07:00
tags:
- encryption
- security
- backup
cssclasses: ""
---
Used for encrypting data, predominantly on portable devices. (see [[10-19 LIFE/13 TECH SETUP/13.12 PROCESSES/Backups]] for more details).
VeraCrypt is free open-source disk encryption software. I use it predominantly for encrypting data on portable devices (see [[10-19 LIFE/13 TECH SETUP/13.12 PROCESSES/Backups]] for more details).
## Installation
**Arch Linux:**
```bash
sudo pacman -S veracrypt
```
**Other distributions:**
Download from https://veracrypt.io/en/Downloads.html
## Usage
### Create an encrypted volume
```bash
veracrypt -c
```
Follow the interactive prompts to:
1. Choose volume type (normal or hidden)
2. Select volume location (file or device)
3. Pick encryption algorithm (AES recommended)
4. Set volume size
5. Create password
### Mount a volume
```bash
# Mount to /mnt/veracrypt1 (default slot 1)
veracrypt /path/to/volume /mnt/veracrypt1
# Mount with specific slot
veracrypt --slot=2 /path/to/volume /mnt/veracrypt2
```
### Dismount
```bash
# Dismount specific volume
veracrypt -d /mnt/veracrypt1
# Dismount all
veracrypt -d
```
## Common Options
| Option | Description |
|--------|-------------|
| `-c` | Create new volume |
| `-d` | Dismount |
| `--slot=N` | Use slot N (1-64) |
| `-t` | Text mode (no GUI) |
| `--non-interactive` | For scripts |
| `-p PASSWORD` | Provide password (insecure, avoid) |
## Portable Drive Setup
For encrypted USB drives:
1. Create a file-hosted volume on the drive
2. Copy the portable VeraCrypt binary to the drive
3. Now usable on any machine without installation
## Tips
- Use keyfiles for additional security (combine with password)
- For full disk encryption on Linux, consider LUKS instead
- Hidden volumes provide plausible deniability
- Always safely eject before removing portable drives

View File

@@ -0,0 +1,105 @@
---
publish: true
permalink: /10-19 LIFE/13 TECH SETUP/13.11 APPS/aerc.md
title: aerc
created: 2026-01-30T08:09:11.034-07:00
modified: 2026-02-05T09:11:56.234-07:00
tags:
- email
- terminal
cssclasses: ""
---
aerc is a terminal email client with vim-like keybindings. It's lightweight, fast, and highly configurable. Works well with [[10-19 LIFE/13 TECH SETUP/13.11 APPS/isync]] for offline IMAP sync.
## Installation
**Arch Linux:**
```bash
sudo pacman -S aerc
```
**Dependencies for full functionality:**
```bash
# HTML rendering
sudo pacman -S w3m
# or: dante (for socksify), pandoc (markdown)
```
## Configuration
Config files live in `~/.config/aerc/`:
### accounts.conf
```ini
[Proton]
source = maildir://~/.local/share/mail/proton
outgoing = smtp+plain://127.0.0.1:1025
default = INBOX
from = Your Name <you@proton.me>
copy-to = Sent
```
### aerc.conf
```ini
[ui]
index-columns = date<20,name<25,flags>4,subject<*
timestamp-format = 2006-01-02 15:04
this-day-time-format = 15:04
this-year-time-format = Jan 02
[compose]
editor = nvim
reply-to-self = false
[filters]
text/plain = colorize
text/html = w3m -T text/html -cols $(tput cols) -dump -o display_image=false
```
### binds.conf
```ini
[messages]
q = :quit<Enter>
j = :next<Enter>
k = :prev<Enter>
Enter = :view<Enter>
c = :compose<Enter>
r = :reply<Enter>
R = :reply -a<Enter>
d = :move Trash<Enter>
```
## Usage
### Navigation
| Key | Action |
|-----|--------|
| `j/k` | Next/prev message |
| `J/K` | Next/prev folder |
| `Enter` | Open message |
| `q` | Back/quit |
| `/` | Search |
### Composing
| Key | Action |
|-----|--------|
| `c` | Compose new |
| `r` | Reply |
| `R` | Reply all |
| `f` | Forward |
| `Ctrl+x` | Send (in editor) |
### Actions
| Key | Action |
|-----|--------|
| `d` | Delete/move to trash |
| `m` | Move to folder |
| `C` | Copy to folder |
| `A` | Archive |
## Tips
- Run `:help` or `:help tutorial` for built-in documentation
- Use with [[10-19 LIFE/13 TECH SETUP/13.11 APPS/isync]] for offline access and faster sync
- Pipe messages through scripts with `:pipe`

View File

@@ -0,0 +1,113 @@
---
publish: true
permalink: /10-19 LIFE/13 TECH SETUP/13.11 APPS/atuin.md
title: atuin
created: 2026-01-30T08:29:14.283-07:00
modified: 2026-02-05T09:11:56.236-07:00
tags:
- shell
- history
- sync
cssclasses: ""
---
Atuin replaces your shell history with a SQLite database, providing better search, sync across machines, and detailed statistics. It's magical for finding that command you ran three weeks ago.
## Installation
**Quick install (recommended):**
```bash
curl --proto '=https' --tlsv1.2 -LsSf https://setup.atuin.sh | sh
```
**Arch Linux:**
```bash
sudo pacman -S atuin
```
## Shell Integration
Add to your shell config:
**Bash** (`~/.bashrc`):
```bash
eval "$(atuin init bash)"
```
**Zsh** (`~/.zshrc`):
```bash
eval "$(atuin init zsh)"
```
**Fish** (`~/.config/fish/config.fish`):
```fish
atuin init fish | source
```
## Usage
### Interactive search
Press `Ctrl+r` (or `Up` with config) to open the interactive search:
- Type to filter
- `Enter` to execute
- `Tab` to edit before running
- `Ctrl+r` to cycle through filter modes
### Filter modes
| Mode | Description |
|------|-------------|
| Global | All history across machines |
| Host | Current machine only |
| Session | Current shell session |
| Directory | Commands run in this directory |
### Commands
```bash
# Search from CLI
atuin search "docker"
# Show stats
atuin stats
# Manual sync
atuin sync
```
## Sync Setup (Optional)
Register for free sync:
```bash
atuin register -u <username> -e <email>
atuin login -u <username>
atuin sync
```
Or self-host the sync server.
## Configuration
`~/.config/atuin/config.toml`:
```toml
[settings]
# Use up arrow for atuin instead of ctrl+r
keymap_mode = "vim-normal"
# Search mode: prefix, fulltext, fuzzy
search_mode = "fuzzy"
# Filter by default
filter_mode = "host"
# Show preview of full command
show_preview = true
# Sync settings
auto_sync = true
sync_frequency = "5m"
```
## Tips
- Atuin stores history in `~/.local/share/atuin/history.db`
- Use `atuin history list` to export/inspect
- Prefix sensitive commands with a space to exclude from history

View File

@@ -0,0 +1,116 @@
---
publish: true
permalink: /10-19 LIFE/13 TECH SETUP/13.11 APPS/impala.md
title: impala
created: 2026-02-05T09:36:55.334-07:00
modified: 2026-02-05T09:41:11.146-07:00
tags:
- wifi
- network
- terminal
cssclasses: ""
---
impala is a TUI for managing WiFi on Linux using iwd as the backend. Much nicer than `iwctl` for day-to-day WiFi management.
## Installation
**Arch Linux:**
```bash
sudo pacman -S impala
```
**Cargo:**
```bash
cargo install impala
```
## Prerequisites
- **iwd** must be running (not wpa_supplicant)
- NetworkManager should use iwd backend (see [[10-19 LIFE/13 TECH SETUP/13.13 OS SETUP/Network]])
- Nerd Fonts (optional) for icons
## Usage
```bash
impala
```
### Key Bindings
| Key | Action |
|-----|--------|
| `j/k` | Navigate up/down |
| `Enter` | Connect to network |
| `d` | Disconnect |
| `r` | Refresh networks |
| `s` | Scan for networks |
| `a` | Toggle Access Point mode |
| `q` | Quit |
### Connecting to Networks
1. Launch `impala`
2. Navigate to network with `j/k`
3. Press `Enter` to connect
4. Enter password if prompted
### Hidden Networks
Press `/` to search/enter a hidden network SSID.
### WPA Enterprise (802.1X)
impala supports enterprise authentication. Select the network and follow prompts for username/password or certificate.
### QR Code Sharing
Press `Q` on a connected network to display a QR code for sharing credentials.
## Configuration
Config file: `~/.config/impala/config.toml`
```toml
[keybindings]
quit = "q"
scan = "s"
connect = "Enter"
disconnect = "d"
[appearance]
# Uses terminal colors by default
```
## Integration
### Ashell
In ashell config, use impala for WiFi management:
```toml
[settings]
wifi_more_cmd = 'kitty -e bash -c "impala"'
```
### Hyprland keybind
```bash
bind = $mainMod, W, exec, kitty -e impala
```
## Troubleshooting
### "iwd not running"
```bash
sudo systemctl enable --now iwd
```
### Conflicts with NetworkManager
NetworkManager must use iwd as backend, not wpa_supplicant. See [[10-19 LIFE/13 TECH SETUP/13.13 OS SETUP/Network#NetworkManager + iwd]].
## Resources
- GitHub: https://github.com/pythops/impala

View File

@@ -0,0 +1,118 @@
---
publish: true
permalink: /10-19 LIFE/13 TECH SETUP/13.11 APPS/isync.md
title: isync (mbsync)
created: 2026-01-30T08:09:43.461-07:00
modified: 2026-02-05T09:12:58.913-07:00
tags:
- email
- sync
- imap
cssclasses: ""
---
isync (command: `mbsync`) is a tool for synchronizing IMAP mailboxes with local Maildir folders. Essential for offline email access with clients like [[10-19 LIFE/13 TECH SETUP/13.11 APPS/aerc]] or mutt.
## Installation
**Arch Linux:**
```bash
sudo pacman -S isync
```
## ProtonMail Integration
ProtonMail requires the Proton Bridge app for IMAP access. See the [Arch Wiki guide](https://wiki.archlinux.org/title/Isync#Integration_with_ProtonMail) for details.
### Setup with Proton Bridge
1. Install and run Proton Bridge
2. Get credentials from Bridge (it generates local IMAP/SMTP credentials)
3. Configure mbsync as below
## Configuration
`~/.mbsyncrc`:
```ini
# Global settings
Create Both
Remove Both
Expunge Both
SyncState *
# ProtonMail via Proton Bridge
IMAPAccount proton
Host 127.0.0.1
Port 1143
User your-email@proton.me
PassCmd "cat ~/.config/proton-bridge/password"
SSLType STARTTLS
CertificateFile ~/.config/proton-bridge/cert.pem
IMAPStore proton-remote
Account proton
MaildirStore proton-local
Path ~/.local/share/mail/proton/
Inbox ~/.local/share/mail/proton/INBOX
SubFolders Verbatim
Channel proton
Far :proton-remote:
Near :proton-local:
Patterns *
```
## Usage
```bash
# Sync all configured channels
mbsync -a
# Sync specific channel
mbsync proton
# Verbose output
mbsync -V proton
# Dry run (show what would happen)
mbsync -n proton
```
## Automation
### systemd timer
`~/.config/systemd/user/mbsync.timer`:
```ini
[Unit]
Description=Sync mail periodically
[Timer]
OnBootSec=1m
OnUnitActiveSec=5m
[Install]
WantedBy=timers.target
```
`~/.config/systemd/user/mbsync.service`:
```ini
[Unit]
Description=Sync mail
[Service]
Type=oneshot
ExecStart=/usr/bin/mbsync -a
```
Enable:
```bash
systemctl --user enable --now mbsync.timer
```
## Tips
- Create the local maildir first: `mkdir -p ~/.local/share/mail/proton`
- Use `PassCmd` to avoid storing passwords in config
- The `Patterns *` line syncs all folders; use specific patterns to limit
- Check sync status with `mbsync -V` for verbose output

View File

@@ -0,0 +1,115 @@
---
publish: true
permalink: /10-19 LIFE/13 TECH SETUP/13.11 APPS/nvim.md
title: nvim (Neovim)
created: 2026-01-30T08:08:10.433-07:00
modified: 2026-02-05T09:12:58.916-07:00
tags:
- editor
- terminal
- development
cssclasses: ""
---
Neovim is a hyperextensible Vim-based text editor. I use [LazyVim](http://www.lazyvim.org/) as a pre-configured distribution for a batteries-included experience.
## Installation
**Arch Linux:**
```bash
sudo pacman -S neovim
```
**Dependencies for full LazyVim experience:**
```bash
sudo pacman -S git lazygit ripgrep fd nodejs npm
```
## LazyVim Setup
LazyVim provides sensible defaults, plugin management, and a curated set of plugins.
**Backup existing config:**
```bash
mv ~/.config/nvim ~/.config/nvim.bak
mv ~/.local/share/nvim ~/.local/share/nvim.bak
```
**Install LazyVim:**
```bash
git clone https://github.com/LazyVim/starter ~/.config/nvim
rm -rf ~/.config/nvim/.git
nvim
```
On first launch, LazyVim will install all plugins automatically.
## Key Bindings (LazyVim defaults)
### General
| Key | Action |
|-----|--------|
| `Space` | Leader key |
| `Space Space` | Find files |
| `Space /` | Live grep |
| `Space e` | File explorer |
| `Space gg` | LazyGit |
### Buffers
| Key | Action |
|-----|--------|
| `Space bd` | Delete buffer |
| `H` / `L` | Prev/next buffer |
| `Space bb` | Switch buffer |
### Windows
| Key | Action |
|-----|--------|
| `Ctrl+h/j/k/l` | Navigate windows |
| `Space w-` | Split horizontal |
| `Space w\|` | Split vertical |
### Code
| Key | Action |
|-----|--------|
| `gd` | Go to definition |
| `gr` | Find references |
| `K` | Hover documentation |
| `Space ca` | Code action |
| `Space cf` | Format |
## Configuration
LazyVim config lives in `~/.config/nvim/lua/`:
### Add plugins
`~/.config/nvim/lua/plugins/custom.lua`:
```lua
return {
-- Add plugins here
{ "tpope/vim-surround" },
-- Override existing plugin config
{
"nvim-treesitter/nvim-treesitter",
opts = {
ensure_installed = { "lua", "python", "typescript" },
},
},
}
```
### Options
`~/.config/nvim/lua/config/options.lua`:
```lua
vim.opt.relativenumber = true
vim.opt.wrap = true
vim.opt.tabstop = 4
```
## Resources
- LazyVim docs: http://www.lazyvim.org/
- Neovim docs: https://neovim.io/doc/
- `:Lazy` - Plugin manager UI
- `:Mason` - LSP/formatter installer

View File

@@ -0,0 +1,119 @@
---
publish: true
permalink: /10-19 LIFE/13 TECH SETUP/13.11 APPS/qutebrowser.md
title: qutebrowser
created: 2026-01-31T15:46:19.286-07:00
modified: 2026-02-05T09:12:58.917-07:00
tags:
- browser
- web
- keyboard
cssclasses: ""
---
qutebrowser is a keyboard-driven web browser with vim-like keybindings. Minimal UI, maximum efficiency.
## Installation
**Arch Linux:**
```bash
sudo pacman -S qutebrowser
```
## Configuration
Config file: `~/.config/qutebrowser/config.py`
```python
# Basic settings
c.content.javascript.enabled = True
c.content.autoplay = False
c.tabs.position = "top"
c.tabs.show = "multiple"
# Search engines
c.url.searchengines = {
'DEFAULT': 'https://duckduckgo.com/?q={}',
'g': 'https://google.com/search?q={}',
'w': 'https://en.wikipedia.org/wiki/{}',
'aw': 'https://wiki.archlinux.org/?search={}',
'gh': 'https://github.com/search?q={}',
'r': 'http://localhost:9873/{}', # urlref integration
}
# Dark mode
c.colors.webpage.darkmode.enabled = True
c.colors.webpage.preferred_color_scheme = "dark"
# Privacy
c.content.cookies.accept = "no-3rdparty"
c.content.headers.do_not_track = True
```
## Key Bindings
### Navigation
| Key | Action |
|-----|--------|
| `j/k` | Scroll down/up |
| `h/l` | Scroll left/right |
| `gg/G` | Top/bottom of page |
| `H/L` | Back/forward |
| `r` | Reload |
### Links & Hints
| Key | Action |
|-----|--------|
| `f` | Follow link (current tab) |
| `F` | Follow link (new tab) |
| `;i` | Hint images |
| `;y` | Yank link URL |
### Tabs
| Key | Action |
|-----|--------|
| `J/K` | Prev/next tab |
| `d` | Close tab |
| `u` | Undo close tab |
| `o` | Open URL |
| `O` | Open URL (new tab) |
| `t` | Open in new tab |
### Commands
| Key | Action |
|-----|--------|
| `:` | Command mode |
| `/` | Search in page |
| `yy` | Yank URL |
| `pp` | Open from clipboard |
## Google Login Fix
Google sometimes blocks qutebrowser. Workaround:
See: https://github.com/qutebrowser/qutebrowser/issues/8492
```python
# Set a Chrome user agent for Google sites
c.content.headers.user_agent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36'
```
Or use per-domain settings:
```python
config.set('content.headers.user_agent',
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36',
'*://accounts.google.com/*')
```
## Userscripts
Store in `~/.local/share/qutebrowser/userscripts/`
See [[10-19 LIFE/13 TECH SETUP/13.11 APPS/urlref]] for an example qutebrowser userscript integration.
## Tips
- `:help` opens the comprehensive help
- Use `:set` to explore available options
- `:bind` to see/modify key bindings
- Greasemonkey scripts work via `c.content.javascript.enabled`

View File

@@ -1,7 +1,8 @@
---
publish: true
permalink: /10-19 LIFE/13 TECH SETUP/13.11 APPS/urlref.md
title: urlref
created: 2026-01-19T18:15:38.889-07:00
created: 2026-01-29T14:04:18.714-07:00
modified: 2026-01-19T18:40:10.504-07:00
tags:
- web
@@ -58,7 +59,7 @@ RestartSec=5
WantedBy=default.target
```
### qutebrowser Integration
This [[qutebrowser]] integration works for me, you are on your own for other browsers!
This [[10-19 LIFE/13 TECH SETUP/13.11 APPS/qutebrowser]] integration works for me, you are on your own for other browsers!
#### Userscript
Should live at `~/.local/share/qutebrowser/userscripts`
```bash

View File

@@ -0,0 +1,104 @@
---
publish: true
permalink: /10-19 LIFE/13 TECH SETUP/13.11 APPS/whosthere.md
title: whosthere
created: 2026-02-05T08:46:27.958-07:00
modified: 2026-02-05T09:12:58.918-07:00
tags:
- network
- lan
- discovery
cssclasses: ""
---
whosthere is a LAN discovery tool with a modern TUI. It discovers devices on your network using mDNS, SSDP, and ARP scanning—all without requiring root privileges.
## Installation
**Arch Linux (via AUR):**
```bash
yay -S whosthere-bin
```
**Homebrew:**
```bash
brew install whosthere
```
**Go:**
```bash
go install github.com/ramonvermeulen/whosthere@latest
```
## Usage
### Interactive TUI
```bash
whosthere
```
Navigate with arrow keys or vim bindings:
- `j/k` - Move up/down
- `Enter` - Select/expand
- `q` - Quit
- `r` - Refresh scan
- `p` - Port scan selected device
### Daemon Mode
Run as a background service with HTTP API:
```bash
whosthere daemon
```
Query via API:
```bash
curl http://localhost:8080/devices
```
### CLI Output
```bash
# JSON output
whosthere --json
# One-shot scan (no TUI)
whosthere --once
```
## Features
- **mDNS discovery** - Finds devices advertising services
- **SSDP scanning** - Discovers UPnP devices
- **ARP cache reading** - Catches everything else
- **OUI lookup** - Shows manufacturer from MAC address
- **Port scanning** - Optional service discovery on found hosts
## Configuration
`~/.config/whosthere/config.yaml`:
```yaml
# Theme customization
theme:
primary: "#7aa2f7"
secondary: "#bb9af7"
# Scan settings
scan:
timeout: 5s
ports: [22, 80, 443, 8080]
# Daemon settings
daemon:
port: 8080
refresh_interval: 60s
```
## Tips
- No root required—uses unprivileged scanning techniques
- Port scanning requires explicit action; only scan devices you own
- Great for finding that Raspberry Pi you forgot the IP of
- Combine with `--json` for scripting and automation
## See Also
- GitHub: https://github.com/ramonvermeulen/whosthere

View File

@@ -0,0 +1,116 @@
---
publish: true
permalink: /10-19 LIFE/13 TECH SETUP/13.11 APPS/zathura.md
title: zathura
created: 2026-02-05T09:08:26.899-07:00
modified: 2026-02-05T09:12:58.920-07:00
tags:
- pdf
- documents
- reader
cssclasses: ""
---
zathura is a minimalist document viewer with vim-like keybindings. Fast, keyboard-driven, and highly customizable.
## Installation
**Arch Linux:**
```bash
sudo pacman -S zathura zathura-pdf-mupdf
```
When prompted for tesseract data (for OCR), select `tesseract-data-eng` for English.
### Backend plugins
| Plugin | Formats |
|--------|---------|
| `zathura-pdf-mupdf` | PDF, EPUB, XPS (recommended) |
| `zathura-pdf-poppler` | PDF (alternative) |
| `zathura-djvu` | DjVu |
| `zathura-ps` | PostScript |
| `zathura-cb` | Comic books (CBZ/CBR) |
## Key Bindings
### Navigation
| Key | Action |
|-----|--------|
| `j/k` | Scroll down/up |
| `h/l` | Scroll left/right |
| `Ctrl+d/u` | Half page down/up |
| `gg/G` | First/last page |
| `nG` | Go to page n |
| `Space` | Next page |
### Zoom
| Key | Action |
|-----|--------|
| `+/-` | Zoom in/out |
| a` | Fit page |
| `s` | Fit width |
### View
| Key | Action |
|-----|--------|
| `d` | Toggle dual-page |
| `r` | Rotate |
| `R` | Reload |
| `Tab` | Toggle index |
| `F11` | Fullscreen |
### Other
| Key | Action |
|-----|--------|
| `/` | Search |
| `n/N` | Next/prev match |
| `y` | Copy selection |
| `o/O` | Open file |
| `q` | Quit |
## Configuration
`~/.config/zathura/zathurarc`:
```bash
# Enable clipboard
set selection-clipboard clipboard
# Recolor for dark mode
set recolor true
set recolor-darkcolor "#ebdbb2"
set recolor-lightcolor "#282828"
# Default zoom
set zoom-min 10
set adjust-open "best-fit"
# Status bar
set statusbar-home-tilde true
# Window
set window-title-basename true
set window-title-page true
```
## Make Default PDF Viewer
```bash
xdg-mime default org.pwmt.zathura.desktop application/pdf
```
## Synctex (LaTeX integration)
For LaTeX editors that support synctex:
```bash
zathura --synctex-forward <line>:<col>:<input> <pdf>
```
Configure your editor to call this for forward search.
## Tips
- `:help` or `man zathura` for full documentation
- Use `:bmark` to bookmark pages
- Use `i` to invert colors (quick dark mode)
- Index/TOC navigation with `Tab` is very useful for long documents

View File

@@ -1,7 +1,8 @@
---
publish: true
permalink: /10-19 LIFE/13 TECH SETUP/13.12 PROCESSES/Backups.md
title: Backups
created: 2026-01-20T13:21:41.646-07:00
created: 2026-01-29T14:04:18.777-07:00
modified: 2026-01-21T22:48:12.310-07:00
cssclasses: ""
---

View File

@@ -0,0 +1,58 @@
---
publish: true
permalink: /10-19 LIFE/13 TECH SETUP/13.13 OS SETUP/00 - Start Here.md
title: 00 - Start Here
created: 2026-02-05T09:20:32.962-07:00
modified: 2026-02-05T09:32:01.211-07:00
tags:
- guide
- arch
- linux
cssclasses: ""
---
# Arch Linux Setup Guide
My personal Arch Linux setup for Framework Laptop 13 (AMD). Follow these guides in order for a complete system.
## Core Installation
1. [[10-19 LIFE/13 TECH SETUP/13.13 OS SETUP/Base Install]] ← **Start here** — LUKS2 + BTRFS + Limine bootloader
2. [[10-19 LIFE/13 TECH SETUP/13.13 OS SETUP/Plymouth]] — Boot splash screen (optional, but nice with LUKS)
## Desktop Environment
3. [[10-19 LIFE/13 TECH SETUP/13.13 OS SETUP/Hyprland Setup]] — Wayland compositor and ecosystem
4. [[10-19 LIFE/13 TECH SETUP/13.13 OS SETUP/hyprlock]] — Screen lock with fingerprint support
5. [[10-19 LIFE/13 TECH SETUP/13.13 OS SETUP/hyprshutdown]] — Graceful shutdown animations
6. [[10-19 LIFE/13 TECH SETUP/13.13 OS SETUP/Ashell]] — Status bar
7. [[10-19 LIFE/13 TECH SETUP/13.13 OS SETUP/Mako]] — Notifications
## System Configuration
8. [[10-19 LIFE/13 TECH SETUP/13.13 OS SETUP/Audio]] — PipeWire and audio fixes
9. [[10-19 LIFE/13 TECH SETUP/13.13 OS SETUP/Network]] — NetworkManager, iwd, Tailscale
10. [[10-19 LIFE/13 TECH SETUP/13.13 OS SETUP/Fonts]] — Font rendering improvements
11. [[10-19 LIFE/13 TECH SETUP/13.13 OS SETUP/Printing]] — CUPS setup
## Utilities
12. [[10-19 LIFE/13 TECH SETUP/13.13 OS SETUP/Shell]] — Starship prompt and shell config
13. [[10-19 LIFE/13 TECH SETUP/13.13 OS SETUP/Disks]] — Automounting with udiskie
14. [[10-19 LIFE/13 TECH SETUP/13.13 OS SETUP/AppImage Management]] — Running and managing AppImages
15. [[10-19 LIFE/13 TECH SETUP/13.13 OS SETUP/Keychain]] — GNOME Keyring for secrets
## Security
16. [[10-19 LIFE/13 TECH SETUP/13.13 OS SETUP/fprintd]] — Fingerprint authentication
17. [[10-19 LIFE/13 TECH SETUP/13.13 OS SETUP/Yubikey]] — Hardware key setup
---
## Quick Reference
| Category | Key Packages |
|----------|-------------|
| Base | `base linux linux-firmware btrfs-progs limine` |
| Boot | `plymouth` |
| Desktop | `hyprland hyprlock hypridle hyprpaper hyprshutdown` |
| Bar | `ashell mako` |
| Audio | `pipewire pipewire-pulse wireplumber` |
| Network | `networkmanager iwd tailscale` |
| Auth | `fprintd gnome-keyring` |
| Utils | `starship udiskie` |

View File

@@ -0,0 +1,118 @@
---
publish: true
permalink: /10-19 LIFE/13 TECH SETUP/13.13 OS SETUP/AppImage Management.md
title: AppImage Management
created: 2026-01-29T15:05:11.266-07:00
modified: 2026-02-05T09:21:56.851-07:00
tags:
- appimage
- apps
cssclasses: ""
---
Managing AppImage applications on Arch Linux.
## Directory Structure
```
~/.local/bin/ # AppImage binaries
~/.local/share/applications/ # Desktop entries
```
## Installation Process
### 1. Download the AppImage
```bash
cd ~/.local/bin
wget "https://example.com/App.AppImage"
chmod +x App.AppImage
```
### 2. Create desktop entry
Create `~/.local/share/applications/app.desktop`:
```ini
[Desktop Entry]
Name=App Name
Comment=Description
Exec=/home/phil/.local/bin/App.AppImage
Icon=app-icon
Type=Application
Categories=Utility;
```
### 3. Update desktop database
```bash
update-desktop-database ~/.local/share/applications/
```
## Electron Apps on Wayland
Many Electron-based AppImages need extra flags for Wayland:
```bash
./App.AppImage --enable-features=UseOzonePlatform --ozone-platform=wayland
```
Update the desktop entry:
```ini
Exec=/home/phil/.local/bin/App.AppImage --enable-features=UseOzonePlatform --ozone-platform=wayland
```
## AppImage Tools
### appimagetool
Extract and repack AppImages:
```bash
# Extract
./App.AppImage --appimage-extract
# Creates squashfs-root/ directory
```
### AppImageLauncher
Integrates AppImages into your system automatically:
```bash
paru -S appimagelauncher
```
Features:
- Prompts to integrate on first run
- Creates desktop entries automatically
- Manages AppImages in a central location
## Helper Script
Save as `~/.local/bin/appimage-install`:
```bash
#!/bin/bash
# Usage: appimage-install App.AppImage "App Name"
APPIMAGE="$1"
NAME="$2"
DEST="$HOME/.local/bin/$(basename "$APPIMAGE")"
cp "$APPIMAGE" "$DEST"
chmod +x "$DEST"
cat > "$HOME/.local/share/applications/${NAME,,}.desktop" << EOF
[Desktop Entry]
Name=$NAME
Exec=$DEST
Type=Application
Categories=Utility;
EOF
update-desktop-database ~/.local/share/applications/
echo "Installed $NAME"
```
## Tips
- Keep AppImages in `~/.local/bin` which should be in your PATH
- Some AppImages bundle their own icon — extract with `--appimage-extract` to find it
- For system-wide install, use `/opt/` and `/usr/share/applications/`

View File

@@ -0,0 +1,122 @@
---
publish: true
permalink: /10-19 LIFE/13 TECH SETUP/13.13 OS SETUP/Ashell.md
title: Ashell
created: 2026-01-29T15:16:18.996-07:00
modified: 2026-02-05T09:23:59.109-07:00
tags:
- hyprland
- statusbar
- wayland
cssclasses: ""
---
Ashell is a lightweight status bar for Wayland compositors like [[10-19 LIFE/13 TECH SETUP/13.13 OS SETUP/Hyprland Setup\|Hyprland]].
## Installation
**From AUR:**
```bash
paru -S ashell
```
**From source:**
```bash
git clone https://github.com/malpenzibo/ashell
cd ashell
cargo build --release
cp target/release/ashell ~/.local/bin/
```
## Hyprland Integration
Add to `~/.config/hypr/hyprland.conf`:
```bash
exec-once = ashell
```
## My Configuration
Config location: `~/.config/ashell/config.toml`
```toml
log_level = "warn"
outputs = { Targets = ["eDP-1"] }
position = "Top"
app_launcher_cmd = "walker"
[modules]
left = [ [ "appLauncher", "Updates", "Workspaces" ] ]
right = [ "SystemInfo", [ "Tray", "Clock", "Privacy", "Settings" ] ]
[updates]
check_cmd = "checkupdates; paru -Qua"
update_cmd = 'kitty -e bash -c "paru; echo Done - Press enter to exit; read" &'
[system_info]
indicators = ["Cpu", "Memory", "Temperature", "IpAddress", "DownloadSpeed", "UploadSpeed"]
[workspaces]
enable_workspace_filling = true
[[CustomModule]]
name = "appLauncher"
icon = "󱗼"
command = "walker"
[window_title]
truncate_title_after_length = 100
[settings]
lock_cmd = "playerctl --all-players pause; hyprlock &"
audio_sinks_more_cmd = "pavucontrol -t 3"
audio_sources_more_cmd = "pavucontrol -t 4"
wifi_more_cmd = 'kitty -e bash -c "impala"'
vpn_more_cmd = "nm-connection-editor"
bluetooth_more_cmd = 'kitty -e bash -c "bluetui"'
shutdown_cmd = "hyprshutdown -t 'Shutting down...' --post-cmd 'shutdown -P 0'"
suspend_cmd = "systemctl suspend"
hibernate_cmd = "systemctl hibernate"
reboot_cmd = "hyprshutdown -t 'Restarting...' --post-cmd 'reboot'"
logout_cmd = "loginctl kill-user $(whoami)"
[appearance]
style = "Islands"
primary_color = "#7aa2f7"
success_color = "#9ece6a"
text_color = "#a9b1d6"
workspace_colors = [ "#7aa2f7", "#9ece6a" ]
special_workspace_colors = [ "#7aa2f7", "#9ece6a" ]
[appearance.danger_color]
base = "#f7768e"
weak = "#e0af68"
[appearance.background_color]
base = "#1a1b26"
weak = "#24273a"
strong = "#414868"
[appearance.secondary_color]
base = "#0c0d14"
```
## Key Features
- **Islands style** — Floating pill-shaped modules
- **Tokyo Night theme** — Colors match my Hyprland/terminal theme
- **Custom app launcher** — Uses Walker with a custom icon
- **System info** — CPU, memory, temp, network speeds
- **Update checker** — Shows pending pacman/AUR updates
- **Integration apps:**
- `walker` — App launcher
- `pavucontrol` — Audio settings
- `impala` — WiFi TUI
- `bluetui` — Bluetooth TUI
- `hyprshutdown` — Graceful shutdown with animation
## Resources
- Documentation: https://malpenzibo.github.io/ashell/
- GitHub: https://github.com/malpenzibo/ashell

View File

@@ -0,0 +1,89 @@
---
publish: true
permalink: /10-19 LIFE/13 TECH SETUP/13.13 OS SETUP/Audio.md
title: Audio
created: 2026-01-29T15:21:02.328-07:00
modified: 2026-02-05T09:20:32.969-07:00
tags:
- audio
- pipewire
- hyprland
cssclasses: ""
---
Audio setup using PipeWire on Arch Linux with Hyprland.
## Installation
Already included in [[10-19 LIFE/13 TECH SETUP/13.13 OS SETUP/Base Install]], but for reference:
```bash
sudo pacman -S \
pipewire pipewire-alsa pipewire-pulse pipewire-jack \
wireplumber sof-firmware
```
## Volume Control
### CLI
```bash
# Using wpctl (WirePlumber)
wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+
wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-
wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle
# Using pactl (PulseAudio compat)
pactl set-sink-volume @DEFAULT_SINK@ +5%
pactl set-sink-volume @DEFAULT_SINK@ -5%
pactl set-sink-mute @DEFAULT_SINK@ toggle
```
### GUI
```bash
sudo pacman -S pavucontrol # GTK
# or
sudo pacman -S pwvucontrol # Qt/PipeWire native
```
### Hyprland Keybinds
```bash
bind = , XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+
bind = , XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-
bind = , XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle
```
## Troubleshooting
### No sound
Check WirePlumber is running:
```bash
systemctl --user status wireplumber
systemctl --user status pipewire
```
Restart if needed:
```bash
systemctl --user restart wireplumber pipewire pipewire-pulse
```
### Headphone jack buzz (Framework AMD)
The AMD board has slight buzz when audio idles. Disable power saving:
Create `/etc/modprobe.d/audio-powersave.conf`:
```
options snd_hda_intel power_save=0
```
### Application-specific issues
Some apps need explicit PipeWire support. Check:
```bash
pactl info | grep "Server Name"
# Should show: PulseAudio (on PipeWire)
```
## Resources
- Detailed guide: https://dev.to/laithalenooz/resolving-audio-issues-on-arch-linux-with-hyprland-a-step-by-step-guide-2n
- Arch Wiki: https://wiki.archlinux.org/title/PipeWire

View File

@@ -0,0 +1,101 @@
---
publish: true
permalink: /10-19 LIFE/13 TECH SETUP/13.13 OS SETUP/Disks.md
title: Disks
created: 2026-01-29T21:46:53.106-07:00
modified: 2026-02-05T09:21:21.430-07:00
tags:
- disks
- automount
- usb
cssclasses: ""
---
Automounting removable drives with udiskie.
## Installation
```bash
sudo pacman -S udiskie udisks2
```
## Usage
### Start udiskie
Run in background (auto-mounts drives):
```bash
udiskie &
```
With tray icon:
```bash
udiskie --tray &
```
### Hyprland Integration
Add to `~/.config/hypr/hyprland.conf`:
```bash
exec-once = udiskie --tray
```
## Configuration
Config location: `~/.config/udiskie/config.yml`
```yaml
program_options:
tray: true
notify: true
automount: true
device_config:
- device_file: /dev/sda1
options:
- noexec
```
## Manual Control
```bash
# Mount
udisksctl mount -b /dev/sdb1
# Unmount
udisksctl unmount -b /dev/sdb1
# Power off (safely eject)
udisksctl power-off -b /dev/sdb
# List drives
lsblk
```
## Encrypted Drives
udiskie handles LUKS-encrypted drives automatically — prompts for password when detected.
For command line:
```bash
# Unlock
udisksctl unlock -b /dev/sdb1
# Then mount
udisksctl mount -b /dev/dm-0
```
## Mount Points
By default, drives mount to `/run/media/$USER/<label>`
## Tips
- Use `--no-automount` if you prefer manual mounting
- Notifications require a notification daemon (e.g., [[10-19 LIFE/13 TECH SETUP/13.13 OS SETUP/Mako]])
- For NTFS support: `sudo pacman -S ntfs-3g`
## Resources
- GitHub: https://github.com/coldfix/udiskie
- Arch Wiki: https://wiki.archlinux.org/title/Udisks

View File

@@ -0,0 +1,106 @@
---
publish: true
permalink: /10-19 LIFE/13 TECH SETUP/13.13 OS SETUP/Fonts.md
title: Fonts
created: 2026-01-29T15:24:42.068-07:00
modified: 2026-02-05T09:21:21.425-07:00
tags:
- fonts
- rendering
- appearance
cssclasses: ""
---
Font installation and rendering improvements for Arch Linux.
## Essential Fonts
```bash
sudo pacman -S \
ttf-dejavu ttf-liberation ttf-roboto \
noto-fonts noto-fonts-cjk noto-fonts-emoji \
ttf-jetbrains-mono ttf-fira-code \
ttf-font-awesome
```
### Nerd Fonts (icons in terminal)
```bash
paru -S ttf-jetbrains-mono-nerd
# or download from https://www.nerdfonts.com/
```
## Font Rendering
Arch's default font rendering can look rough. These tweaks improve it significantly.
### Enable good defaults
```bash
sudo ln -s /usr/share/fontconfig/conf.avail/10-sub-pixel-rgb.conf /etc/fonts/conf.d/
sudo ln -s /usr/share/fontconfig/conf.avail/10-hinting-slight.conf /etc/fonts/conf.d/
sudo ln -s /usr/share/fontconfig/conf.avail/11-lcdfilter-default.conf /etc/fonts/conf.d/
```
### User fontconfig
Create `~/.config/fontconfig/fonts.conf`:
```xml
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
<match target="font">
<edit name="antialias" mode="assign">
<bool>true</bool>
</edit>
<edit name="hinting" mode="assign">
<bool>true</bool>
</edit>
<edit name="hintstyle" mode="assign">
<const>hintslight</const>
</edit>
<edit name="lcdfilter" mode="assign">
<const>lcddefault</const>
</edit>
<edit name="rgba" mode="assign">
<const>rgb</const>
</edit>
</match>
</fontconfig>
```
### Rebuild font cache
```bash
fc-cache -fv
```
## Verify Settings
```bash
fc-match -v sans | grep -E "antialias|hinting|hintstyle|rgba"
```
## Default Fonts
Set preferred defaults:
```xml
<!-- Add to fonts.conf -->
<alias>
<family>sans-serif</family>
<prefer><family>Noto Sans</family></prefer>
</alias>
<alias>
<family>serif</family>
<prefer><family>Noto Serif</family></prefer>
</alias>
<alias>
<family>monospace</family>
<prefer><family>JetBrains Mono</family></prefer>
</alias>
```
## Resources
- Detailed guide: https://github.com/davgar99/arch-linux-font-improvement-guide
- Arch Wiki: https://wiki.archlinux.org/title/Font_configuration

View File

@@ -0,0 +1,203 @@
---
publish: true
permalink: /10-19 LIFE/13 TECH SETUP/13.13 OS SETUP/Hyprland Setup.md
title: Hyprland Setup
created: 2026-01-29T15:09:13.502-07:00
modified: 2026-02-05T09:31:46.733-07:00
tags:
- hyprland
- wayland
- desktop
cssclasses: ""
---
Hyprland is a dynamic tiling Wayland compositor. This covers the full Hyprland ecosystem setup after [[10-19 LIFE/13 TECH SETUP/13.13 OS SETUP/Base Install]].
## Installation
```bash
sudo pacman -S \
hyprland \
hyprlock \
hypridle \
hyprpaper \
hyprpicker \
hyprcursor \
hyprsunset \
xdg-desktop-portal-hyprland \
hyprpolkitagent
```
### Full Package List
All Hyprland ecosystem packages I have installed:
- hyprcursor
- hyprgraphics
- hypridle
- hyprland
- hyprland-guiutils
- hyprland-protocols
- hyprland-qt-support
- hyprlang
- hyprlock
- hyprpaper
- hyprpicker
- hyprpolkitagent
- hyprpwcenter
- hyprsunset
- hyprtoolkit
- hyprutils
- hyprwayland-scanner
- hyprwire
- xdg-desktop-portal-hyprland
### AUR Packages
```bash
paru -S hyprshutdown
```
See [[10-19 LIFE/13 TECH SETUP/13.13 OS SETUP/hyprshutdown]] for build instructions if the AUR version is outdated.
## Related Components
- [[10-19 LIFE/13 TECH SETUP/13.13 OS SETUP/Ashell]] — Status bar
- [[10-19 LIFE/13 TECH SETUP/13.13 OS SETUP/Mako]] — Notifications
- [[10-19 LIFE/13 TECH SETUP/13.13 OS SETUP/hyprlock]] — Screen lock with fingerprint support
- [[10-19 LIFE/13 TECH SETUP/13.13 OS SETUP/hyprshutdown]] — Graceful shutdown animations
- [[10-19 LIFE/13 TECH SETUP/13.13 OS SETUP/fprintd]] — Fingerprint authentication
- [[10-19 LIFE/13 TECH SETUP/13.13 OS SETUP/Plymouth]] — Boot splash screen
## Configuration Structure
My config uses **includes** to keep the main file clean and modular.
### Directory Layout
```
~/.config/hypr/
├── hyprland.conf # Main config (mostly defaults + sources)
├── hyprland.conf.d/ # Modular config includes
│ ├── monitors # Display configuration
│ ├── programs # Variable definitions ($terminal, etc.)
│ ├── autostart # exec-once statements
│ ├── general # Gaps, borders, layout
│ └── keybinds # Custom keybind overrides
├── hyprlock.conf # Lock screen config
├── hypridle.conf # Idle behavior config
├── hyprpaper.conf # Wallpaper config
└── hyprsunset.conf # Night light config
```
### Using Includes
The main `hyprland.conf` uses `source` statements to pull in modular configs:
```bash
# In hyprland.conf
source = ~/.config/hypr/hyprland.conf.d/monitors
source = ~/.config/hypr/hyprland.conf.d/programs
source = ~/.config/hypr/hyprland.conf.d/autostart
source = ~/.config/hypr/hyprland.conf.d/general
source = ~/.config/hypr/hyprland.conf.d/keybinds
```
### Why Includes?
1. **Keep defaults intact** — Main config stays close to upstream defaults
2. **Easy diffing** — Can compare against new Hyprland releases
3. **Modular changes** — Edit just monitors or keybinds without touching the rest
4. **Machine-specific** — Different monitor configs per machine, same base
### Example: programs
Define variables in one place:
```bash
# ~/.config/hypr/hyprland.conf.d/programs
$terminal = kitty
$filemanager = thunar
$menu = walker
```
### Example: autostart
All startup applications:
```bash
# ~/.config/hypr/hyprland.conf.d/autostart
# Hypr ecosystem
exec-once = hyprpaper & hypridle & hyprsunset
# Status bar
exec-once = ashell &
# Services
exec-once = systemctl --user start elephant
exec-once = systemctl --user start hyprpolkitagent
# Apps
exec-once = walker --gapplication-service
exec-once = udiskie &
exec-once = wl-paste --watch cliphist store
exec-once = tailscale up
exec-once = protonmail-bridge-core
```
### Example: keybinds
Override and add custom bindings:
```bash
# ~/.config/hypr/hyprland.conf.d/keybinds
$mainModS = SUPER_SHIFT
# Unbind defaults I don't want
unbind = $mainMod, Q
unbind = $mainMod, C
unbind = $mainMod, R
# My bindings
bind = $mainMod, Return, exec, $terminal
bind = $mainMod, Q, killactive
bind = $mainModS, B, exec, qutebrowser
bind = $mainMod, Space, exec, $menu
```
## Idle Management (hypridle)
Config: `~/.config/hypr/hypridle.conf`
My idle sequence:
1. **2.5 min** — Dim screen + keyboard backlight
2. **5 min** — Lock screen
3. **5.5 min** — Turn off display
4. **30 min** — Suspend
Key settings:
```bash
general {
lock_cmd = pidof hyprlock || hyprlock # Prevent multiple instances
before_sleep_cmd = loginctl lock-session
after_sleep_cmd = hyprctl dispatch dpms on
}
```
## Brightness Control
Install `brightnessctl`:
```bash
sudo pacman -S brightnessctl
```
Framework laptop keybinds (already in default config):
```bash
bindel = ,XF86MonBrightnessUp, exec, brightnessctl -e4 -n2 set 5%+
bindel = ,XF86MonBrightnessDown, exec, brightnessctl -e4 -n2 set 5%-
```
## Tips
- Use `hyprctl` to interact with Hyprland from scripts
- `hyprctl monitors` — list displays
- `hyprctl clients` — list windows
- `hyprctl reload` — reload config without restart

View File

@@ -0,0 +1,107 @@
---
publish: true
permalink: /10-19 LIFE/13 TECH SETUP/13.13 OS SETUP/Keychain.md
title: Keychain
created: 2026-01-29T21:15:48.335-07:00
modified: 2026-02-05T09:21:56.854-07:00
tags:
- security
- secrets
- gnome-keyring
cssclasses: ""
---
GNOME Keyring for managing secrets, SSH keys, and application passwords.
## Installation
```bash
sudo pacman -S gnome-keyring libsecret seahorse
```
- `gnome-keyring` — The keyring daemon
- `libsecret` — Library for apps to access secrets
- `seahorse` — GUI for managing keyring
## PAM Integration
Automatically unlock keyring on login.
Edit `/etc/pam.d/login`:
```
auth optional pam_gnome_keyring.so
session optional pam_gnome_keyring.so auto_start
```
For GDM/SDDM, also edit `/etc/pam.d/passwd`:
```
password optional pam_gnome_keyring.so
```
## Hyprland Integration
Add to `~/.config/hypr/hyprland.conf`:
```bash
exec-once = gnome-keyring-daemon --start --components=secrets,ssh
```
Set environment variables in hyprland.conf:
```bash
env = SSH_AUTH_SOCK,$XDG_RUNTIME_DIR/gcr/ssh
```
Or in your shell profile:
```bash
export SSH_AUTH_SOCK="$XDG_RUNTIME_DIR/gcr/ssh"
```
## SSH Key Management
### Add key to agent
```bash
ssh-add ~/.ssh/id_ed25519
```
### List keys
```bash
ssh-add -l
```
### GUI management
Launch Seahorse:
```bash
seahorse
```
## Unlocking
If keyring doesn't auto-unlock:
```bash
# Manually unlock
gnome-keyring-daemon --unlock
# Or via secret-tool
secret-tool search --unlock xdg:schema org.gnome.keyring.Note
```
## Application Support
Apps using libsecret (most modern apps) will automatically use gnome-keyring. For apps that need explicit setup:
### Git credential storage
```bash
git config --global credential.helper /usr/lib/git-core/git-credential-libsecret
```
### VS Code
VS Code uses gnome-keyring automatically for settings sync.
## Resources
- Arch Wiki: https://wiki.archlinux.org/title/GNOME/Keyring

View File

@@ -0,0 +1,106 @@
---
publish: true
permalink: /10-19 LIFE/13 TECH SETUP/13.13 OS SETUP/Mako.md
title: Mako
created: 2026-01-29T15:18:16.265-07:00
modified: 2026-02-05T09:20:32.970-07:00
tags:
- notifications
- wayland
- hyprland
cssclasses: ""
---
Mako is a lightweight notification daemon for Wayland compositors.
## Installation
```bash
sudo pacman -S mako libnotify
```
## Configuration
Config location: `~/.config/mako/config`
```ini
# Appearance
font=monospace 11
background-color=#282828
text-color=#ebdbb2
border-color=#458588
border-size=2
border-radius=5
# Behavior
default-timeout=5000
ignore-timeout=0
max-visible=5
# Position
anchor=top-right
margin=10
# Grouping
group-by=app-name
# Actions
on-button-left=dismiss
on-button-right=dismiss-all
# Urgency-specific
[urgency=low]
background-color=#282828
[urgency=normal]
background-color=#282828
[urgency=critical]
background-color=#cc241d
default-timeout=0
```
## Hyprland Integration
Add to `~/.config/hypr/hyprland.conf`:
```bash
exec-once = mako
```
## Usage
### Test notifications
```bash
notify-send "Hello" "This is a test notification"
notify-send -u critical "Warning" "This is urgent!"
```
### Control mako
```bash
makoctl dismiss # Dismiss latest
makoctl dismiss --all # Dismiss all
makoctl restore # Restore last dismissed
makoctl list # List waiting notifications
makoctl reload # Reload config
```
## Do Not Disturb
```bash
# Enable DND
makoctl set-mode do-not-disturb
# Disable DND
makoctl set-mode default
```
Add a keybind:
```bash
bind = SUPER, N, exec, makoctl set-mode do-not-disturb
bind = SUPER SHIFT, N, exec, makoctl set-mode default
```
## Resources
- GitHub: https://github.com/emersion/mako
- Man page: `man 5 mako`

View File

@@ -0,0 +1,182 @@
---
publish: true
permalink: /10-19 LIFE/13 TECH SETUP/13.13 OS SETUP/Network.md
title: Network
created: 2026-01-29T14:15:15.157-07:00
modified: 2026-02-05T09:41:11.148-07:00
tags:
- network
- wifi
- tailscale
cssclasses: ""
---
Network configuration using NetworkManager with iwd backend, systemd-resolved for DNS, and Tailscale for mesh networking.
## Architecture
My setup:
- **NetworkManager** — Connection management
- **iwd** — WiFi backend (replaces wpa_supplicant)
- **systemd-resolved** — DNS resolution
- **dhcpcd** — Disabled (NetworkManager handles DHCP)
## Disable dhcpcd
NetworkManager handles DHCP itself, so dhcpcd is not needed and can cause conflicts.
```bash
# Stop and disable dhcpcd
sudo systemctl stop dhcpcd
sudo systemctl disable dhcpcd
# Verify it's not running
systemctl status dhcpcd
```
If you had dhcpcd managing interfaces, NetworkManager will take over after a reboot.
## NetworkManager + iwd
Using iwd as the WiFi backend provides better stability than wpa_supplicant, especially on Framework AMD with the MediaTek WiFi card.
### Configure iwd backend
Create `/etc/NetworkManager/conf.d/wifi-backend.conf`:
```ini
[device]
wifi.backend=iwd
```
### Enable services
```bash
sudo systemctl enable --now NetworkManager
sudo systemctl enable --now iwd
```
### Disable wpa_supplicant (if installed)
```bash
sudo systemctl stop wpa_supplicant
sudo systemctl disable wpa_supplicant
```
## DNS with systemd-resolved
I use systemd-resolved for DNS instead of letting NetworkManager write to `/etc/resolv.conf` directly.
### Enable systemd-resolved
```bash
sudo systemctl enable --now systemd-resolved
```
### Link resolv.conf
```bash
sudo ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf
```
### Configure NetworkManager to use it
Create `/etc/NetworkManager/conf.d/dns.conf`:
```ini
[main]
dns=systemd-resolved
```
### Verify
```bash
resolvectl status
```
## WiFi Management
### CLI (nmcli)
```bash
# List networks
nmcli device wifi list
# Connect
nmcli device wifi connect "SSID" password "password"
# Saved connections
nmcli connection show
# Disconnect
nmcli device disconnect wlan0
# Forget network
nmcli connection delete "SSID"
```
### TUI (impala)
I use [[10-19 LIFE/13 TECH SETUP/13.11 APPS/impala]] for interactive WiFi management — much nicer than `iwctl`:
```bash
impala
```
See [[10-19 LIFE/13 TECH SETUP/13.11 APPS/impala]] for keybindings and configuration.
## Tailscale
Tailscale creates a secure mesh network between all your devices.
### Installation
```bash
curl -fsSL https://tailscale.com/install.sh | sh
```
Or via pacman:
```bash
sudo pacman -S tailscale
```
### Setup
```bash
sudo systemctl enable --now tailscaled
sudo tailscale up
```
Follow the auth URL to connect to your tailnet.
### Useful commands
```bash
tailscale status # Show connected devices
tailscale ip # Show Tailscale IP
tailscale ping <host> # Ping another device
tailscale ssh <host> # SSH to another device (if enabled)
```
### Exit node (use another device as VPN)
```bash
# Enable exit node on a device
sudo tailscale up --advertise-exit-node
# Use an exit node
sudo tailscale up --exit-node=<hostname>
```
## Complete Setup Summary
1. Disable dhcpcd
2. Enable NetworkManager + iwd
3. Disable wpa_supplicant
4. Enable systemd-resolved
5. Link resolv.conf
6. Install Tailscale
7. Install [[10-19 LIFE/13 TECH SETUP/13.11 APPS/impala]] for WiFi TUI
## Resources
- Arch Wiki: https://wiki.archlinux.org/title/NetworkManager#Using_iwd_as_the_Wi-Fi_backend
- Tailscale docs: https://tailscale.com/kb/

View File

@@ -0,0 +1,131 @@
---
publish: true
permalink: /10-19 LIFE/13 TECH SETUP/13.13 OS SETUP/Plymouth.md
title: Plymouth
created: 2026-02-05T09:31:46.739-07:00
modified: 2026-02-05T09:43:32.507-07:00
tags:
- boot
- splash
- luks
cssclasses: ""
---
Plymouth provides a graphical boot splash screen, including during LUKS password entry.
## Installation
```bash
sudo pacman -S plymouth
```
## Configuration
### mkinitcpio (systemd hooks)
I use systemd-based initramfs hooks. Edit `/etc/mkinitcpio.conf`:
```bash
HOOKS=(base systemd autodetect microcode modconf kms keyboard sd-vconsole plymouth sd-encrypt block filesystems resume fsck)
```
Key points:
- Using `systemd` not `udev`
- Using `sd-vconsole` not `keymap consolefont`
- Using `sd-encrypt` not `encrypt`
- `plymouth` comes **after** `sd-vconsole` and **before** `sd-encrypt`
Regenerate initramfs:
```bash
sudo mkinitcpio -P
```
### Kernel Parameters
Add `splash` to your bootloader config.
**For Limine** (`/boot/EFI/limine/limine.conf`):
```
cmdline: quiet splash rd.luks.uuid=<UUID> root=/dev/mapper/root ...
```
> **Note:** With systemd hooks, use `rd.luks.uuid=` instead of `cryptdevice=`
**For systemd-boot** (`/boot/loader/entries/arch.conf`):
```
options quiet splash rd.luks.uuid=<UUID> root=/dev/mapper/root ...
```
### Set Theme
```bash
# List available themes
plymouth-set-default-theme -l
# Set theme (and rebuild initramfs)
sudo plymouth-set-default-theme -R spinner
```
Popular themes:
- `spinner` — Simple spinner (default)
- `bgrt` — Uses manufacturer logo from ACPI
- `fade-in` — Fading star field
### Install more themes
```bash
paru -S plymouth-theme-arch-logo
paru -S plymouth-theme-monoarch
```
## LUKS Integration
Plymouth displays the LUKS password prompt graphically instead of the text console.
For this to work with systemd hooks:
1. `plymouth` hook must be before `sd-encrypt` hook
2. `splash` must be in kernel parameters
3. Use `rd.luks.uuid=` for LUKS device specification
## systemd vs udev Hooks
| udev-based | systemd-based |
|------------|---------------|
| `udev` | `systemd` |
| `keymap consolefont` | `sd-vconsole` |
| `encrypt` | `sd-encrypt` |
| `cryptdevice=UUID=...:name` | `rd.luks.uuid=...` |
## Testing
Test without rebooting:
```bash
sudo plymouthd
sudo plymouth --show-splash
# Press Enter to dismiss
sudo plymouth quit
```
## Troubleshooting
### No splash on boot
1. Verify `splash` is in kernel params
2. Check hook order in mkinitcpio.conf
3. Regenerate initramfs: `sudo mkinitcpio -P`
### LUKS prompt is text-only
The `plymouth` hook must come **before** `sd-encrypt`:
```bash
HOOKS=(... sd-vconsole plymouth sd-encrypt ...)
```
### View boot messages
Remove `quiet` temporarily to see boot messages if Plymouth isn't working.
## Resources
- Arch Wiki: https://wiki.archlinux.org/title/Plymouth
- Arch Wiki (mkinitcpio systemd): https://wiki.archlinux.org/title/Mkinitcpio#Common_hooks

View File

@@ -0,0 +1,95 @@
---
publish: true
permalink: /10-19 LIFE/13 TECH SETUP/13.13 OS SETUP/Printing.md
title: Printing
created: 2026-02-05T08:52:25.911-07:00
modified: 2026-02-05T09:21:21.426-07:00
tags:
- printing
- cups
cssclasses: ""
---
CUPS printing setup for Arch Linux.
## Installation
```bash
sudo pacman -S cups cups-pdf
```
## Enable Services
```bash
sudo systemctl enable --now cups
sudo systemctl enable --now avahi-daemon
```
Avahi enables automatic network printer discovery.
## Configuration
### Web interface
Access CUPS admin at: http://localhost:631
### Add printer via CLI
```bash
# List available printers
lpinfo -v
# Add a printer
lpadmin -p PrinterName -E -v "uri" -m "driver.ppd"
# Set default printer
lpoptions -d PrinterName
```
### Network printers (auto-discovery)
With Avahi running, network printers should appear automatically. If not:
```bash
# Install nss-mdns for .local hostname resolution
sudo pacman -S nss-mdns
# Edit /etc/nsswitch.conf, add mdns_minimal before resolve:
hosts: mymachines mdns_minimal [NOTFOUND=return] resolve [!UNAVAIL=return] files myhostname dns
```
## Print to PDF
The `cups-pdf` package creates a virtual PDF printer:
```bash
# Print to PDF (outputs to ~/PDF/)
lp -d cups-pdf document.txt
```
## Useful Commands
```bash
lpstat -p # List printers
lpstat -t # Full status
lp -d PrinterName file # Print file
cancel <job-id> # Cancel print job
lprm <job-id> # Remove print job
```
## Troubleshooting
```bash
# Check CUPS status
systemctl status cups
# View logs
journalctl -u cups -f
# Restart CUPS
sudo systemctl restart cups
```
## Resources
- Arch Wiki: https://wiki.archlinux.org/title/CUPS

View File

@@ -0,0 +1,153 @@
---
publish: true
permalink: /10-19 LIFE/13 TECH SETUP/13.13 OS SETUP/Shell.md
title: Shell
created: 2026-01-29T16:18:01.019-07:00
modified: 2026-02-05T09:44:18.943-07:00
tags:
- shell
- terminal
- bash
cssclasses: ""
---
Shell configuration with Bash, Starship prompt, and Atuin history.
## Starship Prompt
Starship is a fast, customizable prompt that works with any shell.
### Installation
```bash
curl -sS https://starship.rs/install.sh | sh
```
Or via pacman:
```bash
sudo pacman -S starship
```
### Bash Integration
Add to `~/.bashrc`:
```bash
eval "$(starship init bash)"
```
### Configuration
Config location: `~/.config/starship.toml`
```toml
# Minimal prompt
format = """
$directory\
$git_branch\
$git_status\
$character"""
[directory]
truncation_length = 3
truncate_to_repo = true
[git_branch]
symbol = " "
[git_status]
format = '([$all_status$ahead_behind]($style) )'
[character]
success_symbol = "[](green)"
error_symbol = "[](red)"
```
## Atuin (Shell History)
See [[10-19 LIFE/13 TECH SETUP/13.11 APPS/atuin]] for full setup. Quick integration:
```bash
# Install
curl --proto '=https' --tlsv1.2 -LsSf https://setup.atuin.sh | sh
# Add to ~/.bashrc
. "$HOME/.atuin/bin/env"
[[ -f ~/.bash-preexec.sh ]] && source ~/.bash-preexec.sh
eval "$(atuin init bash)"
```
## My .bashrc Structure
I keep my bashrc clean by sourcing external files:
```bash
# ~/.bashrc
# If not running interactively, don't do anything
[[ $- != *i* ]] && return
# Basic aliases
alias ls='ls --color=auto'
alias grep='grep --color=auto'
# PATH
export PATH="/home/phil/.local/bin:$PATH"
export PATH="$HOME/.npm-global/bin:$PATH"
export PATH="$PATH:$HOME/go/bin"
# Starship
eval "$(starship init bash)"
# Atuin
. "$HOME/.atuin/bin/env"
[[ -f ~/.bash-preexec.sh ]] && source ~/.bash-preexec.sh
eval "$(atuin init bash)"
# Custom config (aliases, functions)
source ~/.config/dotfiles/aliases
source ~/.config/dotfiles/functions
# Completions
source <(openclaw completion --shell bash)
```
### Modular Config
Keep aliases and functions in separate files:
```
~/.config/dotfiles/
├── aliases # alias definitions
└── functions # shell functions
```
This keeps `.bashrc` clean and makes it easy to version control customizations separately.
## Useful Tools
```bash
sudo pacman -S \
fzf # Fuzzy finder
bat # Better cat
eza # Better ls
ripgrep # Better grep
fd # Better find
```
### fzf Integration
```bash
# Add to ~/.bashrc
source /usr/share/fzf/key-bindings.bash
source /usr/share/fzf/completion.bash
```
Keybindings:
- `Ctrl+R` — Search history (or use Atuin)
- `Ctrl+T` — Search files
- `Alt+C` — cd into directory
## Resources
- Starship: https://starship.rs/
- Atuin: https://atuin.sh/

View File

@@ -0,0 +1,143 @@
---
publish: true
permalink: /10-19 LIFE/13 TECH SETUP/13.13 OS SETUP/Yubikey.md
title: Yubikey
created: 2026-01-29T21:27:17.327-07:00
modified: 2026-02-05T09:21:56.856-07:00
tags:
- security
- yubikey
- 2fa
cssclasses: ""
---
YubiKey hardware security key setup on Arch Linux.
## Installation
```bash
sudo pacman -S \
yubikey-manager \
yubico-authenticator \
pcsclite ccid
```
- `yubikey-manager` — CLI tool (`ykman`)
- `yubico-authenticator` — TOTP/HOTP GUI
- `pcsclite`, `ccid` — Smart card daemon
## Enable Services
```bash
sudo systemctl enable --now pcscd
```
## Basic Usage
### Check YubiKey
```bash
ykman info
```
### List OTP slots
```bash
ykman otp info
```
## TOTP Authenticator
Launch the GUI:
```bash
yubico-authenticator
```
Or use CLI:
```bash
# List accounts
ykman oath accounts list
# Get code
ykman oath accounts code "Account Name"
```
## FIDO2/WebAuthn
Works out of the box with modern browsers for passkeys and 2FA.
### udev rules
If YubiKey isn't detected, add udev rules:
```bash
sudo pacman -S libu2f-host
```
Or manually create `/etc/udev/rules.d/70-u2f.rules`:
```
# YubiKey
KERNEL=="hidraw*", SUBSYSTEM=="hidraw", MODE="0664", GROUP="users", ATTRS{idVendor}=="1050"
```
Reload:
```bash
sudo udevadm control --reload-rules
sudo udevadm trigger
```
## SSH Authentication
Use YubiKey for SSH keys via FIDO2:
### Generate key
```bash
ssh-keygen -t ed25519-sk -O resident -O verify-required
```
- `-t ed25519-sk` — FIDO2 key type
- `-O resident` — Store on YubiKey (discoverable)
- `-O verify-required` — Require touch + PIN
### Load resident keys
```bash
ssh-add -K # Load all resident keys from YubiKey
```
## PIV (Smart Card)
For certificate-based auth:
```bash
# Check PIV status
ykman piv info
# Generate key in slot 9a
ykman piv keys generate 9a public.pem
```
## GPG
Use YubiKey as GPG smart card:
```bash
gpg --card-status
gpg --card-edit
```
## Locking Workstation
Lock screen when YubiKey is removed:
```bash
# Install
paru -S yubikey-touch-detector
# Or use udev rule + hyprlock
```
## Resources
- Arch Wiki: https://wiki.archlinux.org/title/Smartcards
- YubiKey docs: https://docs.yubico.com/

View File

@@ -0,0 +1,120 @@
---
publish: true
permalink: /10-19 LIFE/13 TECH SETUP/13.13 OS SETUP/fprintd.md
title: fprintd
created: 2026-02-05T09:31:46.737-07:00
modified: 2026-02-05T09:32:30.884-07:00
tags:
- security
- fingerprint
- authentication
cssclasses: ""
---
Fingerprint authentication daemon for Linux. Works with [[10-19 LIFE/13 TECH SETUP/13.13 OS SETUP/hyprlock]] and system login.
## Installation
```bash
sudo pacman -S fprintd
```
The service starts on-demand, no need to enable it.
## Enroll Fingerprints
```bash
# Enroll a finger (follow prompts)
fprintd-enroll
# Enroll specific finger
fprintd-enroll -f right-index-finger
# List enrolled fingerprints
fprintd-list $USER
```
## PAM Configuration
### For hyprlock
Create `/etc/pam.d/hyprlock`:
```
# PAM configuration file for hyprlock
auth include login
```
This inherits from the login config which includes fprintd.
### For system login
Edit `/etc/pam.d/system-local-login` — usually already configured if using default Arch PAM.
### Manual PAM setup
To add fingerprint auth to any PAM service, add before password auth:
```
auth sufficient pam_fprintd.so
```
## hyprlock Integration
Enable in `~/.config/hypr/hyprlock.conf`:
```bash
auth {
fingerprint {
enabled = true
ready_message = Scan fingerprint to unlock
present_message = Scanning...
retry_delay = 250
}
}
```
## Troubleshooting
### Check service status
```bash
systemctl status fprintd
```
### Verify device detection
```bash
fprintd-list $USER
```
Should show your fingerprint reader device.
### Re-enroll if not working
```bash
fprintd-delete $USER # Delete all prints
fprintd-enroll # Re-enroll
```
### Debug
```bash
# Run fprintd in foreground with debug
sudo /usr/libexec/fprintd -d
```
## Supported Devices
Framework Laptop 13 uses the **Goodix MOC Fingerprint Sensor** which works out of the box with fprintd.
Check if your device is supported:
```bash
lsusb | grep -i fingerprint
```
## Security Notes
- Fingerprint is "sufficient" not "required" — password always works as fallback
- Fingerprints are stored encrypted in `/var/lib/fprint/`
- Consider if fingerprint auth meets your security requirements
## Resources
- Arch Wiki: https://wiki.archlinux.org/title/Fprint

View File

@@ -0,0 +1,188 @@
---
publish: true
permalink: /10-19 LIFE/13 TECH SETUP/13.13 OS SETUP/hyprlock.md
title: hyprlock
created: 2026-02-05T09:31:46.736-07:00
modified: 2026-02-05T09:35:55.743-07:00
tags:
- hyprland
- lockscreen
- security
cssclasses: ""
---
hyprlock is the lock screen for Hyprland with support for fingerprint authentication.
## Installation
```bash
sudo pacman -S hyprlock
```
## My Configuration
Config: `~/.config/hypr/hyprlock.conf`
```bash
$font = Monospace
general {
hide_cursor = false
}
# Fingerprint authentication
auth {
fingerprint {
enabled = true
ready_message = Scan fingerprint to unlock
present_message = Scanning...
retry_delay = 250 # in milliseconds
}
}
animations {
enabled = true
bezier = linear, 1, 1, 0, 0
animation = fadeIn, 1, 5, linear
animation = fadeOut, 1, 5, linear
animation = inputFieldDots, 1, 2, linear
}
background {
monitor =
path = screenshot
blur_passes = 3
}
input-field {
monitor =
size = 20%, 5%
outline_thickness = 3
inner_color = rgba(0, 0, 0, 0.0) # no fill
outer_color = rgba(33ccffee) rgba(00ff99ee) 45deg
check_color = rgba(00ff99ee) rgba(ff6633ee) 120deg
fail_color = rgba(ff6633ee) rgba(ff0066ee) 40deg
font_color = rgb(143, 143, 143)
fade_on_empty = false
rounding = 15
font_family = $font
placeholder_text = Input password...
fail_text = $PAMFAIL
dots_spacing = 0.3
position = 0, -20
halign = center
valign = center
}
# TIME
label {
monitor =
text = $TIME
font_size = 90
font_family = $font
position = -30, 0
halign = right
valign = top
}
# DATE
label {
monitor =
text = cmd[update:60000] date +"%A, %d %B %Y"
font_size = 25
font_family = $font
position = -30, -150
halign = right
valign = top
}
# KEYBOARD LAYOUT
label {
monitor =
text = $LAYOUT[en,ru]
font_size = 24
onclick = hyprctl switchxkblayout all next
position = 250, -20
halign = center
valign = center
}
```
## Key Features
### Fingerprint Support
Requires [[10-19 LIFE/13 TECH SETUP/13.13 OS SETUP/fprintd]] to be configured. The `auth` block enables fingerprint unlock:
```bash
auth {
fingerprint {
enabled = true
ready_message = Scan fingerprint to unlock
present_message = Scanning...
}
}
```
### Screenshot Background
Uses a screenshot of the current screen with blur:
```bash
background {
path = screenshot
blur_passes = 3
}
```
### Gradient Border
Input field has a gradient border matching Hyprland theme:
```bash
outer_color = rgba(33ccffee) rgba(00ff99ee) 45deg
```
## Integration with hypridle
hypridle triggers hyprlock on idle. See [[10-19 LIFE/13 TECH SETUP/13.13 OS SETUP/Hyprland Setup#Idle Management (hypridle)]].
Key config in `~/.config/hypr/hypridle.conf`:
```bash
general {
lock_cmd = pidof hyprlock || hyprlock # Prevent multiple instances
before_sleep_cmd = loginctl lock-session
}
listener {
timeout = 300 # 5 min
on-timeout = loginctl lock-session
}
```
## Manual Lock
```bash
hyprlock
```
Or via keybind:
```bash
bind = $mainMod, L, exec, hyprlock
```
## Shortcuts
While locked:
- `ESC` — Clear password
- `Ctrl+U` — Clear password
- `Ctrl+Backspace` — Clear password
## Resources
- Wiki: https://wiki.hyprland.org/Hypr-Ecosystem/hyprlock

View File

@@ -0,0 +1,78 @@
---
publish: true
permalink: /10-19 LIFE/13 TECH SETUP/13.13 OS SETUP/hyprshutdown.md
title: hyprshutdown
created: 2026-02-05T09:31:46.735-07:00
modified: 2026-02-05T09:31:46.735-07:00
tags:
- hyprland
- shutdown
cssclasses: ""
---
hyprshutdown provides graceful shutdown/reboot with animated transitions for Hyprland.
## Installation
**From AUR:**
```bash
paru -S hyprshutdown
```
**Build from source** (if AUR is outdated):
```bash
git clone https://github.com/hyprwm/hyprshutdown
cd hyprshutdown
cmake .
make all
sudo make install
```
## Usage
```bash
# Shutdown with animation
hyprshutdown -t "Shutting down..." --post-cmd "shutdown -P 0"
# Reboot with animation
hyprshutdown -t "Restarting..." --post-cmd "reboot"
# Custom timeout (ms)
hyprshutdown -t "Goodbye!" --timeout 2000 --post-cmd "shutdown -P 0"
```
## Options
| Option | Description |
|--------|-------------|
| `-t, --text` | Message to display during animation |
| `--post-cmd` | Command to run after animation completes |
| `--timeout` | Animation duration in milliseconds |
## Integration
### Hyprland keybind
```bash
bind = $mainMod, M, exec, command -v hyprshutdown >/dev/null 2>&1 && hyprshutdown || hyprctl dispatch exit
```
### Ashell settings
In ashell config:
```toml
[settings]
shutdown_cmd = "hyprshutdown -t 'Shutting down...' --post-cmd 'shutdown -P 0'"
reboot_cmd = "hyprshutdown -t 'Restarting...' --post-cmd 'reboot'"
```
## Fallback
If hyprshutdown isn't installed, fall back to regular exit:
```bash
command -v hyprshutdown >/dev/null 2>&1 && hyprshutdown || hyprctl dispatch exit
```
## Resources
- GitHub: https://github.com/hyprwm/hyprshutdown

View File

@@ -1,7 +1,8 @@
---
publish: true
permalink: /20-29 HOBBYS/21 TTRPG/21.11 DAGGERHEART/Character Creation.md
title: Character Creation Cheat Sheet
created: 2026-01-10T15:29:30.804-07:00
created: 2026-01-29T14:04:18.364-07:00
modified: 2025-06-24T21:01:37.096-06:00
tags:
- daggerheart

View File

@@ -1,7 +1,8 @@
---
publish: true
permalink: /20-29 HOBBYS/21 TTRPG/21.12 HOLDING BACK SIN/Hub.md
title: 00 - Holding Back Sin
created: 2026-01-10T15:29:22.900-07:00
created: 2026-01-29T14:04:18.607-07:00
modified: 2025-06-26T16:08:06.270-06:00
tags:
- daggerheart

View File

@@ -1,7 +1,8 @@
---
publish: true
permalink: /20-29 HOBBYS/21 TTRPG/21.12 HOLDING BACK SIN/Sin Manifest.md
title: "01 - Campaign Frame: Sin Manifest"
created: 2026-01-10T15:29:29.295-07:00
created: 2026-01-29T14:04:18.718-07:00
modified: 2025-06-25T21:38:30.349-06:00
tags:
- daggerheart
@@ -9,7 +10,7 @@ tags:
cssclasses: ""
---
*Designed by [[06 AUTHOR/Phil Skentelbery]]*
*Designed by [[06 AUTHOR/11 METADATA/Phil Skentelbery]]*
>[!warning] Under Construction
>This page is under construction. Detail's will likely change prior to Session 0

View File

@@ -1,7 +1,8 @@
---
publish: true
permalink: /20-29 HOBBYS/21 TTRPG/21.12 HOLDING BACK SIN/The Church.md
title: The Church
created: 2026-01-10T15:29:28.057-07:00
created: 2026-01-29T14:04:18.879-07:00
modified: 2025-06-24T22:12:24.093-06:00
tags:
- daggerheart

View File

@@ -1,7 +1,8 @@
---
publish: true
permalink: /20-29 HOBBYS/21 TTRPG/21.12 HOLDING BACK SIN/The First Sinner.md
title: The First Sinner
created: 2026-01-10T15:29:22.738-07:00
created: 2026-01-29T14:04:18.545-07:00
modified: 2025-06-24T22:11:57.085-06:00
tags:
- daggerheart

View File

@@ -1,7 +1,8 @@
---
publish: true
permalink: /20-29 HOBBYS/21 TTRPG/21.12 HOLDING BACK SIN/The Old Gods.md
title: The Old Gods
created: 2026-01-10T15:29:33.896-07:00
created: 2026-01-29T14:04:18.493-07:00
modified: 2025-06-24T21:53:46.955-06:00
tags:
- daggerheart

View File

@@ -1,7 +1,8 @@
---
publish: true
permalink: /20-29 HOBBYS/21 TTRPG/21.12 HOLDING BACK SIN/The Pit.md
title: The Pit
created: 2026-01-10T15:29:21.095-07:00
created: 2026-01-29T14:04:18.361-07:00
modified: 2025-06-25T20:35:49.868-06:00
tags:
- daggerheart

View File

@@ -1,7 +1,8 @@
---
publish: true
permalink: /20-29 HOBBYS/21 TTRPG/21.12 HOLDING BACK SIN/Ydrasog.md
title: Ydrasog
created: 2026-01-10T15:29:30.266-07:00
created: 2026-01-29T14:04:18.798-07:00
modified: 2025-06-25T20:29:47.366-06:00
tags:
- daggerheart

View File

@@ -1,7 +1,8 @@
---
publish: true
permalink: /20-29 HOBBYS/22 SELF HOSTING/22.11 DIGITAL GARDEN/Obsidian.md
title: Obsidian Setup for Digital Gardening
created: 2026-01-10T15:29:32.733-07:00
created: 2026-01-29T14:04:18.365-07:00
modified: 2026-01-19T17:48:04.050-07:00
tags:
- self_hosting

View File

@@ -1,7 +1,8 @@
---
publish: true
permalink: /20-29 HOBBYS/22 SELF HOSTING/22.11 DIGITAL GARDEN/Setup.md
title: Digital Garden Setup
created: 2026-01-10T15:29:26.224-07:00
created: 2026-01-29T14:04:18.669-07:00
modified: 2025-07-02T15:44:31.210-06:00
tags:
- self_hosting

View File

@@ -1,6 +1,7 @@
---
publish: true
created: 2026-01-21T22:20:37.846-07:00
permalink: /20-29 HOBBYS/22 SELF HOSTING/22.12 SERVICES/GoToSocial.md
created: 2026-01-29T14:04:18.591-07:00
modified: 2026-01-21T22:26:52.945-07:00
cssclasses: ""
---

View File

@@ -1,6 +1,7 @@
---
publish: true
created: 2026-01-20T13:33:47.497-07:00
permalink: /20-29 HOBBYS/22 SELF HOSTING/22.12 SERVICES/Syncthing.md
created: 2026-01-29T14:04:18.802-07:00
modified: 2026-01-20T13:36:36.219-07:00
cssclasses: ""
---

View File

@@ -1,7 +1,8 @@
---
publish: true
permalink: /20-29 HOBBYS/23 SECURITY/23.11 EVILGINX/00 - Index.md
title: 00 - Start Here
created: 2026-01-10T15:29:21.091-07:00
created: 2026-01-29T14:04:18.808-07:00
modified: 2025-06-26T16:07:26.548-06:00
tags:
- guide

View File

@@ -1,7 +1,8 @@
---
publish: true
permalink: /20-29 HOBBYS/23 SECURITY/23.11 EVILGINX/Installation of Community Edition.md
title: Installing Evilginx Community Edition
created: 2026-01-10T15:29:21.577-07:00
created: 2026-01-29T14:04:18.369-07:00
modified: 2025-06-26T12:40:30.910-06:00
tags:
- phishing

View File

@@ -1,7 +1,8 @@
---
publish: true
permalink: /20-29 HOBBYS/23 SECURITY/23.11 EVILGINX/basic configuration.md
title: Server bootstrapping
created: 2026-01-10T15:29:32.987-07:00
created: 2026-01-29T14:04:18.492-07:00
modified: 2025-06-26T12:37:33.633-06:00
tags:
- evilginx

View File

@@ -1,7 +1,8 @@
---
publish: true
permalink: /20-29 HOBBYS/23 SECURITY/23.11 EVILGINX/configuration.md
title: Evilginx Configuration
created: 2026-01-10T15:29:21.199-07:00
created: 2026-01-29T14:04:18.516-07:00
modified: 2025-06-26T15:12:06.592-06:00
tags:
- evilginx

View File

@@ -1,7 +1,8 @@
---
publish: true
permalink: /20-29 HOBBYS/23 SECURITY/23.11 EVILGINX/phish setup.md
title: Basic Phish Setup
created: 2026-01-10T15:29:29.395-07:00
created: 2026-01-29T14:04:18.366-07:00
modified: 2025-06-27T14:25:27.036-06:00
tags:
- evilginx

View File

@@ -1,7 +1,8 @@
---
publish: true
permalink: /20-29 HOBBYS/24 MTG/24.11 LIMITED/Final Fantasy Draft Notes.md
title: Final Fantasy Draft Notes
created: 2026-01-10T15:29:22.627-07:00
created: 2026-01-29T14:04:18.666-07:00
modified: 2025-07-03T11:29:24.580-06:00
tags:
- mtg

View File

@@ -1,7 +1,8 @@
---
publish: true
permalink: /20-29 HOBBYS/24 MTG/24.12 COMMANDER/Nasty Nasty Necrons.md
title: "Deck: Nasty Nasty Necrons"
created: 2026-01-10T15:29:26.875-07:00
created: 2026-01-29T14:04:18.368-07:00
modified: 2025-07-03T14:27:32.564-06:00
tags:
- mtg

View File

@@ -1,7 +1,8 @@
---
publish: true
permalink: /20-29 HOBBYS/24 MTG/24.13 PAUPER/Planning.md
title: Under Construction
created: 2026-01-19T15:38:24.577-07:00
created: 2026-01-29T14:04:18.357-07:00
modified: 2026-01-19T15:39:08.577-07:00
tags:
- mtg

View File

@@ -1,7 +1,8 @@
---
publish: true
permalink: /index.md
title: Home
created: 2026-01-10T15:29:20.603-07:00
created: 2026-01-29T14:04:18.325-07:00
modified: 2026-01-19T17:58:25.379-07:00
cssclasses: ""
---