我的工作流程的很大一部分是基于使用快捷方式。目前,我使用 xbindkeys 和 wmctrl 来运行或引发应用程序。例如:Super+F调出 Firefox,如果没有运行则运行它。
Autokey 在 KDE 上工作得很好,我也可以使用 KDE 本机自定义快捷方式管理器来替换xbindkeys
,但我找不到(我在 google 上搜索了很多)一种方法来确定窗口/应用程序是否正在运行,如果没有,则引发它。
我可能可以使用ps
或类似的命令来查找应用程序是否正在运行,如果没有,则启动它,但这涉及到最后一个问题:如何以编程方式引发(或聚焦)现有正在运行的窗口/应用程序?
GNOME似乎有某种gdbus
解决方案,但当然这在 KDE 中不起作用。
有人知道我能做什么吗?
我想将窗口大小调整到屏幕的左半部分。
实现这一目标的解决方案是使用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% 而不是绝对值也会很好。
我正在运行 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
以下脚本无法调整已最大化窗口的大小:
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)
我很确定罪魁祸首在中间两行,我的意思是将其应用于当前活动的窗口。
目前我已经成功使用, 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) 我想检索在后台启动的 GUI 程序的 X id,以便处理它们的 Windows 属性。到目前为止我一直在使用这个解决方法:
myprogram &
sleep 1
winID=$(wmctrl -l | awk '/./{line=$0} END{print $1;}')
Run Code Online (Sandbox Code Playgroud)
但这依赖于三个重要假设:
wmctrl
该窗口将附加在列表的末尾myprogram
打开窗口后是否会发送任何信号?我怎样才能拦截它?
我使用的是薄荷 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”是十六进制地址或窗口。
如果窗口最大化或只是浮动,但在窗口平铺或使用超级 [箭头] 对齐时不起作用,我重复它
谢谢您的帮助
我有一个启动应用程序,没有“最小化启动”或“靠近系统托盘”等选项,因此希望使用一个启动脚本,该脚本将首先启动应用程序,然后最小化其窗口。
实际上,我已经有一个启动脚本来关闭应用程序的窗口,幸运的是它有一种“靠近系统托盘”选项:
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
可能是我需要的,但它并没有隐藏窗口。
我想知道是否还有其他方法可以实现这一目标...
可以使用 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) 在 X11 时代,我可以wmctrl -l
列出可用的窗口,以便在我的脚本中使用。
$ 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我想执行一个命令行命令,在单个本地 X11 屏幕上激活“单击并拖动”鼠标选择。
目标是: