Debian

如何將尺寸範圍的視窗移動到工作區 2?

  • December 30, 2016

我在西南有許多x(550-570)x(465-486) 的圖形,由 Matlab 的函式邏輯地設置在那裡。我想在外部顯示器或工作區 2 中打開所有這些大小範圍的 西南視窗。 Meuh的命令顯示那些圖形尺寸width x height,它們的十六進制程式碼和標題,我想在其中移動大小為 560 x 的視窗475 for width x height,分別到工作區 2movegui()

masi@masi:~$ wmctrl -l -G
0x01c0000b  0 0    0    3840 1080 masi Desktop
0x01e00002  0 0    54   1920 1023 masi Edit - Unix & Linux Stack Exchange - Google Chrome
0x02200006  0 2088 333  1608 501  masi masi@masi: ~
0x0280003d  0 1920 78   1920 1041 masi MATLAB R2016a - academic use
0x02800ac6  0 11   113  568  465  masi Figure 1: data gray all 4
0x02800af2  0 687  113  560  475  masi Figure 2: data gray top half (1/2)
0x02800aff  0 1364 113  560  475  masi Figure 3: data gray top #1 (1/4)
0x02800b16  0 1364 621  560  475  masi Figure 4: Time domain
0x02800b2a  0 11   631  568  465  masi Figure 5: Memory/... Monitoring
0x02800b31  0 683  631  568  465  masi Figure 6: data Size(I) monitoring 
0x02800b3b  0 11   621  560  475  masi Figure 7: Histograms
0x02800b85  0 774  594  386  28   masi Press SPACEBAR to continue

執行 meuh 的命令會給出正確數量的wmctrl命令,但單個命令沒有任何效果(請注意此處與上面不同的十六進制程式碼,因為不同的迭代)

masi@masi:~$ wmctrl -l -G |
> awk '$0~/^0x/{ winid=$1; width=$5; height=$6;
>                if(width>=550 && width<=570 && height>=465 && height<=485)
>                   printf "wmctrl -i -r %s -t 2\n",winid
>              }' | sh -x
+ wmctrl -i -r 0x03200120 -t 2
+ wmctrl -i -r 0x03200149 -t 2
+ wmctrl -i -r 0x0320015f -t 2
+ wmctrl -i -r 0x03200173 -t 2
+ wmctrl -i -r 0x03200188 -t 2
+ wmctrl -i -r 0x0320019f -t 2
+ wmctrl -i -r 0x032001b2 -t 2

為什麼要將+ wmctrl -i -r 0x03200120 -t 2視窗放到 Workspace 2 中?那裡的符號是什麼+

  • 我什麼都不做wmctrl -r 1 -t 2,TODO 在這里以某種方式指定尺寸。
  • 如何將大小為 560x475 的視窗移動到 Workspace 2?
  • 如何將大小為 (550-570)x(465-485) 的視窗移動到 Workspace 2?

作業系統:Debian 8.5 64 位

Linux 核心:4.6 of backports

Matlab:2016a

視窗管理器:Gnome 3.14

硬體:華碩 Zenbook UX303UA、華碩 PC

其他來源:Commandlinefu 搜尋*wmctrl*沒有帶來任何相關 資訊

Debian 8.5 中沒有支持 Gnome 3.14 的工作解決方案。讓我們希望 2017 年第一季度至第二季度的下一個 Gnome 版本能夠幫助解決這個問題。

您可以使用一個小的 awk 腳本使用空格分隔的第 5 列和第 6 列中的寬度和高度來過濾出所需的視窗 ID:

wmctrl -l -G |
awk '$0~/^0x/{ winid=$1; width=$5; height=$6;
              if(width>=550 && width<=570 && height>=465 && height<=485)
                 printf "wmctrl -i -r %s -t 2\n",winid
            }' | sh

引用自:https://unix.stackexchange.com/questions/313952