Nexus - focus on what matters
Introduction
lol, ok brain
The human brain is the most creative and powerful computer yet known to us, but it comes with some hilarious hard limits.
Most of us can only keep 7 distinct pieces of information in working memory at a time, and we don't get to choose what gets dropped.
We're very easy to distract, it's hardwired into us. Our brains even generate their own sources of distraction.
Our concentration and motivation is finite and is easily spent - we end up running on fumes.
Drag and flow
Creative work happens in bursts of energy, but can be all too easily extinguished by anything that interrupts our flow or drains our energy. Any inconvenient detour that we're forced to take puts a drag on our focus.
For example, you're in the zone and find that you need something, but it takes you a couple minutes of searching and clicking to find your way there. Maybe you're lucky and it only cost you a little cognative energy and context, or maybe you lost it altogether and you're now reaching to get it back.
Easy reach
In the physical world, we solve this problem by designing workspaces where everything you need is within easy reach and where you expect it to be.
One can imagine a carpenter in his workshop, bent over a work-in-progress when he needs a particular tool. Consider the difference between:
- The tools are well organised and within easy reach. He can grab the tool he needs with his free hand, because it is hanging nearby where he expects it to be. Flow, ease, no drag.
- He has to empty both hands, stand up and spend a couple minutes searching for the tool before returning to the work-in-progress to continue.
Having our tools and resources within easy reach helps us to avoid drag.
How Nexus helps
Nexus puts what you need within easy reach.
Build a library of useful links and tools, then access them at your fingertips where-ever you are.
Download
Click here to download version 0.4.0
.
Nexus runs on MacOS. You will need to go to System Preferences -> Security & Privacy
to enable it to open.
Useful Collections
Here're some useful collections to get you started:
Using Nexus
via Menu
When Nexus is configured and running, you will see a new icon in the status bar menu on your Mac. It will look like this:
If you tap on this a menu will be revealed, which allows you to explore your collection hierarchically.
via Search
Alternatively, you can hit the Alt + Spacebar
to reveal the search overlay:
As you type, an intelligent search algorithm will be used to provide appropriate results from your collections:
If only one item is listed, you can simply hit Return
to open it. If more than one item is selected, use the arrow keys to select the result you want and Return
to open it.
Opening URLs Directly
As well as searching and opening collection items, you can also type or paste a URL and open it directly from the same place.
Pomodoro Timer
Try using the search with the prefix pomo
including the space, and you will see options to start, pause and stop a Pomodoro timer. You can see it's status in your Mac's status bar, and it will play a system sound at the end of a focus or rest period.
Reminders
You can create a new reminder by searching with the prefix remind
and then typing the title of the reminder you'd like to create. You will be prompted for permissions to the reminders lists the first time you do it.
The created reminders will be added to the default reminders list for new items. This can be set from the Reminders app on any device. I recommend you have iCloud Sync turned on for Reminders and that you have an Inbox
default list.
Getting started
On launch, Nexus will expect to find a main configuration file at pages/03.nexus/.config/nexus/main.json
.
Configuration: The main file
To configure Nexus, you will need to provide a configuration file at pages/03.nexus/.config/nexus/main.json
. This file will link to collections.
Here's an example with a single collection:
{
"collections": [
{
"source": "collection.json"
}
]
}
If no path is provided, as in the above example, then it is assumed that the file will be found in the same directory as the main file. In this case, at pages/03.nexus/.config/nexus/collection.json
.
It is also possible to provide absolute paths to collection files. The home directory can be referenced with ~
as one would expect.
You can reference as many collections as you like.
You can also reference remote collections by providing a URL. This can be a great way to share collections with your team and maintain them in a central location.
Configuration: Collections
Collection files contain the useful links, scripts and so on, that you need at your fingertips.
The collection file has the following top-level structure:
{
"title": "My Collection",
"items": [
...
]
}
Here's an example with a single link item:
{
"title": "TMF Personal",
"items": [
{
"title": "Google",
"actionType": "openLink",
"link": {
"url": "https://www.google.com"
}
}
]
}
Link Items
Link items are exactly what they say on the tin. They open links on the system, which means they can be either:
- Web addresses, to open in the browser.
- Deep links, to open an application on the system.
You can optionally specify ordered parameters to be substituted into the url
using {index}
syntax.
Example: Web Address
Without parameters:
{
"title": "Google",
"actionType": "openLink",
"link": {
"url": "https://www.google.com"
}
}
With parameters:
{
"title": "Google",
"actionType": "openLink",
"link": {
"url": "https://www.google.com/search?q={0}",
"parameters": [
{
"name": "Search query"
}
]
}
}
Example: Deep Link
Without parameters:
{
"title": "Zoom",
"actionType": "openLink",
"link": {
"url": "zoommtg://zoom.us/start?confno=123456&pwd=abcdef"
}
}
With parameters:
{
"title": "Zoom",
"actionType": "openLink",
"link": {
"url": "zoommtg://zoom.us/start?confno={0}&pwd={1}",
"parameters": [
{
"name": "Meeting number"
},
{
"name": "Password (if needed)"
}
]
}
}
Child Menu Items
You can provide an item that contains items, like so:
{
"title": "Child Menu Title :-)",
"actionType": "submenu",
"items": [
...
]
}
You can go as deep as you like.
Scripts
Items can also run scripts. There are two kinds of script item:
- Inline script
- Script from file
Scripts can also have ordered parameters, as described above for links.
Example: Inline Script
{
"title": "Script Example",
"actionType": "runScript",
"script": {
"payload": "#!/bin/zsh\nosascript -e \"display notification \\\"$@\\\"\"",
"parameters": [
{
"name": "Message to display"
}
]
}
}
Example: Script from file
In the example below, a script file named notify.sh
must exist in the same location as the collection.
Without parameters:
{
"title": "My Script",
"actionType": "runScript",
"script": {
"filename": "my_script.sh"
}
},
With parameters:
{
"title": "Notify",
"actionType": "runScript",
"script": {
"filename": "notify.sh",
"parameters": [
{
"name": "Message"
}
]
}
},