mohammad876 downloadsControl the transparency and always-on-top behavior of Obsidian windows with per-window settings, Smart Fade, Contrast Shield, and quick note overlays.
Keep your notes in view without losing sight of what is behind them.
Lacewing Window Transparency is a macOS-first Obsidian plugin for making the main vault window or any pop-out translucent and keeping selected windows above other apps. It adds per-window controls, reading-aware Smart Fade, a Contrast Shield, and a quick way to open the current note as an overlay.
Lacewing is useful when you want to:
Lacewing is desktop-only because it uses guarded Electron window APIs. Windows, Linux, and Obsidian Mobile are not currently supported.
main.js, manifest.json, and styles.css from the
latest GitHub release.<your-vault>/.obsidian/plugins/lacewing/.Changes apply immediately while Lacewing is on. The main window and every pop-out are controlled independently.
Click Pause Lacewing at the top of the Window Manager to temporarily make every managed window fully opaque, unpin it, and remove its contrast shield. Smart Fade is suspended too. The ribbon shows a pause icon and a paused tooltip. Click Resume Lacewing to restore your settings. New windows also stay paused, and edits made while paused apply when you resume.
Run Pause / resume all effects from the Command Palette, or assign the suggested ⌘⌥⇧L (Command–Option–Shift–L) shortcut in Settings → Hotkeys. Pause is temporary: it lasts until you resume or reload the plugin. It does not reset saved preferences.
Run Open current note as overlay from the Command Palette. Lacewing copies the active Markdown note into a new single-note pop-out without moving the original tab. The pop-out starts at 85% opacity by default and is pinned using macOS's normal floating level.
Running the command again for the same note focuses the existing Lacewing overlay instead of opening a duplicate. Change the starting opacity under Settings → Lacewing Window Transparency → Overlay defaults.
Each card represents one Obsidian window and shows whether it is the main window or a pop-out, focused, pinned, and using Smart Fade or a Contrast Shield.
Controls for an unambiguous target are saved automatically:
Saved note preferences follow file and folder renames and are removed after deletion.
Smart Fade switches a window between a readable active opacity and a more transparent idle opacity. Enable and configure the global default under Settings → Lacewing Window Transparency → Global smart fade, or use the Global smart fade toggle at the top of the Window Manager. Expand Smart fade on any Window Manager card to inherit the global behavior or override it for that window.
New installations start with Focus loss only and a 5-second idle delay if an inactivity trigger is selected. Existing saved settings are preserved.
Three triggers are available:
Typing, navigation keys such as arrows and Page Up or Down, clicks, and mouse, trackpad, or scrollbar scrolling can all count as reading activity. These activity types can be enabled independently.
Opacity changes can be instant or smoothly animated from 0–500 ms. Lacewing can also honor the macOS Reduce Motion accessibility setting.
Whole-window opacity affects text as well as the window background. Contrast Shield adds a theme-aware backing surface behind Markdown content to improve separation from a busy call or video behind the note.
Choose None, Subtle, Medium, or Strong globally under Settings → Lacewing Window Transparency → Readability, then override the level on individual windows in the Window Manager.
Contrast Shield affects Markdown source, Live Preview, and Reading view. It does not alter your theme, links, selection, embeds, sidebars, window chrome, or Obsidian's built-in translucency setting.
All shortcuts below are suggestions and are unassigned by default. To assign or customize a shortcut, open Settings → Hotkeys, search for Lacewing Window Transparency, select the plus button beside a command, and press the shortcut you want.
The following macOS suggestions use one memorable Command–Option–Shift family. They also appear beside the relevant actions in Lacewing settings and the Window Manager.
| Command | Suggested shortcut |
|---|---|
| Open window manager | ⌘⌥⇧O |
| Open current note as overlay | ⌘⌥⇧N |
| Increase active-window opacity | ⌘⌥⇧] |
| Decrease active-window opacity | ⌘⌥⇧[ |
| Toggle active-window pinning | ⌘⌥⇧P |
| Pause / resume all effects | ⌘⌥⇧L |
| Restore active window to 100% | ⌘⌥⇧0 |
| Restore every managed overlay | ⌘⌥⇧R |
Upgrading from 1.1.0: if you used its built-in pause shortcut, assign it once in Hotkeys settings to keep using it. Shortcuts you explicitly assigned yourself are preserved.
The opacity commands change fixed opacity when Smart Fade is off. When Smart Fade is on, they change the active opacity for the current window.
Lacewing has no analytics, accounts, network requests, or remote services. It stores settings locally in the vault's plugin data and never reads note contents beyond the file identity Obsidian exposes for window tracking.
Confirm that you are using Obsidian Desktop on macOS and Obsidian 1.13.0 or newer. Reload Obsidian after installation. If a card says native controls are unavailable, restart Obsidian and try again.
Raise the window opacity or enable Contrast shield. For calls and videos, a good starting point is 85–90% active opacity, 60–70% idle opacity, and a Subtle or Medium shield.
Turn off Always on top for that window or run Restore every managed overlay. Disabling Lacewing also restores the native window state captured when it loaded.
Only a pop-out containing one unique Markdown note has a persistent identity. Mixed-tab, duplicate-note, and non-note pop-outs are labeled Session only in the Window Manager.
Requirements: Node.js 20 or 22 and pnpm 9.6.0.
pnpm install --frozen-lockfile
pnpm check
For real-vault development, create an ignored .env.local:
OBSIDIAN_VAULT_PATH=/absolute/path/to/vault
Then run:
pnpm dev:install
Use a test vault when possible. pnpm dev:install overwrites Lacewing's
installed runtime files in the configured vault.
The installer copies only main.js, manifest.json, and styles.css to
.obsidian/plugins/lacewing. It never copies source files or node_modules
into the vault.
Useful scripts:
pnpm lint — run the Obsidian ESLint rules with no warnings allowed.pnpm typecheck — type-check without emitting files.pnpm test — run the Vitest suite.pnpm build — produce a minified main.js.pnpm check — run lint, type-checking, tests, and a production build.pnpm dev — watch and rebuild during development.pnpm dev:install — build and install the three runtime artifacts.pnpm release:check — run every check and validate release artifacts.See Architecture, Testing, and Releasing for contributor documentation.
Contributions are welcome. See the contributing guide for setup, bug reports, and pull request expectations. For substantial changes, please open an issue first so the approach can be discussed.
By submitting a contribution, you confirm that you have the right to contribute it and agree that it will be licensed under the MIT License.
Lacewing is available under the MIT License. You may use, modify, redistribute, sublicense, and sell copies, including for commercial purposes, provided that the copyright and license notices are retained.
Lacewing is an independent community plugin and is not affiliated with or endorsed by Obsidian.