Linux create desktop file

Программа для создания desktop-файлов

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

Немного о desktop-файлах

Вот пример desktop-файла для консольной игры nsnake:

[Desktop Entry] Version=1.1 Type=Application Name=nsnake GenericName=Classic snake game on the terminal NoDisplay=false//отображать в меню Icon=nsnake Exec=nsnake Terminal=true//запускать в терминале Actions= Categories=ActionGame;Game; Keywords=snake;ncurses;textual;terminal;

Тут и так все понятно, но я все-таки прокомментировал пару позиций. Самое главное, что нужно прописать это название приложения (Name), путь до исполняемого файла (Exec) и путь до иконки (Icon). Если иконки нет и нет желания ее искать или создавать, то некоторые окружения рабочего стола установят иконку по умолчанию.

Краткое описание

Исходники приложения находятся здесь. Программа довольно простая. Выглядит она вот так:

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

В хидербаре находится кнопка, при нажатии на которую в файловом менеджере откроется папка, находящаяся по пути /.local/share/applications. Именно там программа сохраняет созданные файлы.

Как работает

Приложение написано на языке Vala с помощью среды разработки GNOME Builder. Устанавливал самую свежую версию среды (40.0) из репозитория Flathub. Оказалось, что визуальный дизайнер в этой версии еще багованнее, чем в предыдущей, поэтому интерфейс делал в Glade.

После того как созданы значки в полях ввода и к ним, также как и к другим кнопкам, привязаны необходимые действия, записываем в переменную directory_path путь до папки с desktop-файлами. Также на всякий случай надо проверить наличие этой папки перед запуском приложения и если папка по каким-то причинам отсутствует, то вывести специальное сообщение и деактивировать кнопку CREATE, так как в этом случае в ней нет необходимости.

 button_open.clicked.connect(on_open_directory); button_create.clicked.connect(on_create_file); directory_path = Environment.get_home_dir()+"/.local/share/applications"; GLib.File file = GLib.File.new_for_path(directory_path); if(!file.query_exists())

При нажатии на кнопку CREATE вызывается метод on_create_file:

private void on_create_file () < if(is_empty(entry_name.get_text()))GLib.File file = GLib.File.new_for_path(directory_path+"/"+entry_name.get_text().strip()+".desktop"); if(file.query_exists()) var dialog_create_desktop_file = new Gtk.MessageDialog(this,Gtk.DialogFlags.MODAL,Gtk.MessageType.QUESTION, Gtk.ButtonsType.OK_CANCEL, "Create file "+file.get_basename()+" ?"); dialog_create_desktop_file.set_title("Question"); Gtk.ResponseType result = (Gtk.ResponseType)dialog_create_desktop_file.run (); dialog_create_desktop_file.destroy(); if(result==Gtk.ResponseType.OK) < create_desktop_file();//создаем файл >>

Он предназначен для проверки ввода имени файла и проверки возможных совпадений с именами уже существующих в папке файлов, а также для вывода запроса подтверждения на создание файла. Если все проверки пройдены и пользователь подтвердил создание файла, то вызывается метод create_desktop_file:

private void create_desktop_file()< string display; if(checkbutton_no_display.get_active())else < display="false"; >string terminal; if(checkbutton_terminal.get_active())else < terminal="false"; >string desktop_file="[Desktop Entry] Encoding=UTF-8 Type=Application NoDisplay="+display+" Terminal="+terminal+" Exec="+entry_exec.get_text().strip()+" Icon="+entry_icon.get_text().strip()+" Name="+entry_name.get_text().strip()+" Comment="+entry_comment.get_text().strip()+" Categories="+entry_categories.get_text().strip();//записываем содержимое будущего файла в переменную string path=directory_path+"/"+entry_name.get_text()+".desktop"; try < FileUtils.set_contents (path, desktop_file);//создаем файл >catch (Error e) < stderr.printf ("Error: %s\n", e.message); >GLib.File file = GLib.File.new_for_path(path); if(file.query_exists())else < alert("Error! Could not create file"); >>

Чтобы просмотреть готовые файлы существует метод on_open_directory. Он срабатывает при нажатии на кнопку в хидербаре.

private void on_open_directory()< try< Gtk.show_uri_on_window(this, "file://"+directory_path, Gdk.CURRENT_TIME); >catch(Error e) < alert("Error!\n"+e.message); >>

Для выбора исполняемого файла используется следующий код:

private void on_open_exec() < var file_chooser = new Gtk.FileChooserDialog ("Choose a file", this, Gtk.FileChooserAction.OPEN, "_Cancel", Gtk.ResponseType.CANCEL, "_Open", Gtk.ResponseType.ACCEPT); if (file_chooser.run () == Gtk.ResponseType.ACCEPT) < entry_exec.set_text(file_chooser.get_filename()); >file_chooser.destroy (); >

А для выбора иконки код сложнее, так как данный диалог, помимо фильтра, содержит функционал предварительного просмотра изображения:

private void on_open_icon () < var file_chooser = new Gtk.FileChooserDialog ("Select image file", this, Gtk.FileChooserAction.OPEN, "_Cancel", Gtk.ResponseType.CANCEL, "_Open", Gtk.ResponseType.ACCEPT); Gtk.FileFilter filter = new Gtk.FileFilter (); file_chooser.set_filter (filter);//установка фильтра для изображений filter.add_mime_type ("image/jpeg"); filter.add_mime_type ("image/png"); Gtk.Image preview_area = new Gtk.Image (); file_chooser.set_preview_widget (preview_area);//установка области предпросмотра file_chooser.update_preview.connect (() => < string uri = file_chooser.get_preview_uri (); string path = file_chooser.get_preview_filename(); if (uri != null && uri.has_prefix ("file://") == true) < try < Gdk.Pixbuf pixbuf = new Gdk.Pixbuf.from_file_at_scale (path, 250, 250, true); preview_area.set_from_pixbuf (pixbuf);//установка изображения preview_area.show ();//показываем область предпросмотра >catch (Error e) < preview_area.hide ();//скрываем область предпросмотра >> else < preview_area.hide (); >>); if (file_chooser.run () == Gtk.ResponseType.ACCEPT) < entry_icon.set_text(file_chooser.get_filename()); >file_chooser.destroy (); >

Метод для вывода сообщений пользователю:

private void alert (string str)

Чтобы проверить введено ли какое-либо значение в текстовое поле используется такой метод:

private bool is_empty(string str)

На этом все! Надеюсь, что пост был для Вас полезен.

Читайте также:  Disco duro reparar linux

Дополнительная ссылка на SourceForge. До встречи в следующих постах!

Источник

Как создать файл .Desktop для установленного приложения в Linux

Файл .desktop — это ярлык, используемый для запуска приложений в Linux. Без файла .desktop ваше приложение не будет отображаться в списке приложений, и вы не сможете запустить его с помощью сторонних проигрывателей, таких как Synapse и Albert.

Как создать файл .Desktop для установленного приложения в Linux - Linux

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

В этой статье объясняется, как создать файл .desktop для любого используемого вами приложения, которое можно запустить из меню «Приложения».

Как создать настольный лаунчер

Файл «.desktop» — это, по сути, простой текстовый файл, содержащий информацию о программе. Обычно он помещается в «~ / .local / share / applications» или «/ usr / share / applications /» в зависимости от того, хотите ли вы, чтобы программа запуска имела доступ к нему только в локальной учетной записи или для всех. Если вы перейдете в любой каталог в файловом менеджере, вы увидите очень мало файлов «.desktop», совместимых с приложениями, установленными на вашем компьютере.

В демонстрационных целях я собираюсь создать файл .desktop для Super Tux Kart, гоночной игры на картинге, в которую я люблю иногда играть. Его версия доступна в репозиториях ubuntu, но часто отстает от последней стабильной версии.

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

Читайте также:  Linux запуск терминала от имени администратора

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

Примечание. Следующие шаги предполагают, что у вас есть архив программы, для которой вы хотите создать средство запуска в папке «Загрузки».

1. Перейдите в каталог, в котором сохранен архив, щелкните его правой кнопкой мыши и выберите «Извлечь сюда».

Как создать файл .Desktop для установленного приложения в Linux - Linux

2. После завершения извлечения перейдите во вновь созданную папку и найдите исполняемый файл .exe. Там, где вы его найдете, щелкните правой кнопкой мыши «Выполнить», чтобы запустить программу, просто чтобы убедиться, что она работает.

Как создать файл .Desktop для установленного приложения в Linux - Linux

3. В некоторых случаях вы не увидите опцию «Играть» в меню. Часто файл реализации представляет собой текстовый файл. Вы можете получить информацию об этом, выполнив его через терминал, или, если вы используете GNOME, щелкните меню файла на верхней панели и выберите «Настройки».

Как создать файл .Desktop для установленного приложения в Linux - Linux

4. Выберите вкладку «Поведение» и выберите параметр «Запустить» в разделе «Исполняемые текстовые файлы». Теперь при щелчке правой кнопкой мыши исполняемого текстового файла должна появиться опция «Выполнить».

Как создать файл .Desktop для установленного приложения в Linux - Linux

5. Если при запуске вы подтвердили, что приложение работает, вы можете выйти из него. Затем запустите текстовый редактор и вставьте следующее в пустой текстовый файл:

[Desktop Entry] Encoding=UTF-8 Version=1.0 Type=Application Terminal=false Exec=/path/to/executable Name=Name of Application Icon=/path/to/icon

Вам нужно изменить поле «Exec» на путь к исполняемому файлу и «Name» на имя приложения. Большинство программ предоставляют код где-нибудь в архиве, так что не забудьте включить и его. В моем случае файл запуска для Super Tux Kart выглядит так:

Как создать файл .Desktop для установленного приложения в Linux - Linux

6. Сохраните файл в папке «~ / .local / share / applications» как «application-name.desktop». Папка «.local» — это скрытая папка в вашем домашнем каталоге, и у вас будет включен режим «Показать скрытые файлы» для ее просмотра. Если вы хотите, чтобы он был доступен для всех, выполните в терминале следующую команду:

sudo mv ~/.local/share/applications/ /usr/share/applications/

Конечно, не забудьте поменять на фактическое имя файла .desktop.

Читайте также:  Linux своя bash команда

7. После этого просто откройте список приложений на рабочем столе, и приложение будет полностью готово для использования.

Как создать файл .Desktop для установленного приложения в Linux - Linux

Описанный здесь метод должен работать во всех основных операционных системах на базе Linux. А вот еще один снимок, показывающий Super Tox Kart.

Как создать файл .Desktop для установленного приложения в Linux - Linux

Не стесняйтесь оставлять комментарии ниже, если вы нашли этот урок полезным.

Источник

Оцените статью
Adblock
detector