https://github.com/cosmic-utils/gui-scale-applet
COSMIC applet for Tailscale
https://github.com/cosmic-utils/gui-scale-applet
Last synced: about 1 month ago
JSON representation
COSMIC applet for Tailscale
- Host: GitHub
- URL: https://github.com/cosmic-utils/gui-scale-applet
- Owner: cosmic-utils
- License: bsd-3-clause
- Created: 2024-10-03T15:34:08.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2026-05-01T21:38:58.000Z (about 1 month ago)
- Last Synced: 2026-05-01T23:27:21.152Z (about 1 month ago)
- Language: Rust
- Size: 20.6 MB
- Stars: 60
- Watchers: 2
- Forks: 5
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
README
# GUI Scale COSMIC Desktop Applet
## About
A secure, memory-safe implementation of a Tailscale GUI management applet for the System76 COSMIC desktop environment. This project demonstrates secure systems programming practices while providing essential functionality for Tailscale network (tailnet) management.
### Project Overview
The GUI Scale applet provides a user-friendly interface for managing Tailscale configurations within the COSMIC desktop environment. It showcases secure systems programming practices while maintaining high usability standards.
### Key Features
- Secure Tailscale network (tailnet) management
- Memory-safe implementation in Rust
- Utilizes Rust's ownership system for memory-safety operations
- No unsafe code blocks used
- All external data properly validated
- Buffer overflow protection through Rust's bounds checking
- Comprehensive error handling
- Integration with system security policies
- Proper permission handling for system operations
- Does not run while the Tailscale operator configuration is set to root.
- Minimal system privilege requirements
- Does not run as root
### Security Architecture
The applet implements a layered security approach:
1. Privilege Management
- Minimal required permissions
- Proper capabilitiy isolation
2. Error Handling
- Uses Rust's built-in error types (Result and Option), as well as return other types, such as String and bool, to test for and handle any errors that occurred during runtime
- No information leakage
## Dependencies
You must first have Tailscale installed and then run:
```bash
sudo tailscale set --operator=$USER
```
This makes it where the applet doesn't need sudo (root) to do its job.
## Screenshots




## Installation
### From GitHub Release
1. Download the `gui-scale-applet.flatpak` bundle from the [Releases](https://github.com/cosmic-utils/gui-scale-applet/releases) page.
2. Install the required runtime dependency:
```bash
flatpak install --user flathub org.freedesktop.Platform//24.08
```
3. Install the flatpak bundle:
```bash
flatpak install --user gui-scale-applet.flatpak
```
### Build from Source
1. Clone the repository:
```bash
git clone https://github.com/cosmic-utils/gui-scale-applet.git
cd gui-scale-applet
git checkout flatpak
```
2. Build and install:
```bash
just install-local
```
Or to create a distributable bundle:
```bash
just bundle
```
## Uninstall
```bash
flatpak uninstall --user com.bhh32.gui-scale-applet
```