Package: shibboleth
A cliTagSpacesclient, especially geared towardsThe Secret Weaponapproach to Getting Things Done.HistoryA few months into 2017 I read Joan Westenberg's  post about howshe uses
Evernoteto keep track of all the things that she needs to do. In the
article she has some pretty golden advice:Before I get into it though, I want to be clear. What I do might not work
for you. There is no golden key to productivity, and this is pretty
specifically designed to match my workflow and my personality.Which is, of course, fantastic advice.While I'm sure Evernote is a fantastic tool with all the bells and whistles
that one could desire, it's not exactlymybells and whistles. I have a
slightly different approach that I prefer. I'm much more into the command line,
mainly because it's the easiest way to eliminate distractions. Yeah, you can
turn off distractions in your browser and on your phone - but you actually have
to turnondistractions on the command line. So I try to spend most of my
time here.About a year ago I also came acrossTagSpaces, which has a philosophy I
love: just stick the information into the filename itself. Then it doesn't
matter what system you're using, the information is going to travel with the
file.After I read Joan's article, I started trying to use the TagSpaces client. It
worked well enough, though it wasn't quite as keyboard-centric as I wanted.
Using Dropbox to sync my files worked great (though they still don't have a
client for the Raspberry Pi, grumble grumble).I toyed around with using the command line,ls *1-now*orfind . -name *3-soon*worked pretty well, but it was still a bit clunky. Out of that need
came ShibbolethGuideShibboleth is pretty simple. At the moment it only supports Linux-y systems
(there's some weirdness on Mac OSX, with readline), but I'm always open topull requests!All you have to do is install shibboleth:python3 -m pip install shibbolethOr even better, usepipx:pipx install shibboleth(Come join me in the glorious future that is Python3.6! Or, if you think it's
awesome and you live in some horrible reality that requires something ancient,
did I mention that I'm totally acceptingpull requests?)Once it's installed, just start it up in whatever directory you want to stick
your stuff. Maybe you do something like this:$ mkdir secret-weapon
$ cd secret-weapon
$ mkdir completed
$ shibboleth
Welcome to Shibboleth, the tool designed to be *your* secret weapon.

Your editor is currently vim. If you don't like that, you
should change or set your EDITOR environment variable.

⇀shibboleth:/home/wayne/secret-weapon
>new
Title: Try out shibbolethThat will launch your editor - whatever yourEDITORenvironment variable is
set to. Orvim, if nothing is set.:qis how you get out of Vim, if
that's not your thing. I added the textTrying out shibboleth, how does it work for me?Save and quit and you should come back to shibboleth:⇀shibboleth:/tmp/fnord/Try-out-shibboleth[20170406~011315 inbox].md
>show
********************************************************************************
Title: Try out shibboleth

Trying out shibboleth, how does it work for me?

********************************************************************************
⇀shibboleth:/tmp/fnord/Try-out-shibboleth[20170406~011315 inbox].md
>It will automatically select the new file. You may notice that it changed the
spaces for-. That's because readline is confusing and hard and doesn't
like autocompleteing spaces. But if you can make it do the right thing, did I
mention I'm acceptingpull requests?Recently (in January 2022) I was reminded of the "inbox" functionality, so I
added that as the default "priority" that will show up in the report.Of course, you can change the priority of your selected file/task withpriority, or the shortcutp.>p 6
⇀shibboleth:/tmp/fnord/Try-out-shibboleth[20170406~011315 6-waiting].md
>You candeselectto drop that, orselecta different file. Or create
anothernewone:>new something completely different
⇀shibboleth:/tmp/fnord/something-completely-different[20170406~013345 inbox].md
>show
********************************************************************************
A man with three legs!

> 'e ran off!

********************************************************************************
⇀shibboleth:/tmp/fnord/something-completely-different[20170406~013345 inbox].md
p 4
⇀shibboleth:/tmp/fnord/something-completely-different[20170406~013345 4-later].md
>You can uselsto list all the files in the directory,cdto change
directory. Or if you just want to see what you're supposed to be doing now:>now
trying-out-shibboleth[20170406~013326 1-now].md
⇀shibboleth:/tmp/fnord/trying-out-shibboleth[20170406~013326 1-now].md
>later
something-completely-different[20170406~013345 4-later].md
⇀shibboleth:/tmp/fnord/trying-out-shibboleth[20170406~013326 1-now].md
>Or if you want a high-level view, usereport:>report
inbox
1-now (1/2)
        Trying-out-shibboleth[20220102~210020 1-now].md
2-next (0/2)
3-soon (0/2)
4-later (1/2)
        something-completely-different[20220102~210043 4-later].md
5-someday (0/2)
6-waiting (0/2)
done (0/2)
None (0/2)You can use theworkcommand to process either a priority or any other label.Once you're done with a thing, you cancompeleteit, or bedonewith
it:>done
⇀shibboleth:/tmp/fnord
>cd completed
⇀shibboleth:/tmp/fnord/completed
>ls
something-completely-different[20170406~013345 done].mdThat's really about all there is to it. The way I use Shibboleth for my
day-to-day:Start up shibboleth.select startupwhich contains a bunch of URLs that I need to open.launchto open up all my startup URLs.work 6to work my waiting list, to see if there's anything I need to move
out of waiting.Go throughsomeday,later,soon, andnextto see if anything needs to
be bumped up.Decide which ofnowI need to work on the most, thenselect it. I mayedit to add some notes or justshowto review what I'm supposed to be
doing, and probablylaunchthe relevant URLs. Then when I finish that I
mark itdoneand move on to the next.As new tasks come in via email, etc. I go ahead and add new ones. I've been
using shibboleth as the interface for my tasks for a while now and it worksgreatfor shifting the priority, creating new tasks, and editing ones that
I've got.If you've got any suggestions about what would make shibboleth (more) awesome,
I'm happy to work with you to get yourpull requestin. Or if I've got
some time or I think it's a killer feature, I'm sure I'll add it to my own
list. Using shibboleth, of course :)PhilosophyI would prefer to keep this as 3rd-party-dependency-free as possible.I'm not
opposed to adding some kind of plugin architecture, but(Plugins were added!)
Ireallywant shibboleth to stay one single file. That way you can just stick
it in a directory and you're good to go.PluginsI've added a plugin architecture! Currently it requires plugins to be found in~/.shibboleth/plugins. Plugins will be attached to Shibboleth's main loop as
if they were methods, using the filename as the name of the command. For
instance, if you wanted to add a really bad pomodoro timer, you could do that
by creating apom.pyin the plugin directory that contained the following:import time


def handle(self, line):
    print('Pomodoro', line)
    time.sleep(60*20)  # sleep for 20 minutes
    print('Pomodoro done!')If you wanted to make it drop straight into the editor you could add:self.edit('')At the end of the function.Automatic Git TrackingWhen commands finish, any untracked/committed changes will be automatically
added and committed. This means that when doingdidordone, or tagging
files will automatically be tracked.Currently git is the only VCS backend that's supported, but it should be pretty
reasonable to extend the behavior to other backends, like mercurial or fossil.TODOsAdd BSD license- Done 2018-10-01Add other tag support- Done 2018-10-01config. We want to be able to config shibboleth, right? Different colors and
what-not.CHANGELOG[0.9.1] - [2023-10-13]Changeddoneandcompletedno longer movedonetasks to a different dir.Fixedpls inboxnow works.report <priority>now will only list the tasks for that priority.workno longer crashes when given a bad set of tags. Also more helpful
output.[0.9.0] - [2022-10-29]AddedAdded launch and view/show functionality to review.Added tag autocomplete to tag/untag functions.FixedIf review changes a selected task, it'll be deselected.[0.8.0] - [2022-01-03]Added"inbox" as a priority.Changed"inbox" as the default priority.FixedRestored1-nowas the default work priority.[0.7.1] - [2022-01-02]FixedFixed bug when your shibboleth directory was a subfolder in a repo that had
modified files in a different directory in the repo.[0.7.0] - [2022-01-02]AddedAutomatic git tracking.clearpriority to... well, clear the priority!Title is now inserted automatically into the file.Changeddidnow inserts timestamps with a header instead of relying on the
blank-space-at-the-end-of-a-line for CommonMark rendering.worknow supports arbitrary tag matching, with autocomplete. Allows for
working priority labels or other labels.FixedMis-providedlogcommand no longer crashes, improved logging.No longer pass vim flags to all editors.[0.6.0] - [2021-06-17]FixedUnhandled exceptions are now caught and written to shibboleth.log instead of
crashing.Addedlaunchcommand, which will launch URLs found in headers in the task
file.[0.5.0] - [2019-10-15]Addedworksubcommand, to allow you to quickly process a particular priority. By
default, it will work1-now, butwork 2will work the "next" tasks.versioncommand, to display the current version of shibboleth.ChangedUpdated how prompt is generated. Shouldn't cause an issue, but something to
be aware of, especially in plugins.Default priority is nownow- this helps with tasks falling through the
cracks.[0.4.1] - [2019-10-14]Changedcmdlooppasses on*argsand**kwargs- useful for running loops from
plugins.[0.4.0] - [2019-07-31]AddedReview command that lets you cycle through your tasks, updating priorities.ChangedDuplicate tags are no longer allowed, though if added outside Shibboleth they
will not be interfered with.[0.3.0]AddedPlugin system. Add.pyfiles to~/.shibboleth/pluginsto extend the
functionality of Shibboleth.Keep a changelog functionality for the changelog.