52 lines
2.2 KiB
Lua
52 lines
2.2 KiB
Lua
|
|
local lang = jarvis.context.language
|
|||
|
|
local triggers = {
|
|||
|
|
"переключись на", "переключи на", "активируй окно", "покажи окно", "перейди в",
|
|||
|
|
"switch to", "activate window", "focus window",
|
|||
|
|
"перемкни на", "активуй вікно",
|
|||
|
|
}
|
|||
|
|
local query = jarvis.text.strip_trigger(jarvis.context.phrase or "", triggers):lower()
|
|||
|
|
if query == "" then
|
|||
|
|
jarvis.system.notify("Switch", lang == "ru" and "Какое окно?" or "Which window?")
|
|||
|
|
jarvis.audio.play_error()
|
|||
|
|
return { chain = false }
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
local aliases = {
|
|||
|
|
["хром"] = "chrome", ["хрома"] = "chrome",
|
|||
|
|
["едж"] = "msedge", ["эдж"] = "msedge",
|
|||
|
|
["файрфокс"] = "firefox", ["фаерфокс"] = "firefox",
|
|||
|
|
["вскод"] = "code", ["vs code"] = "code",
|
|||
|
|
["дискорд"] = "discord",
|
|||
|
|
["телега"] = "telegram", ["телеграм"] = "telegram",
|
|||
|
|
["стим"] = "steam",
|
|||
|
|
["обс"] = "obs64",
|
|||
|
|
["проводник"] = "explorer",
|
|||
|
|
["блокнот"] = "notepad",
|
|||
|
|
["терминал"] = "windowsterminal",
|
|||
|
|
["спотифай"] = "spotify",
|
|||
|
|
["яндекс"] = "browser",
|
|||
|
|
["браузер"] = "browser",
|
|||
|
|
}
|
|||
|
|
local target = aliases[query] or query
|
|||
|
|
|
|||
|
|
local ps = string.format([[
|
|||
|
|
$procs = Get-Process | Where-Object { $_.MainWindowTitle -and ($_.ProcessName -like '*%s*' -or $_.MainWindowTitle -like '*%s*') } | Sort-Object -Property StartTime -Descending
|
|||
|
|
if ($procs.Count -eq 0) { Write-Output 'NOT_FOUND'; exit 0 }
|
|||
|
|
$p = $procs[0]
|
|||
|
|
$wsh = New-Object -ComObject WScript.Shell
|
|||
|
|
$null = $wsh.AppActivate($p.Id)
|
|||
|
|
Write-Output $p.MainWindowTitle
|
|||
|
|
]], target:gsub("'", ""), target:gsub("'", ""))
|
|||
|
|
|
|||
|
|
local res = jarvis.system.exec(string.format('powershell -NoProfile -Command "%s"', ps:gsub('"', '\\"')))
|
|||
|
|
local out = (res.stdout or ""):gsub("[\r\n]+$", ""):gsub("^%s+", "")
|
|||
|
|
|
|||
|
|
if out == "NOT_FOUND" or out == "" then
|
|||
|
|
jarvis.system.notify("Switch", (lang == "ru" and "Не нашёл: " or "Not found: ") .. query)
|
|||
|
|
jarvis.audio.play_not_found()
|
|||
|
|
else
|
|||
|
|
jarvis.system.notify(lang == "ru" and "Переключаюсь" or "Switching", out:sub(1, 80))
|
|||
|
|
jarvis.audio.play_ok()
|
|||
|
|
end
|
|||
|
|
return { chain = false }
|