{"id":30639629,"url":"https://github.com/hanaasagi/magonote","last_synced_at":"2025-08-31T00:09:21.238Z","repository":{"id":300907799,"uuid":"1006530018","full_name":"Hanaasagi/magonote","owner":"Hanaasagi","description":"🎯 Quickly select and act on visible text in tmux with smart hints and clipboard support.","archived":false,"fork":false,"pushed_at":"2025-08-12T03:18:56.000Z","size":264,"stargazers_count":2,"open_issues_count":2,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-08-23T09:54:30.668Z","etag":null,"topics":["golang","keyboard-shortcuts","productivity","terminal","text-selection","tmux","tmux-plugins","vimium","vimperator"],"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/Hanaasagi.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-22T13:31:16.000Z","updated_at":"2025-08-12T03:18:58.000Z","dependencies_parsed_at":"2025-06-24T08:09:47.840Z","dependency_job_id":"70027835-1bdc-465b-b5b0-fae4fdeb52fd","html_url":"https://github.com/Hanaasagi/magonote","commit_stats":null,"previous_names":["hanaasagi/magonote"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Hanaasagi/magonote","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Hanaasagi%2Fmagonote","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Hanaasagi%2Fmagonote/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Hanaasagi%2Fmagonote/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Hanaasagi%2Fmagonote/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Hanaasagi","download_url":"https://codeload.github.com/Hanaasagi/magonote/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Hanaasagi%2Fmagonote/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":272922346,"owners_count":25015769,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-30T02:00:09.474Z","response_time":77,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["golang","keyboard-shortcuts","productivity","terminal","text-selection","tmux","tmux-plugins","vimium","vimperator"],"created_at":"2025-08-31T00:09:20.215Z","updated_at":"2025-08-31T00:09:21.222Z","avatar_url":"https://github.com/Hanaasagi.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003e magonote 🦯 \u003c/h1\u003e\n\n\u003cdiv align=\"center\"\u003e\n  \n𝑨 𝒎𝒐𝒅𝒆𝒓𝒏 𝒕𝒎𝒖𝒙 𝒑𝒍𝒖𝒈𝒊𝒏 𝒕𝒐 𝒔𝒆𝒍𝒆𝒄𝒕 𝒂𝒏𝒅 𝒂𝒄𝒕 𝒐𝒏 𝒗𝒊𝒔𝒊𝒃𝒍𝒆 𝒕𝒆𝒙𝒕 𝒘𝒊𝒕𝒉 𝒎𝒊𝒏𝒊𝒎𝒂𝒍 𝒌𝒆𝒚𝒔𝒕𝒓𝒐𝒌𝒆𝒔\n\u003c/div\u003e\n\n[![Build Status](https://img.shields.io/badge/Build-Passing-brightgreen.svg)](https://github.com/Hanaasagi/magonote/actions/workflows/ci.yaml/badge.svg)\n[![Go Version](https://img.shields.io/badge/Go-%3E%3D1.24-blue.svg)](https://golang.org/)\n[![License: MIT](https://img.shields.io/badge/License-MIT-orange.svg)](https://opensource.org/licenses/MIT)\n\n## 🚀 Description\n\n**magonote** is a powerful tmux plugin designed to revolutionize how you interact with text in terminal sessions. It intelligently identifies and highlights various text patterns—such as IP addresses, URLs, file paths, Git hashes, and more—allowing you to quickly select and act on them with minimal effort.\n\n\n\n## ✨ Key Features\n\n### 🎯 **Smart Pattern Recognition**\n- **Built-in Patterns**: Automatically detects IPs, URLs, file paths, Git hashes, UUIDs, Docker image IDs, and more\n- **Custom Patterns**: Add your own regex patterns for project-specific needs\n- **Git Integration**: Enhanced support for Git diffs, status output, and commit hashes\n\n### 🎨 **Flexible Customization**\n- **Multiple Keyboard Layouts**: Support for QWERTY, QWERTZ, AZERTY, Colemak, Dvorak, and variations\n- **Color Themes**: Fully customizable color schemes for hints and highlights  \n- **Positioning Options**: Choose hint placement (left/right) for optimal visibility\n\n### 🔧 **Advanced Functionality**\n- **Multi-Selection Mode**: Select multiple items at once with visual feedback\n- **Editor Integration**: Automatically open files in your preferred editor\n- **Contrast Mode**: Enhanced visibility with bracketed hints\n- **Unique Filtering**: Options to handle duplicate matches intelligently\n\n## 📸 Screenshots\n\n![preview](https://github.com/user-attachments/assets/98e3bf35-5397-4049-8f19-e21a99ecfe84)\n\n\n\n## 📦 Installation\n\n### Prerequisites\n\n- **tmux** version 3.1 or higher\n- **Go** 1.21 or higher (for building from source)\n\n### Quick Install\n\n```bash\n# Clone the repository\ngit clone https://github.com/Hanaasagi/magonote ~/.tmux/plugins/tmux-magonote\n\n# Navigate to the plugin directory\ncd ~/.tmux/plugins/tmux-magonote\n\n# Build the plugin\nmake build\n```\n\n### Enable in tmux\n\nAdd the following line to your `~/.tmux.conf`:\n\n```bash\nset -g @plugin 'Hanaasagi/tmux-magonote'\n```\n\nThen reload your tmux configuration:\n\n```bash\n# Reload tmux config\ntmux source-file ~/.tmux.conf\n```\n\n### Alternative: Manual Installation\n\nIf you prefer manual installation:\n\n```bash\n# Clone to a custom location\ngit clone https://github.com/Hanaasagi/magonote /path/to/magonote\ncd /path/to/magonote\nmake build\n\n# Add to your tmux config\necho \"run-shell '/path/to/magonote/magonote.tmux'\" \u003e\u003e ~/.tmux.conf\n```\n\n\n## 🎮 Usage\n\n### Basic Usage\n\nOnce installed, activate magonote in any tmux session:\n\n```bash\n# Default activation (prefix + Space)\n\u003cprefix\u003e + Space\n```\n\n### Pattern Examples\n\nmagonote automatically recognizes these patterns:\n\n| Pattern Type | Example |\n|-------------|---------|\n| **IPv4** | `192.168.1.1`, `10.0.0.1:8080` |\n| **IPv6** | `2001:db8::1`, `[::1]:8080` |\n| **URLs** | `https://example.com`, `git@github.com:user/repo.git` |\n| **File Paths** | `/home/user/file.txt`, `./config/app.toml` |\n| **Git Hashes** | `a1b2c3d`, `1234567890abcdef...` |\n| **UUIDs** | `550e8400-e29b-41d4-a716-446655440000` |\n| **Docker** | `sha256:30557a29d5abc51e...` |\n| **Colors** | `#FF0000`, `#00FF00` |\n| **Dates** | `2023-12-01`, `2024-01-15T10:30:45Z` |\n\n---\n\n## ⚙️ Configuration\n\n### Configuration File\n\nCreate a configuration file at `~/.config/magonote/config.toml`:\n\n```toml\n[core]\n# Sets the alphabet used for generating hints\nalphabet = \"qwerty\"\n\n# Output format for the picked hint (%H = hint text, %U = uppercase flag)\nformat = \"%H\"\n\n# Hint position: \"left\", \"right\", \"off_left\", or \"off_right\"\nposition = \"left\"\n\n# Enable multi-selection mode\nmulti = false\n\n# Reverse the order for assigned hints\nreverse = false\n\n# Unique level: 0 = none, 1 = unique hints, 2 = highlight only one duplicate\nunique_level = 0\n\n# Put square brackets around hint for visibility\ncontrast = false\n\n[rules]\n# User-defined matching and filtering rules\n\n[rules.include]\n# Additional rules to match. Only { type = \"regex\" } is honored here.\nrules = [\n    # { type = \"regex\", pattern = \"\\\\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\\\.[A-Z|a-z]{2,}\\\\b\" },  # Email\n    # { type = \"regex\", pattern = \"\\\\bhttps?://[\\\\w.-]+\\\\b\" },                                 # URL\n]\n\n[rules.exclude]\n# Exclusion rules to filter out unwanted matches by defining regions in the original text\n# The rules first identify exclusion regions in the input text, then filter out any matches\n# whose coordinates overlap with these regions\nrules = [\n    # Example: Exclude entire shell prompt lines\n    # { type = \"regex\", pattern = \"^user@hostname:.*\\\\$ \" },  # Lines starting with prompt\n    # { type = \"text\", pattern = \"~/project$ \" },             # Specific prompt fragment\n\n    # Additional examples:\n    # { type = \"text\", pattern = \"DEBUG\" },                   # Regions containing \"DEBUG\"\n    # { type = \"regex\", pattern = \"^\\\\[.*\\\\]\\\\$ \" },         # Bracketed prompts like \"[user@host]$ \"\n    # { type = \"regex\", pattern = \"^\\\\d{4}-\\\\d{2}-\\\\d{2}\" }, # Lines starting with dates\n    # { type = \"regex\", pattern = \"Error:.*\" },              # Entire error message lines\n\n    # Exclude log timestamps and noise:\n    # { type = \"regex\", pattern = \"^\\\\d{2}:\\\\d{2}:\\\\d{2}\" }, # Timestamps like 12:34:56\n    # { type = \"text\", pattern = \"INFO\" },                   # Any region containing INFO logs\n]\n\n[colors.match]\n# Foreground color for matches\nforeground = \"green\"\n# Background color for matches\nbackground = \"black\"\n\n[colors.hint]\n# Foreground color for hints\nforeground = \"yellow\"\n# Background color for hints\nbackground = \"black\"\n\n[colors.multi]\n# Foreground color for multi selected items\nforeground = \"yellow\"\n# Background color for multi selected items\nbackground = \"black\"\n\n[colors.select]\n# Foreground color for selection\nforeground = \"blue\"\n# Background color for selection\nbackground = \"black\"\n\n[plugins.tabledetection]\nenabled = true\nmin_lines = 3\nmin_columns = 3\nconfidence_threshold = 0.8\n\n[plugins.colordetection]\nenabled = true\n```\n\n### Command Line Options\n\n```\nUsage:\n  magonote [flags]\n\nFlags:\n  -a, --alphabet string          Sets the alphabet (default \"qwerty\")\n      --bg-color string          Sets the background color for matches (default \"black\")\n      --config string            Config file path (default: XDG config dir, use 'NONE' to disable)\n  -c, --contrast                 Put square brackets around hint for visibility\n      --fg-color string          Sets the foreground color for matches (default \"green\")\n  -f, --format string            Specifies the out format for the picked hint (default \"%H\")\n  -h, --help                     help for magonote\n      --hint-bg-color string     Sets the background color for hints (default \"black\")\n      --hint-fg-color string     Sets the foreground color for hints (default \"yellow\")\n  -i, --input-file string        Read input from file instead of stdin\n  -m, --multi                    Enable multi-selection\n      --multi-bg-color string    Sets the background color for multi selected items (default \"black\")\n      --multi-fg-color string    Sets the foreground color for multi selected items (default \"yellow\")\n  -p, --position string          Hint position (default \"left\")\n  -x, --regexp stringArray       Use this regexp as extra pattern to match\n  -r, --reverse                  Reverse the order for assigned hints\n      --select-bg-color string   Sets the background color for selection (default \"black\")\n      --select-fg-color string   Sets the foreground color for selection (default \"blue\")\n  -t, --target string            Stores the hint in the specified path\n  -u, --unique count             Don't show duplicated hints for the same match (use -u for unique hints, -uu for unique match)\n  -v, --version                  Print version and exit\n```\n\n### Keyboard Layout Options\n\nAvailable layouts: `qwerty`, `qwertz`, `azerty`, `colemak`, `dvorak`\n\nEach layout also supports hand-specific variants:\n- `qwerty-left-hand` - Optimized for left hand\n- `qwerty-right-hand` - Optimized for right hand  \n- `qwerty-homerow` - Only homerow keys\n\n\n\n## 🔗 Alternative Projects\n\n- **[tmux-fingers](https://github.com/Morantron/tmux-fingers)** - Original Ruby/Crystal implementation\n- **[tmux-thumbs](https://github.com/fcsonline/tmux-thumbs)** - Rust-based alternative\n\n\n## 📄 License\n\nThis project is licensed under the **MIT License** - see the [LICENSE](LICENSE) file for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhanaasagi%2Fmagonote","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhanaasagi%2Fmagonote","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhanaasagi%2Fmagonote/lists"}