diff --git a/README.md b/README.md
index 7818c36..05eaaae 100644
--- a/README.md
+++ b/README.md
@@ -1,7 +1,7 @@
-# MangoWC
-
-
-
+# Mango Wayland Compositor
+
+

+
This project's development is based on [dwl](https://codeberg.org/dwl/dwl/).
@@ -23,19 +23,9 @@ This project's development is based on [dwl](https://codeberg.org/dwl/dwl/).
- Ipc support(get/send message from/to compositor by external program)
- Hycov-like overview
- Window effects from scenefx (blur, shadow, corner radius, opacity)
+ - Zero flickering - every frame is perfect.
-Master-Stack Layout
-
-https://github.com/user-attachments/assets/a9d4776e-b50b-48fb-94ce-651d8a749b8a
-
-Scroller Layout
-
-https://github.com/user-attachments/assets/c9bf9415-fad1-4400-bcdc-3ad2d76de85a
-
-Layer animation
-
-https://github.com/user-attachments/assets/014c893f-115c-4ae9-8342-f9ae3e9a0df0
-
+https://github.com/user-attachments/assets/bb83004a-0563-4b48-ad89-6461a9b78b1f
# Our discord
[mangowc](https://discord.gg/CPjbDxesh5)
@@ -54,6 +44,8 @@ https://github.com/user-attachments/assets/014c893f-115c-4ae9-8342-f9ae3e9a0df0
# Installation
+[](https://repology.org/project/mangowc/versions)
+
## Dependencies
- glibc
@@ -75,7 +67,7 @@ https://github.com/user-attachments/assets/014c893f-115c-4ae9-8342-f9ae3e9a0df0
- libxcb
## Arch Linux
-The package is in the Arch User Repository and is availble for manual download [here](https://aur.archlinux.org/packages/mangowc-git) or through a AUR helper like yay:
+The package is in the Arch User Repository and is available for manual download [here](https://aur.archlinux.org/packages/mangowc-git) or through a AUR helper like yay:
```bash
yay -S mangowc-git
@@ -109,6 +101,34 @@ Then, install the package:
dnf install mangowc
```
+## GuixSD
+The package definition is described in the source repository.
+First, add `mangowc` channel to `channels.scm` file:
+
+```scheme
+;; In $HOME/.config/guix/channels.scm
+(cons (channel
+ (name 'mangowc)
+ (url "https://github.com/DreamMaoMao/mangowc.git"))
+ ... ;; Your other channels
+ %default-channels)
+```
+
+Then, run `guix pull` and after update you can either run
+`guix install mangowc` or add it to your configuration via:
+
+```scheme
+(use-modules (mangowc)) ;; Add mangowc module
+
+;; Add mangowc to packages list
+(packages (cons
+ mangowc
+ ... ;; Other packages you specified
+ %base-packages))
+```
+
+And then rebuild your system.
+
## Other
```bash
@@ -285,3 +305,15 @@ Read The Friendly Manual on packaging software in your distribution first.
- https://github.com/swaywm/sway - Sample of Wayland protocol
- https://github.com/wlrfx/scenefx - Make it simple to add window effect.
+
+
+# Sponsor
+At present, I can only accept sponsorship through an encrypted connection.
+If you find this project helpful to you, you can offer sponsorship in the following ways.
+
+
+
+
+Thanks to the following friends for their sponsorship of this project
+
+[@tonybanters](https://github.com/tonybanters)
diff --git a/config.conf b/config.conf
index e93b3e6..15b654c 100644
--- a/config.conf
+++ b/config.conf
@@ -26,7 +26,7 @@ focused_opacity=1.0
unfocused_opacity=1.0
# Animation Configuration(support type:zoom,slide)
-# tag_animation_direction: 0-horizontal,1-vertical
+# tag_animation_direction: 1-horizontal,0-vertical
animations=1
layer_animations=1
animation_type_open=slide
@@ -77,7 +77,7 @@ overviewgappo=30
no_border_when_single=0
axis_bind_apply_timeout=100
focus_on_activate=1
-inhibit_regardless_of_visibility=0
+idleinhibit_ignore_visible=0
sloppyfocus=1
warpcursor=1
focus_cross_monitor=0
@@ -240,12 +240,11 @@ bind=CTRL+ALT,Left,resizewin,-50,+0
bind=CTRL+ALT,Right,resizewin,+50,+0
# Mouse Button Bindings
-# NONE mode key only work in ov mode
+# btn_left and btn_right can't bind none mod key
mousebind=SUPER,btn_left,moveresize,curmove
mousebind=NONE,btn_middle,togglemaximizescreen,0
mousebind=SUPER,btn_right,moveresize,curresize
-mousebind=NONE,btn_left,toggleoverview,1
-mousebind=NONE,btn_right,killclient,0
+
# Axis Bindings
axisbind=SUPER,UP,viewtoleft_have_client
diff --git a/mango.desktop b/mango.desktop
index 0c109ce..37c4fad 100644
--- a/mango.desktop
+++ b/mango.desktop
@@ -1,6 +1,7 @@
[Desktop Entry]
Encoding=UTF-8
Name=Mango
+DesktopNames=mango;wlroots
Comment=mango WM
Exec=mango
Icon=mango
diff --git a/meson.build b/meson.build
index 9f197ab..06ccfd7 100644
--- a/meson.build
+++ b/meson.build
@@ -1,5 +1,5 @@
project('mango', ['c', 'cpp'],
- version : '0.10.8',
+ version : '0.12.3',
)
subdir('protocols')
@@ -56,7 +56,7 @@ endif
if is_git_repo
# 如果是 Git 目录,获取 Commit Hash 和最新的 tag
commit_hash = run_command(git, 'rev-parse', '--short', 'HEAD', check : false).stdout().strip()
- latest_tag = run_command(git, 'describe', '--tags', '--abbrev=0', check : false).stdout().strip()
+ latest_tag = meson.project_version()
version_with_hash = '@0@(@1@)'.format(latest_tag, commit_hash)
else
# 如果不是 Git 目录,使用项目版本号和 "release" 字符串
diff --git a/mmsg/arg.h b/mmsg/arg.h
index ccbd65a..c3b0d7b 100644
--- a/mmsg/arg.h
+++ b/mmsg/arg.h
@@ -8,13 +8,13 @@
extern char *argv0;
-/* use main(int argc, char *argv[]) */
+/* use main(int32_t argc, char *argv[]) */
#define ARGBEGIN \
for (argv0 = *argv, argv++, argc--; \
argv[0] && argv[0][0] == '-' && argv[0][1]; argc--, argv++) { \
char argc_; \
char **argv_; \
- int brk_; \
+ int32_t brk_; \
if (argv[0][1] == '-' && argv[0][2] == '\0') { \
argv++; \
argc--; \
diff --git a/mmsg/mmsg.c b/mmsg/mmsg.c
index 2bbe870..fb1d04f 100644
--- a/mmsg/mmsg.c
+++ b/mmsg/mmsg.c
@@ -25,31 +25,31 @@ static enum {
WATCH = 1 << 2 | GET,
} mode = NONE;
-static int Oflag;
-static int Tflag;
-static int Lflag;
-static int oflag;
-static int tflag;
-static int lflag;
-static int cflag;
-static int vflag;
-static int mflag;
-static int fflag;
-static int qflag;
-static int dflag;
-static int xflag;
-static int eflag;
-static int kflag;
-static int bflag;
-static int Aflag;
+static int32_t Oflag;
+static int32_t Tflag;
+static int32_t Lflag;
+static int32_t oflag;
+static int32_t tflag;
+static int32_t lflag;
+static int32_t cflag;
+static int32_t vflag;
+static int32_t mflag;
+static int32_t fflag;
+static int32_t qflag;
+static int32_t dflag;
+static int32_t xflag;
+static int32_t eflag;
+static int32_t kflag;
+static int32_t bflag;
+static int32_t Aflag;
static uint32_t occ, seltags, total_clients, urg;
static char *output_name;
-static int tagcount;
+static int32_t tagcount;
static char *tagset;
static char *layout_name;
-static int layoutcount, layout_idx;
+static int32_t layoutcount, layout_idx;
static char *client_tags;
static char *dispatch_cmd;
static char *dispatch_arg1;
@@ -87,7 +87,7 @@ static void noop_description(void *data, struct wl_output *wl_output,
// 将 n 转换为 9 位二进制字符串,结果存入 buf(至少长度 10)
void bin_str_9bits(char *buf, uint32_t n) {
- for (int i = 8; i >= 0; i--) {
+ for (int32_t i = 8; i >= 0; i--) {
*buf++ = ((n >> i) & 1) ? '1' : '0';
}
*buf = '\0'; // 字符串结尾
@@ -324,7 +324,7 @@ static void dwl_ipc_output_frame(void *data,
if (tflag) {
uint32_t mask = seltags;
char *t = tagset;
- int i = 0;
+ int32_t i = 0;
for (; *t && *t >= '0' && *t <= '9'; t++)
i = *t - '0' + i * 10;
@@ -354,7 +354,7 @@ static void dwl_ipc_output_frame(void *data,
if (cflag) {
uint32_t and = ~0, xor = 0;
char *t = client_tags;
- int i = 0;
+ int32_t i = 0;
for (; *t && *t >= '0' && *t <= '9'; t++)
i = *t - '0' + i * 10;
@@ -500,16 +500,52 @@ static const struct wl_registry_listener registry_listener = {
static void usage(void) {
fprintf(stderr,
- "usage:"
- "\t%s [-OTLq]\n"
- "\t%s [-o