No description
  • JavaScript 79.1%
  • GLSL 9.1%
  • Python 7.5%
  • Shell 1.6%
  • Makefile 1.4%
  • Other 1.3%
Find a file
salix af3eb7a980 Support the Shell 51 shader snippet API in every effect
Shell 51 removed Clutter.ShaderEffect.set_shader_source; shaders now
come through vfunc_get_static_snippet as a Cogl.Snippet. Extract the
snippet conversion and registration into shader_effect.js and switch
all effect classes to it, keeping the legacy set_shader_source path
for older shells.
2026-10-06 13:42:06 +02:00
.github Add Ko-fi and Buy Me a Coffee usernames 2026-03-15 13:44:38 +08:00
effects Support the Shell 51 shader snippet API in every effect 2026-10-06 13:42:06 +02:00
preferences Merge branch 'blur-my-shell' 2026-09-03 21:12:23 +02:00
schemas Merge branch 'blur-my-shell' 2026-09-03 21:12:23 +02:00
screenshots add settings pane 2022-11-03 12:08:57 +08:00
tests Rename extension to SearchLightNG 2026-07-09 11:49:06 +02:00
ui Merge branch 'blur-my-shell' 2026-09-03 21:12:23 +02:00
.gitignore Make linting reproducible with ESLint 9 2026-08-05 13:41:16 +02:00
CHANGELOG.md Keep popup open when unrelated windows map or steal focus 2026-09-04 11:01:45 +02:00
eslint.config.mjs Make linting reproducible with ESLint 9 2026-08-05 13:41:16 +02:00
extension.js Catch Escape before the search entry handles it 2026-10-03 17:51:15 +02:00
HACKING.md Make linting reproducible with ESLint 9 2026-08-05 13:41:16 +02:00
install.sh Drop stale imagemagick note from install output 2026-09-02 18:16:57 +02:00
keybinding.js Fix double keybinding removal warning on disable 2026-07-10 14:31:54 +02:00
LICENSE remove providers - create separate extensions for them 2024-05-12 11:09:59 +08:00
Makefile Make linting reproducible with ESLint 9 2026-08-05 13:41:16 +02:00
metadata.json Support GNOME Shell 51 2026-10-02 11:20:14 +02:00
monitors.js Fix preferred monitor selection and refresh 2026-07-09 20:16:53 +02:00
NOTES.md fix test prefs 2023-09-28 05:54:12 +08:00
package-lock.json Make linting reproducible with ESLint 9 2026-08-05 13:41:16 +02:00
package.json Make linting reproducible with ESLint 9 2026-08-05 13:41:16 +02:00
prefs.js Merge branch 'blur-my-shell' 2026-09-03 21:12:23 +02:00
README.md Support GNOME Shell 51 2026-10-02 11:20:14 +02:00
shortcuts.js Fix extensions.gnome.org review-guideline issues 2026-07-10 13:58:48 +02:00
style.js Fix extensions.gnome.org review-guideline issues 2026-07-10 13:58:48 +02:00
stylesheet.css Fix Search Light popup sizing and animation 2026-07-10 11:47:55 +02:00
timer.js Fix Timer animation object overload 2026-08-05 13:39:52 +02:00
transpile.py Let users pick any Blur My Shell pipeline 2026-09-03 19:50:56 +02:00


SearchLightNG

A GNOME Shell extension, personal fork

First Release

A GNOME Shell extension that takes the apps search widget out of the Overview. Like macOS Spotlight, or Alfred.

About this fork

This is my personal fork of icedman/search-light. I renamed it to SearchLightNG (UUID search-light-ng@salix.host) so it can live next to the original one. For now you install it from source or with the install script, but I'm looking to get it on extensions.gnome.org soon too. It started as just some fixes to make the extension work on GNOME 50, but since then I kept fixing and cleaning up more things.

