Kiwi is free open source project that brings macOS-inspired features for GNOME. *Note. This extension is tested with vanilla GNOME Adwaita theme. Be aware that other extensions may cause compatibility issues. Features: - macOS-style window control buttons with GTK theming - Firefox window control theming - Move fullscreen windows to new workspaces automatically - Make windows transparent while moving - Display battery percentage when below 20% - Move calendar to the right side and customize notifications - Quick settings media and notifications tweaks - Show current window title in the top panel - Show panel on hover in fullscreen mode - Hide minimized windows in overview - Hide the Activities button - Skip overview on login (go directly to desktop) - Set panel transparency based on window position - Keyboard indicator styling - Overview wallpaper blur - Focus on newly launched windows (removes window-ready notifications) - Show Caps Lock/Num Lock indicators in the top panel - Add username display to the quick settings menu - Multilingual support and more... This extension uses a modular architecture for stability and customization. Some advanced features require native libraries (available in the advanced/ folder). Disclaimer: This extension is unofficial and not affiliated with Apple in any way.
Note: Binary files aren't shown on the web site. To see all files, please download the extension zipfile.
| Version | Status |
|---|---|
| 1.5.1 (33) | Active |
| 1.5.0 (32) | Inactive |
| 1.4.1 (31) | Active |
| 1.4.1 (30) | Rejected |
| 1.4.0 (29) | Active |
| 1.4.0 (28) | Rejected |
| 1.3.1 (27) | Active |
| 1.3.0 (26) | Active |
| 1.2.1 (25) | Active |
| 1.2.1 (24) | Rejected |
| 1.2.0 (23) | Active |
| 1.1.0 (22) | Active |
| 1.0.2 (21) | Inactive |
| 1.0.1 (20) | Inactive |
| 1.0.0 (19) | Inactive |
| 18 | Inactive |
| 17 | Inactive |
| 16 | Rejected |
| 15 | Inactive |
| 0.9.6 beta (14) | Rejected |
| 13 | Inactive |
| 12 | Inactive |
| 11 | Inactive |
| 10 | Inactive |
| 9 | Inactive |
| 8 | Inactive |
| 7 | Rejected |
| 6 | Inactive |
| 5 | Rejected |
| 4 | Inactive |
| 3 | Rejected |
| 2 | Inactive |
| 1 | Rejected |
1. Please remove unused import (line 1 `extension.js`). 2. Also null out in disable: ```js this._settings = null; ``` [EGO Review Guidelines: Destroy](https://gjs.guide/extensions/review-guidelines/review-guidelines.html#destroy-all-objects) 3. Please remove 49 since we don't have a stable version yet. 4. Remove `stylesheet` from `metadata.json`, not needed. 5. `lookupByUUID()` is a bad practice: - line 18 and 24 `apps/windowControls.js` - line 10, 68, 171 `apps/gtkThemeManager.js` - line 10 `apps/lockIcon.js` You can send `this` from the entry point to the class needing it when it's possible (dependency injection). 6. You cannot hold instance of objects in global scope and leave it there after disable: - line 11 `apps/windowControls.js` - line 6 `apps/gtkThemeManager.js` - line 10 `apps/lockIcon.js` - [EGO Review Guidelines: Initialization](https://gjs.guide/extensions/review-guidelines/review-guidelines.html#only-use-initialization-for-static-resources) - [EGO Review Guidelines: Destroy](https://gjs.guide/extensions/review-guidelines/review-guidelines.html#destroy-all-objects) 7. Please use aysnc for reading file content since you are in shell process (line 106, 140 `apps/gtkThemeManager.js`): [Gio.File.load_contents_async](https://gjs-docs.gnome.org/gio20~2.0/gio.file#method-load_contents_async) 8. Timeout should be removed on disable: - line 40 `apps/lockIcon.js` - line 251 `apps/panelTransparency.js` [EGO Review Guidelines: Timeout](https://gjs.guide/extensions/review-guidelines/review-guidelines.html#remove-main-loop-sources) 9. You cannot create instance of objects in global scope (line 10 `apps/lockIcon.js`): [EGO Review Guidelines: Initialization](https://gjs.guide/extensions/review-guidelines/review-guidelines.html#only-use-initialization-for-static-resources) If you need any help with your extension you can ask us on: - [GNOME Extensions Matrix Channel](https://matrix.to/#/#extensions:gnome.org) - IRC Bridge: irc://irc.gimpnet.org/shell-extensions