maomaowm/README.md
2025-04-28 23:07:36 +08:00

4.6 KiB

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

maomao-config

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