首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用slate窗口管理器启动或聚焦应用程序?

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

Stack Overflow用户
提问于 2014-11-18 01:19:04
回答 1查看 676关注 0票数 2

我最近开始在Mac上使用slate window manager。我之前在Quicksilver中使用过触发器来启动或聚焦于特定的应用程序。

也就是说,如果cmd+f2没有运行,它将启动"Google Chrome“,或者如果它已经运行,则只会将焦点放在"Google Chrome”上。

有没有简单/惯用的方法来达到与Slate相同的效果?

我的.slate.js包含

代码语言:javascript
复制
"f2:cmd": S.op("focus", {"app": "Google Chrome"}),
"f4:cmd": S.op("focus", {"app": "Jump Desktop"}),

我可以把它改成这样:

代码语言:javascript
复制
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);
        }
    }
}

代码语言:javascript
复制
"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();
},

但这似乎有很多麻烦。

我是不是要求slate做得太多了,或者我只是错过了一种更明显的方式来实现我想要的?

EN

回答 1

Stack Overflow用户

发布于 2015-03-04 22:07:50

我不能完全确定,你的例子有什么问题,但在这个例子中,如果应用程序没有运行,Slate就会启动它们。也许你必须声明slate.shell方法的所有参数。

代码语言:javascript
复制
slate.config("orderScreensLeftToRight", true);
 
// Create Operations
var pushRight2_3 = slate.operation("push", {
  "direction" : "right",
  "style" : "bar-resize:3*screenSizeX/5"
});
var pushLeft1_3 = slate.operation("push", {
  "direction" : "left",
  "style" : "bar-resize:2*screenSizeX/5"
});
 
var devLayout = slate.layout("devLayout", {
  "iTerm" : {
    "operations" : [pushLeft1_3],
    "repeat" : true
  },
  "Sublime Text" : {
    "operations" :[pushRight2_3],
    "repeat" : true
  }
});
 
slate.bind("1:cmd;ctrl", function() { setDev(); });

slate.default(["1440*900"], devLayout);
 
var runIfMap  = {
    "iTerm": "/opt/homebrew-cask/Caskroom/iterm2/2.0/iTerm.app",
    "Sublime Text": "/Applications/Sublime Text.app"
};
 
function runIf(name) {
    var running = false;
    slate.eachApp(function (app) {
        if (app.name() == name) {
            running = true;
        }
    });
    if (!running) {
      slate.shell("/usr/bin/open " + '"' + runIfMap[name] + '"', true, "~/");
    }
}
 
function setDev() {
  runIf("iTerm");
  runIf("Sublime Text");
  var op = slate.operation("layout", { "name" : devLayout });
  op.run();
}

重点应该放在最后启动的应用程序上。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26978200

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档