back to home

stumpwm / mahogany

A stumpwm like Wayland compositor

View on GitHub
347 stars
33 forks
57 issues

AI Architecture Analysis

This repository is indexed by RepoMind. By analyzing stumpwm/mahogany in our AI interface, you can instantly generate complete architecture diagrams, visualize control flows, and perform automated security audits across the entire codebase.

Our Agentic Context Augmented Generation (Agentic CAG) engine loads full source files into context on-demand, avoiding the fragmentation of traditional RAG systems. Ask questions about the architecture, dependencies, or specific features to see it in action.

Source files are only loaded when you start an analysis to optimize performance.

Embed this Badge

Showcase RepoMind's analysis directly in your repository's README.

[![Analyzed by RepoMind](https://img.shields.io/badge/Analyzed%20by-RepoMind-4F46E5?style=for-the-badge)](https://repomind.in/repo/stumpwm/mahogany)
Preview:Analyzed by RepoMind

Repository Overview (README excerpt)

Crawler view

• Mahogany Mahogany is a tiling window manager for Wayland modeled after StumpWM. While it is not a drop-in replacement for stumpwm, stumpwm users should be very comfortable with Mahogany. Its planned features are: • Easy extensibility: through the use of different modes, users can modify keybindings present in Mahogany. • Module system that allows users to load and use code at their discretion. • Programs to interact with other running services such as pulseaudio and alsamixer, as well as facilities to control screen brightness. These are module based, so they don't have to be loaded if your system doesn't use them. • Good support for floating windows. • A configuration system using Common Lisp. ** Contributing / Hacking Mahogany is still in an early stage of development. See the [[https://github.com/stumpwm/mahogany/milestones][list of milestones]] for features or work that is ready to be started. You can also browse the issue list for labels marked with [[https://github.com/stumpwm/mahogany/labels/good%20first%20issue][Good First Issue]]. In general, if it's in stumpwm and you want it, we will consider adding it. Create an issue for the issue tracker so we can plan on how to get it done. Before writing code, please look at [[CONTRIBUTING.md][CONTRIBUTING.md]] ** Building There are two parts to Mahogany: a backend library implemented in C, and the Common Lisp front end. Thus, you will need the following tools: • A C compiler (tested with GCC and clang) • Steel Bank Common Lisp • GNU Make • Meson Several dependencies are shipped with Mahogany as git submodules. To download them, run the following git command: #+BEGIN_SRC git submodule update --init #+END_SRC To see a full example of this process, see the [[https://github.com/stumpwm/mahogany/blob/master/.github/workflows/test.yml][CI workflow]]. *** Backend Library Dependencies The backend library requires wlroots 0.19.x. If an appropriate version is not available, it will be built locally. See the README in the submodule or consult the [[https://gitlab.freedesktop.org/wlroots/wlroots/-/tree/0.19.2?ref_type=tags][project's git repo]] for information on how to build it. The following development dependencies are also needed: • cairo • Pango *** Common Lisp Dependencies You will need a Common Lisp implementation. While it should run on any version that the CFFI library supports, SBCL and CCL are supported. The recommended way to install the dependencies is using Quicklisp. Follow the instructions at https://www.quicklisp.org/ to install it. Once downloaded, install the dependencies: #+BEGIN_SRC lisp (ql:quickload '("alexandria" "cl-ansi-text" "terminfo" "adopt" "iterate" "cffi" "cffi-grovel" "closer-mop" "fset" "atomics" "bordeaux-threads")) #+END_SRC *** Building And Running At this point, all of the dependencies should be installed. You can now run =make= in the root directory of the project to build the C backend and the mahogany executable. #+BEGIN_SRC sh make # if success, run the program! make run # Can also do: LD_LIBRARY_PATH=build/lib64:build/lib ./build/mahogany #+END_SRC If you want to build mahogany (or execute any of the other build commands) with CCL, you can do so by specifying CCL when invoking make: #+BEGIN_SRC sh make LISP=ccl #+END_SRC It is possible to run mahogany in an X11 or Wayland session, and is the recommended method of testing at this time. ** Getting Started Mahogany is currently in a pre-alpha state. Help is needed (see [[https://github.com/stumpwm/mahogany/milestones][list of milestones]]). In particular, touchscreen, menu, dialog, and systray do not work yet. But it has basic functionalities already. Check the =./lisp/key-bindings.lisp= for what you can do. For example, =C-t c= should fire up a terminal for you, and =C-t q= will kill mahogany. You can customize your keybindings by writing =~/.config/mahogany/init.lisp=. For example, the following code lets you to open emacs by holding =super= and tapping on =e=. #+begin_src lisp (in-package #:mahogany-user) (defun open-firefox (sequence seat) (declare (ignore sequence seat)) (uiop:launch-program "firefox")) (defun open-emacs (sequence seat) (declare (ignore sequence seat)) (uiop:launch-program "emacsclient -c || emacs")) (add-to-kmap *top-map* (kbd "s-e") #'open-emacs (kbd "s-F") #'open-firefox) #+end_src To modify the keyboard layout with libxkb, see [[./doc/keyboard-layout.org][Doc: Keyboard Layout]]. ** License Mahogany Window Manager Copyright (C) 2020 Stuart Dilts This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.