Запустить исполняемый файл из Caja

Запустить исполняемый файл из Caja

Как новый «суперпользователь» Linux, пытающийся перейти с Windows 7, я не решался задавать элементарные вопросы, на которые можно ответить с помощью поиска, но я застрял на этом.

Когда я создаю исполняемый файл из C с помощью gcc в терминале Linux, называемый say hello.exeit have given Xpermission. Тогда из терминала я могу запустить ./hello.exeбез проблем.

Но когда я пытаюсь запустить его из Caja, он просто показывает свои компоненты как текстовый файл. Я могу, однако, выбрать "Запуск от имени администратора", но тогда мне придется ввести свой пароль для входа.

Это не зависит от того, какой из этих двух параметров включен:

  • Запускать исполняемые текстовые файлы при их открытии.
  • Просмотр исполняемых текстовых файлов при их открытии.

Я оставляю это во второй настройке, иначе каждый раз при просмотре или редактировании текстового файла мне будут спрашивать, что я хочу сделать.

Я попытался запустить Caja из терминала с помощью sudo caja(нужен пароль), но тогда Caja не запустит исполняемый файл совсемпотому что опция «Выполнить» больше недоступна.

Как запустить исполняемый файл из Caja напрямую: двойным щелчком?


Редактировать: Можно ли запустить исполняемый файл излюбойфайловый менеджер простым двойным щелчком?
Редактировать 2: Сейчас запускаю Mint Cinnamon с файловым менеджером Nemo, но вопрос в основном тот же. Я упускаю какую-то настройку, которая позволяет исполняемому файлу запускаться напрямую?
Редактировать 3:

В ходе моего исследования я обнаружил
GNOME удаляет возможность запуска бинарных приложений из Nautilus:

«Или, говоря другими словами, вы не сможете дважды щелкнуть по программам, скриптам или приложениям, чтобы запустить их с помощью Nautilus». (Май 2018 г.)

И поскольку я подозреваю, что авторы файловых менеджеров разрабатывают их как производные от открытого исходного кода (или, возможно, используют общие системные компоненты), возможно, сейчас никто из них этого не делает.

Я также нашел эту страницу в ВикипедииСравнение файловых менеджеровимеет различные таблицы. Одна называетсяХарактеристики файлапоследний столбец - «Запуск исполняемых файлов», поэтому я перепробовал несколько из этих файловых менеджеров.

  • Никтоиз них запустят исполняемый файл, который я скомпилировал (а некоторые из них даже не позволят получить легкий доступ к моему рабочему диску, который никогда не является системным диском).

Но в любом случае, на данный момент я нашел простое решение: мой любимый текстовый редактор Geany будет запускать исполняемый файл текущего исходного файла, если он существует, одним щелчком мыши или нажатием клавиши F5, не создавая при этом проект.

решение1

Да, вы можете запустить исполняемый файл из файлового менеджера, например Caja.

hello.cДопустим, у вас в домашнем каталоге есть файл /home/User, содержащий простую программу «Hello, World» без графического интерфейса, например:

#include <stdio.h>

int main()
{
    printf("hello, world\n");
}

и программа компилируется путем запуска gcc -o hello hello.cдля создания исполняемого файла hello.

Для непосредственного запуска helloиз Caja вы можете предоставить средство запуска, которое запустит терминал и запустит в нем исполняемый файл, или вы можете предоставить исполняемому файлу простой графический интерфейс.

Если вы планируете использовать лаунчер, то перед тем, как что-либо делать (если вы этого еще не сделали), лучше всего открыть терминал, перейти в «Настройки», добавить новый профиль с именем, например, «HoldOpen», и установить «Когда команда завершается» на вкладке «Команда» этого профиля на «Удерживать терминал открытым». В противном случае терминал откроется, запустит программу и закроется до того, как вы увидите какие-либо результаты при запуске из лаунчера.

Затем создайте лаунчер для helloпрограммы. Лаунчер — это просто текстовый файл с .desktopрасширением; концептуально это что-то вроде ярлыка Windows. .desktopРасширение не отображается, когда файл появляется в Caja, но оно видно в списке каталогов в терминале. Простой лаунчер для этой цели, который следует сохранить как hello.desktopесть:

[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

Средство запуска можно написать вручную или (как в примере выше) сгенерировать, щелкнув правой кнопкой мыши на рабочем столе, выбрав «Создать средство запуска...» и заполнив как минимум поля «Имя» и «Команда» (последнее соответствует клавише «Exec»).

Двойной щелчок по файлу запуска в Caja должен запустить helloего в собственном терминале и отобразить там свой вывод.

Обратите внимание, что клавиша «Terminal» установлена ​​в значение «false», поскольку на самом деле запущен mate-terminal, причем helloзапущен он в mate-terminal.

Также обратите внимание, что если вы используете gnome-terminal вместо mate-terminal, вам может потребоваться добавить несколько новых строк перед «hello, world», чтобы увидеть вывод в терминале.

Дополнительную информацию о лаунчерах можно найти на сайте Freedesktop.org.Технические характеристики начального уровня рабочего стола.

Альтернативой, которая позволяет запускать программу в Caja напрямую двойным щелчком без необходимости в средстве запуска, является использование приложения Zenity для генерации диалоговых окон GUI по мере необходимости, тем самым предоставляя программе простой GUI. Вы должны иметь возможность установить Zenity, запустив sudo apt-get install zenity. Затем, , вы можете заменить stdio оператор printf в программе hello.c на stdlib и системный вызов для отображения диалогового окна:

#include <stdlib.h>

int main()
{
system("zenity --info --title='Hello' --text='hello, world'");
}

man zenityБолее подробную информацию о приложении Zenity см . здесь.

Связанный контент