{"id":13500268,"url":"https://github.com/void-rs/void","last_synced_at":"2025-05-16T12:10:29.992Z","repository":{"id":41454783,"uuid":"71467637","full_name":"void-rs/void","owner":"void-rs","description":"terminal-based personal organizer","archived":false,"fork":false,"pushed_at":"2023-09-13T15:59:36.000Z","size":2313,"stargazers_count":1108,"open_issues_count":27,"forks_count":37,"subscribers_count":29,"default_branch":"main","last_synced_at":"2025-05-11T14:19:32.123Z","etag":null,"topics":["efficiency","mind-mapping","mindmaps","organizer","personal-organizer","priorities","rust","sparkline","task","task-framework","task-list","task-tracker","terminal","terminal-based","text-editor","time-series"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/void-rs.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":"code-of-conduct.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2016-10-20T13:46:36.000Z","updated_at":"2025-05-08T15:54:11.000Z","dependencies_parsed_at":"2024-01-14T07:06:02.787Z","dependency_job_id":"a1be9716-c9eb-4882-92c7-58f15d604bf3","html_url":"https://github.com/void-rs/void","commit_stats":null,"previous_names":["spacejam/climate","spacejam/void"],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/void-rs%2Fvoid","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/void-rs%2Fvoid/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/void-rs%2Fvoid/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/void-rs%2Fvoid/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/void-rs","download_url":"https://codeload.github.com/void-rs/void/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254527100,"owners_count":22085919,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["efficiency","mind-mapping","mindmaps","organizer","personal-organizer","priorities","rust","sparkline","task","task-framework","task-list","task-tracker","terminal","terminal-based","text-editor","time-series"],"created_at":"2024-07-31T22:00:54.704Z","updated_at":"2025-05-16T12:10:29.936Z","avatar_url":"https://github.com/void-rs.png","language":"Rust","readme":"# void [![Build Status](https://img.shields.io/travis/void-rs/void.svg?style=flat-square)](https://travis-ci.org/void-rs/void) ![State](https://img.shields.io/badge/state-alpha-orange.svg?style=flat-square)\n\n[Tutorial](TUTORIAL.md)\n\n[Example Workflow](#what-i-do-dont-do-what-i-do-discover-what-works-for-you)\n\nWARNING: 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](default.keys). 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.\n\nFeedback encouraged! If you have a hard time with something, let me know about it, and I'll work to smooth out the experience!\n\n![](/demo.gif)\n\n## problems\n\nThis is an attempt to address several common situations:\n\n1. frequently fall out of creative flow\n1. day-to-day work lacks coherence\n1. failure to integrate learnings into a cohesive perspective\n1. execution of tasks lacks focus and motivation\n1. unclear how my efforts are impacting goals\n\n## perspectives\n\n* things we measure tend to improve\n* we should regularly reevaluate priorities\n* we should minimize decisions to prevent fatigue\n* individual sensemaking is well served by reflection, journaling, outlining, mind-mapping, etc...\n* don't impose specific workflows, but support many possibilities\n\n## implementation\n\n* everything is a tree\n* you can collapse subtrees\n* you can drill-down the screen focus arbitrarily\n* trees of tasks can be marked with `#task`, all children of marked nodes are implicitly subtasks\n* tasks can be prioritized with `#prio=\u003cn\u003e`, all children implicitly inherit the lowest ancestor's priority\n* 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.\n* 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.\n* overall completed subtasks are plotted on a sparkline at the top of the screen for the past week.\n* you can draw arrows between nodes for mind-mapping functionality\n* 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.\n\n## what I do (don't do what I do, discover what works for you)\n* create a #task subtree\n* create different story subtrees for life goals, projects, etc... and tag them, #climbing #reading #client_143 etc...\n* set up graphs for feedback on different goals/projects. `#tagged=climbing #since=30d #plot=done`\n* start the day by fiddling with `#prio=\u003cn\u003e` tags on the stories\n* hit the auto-task keybind (by default `C-v`) to pick an incomplete task child from one of the stories\n* work on it for 25 minutes or until completion, optionally leaving a few minutes for a retrospective/reprioritization at the end\n* distract myself as much as possible, let brain GC whatever I've been thinking about a little bit\n* if I've completed a task, mark it done (by default, `C-a`)\n* completed work is surfaced in the sparkline graphs I've set up for its tags\n* every week or so, tweak the system\n\n#### install\n\n`cargo install voidmap`\n\nif you don't have cargo, an easy way to get and manage\nit is [via rustup](https://www.rustup.rs/). Ensure that `~/.cargo/bin`\nis in your `$PATH` afterward, so that you can use the `rustup` and `cargo`\ncommands.\n\nIf you get errors along the lines of ``error: the `?' operator is not stable`` then\nyou need to update your rust compiler. If you installed rust with rustup, this can\nbe accomplished with `rustup update`.  Requires a recent stable rust compiler,\n`1.14.0` or higher is recommended. This can be checked with `rustc --version`.\nIf you have installed rust with rustup, but you have an old version, there may be\nan older version previously installed on your system. Verify that `which cargo`\noutputs a path that belongs to your `.cargo/bin` directory.\n\n#### invocation\n\n`void`\n\nthis attempts to use `$HOME/.void.db` as a storage file.\nif you'd like to specify a different storage file:\n\n`void [/path/to/savefile]`\n\n#### keys\n\nfeature | control | feature | control\n--- | --- | --- | ---\nnew node | C-n | new node (child of selected) | Tab\nnew node (freeform) | click blank space | new node (sibling of selected) | Enter\ndelete selected node and its children | Delete | move subtree | drag parent to new location\nundo delete | C-z | auto arrange nodes in view | C-p\nmark selected node complete | C-a | drill-down into selected node | C-w\npop up selection | C-q | hide children of selected | C-t\nopen text editor for `txt:...` node | C-k | prefix-jump with no selection | type a letter\nprefix-jump with other selected | C-f | hide completed children of node | C-h\nselect arrow start/destination | C-r | erase arrow | select start, C-r, then destination, C-r\nshow debug log | C-l | reparent node | drag node to new parent\nscroll up | PgUp | scroll down | PgDn\nselect up | Up | select down | Down\nselect subtree to left | Left | select subtree to right | Right\nde-select node | Esc | save | C-x\nexit | Esc with nothing selected | exit | C-c\njump to weighted next task | C-v | cut / paste node | C-y\nmove selected up in child list | C-g | move selected down in child list | C-d\nsearch for node at or below current view | C-u | Select parent | A-S-p (alt shift)\nSelect next sibling | A-n | select previous sibling | A-p\n\ncan be customized by setting the `KEYFILE` env var to the path of a [key configuration file](default.keys)\n\n#### known bugs\n\ndoesn't properly handle very long text. if you want to embed\nan essay, create a node that begins with `txt: ` and hit `C-k`\nto open its contents in an external text editor, specifiable\nby setting the `EDITOR` env var.\n\n#### optional configuration\n\nsetting the `LOGFILE` environment variable will allow you to\nlog debugging info to a file.\n\nsetting the `EDITOR` environment variable will allow you to\nspecify which text editor is opened when hitting `C-k` on a\nnode whose name begins with `txt: `.  defaults to vim.\n\nsetting the `KEYFILE` environment variable to the path of a\n[keyfile](default.keys) allows you to customize the controls\n\nsetting the `LOCATION_QUERY` environment variable to anything\nwill enable an http request that is sent out at startup to\nget approximate latitude and longitude coordinates associated\nwith your internet-facing IP. this is added to any nodes created\nduring a session, and eventually will allow you to trace the\nrough path you've taken over time. aimed mostly at users who\ntravel a lot, may eventually have a more interesting implementation.\n\n#### notes\n\nThis came about in the midst of an (ongoing) obsessive inquiry into a\ncluster of topics roughly related to \"effectiveness\" while stumbling\nthrough various mountain ranges and cities in central europe and the\namerican northeast.\n\n* conversations with [@matthiasn](https://github.com/matthiasn) and being introduced\nto his wonderful [iWasWhere](https://github.com/matthiasn/iWasWhere) system\n* [writings of eliezer s. yudkowsky](https://wiki.lesswrong.com/wiki/Rationality:_From_AI_to_Zombies),\n[how to solve it](https://en.wikipedia.org/wiki/How_to_Solve_It),\n[society of mind](http://www.acad.bg/ebook/ml/Society%20of%20Mind.pdf)\n* [various subtopics of operations research](https://en.wikipedia.org/wiki/Operations_research#Problems_addressed)\n* occult assumption confrontation: [undoing yourself with energized meditation](http://www.pauladaunt.com/books/Christopher%20S%20Hyatt_Undoing%20Yourself%20With%20Energized%20Meditation%20And%20Other%20Devices.pdf),\n[prometheus rising](https://selfdefinition.org/science/Robert-Anton-Wilson-Prometheus-Rising.pdf)\n* military C2 theory, recognition/metacognition, OODA, etc... [A Review of Time Critical Decision Making Models and\nHuman Cognitive Processes](https://pdfs.semanticscholar.org/2eb9/e12955dfafd4ab5d9337b416e31f5afca834.pdf)\n* personal productivity literature: [pomodoro](http://baomee.info/pdf/technique/1.pdf), [GTD](https://en.wikipedia.org/wiki/Getting_Things_Done),\n[eat that frog](https://web.archive.org/web/20170713032412/http://www.actnow.ie:80/files/BookSummaryEatThatFrog.pdf), [flow](https://web.archive.org/web/20080211220216/plexusinstitute.org/edgeware/archive/think/main_filing15.htm)\n\n\u003e The primary thing when you take a sword in your\nhands is your intention to cut the enemy, whatever\nthe means. Whenever you parry, hit, spring, strike\nor touch the enemy’s cutting sword, you must cut\nthe enemy in the same movement. It is essential to\nattain this. If you think only of hitting, springing,\nstriking or touching the enemy, you will not be able\nactually to cut him. More than anything, you must\nbe thinking of carrying your movement through to\ncutting him... When you appreciate the power of\nnature, knowing the rhythm of any situation, you\nwill be able to hit the enemy naturally and strike\nnaturally. All this is the Way of the Void. - Miyamoto Musashi\n\n\n","funding_links":[],"categories":["Rust","terminal"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvoid-rs%2Fvoid","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvoid-rs%2Fvoid","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvoid-rs%2Fvoid/lists"}