Skip to content
/ wcp Public

Script-driven control panel/system menu for wayland-based window managers.

License

Notifications You must be signed in to change notification settings

milgra/wcp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

author
Milan Toth
Sep 12, 2024
9aecf04 · Sep 12, 2024

History

78 Commits
Sep 12, 2024
Oct 12, 2022
Oct 5, 2022
Dec 10, 2023
Oct 6, 2022
Dec 20, 2023
Dec 20, 2023
Dec 20, 2023

Repository files navigation

wcp - Wayland Control Panel

Layout and control script for kuid that implements a control panel/system menu for wayland based window managers.

Wayland Control Panel was made for SwayOS (https://swayos.github.io)

alt text

Watch the introduction/user guide video on youtube

Features

  • content, style, behaviour freely adjustable
  • super lightweight ( no gtk & qt )

Description

Wayland control panel is an application for control menu, system menu or any kind of control menu for UNIX-like operating systems. You can trigger it's appereance with a shortcut or with a button in the status bar. It can be structured via html, styled via css, programmed via bash.

Installation

First install ( or build ) (Kinetic UI daemon.)[https://github.com/milgra/kuid] Check out this repository. Copy the res folder under ~/.config/wcp If you use debian or void linux, copy wcp-debian.sh or wcp-void.sh to ~/.config/wcp/wcp.sh If you use something else copy wcp-template.sh under ~/.config/wcp/wcp.sh and edit it to use utilities from your configuration. Finally execute ~/.config/wcp.sh in your autostart script.

Usage with sway wm

Launch wcp in the config connected to a named pipe, but remove the named pipe first to avoid mkfifo errors.

exec rm -f /tmp/wcp && mkfifo /tmp/wcp && tail -f /tmp/wcp | wcp

Set up your sway config or menu bar config to toggle wcp

For example, to toggle with META+P

bindsym $mod+p exec "echo 2 > /tmp/wcp"

Configuration

Copy the html, img and script folders from /usr/local/share/wcp under ~/.config/wcp/
Edit ~/.config/wcp/html/main.html to add or remove new items from the control panel Edit ~/.config/wcp/html/main.css to modify, add and remove styles.
Add new images needed by new styles under ~/.config/wcp/img/
Add new script under ~/.config/wcp/script

Creating new scripts

The idea is the following :
if a script doesn't receive any arguments then it should return a string value ( integers between 0 and 100 in case of sliders, strings in case of labels ),
if it receives an argument ( integer between 0 and 100 in case of sliders, 1 in case of button ) then the script should do something.

Technical Info

WCP was written in Headerless C. It is about using the INCLUDE_LEVEL preprocessor macro available in GCC/CLANG to guard the implementation part of a source file so you can place it together with the header definition in a single file and you include this file freely in other source files. Read more about this in (https://github.com/milgra/headerlessc);

WCP uses Kinetic UI as UI/Widget rendering engine. It is a modern, minimal ui renderer with html/css based stylimg written in headerless C. It offers MacOS like smooth kinetic animations and font-level animatioms, gpu or cpu based alpha blending, wayland connector with window and layer support and deterministic session record and replay for fully automated application testing.

WCP uses the mt_core library for retain counted memory management, retain counted and recursively observable vector and map containers and helper functions.

WCP uses meson and ninja for lightning fast compilation.

Contribution/Development

Feel free to push fixes/improvements.

Please follow these guidelines :

  • use clang format before commiting/after file save
  • use zen_core functions and containers and memory handling
  • make sure that the app is leak free. if you run the dev build it automagically checks for leaks on exit on two levels (zc_memory and clang address sanitizer ) and prints leaks

Creating a debug build :

CC=clang meson build --buildtype=debug -Db_sanitize=address -Db_lundef=false
ninja -C build

Donate

paypal : https://paypal.me/milgra
patreon : https://www.patreon.com/milgra
bitcoin : 37cSZoyQckihNvy939AgwBNCiutUVN82du

License

GPLv3, see LICENSE.

Roadmap

wifi/bluetooth selector set default output dirty rect errors fix video on github page clear makepkg errors Keyboard control Auto-tests with 2x scaling