Skip to content

Repository files navigation

Konky

Conky-style system monitoring widget for KDE Plasma 6+

Konky Overview

Konky brings the beloved Conky system monitoring aesthetic to KDE Plasma 6. It provides real-time CPU, RAM, disk, network, GPU, temperature, battery, weather, and clock modules — all rendered in sleek QML with configurable themes and layouts.

✨ Features

  • System Monitoring — CPU (total + per-core), RAM, disk, network, GPU, thermal sensors, battery
  • Weather — Open-Meteo based weather with location geocoding (no API key required)
  • Clock — Real-time clock display
  • Process Monitor — Top processes by CPU/memory usage
  • Multiple Display Types — Ring, bar, line charts, sparkline, combined views
  • Themes — Dark, Light, Cyber-Blue, Matrix-Green (easily extensible)
  • Layouts — Vertical, horizontal, and grid arrangements
  • Panel + Desktop — Compact representation for system tray panel, full representation for desktop widget
  • Conky-Compatible Config — JSON-based module configuration inspired by Conky's declarative style
  • Sensor History — Rolling history buffer for sparkline/graph rendering
  • KDE Native — Built on KSystemStats, Kirigami, and Plasma 6 APIs — no external daemons

📸 Screenshots

View Path
Full desktop widget (dark theme) screenshots/full-dark.png
Compact panel mode screenshots/compact.png
Grid layout (3 columns) screenshots/grid-layout.png
Cyber-blue theme screenshots/theme-cyber-blue.png
Matrix-green theme screenshots/theme-matrix-green.png
Configuration dialog screenshots/config-dialog.png

Screenshots are placeholders — add your own captures to the screenshots/ directory.

🚀 Installation

Method A: Git Clone + Install Script (Recommended)

# Clone the repository
git clone https://github.com/YOUR_USERNAME/konky.git
cd konky

# Check system dependencies
./install.sh --check-deps

# Install
./install.sh

# The widget should appear in the widget picker.
# To add it to your desktop: Right-click desktop → Add Widgets → Search "Konky"

Method B: KDE Store

  1. Right-click on your desktop or panel → Add Widgets...
  2. Click Get New Widgets...Download New Plasma Widgets
  3. Search for "Konky"Install
  4. Add the widget from the picker

Method C: Manual Copy

# Copy the package directory to your Plasma plasmoids folder
cp -r package/ ~/.local/share/plasma/plasmoids/com.github.konky/

# Restart Plasma to pick up the new widget
plasmashell --replace &

Uninstall

./install.sh --uninstall

⚙️ Configuration

Accessing Settings

Right-click the Konky widget → Configure Konky...

Configurable Options

Setting Description Default
Refresh Interval Sensor polling interval (ms) 2000
Layout Type vertical, horizontal, grid vertical
Theme konky-dark, konky-light, cyber-blue, matrix-green konky-dark
Font Family Display font Noto Mono
Font Size Display font size 10
Show Icons Toggle module icons true
Show Labels Toggle module labels true
Show Graphs Toggle sparkline/history graphs true
Grid Columns Number of columns (grid layout) 3
Switch Width Compact mode trigger width 200
Switch Height Compact mode trigger height 120

Module Toggles

Each module can be enabled/disabled individually:

  • CPU, RAM, Disk, Network (enabled by default)
  • GPU, Thermal, Battery, Clock, Weather, Process (disabled by default)

Weather Configuration

Setting Description Default
Weather Enabled Toggle weather module false
City Display city name Budapest
Latitude / Longitude Geolocation for Open-Meteo API 47.4979 / 19.0402

Advanced: modulesConfigJson

For fine-grained control, paste a JSON config into the Advanced → modulesConfigJson field:

{
  "layout": "vertical",
  "gridColumns": 3,
  "moduleSpacing": 10,
  "modules": [
    {
      "id": "cpu-main",
      "type": "cpu",
      "enabled": true,
      "order": 0,
      "label": "CPU",
      "displayType": "ring",
      "cpu": {
        "showPerCore": true,
        "showGraph": true,
        "color": "#00d4aa"
      }
    }
  ],
  "theme": {
    "name": "konky-dark",
    "colors": {
      "primary": "#00d4aa",
      "secondary": "#3d84ff"
    }
  }
}

See example-config.json for a complete configuration example.

