Добавление пользовательских приложений в GNOME 3 launcher

Ищу утилиту, которая позволяет мне вставлять элемент в список приложений, о которых знает GNOME.

Например:
Я скачал Eclipse EE (у меня есть несколько очень специальных плагинов, с которыми мне нужно работать, и этим плагинам не "нравится" версия, доступная в репозитории по умолчанию). Я использую GNOME 3 на Ubuntu 11.10. Поэтому я хочу выполнить Eclipse без открытия терминала и его запуска.

Это должно быть что-то очень простое.

Для этого вы можете воспользоваться Главным меню. Если нет, сначала установите его:

sudo apt-get install alacarte

1. Откройте Главное меню

2. Смотрите пример

Main Menu

После этого вы можете вызывать свои приложения с именем: "command_of_application".

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

Приложения, о которых знает Gnome, - это файлы .desktop в /usr/share/applications, и ~/.local/share/applications. Вы можете создавать пользовательские пусковые установки для всего, что находится в вашей домашней папке, либо вручную создав и отредактировав пользовательский файл .desktop, либо используя Alacarte, старый редактор меню Gnome.

Документация по файлу рабочего стола Gnome может быть полезной: https://developer.gnome.org/integration-guide/stable/desktop-files.html.en

Пользовательский лаунчер - это просто текстовый файл с именем, например, EclipseEE.desktop, со следующим содержанием:

[Desktop Entry]Name=Eclipse EEExec=/home/mrPeterson/path_to_executableStartupNotify=trueTerminal=falseType=ApplicationIcon=/optional/path/to/icon.png

(Репост из оригинальной статьи)

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

gnome-desktop-item-edit ~/Desktop/ --create-new

Теперь у меня есть Значок. Это была хорошая функция, привязанная к контекстному меню, но, увы, я ее не вижу.

Мне нравится простота Хорхе gnome-desktop-item-edit решение. Однако, если я размещу .desktop досье на ~/Desktop/ он отображается не как приложение, а только как файл в меню gnome. Так что я делаю:

sudo gnome-desktop-item-edit /usr/share/applications/ --create-new

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

Предупреждение: Я только что сделал это. Это может быть не идеально.

new-gnome-launcher-app(){    # This functions adds some executable file to the gnome launcher.    # It does the following:    #   - Add symlink to /usr/bin    #   - Add entry for gnome launcher    # TODO: Check image file extension    # Check if root    # if [ "$(id -u)" != "0" ]; then     #   echo "Must run as root"    #   return 1    # fi    # If parameter is entered, assume it's the executable's directory.    # Else, ask for it    if [ "$?" -gt "1" ]; then        exec_path="$1"    else        echo -n "Enter executable file name: "        read exec_path    fi    # Check if file exists    if [ ! -f "$exec_path" ] || [ ! -f "$(pwd)/$exec_path" ]; then        echo "File doesn't exist"        unset exec_path        return 1    fi    # Get absolute path to file    if [ "${exec_path:0:1}" != "/" ]; then        echo "'$exec_path' was not an absolute path"        exec_path="$(pwd)/$exec_path"        echo "Assuming path '$exec_path'"    fi    exec_basename="$(basename "$exec_path")"    # Check if symlink already exists    if [ -f "/usr/bin/$exec_basename" ]; then        echo "File '/usr/bin/$exec_basename' already exists. We wont be able to create the symlink."        unset exec_basename        unset exec_path        return 1    fi    # Add entry for gnome panel    gnome_panel_entry_path="/usr/share/applications/$exec_basename.desktop"    if [ -f "$gnome_panel_entry_path" ]; then        echo "Entry '$(basename "$gnome_panel_entry_path")' already exists!"        unset exec_basename        unset gnome_panel_entry_path        unset exec_path        return 2    fi    # ask for display name    while [ "$USER_RESPONSE" != "y" ] && [ "$USER_RESPONSE" != "Y" ]; do        echo -n "Enter the program's name: "        read APP_NAME        while [ "$APP_NAME" == "" ]; do            echo -n "Please enter something: "            read APP_NAME        done        # ask for a description        echo -n "Enter a short description: "        read APP_DESCRIPTION        # ask for an icon file        echo -n "Enter absolute path to an icon image (empty for none): "        read APP_ICON        while [ "$APP_ICON" != "" ] && [ ! -f "$APP_ICON" ]; do            echo -n "File doesn't exist. Retry: "            read APP_ICON        done         # ask if it needs a terminal        echo -n "Will this program need a terminal? [y/n]: "        read APP_TERMINAL        while [ "$APP_TERMINAL" != "y" ] && [ "$APP_TERMINAL" != "n" ]; do            echo -n "Please enter something: "            read APP_TERMINAL        done        if [ "$APP_TERMINAL" == "y" ]; then            APP_TERMINAL="true"        else            APP_TERMINAL="false"        fi        # ask for tags        echo -n "Enter some categories that fit your program (';' separated): "        read APP_CATEGORIES        # Check if user is satisfied        while [ "$USER_RESPONSE" == "" ] || [ "$USER_RESPONSE" != "y" ] && [ "$USER_RESPONSE" != "Y" ] && [ "$USER_RESPONSE" != "n" ] && [ "$USER_RESPONSE" != "N" ]; do            echo -e "Is this information correct?\n"            echo -e "\tName: \t\t$APP_NAME"            echo -e "\tExecutable: \t$exec_path"            echo -e "\tDescription: \t$APP_DESCRIPTION"            echo -e "\tIcon File: \t$APP_ICON"            echo -e "\tTerminal: \t$APP_TERMINAL"            echo -e "\tCategories: \t$APP_CATEGORIES"            echo -n "(y/n): "            read USER_RESPONSE        done        if [ "$USER_RESPONSE" == "n" ] || [ "$USER_RESPONSE" == "N" ]; then            echo "Then please enter everything again, kind sir"            unset USER_RESPONSE        fi    done    # User is happy    # Add link to /usr/bin    echo "Adding link to /usr/bin"    sudo ln -s "$exec_path" "/usr/bin/$exec_basename"    # Add gnome panel entry    echo "Creating gnome-panel entry"    echo "[Desktop Entry]" | sudo tee -a "$gnome_panel_entry_path" > /dev/null    echo "Type=Application" | sudo tee -a "$gnome_panel_entry_path" > /dev/null    echo "Encoding=UTF-8" | sudo tee -a "$gnome_panel_entry_path" > /dev/null    echo "Name=$APP_NAME" | sudo tee -a "$gnome_panel_entry_path" > /dev/null    echo "Comment=$APP_DESCRIPTION" | sudo tee -a "$gnome_panel_entry_path" > /dev/null    echo "Icon=$APP_ICON" | sudo tee -a "$gnome_panel_entry_path" > /dev/null    echo "Exec=$exec_path" | sudo tee -a "$gnome_panel_entry_path" > /dev/null    echo "Terminal=$APP_TERMINAL" | sudo tee -a "$gnome_panel_entry_path" > /dev/null    echo "Categories=$APP_CATEGORIES" | sudo tee -a "$gnome_panel_entry_path" > /dev/null    echo "Entry added in '$gnome_panel_entry_path'"    unset USER_RESPONSE    unset APP_NAME    unset APP_CATEGORIES    unset APP_TERMINAL    unset APP_DESCRIPTION    unset APP_ICON    unset exec_path    unset exec_basename    unset gnome_panel_entry_path    return 0}