Abra um aplicativo no primeiro login

Abra um aplicativo no primeiro login

Eu sei que o Ubuntu suporta inicialização automática de aplicativos sempre que um usuário faz login. Mas o que eu gostaria de fazer é abrir um aplicativo específico toda vez que um novo usuário fizer login pela primeira vez e então o aplicativo não será iniciado automaticamente em nenhum login. Isso é possível?

Responder1

O que eu sugeriria é um processo de duas etapas:

  1. Crie um myapp.desktoparquivo no /etc/skel/.config/diretório. Tudo abaixo /etc/skelé copiado para as pastas dos novos usuários quando eles são criados. Para o formato desse arquivo, consulteComo adicionar um script de shell ao inicializador como atalho. Não se preocupe com o título - os .desktoparquivos são essencialmente iguais aos atalhos do Windows, e sua presença no ~/.config/autostart/diretório do usuário é o que permite que um aplicativo específico seja executado no login da GUI.

  2. Faça o script wrapper que executará o aplicativo desejado, mas também remova o inicializador específico, digamos, por exemplo

    #!/bin/bash
    gedit
    rm ~/.config/autostart/myapp.desktop
    

    Dessa forma, a entrada de inicialização automática será executada apenas no primeiro login e, nesse primeiro login, será removida. Potencialmente, você também pode querer remover o script em si, se necessário. Excluir também não é necessário, você pode simplesmente renomeá-lo viamv ~/.config/autostart/myapp.desktop ~/.config/autostart/myapp.desktop.bak

Observe que você não especificou qual aplicativo específico ou quais condições específicas são necessárias para que esse aplicativo funcione, portanto, este é apenas um exemplo aproximado e sinta-se à vontade para adaptá-lo às suas necessidades.

Por outro lado, um script pode nem ser necessário se o que você quer fazer for simples. Por exemplo, você pode querer ter a seguinte linha em seu .desktoparquivo:

Exec=bash -c 'firefox && rm ~/.config/autostart/myapp.desktop' myapp`

Responder2

Sim é possivel. Eu tenho uma ideia, mas talvez existam soluções melhores também, aqui está a minha ideia, espero que ajude;)

se você conhece um pouco de shelllinguagem de programação ou pythonou ... você pode fazer um script que sempre que você executar esse script, ele pegue seu nome de usuário e create a text file/a row in database/ a row in a fileantes desta etapa já verifique se esse nome de usuário estava no arquivo de banco de dados ou não, caso contrário, ele executa seu programa e, se sim, não. o código python pode ser assim (salve-o como 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

mas agora, como podemos configurar isso para ser executado no início? é fácil com o systemd. suponha que façamos este script python com o nome Runit.pyque precisamos:

sudo touch /etc/systemd/system/RunMyScript.service

então com

sudo gedit /etc/systemd/system/RunMyScript.service

digite isto nele:

[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

agora seu serviço está pronto para ser iniciado no login:

sudo systemctl enable RunMyScript.service

neste cenário seu serviço sempre roda para cada login e seu script verifica se para aquele usuário já foi executado ou não.

informação relacionada