-
Notifications
You must be signed in to change notification settings - Fork 34
Setup
To run the Sherlock Launcher, ensure the following dependencies are installed:
-
gtk4- Gtk4 Documentation -
gtk-4-layer-shell- Gtk4 Layer Shell -
dbus- (Used to get currently playing song) -
openssl- (Used for retrieving Spotify album art) libssl-devlibsqlite3-dev
Additionally, if you're building from source, you will need:
-
rust- How to install rust -
git- 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-binTo build Sherlock Launcher from source, follow these steps.
Make sure you have the necessary dependencies installed:
-
rust- How to install rust -
git- How to install git -
gtk4- Gtk4 Documentation -
gtk-4-layer-shell- Gtk4 Layer Shell -
dbus- (Used to get currently playing song) -
openssl- (Used for retrieving Spotify album art) libssl-devlibsqlite3-dev
-
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/bin/
To build a .deb package directly from the source, follow these steps:
Make sure you have the following dependencies installed:
-
rust- How to install rust -
git- How to install git -
gtk4- Gtk4 Documentation -
gtk-4-layer-shell- Gtk4 Layer Shell
-
Install the
cargo-debtool:First, you need to install the
cargo-debtool, 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.debpackage:cargo deb
This will create a
.debpackage in thetarget/debiandirectory. -
Install the generated
.debpackage:Once the package is built, you can install it using:
sudo dpkg -i target/debian/sherlock-launcher_0.1.10_amd64.deb
(Make sure to replace the filename if the version number is different.)
Add sherlock.url = "github:Skxxtz/sherlock"; to the inputs of flake.nix. Sherlock can be installed either as a standalone package; or managed with home-manager, which both installs and generates configuration files.
To install the standalone package, add sherlock.packages.${pkgs.system}.default to environment.systemPackages. You will need to create the configuration files yourself, see below.
For home-manager enabled systems, use the sherlock.homeManagerModules.default output of the imported flake. An example can be found here.
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
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 initIf 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
$menuvariable to Sherlock:
$menu = sherlock- Bind a key to execute
$menu
bind = $mainMod, space, exec, $menu