diff --git a/README.md b/README.md
index 10c35ccf..7818c36b 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,6 @@
# MangoWC
-
+
This project's development is based on [dwl](https://codeberg.org/dwl/dwl/).
@@ -32,11 +32,14 @@ Scroller Layout
https://github.com/user-attachments/assets/c9bf9415-fad1-4400-bcdc-3ad2d76de85a
-Layer animaiton
+Layer animation
https://github.com/user-attachments/assets/014c893f-115c-4ae9-8342-f9ae3e9a0df0
+# Our discord
+[mangowc](https://discord.gg/CPjbDxesh5)
+
# Supported layouts
- tile
@@ -68,6 +71,8 @@ https://github.com/user-attachments/assets/014c893f-115c-4ae9-8342-f9ae3e9a0df0
- hwdata
- seatd
- pcre2
+- xorg-xwayland
+- 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:
@@ -77,7 +82,6 @@ yay -S mangowc-git
```
## Gentoo Linux
-
The package is in the community-maintained repository called GURU.
First, add GURU repository:
@@ -95,15 +99,25 @@ Finally, install the package:
emerge --ask --verbose gui-wm/mangowc
```
+## Fedora Linux
+The package is in the third-party Terra repository.
+First, add the [Terra Repository](https://terra.fyralabs.com/).
+
+Then, install the package:
+
+```bash
+dnf install mangowc
+```
+
## Other
```bash
-git clone -b 0.19.1 https://gitlab.freedesktop.org/wlroots/wlroots.git
+git clone -b 0.19.2 https://gitlab.freedesktop.org/wlroots/wlroots.git
cd wlroots
meson build -Dprefix=/usr
sudo ninja -C build install
-git clone https://github.com/wlrfx/scenefx.git
+git clone -b 0.4.1 https://github.com/wlrfx/scenefx.git
cd scenefx
meson build -Dprefix=/usr
sudo ninja -C build install
@@ -116,6 +130,10 @@ sudo ninja -C build install
## Suggested Tools
+### Hybrid component
+- [dms-shell](https://github.com/AvengeMedia/DankMaterialShell)
+
+### Independent component
- Application launcher (rofi, bemenu, wmenu, fuzzel)
- Terminal emulator (foot, wezterm, alacritty, kitty, ghostty)
- Status bar (waybar, eww, quickshell, ags), waybar is preferred
@@ -136,13 +154,25 @@ sudo ninja -C build install
## My Dotfiles
+### Daily
- Dependencies
```bash
yay -S rofi foot xdg-desktop-portal-wlr swaybg waybar wl-clip-persist cliphist wl-clipboard wlsunset xfce-polkit swaync pamixer wlr-dpms sway-audio-idle-inhibit-git swayidle dimland-git brightnessctl swayosd wlr-randr grim slurp satty swaylock-effects-git wlogout sox
```
-- use my config
+### Dms
+- Dependencies
+```bash
+yay -S foot xdg-desktop-portal-wlr swaybg wl-clip-persist cliphist wl-clipboard sway-audio-idle-inhibit-git brightnessctl grim slurp satty matugen-bin dms-shell-git
+
+```
+- use my dms config
+
+```bash
+git clone -b dms https://github.com/DreamMaoMao/mango-config.git ~/.config/mango
+```
+- use my daily config
```bash
git clone https://github.com/DreamMaoMao/mango-config.git ~/.config/mango
@@ -151,7 +181,9 @@ git clone https://github.com/DreamMaoMao/mango-config.git ~/.config/mango
## Config Documentation
-Refer to the [wiki](https://github.com/DreamMaoMao/mango/wiki/)
+Refer to the repo wiki [wiki](https://github.com/DreamMaoMao/mango/wiki/)
+
+or the website docs [docs](https://mangowc.vercel.app/docs)
# NixOS + Home-manager
@@ -170,7 +202,10 @@ Here's an example of using the modules in a flake:
inputs.nixpkgs.follows = "nixpkgs";
};
flake-parts.url = "github:hercules-ci/flake-parts";
- mango.url = "github:DreamMaoMao/mango";
+ mango = {
+ url = "github:DreamMaoMao/mango";
+ inputs.nixpkgs.follows = "nixpkgs";
+ };
};
outputs =
inputs@{ self, flake-parts, ... }:
@@ -226,14 +261,6 @@ Here's an example of using the modules in a flake:
}
```
-
-# Sponsor
-
-My current device is a bit outdated and doesn't support certain features like HDR or VRR. If you'd like to support this project, here's how you can help. Thanks!
-
-
-
-
# Packaging mango
To package mango for other distributions, you can check the reference setup for:
diff --git a/assets/mango-black.png b/assets/mango-black.png
deleted file mode 100644
index fabfe017..00000000
Binary files a/assets/mango-black.png and /dev/null differ
diff --git a/assets/mango-transparency-128.png b/assets/mango-transparency-128.png
index 7b9b4c64..a995f573 100644
Binary files a/assets/mango-transparency-128.png and b/assets/mango-transparency-128.png differ
diff --git a/assets/mango-transparency-256.png b/assets/mango-transparency-256.png
index 3bb4d653..974ab3f6 100644
Binary files a/assets/mango-transparency-256.png and b/assets/mango-transparency-256.png differ
diff --git a/assets/mango-transparency.png b/assets/mango-transparency.png
index 25e53856..488a31ec 100644
Binary files a/assets/mango-transparency.png and b/assets/mango-transparency.png differ
diff --git a/assets/mango.png b/assets/mango.png
index eb147404..5a8136f7 100644
Binary files a/assets/mango.png and b/assets/mango.png differ
diff --git a/config.conf b/config.conf
index 06fc49ae..5483a141 100644
--- a/config.conf
+++ b/config.conf
@@ -42,10 +42,14 @@ animation_duration_move=500
animation_duration_open=400
animation_duration_tag=350
animation_duration_close=800
+animation_duration_focus=0
animation_curve_open=0.46,1.0,0.29,1
animation_curve_move=0.46,1.0,0.29,1
animation_curve_tag=0.46,1.0,0.29,1
animation_curve_close=0.08,0.92,0,1
+animation_curve_focus=0.46,1.0,0.29,1
+animation_curve_opafadeout=0.5,0.5,0.5,0.5
+animation_curve_opafadein=0.46,1.0,0.29,1
# Scroller Layout Setting
scroller_structs=20
@@ -73,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
@@ -86,7 +90,7 @@ drag_tile_to_tile=1
# keyboard
repeat_rate=25
repeat_delay=600
-numlockon=1
+numlockon=0
xkb_rules_layout=us
# Trackpad
@@ -116,7 +120,7 @@ borderpx=4
rootcolor=0x201b14ff
bordercolor=0x444444ff
focuscolor=0xc9b890ff
-maxmizescreencolor=0x89aa61ff
+maximizescreencolor=0x89aa61ff
urgentcolor=0xad401fff
scratchpadcolor=0x516c93ff
globalcolor=0xb153a7ff
@@ -166,7 +170,7 @@ bind=SUPER+SHIFT,Right,exchange_client,right
bind=SUPER,g,toggleglobal,
bind=ALT,Tab,toggleoverview,
bind=ALT,backslash,togglefloating,
-bind=ALT,a,togglemaxmizescreen,
+bind=ALT,a,togglemaximizescreen,
bind=ALT,f,togglefullscreen,
bind=ALT+SHIFT,f,togglefakefullscreen,
bind=SUPER,i,minimized,
@@ -238,9 +242,9 @@ bind=CTRL+ALT,Right,resizewin,+50,+0
# Mouse Button Bindings
# NONE mode key only work in ov mode
mousebind=SUPER,btn_left,moveresize,curmove
-mousebind=NONE,btn_middle,togglemaxmizescreen,0
+mousebind=NONE,btn_middle,togglemaximizescreen,0
mousebind=SUPER,btn_right,moveresize,curresize
-mousebind=NONE,btn_left,toggleoverview,-1
+mousebind=NONE,btn_left,toggleoverview,1
mousebind=NONE,btn_right,killclient,0
# Axis Bindings
diff --git a/flake.nix b/flake.nix
index ff88ba0c..b7158bbd 100644
--- a/flake.nix
+++ b/flake.nix
@@ -30,7 +30,7 @@
}: let
inherit (pkgs) callPackage ;
mango = callPackage ./nix {
- inherit (inputs.scenefx.packages.${pkgs.system}) scenefx;
+ inherit (inputs.scenefx.packages.${pkgs.stdenv.hostPlatform.system}) scenefx;
};
shellOverride = old: {
nativeBuildInputs = old.nativeBuildInputs ++ [];
diff --git a/mangowc.scm b/mangowc.scm
new file mode 100644
index 00000000..9c55d43e
--- /dev/null
+++ b/mangowc.scm
@@ -0,0 +1,64 @@
+(define-module (mangowc)
+ #:use-module (guix download)
+ #:use-module (guix git-download)
+ #:use-module (guix gexp)
+ #:use-module (guix packages)
+ #:use-module (guix utils)
+ #:use-module (gnu packages wm)
+ #:use-module (gnu packages freedesktop)
+ #:use-module (gnu packages xdisorg)
+ #:use-module (gnu packages pciutils)
+ #:use-module (gnu packages admin)
+ #:use-module (gnu packages pcre)
+ #:use-module (gnu packages xorg)
+ #:use-module (gnu packages build-tools)
+ #:use-module (gnu packages ninja)
+ #:use-module (gnu packages pkg-config)
+ #:use-module (guix build-system meson)
+ #:use-module (guix licenses))
+
+
+(define-public mangowc-git
+ (package
+ (name "mangowc")
+ (version "git")
+ (source (local-file "." "mangowc-checkout"
+ #:recursive? #t
+ #:select? (or (git-predicate (current-source-directory))
+ (const #t))))
+ (build-system meson-build-system)
+ (arguments
+ (list
+ #:configure-flags
+ #~(list (string-append "-Dsysconfdir=" #$output "/etc"))
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-before 'configure 'patch-meson
+ (lambda _
+ (substitute* "meson.build"
+ (("'-DSYSCONFDIR=\\\"@0@\\\"'.format\\('/etc'\\)")
+ "'-DSYSCONFDIR=\"@0@\"'.format(sysconfdir)")
+ (("sysconfdir = sysconfdir.substring\\(prefix.length\\(\\)\\)")
+ "")))))))
+ (inputs (list wayland
+ libinput
+ libdrm
+ libxkbcommon
+ pixman
+ libdisplay-info
+ libliftoff
+ hwdata
+ seatd
+ pcre2
+ libxcb
+ xcb-util-wm
+ wlroots
+ scenefx))
+ (native-inputs (list pkg-config wayland-protocols))
+ (home-page "https://github.com/DreamMaoMao/mangowc")
+ (synopsis "Wayland compositor based on wlroots and scenefx")
+ (description "A Wayland compositor based on wlroots and scenefx,
+inspired by dwl but aiming to be more feature-rich.")
+ (license gpl3)))
+
+mangowc-git
diff --git a/meson.build b/meson.build
index de992266..9f197ab1 100644
--- a/meson.build
+++ b/meson.build
@@ -1,5 +1,5 @@
project('mango', ['c', 'cpp'],
- version : '0.10.2',
+ version : '0.10.8',
)
subdir('protocols')
@@ -32,10 +32,10 @@ cc = meson.get_compiler('c')
libm = cc.find_library('m')
xcb = dependency('xcb', required : get_option('xwayland'))
xlibs = dependency('xcb-icccm', required : get_option('xwayland'))
-wayland_server_dep = dependency('wayland-server')
+wayland_server_dep = dependency('wayland-server',version: '>=1.23.1')
wlroots_dep = dependency('wlroots-0.19',version: '>=0.19.0')
xkbcommon_dep = dependency('xkbcommon')
-libinput_dep = dependency('libinput')
+libinput_dep = dependency('libinput',version: '>=1.27.1')
libwayland_client_dep = dependency('wayland-client')
pcre2_dep = dependency('libpcre2-8')
libscenefx_dep = dependency('scenefx-0.4',version: '>=0.4.1')
diff --git a/mmsg/mmsg.c b/mmsg/mmsg.c
index ae9270d7..2bbe870e 100644
--- a/mmsg/mmsg.c
+++ b/mmsg/mmsg.c
@@ -6,6 +6,7 @@
#include
#include
#include
+#include
#include
#include
@@ -40,6 +41,7 @@ static int xflag;
static int eflag;
static int kflag;
static int bflag;
+static int Aflag;
static uint32_t occ, seltags, total_clients, urg;
@@ -84,7 +86,7 @@ static void noop_description(void *data, struct wl_output *wl_output,
const char *description) {}
// 将 n 转换为 9 位二进制字符串,结果存入 buf(至少长度 10)
-void bin_str_9bits(char *buf, unsigned int n) {
+void bin_str_9bits(char *buf, uint32_t n) {
for (int i = 8; i >= 0; i--) {
*buf++ = ((n >> i) & 1) ? '1' : '0';
}
@@ -263,6 +265,18 @@ static void dwl_ipc_output_kb_layout(void *data,
printf("kb_layout %s\n", kb_layout);
}
+static void
+dwl_ipc_output_scalefactor(void *data,
+ struct zdwl_ipc_output_v2 *dwl_ipc_output,
+ const uint32_t scalefactor) {
+ if (!Aflag)
+ return;
+ char *output_name = data;
+ if (output_name)
+ printf("%s ", output_name);
+ printf("scale_factor %f\n", scalefactor / 100.0f);
+}
+
static void dwl_ipc_output_keymode(void *data,
struct zdwl_ipc_output_v2 *dwl_ipc_output,
const char *keymode) {
@@ -373,6 +387,7 @@ static void dwl_ipc_output_frame(void *data,
dispatch_arg3, dispatch_arg4, dispatch_arg5);
}
wl_display_flush(display);
+ usleep(1000);
exit(0);
} else {
if (tflag) {
@@ -411,6 +426,7 @@ static const struct zdwl_ipc_output_v2_listener dwl_ipc_output_listener = {
.last_layer = dwl_ipc_output_last_layer,
.kb_layout = dwl_ipc_output_kb_layout,
.keymode = dwl_ipc_output_keymode,
+ .scalefactor = dwl_ipc_output_scalefactor,
.frame = dwl_ipc_output_frame,
};
@@ -488,7 +504,7 @@ static void usage(void) {
"\t%s [-OTLq]\n"
"\t%s [-o