feat: 添加打开页URL面的功能

This commit is contained in:
tanpengsccd 2024-02-27 10:03:11 +08:00
parent 768e9ad516
commit b83574c3e0
2 changed files with 78 additions and 18 deletions

40
jxa/openInChrome.jxa Normal file
View File

@ -0,0 +1,40 @@
var args = $.NSProcessInfo.processInfo.arguments;
var argv = [];
var argc = args.count;
for (var i = 4; i < argc; i++) {
argv.push(ObjC.unwrap(args.objectAtIndex(i)));
}
var inputUrl = argv[0];
var Chrome = Application('Google Chrome');
var windows = Chrome.windows();
var foundTab = false;
// 遍历所有窗口和标签页
for (var i = 0; i < windows.length; i++) {
var window = windows[i];
var tabs = window.tabs();
for (var j = 0; j < tabs.length; j++) {
var tab = tabs[j];
if (tab.url().startsWith(inputUrl)) {
// 激活包含URL的窗口
Chrome.activate();
window.index = i + 1; // 窗口索引是从1开始的
// 激活对应的标签页
window.activeTabIndex = j + 1; // 标签索引也是从1开始的
foundTab = true;
break;
}
}
if (foundTab) {
break;
}
}
// 如果没有找到匹配的标签页打开新窗口并导航到URL
if (!foundTab) {
var newWindow = Chrome.Window().make();
var newTab = newWindow.tabs[0];
newTab.url = inputUrl;
Chrome.activate();
}

View File

@ -4,43 +4,63 @@
local KEY_APP_PAIRS = {
[5] = "QSpace Pro.app",
Q = "QQ.app",W = "WeChat.app",E = "Microsoft Edge.app",T = "iTerm.app",Y = "语雀.app",U = "Notion.app",I = "IINA.app",O = "Obsidian.app", P = "Clash Verge.app",
A = "ILink.app",S = "WebStorm.app",F = "Finder.app",G = "ChatGPT.app",H = "HBuilderX.app",K = "Spotify", L = "NeteaseMusic.app",
Z = "QSpace Pro.app",X = "Xcode.app",C = "Google Chrome.app",V = "Visual Studio Code.app",B = "wechatwebdevtools.app",N = "/System/Applications/Notes.app",M = "Telegram.app",
Q = "QQ.app",W = "WeChat.app",E = "Microsoft Edge.app",T = "iTerm.app",I = "IINA.app",O = "Obsidian.app", P = "/Users/tanpengsccd/Applications/JetBrains Toolbox/PyCharm Professional Edition.app",
A = "ILink.app", S = "Surge.app",F = "/System/Volumes/Data/Applications/Apifox.app" ,G = "https://ai.h6.work",K = "Spotify.app", L = "NeteaseMusic.app",
Z = "QSpace Pro.app",X = "Xcode.app",C = "Google Chrome.app",V = "Visual Studio Code.app",B="iTerm.app",N = "Notes.app",M = "Telegram.app", -- B = "wechatwebdevtools.app"*/
-- [2] = "Notable.app",
-- [3] = "Typora.app",
}
-- 修饰键 这里设置为 f19
local MOFIFER_KEY = f19
-- local MOFIFER_KEY = "alt"
-- 显示 Finder:
-- hs.hotkey.bind(MOFIFER_KEY, "1", function()
-- hs.application.open("/System/Library/CoreServices/Finder.app")
-- hs.application.get("com.apple.finder"):setFrontmost(true)
-- end)
hs.hotkey.bind(MOFIFER_KEY, "1", function()
hs.application.open("/System/Library/CoreServices/Finder.app")
hs.application.get("com.apple.finder"):setFrontmost(true)
end)
-- 重新加载配置
-- 重新加载配置
hs.hotkey.bind(f19, "R", function()
hs.reload()
end)
--------------------------------------------------------------------------------------
-- 按下 "F19+键" 会打开或激活对应的应用,如果应用不是绝对路径,则指的是 /Applications 中的应用 --
--------------------------------------------------------------------------------------
function bindAppWithHotkey(keyAppPairs)
-- 另一种方式
function bindAppWithHotkey(keyAppPairs,modifierKey)
-- hs.alert.show("modifierKey,key: " .. modifierKey .. "," .. keyAppPairs ..)
-- 确保MODIFIER_KEY已经被传递进来或在这里定义例如MODIFIER_KEY = {"cmd", "alt"}
for key, app in pairs(keyAppPairs) do
hs.hotkey.bind(MOFIFER_KEY, key .. "", function()
-- hs.application.open(app) -- 这种方式必须要app 路径
hs.alert.show(app)
hs.application.launchOrFocus(app) -- 这种可以只传入app name,也可以传入路径
hs.hotkey.bind(modifierKey, key, function()
-- 如果是以http前缀的就是网址,需要使用 Chrome 打开
if string.find(app, "^http") then -- 使用'^http'来确保字符串以http开始
hs.alert.show("URL: " .. app)
local url = app
local scriptPath = os.getenv("HOME") .. "/.hammerspoon/jxa/openInChrome.jxa" -- 使用环境变量获取用户目录
local command = "osascript -l JavaScript " .. scriptPath .. " '" .. url .. "'"
hs.execute(command)
return
else -- 检查字符串是否以.app结束
hs.alert.show("Launching: " .. app)
hs.application.launchOrFocus(app) -- 这种可以只传入app name,也可以传入路径
return
end
end)
end
end
bindAppWithHotkey(KEY_APP_PAIRS)
bindAppWithHotkey(KEY_APP_PAIRS,MOFIFER_KEY)
-- hs.hotkey.bind(MOFIFER_KEY, "G", function()
-- local url = "https://ai.h6.work" -- 无法打开 https
-- -- hs.alert.show(url)
-- local scriptPath = "~/.hammerspoon/jxa/openInChrome.jxa" -- 替换为你的JXA脚本实际路径
-- local command = "osascript -l JavaScript " .. scriptPath .. " '" .. url .. "'"
-- hs.execute(command)
-- -- hs.alert.show(command)
-- -- hs.alert.show("Script executed")
-- end)