TUI program for managing kanban boards with vim-like keybindings
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.
Hi there,
I'm starting to use your app, but there is one issue that emerged.
While in insert mode, in fields like Content or Description i cannot use special polish characters, while in the same terminal window they are perfectly fine to insert.
Is there anyway to fix this? We do thoose letters with right alt + a/x/c/o/l/s/...
The keys in my system are loaded as: loadkeys pl.map.gz setfont Lat2-Terminus16
Hey all! Having an interesting issue. My highlight color doesn't seem to be appearing. I'm including a quick screen capture. Right now, there is no color change to indicate which card is in my focus.
Where can I go to get any useful log output to help with this, and/or does anyone have any ideas? Thanks!
Using MacOS Monterey 12.2.1
I know, I know, I should just use Linux... But my work wants to be a full Mac shop, and this is my work machine. :(
Just installed this and I notice that on my PC all the colours are white. Text, non highlighted items and highlighted items including borders.
so i am unable to see when i have a card highlighted.
It would be nice if you could add a config file under .config/kabmat/
where we could specify specific colours for our kabmat install.
This would also allow the community to create colour files for different popualr colour schemes i.e gruvbox, dracula etc.
keybindings and other things could also be added to the config 😊
I emailed plankcipher before requesting this feature who asked that I post it here:
It would be really useful to have date filters for each panel (Yesterday, Today, Tomorrow (Or Monday if tomorrow is the weekend))
Currently our stand-ups involve
What we were working on yesterday (open or complete)
What we are working on today (only open)
What is coming up tomorrow
Hello,
After installing with sudo make install app wont start
It seems it didn't create ~/.local/share/kabmat directory, nor the "data" file install.log execute.log
I have created a new card with a title and a description. When I try to edit this card again afterwards, I can successfully change the title, but not the description.
It looks like it doesn't detect existing input. When I change to input mode in the description field which contains already text, I can just add new text in the beginning and I am not able to modify the existing text.
Sometimes this leads to the following error as well:
terminate called after throwing an instance of 'std::length_error'
I believe having configs for key blind would be created
I at least want to have
ctrl+a, ctrl+e, ctrl+w during insert mode to be support
(ctrl+a allows to go to the start of the line, ctrl+e allows move cursor to end of the line,
ctrl+w is the same as db in vim, delete word backward)
I use those often during terminal/weechat/terminal
And I think those would be useful
Maybe we can set key blinding for each field? (one for main menu, input etc)
I think it could get complex and maybe stick with simple overall blinding for all?
It would be nice to have options to change cursor blink between the insert and normal mode
so that you can easily tell what mode are you in.
for example
= insert mode = normal mode
❯ make install --help
Usage: make [options] [target] ...
Options:
-b, -m Ignored for compatibility.
-B, --always-make Unconditionally make all targets.
-C DIRECTORY, --directory=DIRECTORY
Change to DIRECTORY before doing anything.
-d Print lots of debugging information.
--debug[=FLAGS] Print various types of debugging information.
-e, --environment-overrides
Environment variables override makefiles.
-f FILE, --file=FILE, --makefile=FILE
Read FILE as a makefile.
-h, --help Print this message and exit.
-i, --ignore-errors Ignore errors from commands.
-I DIRECTORY, --include-dir=DIRECTORY
Search DIRECTORY for included makefiles.
-j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no arg.
-k, --keep-going Keep going when some targets can't be made. -l [N], --load-average[=N], --max-load[=N] Don't start multiple jobs unless load is below N.
-L, --check-symlink-times Use the latest mtime between symlinks and target.
-n, --just-print, --dry-run, --recon
Don't actually run any commands; just print them. -o FILE, --old-file=FILE, --assume-old=FILE Consider FILE to be very old and don't remake it.
-p, --print-data-base Print make's internal database. -q, --question Run no commands; exit status says if up to date. -r, --no-builtin-rules Disable the built-in implicit rules. -R, --no-builtin-variables Disable the built-in variable settings. -s, --silent, --quiet Don't echo commands.
-S, --no-keep-going, --stop
Turns off -k.
-t, --touch Touch targets instead of remaking them.
-v, --version Print the version number of make and exit.
-w, --print-directory Print the current directory.
--no-print-directory Turn off -w, even if it was turned on implicitly.
-W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE
Consider FILE to be infinitely new.
--warn-undefined-variables Warn when an undefined variable is referenced.
-N OPTION, --NeXT-option=OPTION
Turn on value of NeXT OPTION.
This program built for i386-apple-darwin11.3.0
Report bugs to <[email protected]>
So it looks like I'm missing the directory options needed to finish this, and I'm not sure replacing with C in my case will work, since it looks like this takes more than just changing directories. Please advise!