初回ログイン時にアプリを開く

初回ログイン時にアプリを開く

Ubuntu では、ユーザーがログインするたびにアプリが自動的に起動することをサポートしていることは知っています。しかし、私がやりたいのは、新しいユーザーが初めてログインするたびに特定のアプリを開き、その後はどのログインでもアプリが自動起動しないようにすることです。これは可能ですか?

答え1

私が提案するのは、2 段階のプロセスです。

  1. ディレクトリmyapp.desktopにファイル を作成します。その下にあるすべての内容は、新規ユーザーのフォルダが作成されたときにコピーされます。そのファイルの形式については、/etc/skel/.config//etc/skelシェルスクリプトをランチャーにショートカットとして追加する方法タイトルについては心配しないでください。.desktopファイルは基本的に Windows ショートカットと同じであり、ユーザーの~/.config/autostart/ディレクトリに存在することで、GUI ログイン時に特定のアプリを実行できるようになります。

  2. 必要なアプリを実行するラッパースクリプトを作成し、特定のランチャーも削除します。たとえば、

    #!/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

このシナリオでは、ログインごとにサービスが常に実行され、スクリプトはそのユーザーに対してすでに実行されているかどうかを確認します。

関連情報