Windows 桌面一键切换工具 Virgo

本文最后更新于:2022年7月4日 上午

微软在 Windows 10 中新增了虚拟桌面,我们可以通过新建虚拟桌面放置不同的软件窗口。但使用起来很不方便,没有方便的快捷键和管理工具,小程序 Virgo 拯救了微软的桌面。

背景

  • 微软的虚拟桌面是很棒的功能,但快捷键 Ctrl + Win + ← → 需要两只手才能按出;
  • 应用支持也不友好,如果在第一个桌面中已经打开了 QQ、微信,那么当你在第二个桌面中点击任务栏的图标时,仍然会弹回前一个桌面,这就完全打断了二号桌面上的操作,再次返回二号桌面时就需要重新适应桌面环境了;
  • 应用在桌面间移动需要拖来拖去也不是很快捷。

Virgo

  • Virgo 是一款 18 年最后更新的一款针对 Windows 虚拟桌面切换的小工具,由 C++ 语言编写,核心代码仅有320多行
  • 实现原理上也是很直接的,事实上并没有用到虚拟桌面,但记录了几组窗口的状态,在不同的窗口显示、隐藏之间切换,达到虚拟桌面的效果
  • 项目主页:https://github.com/henkman/virgo

安装使用

使用官方可执行文件

  • 官方文档:
  • 下载 zip 安装包
  • 解压发现一个 virgo.exe 文件,大小只有 8 KB,拿出来直接就可以运行
  • 顺利运行的话此时不会发生任何事情,仅在任务栏小图标多了一个 1

  • 此时可以使用快捷键切换桌面了,使用方法如下
快捷键 说明
ALT + 1 … 4 切换桌面到 1 … 4
CTRL + 1 … 4 移动活动窗口到桌 1 … 4
ALT + CTRL + SHIFT + Q 退出程序(唯一正常退出的方法)
ALT + CTRL + SHIFT + S 开启/停止 其他快捷键(默认开启)
  • 此时就可以愉快地享受丝滑地屏幕切换了
常见错误
1
virgo could not register hotkey

  • 错误原因为快捷键注册时和其他程序冲突,可以将其他软件关闭再重试
  • 比较稳健的解决方案为重启后第一个开启 Virgo 程序

但不管怎么说快捷键冲突可能性还是很大的,需要更彻底的方法规避这个问题

源码编译

  • 代码既然简单那应该也比较容易调整,我们配置好代码编译环境,调整代码后编译我们需要的运行程序可以一劳永逸解决问题

配置编译环境

  • 安装程序

  • 安装后运行 Msys2 终端(也可以在安装完成后勾选运行终端)

  • 在终端运行命令安装 mingw-w64-i686-gccmingw-w64-i686-make
1
2
pacman -S mingw-w64-i686-gcc
pacman -S mingw-w64-i686-make

  • msys32\mingw32\bin\mingw32-make.exe 文件复制一份,改名 make.exe

  • 并将该目录加入到系统目录中

  • 至此我们已经可以运行 make 命令了

编译源码获取可执行文件

  • 打开 git bash 终端
  • 克隆仓库并编译生成 exe 文件:
1
2
3
git clone https://github.com/papplampe/virgo.git
cd virgo
make
  • 即可得到和官方相同的 exe 文件

修改源码

官方工具使用中的问题

  • 官方的 Virgo 快捷键 Ctrl + num 和 Typora 标题冲突,这是无法接受的
  • 支持 4 块桌面,我们可能需要更多
  • 快捷键冲突就报错,有些矫情

修改源码

  • 修改桌面数量

    第 21 行修改 4 变为 8

    1
    2
    3
    #define NUM_DESKTOPS 4
    // 改为
    #define NUM_DESKTOPS 8
  • 修改快捷键

    Ctrl + num 改为 Alt + Shift + num

    修改第249行为

    1
    register_hotkey(i * 2 + 1, MOD_ALT | MOD_SHIFT | MOD_NOREPEAT, i + 1 + '0');
  • 禁止报错

    将第 176 行的函数 register_hotkey 改为

    1
    2
    3
    4
    static void register_hotkey(unsigned id, unsigned mod, unsigned vk)
    {
    RegisterHotKey(NULL, id, mod, vk);
    }
  • 之后重新编译

    1
    make
  • 得到的程序运行时会忽略冲突的快捷键,可以支持 8 个桌面,快捷键为:

    快捷键 说明
    ALT + 1 … 8 切换桌面到 1 … 8
    ALT + SHIFT + 1 … 8 移动活动窗口到桌 1 … 8
    ALT + CTRL + SHIFT + Q 退出程序(唯一正常退出的方法)
    ALT + CTRL + SHIFT + S 开启/停止 其他快捷键(默认开启)

参考资料


Windows 桌面一键切换工具 Virgo
https://www.zywvvd.com/notes/system/windows/virgo/virgo/
作者
Yiwei Zhang
发布于
2022年5月29日
许可协议