xfce4-clipman requer acesso ao seu monitor Xorg (o sistema gráfico X11) - não apenas porque é realmente um aplicativo gráfico, mas também porque é um gerenciador de área de transferência e o X11 também o abrange.
O problema (principal): O seu display do Xorg ainda não está disponível na inicialização. Ele é iniciado no login , muito tempo depois que a inicialização do sistema foi concluída. Portanto, é impossível iniciar o xfce4-clipman "na inicialização" - o que você realmente quer é iniciar o aplicativo no login também.
(o Linux é desenvolvido para suportar múltiplos usuários, que podem logar e logar a qualquer momento - cada usuário obtém uma nova cópia do Xorg rodando, e a própria tela de login também recebe uma. Então os serviços não podem contar com Xorg estando disponível . )
Iniciar aplicativos no login
A maioria dos ambientes de desktop, incluindo o Xfce, pode iniciar tarefas de "login" via *.desktop files (que é de fato como vários componentes do Xfce são lançados).
Eles estão localizados em /etc/xdg/autostart/ para serviços globais e ~/.config/autostart/ para serviços pessoais. Depois de criar um, ele é "ativado" por padrão, embora ainda possa ser desativado por meio de xfce4-session-settings .
Na verdade, até o xfce4-clipman instala seu próprio arquivo de autoinicialização em / etc / xdg / autostart - ele é denominado xfce4-clipman-plugin-autostart.desktop . Deve funcionar automaticamente contanto que você esteja usando o Xfce4 (devido à OnlyShowIn=XFCE line).
Mas se o seu sistema estiver faltando esse arquivo, ou se você quiser usar o xfce4-clipman em um ambiente de desktop não-Xfce, então você pode criar um novo. Os arquivos .desktop da inicialização automática geralmente são assim:
[Desktop Entry] Type=Application Name=Clipboard manager Exec=xfce4-clipman Terminal=false
Iniciando manualmente programas não-CLI
Muitos ambientes de desktop têm uma caixa de diálogo "Executar" em Alt F2 , que permite executar programas sem ocupar um terminal.
Vários métodos de fazer o mesmo de um terminal são:
-
(setsid xfce4-clipman 2>/dev/null &) -
(xfce4-clipman &) -
nohup xfce4-clipman & -
xfce4-clipman & disown - e assim por diante.
Outros problemas com o seu script init.d
Em situações em que os serviços do sistema são apropriados, você deve se lembrar que os arquivos em /etc/init.d não são apenas scripts simples, eles também são executados no desligamento e devem aceitar subcomandos como "stop" ou "restart". Quando o sistema chama /etc/init.d/your_service stop , o initscript precisa realmente parar o serviço - não iniciá-lo novamente!
Você marcou a pergunta com systemd , então por que não salvar -se um monte de problemas e escrever um arquivo systemd *.service nativo em vez disso? Embora os scripts init.d "adequados" possam preencher várias telas, os serviços do systemd geralmente têm menos de uma dúzia de linhas.
Ainda mais importante: há muitas dezenas de serviços sendo iniciados em vários pontos no tempo. Em fases posteriores, algumas instalações estão disponíveis que as etapas anteriores não têm. (Por exemplo, networking.)
Se o seu script não declarar explicitamente seus requisitos de ordenação ("deve ser executado antes de Y, mas depois de Z"), o sistema operacional o executará em um estágio imprevisível, em paralelo com todo o resto. Se você for muito sortudo, ele será executado no momento certo - mas na maioria das vezes ele será executado muito cedo para qualquer coisa funcionar.
Nos arquivos unitários do systemd nativo, o pedido é especificado usando os parâmetros Before= e After= . (É uma boa idéia especificar dependências usando Requires= ou Wants= também.) Enquanto isso, os scripts init.d (com SysVinit e systemd) usam um bloco de comentário especial marcado com ### BEGIN INIT INFO , com parâmetros como Required-Start: e Should-Start: .