Kabmat
TUI program for managing kanban boards with vim-like keybindings
Install / Use
/learn @PlankCipher/KabmatREADME
TUI program for managing kanban boards with vim-like keybindings
</div>Preview


Dependencies
ncursesfor the UImakeandg++/gccfor compiling and installing
Installation
- get the source code from latest release or clone this repo =>
git clone https://github.com/PlankCipher/kabmat.git - cd into the source code or cloned repo =>
cd kabmat - run
maketo build the program - run
sudo make installto install it
Usage
kabmat 2.8.0
TUI program for managing kanban boards with vim-like keybindings
Usage: kabmat [OPTION]...
Options:
-h, --help print this help message
-v, --version print program version
-l, --list list all boards
-c, --create <name> create a new board with the name <name>
-o, --open <name> open board with name <name>
-d, --delete <name> delete board with name <name>
-t, --text disable tui
-b, --card-at-bottom when moving cards between columns, put them at the bottom
Consult the man page for more information
Keybindings in kabmat
I 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...
Help Window:
| Key | Function | | --- | -------------------- | | k | scroll up one line | | j | scroll down one line | | q | close the window |
Main Menu:
| Key | Function | | --------- | -------------------------------------- | | q | quit | | ? | show help window | | k | highlight the above board name | | j | highlight the below board name | | g | highlight the first board name | | G | highlight the last board name | | K | move highlighted board up | | J | move highlighted board down | | d | delete the currently highlighted board | | r, e | rename the currently highlighted board | | c | create a new board and highlight it | | <Enter> | open the currently highlighted board |
Input Field:
Normal mode:
| Key | Function | | ---------- | ---------------------------------------------------------------- | | <Esc>, q | cancel and close the input field | | <Enter> | submit and close the input field | | h | move cursor one character to the left | | l | move cursor one character to the right | | 0 | move cursor to the start of the line | | $ | move cursor to the end of the line | | k | move cursor up one line (in multi-row input only) | | j | move cursor down one line (in multi-row input only) | | g | move cursor to the first line (in multi-row input only) | | G | move cursor to the last line (in multi-row input only) | | i | change mode to insert | | a | move cursor one character to the right and change mode to insert | | I | move cursor to the start of the line and change mode to insert | | A | move cursor to the end of the line and change mode to insert | | S | delete everything on the line and change mode to insert | | d | delete line under cursor (in multi-row input only) |
Insert mode:
| Key | Function | | ------------------------ | ----------------------------------------------------------------------- | | <Esc> | change mode to normal | | <Enter> | submit and close the input field (or add a new line in multi-row input) | | <Backspace>/<Delete> | delete the character before the cursor | | any other key | inserted before the cursor |
Confirmation Window:
| Key | Function | | ------------ | -------------------- | | <Enter>, y | confirm action (yes) | | <Esc>, n | cancel action (no) |
Board Screen:
| Key | Function | | ---------------- | ---------------------------------------------------------- | | q | quit to where the board was opened from (main menu or cli) | | ? | show help window | | h | focus the left column | | l | focus the right column | | k | focus the above card | | j | focus the below card | | g | focus the first card | | G | focus the last card | | H | move focused card to the left column | | L | move focused card to the right column | | K | move focused card up | | J | move focused card down | | <C-h>, <C-p> | move focused column to the left | | <C-l>, <C-n> | move focused column to the right | | C | create a new column | | E | edit title of focused column | | D | delete focused column | | c | create a new card in focused column | | e | edit focused card | | d | delete focused card |
Card Info Window:
| Key | Function | | ------------- | --------------------------------------------- | | <Esc>, q | cancel and close (if in normal mode) | | <Enter> | submit and close (if in normal mode) | | <Tab> | switch focused input (content or description) | | c | open checklist items window | | any other key | handled by the focused input |
Checklist Window:
| Key | Function | | --------- | --------------------------------------- | | q | close the window | | k | highlight the item above | | j | highlight the item below | | g | highlight the first item | | G | highlight the last item | | K | move highlighted item up | | J | move highlighted item down | | c | add a new item to the list | | e | edit content of highlighted item | | <Space> | toggle highlighted item (done/not done) | | d | delete highlighted item |
Window Manager Integration
If 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.
st -e sh -c kabmat
static Key keys[] = {
/* modifier key function argument */
....
{ (Mod4Mask|Mod1Mask), XK_t, spawn, SHCMD("st -e sh -c kabmat") },
....
};