To be clear, I didn't fork this to compete with the original or something like that. The upstream extension is not maintained anymore and it had some serious bugs, a few of them even crashed the whole GNOME Shell, so I had to fix things myself to keep using it. Everything here is GPL, so if icedman picks up development again he is free to take all of it upstream, happy to help with that. And if that works better for everyone I can also take over maintenance of the original extension or the extensions.gnome.org package instead of keeping a separate fork. Just open an issue here or on the upstream repo and we can figure something out.

What changed since the fork:

  • Fixed the code issues from EGO review #70331: the compiled GSettings schema is not shipped anymore (the shell compiles it by itself since GNOME 45), no GTK/Gdk imports reachable from the shell process, removed unused source files, and disable() now cleans up everything (signals, actors, monkeypatches, overview search widgets). The preferences window also cleans up its settings listeners and D-Bus proxy when it closes.
  • Reworked how the popup behaves. It takes a real modal grab while open, teardown doesn't happen inside signal dispatch anymore (this was causing crashes and invisible popups), and the patched app activate methods get restored when the popup closes. Escape and hiding got fixed too.
  • The popup opens with the correct size on first use now, no more layout flash or wrongly measured search entry. Also fixed the open/close animation and adjusted the default sizing.
  • The blurred background is rendered live on the GPU (wallpaper and windows) instead of pre-generating a blurred wallpaper image with ImageMagick in a world-readable folder.
  • Fixed the preferred monitor selection and refresh on multi-monitor setups.
  • Some preferences improvements: theme presets on the appearance page, the shortcut editors don't share state anymore, you can clear a configured shortcut, and the color chooser dialogs are not clipped anymore.
  • Panel icon fixes: styling, toggling during the search overlay transitions, and the icon gets destroyed when hidden.
  • Added an application blacklist: the shortcut does nothing while one of the listed apps has focus (handy for VMs or remote desktops that want the shortcut for themselves). You manage the list in the preferences, and entries added by hand with gsettings can also be WM classes for windows without a desktop file.
  • Added a one-shot install script, it can also install a specific branch.
  • Removed the donation UI from the preferences (there is a link to icedman below instead).

It supports GNOME Shell 48, 49, 50 and 51 (see metadata.json). For older versions use the upstream branches (gnome-47, g44).

Features

  • Popup search box
  • Colors, background, borders customization
  • Theme presets in the appearance preferences
  • Blurred background rendered live on the GPU — wallpaper and the windows behind the popup, like Blur My Shell — no external tools needed
  • Optionally follows any of your Blur My Shell pipelines when that extension is installed
  • Multi-monitor support
  • Application blacklist to disable the shortcut while certain apps are focused

Easy install

One command, it downloads, installs and enables the extension for the current user:

curl -fsSL https://git.salix.host/salix/searchlightng/raw/branch/main/install.sh | bash

Then log out and back in (needed on Wayland, on X11 you can also do Alt+F2, r, Enter) and press Ctrl+Super+Space.

Installing a different branch

By default the installer builds from main. If you want to install another branch (for example to try a feature that is not merged yet), pass the branch name after bash -s --:

curl -fsSL https://git.salix.host/salix/searchlightng/raw/branch/main/install.sh | bash -s -- some-branch

or set the BRANCH environment variable:

curl -fsSL https://git.salix.host/salix/searchlightng/raw/branch/main/install.sh | BRANCH=some-branch bash

Both do the same thing, the installer just downloads the tarball of that branch instead of main. To go back, run the command again without a branch.

Installing from source

git clone https://git.salix.host/salix/searchlightng.git
cd searchlightng
make build install

make build compiles the GSettings schema locally, and make install copies the extension to ~/.local/share/gnome-shell/extensions/search-light-ng@salix.host/.

Then enable it:

gnome-extensions enable search-light-ng@salix.host

On Wayland you have to log out and back in before the shell picks up a new or updated extension (on X11, Alt+F2, r, Enter works too).

To update after pulling changes, run make build install again and re-login.

If something misbehaves, check the shell log:

journalctl --user -b 0 | grep -i search-light

Keybinding

Ctrl+Super+Space (you can change it in the preferences page). Super is the Windows logo key, or Command on a Mac keyboard.

Credits