[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-6327":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":9,"language":10,"languages":9,"totalLinesOfCode":9,"stars":11,"forks":12,"watchers":13,"openIssues":14,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":16,"stars7d":17,"stars30d":18,"stars90d":15,"forks30d":15,"starsTrendScore":17,"compositeScore":19,"rankGlobal":9,"rankLanguage":9,"license":20,"archived":21,"fork":21,"defaultBranch":22,"hasWiki":23,"hasPages":21,"topics":24,"createdAt":9,"pushedAt":9,"updatedAt":25,"readmeContent":26,"aiSummary":27,"trendingCount":15,"starSnapshotCount":15,"syncStatus":16,"lastSyncTime":28,"discoverSource":29},6327,"skhd","asmvik\u002Fskhd","asmvik"," Simple hotkey daemon for macOS",null,"C",7999,243,40,137,0,2,9,51,38.16,"MIT License",false,"master",true,[],"2026-06-12 02:01:18","> **NOTE**: If you are having issues with skhd, or are looking for feature expansion and future development,  \nyou may want to check out [this backwards compatible skhd-port](https:\u002F\u002Fgithub.com\u002Fjackielii\u002Fskhd.zig) written in Zig by [Jackie Li](https:\u002F\u002Fgithub.com\u002Fjackielii).  \n(I am not personally involved in this re-write.)\n\n**This repository is in maintenance mode; only critical issues that affect the core functionality of the software will be taken care of.** \n\n**skhd** is a simple hotkey daemon for macOS that focuses on responsiveness and performance.\nHotkeys are defined in a text file through a simple DSL. **skhd** is able to hotload its config file, meaning that hotkeys can be edited and updated live while **skhd** is running.\n\n**skhd** uses a pid-file to make sure that only one instance is running at any moment in time. This also allows for the ability to trigger\na manual reload of the config file by invoking `skhd --reload` at any time while an instance of **skhd** is running. The pid-file is saved\nas `\u002Ftmp\u002Fskhd_$USER.pid` and so the user that is running **skhd** must have write permission to said path.\nWhen running as a service (through launchd) log files can be found at `\u002Ftmp\u002Fskhd_$USER.out.log` and `\u002Ftmp\u002Fskhd_$USER.err.log`.\n\nlist of features\n\n| feature                    | skhd |\n|:--------------------------:|:----:|\n| hotload config file        | [x]  |\n| hotkey passthrough         | [x]  |\n| modal hotkey-system        | [x]  |\n| application specific hotkey| [x]  |\n| blacklist applications     | [x]  |\n| use media-keys as hotkey   | [x]  |\n| synthesize a key-press     | [x]  |\n\n### Install\n\nThe first time **skhd** is ran, it will request access to the accessibility API.\n\nAfter access has been granted, the application must be restarted.\n\n*Secure Keyboard Entry* must be disabled for **skhd** to receive key-events.\n\n**Homebrew**:\n\nRequires xcode-8 command-line tools.\n\n      brew install asmvik\u002Fformulae\u002Fskhd\n      skhd --start-service\n\n**Source**:\n\nRequires xcode-8 command-line tools.\n\n      git clone https:\u002F\u002Fgithub.com\u002Fasmvik\u002Fskhd\n      make install      # release version\n      make              # debug version\n\n### Usage\n\n```\n--install-service: Install launchd service file into ~\u002FLibrary\u002FLaunchAgents\u002Fcom.asmvik.skhd.plist\n    skhd --install-service\n\n--uninstall-service: Remove launchd service file ~\u002FLibrary\u002FLaunchAgents\u002Fcom.asmvik.skhd.plist\n    skhd --uninstall-service\n\n--start-service: Run skhd as a service through launchd\n    skhd --start-service\n\n--restart-service: Restart skhd service\n    skhd --restart-service\n\n--stop-service: Stop skhd service from running\n    skhd --stop-service\n\n-V | --verbose: Output debug information\n    skhd -V\n\n-P | --profile: Output profiling information\n    skhd -P\n\n-v | --version: Print version number to stdout\n    skhd -v\n\n-c | --config: Specify location of config file\n    skhd -c ~\u002F.skhdrc\n\n-o | --observe: Output keycode and modifiers of event. Ctrl+C to quit\n    skhd -o\n\n-r | --reload: Signal a running instance of skhd to reload its config file\n    skhd -r\n\n-h | --no-hotload: Disable system for hotloading config file\n    skhd -h\n\n-k | --key: Synthesize a keypress (same syntax as when defining a hotkey)\n    skhd -k \"shift + alt - 7\"\n\n-t | --text: Synthesize a line of text\n    skhd -t \"hello, worldシ\"\n```\n\n### Configuration\n\nThe default configuration file is located at one of the following places (in order):\n\n - `$XDG_CONFIG_HOME\u002Fskhd\u002Fskhdrc`\n - `$HOME\u002F.config\u002Fskhd\u002Fskhdrc`\n - `$HOME\u002F.skhdrc`\n\nA different location can be specified with the *--config | -c* argument.\n\nA sample config is available [here](https:\u002F\u002Fgithub.com\u002Fasmvik\u002Fskhd\u002Fblob\u002Fmaster\u002Fexamples\u002Fskhdrc)\n\nA list of all built-in modifier and literal keywords can be found [here](https:\u002F\u002Fgithub.com\u002Fasmvik\u002Fskhd\u002Fissues\u002F1)\n\nA hotkey is written according to the following rules:\n```\nhotkey       = \u003Cmode> '\u003C' \u003Caction> | \u003Caction>\n\nmode         = 'name of mode' | \u003Cmode> ',' \u003Cmode>\n\naction       = \u003Ckeysym> '[' \u003Cproc_map_lst> ']' | \u003Ckeysym> '->' '[' \u003Cproc_map_lst> ']'\n               \u003Ckeysym> ':' \u003Ccommand>          | \u003Ckeysym> '->' ':' \u003Ccommand>\n               \u003Ckeysym> ';' \u003Cmode>             | \u003Ckeysym> '->' ';' \u003Cmode>\n\nkeysym       = \u003Cmod> '-' \u003Ckey> | \u003Ckey>\n\nmod          = 'modifier keyword' | \u003Cmod> '+' \u003Cmod>\n\nkey          = \u003Cliteral> | \u003Ckeycode>\n\nliteral      = 'single letter or built-in keyword'\n\nkeycode      = 'apple keyboard kVK_\u003CKey> values (0x3C)'\n\nproc_map_lst = * \u003Cproc_map>\n\nproc_map     = \u003Cstring> ':' \u003Ccommand> | \u003Cstring>     '~' |\n               '*'      ':' \u003Ccommand> | '*'          '~'\n\nstring       = '\"' 'sequence of characters' '\"'\n\ncommand      = command is executed through '$SHELL -c' and\n               follows valid shell syntax. if the $SHELL environment\n               variable is not set, it will default to '\u002Fbin\u002Fbash'.\n               when bash is used, the ';' delimeter can be specified\n               to chain commands.\n\n               to allow a command to extend into multiple lines,\n               prepend '\\' at the end of the previous line.\n\n               an EOL character signifies the end of the bind.\n\n->           = keypress is not consumed by skhd\n\n*            = matches every application not specified in \u003Cproc_map_lst>\n\n~            = application is unbound and keypress is forwarded per usual, when specified in a \u003Cproc_map>\n```\n\nA mode is declared according to the following rules:\n```\n\nmode_decl = '::' \u003Cname> '@' ':' \u003Ccommand> | '::' \u003Cname> ':' \u003Ccommand> |\n            '::' \u003Cname> '@'               | '::' \u003Cname>\n\nname      = desired name for this mode,\n\n@         = capture keypresses regardless of being bound to an action\n\ncommand  = command is executed through '$SHELL -c' and\n           follows valid shell syntax. if the $SHELL environment\n           variable is not set, it will default to '\u002Fbin\u002Fbash'.\n           when bash is used, the ';' delimeter can be specified\n           to chain commands.\n\n           to allow a command to extend into multiple lines,\n           prepend '\\' at the end of the previous line.\n\n           an EOL character signifies the end of the bind.\n```\n\nGeneral options that configure the behaviour of **skhd**:\n```\n# specify a file that should be included as an additional config-file.\n# treated as an absolutepath if the filename begins with '\u002F' otherwise\n# the file is relative to the path of the config-file it was loaded from.\n\n.load \"\u002FUsers\u002FKoe\u002F.config\u002Fpartial_skhdrc\"\n.load \"partial_skhdrc\"\n\n# prevents skhd from monitoring events for listed processes.\n\n.blacklist [\n    \"terminal\"\n    \"qutebrowser\"\n    \"kitty\"\n    \"google chrome\"\n]\n```\n","skhd 是一个专为 macOS 设计的简单热键守护进程，注重响应速度和性能。它允许用户通过简单的领域特定语言（DSL）在文本文件中定义热键，并支持配置文件的热加载，这意味着可以在运行时实时编辑和更新热键设置。此外，skhd 采用 pid 文件机制确保同一时间只有一个实例运行，并提供了手动重载配置文件的功能。它还具备如热键穿透、模态热键系统、应用程序特定热键等高级功能。适合需要高效自定义键盘快捷方式以提高生产力或实现自动化任务的 macOS 用户使用。","2026-06-11 03:06:29","top_language"]