使用 .desktop 运行的脚本与从终端运行的结果不同

使用 .desktop 运行的脚本与从终端运行的结果不同

我尝试在用户使用 GUI 登录计算机后启动一个脚本。此脚本需要用户通过终端输入。我尝试了以下操作

~/.config/autostart 中的 .desktop 文件 --> 不起作用

使用此功能时,输出与终端中运行的脚本的输出不同。它会关闭打开的应用程序,并且 vpn 会断开网络连接。使用普通终端时,不会发生上述情况。

我的桌面环境是xubuntu 版本20.04。


#!/bin/bash

echo "........ Start Up Script ........."
echo "sudo priveledges necessary for VPN" 

#Connect VPN to Server in Czech Republic
sudo protonvpn c --cc CZ

#Prompt To Mount Encrypted Files
read -p 'Mount Encrypted Files? [ y/n ] ' encryptedmount
case $encryptedmount in
    [Yy]* ) veracrypt -t -k "" --pim=0 --protect-hidden=no /media/peterthegreat/Main_Data/Files /media/veracrypt1; break;;
    [Nn]* ) ;;
esac

# Prompt To Update Packages
read -p 'Upgrade and Update System? [ y/n ] ' upgradeandupdate
case $upgradeandupdate in
    [Yy]* ) apt-get update && apt-get upgrade; break;;
    [Nn]* ) ;;
esac

#Prompt to Open Tilix
read -p 'Open Tilix? [ y/n ] ' til
case $til in
    [Yy]* ) cd /home/peterthegreat; tilix --session=~/Documents/Start_Up/TilixSetup.json -e &;;
    [Nn]* ) ;;
esac
disown %1

#Prompt to Open Firefox
read -p 'Open Firefox? [ y/n ] ' firefox
case $firefox in
    [Yy]* ) firefox &;;
    [Nn]* ) ;;
esac
disown %1

echo "....... Done ......."

谢谢

答案1

看一下.desktop 文件规范—— 它不期望 bash 脚本。

你的 .desktop 文件需要看起来像

[Desktop Entry]
Type=Application
Exec=<path to your bash script>
Terminal=True
X-GNOME-Autostart-enabled=true
NoDisplay=false
Hidden=false
Name[en_GB]=VPN
Comment[en_GB]=Creates a VPN
X-GNOME-Autostart-Delay=9

其中“bash 脚本的路径”指向您在问题中显示的脚本(最好保存在 /usr/local/bin 中)

相关内容