Stephen's Obsessive Note-Storage Engine.

Overview
# Get Sonse and tell it where your notes are...
$ pip install sonse
$ export SONSE="$HOME/notes|.txt"

# And it'll handle them for you!
$ sonse list
projects
shopping
todo-list

# You can make new notes...
$ sonse create my-new-note

# Or import them from other files!
$ sonse import groceries ~/groceries.txt

# It's all just text files underneath, so no lock-in!
$ ls $HOME/notes
projects.txt
shopping.txt
todo-list.txt

Sonse (Stephen's Obsessive Note-Storage Engine, pronounced son·say) is a command-line note management application. It allows you to create, edit and maintain your notes without sacrificing the simplicity and openness of plain text.

If you've got a bunch of loose text files lying around and you'd like to keep them organised, Sonse is for you. It'll keep them safe, sorted and sensible, forever. (And if you don't like it, you can delete Sonse without harming your data.)

Note: Sonse is designed primarily for Linux and Linux-based operating systems; in particular it uses several Linux defaults and environment variables for its basic functions. Mac OS should work (please file a bug if it doesn't), but Windows is unsupported at this time.

Installation

Sonse requires Python 3.10 and a few dependencies. You can install it one of two ways:

PyPi Package

You can get the official PyPi package with pip:

$ pip install sonse
$ sonse --help

This will install Sonse with a sonse executable you can run directly. Nice and easy.

Source Code

You can also clone this repository or download the latest release and run the source code yourself, if you're interesting in tinkering with the code:

$ git clone https://github.com/rattlerake/sonse.git
$ cd sonse
$ pip install -r requirements.txt
$ python -m sonse --help

You'll need to install the dependencies and run Sonse from the Python module, or create an alias for it.

Setup

Configuration

All Sonse needs is a single environment variable called SONSE. This variable should contain the path to your notes directory and their file extension, separated by a pipe. For example, if your notes are in $HOME/notes and they end in .txt, then use:

# Bash/Zsh
$ export SONSE="$HOME/notes|.txt"

# Csh/Tcsh
$ setenv SONSE "$HOME/notes|.txt"

# Fish (my favourite)
$ set -gx SONSE "$HOME/notes|.txt"

That's it. That's all you need to do.

Directories & Naming

Sonse keeps all your notes in your configured directory, and refers to them by their lower-case file names. For example, if your notes look like this:

$ ls $HOME/notes:
alpha.txt
bravo.txt
charlie-123.txt

Then Sonse will show them like this:

$ sonse list
alpha
bravo
charlie-123

Note names are also disambiguated, allowing you to save time by typing just enough characters to disambiguate:

$ sonse list
alpha
bravo-one
bravo-two

$ sonse read a
This is note alpha.

$ sonse read bravo
Error: ambiguous name, did you mean: 'bravo-one', 'bravo-two'?

Shell Completion

Sonse uses Click for its interface, which has optional support for shell auto-completions. I highly recommend enabling this functionality if you have a shell that supports it. (Sonse works fine without it, but it's nice to have.)

Commands

All commands have detailed help messages, use the -h/--help option to see them. The following is a quick tour of all the available commands and their general usage:

Create a note

Create a new empty note in your directory:

$ sonse create alpha

Use -e/--edit to edit the note after creation:

$ sonse create alpha --edit

Edit a note

Open a note in your default text editor, according to $VISUAL or $EDITOR:

$ sonse edit alpha

Read a note

Print an existing note to standard output:

$ sonse read alpha
This is note alpha!

List all notes

List all notes in alphabetical order:

$ sonse list
alpha
bravo
charlie

Or list all notes starting with a prefix:

$ sonse list a
alpha

Search all notes

List all notes containing a substring:

$ sonse search "candy mountain"
charlie

Use -c/--case-sensitive to search case-sensitively:

$ sonse search "Candy Mountain" --case-sensitive
charlie

Copy a note

Copy an existing note to a new name in your directory:

$ sonse copy alpha bravo

Move a note

Move an existing note to a new name in your directory:

$ sonse move alpha bravo

Delete a note

Delete a note, if it exists:

$ sonse delete alpha
Are you sure you want to delete 'alpha'? [y/N]: y

Use -f/--force to bypass the confirmation prompt:

$ sonse delete alpha --force

Export a note

Copy an existing note to a file outside your notes directory:

$ sonse export alpha some-file.txt

Import a note

Copy a file outside your notes directory to a new or existing note:

$ sonse import alpha some-file.txt

Use -e/--edit to edit the note after importing:

$ sonse import alpha some-file.txt --edit

Contribution

If you find any bugs or have any suggestions, please add them to the issue tracker with as much detail as possible. Thank you!

You might also like...
TileDB-Py is a Python interface to the TileDB Storage Engine.
TileDB-Py is a Python interface to the TileDB Storage Engine.

TileDB-Py TileDB-Py is a Python interface to the TileDB Storage Engine. Quick Links Installation Build Instructions TileDB Documentation Python API re

A command line simple note taking app

Why yet another note taking program? note was designed with a very specific target in mind: me, and my 2354 scraps of paper. It runs from the command

Markup for note taking
Markup for note taking

Subtext: markup for note-taking Subtext is a text-based, block-oriented hypertext format. It is designed with note-taking in mind. It has a simple, pe

A simple note taker CLI program written in python
A simple note taker CLI program written in python

note-taker A simple note taker program written in python This allows you to snip your todo's, notes, and your tasks easily without extra charges Requi

SongFinder Bot helps you to find song name by recognising via voice note or instagram reels shared link.

SongFinder V1.1 SongFinder to detect songs name by just sending voice note or instagram reels links to your telegram bot. FFMPEG must be installed on

Platform Tree for Xiaomi Redmi Note 7/7S (lavender)
Platform Tree for Xiaomi Redmi Note 7/7S (lavender)

The Xiaomi Redmi Note 7 (codenamed "lavender") is a mid-range smartphone from Xiaomi announced in January 2019. Device specifications Device Xiaomi Re

🌟 Python algorithm team note for programming competition or coding test

🌟 Python algorithm team note for programming competition or coding test

Reverse the infix string. Note that while reversing the string you must interchange left and right parentheses

Reverse the infix string. Note that while reversing the string you must interchange left and right parentheses. Obtain the postfix expression of the infix expression Step 1.Reverse the postfix expression to get the prefix expression

A simple, fantasy and fast note taking program.
A simple, fantasy and fast note taking program.

notes A simple, fantasy and fast note taking program Installation This program supposed to run in linux and may have some bugs on windows or any other

JoplinPdf2Images - Converts a PDF to images in Joplin and adds it to the specified note as a printout

joplinPdf2Images Converts a PDF to images in Joplin and adds it to the specified

Python client for ETAPI of Trilium Note.

Python client for ETAPI of Trilium Note.

An automated scanning, enumeration, and note taking tool for pentesters
An automated scanning, enumeration, and note taking tool for pentesters

EV1L J3ST3R An automated scanning, enumeration, and note taking tool Created by S1n1st3r Meant to help easily go through Hack The Box machine and TryH

The algorithm performs a simple user registration (Name, CPF, E-mail and Telephone) in an Amazon RDS database and also performs the storage, training and facial recognition of the user's face to identify the users already registered in the system in a next time the user is seen.
The command-line tool that gives easy access to all of the capabilities of B2 Cloud Storage

B2 Command Line Tool The command-line tool that gives easy access to all of the capabilities of B2 Cloud Storage. This program provides command-line a

Synchronize local directories with Tahoe-LAFS storage grids
Synchronize local directories with Tahoe-LAFS storage grids

Gridsync Gridsync aims to provide a cross-platform, graphical user interface for Tahoe-LAFS, the Least Authority File Store. It is intended to simplif

a full featured file system for online data storage

S3QL S3QL is a file system that stores all its data online using storage services like Google Storage, Amazon S3, or OpenStack. S3QL effectively provi

Project Aquarium is a SUSE-sponsored open source project aiming at becoming an easy to use, rock solid storage appliance based on Ceph.

Project Aquarium Project Aquarium is a SUSE-sponsored open source project aiming at becoming an easy to use, rock solid storage appliance based on Cep

Nerd-Storage is a simple web server for sharing files on the local network.
Nerd-Storage is a simple web server for sharing files on the local network.

Nerd-Storage is a simple web server for sharing files on the local network. It supports the download of files and directories, the upload of multiple files at once, making a directory, updates and deletions.

This is a junk file creator tool which creates junk files in Internal Storage

This is a junk file creator tool which creates junk files in Internal Storage

Releases(1.0.2)
  • 1.0.2(May 8, 2022)

  • 1.0.1(May 7, 2022)

    Version 1.0.1 is a patch version of Sonse. It fixes one bug and cleans up some non-user-facing code.

    Fixed

    • Fixed disambiguation not returning exact match on multiples.
    Source code(tar.gz)
    Source code(zip)
  • 1.0.0(May 7, 2022)

    Version 1.0.0 is the first major version of Sonse. The app has been rewritten as a flat-file system (instead of using zipfile archives) and changes have been made to certain commands.

    Changed

    • Rewrote app as flat-file system.

    Removed

    • Removed --reverse and --sort options from list command.
    • Removed automatic note creation from import command.
    Source code(tar.gz)
    Source code(zip)
  • 0.3.1(Apr 18, 2022)

    Version 0.3.1 is a patch version of Sonse. It adds one new command and updates a lot of under-the-hood code. See the readme for installation instructions.

    Added

    • New command: copy.
    Source code(tar.gz)
    Source code(zip)
  • 0.3.0(Apr 17, 2022)

    Version 0.3.0 is the next minor release of Sonse. It adds note name disambiguation and cleans up a lot of command code.

    Added

    • Note name disambiguation in all commands.

    Changed

    • list now uses prefixes instead of glob patterns.

    Removed

    • Unnecessary command repl.
    Source code(tar.gz)
    Source code(zip)
  • 0.2.1(Apr 15, 2022)

    Version 0.2.1 is a patch version of Sonse. It adds a command option and Github Action workflows.

    Changed

    • import command now has --edit option.
    Source code(tar.gz)
    Source code(zip)
  • 0.2.0(Apr 15, 2022)

    Version 0.2.0 is a minor release of Sonse. It adds two new commands and some new command options.

    Added

    • New commands: delete, move.

    Changed

    • create command now has --edit option.
    • list command now has --reverse and --sort options.
    Source code(tar.gz)
    Source code(zip)
  • 0.1.1(Apr 15, 2022)

  • 0.1.0(Apr 15, 2022)

    Version 0.1.0 is the first actual release of Sonse. It contains the initial codebase and basic commands.

    Added

    • Basic codebase and tests.
    • New commands: create, edit, export, import, list, read.
    Source code(tar.gz)
    Source code(zip)
  • 0.0.0(Apr 15, 2022)

Owner
Stephen Malone
I like ATLA, BLTs, and CRUD.
Stephen Malone
Command-line program for organizing and managing ebook collections

Command-line program for organizing and managing ebook collections. It is a Python port from the original shell scripts ebook-tools

Raul 14 Nov 12, 2022
Sink is a CLI tool that allows users to synchronize their local folders to their Google Drives. It is similar to the Git CLI and allows fast and reliable syncs with the drive.

Sink is a CLI synchronisation tool that enables a user to synchronise local system files and folders with their Google Drives. It follows a git C

Yash Thakre 16 May 29, 2022
Simple tool, to update linux kernel on ubuntu

Kerbswap Simple tool, to update linux kernel on ubuntu Information At the moment, this tool only supports "Ubuntu" distributions, but will be expanded

dword 1 Oct 31, 2021
Because sometimes you need to do it live

doitlive doitlive is a tool for live presentations in the terminal. It reads a file of shell commands and replays the commands in a fake terminal sess

Steven Loria 3.2k Jan 09, 2023
Squirrel - A cli program to track writing progress

Squirrel Very much a WIP project squirrel is a command line program that tracks you writing progress and gives you useful information and cute and pic

3 Mar 23, 2022
A user-friendly python CLI for Fmask 4.3 software (GERS Lab, UCONN).

pyFmask What is pyFmask pyFmask is a user-friendly python CLI for Fmask 4.3 software (GERS Lab, UCONN; https://github.com/GERSL/Fmask). Fmask (Zhu et

1 Jan 05, 2022
dsub is a command-line tool that makes it easy to submit and run batch scripts in the cloud.

Open-source command-line tool to run batch computing tasks and workflows on backend services such as Google Cloud.

Data Biosphere 233 Jan 01, 2023
Yet another bash/zsh prompt script

Here we have yet another script for Git-aware customization of the command prompt in Bash and zsh. Unlike all the other scripts, I wrote this one, so

John T. Wodder II 5 Oct 13, 2021
A handy command-line utility for generating and sending iCalendar events

A handy command-line utility for generating and sending iCalendar events This simple command-line utility is designed to generate an iCalendar event,

Baochun Li 17 Nov 21, 2022
Command line tool for google dorks

CLI for google dorks This is the command line tool made with pytohn which allows the users to perform Google dorks easily Installation Install google

subrahmanya s hegade 3 Feb 08, 2022
Play videos in the terminal.

Termvideo Play videos in the terminal (stdout). python main.py /path/to/video.mp4 Terminal size: -x output_width, -y output_height. Default autodetect

Patrick 11 Jun 13, 2022
Apple Silicon 'top' CLI

asitop pip install asitop What A nvtop/htop style/inspired command line tool for Apple Silicon (aka M1) Macs. Note that it requires sudo to run due to

Timothy Liu 1.2k Dec 31, 2022
🐍 Python CLI tool to get public information from a GitHub account

🐍 Gitter 🐍 Python CLI tool to get public information from a GitHub account 🤔 What's this? Gitter is a open-source project created to easily uses th

opp? 3 Oct 14, 2022
lfb (light file browser) is a terminal file browser

lfb (light file browser) is a terminal file browser. The whole program is a mess as of now. In the feature I will remove the need for external dependencies, tidy up the code, make an actual readme, a

2 Apr 09, 2022
Command line parser for common log format (Nginx default).

Command line parser for common log format (Nginx default).

Lucian Marin 138 Dec 19, 2022
Command-line tool to use LNURL with your LND instance

Sprint planner Sprint planner is a Python script for planning your Jira tasks based on your calendar availability. Installation Use the package manage

Djuri Baars 6 Jan 14, 2022
CLI para o projeto Compilado (Newsletter e Podcast do Código Fonte TV)

Compilado CLI Automatização de tarefas através de linha de comando para a geração de assets para episódios do Compilado, a newsletter e podcast do can

Gabriel Froes 18 Nov 21, 2022
Wappalyzer CLI tool to find Web Technologies

Wappalyzer CLI tool to find Web Technologies

GOKUL A.P 17 Dec 15, 2022
Bryce Geiser 4 Aug 04, 2022
Convert shellcode into :sparkles: different :sparkles: formats!

Bluffy Convert shellcode into ✨ different ✨ formats! Bluffy is a utility which was used in experiments to bypass Anti-Virus products (statically) by f

AD995 305 Dec 17, 2022