A GUI é uma parte distinta do sistema operacional e uma máquina pode ter vários ambientes de GUI. Suas tentativas com o systemd não estão funcionando porque os serviços são executados fora de um contexto da GUI. Na verdade, eles são executados antes do início da GUI. Para executar xinput
, você precisa ter uma GUI, que é fornecida por um servidor X .
Os aplicativos sabem qual é o contexto da GUI (ou seja, com qual servidor X se comunica) por meio da variável de ambiente DISPLAY
. Esta é uma maneira de verificar se uma GUI está disponível: se essa variável não estiver definida, você estará fora de um contexto da GUI. (Definir a variável não criará um contexto da GUI. Ela pode permitir que você se conecte a um contexto da GUI existente de fora, mas isso não é relevante aqui.)
Se o seu login estiver no modo gráfico, então você está usando um gerenciador de exibição . Você pode configurar o gerenciador de exibição para executar xinput
e, em seguida, as configurações serão aplicadas assim que o prompt de login for exibido. Como fazer isso depende de qual gerenciador de exibição você está usando; consulte Como posso executar um script que inicia antes da minha tela de login? para obter mais detalhes.
Não importa o seu login, você pode aplicar as configurações como parte dos seus scripts de login. Se você estiver usando .xinitrc
ou .xsession
para iniciar sua sessão GUI, adicione o comando lá. Se você estiver usando um ambiente de área de trabalho que tenha um conceito de aplicativos de inicialização, adicione o comando xinput
, ou um script que o executa, aos seus aplicativos de inicialização. Se você estiver usando um gerenciador de janelas diretamente, verifique sua documentação para saber como executar um comando na inicialização (quase qualquer gerenciador de janelas pode fazer isso).
Como você está usando o i3, é possível executar um comando no tempo de login da GUI, colocando um exec
command no seu ~/.i3/config
:
exec xinput set-prop 11 290 1
Embora o systemd inicie o gerenciador de exibição como um serviço, não acho que ele forneça uma maneira de executar um comando no contexto da GUI resultante. Pode fornecer uma maneira de executar um comando quando você efetuar login; veja o Arch Wiki para exemplos.