Vala-Panel-Appmenu: Tích Hợp Global Menu Cho XFCE, MATE Và Vala Panel Trên Linux

5 phút đọc

Đối với người dùng các giao diện đồ họa nhẹ trên hệ điều hành Linux như XFCE hay MATE, tính năng thanh menu tập trung (Global Menu) tương tự như trên macOS hay Ubuntu Unity trước đây luôn là một tiện ích được tìm kiếm. Repository rilian-la-te/vala-panel-appmenu là một dự án nguồn mở viết bằng ngôn ngữ C, cung cấp applet Global Menu tương thích với Vala Panel, xfce4-panel và mate-panel. Dự án hiện ghi nhận 465 lượt xem xét (stars), 53 lượt sao chép nhánh (forks) và có mốc cập nhật ghi nhận trên hệ thống vào ngày 01/11/2026.

Cơ chế hoạt động và yêu cầu phụ thuộc backend

Về mặt kỹ thuật, Vala-Panel-Appmenu không tự xử lý toàn bộ luồng hiển thị menu của ứng dụng mà đóng vai trò là một applet giao diện trên thanh panel. Dự án bắt buộc phải đi kèm với unity-gtk-module để làm backend thu thập dữ liệu thanh menu từ các ứng dụng GTK.

Một lưu ý quan trọng về tính tương thích được nhà phát triển nêu rõ trong tài liệu là sự xung đột với công cụ cấu hình Qt5 (qt5ct). Cụ thể, các phiên bản qt5ct phát hành trước ngày 21/04/2017 sẽ gặp lỗi xung đột với Vala-Panel-Appmenu. Người dùng các phiên bản qt5ct cũ này buộc phải chuyển sang sử dụng một PlatformTheme khác để tránh lỗi hiển thị.

Cấu hình môi trường ngăn chặn lỗi hiển thị menu đôi

Khi tích hợp Vala-Panel-Appmenu vào xfce4-panel hoặc mate-panel, người dùng phải cấu hình hệ thống để thanh menu chuyển hẳn lên applet trên panel, thay vì tiếp tục xuất hiện bên trong từng cửa sổ ứng dụng riêng lẻ. Nếu không thiết lập đúng, ứng dụng sẽ gặp hiện tượng “menu đôi” (hiển thị đồng thời cả ở cửa sổ và trên panel).

Nhà phát triển cung cấp hai phương án thiết lập môi trường tùy thuộc vào hệ thống:

  • Sử dụng gnome-settings-daemon: Người dùng truy cập công cụ dconf-editor và điều chỉnh khóa org.gnome.settings-daemon.plugins.xsettings.overrides về giá trị {'Gtk/ShellShowsAppMenu': <0>, 'Gtk/ShellShowsMenubar': <1>}.
  • Tạo hoặc chỉnh sửa tập tin cấu hình GTK: Nếu lệnh trên không có hiệu lực, người dùng tạo hoặc mở tệp .config/gtk-3.0/settings.ini trong thư mục người dùng (~) và thêm các dòng cấu hình tương ứng dưới mục [Settings].

Hỗ trợ ứng dụng Java Swing qua JAyatana

Để hiển thị Global Menu cho các ứng dụng chạy trên nền tảng Java Swing, dự án có khả năng tương thích với JAyatana thông qua backend unity-gtk-module. Tuy nhiên, việc triển khai này tồn tại một số hạn chế nhất định. Người dùng cần thêm biến môi trường env XDG_CURRENT_DESKTOP=Unity vào đầu lệnh khởi chạy ứng dụng.

Các bộ công cụ phát triển như Netbeans hay danh mục IDE của JetBrains khi sử dụng Java Swing sẽ yêu cầu thêm một số bước cấu hình riêng biệt mà nhà phát triển gợi ý người dùng cần tự tìm kiếm thêm trên internet để hoàn thiện.

Yêu cầu thư viện khi tự biên dịch từ mã nguồn

Tài liệu hướng dẫn biên dịch của repository yêu cầu lượng lớn gói phụ thuộc (dependencies) tùy thuộc vào từng môi trường desktop khác nhau. Khi biên dịch mã nguồn thủ công, người dùng cần chuẩn bị các thư viện nền tảng và thư viện riêng của từng giao diện.

1. Các gói phụ thuộc chung cho mọi biến thể

Tất cả các bản phân phối Linux đều yêu cầu cài đặt sẵn danh sách gói nền tảng gồm: git, build-essential, cmake, bamfdaemon, libdbusmenu-glib-dev, libgtk2.0-dev, gobject-introspection, libbamf3-dev, libdbus-glib-1-dev, libffi-dev, libgirepository1.0-dev, libpeas-dev, libstartup-notification0-dev, libwnck-3-dev, libwnck-common, libwnck22, libxml2-utils, libxres-dev, libvala-0.40-0, valac và valac-0.40-vapi.

2. Gói bổ sung theo từng môi trường Desktop

  • Ubuntu Budgie: Cần thêm budgie-core-dev, gir1.2-budgie-1.0, libbudgie-plugin0, libbudgietheme0 và libraven0.
  • Ubuntu MATE: Cần bổ sung thư viện libmate-panel-applet-dev.
  • Xubuntu (XFCE): Đòi hỏi danh sách phụ thuộc phức tạp gồm exo-utils, libexo-1-0, libexo-2-0, libexo-common, libexo-helpers, libgarcon-1-0, libgarcon-common, libxfce4panel-2.0-4, libxfce4panel-2.0-dev, libxfce4ui-1-0, libxfce4ui-2-0, libxfce4ui-common, libxfce4util7, libxfce4util-common, libxfce4util-dev, libxfconf-0-2, libxfconf-0-dev, xfce4-panel, xfce4-panel-dev và xfconf.
  • Vala Panel: Yêu cầu gói libvalapanel0 và libvalapanel-dev.

Những điểm còn hạn chế

Mặc dù cung cấp giải pháp cho nhiều môi trường đồ họa nhẹ, dự án Vala-Panel-Appmenu vẫn còn một số vấn đề tồn tại trong tài liệu chính thức. Khả năng hỗ trợ cho môi trường Budgie 10.x mới chỉ dừng lại ở mức dự định (planned) và chưa có thông tin triển khai hoàn chỉnh. Bên cạnh đó, cấu hình chi tiết cho các ứng dụng Java Swing phức tạp như JetBrains IDE hay Netbeans không được tích hợp sẵn trong tài liệu mà đòi hỏi người dùng tự tìm hiểu giải pháp tùy chỉnh.

Nguồn tham khảo: Xem bài gốc

📅 Âm: 4/10 · Canh Dần

📅 Lịch Âm Dương NsN

×
Hôm Nay · Thứ Năm
Âm Lịch: 4 Tháng 10
Năm Bính Ngọ
📌 Can Chi: Canh Dần
✨ Hoàng Đạo: Tý (23-1), Sửu (1-3), Thìn (7-9), Tỵ (9-11), Mùi (13-15), Tuất (19-21)
Vĩnh Phúc (Liên Bảo - Vĩnh Yên)
31°C
Nắng Đẹp
💧 83% | 💨 18 km/h
Hôm nay 32°
02/11 28°
03/11 30°
04/11 31°
05/11 31°