Merge pull request #6939 from basecamp/fix-shell-succeeds-hyprland

Fix o.shell_succeeds() always returning false inside Hyprland
This commit is contained in:
Ryan Hughes
2026-08-15 15:02:49 -04:00
committed by GitHub
+13 -2
View File
@@ -18,9 +18,20 @@ local function file_exists(path)
return false
end
-- Hyprland reaps its own children, so os.execute() can't retrieve an exit status
-- from inside the compositor. Read a marker off stdout instead.
function o.shell_succeeds(command)
local ok, _, code = os.execute(command .. " >/dev/null 2>&1")
return ok == true or ok == 0 or code == 0
-- Subshell, so the redirection covers every command rather than binding to
-- the last one and letting an earlier one write its own OK into the pipe.
local pipe = io.popen("( " .. command .. " ) >/dev/null 2>&1 && echo OK")
if not pipe then
return false
end
local output = pipe:read("*a") or ""
pipe:close()
return output:find("OK", 1, true) ~= nil
end
function o.cmd_present(command)