On this page
Confirm Whether the GNOME Tray Menu Is Freezing the Desktop
This guide applies only when a Linux desktop starts lagging immediately after switching to a subscription with many nodes and proxy groups, while logs point to GNOME Shell, Ubuntu AppIndicators, dbusMenu.js, or GJS garbage collection. A slow Clash Verge Rev window, node timeouts, or inaccessible websites alone indicate a different problem.
Clash Verge Rev issue #7779 was reported on Ubuntu 22.04.5 with GNOME 42.9 and X11. The subscription contained 347 nodes across 14 proxy groups, with up to 349 nodes in one group. A normal subscription worked, but switching to the large one triggered an error storm and desktop-wide lag after about one second.
The reporter attributed the behavior to the oversized proxy-group submenus generated in the tray and ran an A/B comparison on the same system with the same subscription. The freeze stopped after tray proxy-group display was disabled. The issue remains open, so this is a reproducible diagnostic lead, not a universal root cause confirmed by the maintainers.
Classify the Symptom First
| Symptom | More likely direction | Next step |
|---|---|---|
| The top bar, window switching, and the whole desktop lag after loading a large subscription | GNOME Shell or AppIndicator menu load | Check the session and system logs |
| Only the Clash Verge Rev window freezes | Application UI or WebView | Do not apply this diagnosis directly |
| The desktop is responsive, but websites and nodes time out | Node, DNS, rules, or TUN | Troubleshoot from connection records |
| The desktop freezes periodically without switching subscriptions | Another extension, graphics driver, or desktop issue | Compare with the client fully closed |
Recover the Desktop Before Reopening the Oversized Menu
If the desktop still responds, do not click the tray icon or switch Profiles repeatedly. Save open work, disable the system proxy and TUN from the Clash Verge Rev main window, then exit the client normally. Confirm that direct system networking works before restarting the desktop session or the computer.
If GNOME Shell is almost unresponsive but Ctrl+Alt+F3 still opens a text console, sign in there and use the normal reboot command. Cutting power can corrupt unwritten files and should be the last resort only when the keyboard, console, and system power menu are all unavailable.
sudo systemctl rebootAfter Returning to the Desktop
Keep the system on a direct connection first
Do not immediately enable TUN, the system proxy, or the large subscription that triggered the problem. First confirm that the desktop and basic network are stable.
Open Settings from the main window
Do not expand proxy-group menus from the tray. Open the Clash Verge Rev main window directly.
Change the tray display mode first
Select the same large subscription for a controlled retest only after the display setting has been disabled.
Keep the failure timestamp
Note when you switched subscriptions and when the desktop began lagging, then extract only the matching log window.
Record the Session, Versions, and AppIndicator Errors
Record the distribution, GNOME version, session type, and Clash Verge Rev version before exporting a few minutes of system logs around the failure. Recovery differs between X11 and Wayland, so “latest Ubuntu” is not enough detail.
The query below reads logs from the current boot only. The pattern resembles issue #7779 only if ubuntu-appindicators, dbusMenu.js, JSAPI during, already disposed, or PopupSubMenuMenuItem appears immediately after the subscription switch.
Logs may contain usernames, hostnames, subscription details, or node information. Redact them before sharing, keep only a few minutes around the reproduction, and do not upload the complete system log.
printf 'session=%s\n' "$XDG_SESSION_TYPE"
gnome-shell --version
clash-verge --version 2>/dev/null || truejournalctl -b --no-pager | grep -E 'gnome-shell|ubuntu-appindicators|dbusMenu\.js|JSAPI during|already disposed|PopupSubMenuMenuItem'Baseline Before the Change
- Distribution, GNOME version, and X11 or Wayland session type are recorded
- The exact Clash Verge Rev version and installation source are recorded
- A normal subscription does not trigger the same lag
- The node count, proxy-group count, and largest group size in the large subscription are recorded
- The failure timestamp and matching logs are saved and redacted
- The desktop remains stable with the system proxy and TUN disabled
Disable Tray Proxy-Group Menus Before Switching Subscriptions
In the Clash Verge Rev main window, open “Settings → Interface Settings” and set “Tray Proxy Groups Display Mode” to “Disable.” The official v2.5.2 type definition supports default, inline, and disable, and the Chinese settings resource labels the same choices as default, first-level menu, and disabled.
This change only stops proxy groups and large node lists from expanding into the system tray menu. Subscriptions, rules, nodes, and proxy groups in the main window remain available. Choose nodes from the main window afterward, and do not repeatedly click the old tray submenu to confirm the setting.
If the graphical interface cannot save the setting, use the application-directory entry in Settings to locate verge.yaml. Exit the client completely, copy the entire directory as a backup, then explicitly set tray_proxy_groups_display_mode to disable. Do not guess the data-directory path or overwrite files while the application is running.
tray_proxy_groups_display_mode: disableVerify Four Things with the Same Subscription
Keep the system, client version, and subscription unchanged. Change only the tray proxy-group display mode, then switch from the main window to the large subscription that previously triggered the lag. This single-variable comparison is more informative than deleting nodes, replacing the core, and disabling TUN at the same time.
After switching, wait longer than the original trigger time, then open a proxy group in the main window, select a node, and make a real HTTPS request. Do not rely on latency numbers alone; desktop responsiveness, tray structure, logs, and a real connection must all pass.
Verification checklist
- The top bar, window switching, and keyboard shortcuts remain responsive after loading the same large subscription
- The tray menu no longer generates proxy-group and node submenus
- The logs show no new burst of dbusMenu.js, JSAPI during, or already disposed errors
- Proxy groups remain visible and nodes remain selectable in the main window
- A real HTTPS request succeeds and its connection appears in Connections
- The disabled setting remains effective after a full exit and restart
Reclassify the Problem If Disabling the Menu Does Not Help
The tray submenu is gone, but only the application window is unresponsive
Check WebView, rendering, and application logs instead of attributing it to the GNOME Shell menu.
The desktop still freezes periodically after Clash Verge Rev is closed
Check other GNOME extensions, graphics drivers, and system logs; this workaround does not apply.
The desktop is responsive and only the connection fails
Troubleshoot the node, DNS, rules, system proxy, or TUN without restoring the oversized tray menu.
The same AppIndicator/GJS error storm continues
Keep the setting disabled, note whether another application also provides an oversized tray menu, and submit the complete comparison to the project.
Do not begin by uninstalling Ubuntu AppIndicators, deleting the large subscription, or reinstalling the desktop. Those actions change too many variables and may affect other applications. First compare Clash Verge Rev fully closed, a normal subscription, and tray proxy-group display disabled to identify the actual trigger.
Roll Back Safely and Submit Evidence If You Need Tray Switching
If you must restore tray proxy-group menus, switch to a verified small subscription in the main window before changing the display mode back to “Default” or “First-level menu.” Do not restore the menu while the large subscription is active. If the lag returns, switch back to disable immediately and continue selecting nodes from the main window.
When reporting the problem upstream, include the distribution, GNOME version and session type, Clash Verge Rev version, subscription size, trigger time, redacted logs, and same-condition results for default versus disable. Do not upload subscription links, node addresses, credentials, or the complete configuration.
As of 9/8/2026, issue #7779 remains open with no linked formal fix. The report used 2.5.3 AutoBuild, while the latest official stable release remains v2.5.2. The display switch exists in v2.5.2, but its release notes do not claim to fix freezes caused by oversized tray menus, so the setting's presence does not mean the problem has been resolved.
References
- Clash Verge RevReproduction Report for an AppIndicator Menu Freeze Triggered by a Large Subscription on Linux/GNOME
- Clash Verge Revv2.5.2 Type Definition for Tray Proxy-Group Display Mode
- Clash Verge Revv2.5.2 Chinese Setting for Tray Proxy-Group Display Mode
- Clash Verge Revv2.5.2 verge.yaml Configuration Field and Default Value
- Ubuntu AppIndicatorsUbuntu AppIndicator dbusMenu.js Error Storm and GNOME Shell Lag Report
- Clash Verge RevClash Verge Rev v2.5.2 stable release notes
