MCPcopy Index your code
hub / github.com/StrataWM/strata

github.com/StrataWM/strata @main

Chat with this repo
repository ↗ · DeepWiki ↗ · + Follow
150 symbols 275 edges 27 files 0 documented · 0%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README
<img src="https://github.com/StrataWM/.github/blob/main/assets/profile_banner.png" />







<img src="https://img.shields.io/github/languages/top/stratawm/stratawm?style=for-the-badge"/>
<img src="https://img.shields.io/github/commit-activity/m/stratawm/stratawm?style=for-the-badge"/>
<img src="https://img.shields.io/github/stars/stratawm/stratawm?style=for-the-badge"/>
<img src="https://img.shields.io/github/watchers/stratawm/stratawm.svg?style=for-the-badge"/>
<img src="https://img.shields.io/github/license/stratawm/stratawm?style=for-the-badge"/>

What's Strata?

Strata is a cutting-edge, robust and sleek Wayland compositor written in Rust using the Smithay library. It is designed to be minimal and flexible yet customizable. Strata is configured in Lua, a lightweight, high-level, multi-paradigm programming language. Lua allows you to customize Strata to a level which may be difficult to do in other config formats such as TOML or YAML.

Getting Started

1. Dependencies

To compile and use Strata, you need some dependencies that have to be installed using a package manager, such as pacman or apt, depending on your distro. The required dependencies are listed below:

  • udev
  • wayland
  • wayland-protocols
  • libinput
  • libxkbcommon
  • libglvnd
  • seatd
  • dbus-glib
  • mesa
  • make (for compiling and linking)

If you're on Arch or any Arch-based distro (such as Artix, Garuda, Manjaro, etc.), you can install these using the following command:

sudo pacman -S udev wayland wayland-protocols libinput libxkbcommon libglvnd seatd dbus-glib mesa make

If you're on Debian, or Debian-based distros such as Ubuntu, Mate, Zorin, etc... you can install these using this command:

sudo apt-get install libudev-dev libgbm-dev libxkbcommon-dev libegl1-mesa-dev libwayland-dev libinput-dev libdbus-1-dev libsystemd-dev libseat-dev make

2. Installing Rust

To compile Strata, you have to install Rust:

All Linux distros

curl https://sh.rustup.rs -sSf | sh

Arch Linux

sudo pacman -S rust

3. Compiling

### 3.1 Clone the repository sh git clone https://github.com/stratawm/stratawm

### 3.2 Compile and Install To install, cd into the cloned repo and then run: ```sh sudo make install

This will compile Strata and also copy the necessary libraries. It will also copy a default config for you to get started with. This might take a bit of time since it has to compile the source code and all the dependencies but if your system is a bit better than a potato, it won't take much time.

## Executing
To start Strata, you can run this command from a terminal

```sh
stratawm --backend winit

This will start Strata using the winit backend. For this to work, another X11 window manager or another Wayland should be running. Support for launching from the TTY will be added shortly.

License

StrataWM and all its subsidiaries are licensed under the GNU GPL v3 License. See LICENSE for details.

Contributing

Refer to CONTRIBUTING.md

Extension points exported contracts — how you extend this code

AsGlowRenderer (Interface)
(no doc) [2 implementers]
src/decorations/mod.rs
UpdateFromLua (Interface)
(no doc) [2 implementers]
strata-core/src/lib.rs

Core symbols most depended-on inside this repo

wl_surface
called by 16
src/handlers/focus.rs
current
called by 14
src/workspaces.rs
iter
called by 12
src/workspaces.rs
outputs
called by 10
src/workspaces.rs
refresh_geometry
called by 6
src/tiling.rs
set_input_focus_auto
called by 6
src/handlers/input.rs
all_windows
called by 5
src/workspaces.rs
geometry
called by 5
src/decorations/mod.rs

Shape

Method 116
Class 14
Function 14
Enum 4
Interface 2

Languages

Rust100%

Modules by API surface

src/workspaces.rs29 symbols
src/state.rs24 symbols
src/handlers/focus.rs21 symbols
src/decorations/mod.rs16 symbols
src/handlers/compositor.rs13 symbols
src/handlers/xdg_shell.rs10 symbols
src/handlers/input.rs8 symbols
src/layouts/dwindle.rs5 symbols
src/decorations/borders.rs5 symbols
strata-derive/src/lib.rs3 symbols
strata-derive/tests/test_derive.rs2 symbols
strata-core/src/lib.rs2 symbols

For agents

$ claude mcp add strata \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact