ZeroTier Desktop Tray Application and UI

Related tags

gui networking zerotier
Overview

ZeroTier Desktop Tray Application and User Interface

This is (as of ZeroTier 1.8) the system tray application and user interface for controlling a local ZeroTier service on Windows, Mac, and (soon) Linux systems.

It runs a very tiny tray application that displays service status, network status, and allows some basic configuration operations, and then launches a system web view container when the user wishes to display a full control panel. The web view dies when this window is closed, so unlike Electron-based or other web technology based system tray apps it does not hog memory while idle.

Plumbing and tray application glue code is written in Rust. UI control panels are written using React and ElasticUI.

Building

Only MacOS and Windows are currently supported. Linux may build but there are still outstanding issues. We're working on full Linux support at least for popular Linux desktop environments that support relatively standard tray application APIs.

Building the full HTML/JS/CSS UI bundle is a bit cumbersome but is only required if you make changes to the source code or themes under the ui directory. A pre-built copy of the UI is shipped in the repository to make simple builds easier and significantly faster.

MacOS

Prerequisites

  • Rust (and cargo) with targets x86_64-apple-darwin and aarch64-apple-darwin installed to enable universal binaries to be built.
  • Xcode with standard command line tools and SDKs.
  • We ship the JavaScript UI bundle pre-built. If you want to modify the JavaScript parts of the UI you need:
    • NodeJS (we use the Node package from Homebrew)
    • The yarn package manager for NodeJS.

To build on MacOS you should just be able to type make from the project root. If all the necessary dependencies are present it should build a ZeroTier.app application in the current directory.

To rebuild the UI, change into ui/ and type yarn install (this is needed only once) and yarn build. As discussed above this is optional and is only needed if you make control panel UI changes.

Windows

Prerequisites

  • Rust (and cargo) with targets x86_64-pc-windows-msvc and i686-pc-windows-msvc installed.
  • Microsoft Visual Studio (we use 2019) with both 32-bit and 64-bit X86 targets and with appropriate desktop application SDKs.
  • GCC/G++ with support for both 64-bit and 32-bit builds (we use the linked distribution). Yes, we need both Visual Studio and GCC with GNU make.

To build native applications for Windows, just type make. This assumes that GNU make, GCC, and Cargo are in your path. The result will be two native EXEs in target\x86_64-pc-windows-msvc\release and target\i686-pc-windows-msvc\release. We plan to add native support for Windows on ARM64 soon, both for this UI application and for ZeroTier itself.

Building the web bundle part of the UI on Windows has never been done and those tool chains tend to be unfriendly to Windows. We recommend doing yarn build stuff in Linux or MacOS. It should work in the Linux subsystem for Windows. As mentioned above we ship this pre-built to make builds easy if you don't need to modify the JavaScript code.

Linux, FreeBSD, Other Open Source Desktops

Coming soon.

Directly Incorporated Third Party Code

The ZeroTier desktop UI uses forked and slightly modified versions of the following third party code:

  • Tray by Serge Zaitsev, forked to slightly modify behavior in regard to loop timeouts and Mac application settings. We also manually applied a pull request that fixes builds on ARM64 MacOS. (Retains the MIT license.)
  • Rust web-view by multiple contributors, forked to modify Mac application behavior and add some custom functionality around copy/paste. (Retains the MIT license.)

Other third party dependencies are included in the normal way. See Cargo.toml and ui/package.json for these.

License

The main UI code in src and ui is copyright ZeroTier, Inc. and is licensed under the Mozilla Public License (MPL) version 2.0.

Code in tray and web-view is licensed under the MIT license, which is the original license used by the upstream projects.

Owner
ZeroTier, Inc.
Directly Connecting the World's Devices with Universal Software Defined Networking
ZeroTier, Inc.
A tray icon to uwuify your text

uwu-tray fastest uwuifier in the west... now in your system tray for even faster uwufication! FAQ Which platforms are supported? Windows Linux MacOS H

Catherine Gilbert 25 Aug 30, 2021
Better GNOME Desktop Experience

Better GNOME Desktop Experience Tired of having the best feeling DE with the worst defaults? This app is for you. Transform the default GNOME look to:

Dimitar Dimitrov 3 Sep 12, 2021
SixtyFPS is a toolkit to efficiently develop fluid graphical user interfaces for any display: embedded devices and desktop applications. We support multiple programming languages, such as Rust, C++ or JavaScript.

SixtyFPS is a toolkit to efficiently develop fluid graphical user interfaces for any display: embedded devices and desktop applications. We support multiple programming languages, such as Rust, C++ or JavaScript.

SixtyFPS 1.9k Sep 14, 2021
A interface for Rust to interact with the taskbar

Taskbar_interface A Rust library to communicate with the desktop taskbar, featuring: Show a progress indicator in your app taskbar button. Highlight y

null 17 Sep 2, 2021
Build smaller, faster, and more secure desktop applications with a web frontend.

TAURI Tauri Apps footprint: minuscule performance: ludicrous flexibility: gymnastic security: hardened Current Releases Component Descrip

Tauri 22.1k Sep 12, 2021
Desktop GUI Framework

Azul - Desktop GUI framework WARNING: The features advertised in this README may not work yet. Azul is a free, functional, immediate mode GUI framewor

Maps4Print 4.8k Sep 16, 2021
Experimental embedder for Flutter

NativeShell (Experimental embedder for Flutter) Features Leverages existing Flutter desktop embedder on each platform Unlike Flutter desktop embedders

NativeShell 317 Sep 19, 2021
Rust bindings for Sciter

Rust bindings for Sciter Check this page for other language bindings (Delphi / D / Go / .NET / Python / Rust). Introduction Sciter is an embeddable mu

Terra Informatica Software, Inc 605 Sep 17, 2021
A data-first Rust-native UI design toolkit.

Druid A data-first Rust-native UI toolkit. Druid is an experimental Rust-native UI toolkit. Its main goal is to offer a polished user experience. Ther

null 4.5k Sep 13, 2021
Build beautiful desktop apps with flutter and rust. 🌠 (wip)

flutter-rs Build flutter desktop app in dart & rust. Get Started Install requirements Rust flutter sdk Develop install the cargo flutter command cargo

null 1.8k Sep 14, 2021
Dear ImGui: Bloat-free Graphical User interface for C++ with minimal dependencies

Dear ImGui (This library is available under a free and permissive license, but needs financial support to sustain its continued improvements. In addit

omar 31.8k Sep 14, 2021
The Rust UI-Toolkit.

The Orbital Widget Toolkit is a cross-platform (G)UI toolkit for building scalable user interfaces with the programming language Rust. It's based on t

Redox OS 3.3k Sep 15, 2021
This project attempts to allow the creation of reusable egui-themes

egui stylist Note this project is considered to be experimental and -- while used in personal projects -- may have API breaking changes without warnin

Jacobsky 3 Sep 13, 2021
AccessKit: UI accessibility infrastructure across platforms and programming languages

AccessKit: UI accessibility infrastructure across platforms and programming languages Motivation There are numerous UI toolkits, and new ones continue

null 155 Sep 13, 2021
The bindings to the Nuklear 2D immediate GUI library.

nuklear-rust The bindings to the Nuklear 2D immediate GUI library. Currently beta. Drawing backends: gfx-pre-ll for GFX 3D drawing engine (examples: O

Serhii Plyhun 321 Aug 9, 2021
Truly cross platform, truly native. multiple backend GUI for rust

WIP: Sauron-native a rust UI library that conquers all platforms ranging from desktop to mobile devices. An attempt to create a truly native, truly cr

Jovansonlee Cesar 613 Sep 8, 2021
A cross-platform GUI library for Rust focused on simplicity and type-safety

A cross-platform GUI library for Rust, inspired by Elm

Héctor Ramón 11.3k Sep 17, 2021
A cross-platform GUI library for Rust, inspired by Elm

Iced A cross-platform GUI library for Rust focused on simplicity and type-safety. Inspired by Elm. Features Simple, easy-to-use, batteries-included AP

Héctor Ramón 11.3k Sep 13, 2021
Rust bindings for the FLTK GUI library.

fltk-rs Rust bindings for the FLTK Graphical User Interface library. The FLTK crate is a crossplatform lightweight gui library which can be statically

Mohammed Alyousef 440 Sep 12, 2021