CONFY(1)

πŸ“¦ version 3.1.1, in nixpkgs unstable

πŸ’– CONF Y(1) β€” the confy era πŸ’–

ok so real talk, this page is from the confy manual and it's about confy: a TUI config file manager for linux/unix systems. bestie, it's gonna change your life, i promise 🫢


✨ NAME ✨

confy β€” a TUI config file manager for linux/unix systems πŸ’…


πŸŽ€ SYNOPSIS πŸŽ€

confy

that's it. that's the whole vibe. no flags, no arguments, just run it 😌


πŸ¦‹ DESCRIPTION πŸ¦‹

okay so confy tracks your config files in one place so you literally don't have to remember where they all live. add files to confy, organise them into groups, and open them in your $EDITOR with a single keypress. no more hunting through ~/.config. no more "where did i put that dotfile" at 2am 😭

it's written in rust using ratatui. zero required dependencies beyond the binary itself. she's self-contained, she's iconic, periodt πŸ‘‘


the keys. the muscle memory. let's go:

  • j / k or arrow keys β€” move up and down the list
  • enter β€” open the selected file in $EDITOR, or toggle a group open/closed
  • space β€” toggle the selected group open/closed
  • p β€” toggle the live preview pane πŸ‘€
  • / β€” enter search mode, then type to filter files and groups in real-time
  • : β€” enter command mode
  • q β€” quit

πŸ‘‘ COMMANDS πŸ‘‘

Commands are entered by pressing : followed by the command name and optional arguments, then enter. esc cancels. lowkey the most important thing to know 🫢

