An open API service indexing awesome lists of open source software.

https://github.com/amnweb/yasb-gui

YASB GUI is a native configuration application for YASB Reborn. Built with WinUI 3, it provides a modern interface for managing your status bar configuration without manually editing YAML files.
https://github.com/amnweb/yasb-gui

ricing status-bar top-bar topbar windows yasb yasb-gui yasb-reborn

Last synced: 4 days ago
JSON representation

YASB GUI is a native configuration application for YASB Reborn. Built with WinUI 3, it provides a modern interface for managing your status bar configuration without manually editing YAML files.

Awesome Lists containing this project

README

          

# YASB GUI


YASB GUI

**YASB GUI** is a native configuration application for [YASB Reborn](https://github.com/amnweb/yasb) (Yet Another Status Bar). Built with WinUI 3, it provides a modern interface for managing your status bar configuration without manually editing YAML files.

> **Note:** This application is currently in **beta**. Some features may be incomplete or subject to change. Please report any issues on the [GitHub Issues](https://github.com/amnweb/yasb-gui/issues) page.

**Why a separate repository?**
- YASB GUI is maintained separately from YASB for several reasons:
- Built with WinUI 3, which requires Windows App SDK dependencies not needed by YASB itself
- Keeps YASB lightweight and focused on its core functionality without GUI framework bloat
- Allows independent development cycles and easier maintenance for both projects
- Users who prefer manual YAML editing don't need to install unnecessary GUI dependencies

---







Discord

---

## Features

**Visual Configuration Editor**
- Edit bars, widgets, and global settings through an intuitive interface
- Monaco-based code editor with YAML syntax highlighting and validation
- Real-time schema validation for configuration files

**Widget Management**
- Add, remove, and configure widgets with a visual editor
- Support for all YASB widget types
- Widget-specific settings panels

**Styles Editor**
- Built-in CSS editor for customizing your status bar appearance
- Syntax highlighting and auto-completion

**Environment Variables**
- Manage environment variables used by YASB
- Easy key-value editing interface

**Application Settings**
- Light, Dark, and System theme support
- Multiple backdrop options: Mica, Mica Alt, and Acrylic
- Multi-language support

**Safety Features**
- Export configuration as ZIP backup
- Unsaved changes detection with confirmation dialogs
- Configuration validation before save

---

## System Requirements

| Component | Requirement |
|-----------|-------------|
| Operating System | Windows 10 (Build 17763+) or Windows 11 |
| Runtime | [Windows App SDK Runtime](https://learn.microsoft.com/en-us/windows/apps/windows-app-sdk/downloads) |
| WebView | Microsoft Edge WebView2 Runtime (included with Windows 10/11) |

---

## Installation

Download the latest release from the [Releases](https://github.com/amnweb/yasb-gui/releases) page.

### Add a widget using a docs snippet (how it actually works)
1) Go to **Widgets** → **Add Widget**.
2) Pick the widget from the built-in list.
3) In the **Options** editor, paste only the options block from the docs-not the outer `widgets:` list. Real example (Weather widget) with nested options and indentation kept:
```yaml
label: "{icon} {temp}"
label_alt: "{location}: Min {min_temp}, Max {max_temp}"
api_key: "YOUR_API_KEY"
show_alerts: true
tooltip: true
update_interval: 600
hide_decimal: true
units: metric
menu:
blur: true
round_corners: true
round_corners_type: normal
border_color: system
alignment: center
direction: down
offset_top: 6
offset_left: 0
icons:
sunnyDay: "\ue30d"
clearNight: "\ue32b"
cloudyDay: "\ue312"
cloudyNight: "\ue311"
rainyDay: "\ue318"
rainyNight: "\ue318"
snowyIcy: "\ue31a"
default: "\ue137"
callbacks:
on_left: toggle_menu
```
4) Save the widget, then hit **Apply** so YASB reloads the updated config.

> **Tips**
>
> Copy only the options section from the docs and paste it into the Options editor; the widget type is already set by your selection.
>
> If indentation looks off, right-click in the editor and choose **Fix indentation** from the context menu.

---

## Configuration

The application reads and writes YASB configuration from:
- `~/.config/yasb/config.yaml`
- `~/.config/yasb/styles.css`

To use a custom location, set the `YASB_CONFIG_HOME` environment variable.

---

## Contributing Translations

YASB GUI supports multiple languages. Translation files are located in `app/core/locales/`.

**To add a new language:**
1. Copy `en.json` and rename it using the language code (e.g., `fr.json` for French)
2. Update `_language_name` and `_language_code` at the top of the file
3. Translate all string values while keeping the keys unchanged
4. Do not modify placeholders (e.g., `{variable}`) within the strings
5. Do not chnage the JSON structure
6. Submit a pull request

---

## Building from Source

### Development Setup
```bash
git clone https://github.com/amnweb/yasb-gui.git
cd yasb-gui
pip install -e .
python app/main.py
```

### Building Executable
```bash
pip install .[build]
python app/scripts/build.py build
```
The executable will be created in the `dist/` directory.

### Building MSIX Package
After building the executable, you can create an MSIX package:
```bash
python app/scripts/build_msix.py
```
The MSIX will be created in the `msix/` directory.

**Options:**
- `--arch x64|aarch64` - Target architecture (default: x64)
- `--output ` - Output directory for MSIX

### Local Development (Unsigned MSIX)
For local testing without code signing, register the package in development mode:
```powershell
# Register the package (runs from extracted layout, not the .msix file)
Add-AppxPackage -Path "msix/layout/AppxManifest.xml" -Register

# Launch the app
Start-Process "shell:AppsFolder\YASB.GUI_wbnnev551gwxy!App"

# Uninstall when done
Get-AppxPackage -Name "YASB.GUI" | Remove-AppxPackage
```

### Local Signing (Optional)
To test with a signed MSIX locally, create a self-signed certificate:
```powershell
# Create a self-signed certificate (run once)
$cert = New-SelfSignedCertificate -Type Custom -Subject "CN=YourName" `
-KeyUsage DigitalSignature -FriendlyName "YASB GUI Dev" `
-CertStoreLocation "Cert:\CurrentUser\My" `
-TextExtension @("2.5.29.37={text}1.3.6.1.5.5.7.3.3")

# Export to PFX (set a password)
$pwd = ConvertTo-SecureString -String "YourPassword" -Force -AsPlainText
Export-PfxCertificate -Cert $cert -FilePath "dev-cert.pfx" -Password $pwd

# Trust the certificate (required to install signed packages)
Import-Certificate -FilePath (Export-Certificate -Cert $cert -FilePath "dev-cert.cer") `
-CertStoreLocation "Cert:\LocalMachine\TrustedPeople"

# Sign the MSIX
& "C:\Program Files (x86)\Windows Kits\10\bin\10.0.22621.0\x64\signtool.exe" sign `
/fd SHA256 /a /f "dev-cert.pfx" /p "YourPassword" "msix\yasb-gui-0.0.2-x64.msix"

# Install the signed MSIX
Add-AppxPackage -Path "msix\yasb-gui-0.0.2-x64.msix"
```

> **Note:** Update the Publisher in `build_msix.py` to match your certificate's CN if signing locally.

---

## Support the Project

If you find YASB GUI useful, consider supporting its development:

[![GitHub Sponsors](https://img.shields.io/badge/Sponsor-GitHub-ea4aaa?logo=github)](https://github.com/sponsors/amnweb)
[![Ko-fi](https://img.shields.io/badge/Support-Ko--fi-ff5e5b?logo=ko-fi)](https://ko-fi.com/amnweb)

Your support helps maintain and improve the project.