{"id":13652858,"url":"https://github.com/PlankCipher/kabmat","last_synced_at":"2025-04-23T03:31:33.389Z","repository":{"id":37806917,"uuid":"452383633","full_name":"PlankCipher/kabmat","owner":"PlankCipher","description":"TUI program for managing kanban boards with vim-like keybindings","archived":false,"fork":false,"pushed_at":"2023-01-26T11:05:14.000Z","size":1913,"stargazers_count":368,"open_issues_count":12,"forks_count":18,"subscribers_count":10,"default_branch":"master","last_synced_at":"2024-11-10T03:35:46.002Z","etag":null,"topics":["kanban","kanban-board","linux","ncurses","terminal","tui","vim"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/PlankCipher.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}},"created_at":"2022-01-26T18:00:20.000Z","updated_at":"2024-11-09T00:10:25.000Z","dependencies_parsed_at":"2023-02-04T00:02:13.302Z","dependency_job_id":null,"html_url":"https://github.com/PlankCipher/kabmat","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PlankCipher%2Fkabmat","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PlankCipher%2Fkabmat/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PlankCipher%2Fkabmat/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PlankCipher%2Fkabmat/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/PlankCipher","download_url":"https://codeload.github.com/PlankCipher/kabmat/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250365615,"owners_count":21418715,"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","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":["kanban","kanban-board","linux","ncurses","terminal","tui","vim"],"created_at":"2024-08-02T02:01:03.440Z","updated_at":"2025-04-23T03:31:29.903Z","avatar_url":"https://github.com/PlankCipher.png","language":"C++","readme":"\u003cdiv align=\"center\"\u003e\n  \u003ch1\u003ekabmat\u003c/h1\u003e\n\n  \u003ca href=\"https://ko-fi.com/Y8Y4HZ5S3\" target=\"_blank\"\u003e\n    \u003cimg src=\"https://ko-fi.com/img/githubbutton_sm.svg\" alt=\"Buy Me a Coffee at ko-fi.com\" /\u003e\n  \u003c/a\u003e\n\n  \u003cbr\u003e\n  \u003cbr\u003e\n\nTUI program for managing kanban boards with vim-like keybindings\n\n\u003c/div\u003e\n\n## Preview\n\n![kabmat](./assets/kabmat.gif)\n\n![kabmat](./assets/kabmat.png)\n\n## Dependencies\n\n- `ncurses` for the UI\n- `make` and `g++`/`gcc` for compiling and installing\n\n## Installation\n\n1. get the source code from latest release or clone this repo =\u003e `git clone https://github.com/PlankCipher/kabmat.git`\n2. cd into the source code or cloned repo =\u003e `cd kabmat`\n3. run `make` to build the program\n4. run `sudo make install` to install it\n\n## Usage\n\n```\nkabmat 2.8.0\nTUI program for managing kanban boards with vim-like keybindings\n\nUsage: kabmat [OPTION]...\n\nOptions:\n  -h, --help              print this help message\n  -v, --version           print program version\n\n  -l, --list              list all boards\n  -c, --create \u003cname\u003e     create a new board with the name \u003cname\u003e\n  -o, --open \u003cname\u003e       open board with name \u003cname\u003e\n  -d, --delete \u003cname\u003e     delete board with name \u003cname\u003e\n\n  -t, --text              disable tui\n  -b, --card-at-bottom    when moving cards between columns, put them at the bottom\n\nConsult the man page for more information\n```\n\n## Keybindings in `kabmat`\n\nI tried making the keybindings as intuitive and expected as possible, and for the most part they are. For example, generally `c` creates an entity, `d` deletes, `k` moves up, `j` moves down, etc...\n\n### Help Window:\n\n| Key | Function             |\n| --- | -------------------- |\n| k   | scroll up one line   |\n| j   | scroll down one line |\n| q   | close the window     |\n\n### Main Menu:\n\n| Key       | Function                               |\n| --------- | -------------------------------------- |\n| q         | quit                                   |\n| ?         | show help window                       |\n| k         | highlight the above board name         |\n| j         | highlight the below board name         |\n| g         | highlight the first board name         |\n| G         | highlight the last board name          |\n| K         | move highlighted board up              |\n| J         | move highlighted board down            |\n| d         | delete the currently highlighted board |\n| r, e      | rename the currently highlighted board |\n| c         | create a new board and highlight it    |\n| \\\u003cEnter\\\u003e | open the currently highlighted board   |\n\n### Input Field:\n\n#### Normal mode:\n\n| Key        | Function                                                         |\n| ---------- | ---------------------------------------------------------------- |\n| \\\u003cEsc\\\u003e, q | cancel and close the input field                                 |\n| \\\u003cEnter\\\u003e  | submit and close the input field                                 |\n| h          | move cursor one character to the left                            |\n| l          | move cursor one character to the right                           |\n| 0          | move cursor to the start of the line                             |\n| $          | move cursor to the end of the line                               |\n| k          | move cursor up one line (in multi-row input only)                |\n| j          | move cursor down one line (in multi-row input only)              |\n| g          | move cursor to the first line (in multi-row input only)          |\n| G          | move cursor to the last line (in multi-row input only)           |\n| i          | change mode to insert                                            |\n| a          | move cursor one character to the right and change mode to insert |\n| I          | move cursor to the start of the line and change mode to insert   |\n| A          | move cursor to the end of the line and change mode to insert     |\n| S          | delete everything on the line and change mode to insert          |\n| d          | delete line under cursor (in multi-row input only)               |\n\n#### Insert mode:\n\n| Key                      | Function                                                                |\n| ------------------------ | ----------------------------------------------------------------------- |\n| \\\u003cEsc\\\u003e                  | change mode to normal                                                   |\n| \\\u003cEnter\\\u003e                | submit and close the input field (or add a new line in multi-row input) |\n| \\\u003cBackspace\\\u003e/\\\u003cDelete\\\u003e | delete the character before the cursor                                  |\n| any other key            | inserted before the cursor                                              |\n\n### Confirmation Window:\n\n| Key          | Function             |\n| ------------ | -------------------- |\n| \\\u003cEnter\\\u003e, y | confirm action (yes) |\n| \\\u003cEsc\\\u003e, n   | cancel action (no)   |\n\n### Board Screen:\n\n| Key              | Function                                                   |\n| ---------------- | ---------------------------------------------------------- |\n| q                | quit to where the board was opened from (main menu or cli) |\n| ?                | show help window                                           |\n| h                | focus the left column                                      |\n| l                | focus the right column                                     |\n| k                | focus the above card                                       |\n| j                | focus the below card                                       |\n| g                | focus the first card                                       |\n| G                | focus the last card                                        |\n| H                | move focused card to the left column                       |\n| L                | move focused card to the right column                      |\n| K                | move focused card up                                       |\n| J                | move focused card down                                     |\n| \\\u003cC-h\\\u003e, \\\u003cC-p\\\u003e | move focused column to the left                            |\n| \\\u003cC-l\\\u003e, \\\u003cC-n\\\u003e | move focused column to the right                           |\n| C                | create a new column                                        |\n| E                | edit title of focused column                               |\n| D                | delete focused column                                      |\n| c                | create a new card in focused column                        |\n| e                | edit focused card                                          |\n| d                | delete focused card                                        |\n\n### Card Info Window:\n\n| Key           | Function                                      |\n| ------------- | --------------------------------------------- |\n| \\\u003cEsc\\\u003e, q    | cancel and close (if in normal mode)          |\n| \\\u003cEnter\\\u003e     | submit and close (if in normal mode)          |\n| \\\u003cTab\\\u003e       | switch focused input (content or description) |\n| c             | open checklist items window                   |\n| any other key | handled by the focused input                  |\n\n### Checklist Window:\n\n| Key       | Function                                |\n| --------- | --------------------------------------- |\n| q         | close the window                        |\n| k         | highlight the item above                |\n| j         | highlight the item below                |\n| g         | highlight the first item                |\n| G         | highlight the last item                 |\n| K         | move highlighted item up                |\n| J         | move highlighted item down              |\n| c         | add a new item to the list              |\n| e         | edit content of highlighted item        |\n| \\\u003cSpace\\\u003e | toggle highlighted item (done/not done) |\n| d         | delete highlighted item                 |\n\n## Window Manager Integration\n\nIf you want to launch it sort of like an application you can make a keybinding to launch your terminal with `kabmat` running instead of the shell. For example, here is how I do it with `st` and `dwm`.\n\n```bash\nst -e sh -c kabmat\n```\n\n```c\nstatic Key keys[] = {\n    /* modifier                                key                        function        argument */\n    ....\n    { (Mod4Mask|Mod1Mask),                     XK_t,                      spawn,          SHCMD(\"st -e sh -c kabmat\") },\n    ....\n};\n```\n","funding_links":["https://ko-fi.com/Y8Y4HZ5S3"],"categories":["Task Management","\u003ca name=\"todo-manager\"\u003e\u003c/a\u003eTodo managers","Table of Contents"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FPlankCipher%2Fkabmat","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FPlankCipher%2Fkabmat","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FPlankCipher%2Fkabmat/lists"}