Skip to content

About

GNOME Shell extension for advanced multi-monitor panel management with workspace-aware behavior.

Topics

Resources

Stars

59 stars

Watchers

1 watching

Forks

Latest commit

 

History

255 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Multi Monitor Bar for GNOME Shell

Add full panels, overview, and mirrored indicators to every monitor.

GNOME Extensions · GitHub · Donate


An updated fork of spin83/multi-monitors-add-on with modern GNOME Shell support (45 – 49), mirrored indicators, screenshot tool cloning, Blur my Shell integration, and more.

✨ Features

Feature Description
Panel on every monitor Full top bar with left / center / right sections
Activities button Open the overview from any monitor
AppMenu Per-monitor focused-app menu
DateTime menu Mirrored clock & calendar
Workspace thumbnails Slider on the left, right, or auto
Mirrored indicators Any status-area indicator (Vitals, GSConnect, etc.) can be transferred to secondary panels
Per-monitor icon selection Choose panel icons independently for the main monitor and each extended monitor
Indicator exclusion list Prevent specific indicators from being transferred (e.g. Fildem)
Screenshot tools on all monitors Clone the screenshot toolbar to every screen, or follow the cursor
Blur my Shell integration Automatically register secondary panels for blur effects
Overview on extended monitors Show App Grid & Search on secondary displays
Force workspaces on all displays Override GNOME's workspaces-only-on-primary setting
Hot corners Enable/disable hot corners on all monitors
Window drag from panel Drag maximized windows off the panel on any monitor

📋 Compatibility

GNOME Shell: 45, 46, 47, 48, 49

Tested on:

  • Fedora 43 — GNOME 49

📦 Installation

Method 1: Reinstall Script (Recommended)

The included script copies everything to the extensions directory, compiles schemas, and enables the extension in one step:

chmod +x reinstall.sh
./reinstall.sh

Note

On Wayland you must log out and log back in for changes to take effect. On X11 press Alt+F2, type r, and press Enter.

Method 2: Manual Installation

  1. Copy the extension folder:

    cp -r . ~/.local/share/gnome-shell/extensions/multi-monitors-bar@frederykabryan
  2. Compile schemas:

    glib-compile-schemas ~/.local/share/gnome-shell/extensions/multi-monitors-bar@frederykabryan/schemas/
  3. Restart GNOME Shell (see note above).

  4. Enable:

    gnome-extensions enable multi-monitors-bar@frederykabryan

⚙️ Configuration

Open preferences through the Extensions app (click the ⚙️ icon next to Multi Monitor Bar) or via command line:

gnome-extensions prefs multi-monitors-bar@frederykabryan

Preference Switches

Open Panel icons by monitor in the extension preferences. Each connected display gets its own checklist: Main monitor, Extended 1, Extended 2, and so on. Check or uncheck an icon to change that panel immediately. Choices are saved across restarts, and the list updates when monitors or extensions change. Extended panels require Show Panel to be enabled. Only extensions with panel indicators appear in these lists.

Hiding an icon on the main monitor still lets you display it on extended monitors. Per-monitor choices override the existing Activities, AppMenu, and DateTime switches for that monitor. Enable the extension to see the connected monitors and available panel icons in preferences.

Setting Key Default
Show Panel show-panel true
Show Activities Button show-activities true
Show AppMenu Button show-app-menu true
Show DateTime Menu show-date-time true
Date and Time Position (all monitors) date-time-position center
Thumbnails Slider Position thumbnails-slider-position auto
Enable Blur my Shell enable-blur-my-shell true
Hot Corners enable-hot-corners (system default)
Screenshot on All Monitors screenshot-on-all-monitors false
Force Workspaces on All Displays force-workspaces-on-all-displays true
Overview on Extended Monitors show-overview-on-extended-monitors true

Advanced: gsettings CLI

SCHEMA_DIR="$HOME/.local/share/gnome-shell/extensions/multi-monitors-bar@frederykabryan/schemas"

# View / set any setting
GSETTINGS_SCHEMA_DIR="$SCHEMA_DIR" gsettings get \
  org.gnome.shell.extensions.multi-monitors-bar show-panel
GSETTINGS_SCHEMA_DIR="$SCHEMA_DIR" gsettings set \
  org.gnome.shell.extensions.multi-monitors-bar show-panel true

