wayland compositor base wlroots and scenefx(dwl but no suckless)
Find a file
2025-02-26 03:01:44 +08:00
.github/ISSUE_TEMPLATE init 2025-02-03 23:18:47 +08:00
nix refactor: optimize hmModule options 2025-02-26 03:01:44 +08:00
protocols opt: opt project structure 2025-02-15 18:35:22 +08:00
.gitignore feat: add flake support 2025-02-25 22:05:29 +08:00
autostart.sh feat: support config file and reload config without logout 2025-02-16 23:11:03 +08:00
client.h opt: format code 2025-02-17 14:03:32 +08:00
config.conf opt: optimize default fadeout arg 2025-02-25 20:34:30 +08:00
dispatch.h feat: support config file and reload config without logout 2025-02-16 23:11:03 +08:00
flake.lock feat: add flake support 2025-02-25 22:05:29 +08:00
flake.nix feat: add flake support 2025-02-25 22:05:29 +08:00
IM.h opt: format code 2025-02-17 14:03:32 +08:00
LICENSE Initial commit 2025-02-03 23:16:36 +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.c opt: optimize animation clip judge 2025-02-25 20:34:30 +08:00
maomao.desktop project: update desktop file 2025-02-15 22:43:00 +08:00
meson.build opt: fix for nixos build 2025-02-25 20:34:30 +08:00
meson_options.txt init 2025-02-03 23:18:47 +08:00
parse_config.h opt: use sysconfigdir to get install path 2025-02-25 20:34:30 +08:00
preset_config.h opt: format code 2025-02-24 19:32:43 +08:00
README.md refactor: optimize hmModule options 2025-02-26 03:01:44 +08:00
treefmt.nix feat: add flake support 2025-02-25 22:05:29 +08:00
util.c opt: format code 2025-02-17 14:03:32 +08:00
util.h init 2025-02-03 23:18:47 +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(0.5) , adding many operation that supported in hyprland and a hyprland-like keybinds, niri-like scroll layout and sway-like scratchpad. See below for more features.

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

support layout

  • tile(master)
  • scroller
  • monocle
  • grid
  • dwindle
  • spiral

window open rules

options

  • appid: type-string if match it or title, the rule match
  • title: type-string if match it or appid, the rule match
  • tags: type-num(1-9) which tags to open the window
  • isfloating: type-num(0 or 1)
  • isfullscreen: type-num(0 or 1)
  • scroller_proportion: type-float(0.1-1.0)
  • animation_type : type-string(zoom,slide)
  • isnoborder : type-num(0 or 1)
  • monitor : type-num(0-99999)
  • width : type-num(0-9999)
  • height : type-num(0-9999)

some special feature

  • hycov like overview
  • foreign-toplevel support(dunst,waybar wlr taskbar)
  • minimize window to waybar(like hych)
  • sway scratchpad support (minimize window to scratchpad)
  • window pin mode support
  • text-input-v2/v3 for fcitx5
  • window move/open animaition
  • workspace switch animaition
  • fade in animation
  • alt-tab switch window like gnome
  • niri like scroller layout
  • fadeout animation

suggest tools

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

install

wlroots(0.17)

git clone -b 0.17.4 https://gitlab.freedesktop.org/wlroots/wlroots.git
cd wlroots
meson build -Dprefix=/usr
sudo ninja -C build install

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

# set your autostart app ih this
mkdir -p ~/.config/maomao/


config

you can use MAOMAOCONFIG env to set the config-folder-path and the autostart-folder-patch like MAOMAOCONFIG=/home/xxx/maomao

  • the only default keybinds is ctrl+alt+[F1-F12] to change tty

  • the default config path is ~/.config/maomao/config.conf

  • the default autostart path is ~/.config/maomao/autostart.sh

  • the fallback config path is in /etc/maomao/config.conf, you can find the default config here

NixOS+Home-manager

{
  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
              {
                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
                    ];
                };
              }
            ];
          };
        };
      };
    };
}

my dotfile

maomao-config

thanks for some refer repo