{"id":42963395,"url":"https://github.com/fchastanet/shell-command-bookmarker","last_synced_at":"2026-01-30T23:31:35.379Z","repository":{"id":287783320,"uuid":"965748328","full_name":"fchastanet/shell-command-bookmarker","owner":"fchastanet","description":"A terminal-based UI for managing shell commands with bookmarking, categorization and search capabilities. Built with Bubbletea framework, featuring tab navigation, keyboard shortcuts and focus management.","archived":false,"fork":false,"pushed_at":"2026-01-01T22:42:51.000Z","size":711,"stargazers_count":3,"open_issues_count":17,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2026-01-07T09:52:41.343Z","etag":null,"topics":["bash","bubbletea","cli","elm-architecture","golang","history-management","terminal","tui","zsh"],"latest_commit_sha":null,"homepage":"https://fchastanet.github.io/shell-command-bookmarker/","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/fchastanet.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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-04-13T20:24:23.000Z","updated_at":"2025-09-25T01:25:19.000Z","dependencies_parsed_at":"2025-05-26T19:48:29.667Z","dependency_job_id":"d829b511-47d9-4daf-bd94-be6b4b47bb2c","html_url":"https://github.com/fchastanet/shell-command-bookmarker","commit_stats":null,"previous_names":["fchastanet/bash-tools-command-bookmarker","fchastanet/shell-command-bookmarker"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/fchastanet/shell-command-bookmarker","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fchastanet%2Fshell-command-bookmarker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fchastanet%2Fshell-command-bookmarker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fchastanet%2Fshell-command-bookmarker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fchastanet%2Fshell-command-bookmarker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fchastanet","download_url":"https://codeload.github.com/fchastanet/shell-command-bookmarker/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fchastanet%2Fshell-command-bookmarker/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28923177,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-30T22:32:35.345Z","status":"ssl_error","status_checked_at":"2026-01-30T22:32:31.927Z","response_time":66,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: 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":["bash","bubbletea","cli","elm-architecture","golang","history-management","terminal","tui","zsh"],"created_at":"2026-01-30T23:31:34.587Z","updated_at":"2026-01-30T23:31:35.371Z","avatar_url":"https://github.com/fchastanet.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Shell Command Bookmarker\n\n\u003e **_TIP:_** Checkout related projects of this suite\n\u003e\n\u003e - [My documents](https://fchastanet.github.io/my-documents/)\n\u003e - [Bash Tools Framework](https://fchastanet.github.io/bash-tools-framework/)\n\u003e - [Bash Tools](https://fchastanet.github.io/bash-tools/)\n\u003e - [Bash Dev Env](https://fchastanet.github.io/bash-dev-env/)\n\u003e - [Bash Compiler](https://fchastanet.github.io/bash-compiler/)\n\u003e - [Shell Command Bookmarker](https://fchastanet.github.io/shell-command-bookmarker/)\n\n\u003c!-- markdownlint-capture --\u003e\n\n\u003c!-- markdownlint-disable MD013 --\u003e\n\n[![GitHub release (latest SemVer)](https://img.shields.io/github/release/fchastanet/shell-command-bookmarker?logo=github\u0026sort=semver)](https://github.com/fchastanet/shell-command-bookmarker/releases)\n[![GitHubLicense](https://img.shields.io/github/license/Naereen/StrapDown.js.svg)](https://github.com/fchastanet/shell-command-bookmarker/blob/master/LICENSE)\n[![pre-commit](https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit)](https://github.com/pre-commit/pre-commit)\n[![CI/CD](https://github.com/fchastanet/shell-command-bookmarker/actions/workflows/main.yml/badge.svg)](https://github.com/fchastanet/shell-command-bookmarker/actions?query=workflow%3A%22Lint+and+test%22+branch%3Amaster)\n[![ProjectStatus](http://opensource.box.com/badges/active.svg)](http://opensource.box.com/badges \"Project Status\")\n[![DeepSource](https://deepsource.io/gh/fchastanet/shell-command-bookmarker.svg/?label=active+issues\u0026show_trend=true)](https://deepsource.io/gh/fchastanet/shell-command-bookmarker/?ref=repository-badge)\n[![DeepSource](https://deepsource.io/gh/fchastanet/shell-command-bookmarker.svg/?label=resolved+issues\u0026show_trend=true)](https://deepsource.io/gh/fchastanet/shell-command-bookmarker/?ref=repository-badge)\n[![AverageTimeToResolveAnIssue](http://isitmaintained.com/badge/resolution/fchastanet/shell-command-bookmarker.svg)](http://isitmaintained.com/project/fchastanet/shell-command-bookmarker \"Average time to resolve an issue\")\n[![PercentageOfIssuesStillOpen](http://isitmaintained.com/badge/open/fchastanet/shell-command-bookmarker.svg)](http://isitmaintained.com/project/fchastanet/shell-command-bookmarker \"Percentage of issues still open\")\n\n\u003c!-- markdownlint-restore --\u003e\n\n- [1. Excerpt](#1-excerpt)\n- [2. Features](#2-features)\n- [3. Development](#3-development)\n  - [3.1. Go Libraries used](#31-go-libraries-used)\n  - [3.2. Necessary tools](#32-necessary-tools)\n  - [3.3. Pre-commit hook](#33-pre-commit-hook)\n  - [3.4. pre-commit external tools install](#34-pre-commit-external-tools-install)\n  - [3.5. detect dead code](#35-detect-dead-code)\n  - [3.6. Build/run/clean](#36-buildrunclean)\n    - [3.6.1. Build](#361-build)\n    - [3.6.2. Tests](#362-tests)\n    - [3.6.3. Coverage](#363-coverage)\n    - [3.6.4. run the binary](#364-run-the-binary)\n    - [3.6.5. Clean](#365-clean)\n- [4. Commands](#4-commands)\n- [5. Resources](#5-resources)\n\n## 1. Excerpt\n\n\u003e [!WARNING]\n\u003e\n\u003e **Beta Version available, not fully tested !**\n\n| **Dark theme**                               | **Light theme**                               |\n| -------------------------------------------- | --------------------------------------------- |\n| ![application preview](doc/preview-dark.png) | ![application preview](doc/preview-light.png) |\n\nThis tool provides a terminal-based user interface (TUI) for managing and\norganizing shell commands. It allows users to:\n\n- Save frequently used shell commands as bookmarks\n- Categorize commands with tags\n- Search through saved commands quickly\n- Execute saved commands directly from the interface\n\nThe application uses the Bubbletea framework to create an interactive terminal\nUI with features like:\n\n- Tab-based navigation\n- Keyboard shortcuts\n- Focus management between different UI components\n- Command organization and filtering\n- Persistent storage using SQLite for saving bookmarks and tags\n- Shell integration (Bash/Zsh) for easy command execution\n- Open source under the MIT License\n\nThis tool is part of a larger suite of Bash productivity tools designed to\nenhance shell workflows and command management.\n\n## 2. Features\n\n- **Bookmark Commands**: Save frequently used shell commands for quick access.\n- **Tagging System**: Organize commands with tags for easy categorization.\n- **Search Functionality**: Quickly find commands using a search bar.\n- **Command Execution**: Execute saved commands directly from the interface.\n- **Keyboard Shortcuts**: Use keyboard shortcuts for efficient navigation and\n  command execution.\n- **Persistent Storage**: Save bookmarks and tags to a SQLite database for\n  persistence across sessions.\n- **Shell Integration**: Easily paste commands into the shell prompt using\n  keyboard shortcuts.\n  - see [doc/shell-integration.md](doc/shell-integration.md) for more details.\n- **Cross-Platform Compatibility**: Works on any terminal that supports the\n  Bubbletea framework.\n- **Open Source**: Licensed under the MIT License, allowing for free use and\n  modification.\n\n## 3. Development\n\n### 3.1. Go Libraries used\n\n- [slog](https://pkg.go.dev/golang.org/x/exp/slog) is logging system\n  - [slog tutorial](https://betterstack.com/community/guides/logging/logging-in-go/#customizing-the-default-logger)\n- [Bubbletea](https://github.com/charmbracelet/bubbletea) A powerful little TUI\n  framework.\n- Not a library, but a lot of snippets, ui logic and design have been taken from\n  [PUG - A terminal user interface for terraform power users](https://github.com/leg100/pug).\n- snippets from\n  [Brandon Fulljames](https://github.com/Evertras/bubble-table/blob/main/table/dimensions.go)\n\n### 3.2. Necessary tools\n\n```bash\ngo install golang.org/x/tools/cmd/goimports@latest\n```\n\n### 3.3. Pre-commit hook\n\nThis repository uses pre-commit software to ensure every commits respects a set\nof rules specified by the `.pre-commit-config.yaml` file. It supposes pre-commit\nsoftware is [installed](https://pre-commit.com/#install) in your environment.\n\nYou also have to execute the following command to enable it:\n\n```bash\npre-commit install --hook-type pre-commit --hook-type pre-push\n```\n\nNow each time you commit or push, some linters/compilation tools are launched\nautomatically\n\n### 3.4. pre-commit external tools install\n\n```bash\ngo install github.com/securego/gosec/v2/cmd/gosec@latest\ngo install github.com/OpenPeeDeeP/depguard/cmd/depguard@latest\ngo install golang.org/x/tools/cmd/goimports@latest\ngo install github.com/go-delve/delve/cmd/dlv@latest\ngo install github.com/dkorunic/betteralign/cmd/betteralign@latest\ngo install github.com/go-critic/go-critic/cmd/go-critic@latest\ngo install -v github.com/go-critic/go-critic/cmd/gocritic@latest\n```\n\n### 3.5. detect dead code\n\n```bash\ngo install golang.org/x/tools/cmd/deadcode@latest\ndeadcode -filter \"github.com/fchastanet/shell-command-bookmarker\" ./app/main.go\n```\n\n### 3.6. Build/run/clean\n\nFormatting is managed exclusively by pre-commit hooks.\n\n#### 3.6.1. Build\n\n```bash\n.build/build-docker.sh\n```\n\n```bash\n.build/build-local.sh\n```\n\n#### 3.6.2. Tests\n\n```bash\n.build/test.sh\n```\n\n#### 3.6.3. Coverage\n\n```bash\n.build/coverage.sh\n```\n\n#### 3.6.4. run the binary\n\n```bash\n.build/run.sh\n```\n\n#### 3.6.5. Clean\n\n```bash\n.build/clean.sh\n```\n\n## 4. Commands\n\nRun the project\n\n```bash\nHISTFILE=~/.bash_history go run -tags \"sqlite_fts5\" ./app/main.go -d\n```\n\n## 5. Resources\n\n- [TUI Best Practices](doc/tui-best-practices.md)\n- [Go Best Practices](doc/go-best-practices.md)\n- [Building BubbleTea Programs](https://leg100.github.io/en/posts/building-bubbletea-programs/)\n- [Bubbletea Documentation](https://pkg.go.dev/github.com/charmbracelet/bubbletea)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffchastanet%2Fshell-command-bookmarker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffchastanet%2Fshell-command-bookmarker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffchastanet%2Fshell-command-bookmarker/lists"}