Thêm ứng dụng tùy chỉnh vào trình khởi chạy Gnome


69

Tìm kiếm một tiện ích cho phép tôi chèn một mục vào danh sách các ứng dụng mà Gnome biết.

Ví dụ:
Tôi đã tải xuống EE EE (Tôi có một số plugin rất đặc biệt mà tôi cần phải làm việc và các plugin đó không "thích" phiên bản có sẵn trong kho lưu trữ mặc định). Tôi đang sử dụng Gnome 3, trên Ubuntu 11.10. Vì vậy, tôi muốn thực thi Eclipse khi mở một thiết bị đầu cuối và chạy nó.

Nó phải là một cái gì đó rất đơn giản.


hình ảnh png không hoạt động, hãy thử jpg

Câu trả lời:


67

Bạn có thể sử dụng Menu chính cho việc này. Nếu không, hãy cài đặt nó trước:

sudo apt-get install alacarte

1. Mở Menu chính

2. Xem ví dụ

Thực đơn chính

Sau đó, bạn có thể gọi các ứng dụng của mình với tên: "command_of_application".

Chỉnh sửa: Tôi nhớ rằng bạn đã yêu cầu các ứng dụng trong thư mục nhà của bạn. Nếu vậy, lệnh phải là đường dẫn đầy đủ của ứng dụng đó.


Đó là những gì tôi đang tìm kiếm.
Shaftoe2702

Trong Ubuntu 17.10 của Đức, tìm kiếm "Menüberabeitung"
Christopher K.

Cảm ơn bạn, may mắn là gói này cũng ở đó cho fedora.
Sukumaar

60

Các trình khởi chạy ứng dụng mà Gnome biết là các tệp .desktop /usr/share/applications~/.local/share/applications. Bạn có thể tạo các trình khởi chạy tùy chỉnh cho bất cứ thứ gì có trong thư mục nhà của bạn, bằng cách tạo và chỉnh sửa thủ công tệp .desktop tùy chỉnh hoặc bằng cách sử dụng Alacarte, trình chỉnh sửa menu Gnome cũ.

Tài liệu về tệp máy tính để bàn Gnome có thể hữu ích: https://developer.gnome.org/integration-guide/urdy/desktop-files.html.en

Trình khởi chạy tùy chỉnh chỉ là một tệp văn bản, được đặt tên, ví dụ EclipseEE.desktop, với nội dung sau:

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

liên kết đầu tiên bị hỏng
nispio

9

(Đăng lại từ OP gốc)

Đây là thủ thuật gọn gàng chỉ ra ở nơi khác:

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

Bây giờ, tôi có một Biểu tượng. Đó là một tính năng hay để ràng buộc với menu ngữ cảnh, nhưng than ôi, tôi không thấy nó.


Chương trình này không được cài đặt theo mặc định cho tôi; phải làmsudo apt-get install --no-install-recommends gnome-panel
yuikonnu

5

Tôi thích gnome-desktop-item-editgiải pháp đơn giản của Jorge . Tuy nhiên, nếu tôi đặt .desktoptệp trên ~/Desktop/đó thì nó không hiển thị dưới dạng một ứng dụng mà chỉ là một tệp trong menu gnome. Vì vậy tôi làm:

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

Howerver bạn muốn tạo menu cho tất cả người dùng gnome, bạn nên đặt nó trên ~/.local/share/applicationsthư mục và tránh sử dụng sudo.
RousseauAlexandre

1

Tôi biết chủ đề này hơi cũ, nhưng tôi muốn chia sẻ với các bạn chức năng bash này tôi vừa thực hiện vì ... bởi vì tôi có thể. Nếu bạn thấy nó hữu ích, hãy sử dụng nó!

Cảnh báo: Tôi vừa làm nó. Nó có thể không hoàn hảo.

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: cho bạn thời gian :), thật tốt khi có một công cụ dòng lệnh
Daniel Pérez
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.