V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
wellwellwell
V2EX  ›  Linux

Ubuntu 如何设置快捷键切换 App

  •  
  •   wellwellwell · 2022-06-30 03:53:37 +08:00 · 1744 次点击
    这是一个创建于 876 天前的主题,其中的信息可能已经有所发展或是发生改变。

    比如 我设置 Alt+c 切换到 chrome

    • 当 chrome 没有启动则启动它
    • 当 chrome 已经启动,但没有在最顶层窗口,则激活它到最顶层窗口
    • 当 chrome 已经启动,并且在最顶层窗口,则将它隐藏或者最小化

    其实也就 MacOS 的应用切换方式

    3 条回复    2022-07-01 11:49:35 +08:00
    cyaki
        1
    cyaki  
       2022-06-30 09:24:59 +08:00
    抛砖引玉,用了以下代码,能一定程度上解决列表中后两个问题

    application=$1

    active_window_id=`xdotool getactivewindow`

    hex_id=`xwininfo -root -tree | grep $application | head -n 1 | xargs | cut -d ' ' -f1`

    [ -z "$hex_id" ] && echo Not found hex_id && exit 2

    binary_id=`printf %i $hex_id`

    [[ $active_window_id == $binary_id ]] && xdotool windowunmap $binary_id || xdotool windowmap $binary_id && xdotool windowactivate $binary_id

    然后在使用系统快捷键调用该脚本和传参
    debuggerx
        2
    debuggerx  
       2022-06-30 10:06:37 +08:00
    基本就是利用 xdotool 和 xwininfo 就能实现这些操作。
    贴一个之前帮人写的脚本:

    以编辑器为例,执行如下命令:

    xdotool windowactivate `xwininfo -int -tree -root | grep "deepin-editor" | awk '{print $1}'` || deepin-editor
    如果已经有打开的编辑器实例,就会将其窗口唤醒,否则打开一个新的编辑器。

    原理就是先利用 xwininfo 获取给定程序名的窗口 ID ,然后尝试利用 xdotool 的 windowactivate 功能将其激活,如果激活失败则用短路与操作打开指定程序。
    huangmingyou
        3
    huangmingyou  
       2022-07-01 11:49:35 +08:00
    对 xdotool 可以做这个,但是在 fvwm 里面,fvwm 可以直接用函数做。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5760 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 06:23 · PVG 14:23 · LAX 22:23 · JFK 01:23
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.