처음 로그인 시 앱 열기

처음 로그인 시 앱 열기

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

이 시나리오에서는 각 로그인에 대해 서비스가 항상 실행되고 스크립트는 해당 사용자가 이미 실행되었는지 여부를 확인합니다.

관련 정보