Thanks to visit codestin.com
Credit goes to github.com

Skip to content

matmaer/chezmoi-mousse

Repository files navigation

Python 3.12+ Framework: Textual Pylint Black Ruff

Warning

To use the app, clone from the latest tagged stable branch git clone --branch latest https://github.com/matmaer/chezmoi-mousse.git. The current HEAD will be updated soon.

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.

Use Case

  • Can be safely tested as no write operations are enabled by default.
  • To enable operations, press D, d or click the Toggle --dry-run text in the footer. This will enable commands changing your config files or the chezmoi state.
  • Run the app with your own user. Runnig the app with sudo or elevated permissions is not needed. Chezmoi explicitly discourages operating outside of your home directory.
  • The current implementation has only been used or tested with autocommit enabled, feedback is welcome on the issues page.

Start

Don't run the python command in a chezmoi cd invoked shell, unless you want to test.

On the command line, clone the repository at the latest tagged version:

git clone --branch latest https://github.com/matmaer/chezmoi-mousse.git

Note: You'll see a "detached HEAD" warning message - this is normal when checking out a tagged commit.

Change directory into the src directory of the cloned repository.

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 the latest textual version is available, and the module is in your PYTHONPATH, you can run:

python -m chezmoi_mousse

App screenshot example

App screenshot

App log example

App screenshot

Operate result example

App screenshot

Platform packaging

  • Windows
    • app store
    • signed executable
    • unpackaged
  • Apple
    • app store
    • signed executable
    • unpackaged
  • Linux

Available Chezmoi commands

Note: the lists for Write Operations and Read Operations below are a limited subset of availabble chezmoi commands, run chezmoi help in your terminal to see all commands. Commands below without a checkmark are being implemented, missing commands could be out of scope or take a while.

Write Operations

Note: 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 tab.

  • chezmoi add directory (non-recursive)
  • chezmoi add file
  • chezmoi archive
  • chezmoi apply directory (non-recursive)
  • chezmoi apply file
  • chezmoi destroy directory (non-recursive)
  • chezmoi destroy file
  • chezmoi edit
  • chezmoi forget directory (non-recursive)
  • chezmoi forget file
  • chezmoi generate
  • chezmoi import
  • chezmoi init new repository
  • chezmoi init clone repository
  • chezmoi purge
  • chezmoi re-add directory (non-recursive)
  • chezmoi re-add file

Read Operations

  • 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
  • chezmoi verify

Implemented configuration options

Legend:

  • 🟒 Follow user configuration or chezmoi defaults
  • 🟩 Providing flags for the chezmoi command, managed by this app.
  • ❎ Not in scope
  • πŸ’‘ Follows user config with warning
  • ⚫ Under development, help wanted or to be documented

Top level

  • 🟒 cacheDir
  • 🟩 color (--no-color, app manages color)
  • 🟒 data
  • 🟒 destDir
  • ⚫ encryption
  • ⚫ env
  • 🟒 format
  • 🟩 interactive (--interactive=false, app provides safeguards)
  • ❎ mode (--mode=file, only file mode is supported)
  • 🟩 pager (--no-pager, app limits output)
  • 🟩 pagerArgs
  • ⚫ persistentState
  • 🟩 progress (--progress=false, app will implement spinner)
  • ⚫ scriptEnv
  • ⚫ scriptTempDir
  • 🟒 sourceDir
  • 🟒 tempDir
  • 🟒 umask
  • ⚫ useBuiltinAge
  • 🟩 useBuiltinGit (--use-builtin-git=true)
  • ❎ verbose
  • ⚫ 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

dashlane

  • ⚫ dashlane.args
  • ⚫ dashlane.command

diff

  • ❎ diff.args
  • 🟩 diff.command (chezmoi diff --use-builtin-diff)
  • ⚫ diff.exclude
  • 🟩 diff.pager (chezmoi diff --no-pager)
  • ❎ diff.pagerArgs
  • 🟩 diff.reverse
  • ⚫ diff.scriptContents

doppler

  • ⚫ doppler.args
  • ⚫ doppler.command
  • ⚫ doppler.config
  • ⚫ doppler.project

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 run git)
  • 🟒 git.commitMessageTemplate
  • 🟒 git.commitMessageTemplateFile
  • ⚫ git.lfs

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

keeper

  • ⚫ keeper.args
  • ⚫ keeper.command

lastpass

  • ⚫ lastpass.command

merge

  • ⚫ merge.args
  • ⚫ merge.command

onepassword

  • ⚫ onepassword.cache
  • ⚫ onepassword.command
  • ⚫ onepassword.mode
  • ⚫ onepassword.prompt

pass

  • ⚫ pass.command

passhole

  • ⚫ passhole.args
  • ⚫ passhole.command
  • ⚫ passhole.prompt

pinentry

  • ⚫ pinentry.args
  • ⚫ pinentry.command
  • ⚫ pinentry.options

rbw

  • ⚫ rbw.command

secret

  • ⚫ secret.args
  • ⚫ secret.command

status

  • 🟩 status.pathStyle
  • 🟩 status.exclude

template

  • ⚫ template.options

textconv

  • ⚫ textconv

update

  • ⚫ update.apply
  • ⚫ update.args
  • ⚫ update.command
  • ⚫ update.recurseSubmodules

vault

  • ⚫ vault.command

verify

  • ⚫ verify.exclude

warnings

  • ⚫ warnings

Chezmoi not found screenshot

If the chezmoi command is not available, a screen will be shown with the value for $PATH and a link to chezmoi.io/install, along with parsed install commands from the chezmoi repository which uses the excellent Material for MkDocs framework.

App screenshot

About

Visual interface in the terminal for the chezmoi dotfile managar, with a wink to the mouse.

Topics

Resources

License

Stars

Watchers

Forks

Languages