Merge remote-tracking branch 'origin/main' into scenefx

This commit is contained in:
DreamMaoMao 2025-06-23 19:38:23 +08:00
commit 7cfea1e7f7
5 changed files with 74 additions and 96 deletions

View file

@ -1,6 +1,6 @@
# Maomaowm # Maomaowm
This project is developed based on [dwl](https://codeberg.org/dwl/dwl/), This project's development is based on [dwl](https://codeberg.org/dwl/dwl/).
"Since many people have asked about the meaning of this compositor's name, 'Maomao' is an online alias I've been using for years - it comes from the first two characters of the Chinese word for 'caterpillar' (毛毛虫). You can basically think of it as meaning 'caterpillar'. "Since many people have asked about the meaning of this compositor's name, 'Maomao' is an online alias I've been using for years - it comes from the first two characters of the Chinese word for 'caterpillar' (毛毛虫). You can basically think of it as meaning 'caterpillar'.
@ -8,16 +8,16 @@ This project is developed based on [dwl](https://codeberg.org/dwl/dwl/),
- *Maomao* is as lightweight as *dwl*, and its build can be completed within few seconds. Despite this, *maomao* does not compromise on functionality. - *Maomao* is as lightweight as *dwl*, and its build can be completed within few seconds. Despite this, *maomao* does not compromise on functionality.
2. **Feature Highlights** 2. **Feature Highlights**
- Besides basic WM functionality, maomao provides: - In addition to basic WM functionality, Maomao provides:
- Base tag not workspace(supports separate window layouts for each tag) - Base tag not workspace (supports separate window layouts for each tag)
- Smooth and customizable complete animations(window open/move/close, tag enter/leave) - Smooth and customizable complete animations (window open/move/close, tag enter/leave)
- Excellent input method support(text input v2/v3) - Excellent input method support (text input v2/v3)
- Flexible window layouts with easy switching(scroller,master,monocle,spiral..etc) - Flexible window layouts with easy switching (scroller, master, monocle, spiral, etc.)
- Rich window states(swallow, minimize, maximize, unglobal, global, fakefullscreen, overlay...etc) - Rich window states (swallow, minimize, maximize, unglobal, global, fakefullscreen, overlay, etc.)
- Simple yet powerful external configuration - Simple yet powerful external configuration
- Sway like scratchpad and named scratchpad - Sway-like scratchpad and named scratchpad
- Minimize window to scratchpad - Minimize window to scratchpad
- Hycov like overview - Hycov-like overview
Master-Stack Layout Master-Stack Layout
@ -36,21 +36,21 @@ https://github.com/user-attachments/assets/c9bf9415-fad1-4400-bcdc-3ad2d76de85a
- Spiral - Spiral
- Deck - Deck
# install # Installation
## depend ## Dependencies
```bash ```bash
yay -S glibc wayland libinput libdrm pixman libxkbcommon git meson ninja wayland-protocols libdisplay-info libliftoff hwdata seatd pcre2 yay -S glibc wayland libinput libdrm pixman libxkbcommon git meson ninja wayland-protocols libdisplay-info libliftoff hwdata seatd pcre2
``` ```
## arch ## Arch Linux
```bash ```bash
yay -S maomaowm-git yay -S maomaowm-git
``` ```
## other ## Other
```bash ```bash
# wlroots 0.19.0 release with a fix-patch to avoid crash # wlroots 0.19.0 release with a fix-patch to avoid crash
git clone -b 0.19.0-fix https://github.com/DreamMaoMao/wlroots.git git clone -b 0.19.0-fix https://github.com/DreamMaoMao/wlroots.git
@ -64,40 +64,40 @@ meson build -Dprefix=/usr
sudo ninja -C build install sudo ninja -C build install
``` ```
## suggest tools ## Suggested Tools
``` ```
yay -S rofi foot xdg-desktop-portal-wlr swaybg waybar wl-clip-persist cliphist wl-clipboard wlsunset xfce-polkit swaync yay -S rofi foot xdg-desktop-portal-wlr swaybg waybar wl-clip-persist cliphist wl-clipboard wlsunset xfce-polkit swaync
``` ```
## Some common default key bindings ## Some Common Default Keybindings
- alt+return: open foot terminal - alt+return: open foot terminal
- alt+q: kill client - alt+q: kill client
- alt+left/right/up/down: focus direction - alt+left/right/up/down: focus direction
- super+m: quit maomao - super+m: quit maomao
## My dotfile ## My Dotfiles
- depend - Dependencies
``` ```
yay -S pamixer lavalauncher-mao-git wlr-dpms sway-audio-idle-inhibit-git swayidle dimland-git brightnessctl swayosd wlr-randr grim slurp satty swaylock-effects-git wlogout yay -S pamixer lavalauncher-mao-git wlr-dpms sway-audio-idle-inhibit-git swayidle dimland-git brightnessctl swayosd wlr-randr grim slurp satty swaylock-effects-git wlogout
``` ```
### maomao config ### Maomao Config
[maomao-config](https://github.com/DreamMaoMao/dotfile/tree/main/maomao) [maomao-config](https://github.com/DreamMaoMao/dotfile/tree/main/maomao)
#### other #### Other Tools
[foot](https://github.com/DreamMaoMao/dotfile/tree/main/foot) [foot](https://github.com/DreamMaoMao/dotfile/tree/main/foot)
[swaylock](https://github.com/DreamMaoMao/dotfile/tree/main/swaylock) [swaylock](https://github.com/DreamMaoMao/dotfile/tree/main/swaylock)
[wlogout](https://github.com/DreamMaoMao/dotfile/tree/main/wlogout) [wlogout](https://github.com/DreamMaoMao/dotfile/tree/main/wlogout)
[swaync](https://github.com/DreamMaoMao/dotfile/tree/main/swaync) [swaync](https://github.com/DreamMaoMao/dotfile/tree/main/swaync)
## Config document ## Config Document
refer to [wiki](https://github.com/DreamMaoMao/maomaowm/wiki/) Refer to the [wiki](https://github.com/DreamMaoMao/maomaowm/wiki/)
# NixOS+Home-manager # NixOS + Home-manager
The repo contains a flake that provides a NixOS module and a home-manager module for maomaowm. The repo contains a flake that provides a NixOS module and a home-manager module for maomaowm.
Use the NixOS module to install maomaowm with other necessary components of a working wayland environment. Use the NixOS module to install maomaowm with other necessary components of a working Wayland environment.
Use the home-manager module to declare configuration and autostart for maomaowm. Use the home-manager module to declare configuration and autostart for maomaowm.
Here's an example of using the modules in a flake: Here's an example of using the modules in a flake:
@ -167,12 +167,12 @@ Here's an example of using the modules in a flake:
} }
``` ```
# thanks for some refer repo # Thanks to These Reference Repositories
- https://gitlab.freedesktop.org/wlroots/wlroots - implementation of wayland protocol - https://gitlab.freedesktop.org/wlroots/wlroots - Implementation of Wayland protocol
- https://github.com/dqrk0jeste/owl - basal window animaition - https://github.com/dqrk0jeste/owl - Basal window animation
- https://codeberg.org/dwl/dwl - basal dwl feature - https://codeberg.org/dwl/dwl - Basal dwl feature
- https://github.com/swaywm/sway - sample of wayland protocol - https://github.com/swaywm/sway - Sample of Wayland protocol

86
flake.lock generated
View file

@ -2,11 +2,11 @@
"nodes": { "nodes": {
"flake-compat": { "flake-compat": {
"locked": { "locked": {
"lastModified": 1717312683, "lastModified": 1746162366,
"narHash": "sha256-FrlieJH50AuvagamEvWMIE6D2OAnERuDboFDYAED/dE=", "narHash": "sha256-5SSSZ/oQkwfcAz/o/6TlejlVGqeK08wyREBQ5qFFPhM=",
"owner": "nix-community", "owner": "nix-community",
"repo": "flake-compat", "repo": "flake-compat",
"rev": "38fd3954cf65ce6faf3d0d45cd26059e059f07ea", "rev": "0f158086a2ecdbb138cd0429410e44994f1b7e4b",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -20,11 +20,11 @@
"nixpkgs-lib": "nixpkgs-lib" "nixpkgs-lib": "nixpkgs-lib"
}, },
"locked": { "locked": {
"lastModified": 1738453229, "lastModified": 1749398372,
"narHash": "sha256-7H9XgNiGLKN1G1CgRh0vUL4AheZSYzPm+zmZ7vxbJdo=", "narHash": "sha256-tYBdgS56eXYaWVW3fsnPQ/nFlgWi/Z2Ymhyu21zVM98=",
"owner": "hercules-ci", "owner": "hercules-ci",
"repo": "flake-parts", "repo": "flake-parts",
"rev": "32ea77a06711b758da0ad9bd6a844c5740a87abd", "rev": "9305fe4e5c2a6fcf5ba6a3ff155720fbe4076569",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -75,11 +75,11 @@
"nixpkgs-lib": "nixpkgs-lib_3" "nixpkgs-lib": "nixpkgs-lib_3"
}, },
"locked": { "locked": {
"lastModified": 1742732002, "lastModified": 1749989692,
"narHash": "sha256-fznNOUwLtsnaFHIeHfmj1QxOhjiohM2oiGj/54IO+AI=", "narHash": "sha256-ojISk2CXljR3qIgwgZh4iNzP3W2H3zGH49xWTJARkoM=",
"owner": "nix-community", "owner": "nix-community",
"repo": "lib-aggregate", "repo": "lib-aggregate",
"rev": "00480968bd30f3f43bcd520046bb647833bf2cf2", "rev": "cae85629e70ce05b968757f3af8f2f2b3923d080",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -96,11 +96,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1742777868, "lastModified": 1750505787,
"narHash": "sha256-MdHiygQjBoM22LUJSjeW87t7eDkfRLI2F4Nd64xdLX4=", "narHash": "sha256-D57Vl2x9RJP+8pjYGYUf1L/q+G6bsmoVaqJX3m5PtlQ=",
"owner": "DreamMaoMao", "owner": "DreamMaoMao",
"repo": "mmsg", "repo": "mmsg",
"rev": "6c9dc91e86a0eb89db3ef8f8290530441cb7b658", "rev": "4dc703aa06ae40d2cf5d3c0122b4d7f7d78fe8bf",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -111,11 +111,11 @@
}, },
"nixpkgs": { "nixpkgs": {
"locked": { "locked": {
"lastModified": 1742800061, "lastModified": 1750386251,
"narHash": "sha256-oDJGK1UMArK52vcW9S5S2apeec4rbfNELgc50LqiPNs=", "narHash": "sha256-1ovgdmuDYVo5OUC5NzdF+V4zx2uT8RtsgZahxidBTyw=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "1750f3c1c89488e2ffdd47cab9d05454dddfb734", "rev": "076e8c6678d8c54204abcb4b1b14c366835a58bb",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -127,14 +127,17 @@
}, },
"nixpkgs-lib": { "nixpkgs-lib": {
"locked": { "locked": {
"lastModified": 1738452942, "lastModified": 1748740939,
"narHash": "sha256-vJzFZGaCpnmo7I6i416HaBLpC+hvcURh/BQwROcGIp8=", "narHash": "sha256-rQaysilft1aVMwF14xIdGS3sj1yHlI6oKQNBRTF40cc=",
"type": "tarball", "owner": "nix-community",
"url": "https://github.com/NixOS/nixpkgs/archive/072a6db25e947df2f31aab9eccd0ab75d5b2da11.tar.gz" "repo": "nixpkgs.lib",
"rev": "656a64127e9d791a334452c6b6606d17539476e2",
"type": "github"
}, },
"original": { "original": {
"type": "tarball", "owner": "nix-community",
"url": "https://github.com/NixOS/nixpkgs/archive/072a6db25e947df2f31aab9eccd0ab75d5b2da11.tar.gz" "repo": "nixpkgs.lib",
"type": "github"
} }
}, },
"nixpkgs-lib_2": { "nixpkgs-lib_2": {
@ -154,11 +157,11 @@
}, },
"nixpkgs-lib_3": { "nixpkgs-lib_3": {
"locked": { "locked": {
"lastModified": 1742692082, "lastModified": 1749950217,
"narHash": "sha256-s3XOULQj7BVO7myY5V4Sob0tRZ7nRpwEOIzXg/MkD/Q=", "narHash": "sha256-qXoEFKOnznVvMAKezJhSXzRKsJ/LHLRY8NCw1mGhwrU=",
"owner": "nix-community", "owner": "nix-community",
"repo": "nixpkgs.lib", "repo": "nixpkgs.lib",
"rev": "a09310bc940f245e51b1ffea68731244ca38f2bd", "rev": "753176a8605439613fc6dc9911267b9f720a2615",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -174,11 +177,11 @@
"nixpkgs": "nixpkgs_2" "nixpkgs": "nixpkgs_2"
}, },
"locked": { "locked": {
"lastModified": 1742870145, "lastModified": 1750512508,
"narHash": "sha256-ik+6+EorpRPqEVazsJhjyP9z7N83Tkq0F/Ky7GKHEso=", "narHash": "sha256-gqSQsdLwfEXG076aSG/SLxKwmFzPdi6cfpl6OZhfnfo=",
"owner": "nix-community", "owner": "nix-community",
"repo": "nixpkgs-wayland", "repo": "nixpkgs-wayland",
"rev": "b2bfc4d198ca1ff4e9278c0e984f74a6a086b2ee", "rev": "c020c609f5bbf34ad5b39856caabafae6175b739",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -189,11 +192,11 @@
}, },
"nixpkgs_2": { "nixpkgs_2": {
"locked": { "locked": {
"lastModified": 1742669843, "lastModified": 1750365781,
"narHash": "sha256-G5n+FOXLXcRx+3hCJ6Rt6ZQyF1zqQ0DL0sWAMn2Nk0w=", "narHash": "sha256-XE/lFNhz5lsriMm/yjXkvSZz5DfvKJLUjsS6pP8EC50=",
"owner": "nixos", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "1e5b653dff12029333a6546c11e108ede13052eb", "rev": "08f22084e6085d19bcfb4be30d1ca76ecb96fe54",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -208,8 +211,7 @@
"flake-parts": "flake-parts", "flake-parts": "flake-parts",
"mmsg": "mmsg", "mmsg": "mmsg",
"nixpkgs": "nixpkgs", "nixpkgs": "nixpkgs",
"nixpkgs-wayland": "nixpkgs-wayland", "nixpkgs-wayland": "nixpkgs-wayland"
"treefmt-nix": "treefmt-nix"
} }
}, },
"systems": { "systems": {
@ -226,26 +228,6 @@
"repo": "default", "repo": "default",
"type": "github" "type": "github"
} }
},
"treefmt-nix": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1739829690,
"narHash": "sha256-mL1szCeIsjh6Khn3nH2cYtwO5YXG6gBiTw1A30iGeDU=",
"owner": "numtide",
"repo": "treefmt-nix",
"rev": "3d0579f5cc93436052d94b73925b48973a104204",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "treefmt-nix",
"type": "github"
}
} }
}, },
"root": "root", "root": "root",

View file

@ -3,10 +3,6 @@
nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
nixpkgs-wayland.url = "github:nix-community/nixpkgs-wayland"; nixpkgs-wayland.url = "github:nix-community/nixpkgs-wayland";
flake-parts.url = "github:hercules-ci/flake-parts"; flake-parts.url = "github:hercules-ci/flake-parts";
treefmt-nix = {
url = "github:numtide/treefmt-nix";
inputs.nixpkgs.follows = "nixpkgs";
};
mmsg = { mmsg = {
url = "github:DreamMaoMao/mmsg"; url = "github:DreamMaoMao/mmsg";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
@ -16,7 +12,6 @@
outputs = { outputs = {
self, self,
flake-parts, flake-parts,
treefmt-nix,
... ...
} @ inputs: } @ inputs:
flake-parts.lib.mkFlake {inherit inputs;} { flake-parts.lib.mkFlake {inherit inputs;} {
@ -46,7 +41,6 @@
nativeBuildInputs = old.nativeBuildInputs ++ []; nativeBuildInputs = old.nativeBuildInputs ++ [];
buildInputs = old.buildInputs ++ []; buildInputs = old.buildInputs ++ [];
}; };
treefmtEval = treefmt-nix.lib.evalModule pkgs ./treefmt.nix;
in { in {
packages.default = maomaowm; packages.default = maomaowm;
overlayAttrs = { overlayAttrs = {
@ -56,7 +50,7 @@
inherit maomaowm; inherit maomaowm;
}; };
devShells.default = maomaowm.overrideAttrs shellOverride; devShells.default = maomaowm.overrideAttrs shellOverride;
formatter = treefmtEval.config.build.wrapper; formatter = pkgs.alejandra;
}; };
systems = ["x86_64-linux" "aarch64-linux"]; systems = ["x86_64-linux" "aarch64-linux"];
}; };

View file

@ -1,5 +1,6 @@
{ {
lib, lib,
fetchFromGitHub,
libX11, libX11,
libinput, libinput,
libxcb, libxcb,
@ -20,6 +21,15 @@
mmsg, mmsg,
}: let }: let
pname = "maomaowm"; pname = "maomaowm";
# Use patched wlroots from github.com/DreamMaoMao/wlroots
wlroots-git = wlroots.overrideAttrs (final: prev: {
src = fetchFromGitHub {
owner = "DreamMaoMao";
repo = "wlroots";
rev = "afbb5b7c2b14152730b57aa11119b1b16a299d5b";
sha256 = "sha256-pVU+CuiqvduMTpsnDHX/+EWY2qxHX2lXKiVzdGtcnYY=";
};
});
in in
stdenv.mkDerivation { stdenv.mkDerivation {
inherit pname; inherit pname;
@ -46,7 +56,7 @@ in
pixman pixman
wayland wayland
wayland-protocols wayland-protocols
wlroots wlroots-git
] ]
++ lib.optionals enableXWayland [ ++ lib.optionals enableXWayland [
libX11 libX11

View file

@ -1,8 +0,0 @@
{ ... }:
{
projectRootFile = "flake.nix";
programs = {
nixfmt.enable = true;
};
}