Plugin for Rainmeter: Making widgets using web technology

Related tags

GUI PluginWebView
Overview

PluginWebView

Plugin to take advantage of Microsoft Edge WebView2 to display web content on a skin.

  • WebView window is attached into skin window so all skin configuration is respected (position, Z index, transparency,...)
  • Small memory usage and extremely fast skin loading time
  • Natively retrieve other Rainmeter measures' and plugins' values in JavasSript runtime
  • Web renderer provides unlimited rendering capabilites. And there are massive widget resources from the internet (Codepen, CSSHint.com, ...) that you customsize and make them functional

In example skins package, I demostrated how to setup WebView plugin measure and skin window to contain WebView window correctly.

Skin "player" and "visualizer" show how RainmeterAPI object is used to get AudioLevel and WebNowPlaying plugins values. Skin "visualizer", "Miku" and "Minecraft" show 3D render capability. Note that they are for fun only, 3D rendering usew too much CPU and RAM. "visualiser" is also interactable with mouse (zoom, pan, move)

All of these widgets are downloaded from the internet, I will credit their authors properly later.

pic1

Download

  • Download Example Skins package in Releases page to install skins + plugin.
  • In first plugin load, it will prompt you to download and install WebView2 runtime if your Windows hasn't had it already. Click OK will open download link directly.

Documentation

Methods and properties of JavaScript object that are binded directly to their native objects

RainmeterAPI

Type Name Param Return Description
Method GetMeasure (sectionName: string) MeasureObject Get a measure object from its name
Method GetMeter (sectionName: string) MeterObject Get a meter object from its name
Method GetVariable (variableName: string) string Get a variable value
Method GetOption (optionName: string, replaceVariables: boolean) string Get a option of current Plugin measure
Method GetOption (optionName: string, replaceVariables: boolean) string Get a option of current Plugin measure
Method Bang (command: string) Send bang/bangs to skin
Method Log (message: string) Log a Notice message

MeasureObject

MeasureObject returned from a Rainmeter.GetMeasure call has these following methods and properties:

Type Name Param Return Description
Method GetString () string Get measure string value
Method GetNumber () number Get measure numberic value
Method GetOption (optionName: string, replaceVariables: boolean) string Get a option of measure
Method Command (command: string) Send a command to measure (similar to "!CommandMeasure" bang)
Method Update ()
Property (get, set) disabled boolean Whether measure is disabled
Property (get, set) paused boolean Whether measure is paused
Property (get, set) dynamicVariables boolean Whether measure should re-read its options every update

MeterObject

MeterObject returned from a Rainmeter.GetMeter call has these following methods and properties:

Type Name Param Return Description
Method GetOption (optionName: string, replaceVariables: boolean) string Get a option of meter
Method Update ()
Property (get, set) hidden boolean Whether meter is hidden
Property (get, set) dynamicVariables boolean Whether meter should re-read its options every update
Property (get, set) x int Meter X position
Property (get, set) y int Meter Y position
Property (get, set) width int Meter width
Property (get, set) height int Meter height

demo2

Development

  1. Clone Rainmeter repo and PluginWebView repo
git clone https://github.com/rainmeter/rainmeter
git clone https://github.com/khanhas/PluginWebView
  1. Open Rainmeter solution in Visual Studio
  2. Add PluginWebView project into Rainmeter solution
  3. Build PluginWebView only, you don't need to build Rainmeter.
  4. Copy WebView.dll to %appdata\Rainmeter\Plugins
You might also like...
Electron framework lets you write cross-platform desktop applications using JavaScript, HTML and CSS.
Electron framework lets you write cross-platform desktop applications using JavaScript, HTML and CSS.

📝 Available Translations: 🇨🇳 🇧🇷 🇪🇸 🇯🇵 🇷🇺 🇫🇷 🇺🇸 🇩🇪 . View these docs in other languages at electron/i18n. The Electron framework lets

wxWidgets is a free and open source cross-platform C++ framework for writing advanced GUI applications using native controls.
wxWidgets is a free and open source cross-platform C++ framework for writing advanced GUI applications using native controls.

