2025-05-07 11:12:20 +08:00
# Maomaowm
This project is developed based on [dwl ](https://codeberg.org/dwl/dwl/ ),
2025-05-08 19:25:23 +08:00
"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'.
2025-05-07 11:12:20 +08:00
1. **Lightweight & Fast Build **
2025-05-07 17:38:56 +08:00
- *Maomao* is as lightweight as * dwl * , and its build can be completed within few seconds. Despite this, * maomao * does not compromise on functionality.
2025-05-07 11:12:20 +08:00
2. **Feature Integration **
- In addition to inheriting * dwl * 's core features and common functions found in other compositors, * maomao * also supports unique functionalities from other projects. These include:
- Hyprland’ s * animations * ,
- Sway’ s * additional protocols * ,
- Labwc’ s * text input method * ,
- Niri’ s * scrolling layout * .
- However, these are implemented in a deliberately lightweight and simplistic manner to avoid bloated code.
3. **Philosophy **
- *Maomao* has no rigid design ideology—you could call it an eclectic hybrid of various compositors.
2025-02-09 15:54:18 +08:00
Master-Stack Layout
2025-02-04 21:44:32 +08:00
2025-02-19 16:33:38 +08:00
https://github.com/user-attachments/assets/a9d4776e-b50b-48fb-94ce-651d8a749b8a
2025-02-09 15:54:18 +08:00
Scroller Layout
2025-02-19 16:33:38 +08:00
https://github.com/user-attachments/assets/c9bf9415-fad1-4400-bcdc-3ad2d76de85a
2025-02-14 09:51:45 +08:00
2025-05-07 11:12:20 +08:00
# maomao based on tags instead of workspace, so it support separate window layout for each tags, with separate tags parameters
2025-03-24 12:34:17 +08:00
2025-02-17 12:13:32 +08:00
## support layout
2025-03-24 12:34:17 +08:00
2025-03-03 08:33:19 +08:00
- tile
2025-02-17 12:13:32 +08:00
- scroller
- monocle
- grid
- dwindle
2025-02-23 08:52:05 +08:00
- spiral
2025-02-17 12:13:32 +08:00
2025-02-14 09:51:45 +08:00
# some special feature
2025-03-24 12:34:17 +08:00
2025-02-03 23:18:47 +08:00
- hycov like overview
2025-03-03 08:33:19 +08:00
- foreign-toplevel protocol(dunst,waybar wlr taskbar)
2025-02-14 09:51:45 +08:00
- minimize window to waybar(like hych)
2025-03-03 08:33:19 +08:00
- sway scratchpad (minimize window to scratchpad)
- window pin mode/ maximize mode
- text-input-v2/v3 protocol for fcitx5
- window move/open/close animaition
- workspaces(tags) switch animaition
- fade/fadeout animation
2025-02-09 15:54:18 +08:00
- alt-tab switch window like gnome
- niri like scroller layout
2025-02-03 23:18:47 +08:00
2025-03-15 10:26:11 +08:00
# install
2025-03-24 12:34:17 +08:00
2025-03-15 10:26:11 +08:00
## depend
``` bash
2025-04-04 19:54:21 +08:00
yay -S glibc wayland libinput libdrm pixman libxkbcommon git meson ninja wayland-protocols libdisplay-info libliftoff hwdata seatd
2025-03-15 10:26:11 +08:00
```
2025-03-24 12:34:17 +08:00
2025-04-13 09:05:09 +08:00
## arch
``` bash
yay -S maomaowm-git
2025-03-24 12:34:17 +08:00
2025-02-03 23:18:47 +08:00
```
2025-04-13 09:05:09 +08:00
## other
``` bash
2025-05-15 22:02:38 +08:00
yay -S wlroots-0.19-git
2025-02-05 20:57:28 +08:00
git clone https://github.com/DreamMaoMao/maomaowm.git
cd maomaowm
2025-02-03 23:18:47 +08:00
meson build -Dprefix= /usr
sudo ninja -C build install
2025-03-03 08:33:19 +08:00
```
2025-02-20 08:47:56 +08:00
2025-03-11 09:44:00 +08:00
## suggest tools
2025-03-24 12:34:17 +08:00
2025-03-11 09:44:00 +08:00
```
2025-03-30 16:05:00 +08:00
yay -S rofi foot xdg-desktop-portal-wlr swaybg waybar wl-clip-persist cliphist wl-clipboard wlsunset polkit-gnome swaync
2025-03-11 09:44:00 +08:00
```
2025-04-28 22:58:00 +08:00
## Some common default key bindings
- alt+return: open foot terminal
- alt+q: kill client
- alt+left/right/up/down: focus direction
- super+m: quit maomao
2025-03-24 12:34:17 +08:00
2025-04-28 22:58:00 +08:00
## My dotfile
2025-04-29 21:20:37 +08:00
- depend
```
2025-05-12 16:52:56 +08:00
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 eww
2025-04-29 21:20:37 +08:00
```
### maomao config
2025-04-28 22:58:00 +08:00
[maomao-config ](https://github.com/DreamMaoMao/dotfile/tree/main/maomao )
2025-04-29 21:20:37 +08:00
#### other
[foot ](https://github.com/DreamMaoMao/dotfile/tree/main/foot )
[swaylock ](https://github.com/DreamMaoMao/dotfile/tree/main/swaylock )
[wlogout ](https://github.com/DreamMaoMao/dotfile/tree/main/wlogout )
[swaync ](https://github.com/DreamMaoMao/dotfile/tree/main/swaync )
[eww ](https://github.com/DreamMaoMao/dotfile/tree/main/eww )
2025-02-23 19:55:42 +08:00
2025-04-28 22:58:00 +08:00
## Config document
refer to [wiki ](https://github.com/DreamMaoMao/maomaowm/wiki/ )
2025-02-23 19:55:42 +08:00
2025-03-07 20:57:34 +08:00
2025-02-25 22:05:29 +08:00
# NixOS+Home-manager
2025-03-24 12:34:17 +08:00
2025-03-24 12:50:27 +08:00
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 home-manager module to declare configuration and autostart for maomaowm.
Here's an example of using the modules in a flake:
2025-02-25 22:05:29 +08:00
``` nix
{
inputs = {
nixpkgs . url = " g i t h u b : N i x O S / n i x p k g s / n i x o s - u n s t a b l e " ;
home-manager = {
url = " g i t h u b : n i x - c o m m u n i t y / h o m e - m a n a g e r " ;
inputs . nixpkgs . follows = " n i x p k g s " ;
} ;
flake-parts . url = " g i t h u b : h e r c u l e s - c i / f l a k e - p a r t s " ;
maomaowm . url = " g i t h u b : D r e a m M a o M a o / m a o m a o w m " ;
} ;
outputs =
inputs @ { self , flake-parts , . . . }:
flake-parts . lib . mkFlake { inherit inputs ; } {
debug = true ;
systems = [ " x 8 6 _ 6 4 - l i n u x " ] ;
flake = {
nixosConfigurations = {
hostname = inputs . nixpkgs . lib . nixosSystem {
system = " x 8 6 _ 6 4 - l i n u x " ;
modules = [
inputs . home-manager . nixosModules . home-manager
2025-03-24 12:50:27 +08:00
# Add maomaowm nixos module
inputs . maomaowm . nixosModules . maomaowm
{
programs . maomaowm . enable = true ;
}
2025-02-25 22:05:29 +08:00
{
home-manager = {
useGlobalPkgs = true ;
useUserPackages = true ;
backupFileExtension = " b a c k u p " ;
users . " u s e r n a m e " . imports =
[
(
{ . . . }:
{
wayland . windowManager . maomaowm = {
enable = true ;
settings = ''
# s e e c o n f i g . c o n f
'' ;
autostart_sh = ''
# s e e a u t o s t a r t . s h
2025-02-25 22:37:34 +08:00
# N o t e : h e r e n o n e e d t o a d d s h e b a n g
2025-02-25 22:05:29 +08:00
'' ;
} ;
}
)
]
++ [
# Add maomaowm hm module
inputs . maomaowm . hmModules . maomaowm
] ;
} ;
}
] ;
} ;
} ;
} ;
} ;
}
```
2025-03-24 12:34:17 +08:00
# thanks for some refer repo
2025-02-14 14:32:20 +08:00
2025-03-03 08:33:19 +08:00
- https://gitlab.freedesktop.org/wlroots/wlroots - implementation of wayland protocol
2025-02-14 14:32:20 +08:00
2025-03-03 08:33:19 +08:00
- https://github.com/dqrk0jeste/owl - basal window animaition
2025-02-14 14:32:20 +08:00
2025-03-04 16:16:34 +08:00
- https://codeberg.org/dwl/dwl - basal dwl feature
2025-03-01 21:34:05 +08:00
2025-04-28 10:23:35 +08:00
- https://github.com/labwc/labwc - sample of text-input protocol
2025-03-01 21:34:05 +08:00
2025-03-03 08:33:19 +08:00
- https://github.com/swaywm/sway - sample of wayland protocol