Merge pull request #1079 from mangowm/group

mango 0.15.0
This commit is contained in:
DreamMaoMao 2026-07-08 12:40:14 +08:00 committed by GitHub
commit 621ea37a24
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
48 changed files with 2500 additions and 4052 deletions

View file

@ -114,6 +114,13 @@ bindr=Super,Super_L,spawn,rofi -show run
| `exchange_stack_client` | `next/prev` | Exchange window position in stack. |
| `zoom` | - | Swap focused window with Master. |
### Group
| Command | Param | Description |
| :--- | :--- | :--- |
| `groupjoin` | `left/right/up/down` | Join group by direction. |
| `groupfocus` | `prev/next` | Focus group member by direction. |
| `groupleave` | - | Leave group. |
### Tags & Monitors
| Command | Param | Description |
@ -170,11 +177,12 @@ bindr=Super,Super_L,spawn,rofi -show run
| `setkeymode` | `mode` | Set keymode. |
| `switch_keyboard_layout` | `[index]` | Switch keyboard layout. Optional index (0, 1, 2...) to switch to specific layout. |
| `setoption` | `key,value` | Set config option temporarily. |
| `disable_monitor` | `monitor_spec` | Shutdown monitor. Accepts a [monitor spec](/docs/configuration/monitors#monitor-spec-format). |
| `enable_monitor` | `monitor_spec` | Power on monitor. Accepts a [monitor spec](/docs/configuration/monitors#monitor-spec-format). |
| `toggle_monitor` | `monitor_spec` | Toggle monitor power. Accepts a [monitor spec](/docs/configuration/monitors#monitor-spec-format). |
| `chvt` | `1-9` | Change virtual terminal (tty, equivalent to using ctrl+alt+Fkeys) |
| `sleep_monitor` | `monitor_spec` | Shutdown monitor power but not remove. Accepts a [monitor spec](/docs/configuration/monitors#monitor-spec-format). |
| `wakeup_monitor` | `monitor_spec` | Turn on monitor power. Accepts a [monitor spec](/docs/configuration/monitors#monitor-spec-format). |
| `sleep_toggle_monitor` | `monitor_spec` | Toggle monitor power but not remove. Accepts a [monitor spec](/docs/configuration/monitors#monitor-spec-format).
| `disable_monitor` | `monitor_spec` | remove monitor. Accepts a [monitor spec](/docs/configuration/monitors#monitor-spec-format). |
| `enable_monitor` | `monitor_spec` | add monitor. Accepts a [monitor spec](/docs/configuration/monitors#monitor-spec-format). |
| `toggle_monitor` | `monitor_spec` | Toggle monitor add/remove. Accepts a [monitor spec](/docs/configuration/monitors#monitor-spec-format). |
### Media Controls

View file

@ -8,10 +8,9 @@ description: Advanced settings for XWayland, focus behavior, and system integrat
| Setting | Default | Description |
| :--- | :--- | :--- |
| `xwayland_persistence` | `1` | Keep XWayland running even when no X11 apps are open (reduces startup lag). |
| `syncobj_enable` | `0` | Enable `drm_syncobj` timeline support (helps with gaming stutter/lag). **Requires restart.** |
| `syncobj_enable` | `1` | Enable `drm_syncobj` timeline support (helps with gaming stutter/lag). **Requires restart.** |
| `allow_lock_transparent` | `0` | Allow the lock screen to be transparent. |
| `allow_shortcuts_inhibit` | `1` | Allow shortcuts to be inhibited by clients. |
| `vrr` | - | Set via [monitor rule](/docs/configuration/monitors#monitor-rules). |
## Focus & Input

View file

@ -30,8 +30,10 @@ monitorrule=name:Values,Parameter:Values,Parameter:Values
| `y` | integer | 0-99999 | Y position |
| `scale` | float | 0.01-100.0 | Monitor scale |
| `vrr` | integer | 0, 1 | Enable variable refresh rate |
| `hdr` | integer | 0, 1 | Enable hdr support |
| `rr` | integer | 0-7 | Monitor transform |
| `custom` | integer | 0, 1 | Enable custom mode (not supported on all displays — may cause black screen) |
| `disable` | integer | 0, 1 | Disable the monitor |
### Transform Values
@ -102,6 +104,21 @@ Tearing allows games to bypass the compositor's VSync for lower latency.
| :--- | :--- | :--- |
| `allow_tearing` | `0` | Global tearing control: `0` (Disable), `1` (Enable), `2` (Fullscreen only). |
## HDR
| Setting | Default | Description |
| :--- | :--- | :--- |
| `hdr_depth` | `2`| Set the hdr depth for the current display. `0` is Default, `1` is HDR8, `2` is HDR10. |
- you should enable HDR in monitorrule first, refer to [Monitors — Monitor Rules](/docs/configuration/monitors#monitor-rules)
- you must set `env=WLR_RENDERER,vulkan` before mango starts.
#### for example(must relogin once after setting):
```conf
env=WLR_RENDERER,vulkan
monitorrule=name:eDP-1,model:0x15F5,width:1920,height:1080,refresh:60,x:0,y:0,scale:1,vrr:0,rr:0:hdr:1
```
### Configuration
**Enable Globally:**
@ -130,16 +147,9 @@ windowrule=force_tearing:1,title:vkcube
> **Warning:** Some graphics cards require setting the `WLR_DRM_NO_ATOMIC` environment variable before mango starts to successfully enable tearing.
Add this to `/etc/environment` and reboot:
```bash
WLR_DRM_NO_ATOMIC=1
Add this to config and relogin mango:
```
Or run mango with the environment variable:
```bash
WLR_DRM_NO_ATOMIC=1 mango
env=WLR_DRM_NO_ATOMIC,1
```
---
@ -156,7 +166,7 @@ WLR_DRM_DEVICES=/dev/dri/card1 mango
WLR_DRM_DEVICES=/dev/dri/card0:/dev/dri/card1 mango
```
Some GPUs have compatibility issues with `syncobj_enable=1` — it may crash apps like `kitty` that use syncobj. Set `WLR_DRM_NO_ATOMIC=1` in `/etc/environment` and reboot to resolve this.
Some GPUs have compatibility issues with `syncobj_enable=1` — it may crash apps like `kitty` that use syncobj. Set `env=WLR_DRM_NO_ATOMIC,1` in `config.conf` and relogin to resolve this.
---

View file

@ -65,7 +65,8 @@ Then force it for your specific game:
windowrule=force_tearing:1,title:Counter-Strike 2
```
> **Warning:** Some graphics cards require setting `WLR_DRM_NO_ATOMIC=1` before mango starts for tearing to work. Add it to `/etc/environment` and reboot, or launch mango with `WLR_DRM_NO_ATOMIC=1 mango`. See [Monitors — Tearing](/docs/configuration/monitors#tearing-game-mode) for details.
> **Warning:** Some graphics cards require setting `env=WLR_DRM_NO_ATOMIC,1` in config before mango starts for tearing to work.
> See [Monitors — Tearing](/docs/configuration/monitors#tearing-game-mode) for details.
---

View file

@ -7,8 +7,6 @@ description: Configure Waybar for mangowm.
mangowm is compatible with Waybar's `ext/workspaces` module (Wayland standard) or the `dwl/tags` module. We recommend `ext/workspaces` for the best experience.
> **Tip:** You can also use the `dwl/tags` module, but `ext/workspaces` provides better integration with mangowm's features. The `ext/workspaces` module requires **Waybar > 0.14.0**.
### `config.jsonc`
Add the following to your Waybar configuration:
@ -16,23 +14,42 @@ Add the following to your Waybar configuration:
```jsonc
{
"modules-left": [
"ext/workspaces",
"dwl/window"
"mango/workspaces",
"mango/layout",
"mango/window"
],
"ext/workspaces": {
"format": "{icon}",
"ignore-hidden": true,
"on-click": "activate",
"on-click-right": "deactivate",
"sort-by-id": true
"modules-right": [
"mango/language",
"mango/keymode",
],
"mango/workspaces": {
"format": "{icon}",
"hide-empty": true,
"on-click": "activate",
"on-click-right": "toggle",
"overview-label": "OVERVIEW",
},
"mango/keymode": {
"format": "{}",
// "format-default": " Default",
// "format-test": " Test",
},
"mango/window": {
"format": "{}",
"icon-size": 20
},
"mango/layout": {
"format": "{}",
// "format-S": "Scroller",
// "format-T": "Tile",
},
"mango/language": {
"format": "{short}",
},
"dwl/window": {
"format": "[{layout}] {title}"
}
}
```
## Styling
## Styling Example
You can style the tags using standard CSS in `style.css`.
@ -40,27 +57,13 @@ You can style the tags using standard CSS in `style.css`.
```css
#workspaces {
border-radius: 4px;
border-width: 2px;
border-style: solid;
border-color: #c9b890;
margin-left: 4px;
padding-left: 10px;
padding-right: 6px;
background: rgba(40, 40, 40, 0.76);
}
#workspaces button {
border: none;
background: none;
box-shadow: inherit;
text-shadow: inherit;
color: #ddca9e;
padding: 1px;
padding-left: 1px;
padding-right: 1px;
margin-right: 2px;
margin-left: 2px;
}
#workspaces button.hidden {
@ -79,61 +82,44 @@ You can style the tags using standard CSS in `style.css`.
#workspaces button.active {
background-color: #ddca9e;
color: #282828;
margin-top: 5px;
margin-bottom: 5px;
padding-top: 1px;
padding-bottom: 0px;
border-radius: 3px;
}
#workspaces button.urgent {
background-color: #ef5e5e;
color: #282828;
margin-top: 5px;
margin-bottom: 5px;
padding-top: 1px;
padding-bottom: 0px;
border-radius: 3px;
}
#tags {
background-color: transparent;
}
#tags button {
background-color: #fff;
color: #a585cd;
}
#tags button:not(.occupied):not(.focused) {
font-size: 0;
min-width: 0;
min-height: 0;
margin: -17px;
padding: 0;
color: transparent;
background-color: transparent;
}
#tags button.occupied {
background-color: #fff;
color: #cdc885;
}
#tags button.focused {
background-color: rgb(186, 142, 213);
color: #fff;
}
#tags button.urgent {
background: rgb(171, 101, 101);
color: #fff;
#workspaces button.overview {
background-color: #ef5e5e;
color: #282828;
}
#window {
background-color: rgb(237, 196, 147);
color: rgb(63, 37, 5);
background-color: #CA9297;
color: #282828;
}
window#waybar.empty #window {
background: none;
margin: 0px;
padding: 0px;
}
#layout {
background-color: #CA9297;
color: #282828;
}
#language {
background-color: #CA9297;
color: #282828;
}
#keymode {
background-color: #CA9297;
color: #282828;
}
```
## Complete Configuration Example

View file

@ -69,17 +69,17 @@ You can also color-code windows based on their state:
### Tab Bar For Monocle Layout
| Setting | Default | Description |
| :--- | :--- | :--- |
| `tab_bar_height` | `50` | Height of the tab bar for monocle layout. |
| `tab_bar_decorate_fg_color` | `0xc4939dff` | text color.
| `tab_bar_decorate_bg_color` | `0x201b14ff` | background color.|
| `tab_bar_decorate_focus_fg_color` | `0x201b14ff` | text color for focus. |
| `tab_bar_decorate_focus_bg_color` | `0xc4939dff` | background color for focus.|
| `tab_bar_decorate_border_color` | `0x8BAA9Bff` | border color.|
| `tab_bar_decorate_border_width` | `4` | border width.|
| `tab_bar_decorate_corner_radius` | `5` | corner radius.|
| `tab_bar_decorate_padding_x` | `0` | horizontal padding.|
| `tab_bar_decorate_padding_y` | `0` | vertical padding.|
| `tab_bar_decorate_font_desc` | `monospace Bold 16` | font set.|
| `group_bar_height` | `50` | Height of the tab bar for monocle layout. |
| `group_bar_decorate_fg_color` | `0xc4939dff` | text color.
| `group_bar_decorate_bg_color` | `0x201b14ff` | background color.|
| `group_bar_decorate_focus_fg_color` | `0x201b14ff` | text color for focus. |
| `group_bar_decorate_focus_bg_color` | `0xc4939dff` | background color for focus.|
| `group_bar_decorate_border_color` | `0x8BAA9Bff` | border color.|
| `group_bar_decorate_border_width` | `4` | border width.|
| `group_bar_decorate_corner_radius` | `5` | corner radius.|
| `group_bar_decorate_padding_x` | `0` | horizontal padding.|
| `group_bar_decorate_padding_y` | `0` | vertical padding.|
| `group_bar_decorate_font_desc` | `monospace Bold 16` | font set.|
## Borders

View file

@ -35,6 +35,9 @@ windowrule=Parameter:Values,Parameter:Values,appid:Values,title:Values
| `single_scratchpad` | integer | `0` / `1` (default 1) | Only show one out of named scratchpads or the normal scratchpad |
| `allow_shortcuts_inhibit` | integer | `0` / `1` (default 1) | Allow shortcuts to be inhibited by clients |
| `idleinhibit_when_focus` | integer | `0` / `1` (default 0) | Automatically keep idle inhibit active when this window is focused |
| `vrr_only_fullscreen` | integer | `0` / `1` (default 0) | VRR only fullscreen,you need to turn `vrr` to `0` in monitor rule first |
| `shield_when_capture` | integer | `0` / `1` | Shield window when captured |
### Geometry & Position
@ -138,7 +141,7 @@ windowrule=offsetx:20,offsety:-30,width:800,height:600,appid:alacritty
# Send to specific tag and monitor
windowrule=tags:9,monitor:HDMI-A-1,appid:discord
# Terminal swallowing setup
# Terminal swallowdby setup
windowrule=isterm:1,appid:st
windowrule=noswallow:1,appid:foot
@ -237,6 +240,7 @@ layerrule=layer_name:Values,Parameter:Values,Parameter:Values
| `noblur` | integer | `0` / `1` | Disable blur |
| `noanim` | integer | `0` / `1` | Disable layer animation |
| `noshadow` | integer | `0` / `1` | Disable layer shadow |
| `shield_when_capture`| integer | `0` / `1` | Shield layer when captured.(it is better to combination with `noanim:1`) |
> **Tip:** For animation types, see [Animations](/docs/visuals/animations#animation-types). For visual effects, see [Window Effects](/docs/visuals/effects).