Bring to Front

unlisted

by rockbenben

Automatically brings the window to the front when a dialog or notification appears while Obsidian is in the background.

★ 1 starsUpdated 8d agoMIT
View on GitHub

Bring to Front

Automatically bring the Obsidian window to the front when a dialog or notification appears

English · 简体中文

GitHub release (latest SemVer) GitHub License 365 Open Source Plan #005

What it does

Obsidian's reminders, sync warnings and plugin pop-ups all appear inside its own window. If you're working in a browser or an editor at the time, they come and go without you ever seeing them — Obsidian has no way to get your attention. This plugin gives it one.

It works the moment you enable it — no setup, no keywords, nothing to configure. If you want, you can later filter what triggers it (see Settings).

Desktop only (Windows / macOS / Linux). It uses Electron window APIs and does not run on mobile. Requires Obsidian 1.8.7 or newer.

Obsidian sitting in the background, then jumping to the front the moment a notice fires

Installation

From Obsidian (recommended)

  1. Open Settings → Third-party plugin.
  2. Turn off Restricted mode, then click Browse.
  3. Search for Bring to Front, then Install and Enable.

Or open the community plugin page directly.

Manual

  1. From the latest release, download main.js, manifest.json and styles.css.

  2. Put all three files into this folder (create it if it doesn't exist):

    YourVault/.obsidian/plugins/bring-to-front/
    
  3. Reload Obsidian, then enable the plugin in Settings → Third-party plugin.

Usage

There's nothing to set up — once enabled, it just works. Worth knowing: when the window already has focus it does nothing, so it never steals focus from itself while you're typing.

Example: never miss a reminder

A great pairing is with reminder plugins like Reminder or Tasks, so a reminder never stays hidden while you work in another app:

  1. Keep the default settings — no keywords needed.

  2. Create a task with a due time, for example using the Reminder plugin syntax:

    - [ ] Submit report (@2026-06-09 14:30)
    
  3. Switch to another app.

  4. When the reminder pops up, Obsidian comes to the front automatically.

Getting pulled forward too often? Use Keywords or Watch for below to limit it to only the pop-ups you care about.

Settings (all optional)

Open Settings → Third-party plugin → Bring to Front. The defaults work well for most people; change these only if you want to fine-tune.

SettingWhat it doesDefault
EnabledTurn the raising off without losing your settingsOn
Plugin languageLanguage of these settingsFollow Obsidian
KeywordsOnly trigger when the pop-up text contains one of these comma-separated words (case-insensitive). Empty = any pop-up.Empty
Watch forWhat to react to: Dialogs, Notifications, both, or your own selectorDialogs & notifications
SelectorYour own CSS selector. Empty = dialogs and notifications. (Shown only when Watch for = Custom selector)Empty
Cooldown (seconds)Shortest wait between two raises, so it doesn't interrupt repeatedly. 0 = no wait.5
Quiet hoursStay out of the way during a time range you choose. Ranges may span midnight.Off (22:00–08:00)
Debug modeRecord what was detected in the developer console (Ctrl+Shift+I)Off

Quiet hours

Turn this on and pick a start and end time to stop the window from jumping in front of you at night. Nothing is suppressed except the window raise — dialogs and notifications still appear in Obsidian exactly as usual, so anything that arrives during quiet hours is waiting for you when you switch back.

Ranges that cross midnight work as you'd expect: 22:00–08:00 covers the whole night. The start time counts as inside the range and the end time as outside, so 22:00–08:00 and 08:00–22:00 divide the day with no overlap and no gap. A range whose start and end are the same time silences nothing, and the settings page says so.

Filtering examples (optional)

GoalKeywordsWatch for
Bring to front on anything (default)(empty)Dialogs & notifications
Only reminder dialogssnooze, doneDialogs
Only error / sync notificationserror, failedNotifications
A specific plugin's pop-up(empty)Custom selector: [data-type="my-plugin"]

Tip: use a short cooldown (1–30 s) for things you want to see right away, or a longer one (≥ 120 s) if it feels intrusive.

How it works

Bring to Front watches the Obsidian window for new pop-ups — dialogs and notifications. When one appears while the window is in the background (and matches your optional keywords/scope), it raises the window via Electron's window APIs — restore if minimized, show if hidden, briefly pin on top, then focus. If the window is already focused, it stays out of the way.

Troubleshooting

ProblemTry this
Pops up too oftenIncrease Cooldown, or add Keywords to narrow what triggers it.
Interrupts at nightTurn on Quiet hours and set a range such as 22:00–08:00.
Doesn't pop upMake sure Enabled is on and Obsidian is actually in the background; clear Keywords and set Watch for to "Dialogs & notifications"; confirm the pop-up text matches your keywords. If you set a Selector, an unparseable one is flagged in red and ignored — the plugin keeps watching dialogs and notifications instead of going silent.
Want to see what happensEnable Debug mode, open the developer console (Ctrl+Shift+I), and watch for [Bring to Front] messages.

Development

git clone https://github.com/rockbenben/bring-obsidian-to-front.git
cd bring-obsidian-to-front
npm install
npm run dev    # watch build
npm run lint   # same rules the Obsidian plugin review bot runs
npm run build  # type-check + lint + production build

main.js is the bundle of main.ts; styles.css is not imported by it — Obsidian loads the file straight from the plugin folder, so it has to be shipped alongside main.js. Every rule there is scoped under .btf-settings, which display() puts on the settings container, so the plugin cannot restyle the rest of Obsidian.

Contributing

Issues and suggestions are welcome on GitHub.

About the 365 Open Source Plan

Project #005 of the 365 Open Source Plan — one person + AI, 300+ open-source projects in a year. Submit your idea → · Discord · Telegram

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.