Como um novo "superusuário" do Linux tentando migrar do Windows 7, tenho resistido a fazer perguntas básicas que podem ser respondidas por pesquisa, mas estou preso nisso.
Quando eu crio um arquivo executável de C com gcc no terminal Linux, chamado diz hello.exe
que recebeu X
permissão. Então, a partir do terminal, posso executar ./hello.exe
sem problemas.
Mas quando tento executá-lo no Caja, ele apenas mostra seus componentes como um arquivo de texto. Posso, no entanto, selecionar "Executar como administrador", mas preciso inserir minha senha de login.
Isso ocorre independentemente de qual dessas duas configurações está habilitada:
- Execute arquivos de texto executáveis quando eles forem abertos.
- Visualize arquivos de texto executáveis quando eles forem abertos.
Deixo-a como a segunda configuração, caso contrário, me perguntam o que quero fazer toda vez que visualizo ou edito um arquivo de texto.
Tentei iniciar o Caja a partir do terminal com sudo caja
(precisa de senha), mas o Caja não executa o executável de forma algumaporque a opção Executar não está mais lá.
Como posso executar um executável diretamente do Caja: com um clique duplo?
Editar: você pode executar um executável dequalquergerenciador de arquivos com um simples clique duplo?
Edição 2: Agora executando o Mint Cinnamon com o gerenciador de arquivos Nemo, mas a questão é basicamente a mesma. Estou faltando alguma configuração que permite que um executável seja executado diretamente?
Editar 3:
Durante minha pesquisa descobri
GNOME está removendo a capacidade de iniciar aplicativos binários do Nautilus:
"Ou, dito de outra forma, você não poderá clicar duas vezes em programas, scripts ou aplicativos para iniciá-los usando o Nautilus." (Maio de 2018)
E como suspeito que os autores dos gerenciadores de arquivos os desenvolvam como derivados de código-fonte aberto (ou talvez usem componentes comuns do sistema), talvez nenhum deles o faça agora.
Eu também encontrei esta página da WikipediaComparação de gerenciadores de arquivostem várias tabelas. Aquele chamadoRecursos de arquivotem a última coluna como "Executar arquivos executáveis", então experimentei vários desses gerenciadores de arquivos.
- Nenhumdeles executariam um arquivo executável que eu compilei (e alguns deles nem sequer permitirão acesso fácil à minha unidade de trabalho – que nunca é a unidade do sistema).
Mas de qualquer forma, descobri uma solução fácil por enquanto, que é que meu editor de texto favorito, Geany, executará um executável do arquivo de origem atual, se existir, a partir de um único clique ou pressionamento da tecla F5, sem transformá-lo em um projeto .
Responder1
Sim, você pode executar um executável de um gerenciador de arquivos como o Caja.
Digamos que você tenha um arquivo hello.c
no diretório inicial /home/User
contendo um programa simples "olá, mundo" sem GUI, como:
#include <stdio.h>
int main()
{
printf("hello, world\n");
}
e o programa é compilado executando gcc -o hello hello.c
para gerar um arquivo executável hello
.
Para iniciar hello
diretamente do Caja, você pode fornecer um inicializador que iniciará um terminal e executará o executável nele, ou poderá fornecer o executável com uma GUI simples.
Se você planeja usar um inicializador, antes de fazer qualquer outra coisa (a menos que já tenha feito isso anteriormente), seria melhor abrir um terminal, ir em Preferências, adicionar um novo perfil chamado, por exemplo, "HoldOpen" e definir " Quando o comando sair" na guia "Comando" desse perfil para "Manter o terminal aberto". Caso contrário, o terminal abrirá, executará o programa e fechará antes que você possa ver qualquer resultado ao iniciar a partir de um inicializador.
Em seguida, crie um inicializador para o hello
programa. Um iniciador é apenas um arquivo de texto com uma .desktop
extensão; conceitualmente, é algo como um atalho do Windows. A .desktop
extensão não é mostrada quando o arquivo aparece no Caja, mas fica visível em uma listagem de diretórios em um terminal. Um lançador simples para o efeito que deve ser salvo como hello.desktop
está:
[Desktop Entry]
Version=1.0
Type=Application
Name=hello
Comment=
Exec=mate-terminal --profile=HoldOpen -e "/home/User/hello"
Icon=
Path=
Terminal=false
StartupNotify=false
Um launcher pode ser escrito à mão, ou (como o acima) gerado clicando com o botão direito na área de trabalho, selecionando "Criar Launcher...", e preenchendo pelo menos as caixas "Nome" e "Comando" (as última correspondente à tecla "Exec").
Clicar duas vezes no arquivo inicializador no Caja deve iniciar hello
em seu próprio terminal e exibir sua saída nele.
Observe que a chave "Terminal" está definida como "false" porque na verdade é o mate-terminal que está sendo executado, sendo hello
executado no mate-terminal.
Observe também que se você usar o gnome-terminal em vez do mate-terminal, pode ser necessário adicionar algumas novas linhas antes de "olá, mundo" para poder ver a saída no terminal.
Para obter mais informações sobre iniciadores, consulte Freedesktop.orgEspecificação de entrada para desktop.
Uma alternativa que permite executar o programa diretamente no Caja clicando duas vezes sem a necessidade de um inicializador é usar o aplicativo Zenity para gerar caixas de diálogo GUI conforme necessário, fornecendo assim ao programa uma GUI simples. Você deve conseguir instalar o Zenity executando o sudo apt-get install zenity
. Então, você pode substituir stdio pela instrução printf no programa hello.c por stdlib e uma chamada de sistema para exibir uma caixa de diálogo:
#include <stdlib.h>
int main()
{
system("zenity --info --title='Hello' --text='hello, world'");
}
Consulte man zenity
para obter mais informações sobre o aplicativo Zenity.