标签: wmctrl

如何自定义窗口平铺区域/网格?

在 Cinnamon 中,按super+ arrow keys(或其他类似的快捷方式)会将当前窗口的大小调整为平铺(对齐网格)。如何自定义此网格?

例如,我想将屏幕分成 3 个相等的垂直区域,以便窗口的行为如下:

在此处输入图片说明

这个这个问题展示了如何定义将窗口放在屏幕上绝对位置的快捷方式。这很好,但我更喜欢使用基于箭头键的快捷方式来移动窗口

我正在使用 Cinnamon(来自 Linux Mint),但最欢迎通用答案。

cinnamon window-management wmctrl

12
推荐指数
1
解决办法
8346
查看次数

类似 wmctrl 的工具或 kde wayland 的替代品

我的工作流程的很大一部分是基于使用快捷方式。目前,我使用 xbindkeys 和 wmctrl 来运行或引发应用程序。例如:Super+F调出 Firefox,如果没有运行则运行它。

Autokey 在 KDE 上工作得很好,我也可以使用 KDE 本机自定义快捷方式管理器来替换xbindkeys,但我找不到(我在 google 上搜索了很多)一种方法来确定窗口/应用程序是否正在运行,如果没有,则引发它。

我可能可以使用ps或类似的命令来查找应用程序是否正在运行,如果没有,则启动它,但这涉及到最后一个问题:如何以编程方式引发(或聚焦)现有正在运行的窗口/应用程序?

GNOME似乎有某种gdbus解决方案,但当然这在 KDE 中不起作用。

有人知道我能做什么吗?

kde keyboard-shortcuts wayland wmctrl

10
推荐指数
1
解决办法
3495
查看次数

如何使用 wmctrl 将活动窗口的大小调整为 50%?

我想将窗口大小调整到屏幕的左半部分。

实现这一目标的解决方案是使用wmctrl并将正确的命令键绑定到键盘快捷键。

但是联机帮助页只显示了如何调整到一定的高度和宽度,例如:

wmctrl -r :ACTIVE: -b remove,maximized_vert,maximized_horz && wmctrl -r :ACTIVE: -e 0,0,0,800,1040
Run Code Online (Sandbox Code Playgroud)

将窗口移动到左上角并调整为 800x1040 像素。

但奇怪的是只有第一次。如果您在移动再次,执行相同的命令将非常屏幕的右上角,忽略顶部的工具栏。

另外,让该命令具有高度 100% 和宽度 50% 而不是绝对值也会很好。

keyboard-shortcuts window-management wmctrl

9
推荐指数
1
解决办法
8423
查看次数

如何使用自定义宽度自动平铺窗口?(肉桂)

我正在运行 Linux Mint 17 Cinnamon 2.4.8。

我真的很喜欢 xdotool,但它与 Cinnamon 很棒的捕捉/平铺功能相冲突。

如果我运行下面的命令,但它不是。如果当前窗口捕捉到一个角落/侧/全屏工作。

xdotool getactivewindow windowsize 500 1080 windowmove 1420 0
Run Code Online (Sandbox Code Playgroud)

我想保持对齐,但具有自定义宽度。如果它没有被捕捉,它就可以工作。

主要目标:将窗口捕捉到右侧,宽度为 500(通过命令)

但是,使用 xdotool 可能是不可能的。

我宁愿不安装任何其他东西,并用肉桂来做这一切,但如果有人认为我可以用 wmctrl 实现我的目标,那么我会试一试。

所需输出与当前输出

http://s115.photobucket.com/user/ericrazy2000/media/snapped.png.html

http://s115.photobucket.com/user/ericrazy2000/media/NOTsnapped.png.html

linux-mint cinnamon window-management wmctrl xdotool

8
推荐指数
1
解决办法
5928
查看次数

从命令行调整最大化窗口的大小

以下脚本无法调整已最大化窗口的大小:

wmctrl -i -r :ACTIVE: -b remove,maximized_vert,maximized_horz
xdotool windowunmap --sync
xdotool windowmap   --sync
wmctrl -r :ACTIVE: -e 0,300,168,740,470
Run Code Online (Sandbox Code Playgroud)

我很确定罪魁祸首在中间两行,我的意思是将其应用于当前活动的窗口。

window-management wmctrl xdotool

7
推荐指数
1
解决办法
3385
查看次数

如何在 bash 中使用其 ID 将窗口移动到不同的工作区?

目前我已经成功使用, wmctrl -r :SELECT: -t 2 但类似的东西 wmctrl -r -i 0x03e00003 -t 2不起作用。我应该如何编写命令以选择要通过 ID 而不是鼠标移动的窗口?

我正在使用带有默认 MATE DE 的 Linux Mint 13。

我也试过 wmctrl -i -r 0x03e00003 -t 2

EDIT1: wmctrl -i -r thewinIDInHexa -t 2现在工作。它不起作用的原因是,当我第一次尝试 wmctrl 时,我使用了正确的 ID 但错误的语法,第二次我使用了正确的形式但错误的窗口 ID...问题是 ID 不是 - existent 和 wmctrl 不会为不存在的 ID 输出任何消息。感谢你付出的努力。确认我实际上使用了正确的命令形式后,促使我仔细检查 ID。再次感谢你

EDIT2:由于我无法发表评论,我将在此处发布对@slm 的回复:现在正确的 ID 是 0x0380000f

wmctrl -v -i -r 0x0380000f -t 2



