Gay Toolbar

by chaskane
5
4
3
2
1
Score: 47/100

Description

The Gay Toolbar plugin replaces parts of the default mobile toolbar with a floating, collapsible toolbar that sits above the keyboard and can be reshaped in detail. Buttons support tap, long press and swipe actions, with separate icons and drag based slot editing in edit mode. You can change button colors, set a solid or CSS based background, adjust rows and columns independently and save multiple toolbar layouts to reload later. The toolbar can collapse into a single floating button and can be limited to mobile only. It also includes a command editor for user written JavaScript commands that become local commands. The plugin notes there is no outbound telemetry and that custom commands run only code saved by the user.

Reviews

No reviews yet.

Stats

29
stars
4,271
downloads
2
forks
20
days
13
days
20
days
1
total PRs
0
open PRs
1
closed PRs
0
merged PRs
18
total issues
3
open issues
15
closed issues
27
commits

README file from

Github

The Most Colorful Obsidian Toolbar

A fully customizable, collapsible toolbar that floats above the keyboard, intentionally replacing parts of the default mobile toolbar/navigation UX. Highly polished, feature-rich, loud, and opinionated. Built primarily around my own mobile workflow and tastes — both aesthetically and interactionally — and shared with anyone else who enjoys that energy. The defaults are intentionally colorful, gesture-dense, and high-contrast. If you want something quieter, the plugin is deeply customizable: desaturate it, make everything grey, simplify layouts, preserve more native behavior, whatever you want. I genuinely welcome contributions that support different philosophies and workflows — especially if they’re bundled cleanly into optional settings instead of diluting the core defaults. Built (and maintained!) with ❤️

Buy me a coffee

In edit mode (wrench 🔧 icon, or obsidian command Gay Toolbar: Toggle edit mode), each button can be assigned a primary (tap) and optional secondary (long-press) obsidian command, as well as any number of swipe commands, each assigned to a different swipe direction. Buttons can be moved between slots by long-pressing and dragging in edit mode. Their colors can be customized from a customizable color palette or assigned in bulk. The background color of the whole toolbar can be set to a solid color, or you can use your own CSS value for crazy radial gradients or whatever. Did I mention this toolbar is customizable? The number and size of rows and columns can also be set independently, and when you arrive at a config you like, you can snapshot it like a video game save slot. Image of gay-toolbar

Image of toolbar settings Image of button settings

P.S. My partner and I are looking for freelance work. She specializes in real-time full-stack app development (web sockets, Go, etc.). I specialize in real-time front ends, animation, and performance. Together, we've built apps, AI integrations, plugins, and much more. P.P.S. I've found Code Editor Shortcuts to be utterly indispensable so I highly recommend you explore what other plugins add the behavior you want so you can add it to your Gay toolbar.

One important note: customization cuts both ways. The defaults are not attempting to be universally neutral or minimal. They reflect my own preferences after hundreds of hour spent building this plugin in the days before AI. If your immediate reaction is “this is too much,” good news: the plugin was built so you can reshape nearly all of it.

And if your disagreement with the defaults is strong enough that you want new settings (“desaturate all defaults”, “keep the native navbar”, “load monochrome color pallet”, etc.), PRs are warmly welcomed. I’d happily collect options like these into a dedicated “Minimalist and Proud” settings section.

Privacy & plugin-review notes

  • No outbound telemetry. The plugin does not phone home or send background analytics. The only setInterval usage is local UI: optional slow auto-scroll of the long quote on the Restore default settings screen.
  • Custom commands run user-authored JavaScript. In Command editor, saved snippets become Obsidian commands. They are executed via the JavaScript Function constructor (same general idea as pasting code in the developer console): only code you write and save runs, loaded from your vault settings—not fetched from the network for execution. Treat custom commands like any privileged automation: don’t paste untrusted snippets.

