Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 43 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
# Repository Guidelines

## Project Structure & Module Organization
This repository is a GNU Stow-managed dotfiles monorepo. Each top-level folder is a stow package that maps into `$HOME` (for example `zsh/`, `nvim/`, `kitty/`, `git/`, `ghostty/`, `atuin/`). Package internals usually live under `.config/...`.
Automation and diagnostics live in `scripts/`, with macOS-specific helpers in `scripts/mac/`.
Primary entrypoints:
- `install.sh`: bootstrap and stow on macOS
- `Brewfile`: package dependencies
- `README.md` + per-package `README.md`: component docs

## Build, Test, and Development Commands
- `./install.sh` — full local bootstrap (Homebrew, stow, Neovim sync).
- `brew bundle --file Brewfile` — install/update declared CLI tools.
- `stow -R zsh nvim kitty git` — restow selected packages after edits.
- `./scripts/health-check.sh` — validate symlinks, dependencies, and setup health.
- `./scripts/benchmark.sh` or `./scripts/profile-zsh-startup.sh` — measure shell startup performance.
- `zsh -n zsh/.zshenv zsh/.zshrc` — syntax-check Zsh config changes.

## Coding Style & Naming Conventions
Follow `.editorconfig`:
- 2 spaces for most files (Shell, JSON, YAML, Markdown)
- 4 spaces for Python
- tabs for Go and Makefiles
Use LF endings, trim trailing whitespace (except Markdown), and always end files with a newline.
Name scripts with lowercase kebab-case (for example `toggle-dark-mode.sh`). Keep paths portable (`$HOME`, not hardcoded `/Users/<name>`).

## Testing Guidelines
There is no single unit-test framework; use targeted validation:
- Run `./scripts/health-check.sh` after structural changes.
- Run `zsh -n ...` and `./scripts/test-completion-demo.sh` for shell/completion edits.
- Run `nvim --headless "+Lazy! sync" +qa` after Neovim plugin/config updates.
- Re-run relevant package README steps you changed.

## Commit & Pull Request Guidelines
History favors short, imperative commit subjects (for example `fix ghostty theme sync`, `docs: standardize README`). Keep commits focused to one logical area/package.
PRs should include:
- concise summary of changed packages
- verification commands executed
- linked issue (if applicable)
- screenshots/terminal captures for UI-facing changes (Kitty/Ghostty/Neovim themes).

## Security & Configuration Tips
Do not commit secrets, tokens, or machine-specific credentials. Prefer environment-based configuration (for example `direnv`) and sanitize personal paths before committing.
99 changes: 54 additions & 45 deletions btop/.config/btop/btop.conf
Original file line number Diff line number Diff line change
@@ -1,18 +1,18 @@
#? Config file for btop v. 1.4.5
#? Config file for btop v.1.4.6

#* Name of a btop++/bpytop/bashtop formatted ".theme" file, "Default" and "TTY" for builtin themes.
#* Themes should be placed in "../share/btop/themes" relative to binary or "$HOME/.config/btop/themes"
color_theme = "Default"

#* If the theme set background should be shown, set to False if you want terminal background transparency.
theme_background = False
theme_background = false

#* Sets if 24-bit truecolor should be used, will convert 24-bit colors to 256 color (6x6x6 color cube) if false.
truecolor = True
truecolor = true

#* Set to true to force tty mode regardless if a real tty has been detected or not.
#* Will force 16-color mode and TTY theme, set all graph symbols to "tty" and swap out other non tty friendly symbols.
force_tty = False
force_tty = false

#* Define presets for the layout of the boxes. Preset 0 is always all boxes shown with default settings. Max 9 presets.
#* Format: "box_name:P:G,box_name:P:G" P=(0 or 1) for alternate positions, G=graph symbol to use for box.
Expand All @@ -22,10 +22,13 @@ presets = "cpu:1:default,proc:0:default cpu:0:default,mem:0:default,net:0:defaul

#* Set to True to enable "h,j,k,l,g,G" keys for directional control in lists.
#* Conflicting keys for h:"help" and k:"kill" is accessible while holding shift.
vim_keys = False
vim_keys = false

#* Rounded corners on boxes, is ignored if TTY mode is ON.
rounded_corners = True
rounded_corners = true

#* Use terminal synchronized output sequences to reduce flickering on supported terminals.
terminal_sync = true

#* Default symbols to use for graph creation, "braille", "block" or "tty".
#* "braille" offers the highest resolution but might not be included in all fonts.
Expand Down Expand Up @@ -57,37 +60,40 @@ update_ms = 100
proc_sorting = "cpu lazy"

