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
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

marcusz 4 Nov 2, 2021
A simple CLI application helps you to find giant files that are eating up your system storage

Large file finder Sometimes it's very hard to find if some giant files are eating up your system storage. We might need to hunt those down. This simpl

Rahul Baruri 5 Nov 18, 2022
A 3D engine powered by ASCII art

3D engine powered by ASCII art

Lingdong Huang 48 Nov 16, 2022
Python command line tool and python engine to label table fields and fields in data files.

Python command line tool and python engine to label table fields and fields in data files. It could help to find meaningful data in your tables and data files or to find Personal identifable information (PII).

APICrafter 22 Dec 5, 2022
0CD - BinaryNinja plugin to introduce some quality of life utilities for obsessive compulsive CTF enthusiasts

0CD Author: b0bb Quality of life utilities for obsessive compulsive CTF enthusia

null 12 Sep 14, 2022
Ralph is a command-line tool to fetch, extract, convert and push your tracking logs from various storage backends to your LRS or any other compatible storage or database backend.

Ralph is a command-line tool to fetch, extract, convert and push your tracking logs (aka learning events) from various storage backends to your

France Université Numérique 18 Jan 5, 2023
DNA Storage Simulator that analyzes and simulates DNA storage

DNA Storage Simulator This monorepository contains code for a research project by Mayank Keoliya and supervised by Djordje Jevdjic, that analyzes and

Mayank Keoliya 3 Sep 25, 2022
Qtas(Quite a Storage)is an experimental distributed storage system developed by Q-team in BJFU Advanced Computer Network sources.

Qtas(Quite a Storage)is a experimental distributed storage system developed by Q-team in BJFU Advanced Computer Network sources.

Jiaming Zhang 3 Jan 12, 2022
Qtas(Quite a Storage)is an experimental distributed storage system developed by Q-team in BJFU Advanced Computer Network sources.

Qtas(Quite a Storage)is a experimental distributed storage system developed by Q-team in BJFU Advanced Computer Network sources.

Jiaming Zhang 3 Jan 12, 2022
Storage-optimizer - Identify potintial optimizations on the cloud storage accounts

Storage Optimizer Identify potintial optimizations on the cloud storage accounts

Zaher Mousa 1 Feb 13, 2022