Como posso fazer com que o centro de software crie automaticamente um atalho na minha área de trabalho toda vez que instala um aplicativo?

8

Eu tenho o iniciador do Unity oculto, pois prefiro usar o cairo dock.

É por isso que estou tentando encontrar uma maneira de fazer as coisas instaladas no Ubuntu Software Center para definir automaticamente um atalho na minha área de trabalho.

Ashleigh Johnson
fonte
Eu não consigo entender isso. Por que você quer fazer isso? Que ferramenta / lançador tem a ver com tudo?
Braiam 5/01/15
1
@Braiam Eu acredito que o OP quer ter um atalho criado na área de trabalho para os programas que ele baixou através do centro de software, da mesma forma que muitos programas do Windows. O iniciador foi mencionado porque o centro de software fixa automaticamente novas instalações nele, mas o OP não usa isso.
Seth
@Seth bem, isso é um palpite, porque ele quer que o software "baixe" para a área de trabalho.
Braiam 5/15
2
@Braiam Um pouco de compreensão de como os usuários mais novos pensam que ajuda muito;) Ele claramente não quer os binários em sua área de trabalho. Você nem pode usar o centro de software para fazer o download de binários.
Seth
Primeiro, estou falando ... quando falo sobre quando faço o download como gimp, ou coisas em PDF, jogos ou aplicativos, quero que ele vá para o meu desktop para que eu possa acessá-lo porque não uso a pequena barra de ferramentas que vem com o UBUNTU eu uso o dock do cairo e não consigo descobrir como mudar onde o centro de software do ubuntu (aqui é onde eu baixo programas sed) é baixado
Ashleigh Johnson

Respostas:

6

Execute o script abaixo em segundo plano e ele criará automaticamente um iniciador na área de trabalho (apenas) no software recém- instalado.

Isso também:

  • verifica se o novo item é realmente um aplicativo, destinado a iniciar a partir de um iniciador (verificando NoDisplay=true)
  • torna o iniciador em sua área de trabalho executável, pronto para uso.

Como usar

  • Copie o script abaixo em um arquivo vazio (use, por exemplo gedit), salve-o em algum lugar como make_starter.py.
  • Se você deseja testá-lo primeiro: execute-o a partir de uma janela de terminal usando o comando:

    python3 /path/to/make_starter.py
    

    Instale um aplicativo como você está acostumado. Um ícone deve aparecer na área de trabalho após a conclusão da instalação

  • Se tudo funcionar bem, adicione-o aos aplicativos de inicialização: Dash> Startup Applications> Add. Adicione o comando:

    python3 /path/to/make_starter.py
    

Nota

As versões localizadas do Ubuntu podem ter um nome diferente para "Desktop" ("Bureaublad" em holandês). Se sim, substitua na linha:

desktopname = "Desktop"

"Desktop" com o nome em localização.

O script

#!/usr/bin/env python3
import subprocess
import os
import time
import shutil

desktopname = "Desktop"
dr = "/usr/share/applications"

while True:
    current = os.listdir(dr)
    time.sleep(10)
    last = os.listdir(dr)
    for item in last:
        if not item in current and item.endswith(".desktop"):
            file = dr+"/"+item
            with open(file) as src:
                text = src.read()
            if not "NoDisplay=true" in text:
                target = os.environ["HOME"]+"/"+desktopname+"/"+item
                shutil.copyfile(file, target)
                command = "chmod +x "+target
                subprocess.Popen(["/bin/bash", "-c", command])
Jacob Vlijm
fonte
Obrigado @Jacobvlijm terei meu pai ler o seu comentário e fazê-lo para mim como eu não entendo todo o material técnico
Ashleigh Johnson
1
Isso não tem nada a ver com o objetivo da resposta, mas aproveito a oportunidade para observar a sintaxe do Python, é extremamente simples de entender. É claro que você pode usar algo como bash ou até C, mas não pode ser mais humano do que isso. :-)
Lucio
3
@Lucio boa chance de que se você escrever planície Inglês, você iria escrever um script python por acidente :)
Jacob Vlijm
1
@JacobVlijm eu não posso me impedir de dizer que, por outro lado, uma boa chance de que se você deixar um macaco na frente de um PC que ela ia escrever um Perlroteiro por acidente :)
kos
@ kos Eu não sabia que havia tantos macacos na AU :) Para ser sincero: meu gato ganhou a maior parte da minha reputação aqui. A resposta única que escrevi para mim foi a negativa :).
Jacob Vlijm 11/03/2015
3

Isso será incrivelmente confuso, pois pode haver mais de cem ícones de aplicativos. Os ícones (na verdade, arquivos lançador de desktop ) são geralmente em /usr/share/applications. Então você pode executar o seguinte comando em um terminal:

find /usr/share/applications -type f -name '*.desktop' -exec cp --target-directory ~/Desktop/ {} +

mas isso criaria uma cópia de cada iniciador na área de trabalho. ( possivelmente algumas centenas, dependendo do seu ambiente )

Você pode navegar /usr/share/applicationsno gerenciador de arquivos e copiá-los manualmente para aplicativos relevantes na área de trabalho. Não há maneira automática de fazer o Centro de Software fazer isso, pelo que sei.

muru
fonte
1
Gostaria de saber se o synaptic tem algum tipo de script pós-instalação que pode ser executado ou algo assim. Obviamente, o centro de software não teria isso, mas o synaptic pode. Caso contrário, a única outra maneira de conseguir isso seria instalar as coisas através da linha de comando com um script personalizado. Apenas pensando em voz alta.
Seth
Um provavelmente poderia salvar uma lista dos aplicativos instalados usando dpkge diffa nova lista de opções e a lista seleções anteriores após cada instalação. Em seguida, os atalhos podem ser criados usando um script que copia os .desktoparquivos relevantes para a área de trabalho.
Rohith Madhavan
1
Então, quando instalo algo, preciso colocá-lo manualmente na área de trabalho? Um pouco chato, mas eu posso lidar com isso
Ashleigh Johnson
1
Desculpem a editar @muru mas eu estou tentando proteger os inocentes ... ;-) No meu sistema: ls /usr/share/applications/*.desktop | wcdá:168 168 7851
Fabby
@AshleighJohnson, mas existe o seguinte: os aplicativos instalados são adicionados ao iniciador. Por isso, está disponível diretamente para você, mas não na área de trabalho.
Rinzwind