dotctl is a terminal-based tool to manage multiple shell sessions with optional hooks, TUI, and CLI support.
- Manage multiple shells (start/stop/restart)
- TUI interface with keyboard navigation
- Hooks support (pre/post/kill)
- Auto-kill other shells when starting one
- Persistent configuration at
~/.dotctl.json - CLI for adding, updating, or removing shells
Install from GitHub and compile with Nuitka:
git clone http://github.com/xZepyx/dotctl.git
cd dotctl/src
sudo pacman -S python-pipx patchelf
pipx install nuitka
~/.local/bin/nuitka --onefile --standalone --assume-yes-for-downloads dotctl.py
mv dotctl.bin dotctl
sudo mv dotctl /usr/bin/dotctlLocated at ~/.dotctl.json:
{
"shells": [
{
"name": "MyShell",
"folder": "/home/user/projects",
"command": "bash",
"pid": null,
"pre_hook": "",
"post_hook": "",
"kill_hook": ""
}
]
}dotctl --tuiControls:
↑/↓— Move selectionEnter— Start/restart selected shellk— Kill selected shellqorEsc— Quit
dotctl -ia -s MyShell -f /home/user/projects -c "bash"Optional hooks:
--pre-hook "echo Starting"
--post-hook "echo Started"
--kill-hook "echo Killing"dotctl -i 0 -s UpdatedShell -c "zsh"dotctl -rm 0- Only one shell runs at a time; starting a new shell auto-kills others.
- Hooks run silently.
- TUI shows shell status (
RUNNING/STOPPED).
- Python 3.8+
- Linux/macOS (uses
os.killpg)
MIT License