About wxWidgets is a free and open source cross-platform C++ framework for writing advanced GUI applications using native controls. wxWidgets allows y

AxeraVision / Simple yet customizable UI using ImGui Framework
AxeraVision / Simple yet customizable UI using ImGui Framework

[ AxeraVision UI ] This repository features a base UI using the ImGui Framework. Features Simple UI Design Easy Code to Customize Good Starting Base U

A Flutter package that two widgets switch with clipper.
A Flutter package that two widgets switch with clipper.

flutter_switch_clipper A Flutter package that two widgets switch with clipper. 1.使用 SwitchCipper( initSelect: true, child: const Icon(Icons.fa

A Proof-of-concept of embedding Qt widgets into QML.
A Proof-of-concept of embedding Qt widgets into QML.

QQuickWidgetContainer It helps you embed Qt widgets into QML. Limitations and Disclaimer This is a proof-concept of bridging QWidget-based window syst

Library for creating terminal applications with text-based widgets
Library for creating terminal applications with text-based widgets

Library for creating terminal applications with text-based widgets FINAL CUT is a C++ class library and widget toolkit with full mouse support for cre

Addon widgets for GUI library Dear ImGui.
Addon widgets for GUI library Dear ImGui.

ImGui-Addons Addon widgets for GUI library Dear ImGui. File Dialog A simple cross-platform file dialog that uses dirent interface for reading director

Widgets for imgui

ImGuiAl Some widgets for imgui. Widgets Log: A complete logger, with different colors for different message priorities and filters. Fonts: Extra fonts

This is a collection of widgets and utilities for the immediate mode GUI (imgui) that I am developing for the critic2 GUI
This is a collection of widgets and utilities for the immediate mode GUI (imgui) that I am developing for the critic2 GUI

ImGui Goodies This is a collection of widgets and utilities for the immediate mode GUI (imgui) that I am developing for the critic2 GUI. Currently, th

An OBS plugin for removing background in portrait images (video), making it easy to replace the background when screen recording.
An OBS plugin for removing background in portrait images (video), making it easy to replace the background when screen recording.

OBS Plugin: Background Removal Introduction Building MacOSX Linux / Ubuntu Windows Download Check out the latest releases for downloads and install in

This repository is a summary of the basic knowledge of recruiting job seekers and beginners in the direction of C/C++ technology, including language, program library, data structure, algorithm, system, network, link loading library, interview experience, recruitment, recommendation, etc.
This repository is a summary of the basic knowledge of recruiting job seekers and beginners in the direction of C/C++ technology, including language, program library, data structure, algorithm, system, network, link loading library, interview experience, recruitment, recommendation, etc.

📚 C/C++ 技术面试基础知识总结,包括语言、程序库、数据结构、算法、系统、网络、链接装载库等知识及面试经验、招聘、内推等信息。This repository is a summary of the basic knowledge of recruiting job seekers and beginners in the direction of C/C++ technology, including language, program library, data structure, algorithm, system, network, link loading library, interview experience, recruitment, recommendation, etc.

哈尔滨工业大学(深圳)计算机专业课程攻略 | Guidance for courses in Department of Computer Science, Harbin Institute of Technology (Shenzhen)

哈工大(深圳)计算机专业课程攻略 受浙江大学相关项目和清华大学相关项目启发,创立了本项目。 若要下载单个文件夹,复制该文件夹的网址,粘贴入DownGit中,选择Download即可。 感谢对本项目贡献的同学:第二届院学生会学术部全体成员、hewei2001、chh13502、xyfJASON、ail

🏢 An operating system that combine the desire of UNIX utopia from the 1970s with modern technology and engineering
🏢 An operating system that combine the desire of UNIX utopia from the 1970s with modern technology and engineering

Striking modernist shapes and bold use of modern C are the hallmarks of BRUTAL. BRUTAL combine the desire of UNIX utopia from the 1970s with modern te

42 is a global education initiative that proposes a new way of learning technology

42 is a global education initiative that proposes a new way of learning technology

As a Teaching Assistant, this is a sample project about socket programming for my teaching in a capstone course in NTUST(National Taiwan University of Science and Technology)

socket-programming As a Teaching Assistant, this is a sample project about socket programming for my teaching in a capstone course in NTUST(National T

A cross-platform SDK enabling developers to integrate real-time chat technology into their projects

4Players ODIN SDK ODIN is a cross-platform software development kit (SDK) that enables developers to integrate real-time chat technology into multipla

This is a product / project developed by a team of Five Members including Mithilesh Ghadge for the Engineering Clinics at Vellore Institute Of Technology

UltrasonicSensorGlasses-for-blind-people This is a product / project developed by a team of Five Members including Mithilesh Ghadge for the Engineerin

A completely free, open-source, 2D game engine built on proven torque technology.
A completely free, open-source, 2D game engine built on proven torque technology.

Torque2D 4.0 Early Access 1 MIT Licensed Open Source version of Torque2D from GarageGames. Maintained by the Torque Game Engines team and contribution

Free and Open Source API and drivers for immersive technology.

OpenHMD This project aims to provide a Free and Open Source API and drivers for immersive technology, such as head mounted displays with built in head

Comments
  • Pretty Nice -> But in my case not working as expected - getMeasure fails

    Pretty Nice -> But in my case not working as expected - getMeasure fails

    First of all: This is a great plugin, thank you for that

    I've currently have some issues on every plugin that use "getMeasure" -> It just throw "Cant find measure" in Rainmeter and also fails in the javascript (because of the same error)

    Another question: Is there any option to move (drag) a widget on desktop (something like middle mouse button and drag or something - Because of the way how it's implemented it makes sense that the left mouse button dont works to drag)

    Thank you very much :-)

    opened by LORDofDOOM 3
Owner
null
Addon widgets for GUI library Dear ImGui.

ImGui-Addons Addon widgets for GUI library Dear ImGui. File Dialog A simple cross-platform file dialog that uses dirent interface for reading director

null 286 Jan 7, 2023
This is a collection of widgets and utilities for the immediate mode GUI (imgui) that I am developing for the critic2 GUI

ImGui Goodies This is a collection of widgets and utilities for the immediate mode GUI (imgui) that I am developing for the critic2 GUI. Currently, th

null 95 Nov 19, 2022
Making a GUI for lima VM

System Tray Icon Running Open in Qt Creator GUI: qtcreator systray.pro Or on the command line: $ qmake $ make ... $ ./lima-gui Screenshots Main window

Anders Björklund 81 Dec 22, 2022
DeskGap is a framework for building cross-platform desktop apps with web technologies (JavaScript, HTML and CSS).

A cross-platform desktop app framework based on Node.js and the system webview

Wang, Chi 1.8k Jan 4, 2023
Pure Data as a plugin, with a new GUI

PlugData Pure Data as a plugin, with a new GUI PlugData a plugin wrapper for PureData, featuring a new GUI made with JUCE. Currently not very stable!

Timothy Schoen 783 Jan 4, 2023
A SwiftUI TextEditor with syntax highlighting using Highlight.js

A SwiftUI TextEditor with syntax highlighting using Highlight.js

ZeeZide 271 Jan 8, 2023
A lightweight modern C++11 library for Win32 API, using lambdas to handle Windows messages.

WinLamb A lightweight modern C++11 library for Win32 API, using lambdas to handle Windows messages. Overview Setup Example Classes summary License 1.

Rodrigo 239 Dec 28, 2022
A wallpaper changer using Wallhaven api. Written with C++/CLR, only 0.5 MB and have a GUI.

WHaven Wallpaper WHaven Wallpaper is a desktop wallpaper change program for change your wallpapers directly from wallhaven. Features You have a search

null 2 Aug 1, 2022
An integrated information center created with dear ImGui using modern C++ design / coding style.

ImGui info-center Introduction An integrated notification and information center created with dear ImGui. Interfaces and variables are designed under

Feej 7 Oct 29, 2022
A powerful and fast search tool using regular expressions

A powerful and fast search tool using regular expressions

Stefan Küng 1.3k Jan 8, 2023