[Share Experiences] 【V23】微信Linux 版本快捷键聚焦窗口(等同windows 的 ctrl+alt+w)
Tofloor
poster avatar
NoahLiu
deepin
2024-11-11 20:27
Author

补充脚本,可以同一个快捷键激活/最小化窗体,脚本依赖 nodejs 我还不会 shell, 各位大佬见谅

let { exec } = require('child_process');
const { promisify } = require("util");
exec = promisify(exec);

async function run (cmdstr) {
  let { stdout } = await exec(cmdstr);
  let results = stdout.split('\n').filter(item => !!item);
  if (results.length === 0) {
    return null;
  } else if (results.length === 1) {
    return results[0];
  } else {
    return results;
  }
}

async function searchWindow (keyword) {
  return await run(`xdotool search -name "${keyword}"`);
}

async function activateWindow (id) {
  await run(`xdotool windowactivate ${id}`);
}
async function deactivateWindow (id) {
  await run(`xdotool windowminimize ${id}`);
}

async function getActivateWindow () {
  return await run(`xdotool getactivewindow`);
}
async function main () {
  let keyword = process.argv[2];
  if (keyword) {
    let activeId = await getActivateWindow();
    let ids = await searchWindow(keyword);
    if (Array.isArray(ids)) {
      ids.forEach(async (id) => {
        if (activeId === id) {
          await deactivateWindow(id);
        } else {
          await activateWindow(id);
        }
      });
    } else {
      if (activeId === ids) {
        await deactivateWindow(ids);
      } else {
        await activateWindow(ids);
      }
    }
  }
}

main();

假设你的node 有一个 全局的快捷连接 在 /usr/bin/node 这个位置,上面的js 文件在 /home/user/window.js

/usr/bin/node ~/window.js 微信

现阶段,QQ 、微信、钉钉都有原生linux版本了,只不过他们对快捷键的支持堪忧,所以用下面的方法,配合 deepin 窗口管理器最小化窗口的快捷键提升使用体验。

经验主体

本条经验基于 xdotool ,原理是使用 xdotool 根据窗口名称查找到对应 id 并根据 id 激活窗口。

xdotool 很强大,我刚刚接触,还有很多不懂,有兴趣的小伙伴可以自行学习探索

sudo apt install xdotool

根据窗口管理器上的窗口名称来搜索窗口ID

image.png

进入控制中心,点击下面的 + 添加新的快捷键
image.png

其中的 命令如下 字符串里面的名称来自于窗口管理器预览图上的名称,最新的 4.0测试版 名称是 '微信(测试版)'

xdotool windowactivate $(xdotool search -name '微信(测试版)')

不足之处

因为是基于活动窗口查找的,当窗口被关闭 但是软件打开缩回托盘区的时候无解~

Reply Favorite View the author
All Replies
和平老三
deepin
2024-11-11 20:47
#1

我借楼稍微补充下:

x11 下也可以考虑用 wmctrl
wayland 下可以考虑用 wlrctl

Reply View the author
NoahLiu
deepin
2024-11-11 21:41
#2
和平老三

我借楼稍微补充下:

x11 下也可以考虑用 wmctrl
wayland 下可以考虑用 wlrctl

感谢补充,之前论坛搜索关键字,并没有找到相关分享。这下应该是凑齐了。现在我还是简单的使用单条命令后续有功夫 研究下 shell 脚本,或者nodejs脚本(这个好像不大通用,但是我没有学习障碍😂 )。希望能够有更好的体验。

Reply View the author
把一切操作变成GUI
deepin
Backbone of ecological co-construction group
2024-11-11 21:58
#3

貌似可以基于进程来搜索?

为什么你用的微信是测试版?

现在不是都有原声版的微信了吗?

Reply View the author
NoahLiu
deepin
2024-11-11 22:05
#4
把一切操作变成GUI

貌似可以基于进程来搜索?

为什么你用的微信是测试版?

现在不是都有原声版的微信了吗?

商店首页推荐的 4.0 Linux 原生版本哟,这个测试版字样是软件给窗口加上的,你观察下你的预览窗口(鼠标悬浮图标),可能也是一样的。

Reply View the author
NoahLiu
deepin
2024-11-11 22:07
#5
把一切操作变成GUI

貌似可以基于进程来搜索?

为什么你用的微信是测试版?

现在不是都有原声版的微信了吗?

貌似可以基于进程搜索

xdotool 还没深入了解使用,感谢提醒,到时候去仔细研究下,看能否提高运行效率。

Reply View the author
okk~
deepin
2024-11-12 01:16
#6

感谢分享

Reply View the author
Oli
deepin
2024-11-12 03:03
#7

like like

Reply View the author
NoahLiu
deepin
2024-11-12 08:20
#8
NoahLiu

商店首页推荐的 4.0 Linux 原生版本哟,这个测试版字样是软件给窗口加上的,你观察下你的预览窗口(鼠标悬浮图标),可能也是一样的。

今天来公司发现,公司的微信窗口不叫微信测试版~ 就是微信,不知道是不是安装适合先现在了老版本的微信 linux

Reply View the author
xuqi
deepin testing team
2024-11-13 15:36
#9
  • 感谢分享该方法~👍
Reply View the author
我是昵称
deepin
2024-11-13 18:05
#10

xdotool search --name '微信(测试版)' windowactivate

Reply View the author
小鱼贝壳
deepin
2024-11-14 06:47
#11

like like

Reply View the author
NoahLiu
deepin
2024-11-14 09:12
#12
我是昵称

xdotool search --name '微信(测试版)' windowactivate

你这个命令更简洁

Reply View the author
码梦天涯
deepin
2024-11-20 14:24
#13
NoahLiu

你这个命令更简洁

就是少了个toggle效果

Reply View the author
NoahLiu
deepin
11 hours ago
#14
码梦天涯

就是少了个toggle效果

toggle 需要用到脚本了,一条命令搞不定呀

Reply View the author