mirror of
https://github.com/DreamMaoMao/maomaowm.git
synced 2026-05-02 06:46:29 -04:00
Merge pull request #6 from squassina/copilot/create-simple-build-workflow
Add build workflow for CI validation with smart path filtering using Arch Linux
This commit is contained in:
commit
50ad5e83a9
5 changed files with 273 additions and 31 deletions
120
.github/workflows/README.md
vendored
Normal file
120
.github/workflows/README.md
vendored
Normal file
|
|
@ -0,0 +1,120 @@
|
||||||
|
# GitHub Actions Workflows
|
||||||
|
|
||||||
|
This directory contains the GitHub Actions workflows for the MangoWC project.
|
||||||
|
|
||||||
|
## Workflows
|
||||||
|
|
||||||
|
### build.yml
|
||||||
|
|
||||||
|
**Purpose**: Builds the project to ensure code changes compile successfully.
|
||||||
|
|
||||||
|
**Triggers**:
|
||||||
|
|
||||||
|
- Push to `main` or `master` branch (only when code files change)
|
||||||
|
- Pull requests to `main` or `master` branch (only when code files change)
|
||||||
|
- Manual dispatch (workflow_dispatch)
|
||||||
|
|
||||||
|
**Path filters** (only runs when these change):
|
||||||
|
|
||||||
|
- Source files: `**.c`, `**.h`, `**.cpp`, `**.scm`
|
||||||
|
- Build files: `meson.build`, `meson_options.txt`, `flake.nix`
|
||||||
|
- Protocol definitions: `protocols/**`
|
||||||
|
- Workflow file itself: `.github/workflows/build.yml`
|
||||||
|
|
||||||
|
**What it does**:
|
||||||
|
|
||||||
|
1. Runs in Arch Linux container (archlinux:latest)
|
||||||
|
2. Updates system and installs all dependencies via pacman
|
||||||
|
3. Installs wlroots from official Arch repositories
|
||||||
|
4. Installs scenefx from AUR (Arch User Repository)
|
||||||
|
5. Configures the project with meson
|
||||||
|
6. Builds the project with ninja
|
||||||
|
7. Verifies the executables were created
|
||||||
|
|
||||||
|
**Build Strategy**:
|
||||||
|
|
||||||
|
- Uses Arch Linux for up-to-date system packages
|
||||||
|
- All dependencies installed via pacman or AUR (no source builds)
|
||||||
|
- wlroots installed from official Arch repositories
|
||||||
|
- scenefx installed from AUR
|
||||||
|
|
||||||
|
**Dependencies**:
|
||||||
|
|
||||||
|
- Arch Linux container (archlinux:latest)
|
||||||
|
- Meson build system
|
||||||
|
- Ninja build tool
|
||||||
|
- All system packages from pacman (wayland, libinput, wlroots, mesa, etc.)
|
||||||
|
- scenefx from AUR
|
||||||
|
|
||||||
|
### docs.yml
|
||||||
|
|
||||||
|
**Purpose**: Validates markdown documentation for style and formatting consistency.
|
||||||
|
|
||||||
|
**Triggers**:
|
||||||
|
|
||||||
|
- Push to `main` or `master` branch (only when markdown files change)
|
||||||
|
- Pull requests to `main` or `master` branch (only when markdown files change)
|
||||||
|
- Manual dispatch (workflow_dispatch)
|
||||||
|
|
||||||
|
**Path filters** (only runs when these change):
|
||||||
|
|
||||||
|
- Markdown files: `**.md`
|
||||||
|
- Workflow file itself: `.github/workflows/docs.yml`
|
||||||
|
|
||||||
|
**What it does**:
|
||||||
|
|
||||||
|
- Lints markdown files in the repository using markdownlint-cli2
|
||||||
|
- Checks for common markdown formatting issues
|
||||||
|
- Ensures documentation follows consistent style guidelines
|
||||||
|
- Excludes dependency directories (wayland, wlroots, scenefx) to only lint
|
||||||
|
repository files
|
||||||
|
|
||||||
|
### lock.yml
|
||||||
|
|
||||||
|
**Purpose**: Automatically locks inactive issues and PRs to keep the repository
|
||||||
|
clean.
|
||||||
|
|
||||||
|
**Triggers**:
|
||||||
|
|
||||||
|
- Scheduled daily at 12:30 UTC
|
||||||
|
- Manual dispatch
|
||||||
|
|
||||||
|
**What it does**:
|
||||||
|
|
||||||
|
- Locks issues, PRs, and discussions that have been closed for 30 days
|
||||||
|
- Adds a comment explaining why the thread was locked
|
||||||
|
|
||||||
|
### stale.yml
|
||||||
|
|
||||||
|
**Purpose**: Automatically closes issues that have been manually marked as stale.
|
||||||
|
|
||||||
|
**Triggers**:
|
||||||
|
|
||||||
|
- Scheduled daily at 12:30 UTC
|
||||||
|
|
||||||
|
**What it does**:
|
||||||
|
|
||||||
|
- Closes issues marked with the "stale" label after 7 days of inactivity
|
||||||
|
- Adds "automatic-closing" label when closing
|
||||||
|
- Does not automatically mark issues as stale (only processes manually marked ones)
|
||||||
|
|
||||||
|
## Development Notes
|
||||||
|
|
||||||
|
The build workflow ensures that:
|
||||||
|
|
||||||
|
- Only runs when actual code or build configuration changes
|
||||||
|
- All dependencies are properly installed
|
||||||
|
- The project compiles without errors
|
||||||
|
- Both main executables (`mango` and `mmsg`) are built successfully
|
||||||
|
|
||||||
|
The docs workflow ensures that:
|
||||||
|
|
||||||
|
- Only runs when markdown documentation changes
|
||||||
|
- Documentation follows consistent formatting
|
||||||
|
- Markdown files are well-formed and free of common issues
|
||||||
|
|
||||||
|
If the build workflow fails, check:
|
||||||
|
|
||||||
|
1. Dependencies are up to date in the workflow file
|
||||||
|
2. wlroots and scenefx versions match requirements in meson.build
|
||||||
|
3. Build configuration in meson.build hasn't changed
|
||||||
98
.github/workflows/build.yml
vendored
Normal file
98
.github/workflows/build.yml
vendored
Normal file
|
|
@ -0,0 +1,98 @@
|
||||||
|
name: Build
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: [main, master]
|
||||||
|
paths:
|
||||||
|
- '**.c'
|
||||||
|
- '**.h'
|
||||||
|
- '**.cpp'
|
||||||
|
- '**.scm'
|
||||||
|
- 'meson.build'
|
||||||
|
- 'meson_options.txt'
|
||||||
|
- 'flake.nix'
|
||||||
|
- 'protocols/**'
|
||||||
|
- '.github/workflows/build.yml'
|
||||||
|
pull_request:
|
||||||
|
branches: [main, master]
|
||||||
|
paths:
|
||||||
|
- '**.c'
|
||||||
|
- '**.h'
|
||||||
|
- '**.cpp'
|
||||||
|
- '**.scm'
|
||||||
|
- 'meson.build'
|
||||||
|
- 'meson_options.txt'
|
||||||
|
- 'flake.nix'
|
||||||
|
- 'protocols/**'
|
||||||
|
- '.github/workflows/build.yml'
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
container:
|
||||||
|
image: archlinux:latest
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Update system and install dependencies
|
||||||
|
run: |
|
||||||
|
# Update package database
|
||||||
|
pacman -Syu --noconfirm
|
||||||
|
|
||||||
|
# Install build tools and all dependencies
|
||||||
|
pacman -S --noconfirm \
|
||||||
|
base-devel \
|
||||||
|
git \
|
||||||
|
meson \
|
||||||
|
ninja \
|
||||||
|
wayland \
|
||||||
|
wayland-protocols \
|
||||||
|
libinput \
|
||||||
|
libxkbcommon \
|
||||||
|
pcre2 \
|
||||||
|
pixman \
|
||||||
|
libdrm \
|
||||||
|
libxcb \
|
||||||
|
xcb-util-wm \
|
||||||
|
xorg-xwayland \
|
||||||
|
hwdata \
|
||||||
|
libliftoff \
|
||||||
|
libdisplay-info \
|
||||||
|
seatd \
|
||||||
|
mesa \
|
||||||
|
wlroots0.19 \
|
||||||
|
pkg-config
|
||||||
|
|
||||||
|
- name: Install scenefx from AUR
|
||||||
|
run: |
|
||||||
|
# Install scenefx from AUR since it's not in official repos
|
||||||
|
# Create a non-root user for makepkg (AUR requires non-root)
|
||||||
|
useradd -m -G wheel builder
|
||||||
|
echo "builder ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
|
||||||
|
|
||||||
|
# Clone and build scenefx from AUR as builder user
|
||||||
|
cd /home/builder
|
||||||
|
su - builder -c "git clone https://aur.archlinux.org/scenefx0.4.git"
|
||||||
|
cd scenefx0.4
|
||||||
|
su - builder -c "cd /home/builder/scenefx0.4 && makepkg -si --noconfirm"
|
||||||
|
|
||||||
|
- name: Configure meson
|
||||||
|
run: |
|
||||||
|
# Download meson subprojects if needed
|
||||||
|
meson subprojects download || true
|
||||||
|
meson setup build/ --prefix=/usr
|
||||||
|
|
||||||
|
- name: Build project
|
||||||
|
run: |
|
||||||
|
ninja -C build/
|
||||||
|
|
||||||
|
- name: Build summary
|
||||||
|
run: |
|
||||||
|
echo "✅ Build completed successfully!"
|
||||||
|
echo "Built executables:"
|
||||||
|
ls -lh build/mango build/mmsg
|
||||||
35
.github/workflows/docs.yml
vendored
Normal file
35
.github/workflows/docs.yml
vendored
Normal file
|
|
@ -0,0 +1,35 @@
|
||||||
|
name: Documentation
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: [main, master]
|
||||||
|
paths:
|
||||||
|
- '**.md'
|
||||||
|
- '.github/workflows/docs.yml'
|
||||||
|
pull_request:
|
||||||
|
branches: [main, master]
|
||||||
|
paths:
|
||||||
|
- '**.md'
|
||||||
|
- '.github/workflows/docs.yml'
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
markdown-lint:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Lint markdown files
|
||||||
|
uses: DavidAnson/markdownlint-cli2-action@v18
|
||||||
|
with:
|
||||||
|
globs: |
|
||||||
|
*.md
|
||||||
|
.github/**/*.md
|
||||||
|
!**/node_modules/**
|
||||||
|
!**/wayland/**
|
||||||
|
!**/wlroots/**
|
||||||
|
!**/scenefx/**
|
||||||
|
|
@ -1,11 +0,0 @@
|
||||||
{
|
|
||||||
"default": true,
|
|
||||||
"MD013": {
|
|
||||||
"line_length": 150,
|
|
||||||
"code_blocks": false,
|
|
||||||
"tables": false
|
|
||||||
},
|
|
||||||
"MD033": {
|
|
||||||
"allowed_elements": ["div", "img"]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
24
README.md
24
README.md
|
|
@ -1,8 +1,6 @@
|
||||||
# Mango Wayland Compositor
|
# Mango Wayland Compositor
|
||||||
|
|
||||||
<div>
|

|
||||||
<img src="https://github.com/DreamMaoMao/mangowc/blob/main/assets/mango-transparency-256.png" alt="MangoWC Logo" width="120"/>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
This project's development is based on [dwl](https://codeberg.org/dwl/dwl/).
|
This project's development is based on [dwl](https://codeberg.org/dwl/dwl/).
|
||||||
|
|
||||||
|
|
@ -106,13 +104,10 @@ tag 1, or tag 2, or both tags 1 and 2 simultaneously.
|
||||||
MangoWC supports 9 different layouts:
|
MangoWC supports 9 different layouts:
|
||||||
|
|
||||||
| Layout | Description | Best For |
|
| Layout | Description | Best For |
|
||||||
|-----------------------|---------------------------------|-----------------------|
|
|--------|-------------|----------|
|
||||||
| **tile** | Master-stack tiling | General multitasking |
|
| **tile** | Master-stack tiling | General multitasking |
|
||||||
| | (left master, right stack) | |
|
| **scroller** | Horizontal scrolling columns | Wide content, terminals |
|
||||||
| **scroller** | Horizontal scrolling columns | Wide content, |
|
| **monocle** | One window fullscreen at a time | Focus, presentations |
|
||||||
| | | terminals |
|
|
||||||
| **monocle** | One window fullscreen at a time | Focus, |
|
|
||||||
| | | presentations |
|
|
||||||
| **grid** | Windows arranged in grid | Many small windows |
|
| **grid** | Windows arranged in grid | Many small windows |
|
||||||
| **deck** | Stack of windows, one visible | Cycling through tasks |
|
| **deck** | Stack of windows, one visible | Cycling through tasks |
|
||||||
| **center_tile** | Master centered, stack on sides | Symmetrical layout |
|
| **center_tile** | Master centered, stack on sides | Symmetrical layout |
|
||||||
|
|
@ -630,7 +625,10 @@ sudo ninja -C build install
|
||||||
- Dependencies
|
- Dependencies
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
yay -S rofi foot xdg-desktop-portal-wlr swaybg waybar wl-clip-persist cliphist wl-clipboard wlsunset xfce-polkit swaync pamixer wlr-dpms sway-audio-idle-inhibit-git swayidle dimland-git brightnessctl swayosd wlr-randr grim slurp satty swaylock-effects-git wlogout sox
|
yay -S rofi foot xdg-desktop-portal-wlr swaybg waybar wl-clip-persist \
|
||||||
|
cliphist wl-clipboard wlsunset xfce-polkit swaync pamixer wlr-dpms \
|
||||||
|
sway-audio-idle-inhibit-git swayidle dimland-git brightnessctl swayosd \
|
||||||
|
wlr-randr grim slurp satty swaylock-effects-git wlogout sox
|
||||||
```
|
```
|
||||||
|
|
||||||
### Dms
|
### Dms
|
||||||
|
|
@ -638,7 +636,9 @@ yay -S rofi foot xdg-desktop-portal-wlr swaybg waybar wl-clip-persist cliphist w
|
||||||
- Dependencies
|
- Dependencies
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
yay -S foot xdg-desktop-portal-wlr swaybg wl-clip-persist cliphist wl-clipboard sway-audio-idle-inhibit-git brightnessctl grim slurp satty matugen-bin dms-shell-git
|
yay -S foot xdg-desktop-portal-wlr swaybg wl-clip-persist cliphist \
|
||||||
|
wl-clipboard sway-audio-idle-inhibit-git brightnessctl grim slurp satty \
|
||||||
|
matugen-bin dms-shell-git
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
@ -811,7 +811,7 @@ At present, I can only accept sponsorship through an encrypted connection.
|
||||||
If you find this project helpful to you, you can offer sponsorship in the
|
If you find this project helpful to you, you can offer sponsorship in the
|
||||||
following ways.
|
following ways.
|
||||||
|
|
||||||
<img width="650" height="870" alt="image" src="https://github.com/user-attachments/assets/8c860317-90d2-4071-971d-f1a92b674469" />
|

|
||||||
|
|
||||||
Thanks to the following friends for their sponsorship of this project
|
Thanks to the following friends for their sponsorship of this project
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue