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
Code for "Salient Deconvolutional Networks, Aravindh Mahendran, Andrea Vedaldi, ECCV 2016"

deconvnet_analysis Code for "Salient Deconvolutional Networks, Aravindh Mahendran, Andrea Vedaldi, ECCV 2016" Parts of this code Generate figures in t

Aravindh Mahendran 12 Jan 25, 2021
Bad Apple printed out on the console with Python!

Bad Apple printed out on the console with Python!

CalvinLoke 186 Dec 01, 2022
Borderless-Window-Utility - Modifies window style to force most applications into a borderless windowed mode

Borderless-Window-Utility Modifies window style to force most applications into

8 Oct 22, 2022
texel - Command line interface for reading spreadsheets inside terminal

texel - Command line interface for reading spreadsheets inside terminal. Sometimes, you have to deal with spreadsheets. Those are sad times. Fortunate

128 Dec 19, 2022
Kubernetes shell: An integrated shell for working with the Kubernetes

kube-shell Kube-shell: An integrated shell for working with the Kubernetes CLI Under the hood kube-shell still calls kubectl. Kube-shell aims to provi

CloudNative Labs 2.2k Jan 08, 2023
Command line interface for testing internet bandwidth using speedtest.net

speedtest-cli Command line interface for testing internet bandwidth using speedtest.net Versions speedtest-cli works with Python 2.4-3.7 Installation

Matt Martz 12.4k Jan 08, 2023
Create animated ASCII-art for the command line almost instantly!

clippy Create and play colored 🟥 🟩 🟦 or colorless ⬛️ ⬜️ animated, or static, ASCII-art in the command line! clippy can help if you are wanting to;

Connor 10 Jun 26, 2022
dcargs is a tool for generating portable, reusable, and strongly typed CLI interfaces from dataclass definitions.

dcargs is a tool for generating portable, reusable, and strongly typed CLI interfaces from dataclass definitions.

Brent Yi 119 Jan 09, 2023
Key-control - A tool for add keys to your Termux app

Key-Control Is a tool for add keys to your Termux app. Cara Penginstalan $ pkg u

Beereva.id 1 Feb 14, 2022
EODAG is a command line tool and a plugin-oriented Python framework for searching, aggregating results and downloading remote sensed images while offering a unified API for data access regardless of the data provider

EODAG (Earth Observation Data Access Gateway) is a command line tool and a plugin-oriented Python framework for searching, aggregating results and downloading remote sensed images while offering a un

CS GROUP 205 Jan 03, 2023
A simple discord slash command handler for for discord.py.

A simple discord slash command handler for discord.py About ⦿ Installation ⦿ Disclaimer ⦿ Examples ⦿ Documentation ⦿ Discussions Note that master bran

641 Jan 03, 2023
Command line interface to watch your childhood shows in hindi and english, designed with python

Sweet dreams: Most of your childhood shows Command line interface to watch your

Not Your Surya 3 Feb 13, 2022
Simple CLI tool to track your cryptocurrency portfolio in real time.

Simple tool to track your crypto portfolio in realtime. It can be used to track any coin on the BNB network, even obscure coins that are not listed or trackable by major portfolio tracking applicatio

Trevor White 69 Oct 24, 2022
Command-line tool for looking up colors and palettes.

Colorpedia Colorpedia is a command-line tool for looking up colors, shades and palettes. Supported color models: HEX, RGB, HSL, HSV, CMYK. Requirement

Joohwan Oh 282 Dec 27, 2022
A simple command line chat app to communicate via the terminal.

A simple command line chat app to communicate via the terminal. I'm new to networking so sorry if some of my terminology or code is messed up.

PotNoodle 1 Oct 26, 2021
A collection of command-line interface games written in python

Command Line Interface Python Games Collection of some starter python game projects for beginners How to play these games Clone this repository git cl

Paras Gupta 7 Jun 06, 2022
Baseline is a cross-platform library and command-line utility that creates file-oriented baselines of your systems.

Baselining, on steroids! Baseline is a cross-platform library and command-line utility that creates file-oriented baselines of your systems. The proje

Nelson 4 Dec 09, 2022
Tstock - Check stocks from the terminal

tstock - Check stocks from the terminal! 📈 tstock is a tool to easily generate stock charts from the command line. Just type tstock aapl to get a 3 m

Gabe Banks 502 Dec 30, 2022
A command line tool to hide and reveal information inside images (works for both PNGs and JPGs)

ImgReRite A command line tool to hide and reveal information inside images (work

Jigyasu 10 Jul 27, 2022
Password manager for the CLI simps.

CLI Password Manager Password manager for the CLI simps. Free software: MIT license

1 Dec 30, 2021