Published multiple files
All checks were successful
Build and Deploy Quartz / build (push) Successful in 26s
All checks were successful
Build and Deploy Quartz / build (push) Successful in 26s
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
105
content/10-19 LIFE/13 TECH SETUP/13.11 APPS/aerc.md
Normal file
105
content/10-19 LIFE/13 TECH SETUP/13.11 APPS/aerc.md
Normal 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`
|
||||
113
content/10-19 LIFE/13 TECH SETUP/13.11 APPS/atuin.md
Normal file
113
content/10-19 LIFE/13 TECH SETUP/13.11 APPS/atuin.md
Normal 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
|
||||
116
content/10-19 LIFE/13 TECH SETUP/13.11 APPS/impala.md
Normal file
116
content/10-19 LIFE/13 TECH SETUP/13.11 APPS/impala.md
Normal 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
|
||||
118
content/10-19 LIFE/13 TECH SETUP/13.11 APPS/isync.md
Normal file
118
content/10-19 LIFE/13 TECH SETUP/13.11 APPS/isync.md
Normal 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
|
||||
115
content/10-19 LIFE/13 TECH SETUP/13.11 APPS/nvim.md
Normal file
115
content/10-19 LIFE/13 TECH SETUP/13.11 APPS/nvim.md
Normal 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
|
||||
119
content/10-19 LIFE/13 TECH SETUP/13.11 APPS/qutebrowser.md
Normal file
119
content/10-19 LIFE/13 TECH SETUP/13.11 APPS/qutebrowser.md
Normal 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`
|
||||
@@ -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
|
||||
|
||||
104
content/10-19 LIFE/13 TECH SETUP/13.11 APPS/whosthere.md
Normal file
104
content/10-19 LIFE/13 TECH SETUP/13.11 APPS/whosthere.md
Normal 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
|
||||
116
content/10-19 LIFE/13 TECH SETUP/13.11 APPS/zathura.md
Normal file
116
content/10-19 LIFE/13 TECH SETUP/13.11 APPS/zathura.md
Normal 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
|
||||
@@ -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: ""
|
||||
---
|
||||
|
||||
@@ -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` |
|
||||
@@ -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/`
|
||||
122
content/10-19 LIFE/13 TECH SETUP/13.13 OS SETUP/Ashell.md
Normal file
122
content/10-19 LIFE/13 TECH SETUP/13.13 OS SETUP/Ashell.md
Normal 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
|
||||
89
content/10-19 LIFE/13 TECH SETUP/13.13 OS SETUP/Audio.md
Normal file
89
content/10-19 LIFE/13 TECH SETUP/13.13 OS SETUP/Audio.md
Normal 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
|
||||
101
content/10-19 LIFE/13 TECH SETUP/13.13 OS SETUP/Disks.md
Normal file
101
content/10-19 LIFE/13 TECH SETUP/13.13 OS SETUP/Disks.md
Normal 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
|
||||
106
content/10-19 LIFE/13 TECH SETUP/13.13 OS SETUP/Fonts.md
Normal file
106
content/10-19 LIFE/13 TECH SETUP/13.13 OS SETUP/Fonts.md
Normal 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
|
||||
@@ -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
|
||||
107
content/10-19 LIFE/13 TECH SETUP/13.13 OS SETUP/Keychain.md
Normal file
107
content/10-19 LIFE/13 TECH SETUP/13.13 OS SETUP/Keychain.md
Normal 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
|
||||
106
content/10-19 LIFE/13 TECH SETUP/13.13 OS SETUP/Mako.md
Normal file
106
content/10-19 LIFE/13 TECH SETUP/13.13 OS SETUP/Mako.md
Normal 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`
|
||||
182
content/10-19 LIFE/13 TECH SETUP/13.13 OS SETUP/Network.md
Normal file
182
content/10-19 LIFE/13 TECH SETUP/13.13 OS SETUP/Network.md
Normal 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/
|
||||
131
content/10-19 LIFE/13 TECH SETUP/13.13 OS SETUP/Plymouth.md
Normal file
131
content/10-19 LIFE/13 TECH SETUP/13.13 OS SETUP/Plymouth.md
Normal 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
|
||||
95
content/10-19 LIFE/13 TECH SETUP/13.13 OS SETUP/Printing.md
Normal file
95
content/10-19 LIFE/13 TECH SETUP/13.13 OS SETUP/Printing.md
Normal 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
|
||||
153
content/10-19 LIFE/13 TECH SETUP/13.13 OS SETUP/Shell.md
Normal file
153
content/10-19 LIFE/13 TECH SETUP/13.13 OS SETUP/Shell.md
Normal 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/
|
||||
143
content/10-19 LIFE/13 TECH SETUP/13.13 OS SETUP/Yubikey.md
Normal file
143
content/10-19 LIFE/13 TECH SETUP/13.13 OS SETUP/Yubikey.md
Normal 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/
|
||||
120
content/10-19 LIFE/13 TECH SETUP/13.13 OS SETUP/fprintd.md
Normal file
120
content/10-19 LIFE/13 TECH SETUP/13.13 OS SETUP/fprintd.md
Normal 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
|
||||
188
content/10-19 LIFE/13 TECH SETUP/13.13 OS SETUP/hyprlock.md
Normal file
188
content/10-19 LIFE/13 TECH SETUP/13.13 OS SETUP/hyprlock.md
Normal 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
|
||||
@@ -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
|
||||
Reference in New Issue
Block a user