{"record":{"id":"aaface9d9ec6fb22","repo":"LGUG2Z/komorebi","slug":"could-not-find-whkd-please-make-sure-it-is-instal","errorCode":null,"errorMessage":"could not find whkd, please make sure it is installed before using the --whkd flag","messagePattern":"could not find whkd, please make sure it is installed before using the --whkd flag","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"komorebic/src/main.rs","lineNumber":2374,"sourceCode":"            ))?;\n        }\n        SubCommand::Start(args) => {\n            if args.ahk {\n                println!(\n                    \"EOL: The --ahk flag is now end-of-life and will not receive any further updates or bug fixes\"\n                );\n            }\n\n            let mut ahk: String = String::from(\"autohotkey.exe\");\n\n            if let Ok(komorebi_ahk_exe) = std::env::var(\"KOMOREBI_AHK_EXE\")\n                && which(&komorebi_ahk_exe).is_ok()\n            {\n                ahk = komorebi_ahk_exe;\n            }\n\n            if args.whkd && which(\"whkd\").is_err() {\n                bail!(\n                    \"could not find whkd, please make sure it is installed before using the --whkd flag\"\n                );\n            }\n\n            if args.masir && which(\"masir\").is_err() {\n                bail!(\n                    \"could not find masir, please make sure it is installed before using the --masir flag\"\n                );\n            }\n\n            if args.ahk && which(&ahk).is_err() {\n                bail!(\n                    \"could not find autohotkey, please make sure it is installed before using the --ahk flag\"\n                );\n            }\n\n            let mut buf: PathBuf;\n","sourceCodeStart":2356,"sourceCodeEnd":2392,"githubUrl":"https://github.com/LGUG2Z/komorebi/blob/e0709f02bfae4e503bf4640f58ee75ecbbfdbb97/komorebic/src/main.rs#L2356-L2392","documentation":"komorebic (komorebi's CLI companion) checks that the external hotkey daemon whkd is on PATH when the --whkd flag is passed, using the `which` crate. If whkd cannot be found, it bails with a message telling the user to install whkd first. This is a startup-time dependency check, not a runtime failure.","triggerScenarios":"Running komorebic start --whkd when whkd is not installed or not on the PATH environment variable; misspelled or incomplete installation of whkd.","commonSituations":"Fresh komorebi installs where whkd (a separate project) was never installed; whkd installed via scoop/cargo into a directory not on PATH; running komorebic from an environment with a different PATH (e.g. service or IDE terminal).","solutions":["Install whkd (e.g. `scoop install whkd` or `cargo install whkd`)","Verify with `which whkd` / `whkd --version` that it resolves on PATH","Add whkd's install directory to your PATH environment variable, then restart the shell","Drop the --whkd flag if you manage hotkeys with AutoHotkey or another daemon instead"],"exampleFix":"# before\nkomorebic start --whkd\n# error: could not find whkd\n# after\nscoop install whkd\nkomorebic start --whkd","handlingStrategy":"validation","validationCode":"# shell pre-flight\ncommand -v whkd >/dev/null 2>&1 || { echo \"install whkd first\"; exit 1; }\nkomorebic start --whkd","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Install whkd as part of your komorebi setup script before running komorebic start --whkd","Verify PATH contains whkd's install location (scoop shims, cargo bin)","Run `which whkd` in the same shell/profile that launches komorebic","Use --whkd only when you actually rely on whkd for hotkeys; omit it otherwise"],"tags":["cli","dependency","path"],"backgroundTag":"missing-dependency","analyzedSha":"e0709f02bfae4e503bf4640f58ee75ecbbfdbb97","analyzedAt":"2026-09-06T07:08:05.107Z","contentChangedAt":"2026-09-06T07:08:05.107Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}