- JavaScript 82.1%
- Python 10.1%
- Shell 2.3%
- Makefile 1.9%
- GLSL 1.9%
- Other 1.7%
| .claude/skills/verify | ||
| .github | ||
| effects | ||
| lint | ||
| preferences | ||
| schemas | ||
| screenshots | ||
| tests | ||
| ui | ||
| .eslintrc.yml | ||
| .gitignore | ||
| CHANGELOG.md | ||
| extension.js | ||
| HACKING.md | ||
| install.sh | ||
| keybinding.js | ||
| LICENSE | ||
| Makefile | ||
| metadata.json | ||
| monitors.js | ||
| NOTES.md | ||
| prefs.js | ||
| README.md | ||
| shortcuts.js | ||
| style.js | ||
| stylesheet.css | ||
| timer.js | ||
| transpile.py | ||
SearchLightNG
A GNOME Shell extension, personal fork
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
activatemethods 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 wallpaper is generated in a race-safe way and saved in a private runtime cache instead of 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
gsettingscan 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 and 50 (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 (requires imagemagick on the system to generate the blurred image)
- 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
- icedman — the original extension (buy him a coffee)
- Blur-My-Shell for background blurring code
