Tenho um arquivo chamado foo.txt
. Eu quero associar meu próprio programa com o tipo mime .txt
para que meu programa abra um terminal e mostre o conteúdo foo.txt
como saída padrão. Eu preferiria Ruby, mas scripts BASH também serão bons.
Um exemplo de trabalho: posso abrir um arquivo HTML com firefox
. Eu quero abrir txt
arquivos com meu próprio executável da mesma maneira.
Não consigo descobrir como posso realmente fazê-lo funcionar?
Exemplo 2: Posso abrir um .txt
arquivo com Geany/Mousepad/Atom/Code etc. Vamos supor que eu tenha feito uma ferramenta como o mousepad. Como meu programa deve lidar com o .txt
tipo MIME?
Até agora eu fiz um pequeno programa GUI com Ruby e o tornei executável e tentei abrir foo.txt
com meu programa (usei o gerenciador de arquivos Nemo). Eu capturei argumentos e stdins no meu programa Ruby para que ele mostre o Argumento e os STDINs, se houver. Mas meu programa nem aparece a janela se eu abrir um .txt
arquivo com ele!
Como devo alcançar o resultado?
Introdução
Quando um arquivo é aberto com um aplicativo, o arquivo é apenas passado para o aplicativo como um argumento.
Então, quando você abre o firefox-nightly localizado em
/bin/
comp.html
localizado em/home/user/
, é basicamente semelhante a executar/bin/firefox-nightly /home/user/p.html
.Criando um executável
Conforme mencionado na pergunta:
Vamos criar um programa Ruby conforme solicitado pelo OP que copiará o conteúdo de um arquivo passado como argumento para
/tmp/tempfile-#{n}
. Observe que qualquer linguagem de programação funcionará se puder aceitar argumentos de linha de comando.E vamos chamar nosso programa copycat.rb e movê-lo para o diretório /tmp/.
Certamente podemos executar o programa em um terminal como este:
Isso copiará todo o conteúdo de
/tmp/AFile
Onde/tmp/tempfile-#{n}
está#{n}
a contagem caso exista algum arquivo temporário duplicado.Criando uma entrada de aplicativo
Agora, para abrir isso com nosso programa no gerenciador de arquivos, precisamos criar uma entrada Application. Para isso, temos 2 opções. As primeiras opções são :
Crie um arquivo chamado copycat.desktop em
$HOME/.local/share/applications
, com o seguinte conteúdo:Não se esqueça de adicionar a
%u
opção à linha que começa com Exec.Teste
Bem, para testar, vamos criar um arquivo simples chamado com o conteúdo 'hello world' ou o que você quiser. Abra o gerenciador de arquivos e clique com o botão secundário do mouse no arquivo e selecione "Abrir com" ou opção semelhante. Como é relacionado à GUI, adicionarei algumas imagens de amostra.
Nautilus, "Abrir com outro aplicativo":
Nautilus, "Ver todos os aplicativos":
"Imitador":
Quando terminar, você pode ver o
tempfile-#{n}
criado em/tmp/
O gerenciador de arquivos que usei aqui é o Nautilus, mas isso também deve funcionar com outros gerenciadores de arquivos, apenas o texto pode ser diferente.
A segunda opção é disponibilizar o aplicativo para todos os usuários. Para fazer isso, você precisa mover o arquivo de
$HOME/.local/share/applications/copycat.desktop
to/usr/share/applications
e alterar a propriedade para root.É assim que o open com um executável personalizado funciona no Linux. Um aplicativo GUI semelhante pode ser criado e aberto da mesma maneira.
Minimalista, mas testado.
Este script você pode chamar de um primeiro xterm. Não olhe para o
case-esac
, mas observexterm
com-e
e e comercial.