{"id":17465516,"url":"https://github.com/sylvanfranklin/srhd","last_synced_at":"2025-04-16T03:46:10.554Z","repository":{"id":257931694,"uuid":"869698082","full_name":"SylvanFranklin/srhd","owner":"SylvanFranklin","description":"Simple Rust Hotkey Daemon for macOS","archived":false,"fork":false,"pushed_at":"2025-04-12T03:05:07.000Z","size":86,"stargazers_count":42,"open_issues_count":5,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-04-12T04:22:21.379Z","etag":null,"topics":["application-launcher","config","daemon","hotkeys","launcher","mac","macos","rust","service"],"latest_commit_sha":null,"homepage":"https://crates.io/crates/srhd","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/SylvanFranklin.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2024-10-08T18:23:42.000Z","updated_at":"2025-04-12T03:05:10.000Z","dependencies_parsed_at":"2024-10-24T18:39:12.383Z","dependency_job_id":"cc4419b1-64ac-44c7-a7d9-b30b1284b4d6","html_url":"https://github.com/SylvanFranklin/srhd","commit_stats":{"total_commits":63,"total_committers":16,"mean_commits":3.9375,"dds":0.6349206349206349,"last_synced_commit":"a6b220d03a617ada0606362454e878f91c6e304e"},"previous_names":["sylvanfranklin/srhd"],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SylvanFranklin%2Fsrhd","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SylvanFranklin%2Fsrhd/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SylvanFranklin%2Fsrhd/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SylvanFranklin%2Fsrhd/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SylvanFranklin","download_url":"https://codeload.github.com/SylvanFranklin/srhd/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249192274,"owners_count":21227755,"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":["application-launcher","config","daemon","hotkeys","launcher","mac","macos","rust","service"],"created_at":"2024-10-18T12:05:51.103Z","updated_at":"2025-04-16T03:46:10.548Z","avatar_url":"https://github.com/SylvanFranklin.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# SRHD\n**S**imple **R**ust **H**otkey **D**aemon is a minimal and lightweight key\nbinding service for MacOS similar to **skhd**. It can be run as in the\nbackground using the native `launchctl` to interact with `launchd` via a plist\nfile. This functionality has been offloaded to my [launchctl](https://github.com/sylvanfranklin/launchctl) Rust library. \n\n\u003e [!WARNING]\n\u003e **WHY??** We have skhd, hammerspoon, aerospace, why use srhd? I don't claim\n\u003e this idea as original, nor do I claim that this project is in any way better\n\u003e than the others. The one up is that you can install it with cargo and it\n\u003e feels Rusty with the toml file, but that's about it. \n\n## Installation \nThe first time **srhd** starts it will request access to input monitoring.\nAfter being granted access you must restart the service for the change to take\neffect. __Secure Keyboard Entry__ must be disabled in whatever terminal\nemulator **srhd** is started from. In some cases if you update **srhd** or the\nterminal emulator that is is started from, you may have to reset the\npermissions in system settings. You may also have to give your terminal emulator full disk ascess for some reason, I swear I'm not scamming you though, look through the code yourself.\n\n\n**Homebrew**\n```sh\nbrew tap sylvanfranklin/srhd \nbrew install srhd\nsrhd start\n```\n\n**Cargo**\nRequires cargo and rust.    \n```sh\ncargo install srhd\nsrhd start\n```\n\n**Source** \nRequires Cargo and Rust.    \n```sh\ngit clone https://github.com/SylvanFranklin/srhd\ncd srhd \ncargo build --release \ntarget/release/srhd\n```\n\n## Usage\n```\nsrhd [COMMAND]\n\nCommands:\n  start    Start launchctl login service via launchctl\n  stop     Stop launchctl login service via launchctl\n  restart  Restart launchctl login service via launchctl\n  debug    Prints out info about the keybindings as they are pressed\n  config   Prints path to the config file. Run `help config` for config options\n  help     Print this message or the help of the given subcommand(s)\n```\n\n## Configuration\n\nFor now config is stored at, other options to be added in the future.\n- `$HOME/.config/srhd/srhd.toml`\n\nAn empty config file will be created automatically the first time **srhd** is\nstarted.\n\n**Example Config:** \n```toml\n# srhd.toml\n[[bindings]]\nkey = \"a\"\ncommand = \"open /Applications/Firefox.app\" # or any arbitrary shell script\nmods = [\"command\", \"option\", \"shift\"]\n\n[[bindings]]\nkey = \"equals\"\ncommand = \"echo 'hello from srhd'\"\nmods = [\"control\", \"fn\", \"capslock\"]\n```\n**Keys**\nBelow are some common keys that you may want to use in your config. The best\nway to find out the code for a key is to run `srhd debug` and press the key in\nquestion.\n\n```\nminus,\nequal,\nleftbracket,\nrightbracket,\nsemicolon,\nquote,\nbackslash,\ncomma,\ndot,\nslash,\ninsert\n```\n\n\u003e [!WARNING]  \n\u003e **SRHD** is still in active development, and is lacking certain features like\n\u003e hot config reloading and comprehensive error messages. I'm working on rolling\n\u003e those out ASAP. There is also currently a bug where if permission are removed\n\u003e while srhd is running as a service the keyboard and mouse will become\n\u003e unresponsive, and a restart is required. \n\n## Debugging\nstdout and stderr can be found at `/tmp/$USER_srhd.out.log` and\n`/tmp/$USER_srhd.err.log` respectively. Running `srhd debug` can help resolve\nissues with keys not matching up in the way that you expect. Most issues with\nsrhd not working are related to permissions and may sometimes require removing\nand re-adding srhd from accessibility permissions.\n\n## Contribution\nContribution is greatly appreciated feel free!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsylvanfranklin%2Fsrhd","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsylvanfranklin%2Fsrhd","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsylvanfranklin%2Fsrhd/lists"}