envir_utf8: 1
Using window: 0x0380000f
Run Code Online (Sandbox Code Playgroud)

VLC 移至工作区 #2(第三工作区)

对于实际上不存在的 ID,我们有几乎相同的事情:

wmctrl -v -i -r 0x03a00003 …
Run Code Online (Sandbox Code Playgroud)

shell workspaces wmctrl

5
推荐指数
1
解决办法
5501
查看次数

检索刚刚启动的 GUI 程序的 X11 窗口 ID

我想检索在后台启动的 GUI 程序的 X id,以便处理它们的 Windows 属性。到目前为止我一直在使用这个解决方法:

myprogram &
sleep 1
winID=$(wmctrl -l | awk '/./{line=$0} END{print $1;}')
Run Code Online (Sandbox Code Playgroud)

但这依赖于三个重要假设:

  • 该程序将花费不到 1 秒的时间来打开窗口(更不用说少于 1 秒可能太长了)
  • wmctrl该窗口将附加在列表的末尾
  • 同时不会打开其他窗口

myprogram打开窗口后是否会发送任何信号?我怎样才能拦截它?

scripting process x11 window wmctrl

5
推荐指数
1
解决办法
1913
查看次数

wmctrl 在捕捉或平铺时不移动窗口

我使用的是薄荷 18.1 肉桂。我正在尝试编写一个小 bash 程序来移动窗口。

我有一个命令可以删除 maximumd_vert 和 maximum_horz 然后移动窗口。如果目标窗口最大化或只是浮动,它工作正常,但如果窗口使用 super [arrow] 对齐到位(认为这是平铺?)它没有影响。代码如下

    wmctrl -r "$CHROME" -i -b remove,maximized_vert
    wmctrl -r "$CHROME" -i -b remove,maximized_horz
    wmctrl -r "$CHROME" -i -e '0,0,0,500,500'
Run Code Online (Sandbox Code Playgroud)

其中“$CHROME”是十六进制地址或窗口。

如果窗口最大化或只是浮动,但在窗口平铺或使用超级 [箭头] 对齐时不起作用,我重复它

谢谢您的帮助

cinnamon wmctrl

5
推荐指数
1
解决办法
495
查看次数

如何从命令行最小化应用程序窗口

我有一个启动应用程序,没有“最小化启动”或“靠近系统托盘”等选项,因此希望使用一个启动脚本,该脚本将首先启动应用程序,然后最小化其窗口。

实际上,我已经有一个启动脚本来关闭应用程序的窗口,幸运的是它有一种“靠近系统托盘”选项:

wmctrl -ic $(wmctrl -l | grep "AppWindowTitle" | cut -d ' ' -f 1)
Run Code Online (Sandbox Code Playgroud)

理想情况下,我应该能够使用如下命令最小化窗口:

wmctrl -ir $(wmctrl -l | grep "AppWindowTitle" | cut -d ' ' -f 1) -b toggle,minimized
Run Code Online (Sandbox Code Playgroud)

但 中没有这样的选项wmctrl。第一个参数的选项有:add, remove, toggle。第二个参数的选项是:modal, sticky, shaded, skip_taskbar, skip_pager, hidden, fullscreen, above, below, maximized_vert, maximized_horz

这些似乎有效,我希望参数hidden可能是我需要的,但它并没有隐藏窗口。

我想知道是否还有其他方法可以实现这一目标...

command-line window-manager window-management wmctrl

5
推荐指数
1
解决办法
8916
查看次数

如何从 Firefox 当前选项卡获取 url,而不需要安装额外的软件?

可以使用 xdotool 获取当前选项卡:

# set focus to address on browser
xdotool search --onlyvisible --classname Navigator windowactivate --sync key F6

# copy address from browser tab to clipboard
xdotool search --onlyvisible --classname Navigator windowactivate --sync key Ctrl+c

# get off the focus from address from browser tab
xdotool search --onlyvisible --classname Navigator windowactivate --sync key F6

# delivery of clipboard content to variable
clipboard=`xclip -o -selection clipboard`

# clear clipboard
xsel -bc; xsel -c

# echo URL of active tab of …
Run Code Online (Sandbox Code Playgroud)

bash url firefox wmctrl

5
推荐指数
1
解决办法
1745
查看次数

有没有办法获取 KDE Wayland 上的窗口列表?

在 X11 时代,我可以wmctrl -l列出可用的窗口,以便在我的脚本中使用。

\n
$ wmctrl -l\n0x01000050  0 my-pc project1 \xe2\x80\x93 Readme.md\n
Run Code Online (Sandbox Code Playgroud)\n

但现在大多数应用程序都使用 Wayland。上面的命令仅显示使用 XWayland 运行的窗口。

\n

我希望能够在 Wayland 模式下使用应用程序,同时能够为我的脚本列出它们的窗口。那可能吗?我正在使用 Arch Linux 和 KDE。

\n

kde x11 kwin wayland wmctrl

5
推荐指数
1
解决办法
3515
查看次数

从屏幕获取“单击并拖动”矩形坐标的命令行工具

我想执行一个命令行命令,在单个本地 X11 屏幕上激活“单击并拖动”鼠标选择。

目标是:

  • 获取选定的矩形XY坐标,
  • 获取矩形的宽度高度
  • 将这些值输出到stdout
  • (可选)在拖动鼠标时绘制选择边框。

wmctrl xdotool

4
推荐指数
1
解决办法
658
查看次数