.desktop arquivo não será aberto no Google Chrome quando lançado a partir do SpaceFm

4

Ao usar o Google Chrome, costumo arrastar links de sites da barra de endereço para uma pasta na área de trabalho para referência futura. Isso cria um arquivo .desktop que é essencialmente um link para uma página da web.

Esses arquivos da área de trabalho podem ser abertos facilmente no Nautilus & amp; PCmanFM simplesmente clicando duas vezes para abri-los, no entanto, quando abri-los usando o gerenciador de arquivos SpaceFM, o Google Chrome inicia o download do arquivo em vez de abri-lo como acontece com os outros gerenciadores de arquivos mencionados.

Eu posso abrir esses arquivos através do SpaceFM se clicar com o botão direito do mouse e abrir com o Firefox, mas não com o Google Chrome.

Um exemplo do arquivo da área de trabalho seria o seguinte:

[Desktop Entry]
Encoding=UTF-8
Name=Link to The Hidden Fortress (1958) - IMDb
Type=Link
URL=http://www.imdb.com/title/tt0051808/?ref_=nv_sr_2
Icon=text-html

Existe uma maneira de fazer esses arquivos .desktop abrirem normalmente no Google Chrome quando iniciados a partir do navegador SpaceFM?

    
por Kalamalka Kid 11.04.2016 / 02:33

1 resposta

2

1. Converta arquivos de link em lançadores

A solução abaixo oferece a opção de clicar com o botão direito do mouse no link ( .desktop file) e escolher > "Execute", que executará Google-Chrome para abrir o link. Ao editar as configurações de SpaceFm , você pode executar o link clicando duas vezes também (veja as notas [3] ).

Observequeasoluçãoeditaautomaticamente(somente)novoslinksnasuaáreadetrabalho,paraexecutarolinkespecificamentecomGoogle-Chrome

Oqueé

Umpequenoscriptdesegundoplanoverificaumavezacadadoissegundosparaarquivosnovos.desktopemsuaáreadetrabalho.Seumarquivorelevanteforencontrado,oarquivoéeditadodeumarquivoLinkemumarquivoAplicativo.Issoéfeitoeditandoduaslinhasdentrodoarquivo:

  • Alinha:

    Type=Link

    éalteradopara:

    Type=Application
  • Alinha:

    URL=<link>

    éalteradopara:

    Exec=/usr/bin/google-chrome-stable<link>

Nostestesqueexecutei,issotornaolink"passível de ser aberto" clicando com o botão direito do mouse em SpaceFm : clique com o botão direito em > Abra > Execute

O script

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

# --- define the (absolute) path to your desktop below
dr = "/absolute/path/to/your/desktop"
# edit (if necessary) the command to launch Google-Chrome
application = "/usr/bin/google-chrome-stable"

def find_relevant():
    return [f for f in os.listdir(dr) if f.endswith(".desktop")]

relevant1 = []

while True:
    time.sleep(2)
    relevant2 = [f for f in os.listdir(dr) if f.endswith(".desktop")]
    new = [f for f in relevant2 if not f in relevant1]
    if new:
        for f in new:
            f = dr+"/"+f
            rewrite = False
            lines = [l.strip() for l in open(f).readlines()]
            for i, l in enumerate(lines):
                if l.startswith("Type=Link"):
                    rewrite = True
                    lines[i] = "Type=Application"
                elif l.startswith("URL="):
                    lines[i] = l.replace("URL=", "Exec="+application+" ")
            if rewrite == True:
                print("rewrite")
                open(f, "wt").write(("\n").join(lines))            
    relevant1 = relevant2

Como usar

  1. Copie o script em um arquivo vazio, salve-o como edit_links.py
  2. Na seção head do seu script, edite o caminho para sua área de trabalho (como mencionado, use o caminho absoluto aqui)
  3. Verifique o comando para executar Google-Chrome (também definido na seção head) verificando a primeira linha Exec= no arquivo google-chrome.desktop : run

    gedit /usr/share/applications/google-chrome.desktop
    

    para ler o arquivo.

  4. Teste o script com o comando:

    python3 /path/to/edit_links.py
    

    Abra Google-Chrome , arraste os links para sua área de trabalho e teste após alguns segundos, se funcionar bem.

  5. Se tudo funcionar bem, adicione-o aos aplicativos de inicialização: Dash > Aplicativos de inicialização > Adicionar. Adicione o comando:

    python3 /path/to/edit_links.py
    

