MCPcopy Index your code
hub / github.com/dagimg-dot/veil

github.com/dagimg-dot/veil @v0.4.2

Chat with this repo
repository ↗ · DeepWiki ↗ · release v0.4.2 ↗ · + Follow
159 symbols 366 edges 18 files 9 documented · 6%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Veil - A cleaner, quieter GNOME panel

Veil

<a href="https://github.com/dagimg-dot/veil/releases/latest">
  <img src="https://img.shields.io/github/v/release/dagimg-dot/veil?label=Download&style=for-the-badge" alt="Download">
</a>
<a href="https://github.com/dagimg-dot/veil/releases">
  <img src="https://img.shields.io/github/downloads/dagimg-dot/veil/total?label=Downloads&style=for-the-badge" alt="Downloads">
</a>

Veil

Veil is a GNOME shell extension that allows you to hide items on your GNOME panel.

It is a modern successor to Hide Items, and is designed to make your GNOME panel cleaner and quieter.

Features

  • Selective tray — When collapsed, only the status icons you pick stay visible on the right; the rest stay hidden until you open the tray again.
  • Click or hoverClick mode uses the Veil indicator as a toggle. Hover mode briefly shows every tray icon while the pointer is over the status area, then restores the collapsed layout when you leave.
  • Auto-hide (click mode) — Optionally collapse the tray again automatically after a delay so it doesn’t stay open indefinitely.
  • Animations — Optional fade/slide when hiding and showing items; duration and scope are configurable.
  • Tighter status spacing — Lower the default horizontal padding between top-bar indicators so the right cluster uses less width, without changing which icons exist.
  • Coexists with other applets — Remembers icons that were already hidden by their own extension and does not force them back on when the tray expands.

Installation

  1. Download the .shell-extension.zip file from the latest release
  2. Install using: gnome-extensions install --force <filename>
  3. Restart GNOME Shell or log out/in
  4. Enable the extension in GNOME Extensions app

Development

See DEVELOPMENT.md for development instructions.

Credits

Status-area horizontal spacing is adapted from Status Area Horizontal Spacing (original extension by Amy Chan / mathematical.coffee@gmail.com; maintained on GitLab by p91paul).

Panel items in the screenshot

Panel icons shown in the preview come from these extensions:

How other extensions hide status icons

Tray applets usually live in a container on the panel. Other extensions typically hide their icon in one of two ways:

  1. Visibility — They keep the actor in the tree and set container.visible to false (or equivalent), so the slot still exists but nothing is drawn.
  2. Removal — They remove or destroy the tray actor (or never add it), so there is no container for Veil to target until the extension adds it again.

How Veil works

Veil shows and hides panel items by changing container.visible (and related presentation like opacity/animation) on tray entries it already knows about. It also records whether an item was already hidden when Veil last reconciled the tray (originalVisible), so it does not force icons back on that their own extension meant to hide.

If an icon does not behave as you expect

Some extensions hide their icon in a way Veil does not see as “already hidden” at the moment Veil builds its list (for example, if the ordering or lifecycle differs from a simple visible = false on the container Veil tracks).

Workaround: Turn Veil off, use the other extension’s own settings to hide its panel icon, then turn Veil on again. Veil will then treat that item as externally hidden and will not reveal it when Veil expands the tray.

Extension points exported contracts — how you extend this code

MainPanel (Interface)
(no doc)
src/types/index.ts
AboutPageChildren (Interface)
(no doc)
src/prefs/AboutPage.ts
PanelItem (Interface)
(no doc)
src/types/index.ts
GeneralPageChildren (Interface)
(no doc)
src/prefs/GeneralPage.ts
ItemsPageChildren (Interface)
(no doc)
src/prefs/ItemsPage.ts

Core symbols most depended-on inside this repo

get
called by 12
src/lib/icons.ts
isPanelRevealed
called by 7
src/core/stateManager.ts
setVisibleItems
called by 6
src/core/stateManager.ts
setHoverInteractionZone
called by 6
src/core/panelManager.ts
updateIcon
called by 5
src/components/indicator.ts
log
called by 5
src/utils/logger.ts
destroy
called by 5
src/core/stateManager.ts
getAllPanelItems
called by 5
src/core/panelManager.ts

Shape

Method 114
Class 22
Function 17
Interface 5
Enum 1

Languages

TypeScript100%

Modules by API surface

src/core/panelManager.ts40 symbols
src/core/stateManager.ts23 symbols
src/components/indicator.ts19 symbols
src/core/statusAreaHorizontalSpacing.ts13 symbols
src/prefs/ItemsPage.ts10 symbols
src/extension.ts10 symbols
src/utils/logger.ts9 symbols
src/prefs/GeneralPage.ts7 symbols
src/lib/icons.ts7 symbols
src/core/animationManager.ts7 symbols
src/prefs/AboutPage.ts4 symbols
src/prefs.ts3 symbols

For agents

$ claude mcp add veil \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page