{"id":25609552,"url":"https://github.com/skxxtz/sherlock","last_synced_at":"2025-04-13T14:36:04.012Z","repository":{"id":271482893,"uuid":"913607209","full_name":"Skxxtz/sherlock","owner":"Skxxtz","description":"A versatile application/command launcher for wayland. Built with rust and gtk4","archived":false,"fork":false,"pushed_at":"2025-04-12T16:26:21.000Z","size":13419,"stargazers_count":94,"open_issues_count":1,"forks_count":10,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-12T16:41:19.159Z","etag":null,"topics":["gtk4","launcher-application","rust"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Skxxtz.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-01-08T02:31:57.000Z","updated_at":"2025-04-11T20:46:08.000Z","dependencies_parsed_at":"2025-01-08T03:26:32.964Z","dependency_job_id":"15188bd3-fe8e-4b73-ad1a-adb747669a2d","html_url":"https://github.com/Skxxtz/sherlock","commit_stats":null,"previous_names":["skxxtz/sherlock"],"tags_count":10,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Skxxtz%2Fsherlock","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Skxxtz%2Fsherlock/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Skxxtz%2Fsherlock/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Skxxtz%2Fsherlock/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Skxxtz","download_url":"https://codeload.github.com/Skxxtz/sherlock/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248729328,"owners_count":21152398,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["gtk4","launcher-application","rust"],"created_at":"2025-02-21T21:40:41.885Z","updated_at":"2025-04-13T14:36:04.006Z","avatar_url":"https://github.com/Skxxtz.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\" style=\"text-align:center;\"\u003e\n Sherlock Application Launcher for Linux\n\u003c/h1\u003e\n\n\u003cdiv align=\"center\" style=\"text-align:center;\"\u003e\n  \u003cpicture\u003e\n    \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"images/logo-dark.svg\"\u003e\n    \u003csource media=\"(prefers-color-scheme: light)\" srcset=\"images/logo-light.svg\"\u003e\n    \u003cimg alt=\"sherlock logo\" height=\"250\" src=\"images/logo-light.svg\"\u003e\n  \u003c/picture\u003e\n  \u003cpicture\u003e\n    \u003cimg alt=\"application screenshot\" width=\"100%\" src=\"images/showcase.gif\"\u003e\n  \u003c/picture\u003e\n\u003c/div\u003e\n\n\u003cbr\u003e\nSherlock 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..\n\u003cbr\u003e\n\n### Suggested packages\n\n- [sherlock-wiki](https://github.com/Skxxtz/sherlock-wiki): allows you to search Wikipedia from within Sherlock using the `bulk_text` launcher.\n\u003cbr\u003e\u003cbr\u003e\n\n\u003e **🚨 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.\n---\n## Table of Contents\n- [Features](#features)\n- [Getting Started](#getting-started)\n    - [Dependencies](#1-dependencies)\n    - [Installation](#2-installation)\n        - [Arch Linux](#arch-linux)\n        - [From Source](#from-source)\n        - [Debian](#build-debian-package)\n        - [Nix Flake](#nix-flake)\n    - [Post Installation](#3-post-installation)\n        - [Config Setup](#config-setup)\n        - [Keybind Setup](#keybind-setup)\n---\n\u003cbr\u003e\u003cbr\u003e\n\n## Features\n### 🔧 Style Customization\n- Fully customize the look and feel of the launcher.\n- Modify themes and visual elements to match your preferences\n\n### 🛠️ Custom Commands\n- Define your own commands and extend the functionality of the launcher.\n- Add new features or workflows tailored to your specific needs.\n\n### 🚀 Fallbacks\n- Configure fallback behaviours for various commands and operations.\n- Ensure a smooth experience even when certain commands fail or are unavailable.\n\n### 🖼️ Application Aliases and Customization\n- Assign aliases to your applications for better looks and quicker access.\n- Assign custom icons to your applications for a personalized touch.\n- Hide apps that you don't use and don't want to clutter up your launcher.\n\n### 🌐 Async Widget\n- Use the async widget to send API requests and display their responses directly in the launcher.\n- Great for integrating live data or external tools into your workflow.\n\n### 📅 Teams Events Launcher\n- Use the Teams Event Launcher to easily join upcoming Microsoft Teams meetings\n\n### 🔍 Category-Based Search\n- Type the launcher alias and spacebar to only search within a specific category of commands.\n- Categories are fully configurable, allowing you to customize search scopes.\n\n### ⌨️ Shortcuts\n- Use shortcuts like ctrl + 4 to quickly launch a command or app without having to scroll.\n\n---\n\u003cbr\u003e\u003cbr\u003e\n\n## Getting Started\n\n### 1. Dependencies\n\nTo run the Sherlock Launcher, ensure the following dependencies are installed:\n\n- `gtk4` - [Gtk4 Documentation](https://docs.gtk.org/gtk4/)\n- `gtk-4-layer-shell` - [Gtk4 Layer Shell](https://github.com/wmww/gtk4-layer-shell)\n- `dbus` - (Used to get currently playing song)\n- `openssl` - (Used for retrieving Spotify album art)\n\nAdditionally, if you're building from source, you will need:\n\n- `rust` - [How to install rust](https://www.rust-lang.org/tools/install)\n- `git` - [How to install git](https://github.com/git-guides/install-git)\n\u003cbr\u003e\u003cbr\u003e\n### 2. Installation\n\n#### \u003cins\u003eArch Linux\u003c/ins\u003e\n\nIf you're using Arch Linux, you can install the pre-built binary package with the following command:\n\n```bash\nyay -S sherlock-launcher-bin\n```\n\n#### \u003cins\u003eFrom Source\u003c/ins\u003e\n\nTo build Sherlock Launcher from source, follow these steps.\u003cbr\u003e\nMake sure you have the necessary dependencies installed:\n\n- `rust` - [How to install rust](https://www.rust-lang.org/tools/install)\n- `git` - [How to install git](https://github.com/git-guides/install-git)\n- `gtk4` - [Gtk4 Documentation](https://docs.gtk.org/gtk4/)\n- `gtk-4-layer-shell` - [Gtk4 Layer Shell](https://github.com/wmww/gtk4-layer-shell)\n\n1. **Clone the repository**:\n\n    ```bash\n    git clone https://github.com/skxxtz/sherlock.git\n    cd sherlock\n    ```\n\n2. **Install necessary Rust dependencies**:\n\n    Build the project using the following command:\n\n    ```bash\n    cargo build --release\n    ```\n\n3. **Install the binary**:\n\n    After the build completes, install the binary to your system:\n\n    ```bash\n    sudo cp target/release/sherlock /usr/bin/\n    ```\n\n#### \u003cins\u003eBuild Debian Package\u003c/ins\u003e\n\nTo build a `.deb` package directly from the source, follow these steps:\u003cbr\u003e\nMake sure you have the following dependencies installed:\n- `rust` - [How to install rust](https://www.rust-lang.org/tools/install)\n- `git` - [How to install git](https://github.com/git-guides/install-git)\n- `gtk4` - [Gtk4 Documentation](https://docs.gtk.org/gtk4/)\n- `gtk-4-layer-shell` - [Gtk4 Layer Shell](https://github.com/wmww/gtk4-layer-shell)\n\n1. **Install the `cargo-deb` tool**:\n\n    First, you need to install the `cargo-deb` tool, which simplifies packaging Rust projects as Debian packages:\n\n    ```bash\n    cargo install cargo-deb\n    ```\n\n2. **Build the Debian package**:\n\n    After installing `cargo-deb`, run the following command to build the `.deb` package:\n\n    ```bash\n    cargo deb\n    ```\n\n    This will create a `.deb` package in the `target/debian` directory.\n\n3. **Install the generated `.deb` package**:\n\n    Once the package is built, you can install it using:\n\n    ```bash\n    sudo dpkg -i target/debian/sherlock-launcher_0.1.8_amd64.deb\n    ```\n\n    (Make sure to replace the filename if the version number is different.)\n\u003cbr\u003e\u003cbr\u003e\n\n#### \u003cins\u003eNix Flake\u003c/ins\u003e\n\nAdd `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.\n\nTo install the standalone package, add `sherlock.packages.${pkgs.system}.default` to `environment.systemPackages`. You will need to create the configuration files yourself, see below.\n\nFor `home-manager` enabled systems, use the `sherlock.homeManagerModules.default` output of the imported flake. An example can be found [here](https://github.com/Vanta1/dots/blob/2888dd05bbba8866f77da4d6fbd9de0122ea7a2b/home/programs/sherlock.nix).\n\n### 3. Post Installation\n\n#### **Config Setup**\nAfter 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:\n\n1. [**config.toml**](https://github.com/Skxxtz/sherlock/blob/main/docs/examples/config.toml): This file specifies the behavior and defaults of your launcher. Documentation [here](https://github.com/Skxxtz/sherlock/blob/main/docs/config.md).\n2. [**fallback.json**](https://github.com/Skxxtz/sherlock/blob/main/docs/examples/fallback.json): This file specifies the features your launcher should have. Documentation [here](https://github.com/Skxxtz/sherlock/blob/main/docs/launchers.md).\n3. [**sherlock_alias.json**](https://github.com/Skxxtz/sherlock/blob/main/docs/examples/sherlock_alias.json): This file specifies aliases for applications. Documentation [here](https://github.com/Skxxtz/sherlock/blob/main/docs/aliases.md).\n4. [**sherlockignore**](https://github.com/Skxxtz/sherlock/blob/main/docs/examples/sherlockignore): This file specifies which applications to exclude from your search. Documentation [here](https://github.com/Skxxtz/sherlock/blob/main/docs/sherlockignore.md).\n\n```bash\nmkdir -p ~/.config/sherlock/\ntouch ~/.config/sherlock/config.toml ~/.config/sherlock/sherlockignore\necho [] \u003e ~/.config/sherlock/fallback.json\necho {} \u003e ~/.config/sherlock/sherlock_alias.json\n```\n\u003cbr\u003e\u003cbr\u003e\n**Alternatively**, you can use `curl -O` in the `~/.config/sherlock/` directory to load the [example configs](https://github.com/Skxxtz/sherlock/tree/main/docs/examples). This is **not good practice** and **not recommended**, especially if you don't know the source, as you could end up downloading **malware**! Nevertheless, here's how you can do that, if you prefer to be a risk-taker:\n\n\u003e **🚨 Warning:** Only use `curl` with trusted sources to avoid downloading malicious content!\n```bash\nmkdir -p ~/.config/sherlock/\ncd ~/.config/sherlock/\ncurl -O https://raw.githubusercontent.com/skxxtz/sherlock/main/docs/examples/config.toml\ncurl -O https://raw.githubusercontent.com/skxxtz/sherlock/main/docs/examples/sherlockignore\ncurl -O https://raw.githubusercontent.com/skxxtz/sherlock/main/docs/examples/fallback.json\ncurl -O https://raw.githubusercontent.com/skxxtz/sherlock/main/docs/examples/sherlock_alias.json\n```\n#### Warnings after startup\nIf 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.\n\n#### **Keybind Setup**\nTo launch Sherlock, you can either type `sherlock` into the command line or bind it to a key. The latter is recommended.\nThe setup steps vary by display manager. The setup for **Hyprland** is outlined here:\n\n1. (Recommended) Bind the `$menu` variable to Sherlock:\n```conf\n$menu = sherlock\n```\n2. Bind a key to execute `$menu`\n```conf\nbind = $mainMod, space, exec, $menu\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fskxxtz%2Fsherlock","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fskxxtz%2Fsherlock","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fskxxtz%2Fsherlock/lists"}