diff --git a/maximus-buttons@hanspr/README.md b/maximus-buttons@hanspr/README.md
new file mode 100644
index 00000000000..65f729c9f2f
--- /dev/null
+++ b/maximus-buttons@hanspr/README.md
@@ -0,0 +1,25 @@
+Maximus Buttons
+--------------------
+
+This applet is desinged to work in pair with:
+
+* maximus-title@hanspr
+* maximus extension to remove the title bar on maximized windows
+* Multiple monitors: Add the applet to panels in all monitors to set the buttons on the active window monitor
+* Multiple monitors: buttons will be visible on the current focused monitor window to improve focus visibility between monitors
+
+# Features
+* It will show the minimize, maximize, close buttons on the panel when a window is maximized
+* It only make sense with Maximus extension, because you loose those buttons, after maximize
+
+# How to configure
+* Install the applet
+* Add applet with the plus sign
+* Edit the panel and reposition the applet at the far right or left of your panel.
+* It makes more sense when the panel is on the top, but it will work on bottom panels as well
+
+# Limitations
+* No consideration for vertical panels, it's been tested on horizontal panels only
+
+# Errors
+* Please report any errors in github `https://github.com/linuxmint/cinnamon-spices-applets/issues`
diff --git a/maximus-buttons@hanspr/files/maximus-buttons@hanspr/applet.js b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/applet.js
new file mode 100644
index 00000000000..bdc77eb4787
--- /dev/null
+++ b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/applet.js
@@ -0,0 +1,342 @@
+const Main = imports.ui.main
+const Applet = imports.ui.applet
+const Settings = imports.ui.settings
+const SignalManager = imports.misc.signalManager
+const Cinnamon = imports.gi.Cinnamon
+const St = imports.gi.St
+
+const APPNAME = 'Maximus Tittle Buttons'
+const tracker = Cinnamon.WindowTracker.get_default()
+const UUID = 'maximus-title-buttons@hanspr'
+
+class MyApplet extends Applet.TextIconApplet {
+ constructor(metadata, orientation, panelHeight, instanceId) {
+ try {
+ super(orientation, panelHeight, instanceId)
+ this.metadata = metadata
+ this.uuid = metadata.uuid
+ this.orientation = orientation
+ this.panelHeight = panelHeight
+ this.instanceId = instanceId
+ this.appletPath = metadata.path
+ this.hide_applet_label(false)
+ this.bindSettings()
+ this.initButtons()
+ this.connectSignals()
+ setTimeout(() => {
+ this.initialized = true
+ }, 500)
+ } catch (e) {
+ global.logError(e)
+ }
+ }
+
+ initButtons() {
+ let buttons = this.buttons_style.split(":")
+ if (this.checkButton(buttons, "maximize") || this.checkButton(buttons, "minimize") || this.checkButton(buttons, "close")) {
+ this.loadTheme()
+ }
+ this.button = []
+ this.createButtons(this.buttons_style)
+ this.on_panel_edit_mode_changed
+ this._showButtons(global.display.focus_window)
+ }
+
+ bindSettings() {
+ this.settings = new Settings.AppletSettings(this, this.uuid, this.instanceId)
+
+ this.settings.bind("buttons-style", "buttons_style", this.on_settings_changed)
+ this.settings.bind("buttons-theme", "buttonsTheme")
+ this.settings.bind("only-maximized", "onlyMaximized", this.on_settings_changed)
+ this.settings.bind("hide-buttons", "hideButtons", this.on_settings_changed)
+ this.settings.bind("on-desktop-shutdown", "onDesktopShutdown", this.on_settings_changed)
+ }
+
+ connectSignals() {
+ this.signalManager = new SignalManager.SignalManager(null)
+
+ this.signalManager.connect(Main.themeManager, 'theme-set', this.loadTheme, this)
+ this.signalManager.connect(global.settings, 'changed::panel-edit-mode', this.on_panel_edit_mode_changed, this)
+ this.signalManager.connect(global.window_manager, 'size-change', () => {
+ let w = global.display.focus_window
+ if (w) {
+ this._showButtons(w)
+ }
+ }, this)
+
+ this.signalManager.connect(global.display, 'notify::focus-window', () => {
+ let w = global.display.focus_window
+ if (w) {
+ this._showButtons(w)
+ }
+ }, this)
+ this.signalManager.connect(global.screen, 'window-monitor-changed', () => {
+ let w = global.display.focus_window
+ if (w) {
+ this._showButtons(w)
+ }
+ }, this)
+ this.signalManager.connect(global.screen, 'monitors-changed', () => {
+ let w = global.display.focus_window
+ if (w == null) {
+ this.setButtons("hide")
+ } else {
+ this._showButtons(w)
+ }
+ }, this)
+ }
+
+ on_panel_edit_mode_changed() {
+ let reactive = !global.settings.get_boolean("panel-edit-mode")
+
+ let b = this.buttons_style.split(":")
+ for (let i = 0; i < b.length; ++i) {
+ this.button[b[i]].reactive = reactive
+ }
+ }
+
+ getCssPath(theme) {
+ let cssPath = this.appletPath + "/themes/" + theme + "/style.css"
+ return cssPath
+ }
+
+ loadTheme() {
+ this.actor.set_style_class_name("window-buttons")
+ let theme = St.ThemeContext.get_for_stage(global.stage).get_theme()
+ theme.load_stylesheet(this.getCssPath(this.buttonsTheme))
+ this.oldTheme = this.buttonsTheme
+ }
+
+ createButtons(buttonsStyle) {
+ buttonsStyle = buttonsStyle.split(":")
+ for (let i = 0; i < buttonsStyle.length; ++i) {
+ let buttonName = buttonsStyle[i] + "Button"
+ if (this[buttonName]) {
+ this[buttonName]()
+ }
+ }
+ }
+
+ iconButton() {
+ this.button["icon"] = new St.Button({
+ name: "iconButton",
+ style_class: "window-list-item",
+ reactive: true
+ })
+ this.actor.add(this.button["icon"])
+ }
+
+ minimizeButton() {
+ this.button["minimize"] = new St.Button({
+ name: "windowButton",
+ style_class: "minimize window-button",
+ reactive: true
+ })
+ this.actor.add(this.button["minimize"])
+ this.button["minimize"].connect("button-press-event", (actor, event) => {
+ let button = event.get_button()
+ if (button == 1) {
+ this.minimizeWindow()
+ return true
+ } else if (button == 3) {
+ this._applet_context_menu.toggle()
+ }
+ return true
+ })
+ }
+
+ minimizeWindow() {
+ if (this.button["minimize"].opacity == 0) {
+ return false
+ }
+ let activeWindow = global.display.focus_window
+ let app = tracker.get_window_app(activeWindow)
+ if (!app) {
+ return
+ } else {
+ activeWindow.minimize()
+ }
+ }
+
+ maximizeButton() {
+ this.button["maximize"] = new St.Button({
+ name: "windowButton",
+ style_class: "maximize window-button",
+ reactive: true
+ })
+ this.actor.add(this.button["maximize"])
+ this.button["maximize"].connect("button-press-event", (actor, event) => {
+ let button = event.get_button()
+ if (button == 1) {
+ this.maximizeWindow()
+ return true
+ } else if (button == 3) {
+ this._applet_context_menu.toggle()
+ }
+ return true
+ })
+ }
+
+ maximizeWindow() {
+ if (this.button["maximize"].opacity == 0) {
+ return false
+ }
+ let activeWindow = global.display.focus_window
+ if (activeWindow) {
+ let app = tracker.get_window_app(activeWindow)
+ if (!app) {
+ return
+ } else {
+ if (activeWindow.get_maximized()) {
+ activeWindow.unmaximize(3)
+ } else {
+ activeWindow.maximize(3)
+ }
+ }
+ }
+
+ }
+
+ closeButton() {
+ this.button["close"] = new St.Button({
+ name: "windowButton",
+ style_class: "close window-button",
+ reactive: true
+ })
+ this.actor.add(this.button["close"])
+ this.button["close"].connect("button-press-event", (actor, event) => {
+ let button = event.get_button()
+ if (button == 1) {
+ this.closeWindow()
+ return true
+ } else if (button == 3) {
+ this._applet_context_menu.toggle()
+ }
+ return true
+ })
+ }
+
+ closeWindow() {
+ if (this.button["close"].opacity == 0) {
+ return false
+ }
+ let activeWindow = global.display.focus_window
+ let app = tracker.get_window_app(activeWindow)
+
+ if (!app) {
+ if (this.onDesktopShutdown == true) {
+ this._session.ShutdownRemote()
+ }
+ return
+ } else {
+ activeWindow.delete(global.get_current_time())
+ }
+
+ }
+
+ updateWindowIcon() {
+ let activeWindow = global.display.focus_window
+ if (activeWindow) {
+ let app = tracker.get_window_app(activeWindow)
+ if (app) {
+ let icon = tracker.get_window_app(activeWindow).create_icon_texture(20)
+ this.button["icon"].set_child(icon)
+ this.actor.add(this.button['icon'])
+ } else {
+ let icon = new St.Icon({
+ icon_name: "video-display",
+ icon_type: St.IconType.SYMBOLIC,
+ style: "icon-size:20px;"
+ })
+ this.button["icon"].set_child(icon)
+ }
+ } else {
+ let icon = new St.Icon({
+ icon_name: "video-display",
+ icon_type: St.IconType.SYMBOLIC,
+ style: "icon-size:20px;"
+ })
+ this.button["icon"].set_child(icon)
+ }
+ }
+
+ _showButtons(w) {
+ if (!w) {
+ return
+ }
+ if (w.get_monitor() != this.panel.monitorIndex) {
+ this.setButtons("hide")
+ return
+ }
+ if (w.get_window_type() >= 1) {
+ this.setButtons("hide")
+ return
+ }
+ let buttons = this.buttons_style.split(":")
+ if (this.checkButton(buttons, "icon")) {
+ this.updateWindowIcon()
+ }
+ if (this.onlyMaximized == true) {
+ this.onlyMaximize(w)
+ } else {
+ this.setButtons("show")
+ }
+ }
+
+ on_settings_changed() {
+ this.actor.destroy_all_children()
+ let buttons = this.buttons_style.split(":")
+ if (this.checkButton(buttons, "maximize") || this.checkButton(buttons, "minimize") || this.checkButton(buttons, "close")) {
+ this.loadTheme()
+ }
+ this.button = []
+ this.createButtons(this.buttons_style)
+ this._showButtons(global.display.focus_window)
+ }
+
+ checkButton(arr, obj) {
+ for (var i = 0; i < arr.length; i++) {
+ if (arr[i] == obj) {
+ return true
+ }
+ }
+ return null
+ }
+
+ onlyMaximize(w) {
+ let app = tracker.get_window_app(w)
+ if (app && w.get_maximized()) {
+ this.setButtons("show")
+ } else {
+ this.setButtons("hide")
+ }
+ }
+
+ setButtons(what) {
+ let buttons = this.buttons_style.split(":")
+ let skip = 0
+ if (what == "show") {
+ skip = 255
+ }
+ for (let i = 0; i < buttons.length; ++i) {
+ if (buttons[i] == undefined || buttons[i] == "icon" || this.button[buttons[i]] == undefined || this.button[buttons[i]].opacity == skip) {
+ continue
+ }
+ if (what == "show") {
+ if (!this.hideButtons) {
+ this.button[buttons[i]].show()
+ }
+ this.button[buttons[i]].opacity = 255
+ } else {
+ if (!this.hideButtons) {
+ this.button[buttons[i]].hide()
+ }
+ this.button[buttons[i]].opacity = 0
+ }
+ }
+ }
+}
+
+function main(metadata, orientation, panelHeight, instanceId) {
+ return new MyApplet(metadata, orientation, panelHeight, instanceId)
+}
diff --git a/maximus-buttons@hanspr/files/maximus-buttons@hanspr/icon.png b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/icon.png
new file mode 100644
index 00000000000..e8209a3e2b3
Binary files /dev/null and b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/icon.png differ
diff --git a/maximus-buttons@hanspr/files/maximus-buttons@hanspr/metadata.json b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/metadata.json
new file mode 100644
index 00000000000..12dc5e1a673
--- /dev/null
+++ b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/metadata.json
@@ -0,0 +1,10 @@
+{
+ "max-instances": -1,
+ "description": "Maximus buttons",
+ "uuid": "maximus-buttons@hanspr",
+ "name": "Maximus Buttons",
+ "website": "https://github.com/linuxmint/cinnamon-spices-applets",
+ "version": "0.0.1",
+ "author": "hanspr",
+ "contributors": "Hans Peyrot"
+}
diff --git a/maximus-buttons@hanspr/files/maximus-buttons@hanspr/settings-schema.json b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/settings-schema.json
new file mode 100644
index 00000000000..e291243c4f6
--- /dev/null
+++ b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/settings-schema.json
@@ -0,0 +1,42 @@
+{
+ "head": {
+ "type": "header",
+ "description": "Window Buttons Settings"
+ },
+ "buttons-style": {
+ "type": "entry",
+ "description": "Window Buttons Style (Example: title:minimize:maximize:close:icon)",
+ "default": "minimize:maximize:close"
+ },
+
+ "buttons-theme": {
+ "type": "combobox",
+ "default": "default",
+ "description": "Buttons Theme (Needs Restart Cinnamon)",
+ "options": {
+ "Default": "default",
+ "Mac-OS-X": "Mac-OS-X",
+ "Mint-X": "Mint-X",
+ "Radiance": "Radiance",
+ "UniMetro": "UniMetro",
+ "UniMetro-Black": "UniMetro-Black",
+ "Vimix": "Vimix"
+ },
+ "tooltip": "Please select a theme for window buttons"
+ },
+ "on-desktop-shutdown": {
+ "type": "switch",
+ "default": false,
+ "description": "Click on close: poweroff if desktop is focused"
+ },
+ "hide-buttons": {
+ "type": "switch",
+ "default": true,
+ "description": "Hide buttons: instead of removing (no applets jump left right)"
+ },
+ "only-maximized": {
+ "type": "switch",
+ "default": true,
+ "description": "Show buttons: only when focused window is maximized"
+ }
+}
diff --git a/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/Mac-OS-X/ABOUT b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/Mac-OS-X/ABOUT
new file mode 100644
index 00000000000..514faf4b9ba
--- /dev/null
+++ b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/Mac-OS-X/ABOUT
@@ -0,0 +1 @@
+Based off Mac-OS-X theme
diff --git a/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/Mac-OS-X/close.png b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/Mac-OS-X/close.png
new file mode 100644
index 00000000000..7403e0f064e
Binary files /dev/null and b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/Mac-OS-X/close.png differ
diff --git a/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/Mac-OS-X/close_focused.png b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/Mac-OS-X/close_focused.png
new file mode 100644
index 00000000000..4cc1dcbf5d1
Binary files /dev/null and b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/Mac-OS-X/close_focused.png differ
diff --git a/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/Mac-OS-X/maximize.png b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/Mac-OS-X/maximize.png
new file mode 100644
index 00000000000..298d6de7577
Binary files /dev/null and b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/Mac-OS-X/maximize.png differ
diff --git a/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/Mac-OS-X/maximize_focused.png b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/Mac-OS-X/maximize_focused.png
new file mode 100644
index 00000000000..716a6a80014
Binary files /dev/null and b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/Mac-OS-X/maximize_focused.png differ
diff --git a/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/Mac-OS-X/minimize.png b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/Mac-OS-X/minimize.png
new file mode 100644
index 00000000000..92160d1ba2e
Binary files /dev/null and b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/Mac-OS-X/minimize.png differ
diff --git a/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/Mac-OS-X/minimize_focused.png b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/Mac-OS-X/minimize_focused.png
new file mode 100644
index 00000000000..75613c31ec7
Binary files /dev/null and b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/Mac-OS-X/minimize_focused.png differ
diff --git a/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/Mac-OS-X/style.css b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/Mac-OS-X/style.css
new file mode 100644
index 00000000000..315c89a9e5b
--- /dev/null
+++ b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/Mac-OS-X/style.css
@@ -0,0 +1,46 @@
+.box-bin { }
+
+.button-box {
+ spacing: 2px;
+}
+
+.window-button {
+ width: 19px;
+ height: 24px;
+}
+
+.minimize {
+ background-image: url("minimize.png");
+}
+
+.minimize:hover {
+ background-image: url("minimize_focused.png");
+}
+
+.minimize:active {
+ background-image: url("minimize_focused.png");
+}
+
+.maximize {
+ background-image: url("maximize.png");
+}
+
+.maximize:hover {
+ background-image: url("maximize_focused.png");
+}
+
+.maximize:active {
+ background-image: url("maximize_focused.png");
+}
+
+.close {
+ background-image: url("close.png");
+}
+
+.close:hover {
+ background-image: url("close_focused.png");
+}
+
+.close:active {
+ background-image: url("close_focused.png");
+}
diff --git a/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/Mint-X/ABOUT b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/Mint-X/ABOUT
new file mode 100644
index 00000000000..b680c5843e6
--- /dev/null
+++ b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/Mint-X/ABOUT
@@ -0,0 +1 @@
+This is based off the Mint-X theme.
diff --git a/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/Mint-X/close.svg b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/Mint-X/close.svg
new file mode 100644
index 00000000000..e542dcd60ac
--- /dev/null
+++ b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/Mint-X/close.svg
@@ -0,0 +1,81 @@
+
+
diff --git a/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/Mint-X/close_hover.svg b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/Mint-X/close_hover.svg
new file mode 100644
index 00000000000..71ecc03bf9c
--- /dev/null
+++ b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/Mint-X/close_hover.svg
@@ -0,0 +1,76 @@
+
+
diff --git a/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/Mint-X/max.svg b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/Mint-X/max.svg
new file mode 100644
index 00000000000..1437d51aff8
--- /dev/null
+++ b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/Mint-X/max.svg
@@ -0,0 +1,85 @@
+
+
diff --git a/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/Mint-X/max_hover.svg b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/Mint-X/max_hover.svg
new file mode 100644
index 00000000000..bf55a1bb9c9
--- /dev/null
+++ b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/Mint-X/max_hover.svg
@@ -0,0 +1,79 @@
+
+
diff --git a/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/Mint-X/min.svg b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/Mint-X/min.svg
new file mode 100644
index 00000000000..28b32726f02
--- /dev/null
+++ b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/Mint-X/min.svg
@@ -0,0 +1,86 @@
+
+
diff --git a/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/Mint-X/min_hover.svg b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/Mint-X/min_hover.svg
new file mode 100644
index 00000000000..590bbaf44e8
--- /dev/null
+++ b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/Mint-X/min_hover.svg
@@ -0,0 +1,79 @@
+
+
diff --git a/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/Mint-X/screenshot.png b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/Mint-X/screenshot.png
new file mode 100644
index 00000000000..cc9a7e1cc30
Binary files /dev/null and b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/Mint-X/screenshot.png differ
diff --git a/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/Mint-X/style.css b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/Mint-X/style.css
new file mode 100644
index 00000000000..ec8fa1e09c0
--- /dev/null
+++ b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/Mint-X/style.css
@@ -0,0 +1,56 @@
+/* The box-bin element holds the button-box element which holds each window-button.
+ *
+ * Control spacing between each button via .button-box.
+ */
+.box-bin {
+ border-width: 0px;
+ padding: 0px;
+ margin: 0px;
+}
+
+.button-box {
+ spacing: 4px;
+}
+
+/* The style for each individual window button */
+.window-button {
+ width: 24px;
+ height: 20px;
+}
+
+/* The style for the window button when hovered over */
+.window-button:hover {
+}
+
+/* Here you can style each individual button. You need to define style classes
+ * ".minimize", ".maximize" and ".close".
+ * You can additionally define styles for the :hover and :active pseudo classes
+ * if you wish.
+ * See the 'Radiance' style.css for an example of this.
+ */
+/* Style for the minimize button */
+.minimize {
+ background-image: url('min.svg');
+}
+
+.minimize:hover {
+ background-image: url('min_hover.svg');
+}
+
+/* Style for the maximize button */
+.maximize {
+ background-image: url('max.svg');
+}
+
+.maximize:hover {
+ background-image: url('max_hover.svg');
+}
+
+/* Style for the close button */
+.close {
+ background-image: url('close.svg');
+}
+
+.close:hover {
+ background-image: url('close_hover.svg');
+}
diff --git a/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/Radiance/ABOUT b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/Radiance/ABOUT
new file mode 100644
index 00000000000..dcb6d524607
--- /dev/null
+++ b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/Radiance/ABOUT
@@ -0,0 +1 @@
+Based off Unity's Radiance theme.
diff --git a/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/Radiance/close_focused_normal.png b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/Radiance/close_focused_normal.png
new file mode 100644
index 00000000000..4ad56edbd9f
Binary files /dev/null and b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/Radiance/close_focused_normal.png differ
diff --git a/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/Radiance/close_focused_prelight.png b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/Radiance/close_focused_prelight.png
new file mode 100644
index 00000000000..ce3e7085881
Binary files /dev/null and b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/Radiance/close_focused_prelight.png differ
diff --git a/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/Radiance/close_focused_pressed.png b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/Radiance/close_focused_pressed.png
new file mode 100644
index 00000000000..2215109f758
Binary files /dev/null and b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/Radiance/close_focused_pressed.png differ
diff --git a/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/Radiance/maximize_focused_normal.png b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/Radiance/maximize_focused_normal.png
new file mode 100644
index 00000000000..83c2005aa37
Binary files /dev/null and b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/Radiance/maximize_focused_normal.png differ
diff --git a/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/Radiance/maximize_focused_prelight.png b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/Radiance/maximize_focused_prelight.png
new file mode 100644
index 00000000000..d51c2eef160
Binary files /dev/null and b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/Radiance/maximize_focused_prelight.png differ
diff --git a/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/Radiance/maximize_focused_pressed.png b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/Radiance/maximize_focused_pressed.png
new file mode 100644
index 00000000000..6020ca04940
Binary files /dev/null and b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/Radiance/maximize_focused_pressed.png differ
diff --git a/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/Radiance/minimize_focused_normal.png b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/Radiance/minimize_focused_normal.png
new file mode 100644
index 00000000000..542ae3a9487
Binary files /dev/null and b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/Radiance/minimize_focused_normal.png differ
diff --git a/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/Radiance/minimize_focused_prelight.png b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/Radiance/minimize_focused_prelight.png
new file mode 100644
index 00000000000..54eff796a17
Binary files /dev/null and b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/Radiance/minimize_focused_prelight.png differ
diff --git a/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/Radiance/minimize_focused_pressed.png b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/Radiance/minimize_focused_pressed.png
new file mode 100644
index 00000000000..27519d3db3c
Binary files /dev/null and b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/Radiance/minimize_focused_pressed.png differ
diff --git a/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/Radiance/screenshot.png b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/Radiance/screenshot.png
new file mode 100644
index 00000000000..088a7b70df1
Binary files /dev/null and b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/Radiance/screenshot.png differ
diff --git a/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/Radiance/style.css b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/Radiance/style.css
new file mode 100644
index 00000000000..3abdbe02f26
--- /dev/null
+++ b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/Radiance/style.css
@@ -0,0 +1,46 @@
+.box-bin { }
+
+.button-box {
+ spacing: 2px;
+}
+
+.window-button {
+ width: 19px;
+ height: 24px;
+}
+
+.minimize {
+ background-image: url("minimize_focused_normal.png");
+}
+
+.minimize:hover {
+ background-image: url("minimize_focused_prelight.png");
+}
+
+.minimize:active {
+ background-image: url("minimize_focused_pressed.png");
+}
+
+.maximize {
+ background-image: url("maximize_focused_normal.png");
+}
+
+.maximize:hover {
+ background-image: url("maximize_focused_prelight.png");
+}
+
+.maximize:active {
+ background-image: url("maximize_focused_pressed.png");
+}
+
+.close {
+ background-image: url("close_focused_normal.png");
+}
+
+.close:hover {
+ background-image: url("close_focused_prelight.png");
+}
+
+.close:active {
+ background-image: url("close_focused_pressed.png");
+}
diff --git a/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/UniMetro-Black/ABOUT b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/UniMetro-Black/ABOUT
new file mode 100644
index 00000000000..9dbf948cf6b
--- /dev/null
+++ b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/UniMetro-Black/ABOUT
@@ -0,0 +1 @@
+Author: jsnjinga
diff --git a/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/UniMetro-Black/Screenshot.png b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/UniMetro-Black/Screenshot.png
new file mode 100644
index 00000000000..9f96a2d7eb5
Binary files /dev/null and b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/UniMetro-Black/Screenshot.png differ
diff --git a/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/UniMetro-Black/close.png b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/UniMetro-Black/close.png
new file mode 100644
index 00000000000..a947e3c8e76
Binary files /dev/null and b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/UniMetro-Black/close.png differ
diff --git a/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/UniMetro-Black/closeactive.png b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/UniMetro-Black/closeactive.png
new file mode 100644
index 00000000000..e4f6b918d06
Binary files /dev/null and b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/UniMetro-Black/closeactive.png differ
diff --git a/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/UniMetro-Black/closehover.png b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/UniMetro-Black/closehover.png
new file mode 100644
index 00000000000..63059c1fd28
Binary files /dev/null and b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/UniMetro-Black/closehover.png differ
diff --git a/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/UniMetro-Black/max.png b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/UniMetro-Black/max.png
new file mode 100644
index 00000000000..bfc564e7f32
Binary files /dev/null and b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/UniMetro-Black/max.png differ
diff --git a/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/UniMetro-Black/maxactive.png b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/UniMetro-Black/maxactive.png
new file mode 100644
index 00000000000..0b86c1f81e2
Binary files /dev/null and b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/UniMetro-Black/maxactive.png differ
diff --git a/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/UniMetro-Black/maxhover.png b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/UniMetro-Black/maxhover.png
new file mode 100644
index 00000000000..a28141175e6
Binary files /dev/null and b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/UniMetro-Black/maxhover.png differ
diff --git a/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/UniMetro-Black/min.png b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/UniMetro-Black/min.png
new file mode 100644
index 00000000000..d409800ac1c
Binary files /dev/null and b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/UniMetro-Black/min.png differ
diff --git a/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/UniMetro-Black/minactive.png b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/UniMetro-Black/minactive.png
new file mode 100644
index 00000000000..a19b07964ae
Binary files /dev/null and b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/UniMetro-Black/minactive.png differ
diff --git a/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/UniMetro-Black/minhover.png b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/UniMetro-Black/minhover.png
new file mode 100644
index 00000000000..4e699ec29ba
Binary files /dev/null and b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/UniMetro-Black/minhover.png differ
diff --git a/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/UniMetro-Black/style.css b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/UniMetro-Black/style.css
new file mode 100644
index 00000000000..264790b6132
--- /dev/null
+++ b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/UniMetro-Black/style.css
@@ -0,0 +1,42 @@
+.box-bin { }
+
+.button-box {
+ spacing: 1px;
+}
+
+.window-button {
+ width: 19px;
+ height: 19px;
+}
+
+.minimize {
+ background-image: url('min.png');
+}
+.minimize:hover {
+ background-image: url("minhover.png");
+}
+.minimize:active {
+ background-image: url("minactive.png");
+}
+
+
+.maximize {
+ background-image: url('max.png');
+}
+.maximize:hover {
+ background-image: url("maxhover.png");
+}
+.maximize:active {
+ background-image: url("maxactive.png");
+}
+
+
+.close {
+ background-image: url('close.png');
+}
+.close:hover {
+ background-image: url("closehover.png");
+}
+.close:active {
+ background-image: url("closeactive.png");
+}
diff --git a/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/UniMetro/ABOUT b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/UniMetro/ABOUT
new file mode 100644
index 00000000000..9dbf948cf6b
--- /dev/null
+++ b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/UniMetro/ABOUT
@@ -0,0 +1 @@
+Author: jsnjinga
diff --git a/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/UniMetro/Screenshot.png b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/UniMetro/Screenshot.png
new file mode 100644
index 00000000000..2ecb3554ef8
Binary files /dev/null and b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/UniMetro/Screenshot.png differ
diff --git a/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/UniMetro/close.png b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/UniMetro/close.png
new file mode 100644
index 00000000000..6391b6b4b8c
Binary files /dev/null and b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/UniMetro/close.png differ
diff --git a/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/UniMetro/closeactive.png b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/UniMetro/closeactive.png
new file mode 100644
index 00000000000..575bc42b415
Binary files /dev/null and b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/UniMetro/closeactive.png differ
diff --git a/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/UniMetro/closehover.png b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/UniMetro/closehover.png
new file mode 100644
index 00000000000..8e9abc91c96
Binary files /dev/null and b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/UniMetro/closehover.png differ
diff --git a/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/UniMetro/max.png b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/UniMetro/max.png
new file mode 100644
index 00000000000..2a57885aec9
Binary files /dev/null and b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/UniMetro/max.png differ
diff --git a/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/UniMetro/maxactive.png b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/UniMetro/maxactive.png
new file mode 100644
index 00000000000..08041809676
Binary files /dev/null and b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/UniMetro/maxactive.png differ
diff --git a/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/UniMetro/maxhover.png b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/UniMetro/maxhover.png
new file mode 100644
index 00000000000..73ca519a053
Binary files /dev/null and b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/UniMetro/maxhover.png differ
diff --git a/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/UniMetro/min.png b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/UniMetro/min.png
new file mode 100644
index 00000000000..59db3fdcea6
Binary files /dev/null and b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/UniMetro/min.png differ
diff --git a/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/UniMetro/minactive.png b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/UniMetro/minactive.png
new file mode 100644
index 00000000000..7fba8597255
Binary files /dev/null and b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/UniMetro/minactive.png differ
diff --git a/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/UniMetro/minhover.png b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/UniMetro/minhover.png
new file mode 100644
index 00000000000..820665d0c0e
Binary files /dev/null and b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/UniMetro/minhover.png differ
diff --git a/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/UniMetro/style.css b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/UniMetro/style.css
new file mode 100644
index 00000000000..264790b6132
--- /dev/null
+++ b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/UniMetro/style.css
@@ -0,0 +1,42 @@
+.box-bin { }
+
+.button-box {
+ spacing: 1px;
+}
+
+.window-button {
+ width: 19px;
+ height: 19px;
+}
+
+.minimize {
+ background-image: url('min.png');
+}
+.minimize:hover {
+ background-image: url("minhover.png");
+}
+.minimize:active {
+ background-image: url("minactive.png");
+}
+
+
+.maximize {
+ background-image: url('max.png');
+}
+.maximize:hover {
+ background-image: url("maxhover.png");
+}
+.maximize:active {
+ background-image: url("maxactive.png");
+}
+
+
+.close {
+ background-image: url('close.png');
+}
+.close:hover {
+ background-image: url("closehover.png");
+}
+.close:active {
+ background-image: url("closeactive.png");
+}
diff --git a/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/Vimix/close.png b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/Vimix/close.png
new file mode 100644
index 00000000000..9c0857382b5
Binary files /dev/null and b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/Vimix/close.png differ
diff --git a/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/Vimix/close_focused_normal.png b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/Vimix/close_focused_normal.png
new file mode 100644
index 00000000000..9c0857382b5
Binary files /dev/null and b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/Vimix/close_focused_normal.png differ
diff --git a/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/Vimix/close_focused_prelight.png b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/Vimix/close_focused_prelight.png
new file mode 100644
index 00000000000..519d5ed3c10
Binary files /dev/null and b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/Vimix/close_focused_prelight.png differ
diff --git a/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/Vimix/close_focused_pressed.png b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/Vimix/close_focused_pressed.png
new file mode 100644
index 00000000000..0767792582d
Binary files /dev/null and b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/Vimix/close_focused_pressed.png differ
diff --git a/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/Vimix/maximize.png b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/Vimix/maximize.png
new file mode 100644
index 00000000000..67c40f6c28c
Binary files /dev/null and b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/Vimix/maximize.png differ
diff --git a/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/Vimix/maximize_focused_normal.png b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/Vimix/maximize_focused_normal.png
new file mode 100644
index 00000000000..67c40f6c28c
Binary files /dev/null and b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/Vimix/maximize_focused_normal.png differ
diff --git a/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/Vimix/maximize_focused_prelight.png b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/Vimix/maximize_focused_prelight.png
new file mode 100644
index 00000000000..2d164ef3cc9
Binary files /dev/null and b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/Vimix/maximize_focused_prelight.png differ
diff --git a/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/Vimix/maximize_focused_pressed.png b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/Vimix/maximize_focused_pressed.png
new file mode 100644
index 00000000000..50793722be8
Binary files /dev/null and b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/Vimix/maximize_focused_pressed.png differ
diff --git a/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/Vimix/minimize.png b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/Vimix/minimize.png
new file mode 100644
index 00000000000..83906930a04
Binary files /dev/null and b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/Vimix/minimize.png differ
diff --git a/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/Vimix/minimize_focused_normal.png b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/Vimix/minimize_focused_normal.png
new file mode 100644
index 00000000000..83906930a04
Binary files /dev/null and b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/Vimix/minimize_focused_normal.png differ
diff --git a/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/Vimix/minimize_focused_prelight.png b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/Vimix/minimize_focused_prelight.png
new file mode 100644
index 00000000000..b4e7db7144e
Binary files /dev/null and b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/Vimix/minimize_focused_prelight.png differ
diff --git a/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/Vimix/minimize_focused_pressed.png b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/Vimix/minimize_focused_pressed.png
new file mode 100644
index 00000000000..5ecf1883a62
Binary files /dev/null and b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/Vimix/minimize_focused_pressed.png differ
diff --git a/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/Vimix/style.css b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/Vimix/style.css
new file mode 100644
index 00000000000..e6eef530397
--- /dev/null
+++ b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/Vimix/style.css
@@ -0,0 +1,46 @@
+.box-bin { }
+
+.button-box {
+ spacing: 2px;
+}
+
+.window-button {
+ width: 30px;
+ height: 24px;
+}
+
+.minimize {
+ background-image: url("minimize_focused_normal.png");
+}
+
+.minimize:hover {
+ background-image: url("minimize_focused_prelight.png");
+}
+
+.minimize:active {
+ background-image: url("minimize_focused_pressed.png");
+}
+
+.maximize {
+ background-image: url("maximize_focused_normal.png");
+}
+
+.maximize:hover {
+ background-image: url("maximize_focused_prelight.png");
+}
+
+.maximize:active {
+ background-image: url("maximize_focused_pressed.png");
+}
+
+.close {
+ background-image: url("close_focused_normal.png");
+}
+
+.close:hover {
+ background-image: url("close_focused_prelight.png");
+}
+
+.close:active {
+ background-image: url("close_focused_pressed.png");
+}
diff --git a/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/default/ABOUT b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/default/ABOUT
new file mode 100644
index 00000000000..514faf4b9ba
--- /dev/null
+++ b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/default/ABOUT
@@ -0,0 +1 @@
+Based off Mac-OS-X theme
diff --git a/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/default/close.svg b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/default/close.svg
new file mode 100644
index 00000000000..02c223e0352
--- /dev/null
+++ b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/default/close.svg
@@ -0,0 +1,45 @@
+
+
+
+
diff --git a/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/default/close_focused.svg b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/default/close_focused.svg
new file mode 100644
index 00000000000..1844a608b8d
--- /dev/null
+++ b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/default/close_focused.svg
@@ -0,0 +1,45 @@
+
+
+
+
diff --git a/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/default/maximize.svg b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/default/maximize.svg
new file mode 100644
index 00000000000..e3845f401dd
--- /dev/null
+++ b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/default/maximize.svg
@@ -0,0 +1,76 @@
+
+
+
+
diff --git a/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/default/maximize_focused.svg b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/default/maximize_focused.svg
new file mode 100644
index 00000000000..56a1fbaa7e1
--- /dev/null
+++ b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/default/maximize_focused.svg
@@ -0,0 +1,76 @@
+
+
+
+
diff --git a/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/default/minimize.svg b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/default/minimize.svg
new file mode 100644
index 00000000000..48820a97440
--- /dev/null
+++ b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/default/minimize.svg
@@ -0,0 +1,43 @@
+
+
+
+
diff --git a/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/default/minimize_focused.svg b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/default/minimize_focused.svg
new file mode 100644
index 00000000000..90dea0ffda5
--- /dev/null
+++ b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/default/minimize_focused.svg
@@ -0,0 +1,43 @@
+
+
+
+
diff --git a/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/default/style.css b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/default/style.css
new file mode 100644
index 00000000000..aeb7b1f705d
--- /dev/null
+++ b/maximus-buttons@hanspr/files/maximus-buttons@hanspr/themes/default/style.css
@@ -0,0 +1,46 @@
+.box-bin { }
+
+.button-box {
+ spacing: 2px;
+}
+
+.window-button {
+ width: 24px;
+ height: 24px;
+}
+
+.minimize {
+ background-image: url("minimize.svg");
+}
+
+.minimize:hover {
+ background-image: url("minimize_focused.svg");
+}
+
+.minimize:active {
+ background-image: url("minimize_focused.svg");
+}
+
+.maximize {
+ background-image: url("maximize.svg");
+}
+
+.maximize:hover {
+ background-image: url("maximize_focused.svg");
+}
+
+.maximize:active {
+ background-image: url("maximize_focused.svg");
+}
+
+.close {
+ background-image: url("close.svg");
+}
+
+.close:hover {
+ background-image: url("close_focused.svg");
+}
+
+.close:active {
+ background-image: url("close_focused.svg");
+}
diff --git a/maximus-buttons@hanspr/info.json b/maximus-buttons@hanspr/info.json
new file mode 100644
index 00000000000..be44c8a29d3
--- /dev/null
+++ b/maximus-buttons@hanspr/info.json
@@ -0,0 +1 @@
+{"author": "hanspr"}
diff --git a/maximus-buttons@hanspr/screenshot.png b/maximus-buttons@hanspr/screenshot.png
new file mode 100644
index 00000000000..270e3f31b24
Binary files /dev/null and b/maximus-buttons@hanspr/screenshot.png differ
diff --git a/maximus-title@hanspr/README.md b/maximus-title@hanspr/README.md
new file mode 100644
index 00000000000..05787bfe2d7
--- /dev/null
+++ b/maximus-title@hanspr/README.md
@@ -0,0 +1,33 @@
+Maximus Window Title
+--------------------
+
+This applet is desinged to work in pair with:
+
+* maximus-buttons@hanspr
+* maximus extension to remove the title bar on maximized windows
+* Multiple monitors. Add the applet to panels in all monitors to follow titles on different monitors
+
+# Features
+
+* It will display the name of the current active window on panel
+
+# How to configure
+* Install the applet
+* Edit the panel and reposition at the center of the panel
+ * If in edit mode you do not have a window name active, move the mouse over the applets, until you see it light up and move to the center
+
+# Configuration options
+* Apply regex to title option
+ * It allow you to setup a regex on the title to clean it before display it
+ * If you don't know how to create e regex or are not sure of it use, leave it blank
+ * Default regex: `(?:https?|about):.+? -`
+ * removes prepended urls from firefox, chrome extensions like `keypass helper url`
+* Maximum title length
+ * Length of title so it fits better on your current panel width
+
+# Limitations
+* It will only work on top, bottom panels that have enough with to hold a window title
+* No consideration for vertical panels, it's been tested on horizontal panels only
+
+# Errors
+* Please report any errors in github `https://github.com/linuxmint/cinnamon-spices-applets/issues`
diff --git a/maximus-title@hanspr/files/maximus-title@hanspr/applet.js b/maximus-title@hanspr/files/maximus-title@hanspr/applet.js
new file mode 100644
index 00000000000..70f24b05563
--- /dev/null
+++ b/maximus-title@hanspr/files/maximus-title@hanspr/applet.js
@@ -0,0 +1,130 @@
+const Applet = imports.ui.applet
+const SignalManager = imports.misc.signalManager
+const Settings = imports.ui.settings;
+
+class MyApplet extends Applet.TextIconApplet {
+ constructor(metadata, orientation, panelHeight, instanceId) {
+ try {
+ super(orientation, panelHeight, instanceId)
+ this.metadata = metadata
+ this.uuid = metadata.uuid
+ this.orientation = orientation
+ this.panelHeight = panelHeight
+ this.instanceId = instanceId
+ this.appletPath = metadata.path
+ this.regex = null
+ this.bindSettings()
+ this.connectSignals()
+ this.lastTitle = ""
+ this.cssFocus = "background-color:;border-radius:5px;padding-right:10px;padding-left:5px;"
+ this._regexChanged()
+ this._bgChanged()
+ setTimeout(() => {
+ this.initialized = true
+ }, 500)
+ } catch (e) {
+ global.logError(e)
+ }
+ }
+
+ bindSettings() {
+ this.settings = new Settings.AppletSettings(this, this.uuid, this.instanceId)
+
+ this.settings.bind("title-regex", "titleRegex", this._regexChanged)
+ this.settings.bind("title-len", "titleLength", this._lengthChanged)
+ this.settings.bind("title-bg", "titleBg", this._bgChanged)
+ }
+
+ connectSignals() {
+ this.signalManager = new SignalManager.SignalManager(null)
+ this.signalManager.connect(global.display, 'notify::focus-window', () => {
+ let w = global.display.focus_window
+ if (w) {
+ this.signalManager.connect(w, 'notify::title', () => {
+ this._onTitleChange(w.lastTitle, w.get_monitor())
+ })
+ this._onTitleChange(w.lastTitle, w.get_monitor())
+ } else {
+ this._onTitleChange(undefined, 0)
+ }
+ }, this)
+ this.signalManager.connect(global.screen, 'window-monitor-changed', () => {
+ let w = global.display.focus_window
+ if (w) {
+ this._onMonitorChange(w.lastTitle, w.get_monitor())
+ }
+ }, this)
+ }
+
+ _onMonitorChange(title, monitorIndex) {
+ if (monitorIndex != this.panel.monitorIndex) {
+ let title = ""
+ const windows = global.get_window_actors();
+ for (let i = 0; i < windows.length; i++) {
+ if (this.panel.monitorIndex != windows[i].metaWindow.get_monitor() || windows[i].metaWindow.get_window_type() > 1) {
+ continue
+ }
+ //console.log("pass :", i)
+ //console.log("title:", windows[i].metaWindow.title)
+ //console.log("type :", windows[i].metaWindow.get_window_type())
+ title = windows[i].metaWindow.title
+ }
+ this._onTitleChange(title, this.panel.monitorIndex)
+ this.actor.set_style("")
+ return
+ }
+ this._onTitleChange(title, monitorIndex)
+ }
+
+ _onTitleChange(title, monitorIndex) {
+ if (monitorIndex != this.panel.monitorIndex) {
+ this.actor.set_style("")
+ return
+ }
+ if (title == undefined) {
+ try {
+ title = global.display.focus_window.get_title()
+ } catch (e) {
+ return
+ }
+ }
+ if (this.lastTitle == title) {
+ this.actor.set_style(this.cssFocus)
+ return
+ }
+ this.lastTitle = title
+ if (this.regex != null) {
+ title = title.replace(this.regex, "")
+ }
+ title = title.substring(0, this.titleLength)
+ this.set_applet_label(title)
+ this.actor.set_style(this.cssFocus)
+ }
+
+ _lengthChanged() {
+ this._onTitleChange(this.lastTitle)
+ }
+
+ _bgChanged() {
+ this.cssFocus = "background-color:" + this.titleBg + ";border-radius:5px;padding-right:10px;padding-left:5px;"
+ }
+
+ _regexChanged() {
+ if (this.titleRegex == "") {
+ this.regex = null
+ } else {
+ try {
+ this.regex = new RegExp(this.titleRegex)
+ } catch (e) {
+ console.log("Regex error:", e)
+ this.regex = null
+ }
+ }
+ this.lastTitle = ""
+ this._onTitleChange()
+ }
+}
+
+function main(metadata, orientation, panelHeight, instanceId) {
+ return new MyApplet(metadata, orientation, panelHeight, instanceId)
+}
diff --git a/maximus-title@hanspr/files/maximus-title@hanspr/icon.png b/maximus-title@hanspr/files/maximus-title@hanspr/icon.png
new file mode 100644
index 00000000000..fc3b74501f7
Binary files /dev/null and b/maximus-title@hanspr/files/maximus-title@hanspr/icon.png differ
diff --git a/maximus-title@hanspr/files/maximus-title@hanspr/metadata.json b/maximus-title@hanspr/files/maximus-title@hanspr/metadata.json
new file mode 100644
index 00000000000..2ca51ca7f5b
--- /dev/null
+++ b/maximus-title@hanspr/files/maximus-title@hanspr/metadata.json
@@ -0,0 +1,7 @@
+{
+ "uuid": "maximus-title@hanspr",
+ "description": "Maximus show title for the current window",
+ "version": "0.0.1",
+ "name": "Maximus window title",
+ "max-instances": -1
+}
diff --git a/maximus-title@hanspr/files/maximus-title@hanspr/settings-schema.json b/maximus-title@hanspr/files/maximus-title@hanspr/settings-schema.json
new file mode 100644
index 00000000000..98530dc2490
--- /dev/null
+++ b/maximus-title@hanspr/files/maximus-title@hanspr/settings-schema.json
@@ -0,0 +1,21 @@
+{
+ "head": {
+ "type": "header",
+ "description": "Window Title Settings"
+ },
+ "title-len": {
+ "type": "entry",
+ "description": "Maximum title lenght",
+ "default": "60"
+ },
+ "title-bg": {
+ "type": "entry",
+ "description": "Title focused background color",
+ "default": "#5dabf9"
+ },
+ "title-regex": {
+ "type": "entry",
+ "description": "Apply regex to title to remove string, before showing",
+ "default": "(?:https?|about):.+? - ?"
+ }
+}
diff --git a/maximus-title@hanspr/info.json b/maximus-title@hanspr/info.json
new file mode 100644
index 00000000000..be44c8a29d3
--- /dev/null
+++ b/maximus-title@hanspr/info.json
@@ -0,0 +1 @@
+{"author": "hanspr"}
diff --git a/maximus-title@hanspr/screenshot.png b/maximus-title@hanspr/screenshot.png
new file mode 100644
index 00000000000..49387fc842f
Binary files /dev/null and b/maximus-title@hanspr/screenshot.png differ