Skip to content
mreysei · Michael Reyes
Theme

MyBash

My Ubuntu terminal in one command: zsh, 136 commands and a git identity per folder.

Type
Other
Year
Categories
MyBash cover: the name in violet, "My Ubuntu terminal in one command", the command "bash ~/.mybash/install.sh", the three languages and, on the right, a terminal window with the banner: the pixel logo and the system information.

About the project

MyBash is the setup of my Ubuntu terminal (usually on WSL2): zsh with oh-my-zsh, the headline theme, plugins, 136 commands of my own and a git identity per work folder, with the logo and the "abyss" palette of my portfolio as a terminal. Clone the repository, run the installer and the terminal is ready, in English, Spanish or Japanese.

Goal. To have the same terminal on any machine without setting it up by hand, and to make everyday work with git, Node, Docker and servers take fewer keystrokes and less memory: every command says what it does, shows what it is about to touch and asks before doing anything that cannot be undone.

What it does.

  • Installing and updating are the same command. install.sh goes through 14 steps (apt packages, plugins, Node with fnm and pnpm, Claude Code, GitHub CLI, ~/.zshrc, ~/.gitconfig…). Each one checks first and does nothing when it is already up to date, with a progress bar pinned to the last line and everything kept in a log. From an installed terminal, r is enough.
  • A banner when the terminal opens: the logo with the system information beside it, without touching the network.
  • 136 commands in 19 groups. alias lists them by group and strikes through, with the reason, the ones that cannot work on that machine. a opens a search menu with a preview of each one.
  • Git with fewer surprises: gs sums up the state in one line ("3 local changes · 1 commit to push · nothing to pull"), and gpsa and gpla push and pull this repository and the nested ones, asking about each. There are also menus with a preview to switch branch, pick the files to add while seeing their diff, browse the log or clean merged branches.
  • Workspaces: each folder of ~/projects/ signs commits with its own author and email, and the terminal shows its label next to the branch. Private ones are never pushed to the repository.
  • Node without thinking about the package manager: ni, nd, nt… work the same with npm, pnpm, bun or yarn, because they detect the project's own.
  • WSL and servers: a Windows notification when a command takes more than 30 seconds, opening folders in the Explorer, a shared clipboard, fail2ban and service monitoring with alerts on Telegram.
  • mb doctor checks the installation without changing anything and mb time measures how long a terminal takes to open.
Install, update and start

Accessibility and use. Every text goes through a translation system with 817 strings per language, and mb i18n checks that none is missing. Columns line up counting the double width of Japanese characters. Confirmations are chosen with the arrow keys, never by typing "y" or "n".

Performance. A terminal opens in about 0.1 s. Startup never uses the network or sudo, and never walks the whole PATH, which on WSL includes the Windows folders and would cost about 60 ms.

Security and privacy. Secrets (the Telegram token, the private workspaces) live in two places git ignores. The helper executables read those settings without running them, and nothing sensitive reaches the repository.

Architecture and quality. zsh and bash: a shared library (colours, logo, translations and interface) used by both the terminal and the installer, 20 files of functions, 5 standalone executables and 6 plugins as submodules that the installer moves to their latest stable version. Every command follows the same look and the same conventions.

Status. In daily use since 2022, thoroughly renewed in November 2026.

Technologies

Screenshots