如何通过命令行设置应用程序在屏幕上的窗口大小和位置?

如何通过命令行设置应用程序在屏幕上的窗口大小和位置?

我希望使用 shell 命令以特定大小和屏幕位置打开 Firefox 窗口,例如:

firefox myfile.html size 800x600 location bottom-left

有这样的命令吗?

答案1

这是答案的社区版本妖怪其中包含以下提供的示例鲁道夫·奥拉


您可以使用名为的工具xdotool来控制窗口的大小和位置。不仅如此,您bash使用编写的任何脚本xdotool都可以设置为使用完全最大化的窗口,并且可以通过操作mousemoveclick命令来编写脚本来设置窗口大小和 x:y 坐标。

  1. 查找窗口 ID:

    xdotool search --onlyvisible --name firefox
    
  2. 设置窗口大小

    xdotool windowsize $WINDOW_ID_GOES_HERE $WIDTH $HEIGHT
    
  3. 移动窗口

    xdotool windowmove $WINDOW_ID_GOES_HERE $X $Y
    

例如,如果 Firefox 的窗口 ID 是 123,您将执行以下操作:

xdotool windowsize 123 800 600
xdotool windowmove 123 0 1080

左下角的位置必须根据您的屏幕分辨率来确定。

答案2

据我所知,这是不可能的,因为 Firefox 不接受控制窗口的命令。这也是(主要)窗口管理器的责任,所以我怀疑是否会有参数来做到这一点。但是,您可以使用以下命令控制窗口控制面板,但这会有点困难:

#!/usr/bin/env bash

firefox -new-instance -new-window "http://www.reddit.org" &

# Process ID of the process we just launched
PID=$!

# Window ID of the process...pray that there's     
# only one window! Otherwise this might break.
# We also need to wait for the process to spawn
# a window.
while [ "$WID" == "" ]; do
        WID=$(wmctrl -lp | grep $PID | cut "-d " -f1)
done
# Set the size and location of the window
# See man wmctrl for more info
wmctrl -i -r $WID -e 0,50,50,250,250

可能有更聪明的方法来做到这一点,并且与 Firefox 存在一些互操作性问题(例如,没有其他实例正在运行),但它应该可以帮助您继续。

答案3

这并不能解决位置问题,但至少你可以设置尺寸:

firefox -width 200 -height 500

答案4

我一直这样做。不过,我使用 DevilsPie2,因为它更强大。它使用LUA脚本语言,这不是很困难。

这是我的 Thunderbird lua 脚本,我想在它打开时在最左边的显示器(笔记本电脑屏幕)上打开它:

if (get_window_name()=="Mozilla Thunderbird") then
   pin_window()
   set_window_geometry( 50, 10, 1220, 780 )
end

where 50 = X coordinate (for upper-left corner of the window)
      10 = Y coordinate ( " " )
    1220 = window width
     780 = window height

要进行此设置,您可以在主配置中(在类似 Ubuntu 的发行版上)创建一个名为 Devilspie2 的目录,例如 /home/$USERNAME/.config/devilspie2

对于 Thunderbird,我创建了 Thunderbird.lua,尽管文件名并不重要。我为每个应用程序都有不同的文件名,但如果您愿意,您可以将所有内容放入一个脚本文件中。设置 Devilspie2 在登录时自动启动,例如 /home/$USERNAME/.config/autostart/devilspie2.desktop

下面是一个关于 lua 脚本可用的各种选项的好页面的链接:https://github.com/gusnan/devilspie2/blob/master/README

请注意:脚本不必是可执行的。我的是664,工作正常。我控制的其他一些程序包括 openconnect、pidgin、RecordMyDesktop、timeshift、xeyes、xload 和 yad。我对它们使用 pin_window,以便它们出现在所有桌面上,以及取决于应用程序的其他命令。

相关内容