![无需窗口管理器即可最大化窗口?](https://linux22.com/image/83970/%E6%97%A0%E9%9C%80%E7%AA%97%E5%8F%A3%E7%AE%A1%E7%90%86%E5%99%A8%E5%8D%B3%E5%8F%AF%E6%9C%80%E5%A4%A7%E5%8C%96%E7%AA%97%E5%8F%A3%EF%BC%9F.png)
如果我想在我的 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 发生冲突,并且当取消最大化窗口时,其默认大小设置为整个窗口大小,即,当最大化窗口时,它也更改了窗口大小以匹配整个屏幕尺寸。
参考:
- 如何在窗口焦点/取消焦点上执行命令?
- 如何将击键 (F5) 从终端发送到 GUI 程序?
- https://superuser.com/questions/382616/detecting-currently-active-window
- https://superuser.com/questions/850145/how-to-use-wmctrl-to-activate-window-of-a-given-class
- 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
等待直到出现合适的窗口,&
将其发送到后台等待。然后应用程序开始。