-- org-confirm-babel-evaluate: nil; --

February 20, 2021 ยท View on GitHub

Orger converts your data into a hierarchical Org-mode representation to allow for quick access and search.

I write in detail about usecases and motivation for it [[https://beepb00p.xyz/orger.html][here]], this readme is mostly the setup manual!

  • Installing
  • Usage and examples I usually run Orger modules overnight via cron.
  • types of modules
  • Mirror

    #+begin_src python :dir src :exports results :results drawer output import orger print(orger.Mirror.doc) #+end_src

    #+RESULTS: :results:

    *Mirror* (old name =StaticView=): mirrors *all data* from a source, and generated from scratch every time, hence *read only*.
    

    :end:

    You can run such module with

    : ./orger_module.py --to /path/to/output.org

  • Queue

    #+BEGIN_SRC python :dir src :exports results :results drawer output import orger print(orger.Queue.doc) #+END_SRC

    #+RESULTS: :results:

    *Queue* (old name =InteractiveView=): works as a queue, *only previously unseen items* from the data source are added to the output org-mode file.
    
    To keep track of previously seen iteems, it's using a separate JSON =state= file.
    
    A typical usecase is a todo list, or a content processing queue.
    You can use such a module as you use any other org-mode file: schedule/refile/comment/set priorities, etc.
    

    :end:

    Typically you'd want to use these as a source of tasks for your todo list. See [[./modules/ip2org.py][ip2org]] as an example.

    You can run such a module as:

    : ./orger_module.py --to /path/to/output.org

    This will keep the state file in your user config dir (e.g. =~/.config/orger/=).

    Alternatively, you can pass the state file explicitly:

    : ./orger_module.py --to /path/to/output.org --state /path/to/state.json

  • FAQ
  • Why are the files output by some modules read only?

    =Mirror= type modules output read only files, so you don't modify them by accident, they are overwritten every time.

    If you want to temporary lift this restriction (e.g. to experiment with the format), you can use =chmod +w=, or =M-x toggle-read-only= in Emacs.

  • How is it different from [[https://github.com/novoid/Memacs][Memacs]]?

    The main reason Orger exists is because I discovered Memacs after I wrote Orger! One day we might merge them, or at least [[https://github.com/karlicoss/orger/issues/5][reuse org-mode formatting routines]].

    That said there are some differences at the moment:

    • Memacs is more of a lifelogging utility, generating a linear output with the intent to be used with your org agenda
    • Orger's =Mirror= modules are meant to be more of a full local reflection of a data source, preserving the hierarchy as much as possible
    • Orger's =Queue= module: I believe they don't have Memacs analogue (but please correct me if I'm wrong)
    • Orger modules are slim and relying on [[https://github.com/karlicoss/HPI][HPI]] to encapsulate data access. But you can also use HPI with Memacs, please ping me if you set up such an integration!
  • I want active timestamps for org-agenda integration

    Pass the =--timestamp= argument to the module, for example:

    : modules/polar.py --timestamps active

  • Similar projects