Note
It's safe to use the app to visualize your chezmoi repository, as no write operations are enabled by default.
See the Use Case to disable dry-run or Test first with dummy files.
The app is not packaged yet but you can simply run it as a Python module, see the Start section.
Please share any issues on the Issues page, thanks!
Graphical user interface in the terminal for chezmoi, see the chezmoi docs.
The rich visualization is made possible thanks to textual, see the textual docs.
Commands are issued using Python its Subprocess management.
Check out the Wiki Screenshots!
- You have an initilazed or existing chezmoi repository.
- To enable operations, press
D,dor click theRemove --dry-runorAdd --dry-runtext in the footer. This will enable/disable commands changing your files or the chezmoi state. Test first in a VM or container, see the Test section. - Run the app with your own user. Running the app with
sudoor elevated permissions is not needed and should be avoided. Chezmoi explicitly discourages operating outside of your home directory. - The current implementation has only been used or tested with
autocommitenabled, feedback is welcome.
https://github.com/matmaer/chezmoi-mousse/releases/latest
wget https://github.com/matmaer/chezmoi-mousse/releases/latest/download/chezmoi-mousse
chmod +x chezmoi-mousse
./chezmoi-mousseClone the repository: git clone https://github.com/matmaer/chezmoi-mousse.git
Change directory: cd chezmoi-mousse and cd src
The easiest way is to run the app with uv, install uv on your platform. Then in the chezmoi-mousse src directory, run:
uv run --no-dev --python 3.13 --with textual -m chezmoi_mousse
If Python 3.13 with textual is available in you env, in the src directory, you can run:
python -m chezmoi_mousse
Note
Navigate to the "Config" tab and check the output from chezmoi doctor
To test the app without "real" dotfiles in a container or VM:
In the src directory of the cloned repository, you can run
CHEZMOI_MOUSSE_DEBUG_MODE=1 uv run --python 3.13 --with textual -m chezmoi_mousse
Then on the "Debug" tab, you can generate some files in the home directory, and offer the possibility to modify the generated files to have diffs.
Files are generated using the Faker package
See the Debug tab screenshot
- Apple
- app store
- single executable file
- run from source
- Linux
- AppImage
- flatpak
- snap
- single executable file
- run from source
- Windows
- app store
- single executable file
- run from source )
Note
The lists for Write Operations and Read Operations below are a limited subset of available chezmoi commands, run chezmoi help in your terminal to see all commands. Commands below without a checkmark are being implemented,
See Implemented configuration options below, not all flags are implemented, however usage with default flag values should run without errors. If you find an issue, please share it on the Issues page.
-
chezmoi adddirectory -
chezmoi addfile -
chezmoi archive -
chezmoi applydirectory -
chezmoi applyfile -
chezmoi destroydirectory -
chezmoi destroyfile -
chezmoi edit -
chezmoi forgetdirectory -
chezmoi forgetfile -
chezmoi generate -
chezmoi import -
chezmoi initnew repository -
chezmoi initclone repository -
chezmoi purge -
chezmoi re-addfile
-
chezmoi cat -
chezmoi cat-config -
chezmoi dump-config -
chezmoi data -
chezmoi diff -
chezmoi doctor -
chezmoi git log -
chezmoi ignored -
chezmoi managed -
chezmoi source-dir -
chezmoi status -
chezmoi unmanaged
Legend:
- π’ Follow user configuration or chezmoi defaults
- π© Providing flags for the
chezmoicommand, managed by this app. - β Not in scope
- π‘ Follows user config with warning
- β« Under development, help wanted or to be documented
[!NOTE]
chezmoicommand flags can override your local config file. See the _run_cmd.py file for the exact flags in use.
- π’ cacheDir
- π© color (
--no-color, app manages color) - π’ data
- π’ destDir
- β« encryption
- β« env
- π’ format
- π© interactive (
--interactive=false, app provides safeguards but overrides user config!) - β mode (
--mode=file, only file mode is supported) - π© pager (
--no-pager, app limits output) - π© pagerArgs
- β« persistentState
- π© progress (
--progress=false, app shows progress) - β« scriptEnv
- β« scriptTempDir
- π’ sourceDir
- π’ tempDir (check the Config tab
chezmoi doctoroutput for any issue) - π’ umask
- β« useBuiltinAge
- π© useBuiltinGit (
--use-builtin-git=true) - β verbose (outputs are parsed without verbose flag)
- β« workingTree
add
- β« add.encrypt
- β« add.secrets
- β« add.templateSymlinks
age
- β« age.args
- β« age.command
- β« age.identities
- β« age.identity
- β« age.passphrase
- β« age.recipient
- β« age.recipients
- β« age.recipientsFile
- β« age.recipientsFiles
- β« age.suffix
- β« age.symmetric
awsSecretsManager
- β« awsSecretsManager.profile
- β« awsSecretsManager.region
azureKeyVault
- β« azureKeyVault.defaultVault
bitwarden
- β« bitwarden.command
- β« bitwarden.unlock
bitwardenSecrets
- β« bitwardenSecrets.command
cd
- β cd.args
- β cd.command
diff
- β diff.args (Start a discussion if you have a use case)
- π© diff.command (
chezmoi --use-builtin-diff) - β diff.exclude (diffs are shown for a selected path)
- π© diff.pager (
chezmoi --no-pager --use-builtin-diff) - β diff.pagerArgs
- π© diff.reverse (
--reverseflag is used to show diffs on the ReAdd tab) - β« diff.scriptContents
edit
- β« edit.apply
- β« edit.args
- β« edit.command
- β« edit.hardlink
- β« edit.minDuration
- β« edit.watch
ejson
- β« ejson.key
- β« ejson.keyDir
git
- β« git.autoAdd
- π‘ git.autoCommit
- π‘ git.autoPush
- π’ git.command (
chezmoi git -- <git_command>is used to rungit) - π’ git.commitMessageTemplate
- π’ git.commitMessageTemplateFile
- β git.lfs (Start a discussion if you have a use case)
gitHub
- π’ gitHub.refreshPeriod
gopass
- β« gopass.command
- β« gopass.mode
gpg
- β« gpg.args
- β« gpg.command
- β« gpg.recipient
- β« gpg.recipients
- β« gpg.suffix
- β« gpg.symmetric
hooks
- β« hooks.command.post.args
- β« hooks.command.post.command
- β« hooks.command.pre.args
- β« hooks.command.pre.command
interpreters
- β« interpreters.extension.args
- β« interpreters.extension.command
keepassxc
- β« keepassxc.args
- β« keepassxc.command
- β« keepassxc.database
- β« keepassxc.mode
- β« keepassxc.prompt
merge
- β« merge.args
- β« merge.command
pass
- β« pass.command
pinentry
- β« pinentry.args
- β« pinentry.command
- β« pinentry.options
rbw
- β« rbw.command
secret
- β« secret.args
- β« secret.command
status
- π© status.pathStyle
- π© status.exclude
template
-
chezmoi re-adddirectory - β« template.options
textconv
- β« textconv
update
- β« update.apply
- β« update.args
- β« update.command
- β« update.recurseSubmodules
vault
- β« vault.command
verify
- β verify.exclude
warnings
- β« warnings
Pick any textual theme to change the look, for example tokyo-night, see Textual Themes to check out built in themes.
If the chezmoi or git command is not found by shutil.which, the app wil not start and only print a simple message to the terminal.