Sherlock is a lightweight and efficient application launcher built with Rust and GTK4. It allows you to quickly launch your favorite applications with a user-friendly interface, providing a fast and highly-configurable way to search, launch, and track application usage.
- Documentation: Sherlock's documentation
- CONTRIBUTING.md: Please read this before submitting a PR.
- sherlock-wiki: allows you to
search Wikipedia from within Sherlock using the
bulk_text
launcher. - sherlock-confetti: A shader-based animation covering your entire screen.
- sherlock-dict: lookup word definitions from within Sherlock.
- sherlock-clipboard: A
way for you to display cliphist history in sherlock
π¨ Warning: This app is/was created on Arch Linux with the Hyprland tiling window manager in mind. It may cause errors or won't function at all on other system configurations.
- Fully customize the look and feel of the launcher.
- Modify themes and visual elements to match your preferences
- Define your own commands and extend the functionality of the launcher.
- Add new features or workflows tailored to your specific needs.
- Configure fallback behaviours for various commands and operations.
- Ensure a smooth experience even when certain commands fail or are unavailable
- Assign aliases to your applications for better looks and quicker access.
- Assign custom icons to your applications for a personalized touch.
- Hide apps that you don't use and don't want to clutter up your launcher.
- Use the async widget to send API requests and display their responses directly in the launcher.
- Great for integrating live data or external tools into your workflow.
- Show your currently playing song or video
- Use the Teams Event Launcher to easily join upcoming Microsoft Teams meetings
- Type the launcher alias and space bar to only search within a specific category of commands.
- Categories are fully configurable, allowing you to customize search scopes.
- Use the category launcher to show a group for additional subcommands
- Start Sherlock with the
--sub-menu
flag to only search within a category.
- Use
modkey + number
shortcuts to quickly launch a command or app without having to scroll. - Configure custom key binds for navigation
- A customizable context menu for additional application/launcher actions. For example opening a private browser window
- Extend or overwrite existing actions from your
sherlock_alias.json
file or create custom ones for your commands
- Show the weather in your specified location
To run the Sherlock Launcher, ensure the following dependencies are installed:
gtk4
- Gtk4 Documentationgtk-4-layer-shell
- Gtk4 Layer Shelldbus
- (Used to get currently playing song)openssl
- (Used for retrieving Spotify album art)libssl-dev
libsqlite3-dev
Additionally, if you're building from source, you will need:
rust
- How to install rustgit
- How to install git
If you're using Arch Linux, you can install the pre-built binary package with the following command:
yay -S sherlock-launcher-bin
Or install the community-maintained git build with the following command:
yay -S sherlock-launcher-git
To build Sherlock Launcher from source, follow these steps.
Make sure you have the necessary dependencies installed:
rust
- How to install rustgit
- How to install gitgtk4
- Gtk4 Documentationgtk-4-layer-shell
- Gtk4 Layer Shelldbus
- (Used to get currently playing song)libsqlite3-dev
librsvg
gdk-pixbuf2
-
Clone the repository:
git clone https://github.com/skxxtz/sherlock.git cd sherlock
-
Install necessary Rust dependencies:
Build the project using the following command:
cargo build --release
-
Install the binary:
After the build completes, install the binary to your system:
sudo cp target/release/sherlock /usr/local/bin/
-
(Optional) Remove the build directory:
You can optionally remove the source code directory.
rm -rf /path/to/sherlock
To build a .deb
package directly from the source, follow these steps:
Make sure you have the following dependencies installed:
rust
- How to install rustgit
- How to install gitgtk4
- Gtk4 Documentationgtk-4-layer-shell
- Gtk4 Layer Shell
-
Install the
cargo-deb
tool:First, you need to install the
cargo-deb
tool, which simplifies packaging Rust projects as Debian packages:cargo install cargo-deb
-
Build the Debian package:
After installing
cargo-deb
, run the following command to build the.deb
package:cargo deb
This will create a
.deb
package in thetarget/debian
directory. -
Install the generated
.deb
package:Once the package is built, you can install it using:
sudo dpkg -i target/debian/sherlock-launcher_*_amd64.deb
You can use tab-completion to auto complete the exact file name.
Sherlock is available in nixpkgs/unstable
as sherlock-launcher
. If you're installing it as a standalone package you'll need to do the config setup yourself.
A module for Sherlock is available in home manager. You can find it's configuration here. If you want to use the latest updates and module options, follow the steps below.
Home-Manager Example Configuration
Add the following your inputs
of flake.nix
if you want to use the latest upstream version of sherlock.
sherlock = {
url = "github:Skxxtz/sherlock";
inputs.nixpkgs.follows = "nixpkgs";
};
Home-Manager config:
programs.sherlock = {
enable = true;
# to run sherlock as a daemon
systemd.enable = true;
# If wanted, you can use this line for the _latest_ package. / Otherwise, you're relying on nixpkgs to update it frequently enough.
# For this to work, make sure to add sherlock as a flake input!
# package = inputs.sherlock.packages.${pkgs.system}.default;
# config.toml
settings = {};
# sherlock_alias.json
aliases = {
vesktop = { name = "Discord"; };
};
# sherlockignore
ignore = ''
Avahi*
'';
# fallback.json
launchers = [
{
name = "Calculator";
type = "calculation";
args = {
capabilities = [
"calc.math"
"calc.units"
];
};
priority = 1;
}
{
name = "App Launcher";
type = "app_launcher";
args = {};
priority = 2;
home = "Home";
}
];
# main.css
style = /* css */ ''
* {
font-family: sans-serif;
}
'';
};
To install the standalone package, add sherlock.packages.${pkgs.system}.default
to environment.systemPackages
/home.packages
. You will need to create the configuration files yourself, see below.
After the installation is completed, you can set up your configuration files. The location for them is ~/.config/sherlock/
. Depending on your needs, you should add the following files:
- config.toml: This file specifies the behavior and defaults of your launcher. Documentation here.
- fallback.json: This file specifies the features your launcher should have. Documentation here.
- sherlock_alias.json: This file specifies aliases for applications. Documentation here.
- sherlockignore: This file specifies which applications to exclude from your search. Documentation here.
- main.css: This file contains your custom styling for Sherlock.
As of version 0.1.11
, Sherlock comes with the init
subcommand to automatically create your config. It will create versions of the files above, populated with the default values. Additionally, it will create the icons/
, scripts/
, and themes/
subdirectories. All you have to do is run the following command:
sherlock init
If you're getting warnings after startup, you can press return
to access the main application. Alternatively, you can set the try_suppress_warnings
key in the config file to true. This will prevent any warnings to be shown. The same thing can be done for errors. However, if you suppress errors, the application might not work as expected.
To launch Sherlock, you can either type sherlock
into the command line or bind it to a key. The latter is recommended.
The setup steps vary by display manager. The setup for Hyprland is outlined here:
- (Recommended) Bind the
$menu
variable to Sherlock:
$menu = sherlock
- Bind a key to execute
$menu
bind = $mainMod, space, exec, $menu