πŸ“ FILE MANAGEMENT

  • :ac β€” add a config file to the ungrouped group (opens the built-in file picker)
  • :ac <group> β€” add a config file directly to a named group
  • :rm β€” stop tracking the selected file (does not delete the file from disk β€” she's careful like that)
  • :l β€” reopen the last edited file
  • :rb β€” rollback the selected file to its last backup (see ROLLBACK below πŸ‘‡)
  • :su β€” open the selected file as root via pkexec(1) (requires polkit)

🧚 GROUP MANAGEMENT

  • :ag <group> β€” add a new group
  • :rg <group> β€” remove a group (files move to ungrouped)
  • :mg <group> β€” move the selected file to a group
  • :sort name β€” sort files alphabetically (default)
  • :sort date β€” sort by date last modified
  • :sort size β€” sort by file size
  • :reverse β€” toggle ascending/descending sort order

🌈 APPEARANCE

  • :theme <name> β€” switch to a built-in color theme. available themes: catppuccin, dracula, gruvbox, nord, tokyo-night, one-dark. applies instantly and persists across restarts. the way that just works 😌
  • :theme list β€” available themes
  • :streamer β€” toggle streamer mode. hides full paths and timestamps, showing only filenames. useful if you're recording your screen and don't want your username visible πŸ™ˆ

πŸ’œ CONFIGURATION DIRECTORY

  • :cd β€” change the config search directory used by the file picker (opens picker in dir-select mode)
  • :cd <path> β€” set the config search directory directly
  • :cd reset β€” reset the config search directory to ~/.config

πŸ¦‹ REMOTE PROFILES

  • :device <host> β€” mount a remote machine's filesystem over sshfs and switch confy's view to that host's tracked configs. accepts an ~/.ssh/config alias or a literal user@host. requires sshfs(1) installed locally.
  • :device local β€” unmount the remote and return to your local configs
  • :device β€” show the currently active device, if any
  • :ssh <host> β€” alias for :device <host>

πŸ”₯ GIT INTEGRATION

confy can manage a dotfiles git repository at ~/dotfiles-git (configurable). files are organised by group name; ungrouped files with a shared filename prefix are auto-foldered. so organized, so main character ✨

  • :git sync β€” copy all non-blacklisted tracked files into the dotfiles directory. no git operations performed.
  • :git commit β€” sync files, then prompt for a commit message and commit. requires at least one prior commit to exist in the repo.
  • :git push β€” sync, commit (prompts for message), then push to the configured remote.
  • :git dir β€” change the dotfiles directory (opens picker)
  • :git dir <path> β€” set the dotfiles directory directly
  • :git reset β€” reset the dotfiles directory to ~/dotfiles-git

πŸ’€ GIT BLACKLIST

  • :bl β€” toggle the selected file or group on/off the git blacklist. blacklisted items are skipped by :git sync. useful for .env files and other sensitive configs you don't want in a public repo 🫣
  • :bouncer β€” open the bulk blacklist menu. space toggles an item, Z confirms, esc cancels.

πŸŽ€ MISC

  • :h, :help β€” show the first-startup tutorial again
  • :q β€” quit

🧚 ROLLBACK 🧚

confy saves a compressed backup of any file to /tmp/<filename>.confbak before opening it for editing. if you break something (and bestie, we've all been there 😭), select the file and run :rb to restore it.

rollback can be disabled in config.json:

"settings": {
  "rollback": false
}

πŸ’œ REMOTE PROFILES πŸ’œ

:device <host> mounts the remote machine's entire root filesystem over sshfs, then switches confy's view to that host's tracked configs. this means absolute paths like /etc/pf.conf resolve correctly through the mount. chef's kiss πŸ”₯

if the remote is running an older version of confy (pre-config.json, still on tracked.json), confy will refuse to connect and tell you to update confy on that host first. she's not doing backwards compatibility drama πŸ’…

:su works through a mounted device: sshfs presents remote files under your own uid, so pkexec can elevate to local root and write through the mount even for root-owned remote files.

⚠️ for :su to work through a device mount, your local machine needs user_allow_other uncommented in /etc/fuse.conf. confy will tell you if this is missing. so like, don't come for her if you skipped this step πŸ™ˆ

🌸 CONFIGURATION 🌸

confy stores its state in ~/.config/confy/config.json. if upgrading from an older version with tracked.json, confy migrates it automatically on first run. automatic. seamless. iconic. ✨

πŸ“ SETTINGS

all settings live under the settings key in config.json:

  • rollback β€” boolean. save a backup before opening files for editing. default: true
  • theme β€” string. active color theme name. default: "catppuccin"
  • editor β€” string. override $EDITOR for opening files. useful for .desktop launchers where the env var may not be set.
  • streamer_mode β€” boolean. hide full paths and timestamps in the file list. default: false
  • streamer_hide_git β€” boolean. in streamer mode, also hide git-blacklisted files. default: true
  • ssh_allow β€” boolean. enable the :device sshfs integration. set to false if you don't use it. default: true
  • background_enable β€” boolean. draw a solid background color instead of the terminal default. default: false
  • background_color β€” string. hex color for the background when background_enable is true. default: "#1e1e2e"
  • colors β€” object. custom colors for the ui. supports hex codes (#rrggbb) and named colors (black, red, green, yellow, blue, magenta, cyan, white, default). keys: bg, fg, highlight, group, border.

🌈 GIT SETTINGS

  • git_dir β€” string. path to the dotfiles git repository. default: "~/dotfiles-git"
  • git_blacklist β€” array of strings. tracked file paths to exclude from :git sync.
  • git_blacklist_groups β€” array of strings. group names to exclude entirely from :git sync.
  • git_auto_push β€” boolean. reserved for future use. default: false
  • git_auto_commit β€” boolean. reserved for future use. default: false

πŸŽ€ FILES πŸŽ€

  • ~/.config/confy/config.json β€” main configuration and tracked file list
  • ~/.cache/confy/mounts/ β€” sshfs mountpoints for remote device profiles
  • /tmp/<filename>.confbak β€” rollback backups (gzip compressed, overwritten on each open)

⭐ ENVIRONMENT ⭐

EDITOR β€” editor to open files with. overridden by the editor setting in config.json. falls back to nano(1) if neither is set. ngl, please set your editor πŸ™


πŸ¦‹ EXAMPLES πŸ¦‹

# add a config file
:ac hyprland

# move it to a group
:mg hyprland

# search for a file
/hypr

# roll back after breaking something
:rb

# switch theme
:theme gruvbox

# browse a remote server's configs
:device myserver
:su
:device local

# set up dotfiles repo
:git dir ~/dotfiles
:git commit

# blacklist your .env before pushing
:bl
:git push

πŸ’… SEE ALSO πŸ’…

sshfs(1), pkexec(1), git(1) β€” the supporting cast, all legends 🫢


πŸ”₯ BUGS πŸ”₯

report bugs at https://github.com/confyorg/confy/issues β€” she's not buggy, she's just got lore. but fr, file them there πŸ’–


πŸ‘‘ AUTHOR πŸ‘‘

phluxjr


🌈 LICENSE 🌈

GPL-3.0-or-later


so that's the whole page, bestie πŸ’œ this was version 3.1.0, dated 2026-08-10, from the confy manual β€” go forth and organize those dotfiles, you absolute icon βœ¨πŸŽ€πŸ¦‹

πŸ“¦ where this page comes from