All Projects → void-rs → Void

void-rs / Void

terminal-based personal organizer

Programming Languages

rust
11053 projects

Projects that are alternatives of or similar to Void

Dstask
Single binary terminal-based TODO manager with git-based sync + markdown notes per task
Stars: ✭ 431 (-48.13%)
Mutual labels:  terminal-based, terminal, task
Mle
Flexible terminal-based text editor (C)
Stars: ✭ 378 (-54.51%)
Mutual labels:  terminal, text-editor
Spotui
Spotify in the terminal 💻🎶
Stars: ✭ 302 (-63.66%)
Mutual labels:  terminal-based, terminal
Py cui
A python library for intuitively creating CUI/TUI interfaces with widgets, inspired by gocui.
Stars: ✭ 380 (-54.27%)
Mutual labels:  terminal-based, terminal
Chronix.server
The Chronix Server implementation that is based on Apache Solr.
Stars: ✭ 258 (-68.95%)
Mutual labels:  efficiency, time-series
Micro
A modern and intuitive terminal-based text editor
Stars: ✭ 18,526 (+2129.36%)
Mutual labels:  terminal, text-editor
Tsukae
🧑‍💻📊 Show off your most used shell commands
Stars: ✭ 345 (-58.48%)
Mutual labels:  terminal-based, terminal
Kiro Editor
A terminal UTF-8 text editor written in Rust 📝🦀
Stars: ✭ 457 (-45.01%)
Mutual labels:  terminal, text-editor
Chafa
📺🗿 Terminal graphics for the 21st century.
Stars: ✭ 774 (-6.86%)
Mutual labels:  terminal-based, terminal
Xi Term
A terminal frontend for Xi
Stars: ✭ 446 (-46.33%)
Mutual labels:  terminal, text-editor
ash
A modern terminal text editor
Stars: ✭ 37 (-95.55%)
Mutual labels:  text-editor, terminal-based
Httpu
The terminal-first http client
Stars: ✭ 619 (-25.51%)
Mutual labels:  terminal-based, terminal
jot
Command-line note-taking for minimalists
Stars: ✭ 24 (-97.11%)
Mutual labels:  text-editor, terminal-based
Kod
terminal text editor written in Go, using xi-editor as backend
Stars: ✭ 292 (-64.86%)
Mutual labels:  terminal-based, text-editor
editor
A text editor written in Nim
Stars: ✭ 24 (-97.11%)
Mutual labels:  text-editor, terminal-based
Moe
A command line based editor inspired by vi/vim. Written in Nim.
Stars: ✭ 252 (-69.68%)
Mutual labels:  terminal-based, text-editor
Mitype
Typing speed test in terminal
Stars: ✭ 241 (-71%)
Mutual labels:  terminal-based, terminal
Dashing
Terminal dashboards for Python
Stars: ✭ 241 (-71%)
Mutual labels:  terminal-based, terminal
Ftxui
💻 C++ Functional Terminal User Interface. ❤️
Stars: ✭ 433 (-47.89%)
Mutual labels:  terminal-based, terminal
Kibi
A text editor in ≤1024 lines of code, written in Rust
Stars: ✭ 522 (-37.18%)
Mutual labels:  terminal, text-editor

void Build Status State

Tutorial

Example Workflow

WARNING: this is alpha, and the default keybinds are still weird because I use colemak on top of tmux. You may want to change them, by setting the KEYFILE env var to the path to a key remap file. In the future, I may add optional modal editing to bring it more in-line with vim. Right now I'm not sure it's worth the extra keystrokes.

Feedback encouraged! If you have a hard time with something, let me know about it, and I'll work to smooth out the experience!

problems

This is an attempt to address several cognitive defects.

  1. frequently fall out of creative flow
  2. day-to-day work lacks coherence
  3. failure to integrate learnings into a cohesive perspective
  4. execution of tasks lacks focus and motivation
  5. unclear how my efforts are impacting goals

perspectives

  • things we measure tend to improve
  • we should regularly reevaluate priorities
  • we should minimize decisions to prevent fatigue
  • individual sensemaking is well served by reflection, journaling, outlining, mind-mapping, etc...
  • don't impose specific workflows, but support many possibilities

