yabai与ubersicht配置
效果图
中间是通过buaq.net的api获取最近的文章,并且高亮高阅读量的文章
实现过程
前段时间折腾了一下arch+i3gaps,用了一段时间发现i3是真的爽,最吸引我的地方就是可以通过快捷键把程序发送到任何工作空间中,大大提高了效率;
然后我就寻思之前在mac上配置的yabai是不是也能达到这样的效果
最后发现是可以实现的,比如这条命令就是把当前窗口移动到space 1,并且把焦点也同时切换过去。
# 发送窗口到其他空间
yabai -m window --space 1;yabai -m space --focus 1
这个实现了之后呢,因为我有4个显示器,所有有时候开的space和程序会比较多,如果想找到程序运行在哪个space的话,要么靠记忆,要么就得一个一个找,不是很方便
然后在看yabai的wiki的时候发现可以直接查询每个space下运行了那些程序
> yabai -m query --windows --space 8
[{
"id":95121,
"pid":39081,
"app":"iTerm2",
"title":"yabai -m query --windows --space 8",
"frame":{
"x":-1910.0000,
"y":40.0000,
"w":1900.0000,
"h":1010.0000
},
"level":0,
"role":"AXWindow",
"subrole":"AXStandardWindow",
"movable":1,
"resizable":1,
"display":3,
"space":8,
"visible":1,
"focused":1,
"split":"none",
"floating":0,
"sticky":0,
"minimized":0,
"topmost":0,
"opacity":1.0000,
"shadow":0,
"border":1,
"stack-index":0,
"zoom-parent":0,
"zoom-fullscreen":1,
"native-fullscreen":0
}]
这样的话就可以配合ubersicht来做一个statusbar去显示每个space中运行的程序了
run(`/usr/local/bin/yabai -m query --windows`).then(space =>{
if(space.length<10) return;
windowsList={}
space=JSON.parse(space);
for (var key in space) {
if (space.hasOwnProperty(key)) {
var element = space[key];
if(windowsList.hasOwnProperty(element.space)){
windowsList[element.space].push(element.app)
// windowsList[element.space].push(element.title)
}else{
windowsList[element.space]=[element.app]
// windowsList[element.space]=[element.title]
}
}
}
console.log(windowsList)
})
shkd配置文件
基本是按照i3的快捷键来的
alt - return : open -n /Applications/iTerm.app
# create new space
alt - n : yabai -m space --create
alt - d : yabai -m space --destroy
# fast focus desktop (切换空间焦点)
# cmd + alt - x : yabai -m space --focus recent
# cmd + alt - z : yabai -m space --focus prev
# cmd + alt - c : yabai -m space --focus next
alt - 1 : yabai -m space --focus 1
alt - 2 : yabai -m space --focus 2
alt - 3 : yabai -m space --focus 3
alt - 4 : yabai -m space --focus 4
alt - 5 : yabai -m space --focus 5
alt - 6 : yabai -m space --focus 6
alt - 7 : yabai -m space --focus 7
alt - 8 : yabai -m space --focus 8
alt - 9 : yabai -m space --focus 9
alt - 0 : yabai -m space --focus 10
# 发送窗口到其他空间
alt + shift - 1 : yabai -m window --space 1;yabai -m space --focus 1
alt + shift - 2 : yabai -m window --space 2;yabai -m space --focus 2
alt + shift - 3 : yabai -m window --space 3;yabai -m space --focus 3
alt + shift - 4 : yabai -m window --space 4;yabai -m space --focus 4
alt + shift - 5 : yabai -m window --space 5;yabai -m space --focus 5
alt + shift - 6 : yabai -m window --space 6;yabai -m space --focus 6
alt + shift - 7 : yabai -m window --space 7;yabai -m space --focus 7
alt + shift - 8 : yabai -m window --space 8;yabai -m space --focus 8
alt + shift - 9 : yabai -m window --space 9;yabai -m space --focus 9
alt + shift - 0 : yabai -m window --space 10;yabai -m space --focus 10
# 移动到不同的窗口上
alt - h : yabai -m window --focus west
alt - j : yabai -m window --focus south
alt - k : yabai -m window --focus north
alt - l : yabai -m window --focus east
# 调整窗口大小
alt + shift - h : \
yabai -m window --resize left:-20:0 ; \
yabai -m window --resize right:-20:0
alt + shift - j : \
yabai -m window --resize bottom:0:20 ; \
yabai -m window --resize top:0:20
alt + shift - k : \
yabai -m window --resize top:0:-20 ; \
yabai -m window --resize bottom:0:-20
alt + shift - l : \
yabai -m window --resize right:20:0 ; \
yabai -m window --resize left:20:0
# 平均分窗口布局
alt + shift - b : yabai -m space --balance
# 全屏当前窗口
alt - f : yabai -m window --toggle zoom-fullscreen
# 旋转布局
alt - r : yabai -m space --rotate 90
shift + alt - r : yabai -m space --rotate 270
链接
我的ubersicht的widget列表。
https://github.com/code-scan/ubersicht-widgets