Home

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

kabmat

kabmat

Dependencies

Installation

  1. get the source code from latest release or clone this repo => git clone https://github.com/PlankCipher/kabmat.git
  2. cd into the source code or cloned repo => cd kabmat
  3. run make to build the program
  4. 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:

KeyFunction
kscroll up one line
jscroll down one line
qclose the window

Main Menu:

KeyFunction
qquit
?show help window
khighlight the above board name
jhighlight the below board name
ghighlight the first board name
Ghighlight the last board name
Kmove highlighted board up
Jmove highlighted board down
ddelete the currently highlighted board
r, erename the currently highlighted board
ccreate a new board and highlight it
<Enter>open the currently highlighted board

Input Field:

Normal mode:

KeyFunction
<Esc>, qcancel and close the input field
<Enter>submit and close the input field
hmove cursor one character to the left
lmove cursor one character to the right
0move cursor to the start of the line
$move cursor to the end of the line
kmove cursor up one line (in multi-row input only)
jmove cursor down one line (in multi-row input only)
gmove cursor to the first line (in multi-row input only)
Gmove cursor to the last line (in multi-row input only)
ichange mode to insert
amove cursor one character to the right and change mode to insert
Imove cursor to the start of the line and change mode to insert
Amove cursor to the end of the line and change mode to insert
Sdelete everything on the line and change mode to insert
ddelete line under cursor (in multi-row input only)

Insert mode:

KeyFunction
<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 keyinserted before the cursor

Confirmation Window:

KeyFunction
<Enter>, yconfirm action (yes)
<Esc>, ncancel action (no)

Board Screen:

KeyFunction
qquit to where the board was opened from (main menu or cli)
?show help window
hfocus the left column
lfocus the right column
kfocus the above card
jfocus the below card
gfocus the first card
Gfocus the last card
Hmove focused card to the left column
Lmove focused card to the right column
Kmove focused card up
Jmove focused card down
<C-h>, <C-p>move focused column to the left
<C-l>, <C-n>move focused column to the right
Ccreate a new column
Eedit title of focused column
Ddelete focused column
ccreate a new card in focused column
eedit focused card
ddelete focused card

Card Info Window:

KeyFunction
<Esc>, qcancel and close (if in normal mode)
<Enter>submit and close (if in normal mode)
<Tab>switch focused input (content or description)
copen checklist items window
any other keyhandled by the focused input

Checklist Window:

KeyFunction
qclose the window
khighlight the item above
jhighlight the item below
ghighlight the first item
Ghighlight the last item
Kmove highlighted item up
Jmove highlighted item down
cadd a new item to the list
eedit content of highlighted item
<Space>toggle highlighted item (done/not done)
ddelete 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") },
    ....
};