我想在登录时自动启动第 2 和第 3 个工作区上的 Firefox 和 Thunderbird。如果我将它们添加到 gnome-shell 中的自动启动中,它们都会在第一个工作区中打开。有没有办法在特定工作区上自动启动应用程序,或者至少在“下一个”工作区上自动启动应用程序(类似于 dash 中键单击)。我想避免使用 auto-move-windows 扩展。
答案1
以下是将启动另一个应用程序并将其移动到指定工作空间的程序。
您应该将其复制到名为 move-at-start.sh 的文件中,将其标记为可执行文件,然后将其放在您的主目录中的某个位置(我建议将其放在文件夹中~/.local
,但如果您愿意,您可以将其放在您的~/bin
或其他地方,只要记住您将它放在哪里以及您给它起了什么名字)。(pastebin 链接)
#!/bin/bash
# invocation
# move-at-start.sh <desktop> <prog> <prog args>
if [ $# -lt 2 ]; then
echo "invocation: move-at-start.sh <desktop> <prog> <prog args>"
exit 1
fi
desk=$1
prog=$2
args=""
shift
shift
while (( "$#" )); do
args="$args ""$1"
shift
done
$prog $args
windows=$(wmctrl -lp | grep -E "($(echo $(ps -C "$prog" -o pid,user | grep "`whoami`" | sed -E "s/^\ *//" | cut -d\ -f 1) | sed "s/\ /|/g"))" | cut -d\ -f 1)
for w in $windows; do
wmctrl -i -r $w -t $desk
done
exit 0
完成后,转到~/.config/autostart
shell 或 Nautilus。
在此文件夹中,您将找到一些文件,其名称类似于app-name.desktop
找到与您想要启动的应用程序相对应的文件(最有可能<name>.desktop
),然后在您最喜欢的文本编辑器中打开它们。
对于每个文件,找到以 开头的行exec=<some command and args>
并将其更改为exec=</path/to/above/script>/move-at-start.sh <desktop number> <some command and args>
。
下次登录时,应用程序应启动并移动到指定的桌面。
注意:桌面从 0 开始编号,因此第一个桌面是 0,第三个桌面是 2,等等。
注意:如果指定的桌面不存在,窗口将保留在原始桌面上。