Nota

  1. O arquivo arrastado .desktop (link) precisa estar na sua Área de Trabalho, pelo menos, um a dois segundos para ser encontrado e editado, então se você mover os links, pelo menos deixe-os por alguns segundos na sua Área de Trabalho. :)
  2. ll o script é verificar se há novos arquivos .desktop na sua área de trabalho, ele só lê / edita o arquivo (s) se houver novos arquivos. Isso significa nada para o seu sistema.
  3. Ao editar as configurações de SpaceFm , você também pode executar o "link" clicando duas vezes:

Convertaseusarquivosdelinkexistentesrecursivamente

Alémdisso,conformediscutidonochat,umscriptparaexecutarumaúnicavezparaconverteroslinksemumdiretóriorecursivamente:

#!/usr/bin/env python3 import os import sys # --- define the (absolute) path to your desktop below dr = sys.argv[1] # edit (if necessary) the command to launch Google-Chrome application = "/usr/bin/google-chrome-stable" for root, dirs, files in os.walk(dr): for f in files: if f.endswith(".desktop"): f = root+"/"+f rewrite = False lines = [l.strip() for l in open(f).readlines()] for i, l in enumerate(lines): if l.startswith("Type=Link"): rewrite = True lines[i] = "Type=Application" elif l.startswith("URL="): lines[i] = l.replace("URL=", "Exec="+application+" ") if rewrite == True: open(f, "wt").write(("\n").join(lines))

Para usá-lo, salve-o como convert_links.py , execute-o com o diretório de destino como um argumento:

python3 /path/to/convert_links.py <directory>

2. Converter links em arquivos de links utilizáveis entre plataformas

Conforme solicitado pelo OP, abaixo de uma versão do script (primeiro) (background), convertendo os arquivos de link, criados ao arrastar um link do navegador para a área de trabalho, em entre plataformas links. O uso é exatamente como explicado na primeira seção.

O script

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

# --- define the (absolute) path to your desktop below
dr = "/absolute/path/to/your/desktop"

out1 = ["<html>", "<body>", '<script type="text/javascript">']
out2 = ["</script>", "</body>", "</html>"]

def find_relevant():
    return [f for f in os.listdir(dr) if f.endswith(".desktop")]

relevant1 = []

while True:
    time.sleep(2)
    relevant2 = [f for f in os.listdir(dr) if f.endswith(".desktop")]
    new = [f for f in relevant2 if not f in relevant1]
    if new:
        for f in new:
            f = dr+"/"+f
            rewrite = False
            lines = [l.strip() for l in open(f).readlines()]
            for i, l in enumerate(lines):
                if l.startswith("Type=Link"):
                    rewrite = True
                elif l.startswith("URL="): 
                    url = 'window.location.href = "'+l.replace("URL=", "")+'"'
                    out1.append(url)
                elif l.startswith("Name="):
                    name = l.replace("Name=", "")
            if rewrite == True:
                open(f.replace(".desktop", ".html"), "wt").write(("\n").join(out1+out2))
                os.remove(f)
    relevant1 = relevant2

Versão para converter seus links existentes em um diretório recursivo (execução única)

#!/usr/bin/env python3
import os
import sys

dr = sys.argv[1]

out1 = ["<html>", "<body>", '<script type="text/javascript">']
out2 = ["</script>", "</body>", "</html>"]

for root, dirs, files in os.walk(dr):
    for f in files:
        if f.endswith(".desktop"):
            f = root+"/"+f
            rewrite = False
            lines = [l.strip() for l in open(f).readlines()]
            for i, l in enumerate(lines):
                if l.startswith("Type=Link"):
                    rewrite = True
                elif l.startswith("URL="): 
                    url = 'window.location.href = "'+l.replace("URL=", "")+'"'
                    out1.append(url)
                elif l.startswith("Name="):
                    name = l.replace("Name=", "")
            if rewrite == True:
                open(f.replace(".desktop", ".html"), "wt").write(("\n").join(out1+out2))
                os.remove(f)

Para usá-lo, salve-o como convert_links.py , execute-o com o diretório de destino como um argumento:

python3 /path/to/convert_links.py <directory>

Nota

Esta versão foi baseada em essa resposta legal no Superusuário para criar links entre plataformas.

    
por Jacob Vlijm 06.05.2016 / 11:07