implementation

  • everything is a tree
  • you can collapse subtrees
  • you can drill-down the screen focus arbitrarily
  • trees of tasks can be marked with #task, all children of marked nodes are implicitly subtasks
  • tasks can be prioritized with #prio=<n>, all children implicitly inherit the lowest ancestor's priority
  • a task can be chosen automatically, with priorities weighting a random selection. you should delete it or do it, don't get into the habit of drawing again until you see something you like. you chose the priorities, and you should keep them up-to-date.
  • you can create your own sparklines by using #plot=done or #plot=new, in combination with #n=10 for sparkline size, #since=7d / #until=1d for specifying time window.
  • overall completed subtasks are plotted on a sparkline at the top of the screen for the past week.
  • you can draw arrows between nodes for mind-mapping functionality
  • can shell out and execute the content of a node with C-k. if the node starts with txt: this will be opened in vim or an editor specified in the EDITOR env var.

what I do (don't do what I do, discover what works for you)

  • create a #task subtree
  • create different story subtrees for life goals, projects, etc... and tag them, #climbing #reading #client_143 etc...
  • set up graphs for feedback on different goals/projects. #tagged=climbing #since=30d #plot=done
  • start the day by fiddling with #prio=<n> tags on the stories
  • hit the auto-task keybind (by default C-v) to pick an incomplete task child from one of the stories
  • work on it for 25 minutes or until completion, optionally leaving a few minutes for a retrospective/reprioritization at the end
  • distract myself as much as possible, let brain GC whatever I've been thinking about a little bit
  • if I've completed a task, mark it done (by default, C-a)
  • completed work is surfaced in the sparkline graphs I've set up for its tags
  • every week or so, tweak the system

install

cargo install voidmap

if you don't have cargo, an easy way to get and manage it is via rustup. Ensure that ~/.cargo/bin is in your $PATH afterward, so that you can use the rustup and cargo commands.

If you get errors along the lines of error: the `?' operator is not stable then you need to update your rust compiler. If you installed rust with rustup, this can be accomplished with rustup update. Requires a recent stable rust compiler, 1.14.0 or higher is recommended. This can be checked with rustc --version. If you have installed rust with rustup, but you have an old version, there may be an older version previously installed on your system. Verify that which cargo outputs a path that belongs to your .cargo/bin directory.

invocation

void

this attempts to use $HOME/.void.db as a storage file. if you'd like to specify a different storage file:

void [/path/to/savefile]

keys

feature control feature control
new node C-n new node (child of selected) Tab
new node (freeform) click blank space new node (sibling of selected) Enter
delete selected node and its children Delete move subtree drag parent to new location
undo delete C-z auto arrange nodes in view C-p
mark selected node complete C-a drill-down into selected node C-w
pop up selection C-q hide children of selected C-t
open text editor for txt:... node C-k prefix-jump with no selection type a letter
prefix-jump with other selected C-f hide completed children of node C-h
select arrow start/destination C-r erase arrow select start, C-r, then destination, C-r
show debug log C-l reparent node drag node to new parent
scroll up PgUp scroll down PgDn
select up Up select down Down
select subtree to left Left select subtree to right Right
de-select node Esc save C-x
exit Esc with nothing selected exit C-c
jump to weighted next task C-v cut / paste node C-y
move selected up in child list C-g move selected down in child list C-d
search for node at or below current view C-u Select parent A-S-p (alt shift)
Select next sibling A-n select previous sibling A-p

can be customized by setting the KEYFILE env var to the path of a key configuration file

known bugs

doesn't properly handle very long text. if you want to embed an essay, create a node that begins with txt: and hit C-k to open its contents in an external text editor, specifiable by setting the EDITOR env var.

optional configuration

setting the LOGFILE environment variable will allow you to log debugging info to a file.

setting the EDITOR environment variable will allow you to specify which text editor is opened when hitting C-k on a node whose name begins with txt:. defaults to vim.

setting the KEYFILE environment variable to the path of a keyfile allows you to customize the controls

setting the LOCATION_QUERY environment variable to anything will enable an http request that is sent out at startup to get approximate latitude and longitude coordinates associated with your internet-facing IP. this is added to any nodes created during a session, and eventually will allow you to trace the rough path you've taken over time. aimed mostly at users who travel a lot, may eventually have a more interesting implementation.

notes

This came about in the midst of an (ongoing) obsessive inquiry into a cluster of topics roughly related to "effectiveness" while stumbling through various mountain ranges and cities in central europe and the american northeast.

The primary thing when you take a sword in your hands is your intention to cut the enemy, whatever the means. Whenever you parry, hit, spring, strike or touch the enemy’s cutting sword, you must cut the enemy in the same movement. It is essential to attain this. If you think only of hitting, springing, striking or touching the enemy, you will not be able actually to cut him. More than anything, you must be thinking of carrying your movement through to cutting him... When you appreciate the power of nature, knowing the rhythm of any situation, you will be able to hit the enemy naturally and strike naturally. All this is the Way of the Void. - Miyamoto Musashi

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].