#* Reverse sorting order, True or False.
proc_reversed = False
proc_reversed = false

#* Show processes as a tree.
proc_tree = False
proc_tree = false

#* Use the cpu graph colors in the process list.
proc_colors = True
proc_colors = true

#* Use a darkening gradient in the process list.
proc_gradient = True
proc_gradient = true

#* If process cpu usage should be of the core it's running on or usage of the total available cpu power.
proc_per_core = False
proc_per_core = false

#* Show process memory as bytes instead of percent.
proc_mem_bytes = True
proc_mem_bytes = true

#* Show cpu graph for each process.
proc_cpu_graphs = True
proc_cpu_graphs = true

#* Use /proc/[pid]/smaps for memory information in the process info box (very slow but more accurate)
proc_info_smaps = False
proc_info_smaps = false

#* Show proc box on left side of screen instead of right.
proc_left = False
proc_left = false

#* (Linux) Filter processes tied to the Linux kernel(similar behavior to htop).
proc_filter_kernel = False
proc_filter_kernel = false

#* In tree-view, always accumulate child process resources in the parent process.
proc_aggregate = False
proc_aggregate = false

#* Should cpu and memory usage display be preserved for dead processes when paused.
keep_dead_proc_usage = false

#* Sets the CPU stat shown in upper half of the CPU graph, "total" is always available.
#* Select from a list of detected attributes from the options menu.
Expand All @@ -98,28 +104,28 @@ cpu_graph_upper = "Auto"
cpu_graph_lower = "Auto"

#* Toggles if the lower CPU graph should be inverted.
cpu_invert_lower = True
cpu_invert_lower = true

#* Set to True to completely disable the lower CPU graph.
cpu_single_graph = False
cpu_single_graph = false

#* Show cpu box at bottom of screen instead of top.
cpu_bottom = False
cpu_bottom = false

#* Shows the system uptime in the CPU box.
show_uptime = True
show_uptime = true

#* Shows the CPU package current power consumption in watts. Requires running `make setcap` or `make setuid` or running with sudo.
show_cpu_watts = True
show_cpu_watts = true

#* Show cpu temperature.
check_temp = True
check_temp = true

#* Which sensor to use for cpu temperature, use options menu to select from list of available sensors.
cpu_sensor = "Auto"

#* Show temperatures for cpu cores also if check_temp is True and sensors has been found.
show_coretemp = True
show_coretemp = true

#* Set a custom mapping between core and coretemp, can be needed on certain cpus to get correct temperature for correct core.
#* Use lm-sensors or similar to see which cores are reporting temperatures on your machine.
Expand All @@ -131,17 +137,17 @@ cpu_core_map = ""
temp_scale = "celsius"

#* Use base 10 for bits/bytes sizes, KB = 1000 instead of KiB = 1024.
base_10_sizes = True
base_10_sizes = true

#* Show CPU frequency.
show_cpu_freq = True
show_cpu_freq = true

#* Draw a clock at top of screen, formatting according to strftime, empty string to disable.
#* Special formatting: /host = hostname | /user = username | /uptime = system uptime
clock_format = "%X"

#* Update main ui in background when menus are showing, set this to false if the menus is flickering too much for comfort.
background_update = True
background_update = true

#* Custom cpu model name, empty string to disable.
custom_cpu_name = ""
Expand All @@ -151,43 +157,43 @@ custom_cpu_name = ""
disks_filter = ""

#* Show graphs instead of meters for memory values.
mem_graphs = True
mem_graphs = true

#* Show mem box below net box instead of above.
mem_below_net = False
mem_below_net = false

#* Count ZFS ARC in cached and available memory.
zfs_arc_cached = True
zfs_arc_cached = true

#* If swap memory should be shown in memory box.
show_swap = True
show_swap = true

#* Show swap as a disk, ignores show_swap value above, inserts itself after first disk.
swap_disk = True
swap_disk = true

#* If mem box should be split to also show disks info.
show_disks = True
show_disks = true

#* Filter out non physical disks. Set this to False to include network disks, RAM disks and similar.
only_physical = True
only_physical = true

#* Read disks list from /etc/fstab. This also disables only_physical.
use_fstab = True
use_fstab = true

#* Setting this to True will hide all datasets, and only show ZFS pools. (IO stats will be calculated per-pool)
zfs_hide_datasets = False
zfs_hide_datasets = false

#* Set to true to show available disk space for privileged users.
disk_free_priv = False
disk_free_priv = false

#* Toggles if io activity % (disk busy time) should be shown in regular disk usage view.
show_io_stat = True
show_io_stat = true

#* Toggles io mode for disks, showing big graphs for disk read/write speeds.
io_mode = False
io_mode = false

