v3.9.7
Official Website: https://dxsbash.digitalxs.ca | Official repository: https://github.com/digitalxs/dxsbash/DXSBash is a shell enhancement suite designed for developers, system administrators, and Linux power users. It provides a consistent, feature-rich experience across multiple shells, combining productivity tools, visual improvements, and optimized workflows.
Tested extensively on Debian 13. Please test on any system and send e-mail with detailed info with results, bugs, etc...
For a comprehensive list of all available commands and aliases in DXSBash, see the Commands Reference.
Or discover commands live in your shell:
aliases # interactive fzf picker with a preview pane (if fzf is installed)
aliases git # plain grep by substring; pipe-friendlyWith fzf available, aliases (no args) opens a fuzzy-filter list; the
preview pane shows the full definition of the selected alias or function.
Without fzf — or when stdout is piped/redirected — it prints a plain sorted
listing.
Ctrl+R- Search command history with fuzzy matchingCtrl+F- Launch interactive directory navigatorAlt+C- Change to selected directory via fuzzy finder
- Debian 13 (extensively tested — reference platform)
- Limited support still for Debian 12
- Ubuntu 20.04+ (supported)
- Arch Linux (supported, incl. Manjaro/EndeavourOS; AUR helpers detected)
- Fedora 40+ (supported, incl. RHEL-family derivatives via dnf)
- Administrative privileges (sudo mostly)
The installer detects your distribution from /etc/os-release and uses
the native package manager: apt/nala on Debian and Ubuntu, pacman on
Arch, dnf on Fedora.
One-liner (fastest):
curl -fsSL https://dxsbash.digitalxs.ca/install.sh | bashOr clone and run manually if you'd rather inspect the script first:
git clone --depth=1 https://github.com/digitalxs/dxsbash.git
cd dxsbash
chmod +x setup.sh
./setup.shOr install a distribution package — see Packages (.deb and Arch).
The installer provides an interactive experience:
- Shows an Install / Repair / Uninstall menu
- Detects your Linux distribution automatically
- Lets you choose your preferred shell (Bash, Zsh, or Fish)
- Installs all required dependencies
- Configures your chosen shell with enhanced features
- Sets up visual elements and productivity tools
- Configures KDE terminal Konsole and Yakuake profiles and defaults
DXSBash can also be installed as a system package. Both packages put
DXSBash in /usr/share/dxsbash and add the command dxsbash-installer;
each user then runs dxsbash-installer once (as themselves, not root)
to set DXSBash up in their home — it clones the repository, so
update-dxsbash keeps working, and runs the normal installer.
Ready-made packages: every push builds both on GitHub Actions — open
the repository's Actions tab, pick the latest run and download the
dxsbash-deb or dxsbash-arch artifact.
Build (needs only dpkg-deb, which Debian and Ubuntu always have):
git clone https://github.com/digitalxs/dxsbash.git && cd dxsbash
git checkout v3.9.7 # optional: build a released version
./packaging/build-deb.sh # → dist/dxsbash_<version>_all.debInstall and set up:
sudo apt install ./dist/dxsbash_*_all.deb # apt also installs the dependencies
dxsbash-installer # as your normal userCheck a package without installing: dpkg-deb --info / --contents on the
file. Remove with sudo apt remove dxsbash (per-user setups are removed
with dxsbash-uninstall).
A .deb cannot be installed on Arch — build the native package instead.
Run as your normal user (makepkg refuses root):
sudo pacman -S --needed base-devel git
git clone https://github.com/digitalxs/dxsbash.git && cd dxsbash
./packaging/build-arch.sh # → dist/dxsbash-<version>-1-any.pkg.tar.zst
sudo pacman -U dist/dxsbash-*-any.pkg.tar.zst
dxsbash-installerpackaging/arch/PKGBUILD builds from the GitHub release tarball, so it can
also be used on its own (e.g. for the AUR). Remove with sudo pacman -R dxsbash.
(Building the .deb on Arch also works — sudo pacman -S dpkg first — for
publishing it; it just cannot be installed there.)
./setup.sh --install --shell bash --yes # end-to-end, no prompts
DXSBASH_SHELL=zsh ./setup.sh --install --yes # same via env var
./setup.sh --install --dry-run # show plan without changesAll output is mirrored to ~/.dxsbash/logs/install-YYYYMMDD-HHMMSS.log.
If DXSBash is already installed, the installer suggests dxsbash-repair
instead of reinstalling — use --yes to force a reinstall anyway.
Everything can be managed from a single entry point:
dxsbash update # update to the latest release
dxsbash config # interactive configuration menu
dxsbash gui # graphical settings window (themes, aliases, updates)
dxsbash doctor # health-check the installation
dxsbash audit # security audit of the system (read-only)
dxsbash repair # fix broken symlinks/commands
dxsbash uninstall # remove and restore defaults
dxsbash export # save personal settings to a tarball
dxsbash import <f> # restore settings from a tarball
dxsbash bench # benchmark shell startup time
dxsbash version # show installed versionThe individual commands below keep working — dxsbash is a wrapper.
DXSBash includes read-only, defensive security tooling. Nothing here changes system state.
dxsbash audit (or dxsbash-audit) runs a system security health check
in the same pass/warn/fail style as dxsbash doctor:
dxsbash audit # summary of findings
dxsbash audit --verbose # include everything that passed
sudo dxsbash audit # full coverage (some checks need root)It checks pending security updates, firewall state, SSH daemon hardening
(PermitRootLogin, PasswordAuthentication), UID-0/empty-password
accounts and NOPASSWD sudo rules, PATH hygiene, world-writable and new
SUID/SGID files (against a baseline in ~/.dxsbash/), failed SSH logins,
and internal services exposed on all interfaces. Exit code is non-zero
when any check fails, so it can be dropped into cron or CI.
An opt-in one-line security status shown when a shell opens — pending security updates, failed SSH logins, firewall state, and whether a reboot is required. Unlike fastfetch it is also shown over SSH, where it matters most, and it reads from a background-refreshed cache so it never slows down opening a terminal.
Enable it from dxsbash config → Security summary, or:
echo 'export DXSBASH_SECSUMMARY="true"' >> ~/.dxsbash/user.confUpdate to the latest version:
update-dxsbashOr click Check for updates in the DXSBash Settings window. Your chosen
prompt theme (or hand-written starship.toml), preferences and custom
aliases are always kept across updates.
| Channel | You get | Choose it with |
|---|---|---|
stable (default) |
tagged releases (vX.Y.Z) only |
Settings → Update channel, or dxsbash-config → Updates |
main |
every change as soon as it is pushed — newest, least tested | same place |
update-dxsbash --channel main # one-off update from main
update-dxsbash --check --channel stableUpdates are decided by commits, not just version numbers: you are offered the newest release tag (stable) or the newest commit on main that your checkout does not already contain. Switching from main to stable never downgrades you — you simply move on at the next release.
On desktops, a daily check (a systemd user timer, installed with the menu entry) shows a notification when a new release is out on your channel — once per version. Click it (or Update now) to open the update screen. Turn it off in Settings → Startup & behavior → Notify me about updates.
Only check whether an update is available (useful for scripts and cron — exit code 10 means an update exists):
update-dxsbash --checkIf symlinks or helper commands break after a system update or partial install, re-link everything without touching your settings or history:
dxsbash-repair # interactive; auto-detects your shell
dxsbash-repair --dry-run # preview changes
dxsbash-repair --deps # also reinstall missing dependenciesTune DXSBash interactively without hand-editing rc files:
dxsbash-configThe menu lets you change:
- Default text editor (
$EDITOR/$VISUAL) - Shell history sizes (
HISTSIZE,HISTFILESIZE) - Prompt style (Starship vs. built-in custom)
- Starship theme (DXS, Tokyo Night, Gruvbox Rainbow, Catppuccin, …)
- Fastfetch on startup (on/off)
- Security summary at login (on/off)
- Lightweight prompt over SSH (on/off)
- Reset everything to defaults
Changes are written to ~/.dxsbash/user.conf and take effect in new shell
sessions (or after source ~/.bashrc / source ~/.zshrc).
On desktops, DXSBash adds DXSBash Settings to the application menu
under System (KDE Plasma, GNOME, XFCE, …). You can also open it with
dxsbash gui or dxsbash-gui.
From one window you can:
- Check for updates — see whether a new release exists and install it with a progress bar and log; administrator prompts appear as a password dialog. Right-click the menu entry for a direct shortcut.
- Pick a prompt theme visually — every theme is shown as a live
preview of your prompt (your fonts, your repo), then applied in one click.
Add your own… imports any Starship
.tomlinto the picker, and Konsole/Yakuake switch to a matching color scheme. - Choose the update channel (stable releases or main) and get a notification when an update is out.
- Edit custom aliases — add, edit and delete your own commands; they work in bash, zsh and fish (see below).
- Switch the prompt engine (Starship / built-in), toggle system info at startup, the security summary and the lightweight SSH prompt, choose your editor, history size and login shell.
- Back up / restore settings to a file, run the health check and the startup speed test, reset to defaults.
It is built on zenity. The
installer sets the settings window up (zenity, menu entry, update
notifications) whenever KDE Plasma or XFCE is installed — even when you
run setup.sh over SSH or from a text console — and for other desktops
when it runs inside a graphical session. Headless servers skip it. Existing
installs get it on their next update-dxsbash. Settings are shared with
dxsbash-config: change them in either tool.
dxsbash-gui --install-desktop # add menu entry + daily update check later (e.g. desktop added after install)
dxsbash-gui --themes # open the theme picker directly
dxsbash-gui --aliases # open the alias editor directlySet DXSBASH_DESKTOP=1 (or 0) when running setup.sh to force (or skip)
the desktop integration. On Plasma under Wayland the open window shows
zenity's taskbar icon (zenity 4 reports its own app id); the menu entry
itself always shows the DXSBash icon.
Aliases you add in the GUI are stored in ~/.dxsbash/custom-aliases.sh
(one alias name='command' per line) and loaded after the DXSBash
defaults, so they can override them. A fish copy is generated
automatically. The command is shell code, exactly as you would type it in
a terminal; shell keywords (if, for, function, …) are refused as
names, and replacing an existing command asks for confirmation.
Custom aliases are included in dxsbash export backups.
| Theme | Preview |
|---|---|
| DXS Starship (default) | |
| Nerd Font Symbols | |
| Bracketed Segments | |
| Pastel Powerline | |
| Tokyo Night | |
| Gruvbox Rainbow | |
| Catppuccin Powerline |
The icons need a Nerd Font in your terminal (the installer sets up FiraCode Nerd Font); Bracketed Segments works with any font.
Your own themes: drop any Starship config (*.toml) into
~/.dxsbash/themes/ — or use Add your own… in the theme picker, which
also checks that Starship can read it. It then appears in both pickers
with a live preview, is kept across updates, and travels with
dxsbash export.
Matching terminal colors: on KDE, Konsole and Yakuake switch to a color scheme made for the theme (DXSBash, Tokyo Night, Gruvbox, Catppuccin) when you apply it; new terminal windows use it. Your own themes leave the colors as they are. Turn it off in Startup & behavior → Match terminal colors to theme.
Replicate your DXSBash setup on another machine:
dxsbash export # → ~/dxsbash-backup-YYYYMMDD.tar.gz
dxsbash import backup.tar.gz # on the new machine, after installingThe tarball carries ~/.dxsbash preferences and your Starship theme
choice. Logs, machine-specific caches and the .dxsbash-env trust
allowlist are excluded — trust decisions are per-machine and must be
re-granted locally with envallow. Non-interactive imports (cron,
ssh host 'dxsbash import …') must pass --yes explicitly.
Over SSH, DXSBash automatically switches Starship to a lightweight
preset (starship-themes/ssh-lite.toml) with no git working-tree scan
and no language-version lookups, so the prompt stays instant on slow
links and busy servers. Opt out with:
echo 'export DXSBASH_SSH_LITE="false"' >> ~/.dxsbash/user.confDrop a .dxsbash-env file (POSIX sh: export KEY=value, aliases) in a
project directory. When you cd there, DXSBash offers to load it —
nothing is executed until you trust that exact file once:
cd ~/work/project
envallow # trust and load .dxsbash-env (records a content hash)
envdeny # withdraw trustIf the file changes later, it will not load again until you re-run
envallow — so a tampered file can never run silently. Works in bash,
zsh and fish (fish applies the portable export/alias subset).
Note: loaded variables and aliases persist for the rest of the shell session — there is no automatic unload when you leave the directory (open a new shell to get a clean environment).
cheat # browse the full command reference offline (bat-rendered)
cheat git # filter it
dxsbash bench # startup time per shell (cold/warm)
dxsbash bench --profile # show the slowest bash startup lines.bashrc- Enhanced Bash configuration.zshrc- Zsh configuration with pluginsconfig.fish- Fish shell configuration
- Starship - Cross-shell prompt with rich information
- Zoxide - Smarter directory navigation
- FZF - Fuzzy finder for files and history
- Fastfetch - Optimized system information display
- FiraCode Nerd Font - Programming font with ligatures and icons
Ctrl+R- Search command history with fuzzy matchingCtrl+F- Launch interactive directory navigatorAlt+C- Change to selected directory via fuzzy finder
update- Update system packagesinstall [package]- Install packages with updateswhatsmyip- Show internal and external IP addresses
extract <file>- Extract any archive type automaticallymkdirg <dir>- Create and navigate to directorycpg <src> <dest>- Copy and go to destinationmvg <src> <dest>- Move and go to destination
..,...,....- Go up 1, 2, or 3 directoriesbd- Go back to previous directoryup <n>- Go up n directories
gs- Git statusga- Git addgc- Git commitgp- Git pushgl- Git loggb- Git branchgco- Git checkout
DXSBash installs and uses the following software packages to enhance the Linux terminal experience and DXSBash would not be possible without them:
| Software | Description | Project Link |
|---|---|---|
| Bash | GNU Bourne Again Shell | gnu.org/software/bash |
| Zsh | Z Shell | zsh.org |
| Fish | Friendly Interactive Shell | fishshell.com |
| Software | Description | Project Link |
|---|---|---|
| Starship | Cross-shell prompt | starship.rs |
| Zoxide | Smart directory navigation | github.com/ajeetdsouza/zoxide |
| FZF | Fuzzy finder | github.com/junegunn/fzf |
| Fastfetch | System information display | github.com/fastfetch-cli/fastfetch |
| Bat/Batcat | Improved cat command | github.com/sharkdp/bat |
| Ripgrep | Fast text search | github.com/BurntSushi/ripgrep |
| Tree | Directory visualization | mama.indstate.edu/users/ice/tree |
| Multitail | Enhanced log viewing | vanheusden.com/multitail |
| Software | Description | Project Link |
|---|---|---|
| FiraCode Nerd Font | Programming font with ligatures and icons | github.com/ryanoasis/nerd-fonts |
| Software | Description | Project Link |
|---|---|---|
| Oh My Zsh | Zsh framework | ohmyz.sh |
| zsh-autosuggestions | Command suggestions for Zsh | github.com/zsh-users/zsh-autosuggestions |
| zsh-syntax-highlighting | Syntax highlighting for Zsh | github.com/zsh-users/zsh-syntax-highlighting |
| Fisher | Plugin manager for Fish | github.com/jorgebucaran/fisher |
| fzf.fish | FZF integration for Fish | github.com/PatrickF1/fzf.fish |
| Tide | Fish prompt | github.com/IlanCosman/tide |
| Software | Description | Project Link |
|---|---|---|
| Git | Version control system | git-scm.com |
| Neovim | Text editor | neovim.io |
| Nano | Simple text editor | nano-editor.org |
| Joe | Text editor | joe-editor.sourceforge.net |
| Software | Description | Project Link |
|---|---|---|
| Nala | APT frontend | github.com/volitank/nala |
| Trash-cli | Safer alternative to rm | github.com/andreafrancia/trash-cli |
| Curl | URL transfer tool | curl.se |
| Wget | File retrieval tool | gnu.org/software/wget |
| Unzip | Archive extraction | infozip.sourceforge.net/UnZip.html |
| Pwgen | Password generator | sourceforge.net/projects/pwgen |
| Powerline | Status line | github.com/powerline/powerline |
| Plocate | Fast file search | plocate.sesse.net |
| Fontconfig | Font management | freedesktop.org/wiki/Software/fontconfig |
| Bash-completion | Improved shell completion | github.com/scop/bash-completion |
| Software | Description | Project Link |
|---|---|---|
| Nmcli | Network management CLI | developer.gnome.org/NetworkManager/stable/nmcli.html |
| Netstat | Network statistics | net-tools.sourceforge.net |
| Software | Description | Project Link |
|---|---|---|
| XDotool | X11 automation tool | github.com/jordansissel/xdotool |
| XClip | Clipboard management | github.com/astrand/xclip |
| Software | Description | Project Link |
|---|---|---|
| Docker | Container platform | docker.com |
| Docker Compose | Multi-container Docker | docs.docker.com/compose |
| Kubectl | Kubernetes CLI | kubernetes.io/docs/reference/kubectl |
| Software | Description | Project Link |
|---|---|---|
| DNF | Fedora package manager | dnf.readthedocs.io |
| Zypper | SUSE package manager | en.opensuse.org/Portal:Zypper |
| Pacman | Arch package manager | archlinux.org/pacman |
| Emerge | Gentoo package manager | wiki.gentoo.org/wiki/Portage |
| XBPS | Void Linux package manager | voidlinux.org/usage/xbps |
| Nix | NixOS package manager | nixos.org/manual/nix |
| Yay/Paru | AUR helpers | github.com/Jguer/yay / github.com/Morganamilo/paru |
| Software | Description | Project Link |
|---|---|---|
| Konsole | KDE terminal | konsole.kde.org |
| Yakuake | KDE drop-down terminal | kde.org/applications/system/org.kde.yakuake |
| Kitty | GPU-accelerated terminal | sw.kovidgoyal.net/kitty |
You can customize your environment even more by editing:
- Shell configuration:
.bashrc,.zshrc, or~/.config/fish/config.fish - Edit aliases:
.bash_aliases - Prompt:
~/.config/starship.toml - System info:
~/.config/fastfetch/config.jsonc
- Linux-specific Commands: Some commands (like netstat-based aliases) might not work correctly on all Linux distributions or might have different output formats.
- X11-dependent Features: Commands like clickpaste rely on X11 utilities (xdotool) which won't work in Wayland or headless environments.
- Hardware-dependent Commands: The cpu function assumes a specific format in /proc/stat, which might not be consistent across all Linux kernels.
- Terminal-specific Features: The Konsole and Yakuake configurations might not translate well to other terminal emulators.
Full uninstall — backs up your current configs, removes all DXSBash files,
restores your distribution's defaults from /etc/skel/, and optionally reverts your
login shell to bash:
dxsbash-uninstall # interactive
dxsbash-uninstall --dry-run # preview only
dxsbash-uninstall --yes # non-interactive
dxsbash-uninstall --keep-repo # keep ~/linuxtoolbox/dxsbash
dxsbash-uninstall --no-restore # skip /etc/skel restoreOr, to only revert shell rc files to defaults without removing the repo:
sudo reset-shell-profile [username]You can also reach these from the installer menu:
./setup.sh # interactive menu: Install / Repair / Uninstall
./setup.sh --repair
./setup.sh --uninstallDXSBash was successfully compatibility tested with:
- Debian 13
- Konsole 25.04.2
- Yakuake 25.04.0
- XFce Terminal 1.0.4 (Need to change font settings to Firacode Nerd Font Regular)
- Kitty 0.26.5
If you find DXSBash valuable for your workflow, consider supporting its development:
Want to hack on DXSBash? Start with the Development Guide — it covers the architecture, symlink layout, cross-shell parity rules, the CI matrix and the release process. Contribution basics are in CONTRIBUTING.md.
This project is licensed under the GNU General Public License v3.0 - see the LICENSE file for details.
- Official website: https://dxsbash.digitalxs.ca
- GitHub: digitalxs/dxsbash
- Email: luis@digitalxs.ca
- Website: https://digitalxs.ca



