Recover missing Brewfile and enhance system updates
- Add missing Brewfile (found in home directory) - Add bashrc and FZF configurations to dotfiles - Install mas CLI for Mac App Store management - Enhance sysupdate() with moon phase and MAS updates - Update symlinks script for all shell configs 🖖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude
parent
1f543d195b
commit
a0e34f78ae
@@ -0,0 +1,173 @@
|
||||
# Brewfile - Curated list for fresh macOS setup
|
||||
# Comment out lines for apps you don't want installed
|
||||
|
||||
# Taps
|
||||
tap "homebrew/cask"
|
||||
tap "homebrew/cask-fonts"
|
||||
|
||||
# ============================================
|
||||
# SHELL & TERMINAL
|
||||
# ============================================
|
||||
brew "antidote" # ZSH plugin manager
|
||||
brew "powerlevel10k" # ZSH theme
|
||||
brew "fzf" # Fuzzy finder
|
||||
brew "zoxide" # Smarter cd command
|
||||
brew "direnv" # Per-directory environment variables
|
||||
brew "tmux" # Terminal multiplexer
|
||||
|
||||
# ============================================
|
||||
# ESSENTIAL CLI TOOLS
|
||||
# ============================================
|
||||
brew "mas" # Mac App Store CLI
|
||||
brew "git" # Version control
|
||||
brew "wget" # Download files
|
||||
brew "tree" # Directory visualization
|
||||
brew "coreutils" # GNU core utilities
|
||||
brew "eza" # Modern ls replacement
|
||||
brew "jq" # JSON processor
|
||||
brew "ripgrep" # Fast grep alternative (rg)
|
||||
brew "fd" # Fast find alternative
|
||||
brew "bat" # Better cat with syntax highlighting
|
||||
brew "tldr" # Simplified man pages
|
||||
brew "httpie" # Modern curl alternative
|
||||
|
||||
# ============================================
|
||||
# DEVELOPMENT TOOLS
|
||||
# ============================================
|
||||
# brew "node" # Node.js (you use nvm instead)
|
||||
brew "python@3.12" # Python (for proselint dependency)
|
||||
brew "python@3.13" # Python (latest)
|
||||
brew "pipx" # Install Python apps in isolated envs
|
||||
brew "pandoc" # Document converter
|
||||
brew "multimarkdown" # Enhanced markdown processor
|
||||
brew "gh" # GitHub CLI
|
||||
brew "proselint" # Prose linter
|
||||
|
||||
# Text editors & IDEs
|
||||
cask "iterm2" # Terminal emulator
|
||||
cask "kitty" # GPU-accelerated terminal
|
||||
cask "bbedit" # Text editor
|
||||
|
||||
# Version control
|
||||
cask "github" # GitHub Desktop
|
||||
|
||||
# ============================================
|
||||
# PRODUCTIVITY & ESSENTIAL APPS
|
||||
# ============================================
|
||||
cask "1password" # Password manager
|
||||
cask "obsidian" # Knowledge base
|
||||
cask "marked" # Markdown preview (Marked 2)
|
||||
cask "launchbar" # Application launcher
|
||||
|
||||
# Communication
|
||||
cask "signal" # Encrypted messaging
|
||||
# cask "telegram" # Messaging
|
||||
|
||||
# ============================================
|
||||
# UTILITIES
|
||||
# ============================================
|
||||
cask "karabiner-elements" # Keyboard customization
|
||||
cask "hazel" # Automated organization
|
||||
cask "keka" # Archive utility
|
||||
cask "appcleaner" # Uninstall apps cleanly
|
||||
cask "bartender" # Menu bar organization
|
||||
cask "swiftbar" # Menu bar scripts
|
||||
cask "soundsource" # Audio control
|
||||
cask "vuescan" # Scanner software
|
||||
|
||||
# ============================================
|
||||
# MEDIA & CREATIVE
|
||||
# ============================================
|
||||
brew "ffmpeg" # Media processing
|
||||
brew "yt-dlp" # YouTube downloader (active fork)
|
||||
brew "exiftool" # Read/write EXIF metadata
|
||||
cask "vlc" # Media player
|
||||
cask "handbrake" # Video transcoder
|
||||
cask "xld" # Audio converter
|
||||
cask "transmission" # BitTorrent client
|
||||
|
||||
# ============================================
|
||||
# OPTIONAL/SPECIFIC USE
|
||||
# ============================================
|
||||
# Research & Reading
|
||||
cask "calibre" # E-book management
|
||||
# cask "zotero" # Reference management
|
||||
# cask "anki" # Spaced repetition
|
||||
|
||||
# Development & Transfer
|
||||
# cask "docker" # Containerization
|
||||
cask "transmit" # FTP/SFTP client
|
||||
|
||||
# Security/Privacy
|
||||
# cask "tunnelblick" # OpenVPN client
|
||||
cask "gpg-suite" # GPG encryption
|
||||
# cask "lulu" # Firewall
|
||||
cask "oversight" # Webcam/mic monitor
|
||||
|
||||
# Other tools
|
||||
brew "neofetch" # System info display
|
||||
brew "qrencode" # Generate QR codes
|
||||
brew "mackup" # Backup/sync app preferences
|
||||
brew "pass" # Password store (for GPG)
|
||||
cask "ollama" # Local LLMs
|
||||
|
||||
# ============================================
|
||||
# FONTS
|
||||
# ============================================
|
||||
cask "font-hack-nerd-font" # Programming font with icons
|
||||
# cask "font-fira-code-nerd-font" # Ligatures + icons
|
||||
# cask "font-jetbrains-mono-nerd-font" # JetBrains + icons
|
||||
# cask "font-meslo-lg-nerd-font" # Powerline + icons
|
||||
# cask "font-source-code-pro-nerd-font" # Adobe Source Code Pro + icons
|
||||
|
||||
# ============================================
|
||||
# MAC APP STORE APPS
|
||||
# ============================================
|
||||
# Productivity
|
||||
mas "Drafts", id: 1435957248
|
||||
mas "iA Writer", id: 775737590
|
||||
mas "Numbers", id: 409203825
|
||||
mas "Pages", id: 409201541
|
||||
mas "PCalc", id: 403504866
|
||||
|
||||
# Communication
|
||||
mas "WhatsApp", id: 1147396723
|
||||
|
||||
# Safari Extensions
|
||||
mas "1Password for Safari", id: 1569813296
|
||||
mas "AdGuard for Safari", id: 1440147259
|
||||
mas "Hush", id: 1544743900
|
||||
mas "Vinegar", id: 1591303229
|
||||
mas "StopTheMadness Pro", id: 6471380298
|
||||
mas "Super Agent", id: 1568262835
|
||||
|
||||
# Reading & Research
|
||||
mas "Reeder.", id: 1529448980
|
||||
mas "Klib", id: 1196268448
|
||||
mas "forScore", id: 363738376
|
||||
|
||||
# Utilities
|
||||
mas "LocalSend", id: 1661733229
|
||||
mas "NordVPN", id: 905953485
|
||||
mas "Table Tool", id: 1122008420
|
||||
mas "xSearch", id: 1579902068
|
||||
mas "Exporter", id: 1099120373
|
||||
mas "Mapper", id: 1589391989
|
||||
mas "Moon Pro", id: 1528941870
|
||||
|
||||
# Privacy/Security
|
||||
mas "Orbot", id: 1609461599
|
||||
|
||||
# Optional (commented out)
|
||||
# mas "Fantastical", id: 975937182
|
||||
# mas "Keynote", id: 409183694
|
||||
# mas "Dark Reader for Safari", id: 1438243180
|
||||
|
||||
# ============================================
|
||||
# APPS TO INSTALL MANUALLY
|
||||
# ============================================
|
||||
# These don't have casks or require special handling:
|
||||
# - Claude
|
||||
# - ChatGPT
|
||||
# - Dorico 5 (Steinberg)
|
||||
# - Some audio production apps
|
||||
@@ -0,0 +1,344 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>Ansi 0 Color</key>
|
||||
<dict>
|
||||
<key>Alpha Component</key>
|
||||
<real>1</real>
|
||||
<key>Blue Component</key>
|
||||
<real>0.32156863808631897</real>
|
||||
<key>Color Space</key>
|
||||
<string>sRGB</string>
|
||||
<key>Green Component</key>
|
||||
<real>0.25882354378700256</real>
|
||||
<key>Red Component</key>
|
||||
<real>0.23137255012989044</real>
|
||||
</dict>
|
||||
<key>Ansi 1 Color</key>
|
||||
<dict>
|
||||
<key>Alpha Component</key>
|
||||
<real>1</real>
|
||||
<key>Blue Component</key>
|
||||
<real>0.41568627953529358</real>
|
||||
<key>Color Space</key>
|
||||
<string>sRGB</string>
|
||||
<key>Green Component</key>
|
||||
<real>0.38039216399192810</real>
|
||||
<key>Red Component</key>
|
||||
<real>0.74901962280273438</real>
|
||||
</dict>
|
||||
<key>Ansi 10 Color</key>
|
||||
<dict>
|
||||
<key>Alpha Component</key>
|
||||
<real>1</real>
|
||||
<key>Blue Component</key>
|
||||
<real>0.54901963472366333</real>
|
||||
<key>Color Space</key>
|
||||
<string>sRGB</string>
|
||||
<key>Green Component</key>
|
||||
<real>0.74509805440902710</real>
|
||||
<key>Red Component</key>
|
||||
<real>0.63921570777893066</real>
|
||||
</dict>
|
||||
<key>Ansi 11 Color</key>
|
||||
<dict>
|
||||
<key>Alpha Component</key>
|
||||
<real>1</real>
|
||||
<key>Blue Component</key>
|
||||
<real>0.54509806632995605</real>
|
||||
<key>Color Space</key>
|
||||
<string>sRGB</string>
|
||||
<key>Green Component</key>
|
||||
<real>0.79607844352722168</real>
|
||||
<key>Red Component</key>
|
||||
<real>0.92156863212585449</real>
|
||||
</dict>
|
||||
<key>Ansi 12 Color</key>
|
||||
<dict>
|
||||
<key>Alpha Component</key>
|
||||
<real>1</real>
|
||||
<key>Blue Component</key>
|
||||
<real>0.75686275959014893</real>
|
||||
<key>Color Space</key>
|
||||
<string>sRGB</string>
|
||||
<key>Green Component</key>
|
||||
<real>0.63137257099151611</real>
|
||||
<key>Red Component</key>
|
||||
<real>0.50588238239288330</real>
|
||||
</dict>
|
||||
<key>Ansi 13 Color</key>
|
||||
<dict>
|
||||
<key>Alpha Component</key>
|
||||
<real>1</real>
|
||||
<key>Blue Component</key>
|
||||
<real>0.67843139171600342</real>
|
||||
<key>Color Space</key>
|
||||
<string>sRGB</string>
|
||||
<key>Green Component</key>
|
||||
<real>0.55686277151107788</real>
|
||||
<key>Red Component</key>
|
||||
<real>0.70588237047195435</real>
|
||||
</dict>
|
||||
<key>Ansi 14 Color</key>
|
||||
<dict>
|
||||
<key>Alpha Component</key>
|
||||
<real>1</real>
|
||||
<key>Blue Component</key>
|
||||
<real>0.73333334922790527</real>
|
||||
<key>Color Space</key>
|
||||
<string>sRGB</string>
|
||||
<key>Green Component</key>
|
||||
<real>0.73725491762161255</real>
|
||||
<key>Red Component</key>
|
||||
<real>0.56078433990478516</real>
|
||||
</dict>
|
||||
<key>Ansi 15 Color</key>
|
||||
<dict>
|
||||
<key>Alpha Component</key>
|
||||
<real>1</real>
|
||||
<key>Blue Component</key>
|
||||
<real>0.95686274766921997</real>
|
||||
<key>Color Space</key>
|
||||
<string>sRGB</string>
|
||||
<key>Green Component</key>
|
||||
<real>0.93725490570068359</real>
|
||||
<key>Red Component</key>
|
||||
<real>0.92549020051956177</real>
|
||||
</dict>
|
||||
<key>Ansi 2 Color</key>
|
||||
<dict>
|
||||
<key>Alpha Component</key>
|
||||
<real>1</real>
|
||||
<key>Blue Component</key>
|
||||
<real>0.54901963472366333</real>
|
||||
<key>Color Space</key>
|
||||
<string>sRGB</string>
|
||||
<key>Green Component</key>
|
||||
<real>0.74509805440902710</real>
|
||||
<key>Red Component</key>
|
||||
<real>0.63921570777893066</real>
|
||||
</dict>
|
||||
<key>Ansi 3 Color</key>
|
||||
<dict>
|
||||
<key>Alpha Component</key>
|
||||
<real>1</real>
|
||||
<key>Blue Component</key>
|
||||
<real>0.54509806632995605</real>
|
||||
<key>Color Space</key>
|
||||
<string>sRGB</string>
|
||||
<key>Green Component</key>
|
||||
<real>0.79607844352722168</real>
|
||||
<key>Red Component</key>
|
||||
<real>0.92156863212585449</real>
|
||||
</dict>
|
||||
<key>Ansi 4 Color</key>
|
||||
<dict>
|
||||
<key>Alpha Component</key>
|
||||
<real>1</real>
|
||||
<key>Blue Component</key>
|
||||
<real>0.75686275959014893</real>
|
||||
<key>Color Space</key>
|
||||
<string>sRGB</string>
|
||||
<key>Green Component</key>
|
||||
<real>0.63137257099151611</real>
|
||||
<key>Red Component</key>
|
||||
<real>0.50588238239288330</real>
|
||||
</dict>
|
||||
<key>Ansi 5 Color</key>
|
||||
<dict>
|
||||
<key>Alpha Component</key>
|
||||
<real>1</real>
|
||||
<key>Blue Component</key>
|
||||
<real>0.67843139171600342</real>
|
||||
<key>Color Space</key>
|
||||
<string>sRGB</string>
|
||||
<key>Green Component</key>
|
||||
<real>0.55686277151107788</real>
|
||||
<key>Red Component</key>
|
||||
<real>0.70588237047195435</real>
|
||||
</dict>
|
||||
<key>Ansi 6 Color</key>
|
||||
<dict>
|
||||
<key>Alpha Component</key>
|
||||
<real>1</real>
|
||||
<key>Blue Component</key>
|
||||
<real>0.81568628549575806</real>
|
||||
<key>Color Space</key>
|
||||
<string>sRGB</string>
|
||||
<key>Green Component</key>
|
||||
<real>0.75294119119644165</real>
|
||||
<key>Red Component</key>
|
||||
<real>0.53333336114883423</real>
|
||||
</dict>
|
||||
<key>Ansi 7 Color</key>
|
||||
<dict>
|
||||
<key>Alpha Component</key>
|
||||
<real>1</real>
|
||||
<key>Blue Component</key>
|
||||
<real>0.94117647409439087</real>
|
||||
<key>Color Space</key>
|
||||
<string>sRGB</string>
|
||||
<key>Green Component</key>
|
||||
<real>0.91372549533843994</real>
|
||||
<key>Red Component</key>
|
||||
<real>0.89803922176361084</real>
|
||||
</dict>
|
||||
<key>Ansi 8 Color</key>
|
||||
<dict>
|
||||
<key>Alpha Component</key>
|
||||
<real>1</real>
|
||||
<key>Blue Component</key>
|
||||
<real>0.41568627953529358</real>
|
||||
<key>Color Space</key>
|
||||
<string>sRGB</string>
|
||||
<key>Green Component</key>
|
||||
<real>0.33725491166114807</real>
|
||||
<key>Red Component</key>
|
||||
<real>0.29803922772407532</real>
|
||||
</dict>
|
||||
<key>Ansi 9 Color</key>
|
||||
<dict>
|
||||
<key>Alpha Component</key>
|
||||
<real>1</real>
|
||||
<key>Blue Component</key>
|
||||
<real>0.41568627953529358</real>
|
||||
<key>Color Space</key>
|
||||
<string>sRGB</string>
|
||||
<key>Green Component</key>
|
||||
<real>0.38039216399192810</real>
|
||||
<key>Red Component</key>
|
||||
<real>0.74901962280273438</real>
|
||||
</dict>
|
||||
<key>Background Color</key>
|
||||
<dict>
|
||||
<key>Alpha Component</key>
|
||||
<real>1</real>
|
||||
<key>Blue Component</key>
|
||||
<real>0.25098040699958801</real>
|
||||
<key>Color Space</key>
|
||||
<string>sRGB</string>
|
||||
<key>Green Component</key>
|
||||
<real>0.20392157137393951</real>
|
||||
<key>Red Component</key>
|
||||
<real>0.18039216101169586</real>
|
||||
</dict>
|
||||
<key>Badge Color</key>
|
||||
<dict>
|
||||
<key>Alpha Component</key>
|
||||
<real>0.5</real>
|
||||
<key>Blue Component</key>
|
||||
<real>0.0</real>
|
||||
<key>Color Space</key>
|
||||
<string>sRGB</string>
|
||||
<key>Green Component</key>
|
||||
<real>0.1491314172744751</real>
|
||||
<key>Red Component</key>
|
||||
<real>1</real>
|
||||
</dict>
|
||||
<key>Bold Color</key>
|
||||
<dict>
|
||||
<key>Alpha Component</key>
|
||||
<real>1</real>
|
||||
<key>Blue Component</key>
|
||||
<real>0.91372549533843994</real>
|
||||
<key>Color Space</key>
|
||||
<string>sRGB</string>
|
||||
<key>Green Component</key>
|
||||
<real>0.87058824300765991</real>
|
||||
<key>Red Component</key>
|
||||
<real>0.84705883264541626</real>
|
||||
</dict>
|
||||
<key>Cursor Color</key>
|
||||
<dict>
|
||||
<key>Alpha Component</key>
|
||||
<real>1</real>
|
||||
<key>Blue Component</key>
|
||||
<real>0.91372549533843994</real>
|
||||
<key>Color Space</key>
|
||||
<string>sRGB</string>
|
||||
<key>Green Component</key>
|
||||
<real>0.87058824300765991</real>
|
||||
<key>Red Component</key>
|
||||
<real>0.84705883264541626</real>
|
||||
</dict>
|
||||
<key>Cursor Guide Color</key>
|
||||
<dict>
|
||||
<key>Alpha Component</key>
|
||||
<real>0.25</real>
|
||||
<key>Blue Component</key>
|
||||
<real>1</real>
|
||||
<key>Color Space</key>
|
||||
<string>sRGB</string>
|
||||
<key>Green Component</key>
|
||||
<real>0.9268307089805603</real>
|
||||
<key>Red Component</key>
|
||||
<real>0.70213186740875244</real>
|
||||
</dict>
|
||||
<key>Cursor Text Color</key>
|
||||
<dict>
|
||||
<key>Alpha Component</key>
|
||||
<real>1</real>
|
||||
<key>Blue Component</key>
|
||||
<real>0.25098040699958801</real>
|
||||
<key>Color Space</key>
|
||||
<string>sRGB</string>
|
||||
<key>Green Component</key>
|
||||
<real>0.20392157137393951</real>
|
||||
<key>Red Component</key>
|
||||
<real>0.18039216101169586</real>
|
||||
</dict>
|
||||
<key>Foreground Color</key>
|
||||
<dict>
|
||||
<key>Alpha Component</key>
|
||||
<real>1</real>
|
||||
<key>Blue Component</key>
|
||||
<real>0.91372549533843994</real>
|
||||
<key>Color Space</key>
|
||||
<string>sRGB</string>
|
||||
<key>Green Component</key>
|
||||
<real>0.87058824300765991</real>
|
||||
<key>Red Component</key>
|
||||
<real>0.84705883264541626</real>
|
||||
</dict>
|
||||
<key>Link Color</key>
|
||||
<dict>
|
||||
<key>Alpha Component</key>
|
||||
<real>1</real>
|
||||
<key>Blue Component</key>
|
||||
<real>0.73423302173614502</real>
|
||||
<key>Color Space</key>
|
||||
<string>sRGB</string>
|
||||
<key>Green Component</key>
|
||||
<real>0.35916060209274292</real>
|
||||
<key>Red Component</key>
|
||||
<real>0.0</real>
|
||||
</dict>
|
||||
<key>Selected Text Color</key>
|
||||
<dict>
|
||||
<key>Alpha Component</key>
|
||||
<real>1</real>
|
||||
<key>Blue Component</key>
|
||||
<real>0.25098040699958801</real>
|
||||
<key>Color Space</key>
|
||||
<string>sRGB</string>
|
||||
<key>Green Component</key>
|
||||
<real>0.20392157137393951</real>
|
||||
<key>Red Component</key>
|
||||
<real>0.18039216101169586</real>
|
||||
</dict>
|
||||
<key>Selection Color</key>
|
||||
<dict>
|
||||
<key>Alpha Component</key>
|
||||
<real>1</real>
|
||||
<key>Blue Component</key>
|
||||
<real>0.81568628549575806</real>
|
||||
<key>Color Space</key>
|
||||
<string>sRGB</string>
|
||||
<key>Green Component</key>
|
||||
<real>0.75294119119644165</real>
|
||||
<key>Red Component</key>
|
||||
<real>0.53333336114883423</real>
|
||||
</dict>
|
||||
</dict>
|
||||
</plist>
|
||||
@@ -0,0 +1,99 @@
|
||||
# iTerm2 Configuration
|
||||
|
||||
This directory contains iTerm2 configuration to match the Kitty terminal setup with Nord theme.
|
||||
|
||||
## Quick Setup
|
||||
|
||||
1. **Import Nord Color Scheme**:
|
||||
```bash
|
||||
# Run the setup script
|
||||
~/dotfiles/config/iterm2/setup-iterm.sh
|
||||
```
|
||||
|
||||
2. **Manual Color Import**:
|
||||
- Open iTerm2
|
||||
- Press `Cmd+,` to open Preferences
|
||||
- Go to **Profiles → Colors**
|
||||
- Click **Color Presets...** dropdown
|
||||
- Select **Import...**
|
||||
- Navigate to `~/dotfiles/config/iterm2/Nord.itermcolors`
|
||||
- Select **Nord** from the Color Presets dropdown
|
||||
|
||||
## Matching Settings with Kitty
|
||||
|
||||
The following settings match your Kitty configuration:
|
||||
|
||||
### Font Configuration
|
||||
- **Font**: Iosevka Term SS08 (or Dank Mono if you prefer)
|
||||
- **Size**: 16pt
|
||||
- **Ligatures**: Enabled
|
||||
- **Non-ASCII Font**: Fira Code Nerd Font (for symbols)
|
||||
|
||||
### Window Settings
|
||||
- **Default Size**: 120 columns × 35 rows
|
||||
- **Transparency**: 8% (equivalent to Kitty's 0.92 opacity)
|
||||
- **Blur**: Optional, helps with readability
|
||||
|
||||
### Behavior
|
||||
- **Scrollback**: 10,000 lines
|
||||
- **Copy on Selection**: Enabled
|
||||
- **Visual Bell**: Enabled (no audio bell)
|
||||
- **Cursor**: Block, blinking
|
||||
|
||||
## Manual Configuration
|
||||
|
||||
If you prefer to configure manually:
|
||||
|
||||
1. **Font**:
|
||||
- Profiles → Text → Font → Change Font
|
||||
- Select "Iosevka Term SS08" or "Dank Mono", Size 16
|
||||
|
||||
2. **Colors**:
|
||||
- Already handled by importing Nord.itermcolors
|
||||
|
||||
3. **Window**:
|
||||
- Profiles → Window → Settings for New Windows
|
||||
- Columns: 120, Rows: 35
|
||||
- Transparency: Drag slider to ~8%
|
||||
|
||||
4. **Terminal**:
|
||||
- Profiles → Terminal → Scrollback Buffer
|
||||
- Set to 10,000 lines
|
||||
|
||||
5. **Keys**:
|
||||
- Profiles → Keys → Key Mappings
|
||||
- Add shortcuts as needed to match Kitty
|
||||
|
||||
## Keyboard Shortcuts
|
||||
|
||||
To match Kitty's shortcuts in iTerm2:
|
||||
|
||||
| Action | Kitty | iTerm2 Setup |
|
||||
|--------|-------|--------------|
|
||||
| New Tab | `Cmd+T` | Default |
|
||||
| Close Tab | `Cmd+W` | Default |
|
||||
| Next Tab | `Cmd+]` | Default |
|
||||
| Previous Tab | `Cmd+[` | Default |
|
||||
| Font Size + | `Cmd+Plus` | Preferences → Keys → + |
|
||||
| Font Size - | `Cmd+Minus` | Preferences → Keys → + |
|
||||
| Font Size Reset | `Cmd+0` | Preferences → Keys → + |
|
||||
|
||||
## Saving Your Configuration
|
||||
|
||||
To save your iTerm2 configuration to dotfiles:
|
||||
|
||||
1. Open Preferences (`Cmd+,`)
|
||||
2. Go to **General → Preferences**
|
||||
3. Click **Load preferences from a custom folder**
|
||||
4. Select `~/dotfiles/config/iterm2`
|
||||
5. Check **Save changes to folder when iTerm2 quits**
|
||||
|
||||
This ensures your iTerm2 settings are backed up with your dotfiles.
|
||||
|
||||
## Nord Theme Benefits
|
||||
|
||||
The Nord color scheme is specifically chosen for:
|
||||
- **Reduced eye strain** with muted colors
|
||||
- **Excellent contrast** without being harsh
|
||||
- **Better readability** for users with vision considerations
|
||||
- **Consistent appearance** across Kitty and iTerm2
|
||||
Executable
+64
@@ -0,0 +1,64 @@
|
||||
#!/usr/bin/env bash
|
||||
# Setup iTerm2 with Nord theme and matching Kitty settings
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
DOTFILES_DIR="$HOME/dotfiles"
|
||||
ITERM_CONFIG_DIR="$DOTFILES_DIR/config/iterm2"
|
||||
|
||||
# Colors
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
BLUE='\033[0;34m'
|
||||
NC='\033[0m'
|
||||
|
||||
echo -e "${BLUE}Setting up iTerm2 configuration...${NC}"
|
||||
|
||||
# 1. Tell iTerm2 to use custom preferences folder
|
||||
echo -e "${YELLOW}Configuring iTerm2 to use dotfiles preferences...${NC}"
|
||||
defaults write com.googlecode.iterm2 PrefsCustomFolder -string "$ITERM_CONFIG_DIR"
|
||||
defaults write com.googlecode.iterm2 LoadPrefsFromCustomFolder -bool true
|
||||
|
||||
# 2. Set specific preferences matching Kitty config
|
||||
echo -e "${YELLOW}Setting iTerm2 preferences to match Kitty...${NC}"
|
||||
|
||||
# Font settings (Iosevka Term SS08, 16pt - matching Kitty)
|
||||
defaults write com.googlecode.iterm2 "Normal Font" -string "IosevkaTermSS08-Regular 16"
|
||||
defaults write com.googlecode.iterm2 "Non Ascii Font" -string "FiraCodeNerdFontComplete-Regular 16"
|
||||
|
||||
# Enable ligatures
|
||||
defaults write com.googlecode.iterm2 "ASCII Ligatures" -bool true
|
||||
|
||||
# Window size (120x35 characters)
|
||||
defaults write com.googlecode.iterm2 "Columns" -int 120
|
||||
defaults write com.googlecode.iterm2 "Rows" -int 35
|
||||
|
||||
# Transparency (matching Kitty's 0.92 opacity = 8% transparency)
|
||||
defaults write com.googlecode.iterm2 "Transparency" -float 0.08
|
||||
|
||||
# Scrollback lines (10000)
|
||||
defaults write com.googlecode.iterm2 "Scrollback Lines" -int 10000
|
||||
|
||||
# Visual bell instead of audio
|
||||
defaults write com.googlecode.iterm2 "Silence Bell" -bool false
|
||||
defaults write com.googlecode.iterm2 "Visual Bell" -bool true
|
||||
|
||||
# Copy on selection
|
||||
defaults write com.googlecode.iterm2 "Copy to Pasteboard on Selection" -bool true
|
||||
|
||||
# Cursor settings
|
||||
defaults write com.googlecode.iterm2 "Cursor Type" -int 0 # Block cursor
|
||||
defaults write com.googlecode.iterm2 "Blinking Cursor" -bool true
|
||||
|
||||
echo -e "${GREEN}✅ iTerm2 preferences configured${NC}"
|
||||
echo ""
|
||||
echo -e "${YELLOW}To complete the setup:${NC}"
|
||||
echo "1. Open iTerm2"
|
||||
echo "2. Go to Preferences > Profiles > Colors"
|
||||
echo "3. Click 'Color Presets...' dropdown"
|
||||
echo "4. Select 'Import...' and choose: $ITERM_CONFIG_DIR/Nord.itermcolors"
|
||||
echo "5. Select 'Nord' from the Color Presets dropdown"
|
||||
echo ""
|
||||
echo "Optional: Export your full iTerm2 config:"
|
||||
echo " Preferences > General > Preferences"
|
||||
echo " Click 'Save settings to Folder' and choose: $ITERM_CONFIG_DIR"
|
||||
@@ -0,0 +1,353 @@
|
||||
# vim:fileencoding=utf-8:ft=conf:foldmethod=marker
|
||||
|
||||
# ═══════════════════════════════════════════════════════════════════════════════
|
||||
# KITTY TERMINAL CONFIGURATION
|
||||
# Following the μέτρον principle: measure, proportion, and what is fitting
|
||||
#
|
||||
# Philosophy:
|
||||
# - Performance without excess
|
||||
# - Visual clarity without distraction
|
||||
# - Keyboard efficiency without complexity
|
||||
# - Durable choices that age well
|
||||
# ═══════════════════════════════════════════════════════════════════════════════
|
||||
|
||||
#: Fonts {{{
|
||||
|
||||
# Font choice rationale: Dank Mono provides excellent readability with
|
||||
# tasteful ligatures that aid code comprehension without being excessive
|
||||
# font_family Dank Mono
|
||||
# bold_font Dank Mono
|
||||
#italic_font Dank Mono
|
||||
# bold_italic_font Dank Mono
|
||||
|
||||
# Font choice rationale: Iosevka Term SS08 has ultra-consistent rhythm, beautiful slant, clear punctuation
|
||||
|
||||
font_family Iosevka Term SS08
|
||||
bold_font Iosevka Term SS08
|
||||
italic_font Iosevka Term SS08
|
||||
bold_italic_font Iosevka Term SS08
|
||||
|
||||
# 16pt provides optimal readability on modern displays without strain
|
||||
font_size 16.0
|
||||
|
||||
# Fallback fonts for symbols and special characters
|
||||
# This ensures proper rendering of powerline, nerd font icons, and unicode
|
||||
symbol_map U+E0A0-U+E0A3,U+E0C0-U+E0C7 PowerlineSymbols
|
||||
symbol_map U+276F-U+2771,U+2500-U+259F Fira Code Nerd Font
|
||||
symbol_map U+E000-U+E00A,U+E100-U+E117,U+E200-U+E2A9,U+E300-U+E3E3,U+E400-U+E4CF,U+E500-U+E5FF,U+E600-U+E6FF,U+E700-U+E7C5,U+E800-U+E8FF,U+EA00-U+EBFF,U+EC00-U+EE0C,U+F000-U+F2E0,U+F300-U+F372,U+F400-U+F533,U+F600-U+F64F,U+F700-U+F7FF,U+F800-U+F8FF,U+F900-U+F9FF,U+FA00-U+FAFF,U+FB00-U+FBFF,U+FC00-U+FCFF,U+FD00-U+FDFF,U+FE00-U+FE0F,U+FE30-U+FE4F Fira Code Nerd Font
|
||||
|
||||
# Mathematical symbols fallback
|
||||
symbol_map U+2200-U+22FF Fira Code Nerd Font
|
||||
|
||||
# Box drawing and block elements with better alignment
|
||||
symbol_map U+2500-U+259F Fira Code Nerd Font
|
||||
|
||||
# Powerline symbols (in case PowerlineSymbols font is not available)
|
||||
symbol_map U+E0A0-U+E0A2,U+E0B0-U+E0B3 Fira Code Nerd Font
|
||||
|
||||
# Enable ligatures for better code readability (!=, =>, etc.)
|
||||
disable_ligatures never
|
||||
|
||||
# Adjust vertical spacing for better readability (5% more line height)
|
||||
adjust_line_height 105%
|
||||
|
||||
# Box drawing characters should align properly
|
||||
box_drawing_scale 0.001, 1, 1.5, 2
|
||||
|
||||
#: }}}
|
||||
|
||||
#: Cursor customization {{{
|
||||
|
||||
# Block cursor for clear visibility
|
||||
cursor_shape block
|
||||
|
||||
# Gentle blinking to locate cursor without distraction
|
||||
cursor_blink_interval 0.5
|
||||
cursor_stop_blinking_after 15.0
|
||||
|
||||
#: }}}
|
||||
|
||||
#: Scrollback {{{
|
||||
|
||||
# Generous but not excessive scrollback (10K lines)
|
||||
scrollback_lines 10000
|
||||
|
||||
# Use less with better options for scrollback viewing
|
||||
scrollback_pager less --chop-long-lines --RAW-CONTROL-CHARS +INPUT_LINE_NUMBER
|
||||
|
||||
# Fill new space when window is enlarged for continuity
|
||||
scrollback_fill_enlarged_window yes
|
||||
|
||||
#: }}}
|
||||
|
||||
#: Mouse {{{
|
||||
|
||||
# Hide mouse quickly when typing
|
||||
mouse_hide_wait 1.0
|
||||
|
||||
# URL handling with clear visual feedback
|
||||
url_color #0087bd
|
||||
url_style curly
|
||||
detect_urls yes
|
||||
|
||||
# Smart clipboard behavior - copy on select for macOS workflow
|
||||
copy_on_select clipboard
|
||||
|
||||
# Remove trailing spaces when copying (clean data)
|
||||
strip_trailing_spaces smart
|
||||
|
||||
# Better word selection boundaries for programming
|
||||
select_by_word_characters @-./_~?&=%+#
|
||||
|
||||
# Focus follows mouse for efficient window management
|
||||
focus_follows_mouse no
|
||||
|
||||
#: }}}
|
||||
|
||||
#: Performance tuning {{{
|
||||
|
||||
# Balanced performance settings
|
||||
repaint_delay 10
|
||||
input_delay 3
|
||||
|
||||
# Sync to monitor to prevent tearing
|
||||
sync_to_monitor yes
|
||||
|
||||
#: }}}
|
||||
|
||||
#: Terminal bell {{{
|
||||
|
||||
# Visual bell instead of audio (less disruptive)
|
||||
enable_audio_bell no
|
||||
visual_bell_duration 0.1
|
||||
window_alert_on_bell yes
|
||||
bell_on_tab yes
|
||||
|
||||
#: }}}
|
||||
|
||||
#: Window layout {{{
|
||||
|
||||
# Remember window size for consistency
|
||||
remember_window_size yes
|
||||
|
||||
# Optimal initial window size for modern development
|
||||
# 120 columns: fits side-by-side code views, exceeds 80-char standard
|
||||
# 35 rows: comfortable viewing without overwhelming
|
||||
initial_window_width 120c
|
||||
initial_window_height 35c
|
||||
|
||||
# All layouts available but start with stack
|
||||
enabled_layouts tall:bias=70,stack,fat,grid,horizontal,vertical
|
||||
|
||||
# Subtle window borders for multi-window clarity
|
||||
window_border_width 1pt
|
||||
draw_minimal_borders yes
|
||||
|
||||
# Small margin for visual breathing room
|
||||
window_margin_width 2
|
||||
single_window_margin_width 0
|
||||
|
||||
# Padding inside windows for readability
|
||||
window_padding_width 8
|
||||
|
||||
# Center cell area when size doesn't divide evenly
|
||||
placement_strategy center
|
||||
|
||||
# Nord-themed window border colors - gentle contrast
|
||||
active_border_color #88c0d0
|
||||
inactive_border_color #4c566a
|
||||
bell_border_color #bf616a
|
||||
|
||||
# Slight fade for inactive windows (maintains focus)
|
||||
inactive_text_alpha 0.8
|
||||
|
||||
# Hide decorations for more screen space
|
||||
hide_window_decorations no
|
||||
|
||||
# Confirm before closing windows with multiple tabs
|
||||
confirm_os_window_close 2
|
||||
|
||||
#: }}}
|
||||
|
||||
#: Tab bar {{{
|
||||
|
||||
# Tab bar at top (conventional placement)
|
||||
tab_bar_edge top
|
||||
|
||||
# Minimal tab bar that appears only when needed
|
||||
tab_bar_min_tabs 2
|
||||
tab_bar_style powerline
|
||||
tab_powerline_style slanted
|
||||
|
||||
# Clear tab titles with index for easy navigation
|
||||
tab_title_template "{index}: {title}"
|
||||
active_tab_title_template "[{index}] {title}"
|
||||
|
||||
# Nord-themed tab colors - easy on the eyes
|
||||
active_tab_foreground #d8dee9
|
||||
active_tab_background #5e81ac
|
||||
active_tab_font_style bold
|
||||
inactive_tab_foreground #4c566a
|
||||
inactive_tab_background #3b4252
|
||||
inactive_tab_font_style normal
|
||||
|
||||
#: }}}
|
||||
|
||||
#: Color scheme {{{
|
||||
|
||||
# Nord color scheme - gentle on eyes with excellent contrast
|
||||
# Specifically chosen for users with vision considerations
|
||||
foreground #d8dee9
|
||||
background #2e3440
|
||||
|
||||
# Slightly more opacity for reduced eye strain
|
||||
background_opacity 0.92
|
||||
|
||||
# Subtle selection colors that don't shock
|
||||
selection_foreground #2e3440
|
||||
selection_background #88c0d0
|
||||
|
||||
# ANSI colors (Nord palette - muted but clear)
|
||||
# Dark variants
|
||||
color0 #3b4252
|
||||
color8 #4c566a
|
||||
|
||||
# Red - muted but visible
|
||||
color1 #bf616a
|
||||
color9 #bf616a
|
||||
|
||||
# Green - gentle on eyes
|
||||
color2 #a3be8c
|
||||
color10 #a3be8c
|
||||
|
||||
# Yellow - warm, not glaring
|
||||
color3 #ebcb8b
|
||||
color11 #ebcb8b
|
||||
|
||||
# Blue - calm but distinct
|
||||
color4 #81a1c1
|
||||
color12 #81a1c1
|
||||
|
||||
# Magenta - subtle purple
|
||||
color5 #b48ead
|
||||
color13 #b48ead
|
||||
|
||||
# Cyan - soothing blue-green
|
||||
color6 #88c0d0
|
||||
color14 #8fbcbb
|
||||
|
||||
# White/light grays
|
||||
color7 #e5e9f0
|
||||
color15 #eceff4
|
||||
|
||||
#: }}}
|
||||
|
||||
#: Advanced {{{
|
||||
|
||||
# Use user's default shell
|
||||
shell .
|
||||
|
||||
# Use configured editor
|
||||
editor .
|
||||
|
||||
# Keep terminal open after process exits (for debugging)
|
||||
close_on_child_death no
|
||||
|
||||
# Allow remote control for automation
|
||||
allow_remote_control yes
|
||||
listen_on unix:/tmp/kitty-{kitty_pid}
|
||||
|
||||
# Disable update checks (handle via homebrew)
|
||||
update_check_interval 0
|
||||
|
||||
# Secure clipboard settings
|
||||
clipboard_control write-clipboard write-primary read-clipboard
|
||||
|
||||
# Standard terminfo
|
||||
term xterm-kitty
|
||||
|
||||
#: }}}
|
||||
|
||||
#: OS specific tweaks {{{
|
||||
|
||||
# macOS optimizations
|
||||
macos_titlebar_color background
|
||||
macos_option_as_alt yes
|
||||
macos_quit_when_last_window_closed no
|
||||
macos_window_resizable yes
|
||||
macos_thicken_font 0
|
||||
macos_traditional_fullscreen no
|
||||
macos_show_window_title_in window
|
||||
|
||||
#: }}}
|
||||
|
||||
#: Keyboard shortcuts {{{
|
||||
|
||||
# Keep defaults minimal, add only essential customizations
|
||||
kitty_mod cmd+shift
|
||||
|
||||
# Font size adjustments
|
||||
map cmd+plus change_font_size all +1.0
|
||||
map cmd+minus change_font_size all -1.0
|
||||
map cmd+0 change_font_size all 0
|
||||
|
||||
# Window management
|
||||
map kitty_mod+enter new_window_with_cwd
|
||||
map kitty_mod+n new_os_window_with_cwd
|
||||
|
||||
# Tab management
|
||||
map cmd+t new_tab_with_cwd
|
||||
map cmd+w close_tab
|
||||
map cmd+] next_tab
|
||||
map cmd+[ previous_tab
|
||||
map cmd+1 goto_tab 1
|
||||
map cmd+2 goto_tab 2
|
||||
map cmd+3 goto_tab 3
|
||||
map cmd+4 goto_tab 4
|
||||
map cmd+5 goto_tab 5
|
||||
map cmd+6 goto_tab 6
|
||||
map cmd+7 goto_tab 7
|
||||
map cmd+8 goto_tab 8
|
||||
map cmd+9 goto_tab 9
|
||||
|
||||
# Layout management
|
||||
map kitty_mod+l next_layout
|
||||
map kitty_mod+z toggle_layout stack
|
||||
|
||||
# Scrollback search (crucial for productivity)
|
||||
map kitty_mod+/ launch --type=overlay --stdin-source=@screen_scrollback /opt/homebrew/bin/fzf --no-sort --no-mouse --exact -i
|
||||
|
||||
# URL/path hints
|
||||
map kitty_mod+e open_url_with_hints
|
||||
map kitty_mod+p>f kitten hints --type path --program -
|
||||
map kitty_mod+p>l kitten hints --type line --program -
|
||||
map kitty_mod+p>w kitten hints --type word --program -
|
||||
|
||||
# Clear terminal properly
|
||||
map cmd+k clear_terminal reset active
|
||||
|
||||
# Reload configuration
|
||||
map kitty_mod+f5 load_config_file
|
||||
|
||||
#: }}}
|
||||
|
||||
# ═══════════════════════════════════════════════════════════════════════════════
|
||||
# Design Rationale:
|
||||
#
|
||||
# 1. Font: Dank Mono chosen for clarity and tasteful ligatures
|
||||
# 2. Symbols: Comprehensive fallback chain for nerd fonts, powerline, unicode
|
||||
# 3. Colors: Dracula theme for proven readability and wide tool support
|
||||
# 4. Performance: Balanced settings that prioritize responsiveness
|
||||
# 5. Shortcuts: Minimal additions to defaults, focusing on frequent tasks
|
||||
# 6. Layout: Thoughtful spacing and borders for multi-window work
|
||||
# 7. macOS: Native integration while maintaining terminal efficiency
|
||||
# 8. Window Size: 120x35 chars - optimal for code reading and side-by-side splits
|
||||
#
|
||||
# The symbol_map entries ensure that powerline prompts, file icons, git symbols,
|
||||
# and other special characters render correctly even when not in the primary font.
|
||||
#
|
||||
# The 120-column width allows comfortable viewing of code up to 100 chars with
|
||||
# some margin, while 35 rows provides good context without overwhelming.
|
||||
#
|
||||
# This configuration embodies "what is fitting" - no more, no less.
|
||||
# ═══════════════════════════════════════════════════════════════════════════════
|
||||
@@ -41,8 +41,11 @@ link_file() {
|
||||
# Shell configurations
|
||||
echo -e "${YELLOW}Linking shell configurations...${NC}"
|
||||
link_file "$DOTFILES_DIR/shell/.zshrc" "$HOME/.zshrc"
|
||||
link_file "$DOTFILES_DIR/shell/.bashrc" "$HOME/.bashrc"
|
||||
link_file "$DOTFILES_DIR/shell/.zprofile" "$HOME/.zprofile"
|
||||
link_file "$DOTFILES_DIR/shell/.p10k.zsh" "$HOME/.p10k.zsh"
|
||||
link_file "$DOTFILES_DIR/shell/.fzf.bash" "$HOME/.fzf.bash"
|
||||
link_file "$DOTFILES_DIR/shell/.fzf.zsh" "$HOME/.fzf.zsh"
|
||||
link_file "$DOTFILES_DIR/.gitconfig" "$HOME/.gitconfig"
|
||||
link_file "$DOTFILES_DIR/.vimrc" "$HOME/.vimrc"
|
||||
link_file "$DOTFILES_DIR/.npmrc" "$HOME/.npmrc"
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
[ -f ~/.fzf.bash ] && source ~/.fzf.bash
|
||||
@@ -0,0 +1,7 @@
|
||||
# Setup fzf
|
||||
# ---------
|
||||
if [[ ! "$PATH" == */Users/davidglidden/.fzf/bin* ]]; then
|
||||
PATH="${PATH:+${PATH}:}/Users/davidglidden/.fzf/bin"
|
||||
fi
|
||||
|
||||
eval "$(fzf --bash)"
|
||||
@@ -0,0 +1,7 @@
|
||||
# Setup fzf
|
||||
# ---------
|
||||
if [[ ! "$PATH" == */Users/davidglidden/.fzf/bin* ]]; then
|
||||
PATH="${PATH:+${PATH}:}/Users/davidglidden/.fzf/bin"
|
||||
fi
|
||||
|
||||
source <(fzf --zsh)
|
||||
+44
-6
@@ -41,6 +41,23 @@ sysupdate() {
|
||||
return 1
|
||||
fi
|
||||
|
||||
# Mac App Store updates
|
||||
echo "🍎 Updating Mac App Store apps..."
|
||||
if command -v mas >/dev/null; then
|
||||
local mas_outdated=$(mas outdated)
|
||||
if [[ -n "$mas_outdated" ]]; then
|
||||
echo "📱 Updating MAS apps:"
|
||||
echo "$mas_outdated" | while read -r line; do
|
||||
echo " $line"
|
||||
done
|
||||
mas upgrade || echo "⚠️ Some MAS updates may require manual intervention"
|
||||
else
|
||||
echo "✅ All MAS apps are up to date"
|
||||
fi
|
||||
else
|
||||
echo "⚠️ mas not installed - install with: brew install mas"
|
||||
fi
|
||||
|
||||
# Verify critical tools still work
|
||||
local critical_tools=(git zsh python3 brew)
|
||||
for tool in "${critical_tools[@]}"; do
|
||||
@@ -61,24 +78,45 @@ sysupdate() {
|
||||
(cd ~/.fzf && git pull && ./install --all) >/dev/null 2>&1 || true
|
||||
fi
|
||||
|
||||
# Fix Zsh completion security warnings
|
||||
echo "🔒 Checking Zsh completion security..."
|
||||
if [[ -d "/opt/homebrew/share/zsh" ]]; then
|
||||
# Fix common Homebrew Zsh permission issues
|
||||
chmod 755 /opt/homebrew/share/zsh /opt/homebrew/share/zsh/site-functions 2>/dev/null || true
|
||||
fi
|
||||
|
||||
# Check for broken symlinks
|
||||
echo "🧹 Checking for broken symlinks..."
|
||||
local broken_links=$(find "/usr/local/bin" "$HOME/bin" "$HOME/.local/bin" -xtype l 2>/dev/null)
|
||||
[[ -n "$broken_links" ]] && echo "🔗 Broken symlinks found:\n$broken_links"
|
||||
|
||||
# Moon phase logging (with API key check and graceful failure)
|
||||
# Moon phase logging (using SwiftBar API key)
|
||||
echo "🌓 Celestial context:"
|
||||
if [[ -n "$MOON_API_KEY" ]] && command -v curl >/dev/null && command -v jq >/dev/null; then
|
||||
local moon_json=$(curl -s "https://api.ipgeolocation.io/astronomy?apiKey=$MOON_API_KEY" 2>/dev/null)
|
||||
if command -v curl >/dev/null && command -v jq >/dev/null; then
|
||||
# Use API key from SwiftBar script
|
||||
local api_key="6ec71a8170214d828c08ba8bf2ca29e9"
|
||||
local moon_json=$(curl -s "https://api.ipgeolocation.io/astronomy?apiKey=$api_key" 2>/dev/null)
|
||||
if [[ $? -eq 0 ]] && [[ -n "$moon_json" ]]; then
|
||||
local moon_phase=$(echo "$moon_json" | jq -r '.moon_phase // "Unknown"')
|
||||
local moon_phase=$(echo "$moon_json" | jq -r '.moon_phase // "Unknown"' | tr '_' ' ')
|
||||
local illum=$(echo "$moon_json" | jq -r '.moon_illumination_percentage // "Unknown"')
|
||||
echo "🌙 $moon_phase (${illum}%)"
|
||||
# Add moon emoji based on phase
|
||||
local moon_emoji="🌙"
|
||||
case "$moon_phase" in
|
||||
"new moon") moon_emoji="🌑" ;;
|
||||
"waxing crescent") moon_emoji="🌒" ;;
|
||||
"first quarter") moon_emoji="🌓" ;;
|
||||
"waxing gibbous") moon_emoji="🌔" ;;
|
||||
"full moon") moon_emoji="🌕" ;;
|
||||
"waning gibbous") moon_emoji="🌖" ;;
|
||||
"last quarter") moon_emoji="🌗" ;;
|
||||
"waning crescent") moon_emoji="🌘" ;;
|
||||
esac
|
||||
echo "$moon_emoji $moon_phase (${illum}%)"
|
||||
else
|
||||
echo "🌙 Moon phase unavailable"
|
||||
fi
|
||||
else
|
||||
echo "🌙 Moon phase tracking disabled (missing API key or tools)"
|
||||
echo "🌙 Moon phase tracking disabled (missing curl or jq)"
|
||||
fi
|
||||
|
||||
# Dotfiles management (corrected path)
|
||||
|
||||
Reference in New Issue
Block a user