Awesome
<div align="center">
<h1>kabmat</h1>
<a href="https://ko-fi.com/Y8Y4HZ5S3" target="_blank">
<img src="https://ko-fi.com/img/githubbutton_sm.svg" alt="Buy Me a Coffee at ko-fi.com" />
</a>
<br>
<br>
TUI program for managing kanban boards with vim-like keybindings
</div>
Preview
Dependencies
ncurses
for the UI
make
and g++
/gcc
for 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
make
to build the program
- run
sudo make install
to 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") },
....
};