Skip to content

keroblabs/xfce-cups-os-menu

Repository files navigation

xfce-cups-os-menu

xfce-cups-os-menu is a fork of the Xfce Whisker Menu plugin, adapted for Cups OS workflows.

It keeps the familiar Whisker application launcher experience while adding Cups OS / VM-oriented features, especially a configurable Cups on the Tray section for grouped operational shortcuts.


What this project is

  • Base: Xfce Whisker Menu architecture and UI model
  • Fork target: Cups OS environments
  • Plugin name: CupsOS Menu
  • Popup helper executable: xfce4-popup-cupsosmenu

The current repository history contains an upstream import and a fork commit that rebrands and adapts the plugin for Cups OS usage.


Implemented Cups OS changes

From the project history and source changes, the following Cups OS-oriented features are implemented:

1) Rebrand from Whisker to CupsOS Menu

  • Plugin/module renamed to cupsosmenu
  • Desktop plugin metadata renamed to CupsOS Menu
  • Panel icon namespace switched to org.xfce.panel.cupsosmenu
  • Popup helper renamed to xfce4-popup-cupsosmenu

2) “Cups on the Tray” grouped shortcut system

This fork adds a full shortcut subsystem intended for VM/operations workflows:

  • Configurable groups (cups_tray_group_names)
  • Group labels (cups_tray_group_labels) with Qubes-style numeric label mapping (0..8)
  • Per-shortcut group assignment
  • Per-shortcut name + command storage
  • Full CRUD and reordering support in the settings dialog
  • Shortcut groups are inserted as dedicated categories in the launcher

3) Qubes-label visual integration

Tray groups support Qubes-like labels and colors:

  • White, Red, Orange, Yellow, Green, Gray, Blue, Purple, Black
  • Color box rendering for group categories
  • Group tooltip includes label ID and color code

4) Script launcher entries in menu and search

Cups tray shortcuts are represented as ScriptLauncher items:

  • Launch arbitrary shell commands directly from the menu
  • Search matching by shortcut name and command text
  • Tooltip shows the underlying command

5) Security helper scripts for elevated tray actions

The scripts/cups-tray/ folder includes operational helpers:

  • passwordless-sudo-wrapper.sh
  • passwordless-sudo-allowlist.conf
  • generate-sudoers.sh
  • sudoers.d/cupsos-tray.template
  • Documentation for setting up controlled passwordless sudo

These scripts are intended to support privileged operational shortcuts safely and reproducibly.


Core launcher capabilities (inherited + maintained)

The fork still provides the main Whisker-style launcher behavior:

  • Favorites list with drag/reorder
  • Recently used applications
  • Category browsing
  • Search-based launch
  • Session/power commands
  • Configurable appearance, commands, and behavior from plugin settings

Build requirements

Main dependencies (from build files):

  • GLib >= 2.50
  • GTK3 >= 3.22
  • Xfce >= 4.16 stack:
    • garcon-1
    • libxfce4panel-2.0
    • libxfce4ui-2
    • libxfce4util-1.0
    • libxfconf-0
  • Optional:
    • accountsservice
    • gtk-layer-shell-0
    • exo-2 (for older libxfce4ui)

Build and install

This repository supports Meson and CMake.

Meson

meson setup builddir
meson compile -C builddir
sudo meson install -C builddir

CMake

cmake -S . -B build
cmake --build build
sudo cmake --install build

Usage

Add plugin to panel

  1. Right-click Xfce panel
  2. Panel → Add New Items
  3. Add CupsOS Menu

Popup from keyboard shortcut

Use the installed helper command:

xfce4-popup-cupsosmenu

Useful options:

  • --pointer popup at mouse pointer
  • --center popup at screen center
  • --list list available instances
  • --instance=<id> target a specific panel instance

Configuring “Cups on the Tray”

In plugin preferences:

  1. Create one or more tray groups
  2. Assign each group a Qubes-style label color (0..8)
  3. Add shortcuts (name + command) under a selected group
  4. Reorder groups and shortcuts as needed

Shortcuts appear as launcher entries under their generated group categories.

For privileged commands, see:

  • scripts/cups-tray/README-passwordless-sudo.md

Repository layout

  • panel-plugin/ — main plugin source, settings dialog, launcher pages, popup utility
  • scripts/cups-tray/ — helper scripts for operational shortcuts and sudoers setup
  • icons/ — plugin icons
  • po/ — translations

License

GPL-2.0-or-later. See COPYING.

About

Xen menu to control VM worlflow

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors