Scripts Reference
All scripts are installed to ~/.local/bin/ and should be in your PATH.
Theme & Appearance
Section titled “Theme & Appearance”theme-set theming essential
Switch the system-wide color theme across all applications
theme-set tokyo-nightbg-next theming
Cycle through wallpaper images for the current theme
bg-nextnightlight-toggle theming
Toggle blue light filter for evening use
nightlight-toggle# Apply a themetheme-set tokyo-night
# List available themestheme-set --listtheme-set -l
# Show current themetheme-set --currenttheme-set -c
# Interactive picker (via fuzzel)theme-set --selecttheme-set -stheme-set # default actionHyprland, Waybar, Foot, Ghostty, Mako, Fuzzel, Swaylock, GTK, Neovim, btop, VSCode/Cursor
Screenshots & Recording
Section titled “Screenshots & Recording”screenshot utility
Capture screenshots using grim and slurp. Supports full screen, region, window, and smart (auto-detect active window) modes.
screenshot regionscreenrecord utility
Record screen video with audio capture and GPU-accelerated encoding support
screenrecordcapture-menu utility
Interactive capture menu with all screenshot/recording options
capture-menumagnifier utility
Desktop zoom via Hyprland cursor zoom
magnifier in# Full screenscreenshot
# Select region interactivelyscreenshot region
# Active windowscreenshot windowScreenshots saved to ~/Pictures/Screenshots/ with timestamp filenames.
Keybindings:
Print- Full screenShift + Print- Select regionCtrl + Print- Active window
# Start recordingscreenrecord
# Stop recording (run again or press keybinding)screenrecord stopRecordings saved to ~/Videos/ in WebM format.
Audio & Display
Section titled “Audio & Display”volume utility
Control system audio volume
volume upbrightness utility
Control display brightness
brightness uposd-notify utility
Display on-screen notifications for volume/brightness changes. Called automatically by volume/brightness scripts.
osd-notify volume 75volume up # Increase 5%volume down # Decrease 5%volume mute # Toggle mutevolume get # Show current levelbrightness up # Increase 5%brightness down # Decrease 5%brightness get # Show current levelbrightness set 50 # Set to 50%System Controls
Section titled “System Controls”toggle-idle utility
Toggle idle behavior (screen lock, display off, suspend). Useful when watching videos or presenting.
toggle-idlesystem-menu utility essential
Interactive system control menu. Options: Lock, Logout, Suspend, Reboot, Shutdown.
system-menubattery-status utility
Show battery information (for laptops). Output: percentage, charging status, time remaining.
battery-statusscreen-toggle utility phone
Toggle the active Wayland display power. Uses Sway output power or Hyprland DPMS.
screen-toggle togglephone-screen-setup utility phone
Install the PinePhone Pro Sway power-button binding for screen-toggle.
phone-screen-setupphone-sensors utility phone
Read PinePhone Pro proximity/light and accelerometer/gyro sysctls.
phone-sensors statusphone-led utility phone
Control the PinePhone Pro RGB notification LED through a narrow root helper.
phone-led notify blue 2phone-proximity-monitor utility phone
Opt-in proximity policy for turning the Wayland display off/on.
phone-proximity-monitor dry-runwifi-manager utility
Interactive WiFi manager for native wlan* and wifibox0
wifi-managerscreen-toggle off # Turn the active display offscreen-toggle on # Turn the active display onscreen-toggle toggle # Toggle active display powerscreen-toggle status # Print on/off state when supported
# Install a managed Sway config block:# bindsym --release XF86PowerOff exec ~/.local/bin/screen-toggle togglephone-screen-setupOn the PinePhone Pro, libinput reports the side power key as KEY_POWER (116).
Sway receives it through XKB as XF86PowerOff, so the installer binds that
keysym instead of a raw evdev code.
phone-sensors status # Human-readable sensor valuesphone-sensors json # Machine-readable raw valuesphone-sensors near # 0/1 proximity statephone-sensors watch 1 # Poll once per second
phone-led statusphone-led bluephone-led notify amber 2phone-led off
phone-proximity-monitor statusphone-proximity-monitor dry-run 10phone-proximity-monitor run
start-lisgd-sway # Restart PinePhone Sway touch gesturesphone-proximity-monitor is intentionally opt-in. It will not be autostarted
until the STK3311 thresholds are tuned against real use.
wifi-manager # Show menuwifi-manager select # Choose networkwifi-manager status # Connection statuswifi-manager saved # List saved networkswifi-manager disconnectWindow Management
Section titled “Window Management”window-transparency utility
Adjust window transparency
window-transparency 0.9hyprland-session utility
Session management for Hyprland
hyprland-sessionhyprland-square-toggle utility
Toggle window to 1:1 square aspect ratio
hyprland-square-togglehyprland-plugins utility
Manage Hyprland plugins (hyprscrolling, hyprexpo, etc)
hyprland-plugins menuwindow-transparency 0.9 # 90% opacitywindow-transparency 1.0 # Fully opaqueTerminal Layouts
Section titled “Terminal Layouts”tdl utility
Tmux dev layout: nvim left, terminal right
tdl myprojecttdlm utility
Tmux dev layout (main): nvim + terminal + server
tdlm myprojecttsl utility
Tmux swarm layout: 4 equal panes
tsl workersQuick Text
Section titled “Quick Text”quick-type utility
Type text snippets via wtype
quick-type nameAccessibility
Section titled “Accessibility”accessibility-keys accessibility
Toggle sticky/slow/bounce keys
accessibility-keys menuautologin-toggle system
Toggle ly display manager autologin
autologin-toggleomfreebdy-ai-skill ai
Ask the local LLM about system customization
omfreebdy-ai-skill “make font bigger”Launchers & Menus
Section titled “Launchers & Menus”omfreebdy-menu utility essential
Main system menu with hierarchical submenus
omfreebdy-menukeybindings-show utility
Display all configured keybindings
keybindings-showemoji-picker utility
Search and insert emoji characters
emoji-pickerstart-waybar utility
Start or restart the Waybar status bar
start-waybarSubmenus:
- Apps - Launch applications
- Capture - Screenshot/recording options, Zoom In/Out/Reset, Smart Screenshot
- Help - Keybindings, About, AI Skill
- Install - App installers, AI Tools (Claude Code, OpenCode, Pi Agent Harness)
- Setup - Accessibility, Autologin, WiFi, Bluetooth, Audio, Display
- Style - Theme and background selection
- System - Power and session controls, Hyprland Plugins
- Settings - WiFi, Bluetooth, Audio, Display
Hardware & System
Section titled “Hardware & System”usb-mount utility
Auto-mount and manage USB drives. Called by devd on attach/detach, or use interactively.
usb-mount listaudio-switch utility
Switch the default OSS audio output device interactively.
audio-switchpower-profile utility
Switch CPU power profile. Controls powerd and frequency scaling.
power-profile selecthibernate utility
Suspend-to-disk via ACPI S4. Checks for S4 support and sufficient swap before proceeding.
hibernatedisk-health utility
SMART disk health status for all detected drives.
disk-health statusprinter-setup utility
CUPS printer management — list printers, check status, open web admin.
printer-setup statususb-mount list # List mounted USB drivesusb-mount mount # Interactive mount pickerusb-mount unmount # Interactive unmount pickerusb-mount eject # Unmount and eject safelyusb-mount auto-attach # Called by devd on plug-inusb-mount auto-detach # Called by devd on removalDrives are mounted under /media/ with labels from glabel or volume names.
power-profile performance # Max CPU frequency, no throttlingpower-profile balanced # powerd adaptive (default)power-profile powersave # Min frequency, aggressive throttlingpower-profile status # Show current profilepower-profile select # Interactive picker via dmenu-pickdisk-health status # Quick health summary for all disksdisk-health check /dev/ada0 # Full SMART report for one diskdisk-health all # Detailed report for all disksRequires smartmontools: sudo pkg install smartmontools
printer-setup status # Show CUPS status and installed printersprinter-setup list # List all configured printersprinter-setup web # Open CUPS web admin (http://localhost:631)printer-setup add # Add a printer via lpadminprinter-setup test # Print a test pageNetworking
Section titled “Networking”network-discover utility
Browse LAN services via Avahi/mDNS. Scans for 5 seconds and shows an interactive picker.
network-discovervpn-setup utility
Install and configure WireGuard or Tailscale VPN.
vpn-setup statusfirewall utility
PF firewall management — check status, allow or deny ports.
firewall statusfile-share utility
Send or receive files over LAN. Uses LocalSend if available, falls back to Python HTTP.
file-share send photo.jpgvpn-setup status # Show WireGuard + Tailscale statusvpn-setup wireguard install # Install wireguard-tools and kmodvpn-setup wireguard up wg0 # Bring up wg0 tunnelvpn-setup wireguard down wg0 # Tear down wg0 tunnelvpn-setup tailscale install # Install Tailscale (Linux jail)vpn-setup tailscale up # Connect to Tailscale networkvpn-setup tailscale down # Disconnect from Tailscalefirewall status # Show PF state and active rulesfirewall allow 8080 # Allow TCP port 8080firewall allow 53 udp # Allow UDP port 53firewall deny 22 # Block port 22firewall list # List current rulesfirewall reset # Reload /etc/pf.conffile-share send photo.jpg # Share a file (shows URL or uses LocalSend)file-share receive # Start receiving modefile-share install # Install LocalSendInternationalization
Section titled “Internationalization”locale-set utility
Set system locale and keyboard layout.
locale-set selectinput-method-setup utility
Install and configure fcitx5 for CJK and international input.
input-method-setup installtz-auto utility
Auto-detect timezone from IP geolocation via worldtimeapi.org.
tz-auto —applylocale-set status # Show current locale and keyboardlocale-set select # Interactive pickerlocale-set set en_US.UTF-8 # Set locale directlylocale-set keyboard us # Set keyboard layoutlocale-set keyboard jp # Japanese layoutinput-method-setup status # Check if fcitx5 is installed and runninginput-method-setup install # Install fcitx5 and a CJK engineinput-method-setup enable # Add fcitx5 to session autostartinput-method-setup disable # Remove from autostartSupports Japanese (mozc), Chinese (rime, libpinyin), Korean (hangul), and more via fcitx5 add-ons.
tz-auto # Detect and print recommended timezone (no change)tz-auto --apply # Detect and apply the timezoneUses worldtimeapi.org/api/ip — no API key required.
omfreebdy Management
Section titled “omfreebdy Management”omfreebdy-setup essential utility
First-run setup wizard. Runs automatically on first login; re-run with —force.
omfreebdy-setup —forceomfreebdy-channel utility
Switch the update channel (git branch) between stable and dev.
omfreebdy-channel stableomfreebdy-migrate utility
Apply pending config migrations after an upgrade.
omfreebdy-migrate runomfreebdy-about utility
Show omfreebdy version, active session, theme, and system summary.
omfreebdy-aboutdmenu-pick utility
Universal picker used by all interactive scripts. Auto-selects fuzzel (Wayland), rofi (X11), or fzf (terminal).
echo -e “a\nb\nc” | dmenu-pick —prompt “Choose: ”omfreebdy-channel status # Show current channel, remote, last updateomfreebdy-channel stable # Switch to stable branchomfreebdy-channel dev # Switch to dev branchAfter switching channels, run mise run update to pull and apply changes.
omfreebdy-migrate list # Show all migrations and their statusomfreebdy-migrate status # Show pending migrationsomfreebdy-migrate run # Apply all pending migrationsMigrations are numbered shell scripts in the migrations/ directory. Each runs once and is tracked in ~/.config/omfreebdy/migration-version.
# Pipe options into dmenu-pickprintf "Option A\nOption B\nOption C" | dmenu-pick --prompt "Choose: "
# Control width and heightprintf "a\nb" | dmenu-pick --prompt "Pick: " --width 40 --lines 5
# Password mode (hidden input)dmenu-pick --password --prompt "Password: "Used internally by wifi-manager, theme-set, audio-switch, network-discover, and many other scripts.
Adding Custom Scripts
Section titled “Adding Custom Scripts”Make sure your scripts are executable and located in ~/.local/bin/ which should be in your PATH.
Create your script
Add a new file in ~/.local/bin/:
#!/bin/sh# ~/.local/bin/my-scriptecho "Hello, omfreebdy!"Make it executable
chmod +x ~/.local/bin/my-scriptBind to a key (optional)
Add a binding in ~/.config/hypr/conf/bindings.conf:
bind = SUPER, M, exec, my-script