如何通过终端在KDE中将窗口移至第二显示器
刚好碰到过类似的问题,结合CentOS7+KDE的环境,给你几个靠谱的解决方案:
一、调整KDE显示器配置,让xdotools能跨屏工作
KDE默认会把每个显示器设为独立的X11 Screen,这也是xdotools搞不定跨屏的核心原因——它默认只在单个Screen范围内操作。你可以改成合并显示器模式,把多屏变成一个大的逻辑桌面:
- 打开KDE的「系统设置」,找到「显示和监控」
- 在显示器配置页,点击顶部的「配置」下拉框,选「合并显示器」(别选「独立配置每个显示器」)
- 应用设置后注销再登录,这时所有显示器会拼成一个大桌面空间,xdotools的
windowmove命令就能正常跨屏了,只要算好目标屏幕的坐标就行(比如第二个屏幕的起始X坐标就是第一个屏幕的宽度)
二、用wmctrl替代xdotools,适配KDE独立屏幕
如果不想改显示器配置,wmctrl是更适配KDE窗口管理的工具,它能识别KDE的独立屏幕:
- 先安装:
sudo yum install wmctrl(CentOS7默认源里直接能装) - 查窗口ID:
wmctrl -l,会列出所有窗口的ID和标题,找到你要移动的那个 - 移到指定屏幕:
- 用坐标指定:
wmctrl -r <窗口标题/ID> -e 0,<X坐标>,<Y坐标>,<宽度>,<高度>,比如第一个屏是1920x1080,移到第二个屏就写wmctrl -r "Firefox" -e 0,1920,0,1920,1080 - 更省事的指定屏幕编号:先
wmctrl -d看屏幕编号(比如第二个屏是1),然后wmctrl -r <窗口ID> -t 1,直接把窗口扔到对应屏幕
- 用坐标指定:
三、终端实现KDE右键的「切换屏幕」功能
你看到的右键切换屏幕,其实是调用了KWin(KDE的窗口管理器)的内置功能,用qdbus直接调用接口就能在终端实现:
- 先拿窗口ID:用
wmctrl -l或者xwininfo(运行后点击目标窗口就能获取ID) - 切换到下一个屏幕:
qdbus org.kde.KWin /KWin moveWindowToNextScreen <窗口ID> - 切换到上一个屏幕:
qdbus org.kde.KWin /KWin moveWindowToPreviousScreen <窗口ID> - 指定具体屏幕:先
qdbus org.kde.KWin /KWin screenCount看总屏幕数,然后用qdbus org.kde.KWin /KWin moveWindowToScreen <窗口ID> <屏幕索引>(索引从0开始)
注意:如果你的CentOS7装的是老版Plasma 4,qdbus的服务名是
org.kde.kwin(小写k),命令改成qdbus org.kde.kwin /KWin moveWindowToNextScreen <窗口ID>就行
小提示
- 测试的时候可以开个终端窗口,用
wmctrl -l拿到它的ID,再用上面的命令测试移动,这样能快速验证是否生效 - CentOS7的KDE默认是X11环境,所以这些方法都适用;如果是Wayland的话(不过CentOS7基本不会默认用),方法会不一样
内容的提问来源于stack exchange,提问作者Husk Rekoms
相关产品推荐
相关产品推荐

