{"id":33185681,"url":"https://github.com/vdt/posce","last_synced_at":"2026-01-18T21:31:52.051Z","repository":{"id":146675897,"uuid":"249656953","full_name":"vdt/posce","owner":"vdt","description":"A note-taking toolkit for your command line.","archived":false,"fork":false,"pushed_at":"2020-03-24T06:03:27.000Z","size":160,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2024-04-20T16:59:48.685Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/vdt.png","metadata":{"files":{"readme":"readme.md","changelog":"changes.md","contributing":null,"funding":null,"license":"license.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2020-03-24T08:50:42.000Z","updated_at":"2020-09-02T07:36:01.000Z","dependencies_parsed_at":"2023-06-26T01:23:37.439Z","dependency_job_id":null,"html_url":"https://github.com/vdt/posce","commit_stats":null,"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/vdt/posce","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vdt%2Fposce","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vdt%2Fposce/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vdt%2Fposce/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vdt%2Fposce/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vdt","download_url":"https://codeload.github.com/vdt/posce/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vdt%2Fposce/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":285731803,"owners_count":27222214,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-11-22T02:00:05.934Z","response_time":64,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-11-16T05:00:20.098Z","updated_at":"2025-11-22T04:01:32.875Z","avatar_url":"https://github.com/vdt.png","language":null,"funding_links":[],"categories":["\u003ca name=\"note-taking\"\u003e\u003c/a\u003eNote taking"],"sub_categories":[],"readme":"Posce\n=====\n\n[![](https://img.shields.io/pypi/pyversions/posce)][py]\n[![](https://img.shields.io/pypi/v/posce)][pp]\n[![](https://img.shields.io/github/issues/posce/posce)][is]\n[![](https://img.shields.io/badge/license-bsd--3-brightgreen)][li]\n\n**Posce** (pronounced *posh·ee*) is a note-taking toolkit for your command line. It takes a single directory of plaintext note files and lets you create, edit, manipulate, and organise them to your heart's content; all in a single unified interface.\n\n- See [changes.md][ch] for a complete changelog.\n- See [license.md][li] for licensing information.\n\nTable of Contents\n-----------------\n\n- [Installation](#installation)\n- [Configuration](#configuration)\n- [Usage](#usage)\n- [Commands](#commands)\n    - [`clip NAME`](#clip-name)\n    - [`copy NAME DEST`](#copy-name-dest)\n    - [`drop NAME`](#drop-name)\n    - [`dump FILE [-l]`](#dump-file--l)\n    - [`edit NAME [-e]`](#edit-name--e)\n    - [`find TERM [-r]`](#find-term--r)\n    - [`list [GLOB] [-rs]`](#list-glob--rs)\n    - [`make NAME [-f]`](#make-name--f)\n    - [`move NAME DEST`](#move-name-dest)\n    - [`show NAME [-w]`](#show-name--w)\n    - [`wget NAME URL`](#wget-name-url)\n- [F.A.Q.](#faq)\n- [Contribution](#contribution)\n\nInstallation\n------------\n\nPosce required [Python 3.8][py] or higher. To install, you can:\n\n- Run `pip install posce`, or\n- Download and install the [latest release][re].\n\nConfiguration\n-------------\n\nPosce only requires you to set two environment variables:\n\n~~~bash\n# The path to your notes directory.\nPOSCE_DIR = \"~/notes\"\n\n# The extension your note files use (no dot).\nPOSCE_EXT = \"txt\"\n~~~\n\nOn macOS and Linux, these variables can be set in your shell profile script, most likely `$HOME/.profile`. On Windows, you can set them in the \"Environment Variables\" subscreen in System Properties (search \"environment\" in your Start Menu).\n\nUsage\n-----\n\nNotes are always referred to by their pure name, no extension or filepath. In addition, notes and commands are disambiguated, which means you can write abbreviated versions and — if it's unambiguous — Posce will automatically expand them for you.\n\nFor example, if you have a directory that looks like this:\n\n~~~text\n- ~/notes\n    - alpha.txt\n    - bravo.txt\n    - charlie.txt\n~~~\n\nThen your notes will look like this:\n\n~~~bash\n$ posce list\nalpha\nbravo\ncharlie\n\n$ posce show c\nCharliiiiiiieeeeeee!\n~~~\n\nAnd you can abbreviate commands like this:\n\n~~~bash\n$ posce l\nalpha\nbravo\ncharlie\n\n$ posce s c\nCharliiiiiiieeeeeee!\n~~~\n\nI recommend aliasing `posce` to `p` for maximum brevity.\n\nCommands\n--------\n\n### `clip NAME`\n\nCopy the existing note `NAME` to the clipboard.\n\n~~~bash\n$ posce clip alpha\n# Copy \"alpha.txt\" to clipboard.\n~~~\n\n### `copy NAME DEST`\n\nCopy the existing note `NAME` to the new note `DEST`.\n\n~~~bash\n$ posce copy alpha delta\n# Copy \"alpha.txt\" to new file \"delta.txt\".\n~~~\n\n### `drop NAME`\n\nMove the existing note `NAME` to the system trash/recycle bin.\n\n~~~bash\n$ posce drop alpha\n# Move \"alpha.txt\" to trash/recycle bin.\n~~~\n\n### `dump FILE [-l]`\n\nCreate a zip archive of the notes directory at `FILE`.\n\n- `-l` `--level INT`: Compression level from `0` to `9` (default `5`).\n\n~~~bash\n$ posce dump notes.zip\n# Create zip archive \"notes.zip\".\n\n$ posce dump notes.zip --level 9\n# Create \"notes.zip\" with maximum compression.\n~~~\n\n### `edit NAME [-e]`\n\nEdit the existing note `NAME` in your default editor.\n\n- `e` `--editor PROG`: Open the note in the program `PROG` instead.\n\n~~~bash\n$ posce edit alpha\n# Open \"alpha.txt\" in default \"txt\" editor.\n\n$ posce edit alpha --editor notepad\n# Open \"alpha.txt\" in \"notepad\".\n~~~\n\n### `find TERM [-r]`\n\nList all notes containing the substring or regular expression `TERM`.\n\n- `r` `--regex`: Use search term as regex.\n\n~~~bash\n$ posce find \"Charliiiiiiieeeeeee!\"\ncharlie\n\n$ posce find \"Charli{7}e{7}!\" --regex\ncharlie\n~~~\n\n### `list [GLOB] [-rs]`\n\nList all notes with names matching `GLOB` (default `*`).\n\n- `-r` `--reverse`: Reverse sorting order.\n- `-s` `--sort (name|size)`: Sort notes by name or size.\n\n~~~bash\n$ posce list\nalpha\nbravo\ncharlie\n\n$ posce list al*\nalpha\n\n$ posce list --reverse --sort name\ncharlie\nbravo\nalpha\n~~~\n\n### `make NAME [-f]`\n\nCreate the new empty note `NAME`.\n\n- `-f` `--file FILE`: Copy the note's contents from a file.\n\n~~~bash\n$ posce make delta\n# Create empty file \"delta.txt\" in notes directory.\n\n$ posce make delta --file ~/temp.txt\n# Create \"delta.txt\" with contents from \"~/temp.txt\".\n~~~\n\n### `move NAME DEST`\n\nMove the existing note `NAME` to the new note `DEST`.\n\n~~~bash\n$ posce move alpha delta\n# Move \"alpha.txt\" to \"delta.txt\".\n~~~\n\n### `show NAME [-w]`\n\nPrint the contents of the existing note `NAME`.\n\n- `-w` `--wrap COLS`: Wrap text to this width.\n\n~~~bash\n$ posce show alpha\nThis is the note Alpha!\n\n$ posce show bravo --wrap 40\nThis is the much longer note Bravo, and\nwill be wrapped across two lines.\n~~~\n\n### `wget NAME URL`\n\nDownload a URL into the existing note `NAME`.\n\n~~~bash\n$ posce wget alpha example.com\n# Download \"https://example.com\" and write contents to \"alpha.txt\".\n~~~\n\nF.A.Q.\n------\n\n### Why use this instead of `ls`/`grep`/`wget`/etc?\n\nPosce is *one* app using *one* system on *one* directory. It's a very focused app, and that focus gives it a level of stability and uniformity I enjoy. Also, by using a single notes directory, you can [use disambiguated names](#usage) and get incredible brevity when entering commands.\n\n### Why environment variables? Why not a config file?\n\nThe last thing you or I need is *another* configuration file clogging up our home directories. Environment variables are simpler, lighter, and can be overriden much easier. Also, if Posce did use a config file, it would only have those two variables anyway!\n\n### Why do I have to make a new note before editing it?\n\nIt makes the code simpler and more robust, it allows for disambiguation of names, and I just prefer that kind of explicit operation.\n\n### Why can I only trash notes and not delete them?\n\nI'm paranoid about data loss, which means Posce will *never, ever, under any circumstances* implement file deletion. If you want to delete your files, do it yourself.\n\nContribution\n------------\n\nBugs, suggestions, and feature requests are welcome! Please add them to the [issue tracker][is] with an appropriate label.\n\n[ch]: https://github.com/posce/posce/blob/master/changes.md\n[is]: https://github.com/posce/posce/issues\n[li]: https://github.com/posce/posce/blob/master/license.md\n[re]: https://github.com/posce/posce/releases/latest\n[pp]: https://pypi.org/project/posce/\n[py]: https://python.org\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvdt%2Fposce","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvdt%2Fposce","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvdt%2Fposce/lists"}