Windows 桌面一键切换工具 Virgo
发布时间:2025-12-09 12:00:11
浏览次数:2
微软在 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 | 开启/停止 其他快捷键(默认开启) |
常见错误
virgo could not register hotkey
- 错误原因为快捷键注册时和其他程序冲突,可以将其他软件关闭再重试
- 比较稳健的解决方案为重启后第一个开启 Virgo 程序
但不管怎么说快捷键冲突可能性还是很大的,需要更彻底的方法规避这个问题
源码编译
- 代码既然简单那应该也比较容易调整,我们配置好代码编译环境,调整代码后编译我们需要的运行程序可以一劳永逸解决问题
配置编译环境
- 登录 http://msys2.github.io/ 下载 msys2
- 安装后运行 Msys2 终端(也可以在安装完成后勾选运行终端)
- 在终端运行命令安装
mingw-w64-i686-gcc 和 mingw-w64-i686-make
pacman -S mingw-w64-i686-gccpacman -S mingw-w64-i686-make
- 将
msys32mingw32binmingw32-make.exe 文件复制一份,改名 make.exe
编译源码获取可执行文件
- 打开 git bash 终端
- 克隆仓库并编译生成 exe 文件:
git clone https://github.com/papplampe/virgo.gitcd virgomake
修改源码
官方工具使用中的问题
- 官方的 Virgo 快捷键
Ctrl + num 和 Typora 标题冲突,这是无法接受的 - 支持 4 块桌面,我们可能需要更多
- 快捷键冲突就报错,有些矫情
修改源码
#define NUM_DESKTOPS 4// 改为#define NUM_DESKTOPS 8
- 修改快捷键将
Ctrl + num 改为 Alt + Shift + num修改第249行为
register_hotkey(i * 2 + 1, MOD_ALT | MOD_SHIFT | MOD_NOREPEAT, i + 1 + '0');
- 禁止报错将第 176 行的函数 register_hotkey 改为
static void register_hotkey(unsigned id, unsigned mod, unsigned vk){RegisterHotKey(NULL, id, mod, vk);}
make
- 得到的程序运行时会忽略冲突的快捷键,可以支持 8 个桌面,快捷键为:
- 分享这个程序,需要的同学可以替换官方的程序来用
- 改良版 Virgo :下载链接
- 源码仓库:https://github.com/zywvvd/virgo
参考资料
- https://github.com/henkman/virgo
- https://zhuanlan.zhihu.com/p/34705762