wayland compositor base wlroots and scenefx(dwl but no suckless)
Find a file
2025-05-06 23:49:19 +08:00
.github/ISSUE_TEMPLATE init 2025-02-03 23:18:47 +08:00
nix ver: upgrade to wlroots-0.19 version 2025-04-13 10:35:02 +08:00
protocols opt: add config parse arg num to 4 2025-05-05 10:21:31 +08:00
src fix: avoid curtag out of bound 2025-05-06 23:49:19 +08:00
.gitignore feat: add flake support 2025-02-25 22:05:29 +08:00
config.conf opt: simplify the default configuration 2025-05-06 23:25:57 +08:00
flake.lock ver: upgrade to wlroots-0.19 version 2025-04-13 10:35:02 +08:00
flake.nix ver: upgrade to wlroots-0.19 version 2025-04-13 10:35:02 +08:00
LICENSE Initial commit 2025-02-03 23:16:36 +08:00
LICENSE.dwl add dwl license 2025-02-28 21:54:18 +08:00
LICENSE.dwm init 2025-02-03 23:18:47 +08:00
LICENSE.sway init 2025-02-03 23:18:47 +08:00
LICENSE.tinywl init 2025-02-03 23:18:47 +08:00
maomao.desktop opt: set XDG_CURRENT_DESKTOP var in code not in desktop file 2025-04-25 13:06:40 +08:00
meson.build fix: fix can't input en due to text-input change 2025-04-28 09:59:14 +08:00
meson_options.txt init 2025-02-03 23:18:47 +08:00
README.md update readme 2025-04-29 21:47:36 +08:00
treefmt.nix feat: add flake support 2025-02-25 22:05:29 +08:00

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

Maomaowm

This project is developed based on dwl, it is basically compatible with all dwm features. In addition, it is added many operation that supported in hyprland, such as smooth and customizable animationExternal configuration that can be hot overloaded,pin mode,maximize window etc...

See below for more features.

separate window layout for each workspace(tags), with separate workspace parameters

support layout

  • tile
  • scroller
  • monocle
  • grid
  • dwindle
  • spiral

some special feature

  • hycov like overview
  • foreign-toplevel protocol(dunst,waybar wlr taskbar)
  • minimize window to waybar(like hych)
  • 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
  • alt-tab switch window like gnome
  • niri like scroller layout

install

depend

yay -S glibc wayland libinput libdrm pixman libxkbcommon git meson ninja wayland-protocols libdisplay-info libliftoff hwdata seatd

arch

yay -S maomaowm-git

other

yay -S wlroots-git
git clone https://github.com/DreamMaoMao/maomaowm.git
cd maomaowm
meson build -Dprefix=/usr
sudo ninja -C build install

suggest tools

yay -S rofi foot xdg-desktop-portal-wlr swaybg waybar wl-clip-persist cliphist wl-clipboard wlsunset polkit-gnome swaync

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

My dotfile

  • depend
yay -S lavalauncher-mao-git wlr-dpms sway-audio-idle-inhibit swayidle dimland brightnessctl swayosd wlr-randr grim slurp satty swaylock-effects-git wlogout eww

maomao config

maomao-config

other

foot swaylock wlogout swaync eww

Config document

refer to wiki

NixOS+Home-manager

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:

{
  inputs = {
    nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
    home-manager = {
      url = "github:nix-community/home-manager";
      inputs.nixpkgs.follows = "nixpkgs";
    };
    flake-parts.url = "github:hercules-ci/flake-parts";
    maomaowm.url = "github:DreamMaoMao/maomaowm";
  };
  outputs =
    inputs@{ self, flake-parts, ... }:
    flake-parts.lib.mkFlake { inherit inputs; } {
      debug = true;
      systems = [ "x86_64-linux" ];
      flake = {
        nixosConfigurations = {
          hostname = inputs.nixpkgs.lib.nixosSystem {
            system = "x86_64-linux";
            modules = [
              inputs.home-manager.nixosModules.home-manager

              # Add maomaowm nixos module
              inputs.maomaowm.nixosModules.maomaowm
              {
                programs.maomaowm.enable = true;
              }
              {
                home-manager = {
                  useGlobalPkgs = true;
                  useUserPackages = true;
                  backupFileExtension = "backup";
                  users."username".imports =
                    [
                      (
                        { ... }:
                        {
                          wayland.windowManager.maomaowm = {
                            enable = true;
                            settings = ''
                              # see config.conf
                            '';
                            autostart_sh = ''
                              # see autostart.sh
                              # Note: here no need to add shebang
                            '';
                          };
                        }
                      )
                    ]
                    ++ [
                      # Add maomaowm hm module
                      inputs.maomaowm.hmModules.maomaowm
                    ];
                };
              }
            ];
          };
        };
      };
    };
}

thanks for some refer repo