Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos 使用slate窗口管理器启动或聚焦应用程序?_Macos - Fatal编程技术网

Macos 使用slate窗口管理器启动或聚焦应用程序?

Macos 使用slate窗口管理器启动或聚焦应用程序?,macos,Macos,我最近开始使用Mac OS的。我以前曾在中使用触发器来启动或关注特定的应用程序 也就是说,如果没有运行,cmd+f2将启动“谷歌浏览器”,如果已经运行,则只将焦点放在“谷歌浏览器” 有没有一种简单/惯用的方法可以实现与Slate相同的效果 My.slate.js包含 "f2:cmd": S.op("focus", {"app": "Google Chrome"}), "f4:cmd": S.op("focus", {"app": "Jump Desktop"}), 我可以把它改成这样: var

我最近开始使用Mac OS的。我以前曾在中使用触发器来启动或关注特定的应用程序

也就是说,如果没有运行,cmd+f2将启动“谷歌浏览器”,如果已经运行,则只将焦点放在“谷歌浏览器”

有没有一种简单/惯用的方法可以实现与Slate相同的效果

My
.slate.js
包含

"f2:cmd": S.op("focus", {"app": "Google Chrome"}),
"f4:cmd": S.op("focus", {"app": "Jump Desktop"}),
我可以把它改成这样:

var runIfMap  = {
    "Jump Desktop": "/Applications/Jump Desktop.app",
    "Google Chrome": "/Applications/Google Chrome.app"
};

function runIf(name) {
    var running = false;
    slate.eachApp(function (app) {
        if (app.name() == name) {
            running = true;
        }
    });
    if (running) {
        slate.log(name + " is running");
    } else {
        slate.log(name + " is not running");
        if (runIfMap[name]) {
            var str = "/usr/bin/open \"" + runIfMap[name] + "\"";
            slate.log("running [" + str + "]");
            slate.shell(str);
        }
    }
}

但这似乎有很多麻烦


我是要求slate做的太多了,还是我只是缺少了一种更明显的方法来实现我想要的东西?

我不完全确定,您的示例的问题是什么,但有了这一点,slate会在应用程序未运行时启动应用程序。也许您必须声明slate.shell方法的所有参数

slate.config(“orderScreensLeftToRight”,true);
//创建操作
var pushRight2_3=slate.operation(“推”{
“方向”:“正确”,
“样式”:“条大小:3*screenSizeX/5”
});
var pushLeft1_3=slate.operation(“推”{
“方向”:“左”,
“样式”:“条大小:2*screenSizeX/5”
});
var devLayout=slate.layout(“devLayout”{
“iTerm”:{
“操作”:[pushLeft1_3],
“重复”:正确
},
“崇高的文本”:{
“操作”:[pushRight2_3],
“重复”:正确
}
});
bind(“1:cmd;ctrl”,function(){setDev();});
slate.default([“1440*900”],devLayout);
var runIfMap={
“iTerm”:“/opt/homebrew-cask/Caskroom/iterm2/2.0/iTerm.app”,
“升华文本”:“/应用程序/升华文本.app”
};
函数runIf(名称){
var running=false;
slate.eachApp(函数(应用程序){
如果(app.name()==名称){
运行=真;
}
});
如果(!正在运行){
shell(“/usr/bin/open”+”+runIfMap[name]+”,true,~/”;
}
}
函数setDev(){
runIf(“iTerm”);
runIf(“崇高文本”);
var op=slate.operation(“布局”,{“名称”:devLayout});
op.run();
}
"f2:cmd": function() {
    runIf("Google Chrome");
    S.op("focus", {"app": "Google Chrome"}).run();
},

"f4:cmd": function() {
    runIf("Jump Desktop");
    S.op("focus", {"app": "Jump Desktop"}).run();
},