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