Skip to main content

Linux-first command snippet manager for markdown notes

Project description

OpIndex

OpIndex is a Linux-first command memory tool for markdown notes. It parses reusable command blocks from your notes, lets you search them from a launcher, and copies the selected command to the clipboard.

The current UI is optimized for rofi on X11, but the note format and CLI are useful independently of the launcher.

What it does

  • searches reusable commands from markdown files
  • organizes sources into named workspaces
  • supports quick workspace switching from a launcher
  • shows source-document context while browsing
  • lints notes against the OpIndex authoring standard
  • copies selected commands to the clipboard

Platform

OpIndex currently targets Linux. It expects one of:

  • rofi for the interactive launcher flow
  • xclip, xsel, or wl-copy for clipboard access

Installation

System dependencies

Debian or Ubuntu:

sudo apt install rofi xclip

Wayland clipboard support:

sudo apt install wl-clipboard

Python package

pipx install opindex

This installs the opindex command.

For local development from this repository:

pipx install .

Quick start

Create a config:

opindex --create-config

Run the selector in the default workspace:

opindex

Open the workspace picker first:

opindex --workspace-menu

Search a specific workspace:

opindex --workspace notes

Search all workspaces:

opindex --all

Browse by workspace, then document:

opindex --browse

Configuration

The config file lives at:

~/.config/opindex/config.yaml

Example:

default_workspace: notes

workspaces:
  notes:
    directories:
      - "~/notes/commands"
    files: []
    recursive: true
    file_patterns:
      - "*.md"
      - "*.markdown"

  cheatsheets:
    directories:
      - "~/notes/reference"
    files: []
    recursive: true
    file_patterns:
      - "*.md"
      - "*.markdown"

rofi:
  max_lines: 15
  prompt: "Commands"
  window_width: 60
  element_height: 2

cache:
  enabled: true
  directory: null

substitute_variables: false
variables: {}

Markdown format

Minimal parseable format:

# Azure CLI

## Login with device code
```bash
az login --use-device-code
```

OpIndex parses:

  • # as the category
  • ## as the searchable task heading
  • fenced code blocks as command content

Supported command block languages:

  • empty language
  • bash
  • sh
  • shell
  • powershell
  • ps1
  • cmd
  • bat
  • batch

For the stricter durable-note format, see:

Linting

Lint a specific note:

opindex --lint-files path/to/file.md

Lint the selected workspace sources:

opindex --lint-files

CLI

Common commands:

opindex --help
opindex --list-workspaces
opindex --list-files
opindex --list-commands
opindex --clear-cache
opindex --config-path

Development

Enter the dev shell:

direnv allow

Or without direnv:

nix develop

Run tests:

pytest -q

Run the parser against a file:

python -m cmd_manager.parser test_data/sample.md

Lint a note during development:

./opindex --lint-files test_data/sample.md

Publishing

Release notes for maintainers:

Releases publish to PyPI from pushed tags in the form v<semver>.

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

opindex-0.1.3.tar.gz (24.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

opindex-0.1.3-py3-none-any.whl (21.9 kB view details)

Uploaded Python 3

File details

Details for the file opindex-0.1.3.tar.gz.

File metadata

  • Download URL: opindex-0.1.3.tar.gz
  • Upload date:
  • Size: 24.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for opindex-0.1.3.tar.gz
Algorithm Hash digest
SHA256 134b836035d110fc875251bfd68e91487cd16d975f97283ec1364fce9318b897
MD5 7642a3836beddaa615017d49f4a4b2d8
BLAKE2b-256 1f8b1165e9221121744c1494c6a5805eb1d96f4bdc212db825bc5238413cf760

See more details on using hashes here.

Provenance

The following attestation bundles were made for opindex-0.1.3.tar.gz:

Publisher: publish-pypi.yml on CameronCandau/OpIndex

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file opindex-0.1.3-py3-none-any.whl.

File metadata

  • Download URL: opindex-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 21.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for opindex-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 dd4f170e0ce00bb300a4cd34c27d59aef9c860e082bdb62a6f7fe74dd8204243
MD5 286d0f3b5027de65a37726234e5e10fc
BLAKE2b-256 b0b1f4e6d1ea66c78da1eb6e10a0835fe294f7a9cde99b87e44a805b95cccf82

See more details on using hashes here.

Provenance

The following attestation bundles were made for opindex-0.1.3-py3-none-any.whl:

Publisher: publish-pypi.yml on CameronCandau/OpIndex

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page