无需窗口管理器即可最大化窗口?

无需窗口管理器即可最大化窗口?

如果我想在我的 Linux 机器上运行 GUI 软件,我可以在没有窗口管理器的情况下完成,但我找不到最大化窗口的方法。有没有可靠的方法可以在没有窗口管理器的情况下最大化 x 服务器中的窗口?

答案1

X 服务器没有“最大化”窗口的概念。要最大化窗口,请指示应用程序使用与屏幕尺寸匹配的窗口尺寸。您可以使用xdotool它,尽管在没有窗口管理器的情况下选择窗口可能有点困难 - 许多枚举和挑选窗口的方法都依赖于窗口管理器。

dimensions=$(xdpyinfo | sed 's/^ *dimension * : *\([0-9]*x[0-9]*\).*/\1/p')
windowid=…
xdotool windowmove "$windowid" 0 0 windowsize "${dimensions%x*}" "${dimensions#*x}"

答案2

我想用 Sublime Text 打开所有文本文件,但它不支持--maximize命令行参数,而且它不记得 Linux 上的窗口状态,并且总是以非最大化的方式打开。

然后,经过研究,我构建了这个脚本:

#!/usr/bin/env bash
# run it with /home/user/maximize.sh "Sublime Text" /usr/bin/subl -n
eval "\"$2\" \"$3\" \"$4\" \"$5\" \"$6\" \"$7\" \"$8\" \"${@:9}\""

while [ true ]
do
    FocusApp=`xdotool getwindowfocus getwindowname`

    if [[ "$FocusApp" == *"$1"* ]];
    then
        # xdotool key super+Up
        wmctrl -ir $(xdotool getactivewindow) -b add,maximized_vert,maximized_horz
        break
    fi
done

你需要安装这两个东西:

sudo apt-get install wmctrl xdotool 

我没有使用“xdotool”来最大化窗口,因为它似乎与我的 XFCE4 发生冲突,并且当取消最大化窗口时,其默认大小设置为整个窗口大小,即,当最大化窗口时,它也更改了窗口大小以匹配整个屏幕尺寸。

参考:

  1. 如何在窗口焦点/取消焦点上执行命令?
  2. 如何将击键 (F5) 从终端发送到 GUI 程序?
  3. https://superuser.com/questions/382616/detecting-currently-active-window
  4. https://superuser.com/questions/850145/how-to-use-wmctrl-to-activate-window-of-a-given-class
  5. https://askubuntu.com/questions/703628/how-to-close-minimize-and-maximize-a-specified-window-from-terminal

答案3

您可以使用 最大化窗口xdotool

例如,要在用户登录时启动最大化应用程序,请向用户写入如下内容~/.xsession

xrandr --output HDMI-1 --mode 2560x1440
xdotool search --onlyvisible --sync MyPaint windowmove 0 0 windowsize 100% 100% &
mypaint

xrandr设置所需的视频模式。然后,一系列xdtool命令搜索名为“MyPaint”的第一个窗口,将其移动到左上角并将其大小调整为最大尺寸。--sync选项使xdtool等待直到出现合适的窗口,&将其发送到后台等待。然后应用程序开始。

相关内容