Aggiunta di applicazioni personalizzate al programma di avvio GNOME


69

Alla ricerca di un'utilità che mi permetta di inserire un elemento nell'elenco delle applicazioni che GNOME conosce.

Ad esempio:
ho scaricato Eclipse EE (ho alcuni plugin molto speciali con cui devo lavorare, e quei plugin non "gradiscono" la versione disponibile nel repository predefinito). Sto usando GNOME 3, su Ubuntu 11.10. Quindi voglio eseguire Eclipse senza aprire un terminale ed eseguirlo.

Deve essere qualcosa di molto semplice.


le immagini png non funzionano, prova jpg

Risposte:


67

È possibile utilizzare il menu principale per questo. In caso contrario, installarlo prima:

sudo apt-get install alacarte

1. Apri il menu principale

2. Vedi l'esempio

Menu principale

Dopodiché puoi chiamare le tue applicazioni con nome: "command_of_application".

Modifica: mi mancava che tu avessi chiesto applicazioni nella tua home directory. In tal caso, il comando deve essere il percorso completo dell'applicazione.


Questo è quello che sto cercando.
Shaftoe2702,

In tedesco Ubuntu 17.10, cerca "Menüberabeitung"
Christopher K.,

Grazie, per fortuna questo pacchetto era lì anche per Fedora.
Sukumaar

60

I lanciatori di applicazioni che Gnome conosce sono i file .desktop in /usr/share/applications, e ~/.local/share/applications. Puoi creare launcher personalizzati per qualsiasi cosa si trovi nella tua cartella home, creando o modificando manualmente un file .desktop personalizzato o usando Alacarte, il vecchio editor di menu di Gnome.

La documentazione del file desktop di Gnome può essere di aiuto: https://developer.gnome.org/integration-guide/stable/desktop-files.html.en

Il programma di avvio personalizzato è solo un file di testo, denominato, ad esempio EclipseEE.desktop, con il seguente contenuto:

[Desktop Entry]
Name=Eclipse EE
Exec=/home/mrPeterson/path_to_executable
StartupNotify=true
Terminal=false
Type=Application
Icon=/optional/path/to/icon.png

il primo collegamento è interrotto
nispio

9

(Ripubblicare dall'OP originale)

Questo è un bel trucco sottolineato altrove:

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

Ora ho un'icona. È stata una bella funzionalità legata al menu di scelta rapida, ma purtroppo non la vedo.


Questo programma non è stato installato di default per me; dovuto faresudo apt-get install --no-install-recommends gnome-panel
yuikonnu

5

Mi piace la gnome-desktop-item-editsoluzione semplice di Jorge . Tuttavia, se posiziono il .desktopfile su di ~/Desktop/esso non viene visualizzato come un'applicazione ma solo come file nel menu di gnome. Faccio così:

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

Inoltre, se si desidera creare un menu per tutti gli utenti di gnome, è consigliabile posizionarlo nella ~/.local/share/applicationscartella ed evitare di utilizzarlo sudo.
RousseauAlexandre,

1

So che questo thread è piuttosto vecchio, ma volevo condividere con voi ragazzi questa funzione bash che ho appena fatto perché ... perché posso. Se lo trovi utile, sentiti libero di usarlo!

Attenzione: l' ho appena fatto. Potrebbe non essere perfetto.

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
}

: +1: per te :), bello avere uno strumento da riga di comando
Daniel Pérez,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.