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

The intended PyPI distribution name is opindex.

pipx install opindex

This installs the opindex command.

For local development:

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 oscp

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

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

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

rofi:
  args: []
  use_markup: true
  max_lines: 15
  prompt: "Commands"
  window_width: 60
  element_height: 2

cache:
  enabled: true
  directory: null
  auto_cleanup: true

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

Run tests:

python3 -m pytest tests/

Run the parser against a file:

python3 -m cmd_manager.parser test_data/sample.md

Lint a note during development:

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

Publishing

The package is prepared for Trusted Publishing from GitHub Actions. See:

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.1.tar.gz (29.1 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.1-py3-none-any.whl (25.9 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: opindex-0.1.1.tar.gz
  • Upload date:
  • Size: 29.1 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.1.tar.gz
Algorithm Hash digest
SHA256 e4fbb0053a3772da3acfca9bb75506db48e79cfcd6eb97e1a89ef4dbf59721f0
MD5 0bbf5bc7357b465ef61de7023874e3bb
BLAKE2b-256 c81f230ef067b7da57d933b8101f31c62103833238ca47b00a74cabc10996473

See more details on using hashes here.

Provenance

The following attestation bundles were made for opindex-0.1.1.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.1-py3-none-any.whl.

File metadata

  • Download URL: opindex-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 25.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.1-py3-none-any.whl
Algorithm Hash digest
SHA256 4b16ad1a108c9784bea474f7f2a2610e0967bfbc47d9f8c2ba554c604b32b27d
MD5 2a139dd629e675e41646856bf794ab97
BLAKE2b-256 b63dc66266afecd40ef68eed17ead210e145d5e8fc13471cc3e40b4376ac1765

See more details on using hashes here.

Provenance

The following attestation bundles were made for opindex-0.1.1-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