Better Bullets

pending

by Lucas Lum

Improves readability of bulleted notes.

30 starsUpdated 1mo agoMITDiscovered via Obsidian Unofficial Plugins
View on GitHub
Better Bullets

Better Bullets for Obsidian

Better Bullets is an Obsidian plugin that enhances the visual hierarchy and readability of your bullet points. It uses dynamic analysis to determine the depth of your lists and applies unique symbols, font sizes, and contextual formatting based on the content of your notes.

Features

1. Hierarchical Bullet Symbols

Hierarchical bullet symbols
Bullet symbols and sizing change automatically based on nesting depth.

The plugin automatically changes bullet symbols based on their relationship to other items in the list:

  • Grandparent (Level 2+): Uses the => symbol.
  • Parent (Level 1): Uses the -> symbol.
  • Leaf (Level 0): Uses the standard - symbol.

2. Dynamic Text Formatting

Dynamic Text Formatting examples
Formatting rules in action: term/definition, importance, quotes, and year auto-marking.

Text is formatted based on its position in a list and specific syntax within the line:

  • Automatic Sizing: "Parent" and "Grandparent" lines are scaled up based on your settings to create a clear visual outline.
  • Non-Leaf Bolding: High-level list items can be automatically bolded to act as section headers.
  • Notes: Lines starting with Note: use a * bullet, with "Note:" bolded and highlighted and the remainder italicized.
  • Definitions: Using the Term | Definition syntax bolds and highlights the term and italicizes the definition.
  • Important Lines: Lines ending with ! are bolded and colored. The trailing ! is hidden using the --bb-control property (see below).
  • Examples: Lines starting with ex. italicize the text that follows.
  • Parentheses: Text inside (parentheses) is italicized anywhere in the line.
  • Years: 4-digit numbers (e.g., 1745) are automatically underlined anywhere in the line.
  • Quotes: Text inside "straight" or "curly" quotes is italicized anywhere in the line.

Control characters: The --bb-control: 1 CSS property is a special signal used internally by Better Bullets. When applied to a matched pattern segment, that segment is hidden from the rendered output while remaining present in the Markdown source. This lets syntax markers (like the trailing ! on important lines) act as triggers without appearing in the final note.

3. Settings

Hierarchy Configuration

Hierarchy Setting
Hierarchy Configuration: Defines styles for each level.

Define the bullet symbol and CSS for each indentation level. Add or remove levels as needed using the Add level + and Remove last - buttons.

Formatting Rules

Rule Setting
Rule Configuration: Uses regex to make custom formatting rules.

Create custom rules that match bullet text using regex patterns and apply CSS styles. Each rule supports:

  • Custom bullet symbol — overrides the hierarchy symbol for matched bullets.
  • Custom bullet CSS — overrides the hierarchy CSS for matched bullets.
  • Match mode — either Match full line (pattern must match the entire text) or Match all (CSS is applied if the pattern matches anywhere in the text).
  • Patterns and styles — one or more regex/CSS pairs; the first matching pattern's styles are applied.

Rules can be added, deleted, and reordered. Clicking Reset to defaults will prompt a confirmation dialog before overwriting all rules with the plugin defaults.

Hotkeys

Move to previous/next line with same indentation: moves to previous/next bullet that has the same indentation while being in parent's fold. Typically bound to ⌘+⌥+↑ and ⌘+⌥+↓

Installation

  1. Download latest release, unzip, and drag to the .obsidian/plugins folder.
  2. Enable the plugin in settings.
  3. Start typing bullet points using -, *, or +.

License

This project is open source under the terms of the MIT License — see the LICENSE file for details.

For plugin developers

Search results and similarity scores are powered by semantic analysis of your plugin's README. If your plugin isn't appearing for searches you'd expect, try updating your README to clearly describe your plugin's purpose, features, and use cases.