# Exclude indicators from transfer
GSETTINGS_SCHEMA_DIR="$SCHEMA_DIR" gsettings get \
  org.gnome.shell.extensions.multi-monitors-bar exclude-indicators
GSETTINGS_SCHEMA_DIR="$SCHEMA_DIR" gsettings set \
  org.gnome.shell.extensions.multi-monitors-bar exclude-indicators \
  "['fildem-indicator', 'another-indicator']"

Finding Indicator Names

# In Looking Glass (Alt+F2 → lg → Evaluator tab):
Object.keys(Main.panel.statusArea)

🔧 Troubleshooting

Extension doesn't appear
  1. Verify installation path:
    ls ~/.local/share/gnome-shell/extensions/multi-monitors-bar@frederykabryan/
  2. Check compiled schema exists:
    ls ~/.local/share/gnome-shell/extensions/multi-monitors-bar@frederykabryan/schemas/gschemas.compiled
  3. Restart GNOME Shell.
Extension fails to enable
journalctl -f -o cat /usr/bin/gnome-shell
gnome-extensions info multi-monitors-bar@frederykabryan
Panels not showing on secondary monitors
  1. Ensure Show Panel is enabled in preferences.
  2. Confirm multiple monitors are connected.
  3. Toggle the extension:
    gnome-extensions disable multi-monitors-bar@frederykabryan
    gnome-extensions enable  multi-monitors-bar@frederykabryan
Indicators not transferring
  1. Check the exclude list:
    GSETTINGS_SCHEMA_DIR="$HOME/.local/share/gnome-shell/extensions/multi-monitors-bar@frederykabryan/schemas" \
      gsettings get org.gnome.shell.extensions.multi-monitors-bar exclude-indicators
  2. Refresh by toggling the extension.

🗑️ Uninstallation

gnome-extensions disable multi-monitors-bar@frederykabryan
rm -rf ~/.local/share/gnome-shell/extensions/multi-monitors-bar@frederykabryan
# Restart GNOME Shell

🗂️ Project Structure

.
├── extension.js                  # Main extension entry point
├── mmpanel.js                    # Multi-monitor panel (layout, drag, indicators)
├── mmlayout.js                   # Layout manager for multi-monitor setup
├── mmoverview.js                 # Overview / workspace views on secondary monitors
├── mmcalendar.js                 # DateTime menu for secondary monitors
├── mirroredIndicatorButton.js    # Generic indicator mirroring via Clutter.Clone
├── statusIndicatorsController.js # Manages indicator transfer lifecycle
├── screenshotPatch.js            # Screenshot UI cloning to all monitors
├── mmPanelConstants.js           # Shared constants and settings keys
├── common.js                     # Shell version detection & utility helpers
├── utils.js                      # Misc utilities
├── prefs.js                      # Preferences dialog (Adw / GTK4)
├── metadata.json                 # Extension metadata & version
├── stylesheet.css                # Panel & indicator CSS
├── schemas/                      # GSettings schema definitions
│   └── org.gnome.shell.extensions.multi-monitors-bar.gschema.xml
└── reinstall.sh                  # One-step reinstall script

🛠️ Development

Build the upload archive with bash package.sh. It includes runtime JavaScript, metadata, styles, the license, and schema XML. Compiled schemas are excluded; GNOME Shell 45+ compiles them during installation.

After modifying the source:

  1. Run the reinstall script (or copy files manually):
    ./reinstall.sh
  2. On Wayland, log out / log back in. On X11, press Alt+F2 → r.
  3. Watch logs for errors:
    journalctl -f -o cat /usr/bin/gnome-shell

❤️ Donations & Sponsors

If you find this extension useful, please consider supporting development.

Top Sponsors

Sponsor Type Link
MrNerdy42 Individual GitHub Profile
brianpeiris Individual GitHub Profile

Support the Project

📄 License

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License v2 (or any later version).

🙏 Credits

  • Original author: spin83
  • Forked & MOdify by: Frederyk Abryan Palinoan — with extensive help from Claude, Gemini, ChatGPT and GitHub Copilot

About

GNOME Shell extension for advanced multi-monitor panel management with workspace-aware behavior.

Topics

Resources

Stars

59 stars

Watchers

1 watching

Forks

Sponsor this project

Contributors

Languages