Agregar aplicaciones personalizadas al iniciador de GNOME

69

Buscando una utilidad que me permita insertar un elemento en la lista de aplicaciones que conoce GNOME.

Por ejemplo:
he descargado Eclipse EE (tengo algunos complementos muy especiales con los que necesito trabajar, y a esos complementos no les gusta la versión disponible en el repositorio predeterminado). Estoy usando GNOME 3, en Ubuntu 11.10. Entonces quiero ejecutar Eclipse sin abrir un terminal y ejecutarlo.

Debe ser algo muy simple.

Shaftoe2702
fuente
las imágenes png no funcionan, prueba jpg

Respuestas:

67

Puede usar el Menú principal para esto. Si no, instálelo primero:

sudo apt-get install alacarte

1. Abra el menú principal

2. Ver el ejemplo

Menú principal

Después de eso, puede llamar a sus aplicaciones con el nombre: "command_of_application".

Editar: Eché de menos que haya solicitado solicitudes en su directorio de inicio. Si es así, el comando debe ser la ruta completa de esa aplicación.

corazon magico
fuente
Eso es lo que estoy buscando.
Shaftoe2702
En alemán Ubuntu 17.10, busque "Menüberabeitung"
Christopher K.
Gracias, afortunadamente, este paquete también estaba allí para fedora.
Sukumaar
60

Los lanzadores de aplicaciones que conoce Gnome son archivos .desktop en /usr/share/applicationsy ~/.local/share/applications. Puede crear lanzadores personalizados para lo que esté en su carpeta de inicio, ya sea creando y editando manualmente un archivo .desktop personalizado, o usando Alacarte, el antiguo editor de menús de Gnome.

La documentación del archivo de escritorio de Gnome puede ser de ayuda: https://developer.gnome.org/integration-guide/stable/desktop-files.html.en

El iniciador personalizado es solo un archivo de texto, denominado, por ejemplo EclipseEE.desktop, con el siguiente contenido:

[Desktop Entry]
Name=Eclipse EE
Exec=/home/mrPeterson/path_to_executable
StartupNotify=true
Terminal=false
Type=Application
Icon=/optional/path/to/icon.png
mikewhatever
fuente
primer enlace está roto
nispio
9

(Publicar desde el OP original)

Este es un buen truco señalado en otra parte:

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

Ahora tengo un ícono. Esa fue una buena característica para vincular al menú contextual, pero, por desgracia, no lo veo.

Jorge Castro
fuente
Este programa no fue instalado por defecto para mí; tuvo que hacersudo apt-get install --no-install-recommends gnome-panel
yuikonnu
5

Me gusta la gnome-desktop-item-editsolución simple de Jorge . Sin embargo, si coloco el .desktoparchivo ~/Desktop/, no aparece como una aplicación, sino solo como un archivo en el menú gnome. Así que hago:

sudo gnome-desktop-item-edit /usr/share/applications/ --create-new
pygrac
fuente
Si desea crear un menú para todos los usuarios de gnome, debe preferir colocarlo en la ~/.local/share/applicationscarpeta y evitar su uso sudo.
RousseauAlexandre
1

Sé que este hilo es un poco viejo, pero quería compartir con ustedes esta función bash que acabo de hacer porque ... porque puedo. Si lo encuentra útil, ¡no dude en usarlo!

Advertencia: lo acabo de hacer. Puede que no sea perfecto.

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
fuente
: +1: por tu tiempo :), es bueno tener una herramienta de línea de comandos
Daniel Pérez