Ajout d'applications personnalisées au lanceur GNOME

69

Vous recherchez un utilitaire permettant d'insérer un élément dans la liste des applications connues de GNOME.

Par exemple:
j'ai téléchargé Eclipse EE (je dois travailler avec des plugins très spéciaux, et ces plugins n'aiment pas la version disponible dans le référentiel par défaut). J'utilise GNOME 3 sur Ubuntu 11.10. Je souhaite donc exécuter Eclipse sans ouvrir un terminal et l’exécuter.

Ce doit être quelque chose de très simple.

Shaftoe2702
la source
Les images png ne fonctionnent pas, essayez jpg

Réponses:

67

Vous pouvez utiliser le menu principal pour cela. Sinon, installez-le d'abord:

sudo apt-get install alacarte

1. Ouvrez le menu principal

2. Voir l'exemple

Menu principal

Après cela, vous pouvez appeler vos applications avec le nom suivant: "command_of_application".

Edit: j'ai oublié que vous ayez demandé des applications dans votre répertoire personnel. Si tel est le cas, commande doit être le chemin complet de cette application.

cœur magique
la source
C'est ce que je cherche.
Shaftoe2702
En allemand Ubuntu 17.10, recherche "Menüberabeitung"
Christopher K.
Merci, heureusement ce paquet était là pour fedora aussi.
Sukumaar
60

Les lanceurs d'applications dont Gnome a connaissance sont des fichiers .desktop dans /usr/share/applications, et ~/.local/share/applications. Vous pouvez créer des lanceurs personnalisés pour tout ce qui se trouve dans votre dossier de départ, soit en créant et en modifiant manuellement un fichier .desktop personnalisé, soit en utilisant Alacarte, l'ancien éditeur de menus Gnome.

La documentation du fichier de bureau Gnome peut être utile: https://developer.gnome.org/integration-guide/stable/desktop-files.html.en

Le lanceur personnalisé est juste un fichier texte, nommé, par exemple EclipseEE.desktop, avec le contenu suivant:

[Desktop Entry]
Name=Eclipse EE
Exec=/home/mrPeterson/path_to_executable
StartupNotify=true
Terminal=false
Type=Application
Icon=/optional/path/to/icon.png
Mikew que ce soit
la source
premier lien est cassé
nispio
9

(Republié de l'OP d'origine)

C'est une astuce précieuse signalée ailleurs:

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

Maintenant, j'ai une icône. C'était une fonctionnalité intéressante à avoir liée au menu contextuel, mais hélas, je ne le vois pas.

Jorge Castro
la source
Ce programme n'a pas été installé par défaut pour moi; dû fairesudo apt-get install --no-install-recommends gnome-panel
yuikonnu
5

J'aime la gnome-desktop-item-editsolution simple de Jorge . Cependant, si je place le .desktopfichier dessus, ~/Desktop/il n'apparaît pas en tant qu'application mais uniquement en tant que fichier dans le menu gnome. Moi aussi:

sudo gnome-desktop-item-edit /usr/share/applications/ --create-new
pygrac
la source
Cependant, si vous voulez créer un menu pour tous les utilisateurs de gnome, vous devriez plutôt le placer dans un ~/.local/share/applicationsdossier et éviter de l'utiliser sudo.
RousseauAlexandre
1

Je sais que ce fil est un peu vieux, mais je voulais partager avec vous cette fonction bash que je viens de créer parce que ... parce que je le peux. Si vous le trouvez utile, n'hésitez pas à l'utiliser!

Attention: je viens de le faire. Ce n'est peut-être pas parfait.

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
}
Maximiliano Castro Diaz
la source
: +1: pour votre temps :), bon d'avoir un outil en ligne de commande
Daniel Pérez