#* Set to True to show combined read/write io graphs in io mode.
io_graph_combined = False
io_graph_combined = false

#* Set the top speed for the io graphs in MiB/s (100 by default), use format "mountpoint:speed" separate disks with whitespace " ".
#* Example: "/mnt/media:100 /:20 /boot:1".
Expand All @@ -199,10 +205,10 @@ net_download = 100
net_upload = 100

#* Use network graphs auto rescaling mode, ignores any values set above and rescales down to 10 Kibibytes at the lowest.
net_auto = True
net_auto = true

#* Sync the auto scaling for download and upload to whichever currently has the highest scale.
net_sync = True
net_sync = true

#* Starts with the Network Interface specified here.
net_iface = ""
Expand All @@ -211,14 +217,17 @@ net_iface = ""
base_10_bitrate = "Auto"

#* Show battery stats in top right if battery is present.
show_battery = True
show_battery = true

#* Which battery to use if multiple are present. "Auto" for auto detection.
selected_battery = "Auto"

#* Show power stats of battery next to charge indicator.
show_battery_watts = True
show_battery_watts = true

#* Set loglevel for "~/.config/btop/btop.log" levels are: "ERROR" "WARNING" "INFO" "DEBUG".
#* Set loglevel for "~/.local/state/btop.log" levels are: "ERROR" "WARNING" "INFO" "DEBUG".
#* The level set includes all lower levels, i.e. "DEBUG" will show all logging info.
log_level = "WARNING"

#* Automatically save current settings to config file on exit.
save_config_on_exit = true
37 changes: 26 additions & 11 deletions ghostty/.config/ghostty/config
Original file line number Diff line number Diff line change
Expand Up @@ -6,59 +6,67 @@
# ===========================
# APPEARANCE & THEME
# ===========================
theme = dracula
shell-integration = zsh
#theme = Gruvbox Dark
#theme = Apple System Colors Light
#theme = Catppuccin Latte
theme = light:Builtin Light,dark:Nord
#background-opacity = 0.95

# ===========================
# FONT CONFIGURATION
# ===========================
font-family = "JetBrainsMono Nerd Font Mono"
font-size = 14
font-size = 15
adjust-cell-height = 20%
adjust-cell-width = 2%

# Retina display font rendering (equivalent to kitty's macos_thicken_font 0.25)
font-thicken = true
font-thicken-strength = 70

# ===========================
# CURSOR CONFIGURATION
# ===========================
cursor-style = block
cursor-style-blink = false

adjust-cursor-thickness = 2
# ===========================
# WINDOW & LAYOUT
# ===========================
window-width = 120
window-height = 35
window-decoration = true
window-save-state = always
window-padding-x = 6
window-padding-y = 4
window-padding-balance = true
split-divider-color = #88c0d0
# split-divider-color = #ff2020 # neon red

# ===========================
# PERFORMANCE SETTINGS
# ===========================
confirm-close-surface = false
confirm-close-surface = always
quit-after-last-window-closed = true
shell-integration = zsh

# ===========================
# SCROLLBACK
# ===========================
scrollback-limit = 10000
scrollback-limit = 100000

# ===========================
# MOUSE & INTERACTION
# ===========================
mouse-hide-while-typing = true
copy-on-select = true
link-url = true
clipboard-trim-trailing-spaces = true

# ===========================
# MACOS SETTINGS
# ===========================
macos-option-as-alt = true
macos-titlebar-style = tabs
macos-titlebar-style = native

# ===========================
# RESIZE BEHAVIOR
Expand All @@ -70,14 +78,14 @@ resize-overlay-position = center
# ===========================
# CLIPBOARD
# ===========================
clipboard-read = ask
clipboard-read = allow
clipboard-write = allow

# ===========================
# SHADERS
# ===========================
custom-shader-animation = always
custom-shader = shaders/cursor_tail.glsl
custom-shader = shaders/cursor_warp.glsl
# ===========================
# KEYBINDINGS
# ===========================
Expand All @@ -95,4 +103,11 @@ keybind = cmd+minus=decrease_font_size:1
keybind = cmd+zero=reset_font_size
keybind = cmd+c=copy_to_clipboard
keybind = cmd+v=paste_from_clipboard
keybind = shift+enter=text:\n
keybind = ctrl+shift+r=reload_config

# Split pane management
keybind = cmd+d=new_split:right
keybind = cmd+shift+d=new_split:down
keybind = cmd+left_bracket=goto_split:previous
keybind = cmd+right_bracket=goto_split:next
keybind = cmd+shift+enter=toggle_split_zoom
Loading