如何自动启动应用程序并保持其最小化?

如何自动启动应用程序并保持其最小化?

我的自动启动列表中有 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)"

对于您的应用程序,您需要Franzwmctrl相关行末尾的返回值替换它。

在以下步骤中,应用程序与屏幕右侧对齐。如果不需要,您可以省略这些步骤。

# 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使用它来代替普通的可执行文件。

我从这个问题中获得了本答案中的很多信息: 如何从终端关闭、最小化和最大化指定窗口?

相关内容