configctl/README.md
2025-03-07 10:53:05 -06:00

1.3 KiB

configctl

a simple wrapper around fuse-overlayfs to manage multiple config changesets

Why?

i have an unhealthy relationship with overlayfs. i also like to easily change my desktop themes without a bunch of symlink swapping

Requirements

  • fuse-overlayfs
  • systemd

Usage

configctl <changeset> [unmount]

by default, the configctl expects the base configuration set to exist in $XDG_DATA_HOME/config/base (usually ~/.local/share/config/base) and the changesets to exist in $XDG_DATA_HOME/config/changeset. changes while the configuration is mounted will be written to $XDG_STATE_HOME/config/{<changeset>,.work_<changeset>}

configctl my_config

executing the previous command will do the following

  • search for $XDG_DATA_HOME/config/changeset/my_config
  • create the following directories if they don't already
    • $XDG_STATE_HOME/config/my_config
    • $XDG_STATE_HOME/config/.work_my_config
  • create a service file in $XDG_CONFIG_HOME/systemd/user/my_config-automount.service
  • mount the base config and the selected changeset

enabling the service file will mount the config on next user login

Issues

while technically supported, it's not possible to change or unmount a changeset once mounted. this is because the mount will become immediately busy, preventing fusermount from being able to unmount it.