
Ubuntu では、ユーザーがログインするたびにアプリが自動的に起動することをサポートしていることは知っています。しかし、私がやりたいのは、新しいユーザーが初めてログインするたびに特定のアプリを開き、その後はどのログインでもアプリが自動起動しないようにすることです。これは可能ですか?
答え1
私が提案するのは、2 段階のプロセスです。
ディレクトリ
myapp.desktop
にファイル を作成します。その下にあるすべての内容は、新規ユーザーのフォルダが作成されたときにコピーされます。そのファイルの形式については、/etc/skel/.config/
/etc/skel
シェルスクリプトをランチャーにショートカットとして追加する方法タイトルについては心配しないでください。.desktop
ファイルは基本的に Windows ショートカットと同じであり、ユーザーの~/.config/autostart/
ディレクトリに存在することで、GUI ログイン時に特定のアプリを実行できるようになります。必要なアプリを実行するラッパースクリプトを作成し、特定のランチャーも削除します。たとえば、
#!/bin/bash gedit rm ~/.config/autostart/myapp.desktop
こうすることで、自動起動エントリは最初のログイン時にのみ実行され、最初のログイン時に削除されます。必要に応じて、スクリプト自体も削除する必要があります。削除する必要はなく、次のように名前を変更することもできます。
mv ~/.config/autostart/myapp.desktop ~/.config/autostart/myapp.desktop.bak
特定のアプリや、そのアプリが動作するために必要な特定の条件を指定していないため、これはあくまでも大まかな例であり、必要に応じて自由に調整してください。
ちなみに、やりたいことが単純な場合は、スクリプトは必要ない場合もあります。たとえば、ファイルに次の行を追加したい場合があります.desktop
。
Exec=bash -c 'firefox && rm ~/.config/autostart/myapp.desktop' myapp`
答え2
はい、可能です。私にはアイデアがありますが、もっと良い解決策もあるかもしれません。これが私のアイデアです。お役に立てば幸いです。
shell
プログラミング言語について少し知っていれpython
ば、スクリプトを作成して、このスクリプトを実行するたびにユーザー名を取得し、create a text file/a row in database/ a row in a file
この手順の前に、このユーザー名がデータベース ファイルに存在するかどうかを確認し、存在しない場合はプログラムを実行し、存在する場合は実行しないようにすることができます。Python コードは次のようになります (Runit.py として保存)。
import sys
import getpass
import os
def createFile():
f = open("usersFirstLogin.txt", "a+")
f.write(user)
f.close()
os.system("echo Hi") # Run YOUR PROGRAM HERE
return 0
user = getpass.getuser()
fr = open("usersFirstLogin.txt", "a+")
count=0
for x in fr:
if(x == user):
count+=1
continue # DO NOTHING HERE
else:
createFile()
count+=1
if (count == 0):
createFile()
fr.close
さて、これを起動時に実行するように設定するにはどうすればよいでしょうか? systemd を使用すると簡単です。次のRunit.py
ような名前の Python スクリプトを作成するとします。
sudo touch /etc/systemd/system/RunMyScript.service
そして
sudo gedit /etc/systemd/system/RunMyScript.service
これらを入力してください:
[Unit]
Description=RunIt
[Service]
WorkingDirectory=/Path/to/the/Runit.py folder
ExecStart=/Path/to/the/Runit.py folder/Runit.py
[Install]
WantedBy=multi-user.target
これで、ログイン時にサービスを開始する準備が整いました。
sudo systemctl enable RunMyScript.service
このシナリオでは、ログインごとにサービスが常に実行され、スクリプトはそのユーザーに対してすでに実行されているかどうかを確認します。