This is a fork of Floating Mini Panel by Gerhard Himmel (ghi59). All credit for the extension itself goes to him; this repository only carries a port to GNOME Shell 50 and a handful of additions on top of it.
- I did not write this code. Every change in this fork was written by Claude (Anthropic), an AI assistant, in a series of conversations. I only described what I wanted, tested the results in my own session and committed them. Commits containing that work are prefixed with
[AI]. - I am not a programmer. I am a happy user of GNOME and of the original extension, nothing more. I cannot promise to review, understand, debug or maintain any of this in depth.
- There is no warranty of any kind, express or implied, for this code — see the license below. It runs on my machine, which is all I can honestly say about it.
- Do not bother the original author with problems caused by this fork. If something here misbehaves, open an issue in this repository. If you can reproduce it with his original extension, then it belongs to him.
- Licensed under the GNU General Public License, version 2 or later, the same license as the original. See LICENSE. Modified files carry a notice saying so, as the license requires.
Compared to version 8 of the original, which supports GNOME Shell 46 - 49:
GNOME Shell 50 support. The version checks for GNOME 46 - 49 are gone, along with the Meta unredirect functions which global.compositor has taken over. Clutter.Event_STOP and Clutter.Event_PROPAGATE, which do not exist under those names, are now Clutter.EVENT_STOP and Clutter.EVENT_PROPAGATE, so a good number of signal handlers actually return something again.
Dragging reworked. The Mini Panel follows the pointer as soon as it has left a small threshold instead of waiting out the longpress timeout, it keeps the point it was grabbed at instead of jumping its center under the pointer, it cannot be dragged off-screen anymore, its border corners follow the screen edges while it is moved, and a dragged position is remembered instead of being forgotten in favour of the last predefined position.
Compatibility with Blur my Shell. Everything customized in its Panel section now applies to the Mini Panel as well:
Customization of Blur my Shell > Panel |
Effect on the Mini Panel |
|---|---|
| Blur (on/off), Static Blur, Pipeline (blur radius, brightness, effects), Corner Radius | Blurred background behind the Mini Panel, following it wherever it is moved |
| Unblur in Overview | Blur is removed while the Overview is shown |
| Override Background + Style (Transparent, Light, Dark, Contrasted) | Background of the Mini Panel and of its buttons, so the blur shines through |
| Dynamically Override Background | Background of the Mini Panel is only overridden while no window is near it |
| Force Light Text | Light icons and labels in the Mini Panel |
Blur my Shell is not modified in any way and nothing has to be configured — if it is not installed or its panel blur is switched off, the Mini Panel simply looks as it always did. It works because the Mini Panel is now built inside a container of its own, exactly the shape Blur my Shell looks for when it hunts for panels of other extensions, and it offers itself again whenever that is worth a try: at startup, when Blur my Shell is enabled, disabled or reconfigured, when the Mini Panel is moved or shown, and after the screen has been unlocked, where both are rebuilt in no particular order.
Note: Blur my Shell rounds the corners of the blur itself (Corner Radius, dynamic blur only) and does not know about the dynamic border corners of the Mini Panel, so both roundings can differ slightly at the corners.
An overlay and a shadow of its own. The Mini Panel carries a very light overlay and a soft shadow around itself, both independent of Blur my Shell. The overlay lightens the blur behind the panel — something Blur my Shell cannot do, its brightness only goes downwards. Both are plain CSS in stylesheet.css (search for Own look of the Mini Panel) and can be changed there.
Anchored on its top right corner. Whatever makes the Mini Panel wider — an indicator of a background service showing up, the Drawer being opened — grows it to the left, so its right edge and everything sitting there keeps the place you put it to, instead of being pushed around. That anchor is what is remembered across sessions, so the panel does not wander off while indicators join it late. An alignment to a screen edge or to the center still comes first. In the settings, pos-x is therefore the x of the right edge; a value from the original extension is a left edge and will place the Mini Panel one of its widths too far to the left, once.
This fork is not on extensions.gnome.org. Install it by hand:
git clone https://github.com/dmiara/floating-mini-panel.git \
~/.local/share/gnome-shell/extensions/floating-mini-panel@dmiara
glib-compile-schemas ~/.local/share/gnome-shell/extensions/floating-mini-panel@dmiara/schemasThen log out and log in again (this extension needs the GNOME Shell startup-complete signal, so a restart of the session is required, on Wayland anyway) and enable it:
gnome-extensions enable floating-mini-panel@dmiaraIt has its own UUID (floating-mini-panel@dmiara) and its own settings, so it neither replaces nor is replaced by the original extension. Do not enable both at the same time though — each of them wants to hide the Main Panel.
Everything below this line is the original README of ghi59/floating-mini-panel, by Gerhard Himmel, included unchanged. It describes the original extension, so it does not mention any of the changes above, and its links, version history and installation instructions point at the original.
Floating Mini Panel replaces the Gnome Main Panel with a movable and always-on-topMini Panel with just the DateMenu and QuickSettings. Both menus are fully functional and behave like expected. The Mini Panelcan be moved anywhere on the desktop by dragging it with the handle button. It will align itself, when dragged over screen edges. A click on the handle button will show AppGrid together with the Gnome Main Panel. To reach obscured window or desktop elements it can be hidden for 5 seconds by right clicking the handle button, or simply moved out of the way.
-
Vertical Orientation (new)
-
Predefined Positions, Dynamic Border Corners, Menu
-
System-, Extension- and App-Indicator (no legacy appicons) support
-
Indicator Drawer and Always-Visible-Area
-
Auto Mode
-
Respects Dark / Light mode.
-
Relies on system settings for date format and battery percentage.
-
Multi monitor capable.
-
Relocates itself if necessary when monitors change.
-
Works on X11 and Wayland.
-
Integrated to QuickSettings menu.
-
No extension settings necessary.
Get the latest release from GNOME Extensions
Working most of the time with Laptops, every inch of display space is important. Hiding the Main Panel or going into Fullscreen are ways to gain space. But then Intelli-Hide-Features may disturb or Fullscreen has to be toggled. With the Mini Panel nothing of this is needed for working maximized, staying informed about time and system status and having important functions available.
Simply enable Floating Mini Panel via QuickSettings menu and place it where you prefer.
Attention: When installing for the first time or disable/enable accross sessions, you have to logout and login again, because this extension relies on the GNOME Shell 'startup-complete' signal to function correctly!
There are two modes of operation, which you can activate in the QuickToggle menu of the Mini Panel in QuickSettings. Selecting a mode will automatically enable the Mini Panel if it was disabled.
1. Permanent Mode: If this mode is enabled, the Main Panel will be permanently (with the exception of Overview) hidden and the Mini Panel shown instead. Since version 6 Permanent Mode will be automatically switched to Auto Mode if a panel-hiding extension is enabled and also disallowed until no panel-hiding extension is active anymore (you will be informed by notification popups).
2. Automatic Mode: In this mode the Mini Panel will only be shown, if the Main Panel is hidden. There are several ways to hide the Main Panel:
| 3rd Party Extension | Actions | Settings |
|---|---|---|
| w/o | Fullscreen (F11) | w/o |
| PaperWM | Switch workspaces | Hide Top Panel per workspace |
| Hide Top Bar | - Dodge window to Main Panel - Maximze window - Fullscreen (F11) - Reveal/Hide Main Panel |
Intelli-Hide |
| Dash To Panel | - Dodge window to Main Panel - Maximze window - Fullscreen (F11) - Reveal/Hide Main Panel |
Intelli-Hide |
Tip: To disable the revealing of Main Panel by mouse, disable Show panel when mouse approaches edge of screen for 'Hide Top Bar' and/or set Required pressure threshold (px)to 9990 for 'Dash To Panel'.
Since version 4 there is support for System-, Extension- and App-Indicators w/o Legacy AppIcons. The indicators are placed in a Drawer and a Always-Visible-Area. App-Indicators are always placed in the Always-Visible-Area and cannot be moved in the Drawer, because of a technical reason, but also because it makes no sense to hide them (if you don't like that, disable App-Indicators support in GNOME Extension Manager or if possible in the app itself).
-
To open and close the Drawer do a middle click on the Handle Button.
-
To move an indicator from the Drawer to the Always-Visible-Area and vice versa do a middle click on the indicator itself.
The order of the indicators follows their order in the Main Panel. As soon as there are indicators in the Drawer and in the Always-Visible-Area and the Drawer is opened, a small divider between the two areas will be visible. Closing the Drawer, or moving all indicators out of the Drawer (which would make no sense, because someone could just leave the Drawer open with the same result) or out of the Always-Visible-Area, will hide the divider. All your customizations will be written to the extension settings and restored across sessions.
Since version 7 there is support for Predefined Positions (Top-Start, Top-Center, Top-End, Bottom-Start, Bottom-Center, Bottom-End). If Mini Panel is aligned to screen edges the border corners (rounded, not rounded) will adjust automatically.
If positioned to Top-Center or Bottom-Center Mini Panel will stay centered when its width changes (e.g. Drawer open/closed). A menu was added presenting all available actions, which all can be executed directly with mouse clicks and some modifier keys.
- To open the menu do a right button longpress on the Handle Button.
Since version 8 Vertical Orientation (experimental) is available. Switching between horizontal amd vertical orientation will reset the alignment to none.
- To change the orientation do a middle button longpress.
Be aware that most but not all Extension Indicators are supported well , especially very complex indicators e.g. 'Media Controls' might have problems or missing functionality! I am working on it.
But if you are using a "normal" extension with an indicator and experience problems, let me know by opening an issue.
This extension mainly relies on Property Bindings and Signals. Neither deprecated functions nor code injections are used. Further it is not very intrusive into the GNOME Shell code respective into the running system.
-
What is changed in all modes:
- The
Mini Panelis added (TopChrome) to the system. - Unredirection is disabled and the Enable-Unredirection-Function is monkey-patched.
- Custom Hotkey Handlers for DateMenu and Quicksettings menus.
- SourceActor for DateMenu and Quicksettings menus.
- ArrowAlignment for DateMenu and Quicksettings menus.
- Bottom padding for menus (globally via CSS).
- The
-
What is changed additionally in permanent mode:
- PanelBox is moved out of the visible screen area and vice versa.
- PanelBox is untracked and vice versa.
-
What is changed additionally in automatic mode:
- Nothing.
-
What is changed additionally for System-, Extension- and App-Indicators:
- SourceActor for menus.
- ArrowAlignment menus.
-
What is changed additionally for Vertical Orientation:
- UserArrowSide for menus.
| Feature | Status |
|---|---|
| Stand-alone Automatic Mode (w/o 3rd party extensions) | planned |
| Issue #1: Present 3rd party indicators (Bartender Style MacOS) | Available since Version 4 |
| Favorites menu via middle click on handle button | Not neccessary anymore, if 3rd party indicators are available in Mini Panel |
| QuickSettings scroll actions (Volume, Caffeine, Workspace) | Available since Version 4 |
| Issue #4: Touchscreen support | Planned |
| Issue #5: Predefined Locations (Top-Left, Top-Center, Top-Right, Bottom-Left, Bottom-Center, Bottom-Right) | Available since version 7 |
| Issue #5: Default Location and Edge Offset | Coding done and testing ongoing. Availability postponed |
| Vertical Orientation | Available since version 8 |
| Issue #11: Theming (Light/Dark, Icon- & Font-Size, Spacing, etc.) | Coding ongoing |
| Stabilize behavior in 'permanent mode' on Startup, Lock Screen, Suspend and Enable/Disable | Available since version 5 |
| Settings | Coding ongoing |
| Issue #12 - Keyboard Shortcut for hiding the floating panel | Coding ongoing |
| Problem | Solution / Workaround |
|---|---|
| When enabling/disabling extensions and/or changing settings and in rare cases e.g. after System Suspend this extension could get out-of-sync in automatic and permanent mode | Simply open Overview and close it again to resync |
When enabling ArcMenu during runtime it's Menu is not aligned correctly to the Indicator in the Mini Panel. |
Simply open Overview and close it again to align the menu correctly |
AppIndicator icon of Zoom doesn't show up in Mini Panel |
Start Zoom with Main Panel shown |
Version 8
-
Vertical Orientation
-
Unredirection is disabled and the Enable-Unredirection-Function is monkey-patched
-
Bug fixing
Version 7
-
Improved Realigning / Relocating
-
Predefined Positions
-
Dynamic Border Corners
-
Menu
-
Code refactored and bug fixing.
-
Support for GNOME 46 and 49
-
Style (css) changes
Version 6
-
Improved and enhanced Showing / Hiding behavior on Startup, Lock Screen, Suspend and Enable / Disable.
-
Panel-hiding extensions are tracked and when enabled,
Mini Panelswitches into Auto Mode and Permanent Mode is not allowed (and vice versa). -
Bug fixing.
Version 5
- Rejected: Missing GObject.disconnect code added in destroy().
Version 4
-
Bug: Turning of
Mini Panelin Auto Mode via QuickSettings and turning back on, switched it into Permanent Mode w/o updating subtitle of toggle in QuickSettings corrected. -
Scroll Actions for Volume In, Volume Out and Caffeine on QuickSettings indicators and for Workspace switching on Handle Button added.
-
Issue #1: Support for System-, Extension- and App-Indicators w/o Legacy AppIcons in Drawer (Bartender style) and Always-Visible-Area added.
-
QuickToggle code refactored.
-
Issue #3: Check for existance of QuickSettings._system before connecting to signal.
Version 3
-
Auto Mode added
-
Issue #2: Hotkey support for DateMenu and QuickSettings added.
-
Missing functionality in relocation code added.
-
Showing of
Mini Panelwith animation added.
Verion 2
- Rejected: Missing GLib.Timeout cleanup code added.
Version 1
- Initial code with permanent hiding of Main Panel, left click on Handle Button for Overview and right click for hiding (5 sec.) of
Mini Panel.
Floating Mini Panel is available under the terms of the GPL-v2 or later license. See LICENSE for details.