Adding Custom Themes

  1. Open package/contents/ui/main.qml
  2. Find the applyTheme() function
  3. Add a new case block with your color scheme:
case "my-custom-theme":
    colorPrimary = "#ff00ff"
    colorSecondary = "#00ffff"
    // ... set all color properties
    break

🛠️ Development

Project Structure

com.github.konky/
├── metadata.json                  # Plasma widget metadata
├── install.sh                     # Install/uninstall script
├── example-config.json            # Full config example
├── package/
│   ├── contents/
│   │   ├── config/
│   │   │   ├── main.xml          # KConfig schema (settings)
│   │   │   └── config.qml        # Config dialog
│   │   └── ui/
│   │       ├── main.qml           # Root widget (data sources, routing)
│   │       ├── FullRepresentation.qml    # Desktop/full view
│   │       ├── CompactRepresentation.qml # Panel/tray view
│   │       ├── configGeneral.qml         # Settings page
│   │       ├── modules/
│   │       │   ├── ModuleCPU.qml
│   │       │   ├── ModuleRAM.qml
│   │       │   ├── ModuleDisk.qml
│   │       │   ├── ModuleNetwork.qml
│   │       │   ├── ModuleGPU.qml
│   │       │   ├── ModuleThermal.qml
│   │       │   ├── ModuleBattery.qml
│   │       │   ├── ModuleClock.qml
│   │       │   ├── ModuleWeather.qml
│   │       │   └── ModuleProcess.qml
│   │       ├── components/
│   │       │   ├── KonkySection.qml
│   │       │   ├── KonkyLabel.qml
│   │       │   ├── KonkyIcon.qml
│   │       │   └── KonkyDivider.qml
│   │       ├── charts/
│   │       │   ├── ChartBar.qml
│   │       │   ├── ChartLine.qml
│   │       │   ├── ChartRing.qml
│   │       │   └── ChartSparkline.qml
│   │       └── layout/
│   │           ├── LayoutHorizontal.qml
│   │           ├── LayoutVertical.qml
│   │           └── LayoutGrid.qml
│   └── weather/
│       └── WeatherFetcher.js      # Open-Meteo API client
│   └── example-config.json        # Config copy in package

How to Add a New Module

  1. Create the module QML file in package/contents/ui/modules/ModuleCustom.qml:

    // ModuleCustom.qml
    import QtQuick 2.15
    
    Item {
        id: moduleCustom
        property var data: ({})
    
        // Your module UI here
        Text {
            text: "Custom: " + (data.value || "")
            color: "#00d4aa"
        }
    }
  2. Add the data source in main.qml:

    • Add a property to store the sensor data
    • Add to connectSensorSources() in Component.onCompleted
    • Route the data in onNewData
  3. Render the module in FullRepresentation.qml / CompactRepresentation.qml:

    import "modules/ModuleCustom.qml"
    // ...
    ModuleCustom { data: sensorData["custom/sensor"] }
  4. Add config entries in package/contents/config/main.xml:

    <entry name="moduleCustom" type="Bool">
        <default>false</default>
    </entry>
  5. Test: Re-run ./install.sh and restart plasmashell.

QML Best Practices

  • Use property declarations for data binding — avoid imperative state changes
  • Keep modules self-contained — pass data via properties, not global references
  • Use Plasmoid.configuration.* for settings — don't hardcode values
  • Separate concerns: data routing in main.qml, display in representation QML
  • Use Timer for polling, not onCompleted loops

📋 Requirements

  • KDE Plasma 6.0+
  • Qt 6.0+
  • KSystemStats (shippped with Plasma 6)
  • Kirigami framework
  • Internet connection (weather module only)

📄 License

MIT License — see LICENSE for details.

🙏 Credits

  • Conky — The original system monitor that inspired this project. Konky brings the Conky philosophy to KDE Plasma.
  • Open-Meteo — Free weather API used for the weather module.
  • KDE Community — For the Plasma framework, KSystemStats, and Kirigami.

🐛 Bug Reports & Feature Requests

Please open an issue on GitHub:

  • Bug: Include Plasma version, Qt version, error logs (journalctl --user -u plasmashell)
  • Feature: Describe the use case and any mockup/screenshots if applicable

About

KDE Plasma 6 widget with Conky-style system monitoring

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages