{"id":28906851,"url":"https://github.com/dennisbergevin/mash","last_synced_at":"2026-01-20T16:33:47.399Z","repository":{"id":299409033,"uuid":"1002231024","full_name":"dennisbergevin/mash","owner":"dennisbergevin","description":"A customizable command launcher for storing and executing commands.","archived":false,"fork":false,"pushed_at":"2025-06-21T17:49:02.000Z","size":1966,"stargazers_count":28,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-07-11T04:00:55.765Z","etag":null,"topics":["bubbletea","charmbracelet","cli","go","golang","tui"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dennisbergevin.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-06-15T02:19:08.000Z","updated_at":"2025-07-07T18:17:03.000Z","dependencies_parsed_at":"2025-06-16T12:37:59.463Z","dependency_job_id":null,"html_url":"https://github.com/dennisbergevin/mash","commit_stats":null,"previous_names":["dennisbergevin/mash"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/dennisbergevin/mash","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dennisbergevin%2Fmash","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dennisbergevin%2Fmash/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dennisbergevin%2Fmash/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dennisbergevin%2Fmash/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dennisbergevin","download_url":"https://codeload.github.com/dennisbergevin/mash/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dennisbergevin%2Fmash/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28607297,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-20T16:10:39.856Z","status":"ssl_error","status_checked_at":"2026-01-20T16:10:39.493Z","response_time":117,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bubbletea","charmbracelet","cli","go","golang","tui"],"created_at":"2025-06-21T15:10:17.095Z","updated_at":"2026-01-20T16:33:47.383Z","avatar_url":"https://github.com/dennisbergevin.png","language":"Go","funding_links":[],"categories":["\u003ca name=\"launcher\"\u003e\u003c/a\u003eCommand launchers"],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\u003ch1\u003e️  mash  \u003c/h1\u003e\n\u003ch5 align=\"center\"\u003e\nA customizable command launcher for storing and executing commands.\n\u003c/h5\u003e\n\u003c/div\u003e\n\u003cbr\u003e\n\u003cdiv align=\"center\"\u003e\n  \u003cimg alt=\"Mash logo\" src=\"./assets/mash-logo.png\"\u003e\n\u003c/div\u003e\n\n## Features\n\n- 📓 A customizable interactive list view of executable commands\n- 🌲 Tree view of commands\n- 🏷 Filterable list tagging\n\n![Demo](./assets/mash-demo.gif)\n\n#### Table of Contents\n\n- [Installation](#installation)\n- [Configuration](#configuration)\n- [Command line arguments](#command-line-arguments)\n  - [Help mode](#help-mode)\n  - [Global](#global)\n  - [Tag](#tag)\n  - [Tree](#tree)\n  - [Skip intro](#skip-intro)\n\n---\n\n## Installation\n\n### Homebrew\n\n```console\nbrew tap dennisbergevin/tools\nbrew install mash\n```\n\n### Go\n\nInstall with Go:\n\n```console\ngo install github.com/dennisbergevin/mash@latest\n```\n\nOr grab a binary from [the latest release](https://github.com/dennisbergevin/mash/releases/latest).\n\n---\n\n## Configuration\n\nCreate a `.mash.json` anywhere in the directory tree (at or above the current working directory). The config file closest to the current working directory will be preferred.\n\nThis enables you to have different configs for different parent directories, such as one for a specific repository, one for personal projects, one for work scripts, etc.\n\nFor global configurations you can create a `config.json` file in the `~/.config/mash/` directory.\n\n\u003e [!NOTE]  \n\u003e The \"cmd\" property is where you specify the command to execute. If you prefix with \"cd:\" followed by a filepath, you can open a new shell in that path. Otherwise, `mash` executes the provided command and returns to the original directory where `mash` was called.\n\nThe content should be in the following format:\n\n```json\n{\n  \"tagColor\": \"#FFA500\",\n  \"titleColor\": \"#00CED1\",\n  \"descColor\": \"#888888\",\n  \"skipIntro\": false,\n  \"items\": [\n    {\n      \"title\": \"Playwright run\",\n      \"desc\": \"--specs\",\n      \"cmd\": \"cd ~/Projects/playwright-cli-select \u0026\u0026 npx playwright-cli-select run --specs\",\n      \"tags\": [\"testing\", \"projects\"]\n    },\n    {\n      \"title\": \"Say Goodbye\",\n      \"desc\": \"Print Goodbye\",\n      \"cmd\": \"echo Goodbye\",\n      \"tags\": [\"echo\"]\n    },\n    {\n      \"title\": \"List Files\",\n      \"desc\": \"List files in current dir\",\n      \"cmd\": \"ls -la\"\n    },\n    { \"title\": \"Current Directory\", \"desc\": \"Print working dir\", \"cmd\": \"pwd\" },\n    { \"title\": \"Date\", \"desc\": \"Show current date/time\", \"cmd\": \"date\" },\n    {\n      \"title\": \"Go home\",\n      \"desc\": \"home directory\",\n      \"cmd\": \"cd:~\",\n      \"tags\": [\"nav\"]\n    },\n    { \"title\": \"Whoami\", \"desc\": \"Show current user\", \"cmd\": \"whoami\" },\n    {\n      \"title\": \"Git Version\",\n      \"desc\": \"Show installed Git version\",\n      \"cmd\": \"git --version\",\n      \"tags\": [\"git\"]\n    },\n    {\n      \"title\": \"pwtree\",\n      \"desc\": \"See an interactive tree view of Playwright suite\",\n      \"cmd\": \"cd ~/Projects/playwright-cli-select \u0026\u0026 pwtree\",\n      \"tags\": [\"playwright\", \"projects\"]\n    },\n    {\n      \"title\": \"List Docker Containers\",\n      \"desc\": \"Running containers\",\n      \"cmd\": \"docker ps\"\n    },\n    {\n      \"title\": \"List Aliases\",\n      \"desc\": \"Show shell aliases\",\n      \"cmd\": \"zsh -i -c alias\"\n    }\n  ]\n}\n```\n\n---\n\n## Command line arguments\n\n### Help mode\n\nAll available commands are included in the help menu:\n\n```bash\nmash --help\n```\n\n### Global\n\nTo display the items in the home `.config/mash/config.json` file from any directory:\n\n```bash\nmash --global\n```\n\n### Tag\n\nTo display only items that have a tag in the respective config file:\n\n```bash\nmash --tag\n```\n\nTo display only items that have a tag in the global config file:\n\n```bash\nmash --tag --global\n```\n\nTo display only items with specific tags, quoted and separated by semicolon:\n\n```bash\nmash --tag \"dev;nav\"\n```\n\nTo display a tree view of items in the respective config file:\n\n### Tree\n\n\u003e [!NOTE]  \n\u003e You can set the color of the tag, title, and description shown in the tree view within the config file.\n\n![Mash tree](./assets/mash-tree.png)\n\n```bash\nmash --tree\n```\n\nTo display a tree view of only tagged items in the respective config file:\n\n```bash\nmash --tree --tag\n```\n\nTo display a tree view of items with specific tags in the respective config file:\n\n```bash\nmash --tree --tag=\"dev\"\n```\n\n### Skip intro\n\n\u003e [!NOTE]  \n\u003e You can also set whether to skip intro screen within the config file.\n\nTo skip the intro screen:\n\n```bash\nmash --skip-intro\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdennisbergevin%2Fmash","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdennisbergevin%2Fmash","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdennisbergevin%2Fmash/lists"}