Skip to main content

dasshboard

PyPI

A home screen for your terminal. Every host in ~/.ssh/config — plus anything you add yourself — becomes a tile. Pick one and it connects.

The board: moving between tiles, then opening one in this terminal

Install

uv tool install dasshboard      # or: pipx install dasshboard
dasshboard                      # try it
dasshboard --startup on         # ...then, if you want it with every terminal

Installing touches nothing but your PATH. --startup on is the only thing that edits a shell rc, and --startup off undoes it exactly.

Keys

click / / space open the tile
19 open that numbered tile
t / w / c open in a new tab / new window / this terminal, once
arrows / hjkl move around
g / G first / last
/ find by name, target, or jump host
a e d add / edit / duplicate a tile
D delete it (asks first)
x / X hide it / show every hidden tile
m grab it, arrows move it, drops it
s / S settings / groups
r re-read both config files
q / esc quit

Everything is editable in the TUI — there is no $EDITOR handoff. ~/.ssh/config is never written to: editing one of its hosts writes an override block in config.toml that merges on top of it.

Config

~/.config/dasshboard/config.toml (%APPDATA%\dasshboard\ on Windows), created with a commented template on first run. dasshboard --config prints the path.

[options]
include_ssh_config = true   # false shows only the hosts defined here
show_hidden = false         # open with hidden tiles on screen; X toggles them
open_in = "tab"             # "tab", "window" or "current"

[theme]
primary = "#aaaaaa"
accent = "#ff0000"

[[local]]                   # a command on this machine
label = "MACBOOK-PRO"
command = "/bin/zsh"        # optional: your login shell by default
folder = "~/dasshboard-tui" # optional: home by default

[[host]]
name = "myserver"
hostname = "10.0.0.5"
user = "albe"
jump = "bastion"
folder = "/srv/app"         # optional: the far side's home by default
command = "tmux attach"     # optional: a login shell by default
color = "#4f8ab0"           # optional: auto-assigned by default
hidden = false              # true keeps it off the board until X

[[section]]                 # a group heading, drawn in this order
title = "work"
items = ["myserver", "bastion"]

Edits rewrite whole blocks as text, so your comments and formatting survive. A TOML error is reported in the status line and leaves the board usable.

Compatibility

The TUI runs anywhere — macOS, Linux, BSD, Windows Terminal. Opening a session in this terminal works everywhere too.

Opening a new tab or window needs a terminal with an automation interface, which today means Ghostty ≥ 1.2 on macOS; there the new surface also gets the host's colour as a tint and its circle in the tab title. Everywhere else tab and window resolve to current — they still parse and still travel in a shared config, so nothing breaks. Override the guess with DASSHBOARD_BACKEND=ghostty|inplace.

Development

cargo build --release        # ~/.local/bin/dasshboard symlinks to the output
cargo test                   # parsing, escaping, colour assignment, layout
./target/release/dasshboard --list      # tiles and colours, no TUI
./target/release/dasshboard --open alex # connect to one host, no TUI
./docs/demo/record.sh                   # regenerate the gifs (needs vhs)

src/platform.rs holds the OS differences; src/ghostty.rs is the only module that knows Ghostty exists. Layout is checked headlessly with ratatui's TestBackend.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

dasshboard-0.2.1.tar.gz (2.8 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

dasshboard-0.2.1-py3-none-macosx_11_0_arm64.whl (559.1 kB view details)

Uploaded Python 3macOS 11.0+ ARM64

File details

Details for the file dasshboard-0.2.1.tar.gz.

File metadata

  • Download URL: dasshboard-0.2.1.tar.gz
  • Upload date:
  • Size: 2.8 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.12.3 {"installer":{"name":"uv","version":"0.12.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for dasshboard-0.2.1.tar.gz
Algorithm Hash digest
SHA256 0e87eb364461c4f7e5867391d2df57657f9a3c43a5865234f7f945b0d7e1b66e
MD5 6ecfcca7c5e82ab7db2cca1f8e89ffc8
BLAKE2b-256 e18df8541ed3b4afae97ec1707c6e4421d4b82797f64658010c7ef47555d6de2

See more details on using hashes here.

File details

Details for the file dasshboard-0.2.1-py3-none-macosx_11_0_arm64.whl.

File metadata

  • Download URL: dasshboard-0.2.1-py3-none-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 559.1 kB
  • Tags: Python 3, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.12.3 {"installer":{"name":"uv","version":"0.12.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for dasshboard-0.2.1-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a47c7ca2c36cace3246659ede8ac6ad31cc4982535d9deaa1c0e353882a8d644
MD5 6762b3bbc30c376d87c31b5c4a879c64
BLAKE2b-256 77bb540fb7c9e486d007f822b7575089a5a45a67c260907d2c9706d751596fc0

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page