(now for the AI-generated part BUT there's still helpful clarifications here. Think of it like a Q&A)

Highlighted Features

  • Customizable Toolbar:
    • Move (via dragging), add, remove, and personalize buttons (color, icons, and commands).
    • Button slots can remain empty, creating gaps in the toolbar if desired.
    • Save and load configs -- freely experiment and return to layouts you know work for you if you get lost.
  • Many Commands Per Button:
    • Primary Action: Triggered by a tap.
    • Secondary Action: Triggered by a long press (tap and hold for a customizable duration, default: 200ms).
    • Swipe Actions: Triggered by swiping from the button in the assigned direction.
    • Each action can have distinct, customizable icons.
  • Smart Icon Colors:
    • Icon colors are automatically chosen to maximize contrast against button background colors, using perceived luminance. This, was not easy.
  • Show/Hide Toolbar: The Gay Toolbar: Minimize command hides the toolbar, leaving one floating button that re-opens the toolbar. In the default config, it's the middle button in the right-most column.

Toolbar Edit Mode

Main Settings (if no button is selected)

  • The default config includes a 🔧 wrench icon in the top right — tap it to enter Edit Mode, or run Gay Toolbar: Toggle Edit Mode via the Command Palette.
  • Saved Configs: Save the current config and load previous saved configs anytime. Configs are stored in a markdown file in your vault; the file path is configurable in Obsidian Settings → Gay Toolbar (“Saved configs file path”).
  • Use a custom background (your own CSS value, e.g. radial-gradient(circle at bottom, pink, grey, white)). Layout, appearance, and other options are grouped in accordion sections.
  • Custom Commands: Open the Command editor from main settings to create your own Obsidian commands with custom JavaScript (the editor is JavaScript only; no in-app TypeScript compilation). Write JavaScript that has access to plugin, app, and console. Use Test to run the code; any console.log/warn/error output appears in the panel below. For full debugging, use Help → Developer tools. Test commands before saving and manage them in a table. Commands are persisted and loaded on startup. You can also Restore defaults (toolbar layout and settings) from the main settings without losing your custom commands or color presets.
  • Mobile only: In Obsidian Settings → Gay Toolbar you can enable “Mobile only” so the toolbar is shown only on mobile (restart to apply).

Example Command - Toggle underline on selected text:

const view = app.workspace.activeEditor;
if (view && view.editor) {
  const editor = view.editor;
  const selection = editor.getSelection();
  if (selection) {
    const underlineRegex = /^\s*<u>(.*?)<\/u>\s*$/s;
    const match = selection.match(underlineRegex);
    if (match) {
      editor.replaceSelection(match[1]);
    } else {
      editor.replaceSelection(`<u>${selection}</u>`);
    }
  } else {
    new Notice("No text selected");
  }
}

Button Settings

  • Add Buttons: Tap an empty slot (+) to insert a button (new button color is chosen randomly from color presets -- edit these in the color picker modal).
  • Edit Buttons: Tap an existing button to change its primary action/icon (bottom right button), secondary action/icon (top left button), or color, or to remove it.
  • Drag & Drop: Long-press to initiate a drag operation to move buttons. If you drop a button on a non-empty slot, the button in that slot swaps positions with the one being dragged.
  • Group Actions: Assign multiple commands per button, each with its own icon. The press duration is user-configurable in the main settings via the Long-press delay option. Personally, I like to group related commands like undo/redo and indent/outdent.

Roadmap

If you’re excited about seeing any of these or other ideas implemented, I’d love to collaborate! I’m happy to hop on a call and pair-code with you, even if you’re new to coding. What matters most to me is our shared investment in shaping our tools to meet our needs — I cherish connection built on loving the technology that supports us.

  • Time-dependent Colors: Automatically change toolbar colors based on time (daily or even every second).

  • Better Icon Support: Add emoji support to icon selector.

  • Separate Icon and Command Selection Flow

  • Swipe Button Actions: Add additional swipe gestures for more commands (e.g., swipe up, down, left, right). Visual cues will display custom colors for each gesture on the border of each button and dynamically as the user swipes. Example button for block editing:

    • Tap: Select the current block.
    • Long-Press: Copy the current block.
    • Swipe Left: Outdent.
    • Swipe Right: Indent.
    • Swipe Down: Move the block down.
    • Swipe Up: Move the block up.

Support

If Gay Toolbar saves you time on mobile — especially if you're using swipe commands — buy me a coffee


Contributions

Development Setup

To run the plugin locally:

  1. Install dependencies:

    pnpm install
    
  2. Start development mode (builds main.js from src/main.tsx, watches source and styles/*.css and writes combined styles.css):

    pnpm run dev
    
  3. Build for production:

    pnpm run build
    
  4. Run tests:

    pnpm run test
    pnpm run test:watch    # watch mode
    pnpm run test:coverage # coverage report
    

Android Development Sync

To sync changes to your Android Obsidian installation via ADB on save, have pnpm run dev running in another terminal and then:

fswatch -o main.js styles.css manifest.json data.json | xargs -n1 -I{} sh -c 'echo "Files changed, syncing..."; adb push main.js <path/to/.obsidian>/plugins/gay-toolbar/ && adb push styles.css <path/to/.obsidian>/plugins/gay-toolbar/ && adb push manifest.json <path/to/.obsidian>/plugins/gay-toolbar/ && adb push data.json <path/to/.obsidian>/plugins/gay-toolbar/ && echo "Sync complete"'

Replace <path/to/.obsidian> with your actual Obsidian vault path. The data.json sync is optional - you can remove it from the command if you don't want to sync your settings.

I've found the hot-reload plugin sometimes useful, as well as the dev tools plugin, tho for the latter case it's often easier to use the chrome devtools on mac, connected to android via adb. Lmk if you need help; happy to accept PRs! UPDATE: I now use the Logstravaganza plugin for accessing the results of console logs.

Similar Plugins

info
• Similar plugins are suggested based on the common tags between the plugins.
Advanced URI
5 years ago by Vinzent
Advanced modes for Obsidian URI
Auto Folder Note Paste
a year ago by d7sd6u
Convert your note into folder note upon pasting or drag'n'dropping an attachment
Automation
2 years ago by Benature
Base Board
3 months ago by mderazon
Kanban Plugin For Obsidian
Budget Planner
24 days ago by kalinichenko88
A minimalist budget planning tool for Obsidian. Create, track, and manage budgets using markdown code blocks directly in your notes.
Buttons
5 years ago by Sam Morrison
Buttons in Obsidian
Calendar Bases
5 months ago by Edrick Leong
Chorded Hotkeys
4 years ago by Trey Connor Meyers
Type multiple letters at the same time to trigger text insertion, template insertion, or command execution.
cMenu
5 years ago by Chetachi
An Obsidian.md plugin that adds a minimal text editor modal for a smoother writing/editing experience ✍🏽.
Code Blocks commands
a year ago by dragonish
Provide commands to insert code blocks with markup, and support triggering commands with backticks.
Command Block List
2 years ago by Ryota Ushio
Hide unwanted commands from the command palette in Obsidian.
Command Tracker
2 years ago by namikaze-40p
An Obsidian plugin that tracks the number of times the command is used.
Commander
2 months ago by jsmorabito
Commander - Obsidian Plugin | Add Commands to every part of Obsidian's user interface
Commando
3 years ago by qaptoR
Obsidian Plugin for automatically repeating commands with loop iterations
Custom File Explorer sorting
4 years ago by SebastianMC
Take full control over the order and sorting of folders and notes in File Explorer in Obsidian
Double row toolbar
a year ago by Lorens Osman
Dragger
2 months ago by ariestar
An Obsidian plugin for dragging and rearranging any block.
Editing Toolbar
4 years ago by Cuman
An obsidian toolbar plugin, modified from the Cmenu plugin
Emoji Picker
a year ago by Ali Faraji
An up-to-date Emoji Picker for obisian.md, using emoji-mart.
Expand Selection
4 months ago by Alex Tait
Obsidian plugin to expand your editor selection to lines, sections (recursive), or the entire note
Flexplorer
2 months ago by kh4f
🗃️ Obsidian File Explorer Enhancer
Full Screen Toggle
3 years ago by Donkey Pacific
Fullscreen toggle plugin across all platforms for Obsidian.
Graphic Organizer
5 months ago by Nick Le Guillou - Superhuman Curiosity
Kanban Bases View
5 months ago by I. Welch Canavan
A kanban-style drag-and-drop custom view for Obsidian Bases that allows you to organize your notes into columns based on any property.
Line Commands
2 years ago by charliecm
Adds commands to quickly select, copy, cut, and paste lines under the selection or cursor.
Local REST API with MCP
3 months ago by Adam Coddington
A secure REST API and Model Context Protocol (MCP) server for your vault.
Magiedit
2 years ago by Matteo Gassend
Markdown Tabs
a month ago by xhuajin
Create and render a Tabs component in your notes.
Mini Toolbar
3 years ago by AidenLx & Boninall
mini context toolbar in editor for Obsidian
Mobile PDF Exporter
10 days ago by Murat
One-click selectable preview PDF export plugin for Obsidian mobile and desktop.
Mobile Sidebar Notes
9 days ago by ckep1
Open notes & new tabs in the sidebar on the Obsidian mobile app.
Note Toolbar
a month ago by chrisgurney
Flexible, context-aware toolbars for your notes in Obsidian.
Open Plugin Settings
3 years ago by Mara-Li
Create a command that open the settings tabs of a registered plugin (because I was bored to open the parameters).
PopKit
2 years ago by Zhou Hua
Ribbon Folder
18 days ago by limniemdung
obsidian plugin ribbon folder
Shell commands
5 years ago by Jarkko Linnanvirta
Execute system commands via hotkeys or command palette in Obsidian (https://obsidian.md). Some automated events are also supported, and execution via URI links.
Speech To Text Keyboard Helper
3 years ago by mwoz123
Table Line Break Mobile
6 months ago by marcelflymark
Obsidian plugin: Insert a new line break inside a table cell using the <br> HTML element
Templater
6 years ago by SilentVoid
A template plugin for obsidian
URI Commands
5 years ago by kzhovn
Execute URIs from the command palette
Voice
19 days ago by Chris Oguntolu
🔊 The Obsidian Voice plugin lets you listen to your written content being read aloud—mobile-friendly audiobook-like experience. 🎧
WebDAV Explorer
5 months ago by 蓝星晓夜
WebDAV Server Explorer.
Yori Task
3 months ago by yorigo77
task manager, week planner, year planner