Skip to content

Latest commit

Β 

History

60 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

GitHub issues GitHub forks GitHub stars License

                        ____ ___  _   _ _  ____   __ __        ___     ____        
                       / ___/ _ \| \ | | |/ /\ \ / / \ \      / / |   |  _ \        
                      | |  | | | |  \| | ' /  \ V /___\ \ /\ / /| |   | |_) |        
                      | |__| |_| | |\  | . \   | |_____\ V  V / | |___|  _ <         
                       \____\___/|_| \_|_|\_\  |_|      \_/\_/  |_____|_| \_\       

Love Conky and want it to run natively on Wayland?

You're in the right place!

🎯 What is this project?

This repository is an experimental attempt to build a native Wayland backend for Conky. This repository is structured as a step-by-step exploration of Wayland rendering, progressing from a minimal client to a modular widget framework.

I’m not a professional developer β€” my experience comes mostly from small Bash, Python, HTML & CSS projects.
But Conky deserves to run properly on Wayland without X11, XWayland, or hacks… so here we are.

This project:

  • may take a long time,
  • may fail in some parts,
  • will definitely evolve,
  • is open to anyone who wants to experiment or contribute

🌟 Project Vision

  • Build a Wayland-native backend for Conky
  • Support text, graphs, and Lua-based widgets
  • Provide cross-compositor compatibility
  • Encourage community-driven experimentation and contributions

πŸš€ Current Status

Important. Current phase of the project - PAUSE. 
Work is underway and a custom system widget for plasma (kwin).      

This repository currently serves as:

  • a research sandbox,
  • a learning space for Wayland + SHM + Cairo,
  • and a step-by-step progression toward a functional prototype.

Milestones are updated manually as development progresses.

Milestone Progress
Project Foundation πŸ”Ή 25%
Wayland Architecture Research πŸ”Ή 66%
Prototype Rendering Layer πŸ”Ή 66%

See Milestones for details.
Track issues progress here.


πŸ“‚ Repository Structure

Files/
 β”œβ”€β”€ 00.wayland_protocol_headers/   β†’ generated xdg-shell headers
 β”œβ”€β”€ 01.hello_wayland/              β†’ minimal Wayland client test
 β”œβ”€β”€ 02.wayland_shm/                β†’ SHM surface + raw drawing
 β”œβ”€β”€ 03.wayland_shm_cairo/          β†’ SHM + Cairo rendering
 β”œβ”€β”€ 04.wayland_shm_cairo_db/       β†’ SHM + Cairo + double buffer - widget prototype
 └── 05.wayland_movable             β†’ SHM + Cairo + double buffer + xdg_move + config
Screenshots/                        β†’ test output images

Each subdirectory contains its own README.md with instructions.


πŸ“¦ Installation

(Under development – instructions will be added once the prototype is ready.)


πŸ“ Contributing

It will be open to contributors once there is a functional basis.
For now, it is being used for experimenting with Wayland.


🎯 Milestones Overview

  1. Project Foundation – setup, documentation, roadmap
  2. Wayland Architecture Research – backend study, rendering options, Lua feasibility
  3. Prototype Rendering Layer – minimal Wayland surface, text and shape rendering, placeholder for widgets

Development Path

      hello_wayland (v01)
           β”‚
           β–Ό
      Wayland SHM buffers (v02)
           β”‚
           β–Ό
      SHM + Cairo rendering (v03)
           β”‚
           β–Ό
      Double buffering (v03)
           β”‚
           β–Ό
      Widget prototype (v04)
           β”‚
           β–Ό
      Widget framework (v05)

Development Progress

βœ… First step completed: hello_wayland.c skeleton created and successfully tested.

This minimal Wayland client creates a surface and confirms the connection to the compositor.
See file

βœ… Version 02 : SHM buffer allocation + drawing

Basic shared memory buffer rendering implemented.
See file

βœ… Version 03 : Cairo-based text rendering

Text rendering using Cairo integrated with Wayland SHM buffers.
See file

βœ… Version 04 : Modular rendering architecture - widget prototype

  - real-time rendering (tick-based redraw)       
  - double buffering       
  - modular architecture       
  - dynamic system information (Time, CPU, RAM)       
  - transparency and alpha blending       

See files

βœ… Version 05 milestone: system widgets and window interaction Features introduced:

  - Cairo graphics and text rendering
  - system monitoring modules
  - modular widgets
  - configuration system
  - graphs and progress bars
  - drag-to-move window support (xdg_move)       

See files

Architecture Overview

               Wayland Compositor
                       β”‚
                       β–Ό
               Wayland Client
             (wayland_movable.c)
                       β”‚
                       β–Ό
               SHM Buffer System
            (shared memory buffers)
                       β”‚
                       β–Ό
                Cairo Renderer
       β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
       β–Ό               β–Ό               β–Ό     
  Shapes / UI      Text Rendering     Graphs      
(cairo_graphics)   (cairo_text)     (progress/graphs)       
       β”‚               β”‚               β”‚       
       β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜        
                       β”‚      
                       β–Ό       
                   Widgets       
        (combine graphics + text + data)
                       β”‚
                       β–Ό
               System Information
      CPU / RAM / GPU / Network / Storage

πŸ”œ

πŸ–Ό Screenshots / Demos

Wayland_SHM

πŸ“„ View README


Wayland_SHM_Cairo_text

πŸ“„ View README


Wayland_SHM_Cairo_widget_prototype

πŸ“„ View README


Wayland_movable

πŸ“„ View README


πŸ“š References


πŸ“ Note

This project is intended as a personal experiment and community contribution. There is no guarantee that everything will work immediately, but every step forward is welcome.

About

Experimental Wayland backend for Conky, enabling Lua gauges and graphical widgets on modern compositors. For Plasma, Sway, Hyprland, etc. It will be open to contributors once there is a functional basis. For now, it is being used for experimenting with Wayland.

Resources

Contributing

Stars

4 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages