我的自动启动列表中有 Franz 应用程序,它运行良好。问题是,每当我启动 kubuntu 时,它都会全屏打开。我宁愿它以最小化状态打开,这样我就不必每次都手动关闭/最小化它。有人能提供一个描述性的解决方案吗,以便我可以对其他我想自动启动的应用程序应用相同的解决方案?
答案1
据我了解,链接答案建议您为每个应用程序编写一个单独的启动脚本,并将其放在中~/.bin
。将其命名为login-myapp.sh
。
该脚本以正常启动应用程序的命令开始。对于 Franz,后面会/opt/Franz/franz
跟着一个命令&
,让它在后台执行。将此命令替换为应用程序的正常启动命令。
"/opt/Franz/franz" &
它给应用程序 3 秒钟的时间启动并创建一个窗口:
sleep 3
然后它从中获取当前显示器的宽度和高度xrandr
:您可以简单地复制它。
# Get the WIDTH of screen
SWIDTH="$(xrandr | grep " connected" | grep "[0-9]x[0-9]"| cut -d ' ' -f 4 | cut -d '+' -f 1 | cut -d 'x' -f 1)"
# Get the HEIGHT of screen
SHEIGHT="$(xrandr | grep " connected" | grep "[0-9]x[0-9]"| cut -d ' ' -f 4 | cut -d '+' -f 1 | cut -d 'x' -f 2)"
然后它会找到应用程序主窗口的窗口 ID。您需要正常启动应用程序并wmctrl -l
在终端中执行。您可能需要wmctrl
先安装:它是一个小型独立工具。
$ wmctrl -l
然后就是确定正确的行。但是,并非所有应用程序窗口都由窗口管理器管理。我的系统上目前运行着 Firefox、Thunderbird、Libreoffice 和 Slack,但只返回了 Slack。我们取末尾包含应用程序名称的行(使用grep
),然后从该行中只取第一个字段,用空格分隔(使用cut
)。然后将窗口句柄放入变量 FWINDOW 中:
# Get the WINDOW ID of Franz
FWINDOW="$(wmctrl -l | grep " Franz$" | cut -d ' ' -f 1)"
对于您的应用程序,您需要Franz
用wmctrl
相关行末尾的返回值替换它。
在以下步骤中,应用程序与屏幕右侧对齐。如果不需要,您可以省略这些步骤。
# Calculate the window LEFT position for 750px width
FLEFT="$(echo $(( $SWIDTH-750 )))"
# Calculate the window HEIGHT below a 22px top panel
FHEIGHT="$(echo $(( $SHEIGHT-22 )))"
# Move and resize Franz window as above
wmctrl -i -r $FWINDOW -e 0,$FLEFT,22,750,$FHEIGHT
最后,应用程序的窗口被最小化:
# Close Franz window to system tray
wmctrl -ic $FWINDOW
exit 0
对于 Franz 来说,这是可行的,因为关闭窗口意味着将 Franz 最小化到系统托盘。如果这实际上完全关闭了你的应用程序,你可以使用
xdotool windowminimize $FWINDOW
exit 0
反而。
如果您的脚本login-myapp.sh
有效,链接的答案建议您修改.desktop
应用程序的文件,以便login-myapp.sh
使用它来代替普通的可执行文件。
我从这个问题中获得了本答案中的很多信息: 如何从终端关闭、最小化和最大化指定窗口?