Cross-platform application window creation library in Rust that supports all major platforms like

Windows, macOS, Linux, iOS and Android

Cross-platform application window creation library in Rust that supports all major platforms like Windows, macOS, Linux, iOS and Android. Built for you, maintained for Tauri.

Cargo Features

Tao provides the following features, which can be enabled in your Cargo.toml file:

  • serde: Enables serialization/deserialization of certain types with Serde.
  • tray: Enables system tray and more menu item variants on Linux. This feature requires either libayatana-appindicator or libappindicator package installed. You can still create those types if you disable it. They just don't create the actual objects. We set this flag because some implementations require more installed packages.

Platform-specific notes

Android

This library makes use of the ndk-rs crates, refer to that repo for more documentation.

Running on an Android device needs a dynamic system library, add this to Cargo.toml:

And add this to the example file to add the native activity glue:

And run the application with cargo apk run --example request_redraw_threaded

Linux

Gtk and its related libraries are used to build the support of Linux. Be sure to install following packages before building:

Arch Linux / Manjaro:

For tray feature:

Debian / Ubuntu:

For tray feature, choose one of following pachages:

MacOS

To ensure compatibility with older MacOS systems, tao links to CGDisplayCreateUUIDFromDisplayID through the CoreGraphics framework. However, under certain setups this function is only available to be linked through the newer ColorSync framework. So, tao provides the TAO_LINK_COLORSYNC environment variable which can be set to 1 or true while compiling to enable linking via ColorSync.

Acknowledgement

This is a fork of winit which replaces Linux's port to Gtk. We need it not only because of webkit2gtk, but also a lot of Desktop Environment features like menu bar, system tray, global shortcuts etc. In the future, we want to make these features more modular as separate crates. So we can switch back to winit and also benefit the whole community.

Issues

Collection of the latest Issues

tauri-bot

tauri-bot

type: feature request
0

This issue has been upstreamed from https://github.com/tauri-apps/tauri/issues/4208

Describe the problem

It's a shame that Tauri doesn't have an API similar to Electron's Progress Bar, it's very useful for showing progress in minimized windows.

Describe the solution you'd like

An API similar to the Electron one, or even a Tao method that we could invoke in Rust code to set the progress quickly.

Alternatives considered

No response

Additional context

No response

Hupka

Hupka

0

Hey folks,

I need a feature in Tauri, and I am attempting to work my way upstream through the libraries which Tauri builds upon.

Context

I need Tauri/Tao windows to behave like NSPanel in macOS. NSPanel is not part of the core-foundation/cocoa library, wherefore I am working to contribute there (core-foundation/#511). The change is relatively straightforward and has already been tested successfully. 👌🏻

I am now investigating how Tao is working with the cocoa crate to instantiate windows. And happened to find a code block from 5 years ago [❗Implemetation today] that seems to actually subclass NSWindow introducing the class TaoWindow. For this subclass, the methods canBecomeMainWindow and canBecomeKeyWindow are overwritten to always return yes. Strangely, this is the default behavior of NSWindow 🤔 .

Q1: Is Tao here actually subclassing NSWindow overwriting default behavior? Or is it just potentially rewriting responses coming from macOS when calling the methods listed there?

Goal

I want to help make the contribution needed to allow Tao to spawn views as either NSWindow or NSPanel.

Solution

Because of the questions I wrote about above, it is unclear how to proceed. Early investigations made me consider introducing a new field in PlatformSpecificWindowBuilderAttributes to spawn a window in either an NSWindow or NSPanel. Theoretically, the code change would be minimal if the underlying core-foundation/cocoa library provides this class. NSPanelshares all methods of NSWindow, wherefore no breaking changes would be introduced. NSPanel introduces three additional methods which, for the time being, could be just invoked directly on the ns_window().

If I get some guidance on how to conceptually introduce such changes, I'm offering to make the contribution myself. 🤓

kkoomen

kkoomen

platform: Linux
2

Describe the problem

Currently, the API can only read out the current system theme on Windows, but not on MacOS.

The following code below will result in light even though I'm in dark mode.

Describe the solution you'd like

This should work on MacOS as well.

Alternatives considered

None.

Additional context

N/A

idlist

idlist

type: bug
0

Firstly mentioned in tauri#3040 and also in #376.

That is to say, when hover the cursor inside the dragging room of resizing operation on the border of a frameless window, the cursor would quickly flicker between "default" and "two-sided arrow", and making it somewhat hard to identify if I can resize the window with current cursor position (since sometimes the cursor would be "default" when I stop moving it inside the dragging room). This behavior is more obvious on screen with high DPI scaling factor.

This GIF shows the flickering when moving the cursor outside of the window (the window is on the left of the CSS border line). The behavior could be also observed when moving cursor into the window. flickering1

This GIF shows the possible confusion brought by the issue. In this case, the cursor shows "default" inside the dragging room instead of "two-sided arrows", and when I click on the position (yellow circle indicates when I click) I can actually drag the border but I may treat it as I cannot. flickering2

TheDarkula

TheDarkula

0

I have an initial discussion with @joseluisq here

I am trying to compile a project that depends on tao.

The issue comes down to building the carbon_hotkey files.

On a macos-latest machine, I ran these two steps:

This outputs the same error when trying to compile on linux. The message from the runner job is this:

Is there something simple I am missing here?

tauri-bot

tauri-bot

type: bug
2

This issue has been upstreamed from https://github.com/tauri-apps/tauri/issues/3990

Describe the bug

On Windows 11, when a window is resized via a tauri command, the window hangs and must be force quit via the task manager. On macOS / linux (Ubuntu 22.04).

A small repo with the error reproducible is available here: https://github.com/a5huynh/win-freeze

Reproduction

With a bare bones main.rs like so:

Calling resize_window from JS will cause the window to freeze.

Expected behavior

Window should be resized without freezing the window UI.

Platform and versions

Stack trace

Additional context

N/A

tauri-apps[bot]

tauri-apps[bot]

platform: Windows
0

This issue has been upstream from https://github.com/tauri-apps/tauri/issues/3671

Describe the problem

https://docs.microsoft.com/en-us/dotnet/api/system.windows.forms.clipboard.setdataobject?view=windowsdesktop-6.0

This api allow u to clears the Clipboard and then places nonpersistent data on it.

Describe the solution you'd like

app_handle.clipboard_manager().replace_clipboard_contents() or some else

Alternatives considered

No response

Additional context

No response

wtholliday

wtholliday

type: bug
5

I'm noticing inconsistent results when using tao across macOS, windows and linux.

To reproduce, clone https://github.com/audulus/rui and check out f92d301

run: cargo run --example menu

on macOS: menu works as expected on Windows: menu doesn't appear (perhaps the menu is obscured by the wgpu viewport. tao's custom_menu example does work) on Linux: entire view is obscured (was working when using winit)

tauri-apps[bot]

tauri-apps[bot]

platform: Windows
0

This issue has been upstreamed from https://github.com/tauri-apps/tauri/issues/3615

Describe the problem

the need is to show/hide system tray on the fly by user's configuration for example, i just checked the doc that this feature is not implemented yet.

https://docs.rs/tauri/1.0.0-rc.3/tauri/struct.SystemTrayHandle.html

Describe the solution you'd like

implement set_visible function to tauri::SystemTrayHandle, signature would be like:

pub fn set_visible(&self, visible: bool) -> Result<()>

Alternatives considered

No response

Additional context

No response

wusyong

wusyong

type: feature request
0

Global Shortcut on Linux only works on x11 because wayland-protocols hasn't define anything yet. There's a RFC about this. While we can use some workaround or implement one our own, it won't be supported by all DEs. We'll have to wait wayland decide to add this.

tauri-apps[bot]

tauri-apps[bot]

type: feature request
0

This issue has been upstreamed from https://github.com/tauri-apps/tauri/issues/3565

Describe the problem

Currently, on windows, showing / hiding a window isn't instantenious, there's a short fade-in / fade-out transition. This is very slightly inconvenient for my current use case (an always-on-top pseudo-fullscreen overlay window, toggled by global hotkeys).

Describe the solution you'd like

I'd like both the window builder and the window API to include an additional method to enable / disable such transitions.

Alternatives considered

none

Additional context

FWIW (and forgive my terrible rust), I was able to achieve this by directly calling the windows API:

SergioRibera

SergioRibera

type: bug
1

Describe the bug

When the size is set and then set_resizable is called by passing false (to block the user from changing the size), the size is set to the default size of the windows in tauri (800x600)

Reproduction

Expected behavior

No response

Platform and versions

Stack trace

Additional context

Whitout set_resizable

image

With set_resizable

image

tauri-apps[bot]

tauri-apps[bot]

platform: macOS
0

This issue has been upstreamed from https://github.com/tauri-apps/tauri/issues/3322

Describe the problem

I use tauri build menubar application ,but I found tauri rust api not have set_title to set title only have set_icon and set_icon_as_template

Describe the solution you'd like

add API set_title like

Alternatives considered

No response

Additional context

Ref: https://www.electronjs.org/docs/latest/api/tray#traysettitletitle-options-macos

PooyaEimandar

PooyaEimandar

6

Hello Thank you for contributing to this amazing project. I find out that tao uses gtk and with gtk, we can use the following C codes in order to render the whole window into the pixels.

This approach can help us to enable off-screen rendering for wry (issue #391) feature for wry and then we can use wry in the field of 3D applications & games. (e.g html user interface in game ).

I could not find any rust function related to gdk_pixbuf_get_from_window am I miss something?

AlexMikhalev

AlexMikhalev

type: bug
25

Describe the bug

Even using API example it's possible to register global shortcut, but it never triggers on linux This line never reached.

Reproduction

Compile latest tauri (git commit 46f2eae8aad7c6a228eaf48480d5603dae6454b4) and run api example as per readme. Observe lack of global shortcut trigger - both JS and Rust examples don't work.

Expected behavior

Shortcut triggered - from JS and Rust

Platform and versions

Stack trace

No response

Additional context

No response

Versions

Find the latest versions by id

tao-v0.11.2 - Jun 14, 2022

Updating crates.io index

Cargo Audit

\` Fetching advisory database from https://github.com/RustSec/advisory-db.git Loaded 417 security advisories (from /home/runner/.cargo/advisory-db) Updating crates.io index Scanning Cargo.lock for vulnerabilities (179 crate dependencies) \`

[0.11.2]

  • Fixes the Ivar menu_on_left_click not found on class TaoTrayHandler panic on macOS.
    • 2cc163d2 fix(macos): crash on tray class usage on 2022-06-14

Cargo Publish

\` Updating crates.io index Packaging tao v0.11.2 (/home/runner/work/tao/tao) Uploading tao v0.11.2 (/home/runner/work/tao/tao) \`

tao-v0.11.1 - Jun 14, 2022

Updating crates.io index

Cargo Audit

\` Fetching advisory database from https://github.com/RustSec/advisory-db.git Loaded 417 security advisories (from /home/runner/.cargo/advisory-db) Updating crates.io index Scanning Cargo.lock for vulnerabilities (179 crate dependencies) \`

[0.11.1]

  • Fix macOS SystemTrayExtMacOS implementation.
    • f42c1be1 fix: fix wrong macOS trait implementation on 2022-06-14

Cargo Publish

\` Updating crates.io index Packaging tao v0.11.1 (/home/runner/work/tao/tao) Uploading tao v0.11.1 (/home/runner/work/tao/tao) \`

tao-v0.11.0 - Jun 14, 2022

Updating crates.io index

Cargo Audit

\` Fetching advisory database from https://github.com/RustSec/advisory-db.git Loaded 417 security advisories (from /home/runner/.cargo/advisory-db) Updating crates.io index Scanning Cargo.lock for vulnerabilities (179 crate dependencies) \`

[0.11.0]

  • Breaking change SystemTrayBuilder::new and SystemTray::set_icon now takes system_tray::Icon on all platforms.
  • Allow to disable system tray menu only on Left Click.
    • 0858356f feat(macos): allow to disable system tray menu on left click, closes #317 (#329) on 2022-06-09
  • Connect mouse wheel event with GTK window.
    • f9e0b734 connect mouse wheel event with GTK window (#412) on 2022-06-08
  • Support child window on Linux.
    • f1e8d755 feat: support child window on linux, closes #273 (#415) on 2022-06-13
  • Support theme on macOS.
    • 8af4d8f0 feat: support theme on macOS (#408) on 2022-06-01
  • Add Window::set_ignore_cursor_events
    • 4fa87617 feat: Window::set_ignore_cursor_events, closes #184 (#421) on 2022-06-13

Cargo Publish

\` Updating crates.io index Packaging tao v0.11.0 (/home/runner/work/tao/tao) Uploading tao v0.11.0 (/home/runner/work/tao/tao) \`

tao-v0.10.0 - May 30, 2022

Updating crates.io index

Cargo Audit

\` Fetching advisory database from https://github.com/RustSec/advisory-db.git Loaded 416 security advisories (from /home/runner/.cargo/advisory-db) Updating crates.io index Scanning Cargo.lock for vulnerabilities (178 crate dependencies) \`

[0.10.0]

  • Fix movable window background on macOS.
    • e0520b48 fix: fix movable window background on macOS, closes #406 (#405) on 2022-05-27
  • Remove trivial tray features.
    • f1bd25e6 Remove trivial tray features (#411) on 2022-05-30

Cargo Publish

\` Updating crates.io index Packaging tao v0.10.0 (/home/runner/work/tao/tao) Uploading tao v0.10.0 (/home/runner/work/tao/tao) \`

tao-v0.9.1 - May 23, 2022

Updating crates.io index

Cargo Audit

\` Fetching advisory database from https://github.com/RustSec/advisory-db.git Loaded 415 security advisories (from /home/runner/.cargo/advisory-db) Updating crates.io index Scanning Cargo.lock for vulnerabilities (178 crate dependencies) \`

[0.9.1]

  • Fix the size of the slice passed to DragQueryFileW by passing std::mem::transmute(path_buf.spare_capacity_mut()) instead of &mut path_buf.

Cargo Publish

\` Updating crates.io index Packaging tao v0.9.1 (/home/runner/work/tao/tao) Uploading tao v0.9.1 (/home/runner/work/tao/tao) \`

tao-v0.9.0 - May 23, 2022

Updating crates.io index

Cargo Audit

\` Fetching advisory database from https://github.com/RustSec/advisory-db.git Loaded 415 security advisories (from /home/runner/.cargo/advisory-db) Updating crates.io index Scanning Cargo.lock for vulnerabilities (178 crate dependencies) \`

[0.9.0]

  • Add standalone webview ndk port.
    • 68c9f07e Implement standalone webview ndk (#385) on 2022-05-19
  • Update the windows crate to the latest 0.37.0 release.

The #[implement] macro in windows-implement and the implement feature in windows depend on some const generic features which stabilized in rustc 1.61. The MSRV on Windows targets is effectively 1.61, but other targets do not require these features.

Since developers on non-Windows platforms are not always able to upgrade their toolchain with rustup, the package remains at 1.56. Windows developers may get less friendly compiler errors about using unstable language features until they upgrade their toolchain if they build tao without wry, which has some Windows-specific dependencies that transitively raise the MSRV for wry to 1.61.

  • 93c256f9 Update the windows-rs crate to 0.37.0 (#400) on 2022-05-23

Cargo Publish

\` Updating crates.io index Packaging tao v0.9.0 (/home/runner/work/tao/tao) Uploading tao v0.9.0 (/home/runner/work/tao/tao) \`

tao-v0.8.5 - May 18, 2022

Updating crates.io index

Cargo Audit

\` Fetching advisory database from https://github.com/RustSec/advisory-db.git Loaded 412 security advisories (from /home/runner/.cargo/advisory-db) Updating crates.io index Scanning Cargo.lock for vulnerabilities (182 crate dependencies) \`

[0.8.5]

  • The current_monitor function now fallbacks to the primary monitor when the window is invisible.
    • 6cdb99fd fix(linux): fallback to primary monitor on current_monitor impl (#395) on 2022-05-18
  • Change menubar background color to transparent on Linux when the window is transparent.
    • a0d9408b fix(linux): make menubar background transparent (#389) on 2022-05-14
  • Rename full screen menu label to "Toggle Full Screen".

Cargo Publish

\` Updating crates.io index Packaging tao v0.8.5 (/home/runner/work/tao/tao) Uploading tao v0.8.5 (/home/runner/work/tao/tao) \`

tao-v0.8.4 - May 04, 2022

Updating crates.io index

Cargo Audit

\` Fetching advisory database from https://github.com/RustSec/advisory-db.git Loaded 405 security advisories (from /home/runner/.cargo/advisory-db) Updating crates.io index Scanning Cargo.lock for vulnerabilities (182 crate dependencies) \`

[0.8.4]

  • On Windows, remove the accelerator from CustomMenuItem::title returnd string.
    • 634116fe fix(Windows): remove accel str from CustomMenuItem::title returned string (#377) on 2022-04-28
  • On Windows and Linux, increase the resizing area for borderless windows based on scale factor.
    • 8701f64a fix: scale borderless resizing inset based on scale_factor, closes #376 (#379) on 2022-05-01

Cargo Publish

\` Updating crates.io index Packaging tao v0.8.4 (/home/runner/work/tao/tao) Uploading tao v0.8.4 (/home/runner/work/tao/tao) \`

tao-v0.8.3 - Apr 26, 2022

Updating crates.io index

Cargo Audit

\` Fetching advisory database from https://github.com/RustSec/advisory-db.git Loaded 404 security advisories (from /home/runner/.cargo/advisory-db) Updating crates.io index Scanning Cargo.lock for vulnerabilities (182 crate dependencies) \`

[0.8.3]

  • Implement Window::set_cursor_position for Linux.
    • afffaeae feat(linux): implement Window::set_cursor_position (#373) on 2022-04-23

Cargo Publish

\` Updating crates.io index Packaging tao v0.8.3 (/home/runner/work/tao/tao) Uploading tao v0.8.3 (/home/runner/work/tao/tao) \`

tao-v0.8.2 - Apr 13, 2022

Updating crates.io index

Cargo Audit

\` Fetching advisory database from https://github.com/RustSec/advisory-db.git Loaded 404 security advisories (from /home/runner/.cargo/advisory-db) Updating crates.io index Scanning Cargo.lock for vulnerabilities (182 crate dependencies) \`

[0.8.2]

  • Do not fire WindowEvent::Moved when is_maximized is called on macOS.
    • 25890b94 fix(macos): do not fire Event::Moved when checking is_maximized (#366) on 2022-04-13

Cargo Publish

\` Updating crates.io index Packaging tao v0.8.2 (/home/runner/work/tao/tao) Uploading tao v0.8.2 (/home/runner/work/tao/tao) \`

tao-v0.8.1 - Apr 06, 2022

Updating crates.io index

Cargo Audit

\` Fetching advisory database from https://github.com/RustSec/advisory-db.git Loaded 404 security advisories (from /home/runner/.cargo/advisory-db) Updating crates.io index Scanning Cargo.lock for vulnerabilities (184 crate dependencies) \`

[0.8.1]

  • Fixes compilation when only the tray feature is enabled.
    • da938957 fix(tao): compilation when only the tray feature is enabled (#363) on 2022-04-05

Cargo Publish

\` Updating crates.io index Packaging tao v0.8.1 (/home/runner/work/tao/tao) Uploading tao v0.8.1 (/home/runner/work/tao/tao) \`

tao-v0.8.0 - Apr 05, 2022

Updating crates.io index

Cargo Audit

\` Fetching advisory database from https://github.com/RustSec/advisory-db.git Loaded 404 security advisories (from /home/runner/.cargo/advisory-db) Updating crates.io index Scanning Cargo.lock for vulnerabilities (184 crate dependencies) \`

[0.8.0]

  • Add EventLoopWindowTargetExtMacOS::set_activation_policy_at_runtime.
    • ef06c508 Set activation policy at runtime (#353) on 2022-03-30
  • On Windows and Linux, disable resizing maximized borderless windows.
    • 13c5c996 fix(win,linux): disable resizing maximized borderless windows (#356) on 2022-03-30
  • Breaking change: Renamed the ayatana Cargo feature to ayatana-tray, now the default feature for tray on Linux, and added the gtk-tray feature.
    • 40ec796d refactor(tray): split gtk and ayatana appindicator features (#362) on 2022-04-05
    • On Windows, Fix random characters when changing menu items title through CustomMenunItem::set_title.
    • e4725bf5 fix(Windows): fix random chars when changing menu item title (#361) on 2022-03-31
  • On Windows, Fix Window::set_inner_size setting a bigger size than requested.
    • 089f3878 fix(Windows): fix set_inner_size setting a bigger size, closes #194 (#354) on 2022-04-03

Cargo Publish

\` Updating crates.io index Packaging tao v0.8.0 (/home/runner/work/tao/tao) Uploading tao v0.8.0 (/home/runner/work/tao/tao) \`

tao-v0.7.0 - Mar 28, 2022

Updating crates.io index

Cargo Audit

\` Fetching advisory database from https://github.com/RustSec/advisory-db.git Loaded 403 security advisories (from /home/runner/.cargo/advisory-db) Updating crates.io index Scanning Cargo.lock for vulnerabilities (184 crate dependencies) \`

[0.7.0]

  • Fire Event::LoopDestroyed when the macOS dock Quit menu item is clicked.
    • 34257a75 feat(macos): fire LoopDestroyed when the dock's Quit item is clicked (#351) on 2022-03-27
  • Added Event::DecorationsClick (Windows only).
    • 411af5b1 feat(windows): add Event::DecorationsClick (#352) on 2022-03-27
  • Enhance the MenuItem::About menu on Linux. Breaking change: The About variant now uses an struct instead of a string.
    • 84c677fd refactor: fix and enhance the about menu on Linux (#347) on 2022-03-25
  • Fixes the About menu on Linux not being shown.
    • 84c677fd refactor: fix and enhance the about menu on Linux (#347) on 2022-03-25
  • Properly fire WindowEvent::Destroyed on Linux when the Window is dropped.
    • cdd4ac32 fix(events): properly fire WindowEvent::Destroyed on Linux (#349) on 2022-03-25
  • Properly change the window to fullscreen state if the builder instructs it to use Fullscreen::Borderless(None).
    • 5ecbac19 fix(window): fullscreen on Linux when builder is set to Borderless(None) (#348) on 2022-03-25
  • Fixes system tray item titles on Windows by forcing the string to be null-terminated.
    • 7f900a16 fix(tray): force item title string to be null-terminated (#340) on 2022-03-09
  • Properly fire WindowEvent::Destroyed on macOS when the Window is dropped.
    • efd3eecc fix(window): properly fire WindowEvent::Destroyed on macOS (#350) on 2022-03-25
  • Fix inconsist behaviour when setting menu on mac.
    • 5abdbd1f Fix inconsist behaviour when setting menu on mac (#345) on 2022-03-17

Cargo Publish

\` Updating crates.io index Packaging tao v0.7.0 (/home/runner/work/tao/tao) Uploading tao v0.7.0 (/home/runner/work/tao/tao) \`

tao-v0.6.4 - Mar 07, 2022

Updating crates.io index

Cargo Audit

\` Fetching advisory database from https://github.com/RustSec/advisory-db.git Loaded 400 security advisories (from /home/runner/.cargo/advisory-db) Updating crates.io index Scanning Cargo.lock for vulnerabilities (184 crate dependencies) \`

[0.6.4]

  • Fix a deadlock on Windows when using Window::set_visible(true) in the EventLoop::run closure.
    • 475e64d2 fix(Windows): fix a deadlock in WindowState (#338) on 2022-03-06
  • On Windows, apply maximize state before minimize. Fixes Window::set_minimized not working when the window is maximized.
    • 11dac102 fix(windows): apply maximize state before minimize (#334) on 2022-03-01

Cargo Publish

\` Updating crates.io index Packaging tao v0.6.4 (/home/runner/work/tao/tao) Uploading tao v0.6.4 (/home/runner/work/tao/tao) \`

tao-v0.6.3 - Mar 01, 2022

Updating crates.io index

Cargo Audit

\` Fetching advisory database from https://github.com/RustSec/advisory-db.git Loaded 398 security advisories (from /home/runner/.cargo/advisory-db) Updating crates.io index Scanning Cargo.lock for vulnerabilities (184 crate dependencies) \`

[0.6.3]

  • Revert Global Shortcut fix on Linux. See #331 for more information.
    • f5e19e0f Revert "Implement global shortcut on Linux, close #307 (#308)" (#330) on 2022-03-01

Cargo Publish

\` Updating crates.io index Packaging tao v0.6.3 (/home/runner/work/tao/tao) Uploading tao v0.6.3 (/home/runner/work/tao/tao) \`

tao-v0.6.2 - Feb 13, 2022

Updating crates.io index

Cargo Audit

\` Fetching advisory database from https://github.com/RustSec/advisory-db.git Loaded 397 security advisories (from /home/runner/.cargo/advisory-db) Updating crates.io index Scanning Cargo.lock for vulnerabilities (183 crate dependencies) \`

[0.6.2]

  • Fixes the set_fullscreen implementation on Linux when the Fullscreen::Borderless value is set to None.
    • 456147de fix(linux): fullscreen on current monitor (#320) on 2022-02-13

Cargo Publish

\` Updating crates.io index Packaging tao v0.6.2 (/home/runner/work/tao/tao) Uploading tao v0.6.2 (/home/runner/work/tao/tao) \`

tao-v0.6.1 - Feb 10, 2022

Updating crates.io index

Cargo Audit

\` Fetching advisory database from https://github.com/RustSec/advisory-db.git Loaded 397 security advisories (from /home/runner/.cargo/advisory-db) Updating crates.io index Scanning Cargo.lock for vulnerabilities (190 crate dependencies) \`

[0.6.1]

  • Fix global shortcut support on Linux (both x11 and wayland).

Cargo Publish

\` Updating crates.io index Packaging tao v0.6.1 (/home/runner/work/tao/tao) Uploading tao v0.6.1 (/home/runner/work/tao/tao) \`

tao-v0.6.0 - Feb 05, 2022

Updating crates.io index

Cargo Audit

\` Fetching advisory database from https://github.com/RustSec/advisory-db.git Loaded 395 security advisories (from /home/runner/.cargo/advisory-db) Updating crates.io index Scanning Cargo.lock for vulnerabilities (160 crate dependencies) \`

[0.6.0]

  • Update to gtk 0.15
    • 0dd71973 Merge next back to dev branch (#305) on 2022-02-05
  • Emit errors when parsing an invalid accelerator from a string.
    • 0dd71973 Merge next back to dev branch (#305) on 2022-02-05
  • Add support for more accelerator keys: , - . = ; / \ ' ` [ ] Space Tab and F13-F24
    • 0dd71973 Merge next back to dev branch (#305) on 2022-02-05
  • Increased Borderless window resizing inset.
    • 0dd71973 Merge next back to dev branch (#305) on 2022-02-05
  • Update to 2021 edition and msrv to 1.56
    • 0dd71973 Merge next back to dev branch (#305) on 2022-02-05
  • Breaking: Rename the Exit variant of ControlFlow to ExitWithCode, which holds a value to control the exit code after running. Add an Exit constant which aliases to ExitWithCode(0) instead to avoid major breakage. This shouldn't affect most existing programs.
    • 0dd71973 Merge next back to dev branch (#305) on 2022-02-05
  • Fixes the MenuItem::Quit behavior on Windows.
    • 0dd71973 Merge next back to dev branch (#305) on 2022-02-05
  • Add support for SPACE shortcut key on Windows.
    • 0dd71973 Merge next back to dev branch (#305) on 2022-02-05
    • Fix redrawn event that causing infinite lopp on Linux
    • 0dd71973 Merge next back to dev branch (#305) on 2022-02-05
  • Fix linux native menu items not working.
    • 0dd71973 Merge next back to dev branch (#305) on 2022-02-05
    • Fix resizing undecorated window on Linux.
  • Undecorated window can be resized using touch on Linux.
  • 0dd71973 Merge next back to dev branch (#305) on 2022-02-05
  • Fix focus events not firing on Linux
    • 0dd71973 Merge next back to dev branch (#305) on 2022-02-05
  • Add monitor selection when fullscreen on Linux and close possible way to create VideoMode on Linux since gtk doesn't acutally have such feature.
    • 0dd71973 Merge next back to dev branch (#305) on 2022-02-05
    • Add RedrawEventsCleared and RedrawRequested on Linux
    • 0dd71973 Merge next back to dev branch (#305) on 2022-02-05
  • Add run_return trait on Linux
    • 0dd71973 Merge next back to dev branch (#305) on 2022-02-05
  • window.set_skip_taskbar() on Linux will now also skip the pager (Alt+Tab), this matches the behavior on Windows.
    • 0dd71973 Merge next back to dev branch (#305) on 2022-02-05
  • Update tray dependency version.
    • 0dd71973 Merge next back to dev branch (#305) on 2022-02-05
  • Fix deadlock when unregistering shortcut on Linux.
    • 0dd71973 Merge next back to dev branch (#305) on 2022-02-05
  • Fire WindowEvent::Resized and WindowEvent::Moved when window is min/maximized on Linux to align with Windows behavior.
    • 0dd71973 Merge next back to dev branch (#305) on 2022-02-05
  • Fix menubar missing on borderless window.
    • 0dd71973 Merge next back to dev branch (#305) on 2022-02-05
  • Fix core-video-sys dependency.
    • 0dd71973 Merge next back to dev branch (#305) on 2022-02-05
  • Fix linking to the ColorSync framework on macOS 10.7, and in newer Rust versions.
    • 0dd71973 Merge next back to dev branch (#305) on 2022-02-05
  • Allow more strings to parse to keycode, for example , is now parsed as a comma.
    • 0dd71973 Merge next back to dev branch (#305) on 2022-02-05
    • Update raw-window-handle to 0.4
  • Add raw_window_handle() implementation on linux.
  • 0dd71973 Merge next back to dev branch (#305) on 2022-02-05
  • Fix click events missing whe tray has menu.
    • 0dd71973 Merge next back to dev branch (#305) on 2022-02-05
  • Add macOS show_application() method
    • 0dd71973 Merge next back to dev branch (#305) on 2022-02-05
  • Add new_any_thread to Unix event loop.
    • 0dd71973 Merge next back to dev branch (#305) on 2022-02-05
  • Replace all of the winapi crate references with the windows crate. The generated bindings are in the webview2-com-sys crate to share types with WRY later.
    • 0dd71973 Merge next back to dev branch (#305) on 2022-02-05
  • Implement Clone for EventLoopWindowTarget.
    • 0dd71973 Merge next back to dev branch (#305) on 2022-02-05
  • Update the windows crate to 0.25.0, which comes with pre-built libraries. Tao no longer depends on webview2-com-sys to generate bindings shared with WRY.
    • 0dd71973 Merge next back to dev branch (#305) on 2022-02-05
  • Update the windows crate to 0.29.0.
    • 0dd71973 Merge next back to dev branch (#305) on 2022-02-05
  • Update the windows crate to 0.30.0. This version re-introduced a lot of new-types for things like HWND, LRESULT, WPARAM, LPARAM, etc.
    • 0dd71973 Merge next back to dev branch (#305) on 2022-02-05
  • Fix using WindowBuilder::with_visible and WindowBuilder::with_maximized not behaving correctly.
    • 0dd71973 Merge next back to dev branch (#305) on 2022-02-05
  • On Windows, send correct position on system tray events.
    • 0dd71973 Merge next back to dev branch (#305) on 2022-02-05
  • Add support for more accelerator keys: , - . = ; / \ ' ` [ ] Space Tab and F13-F24
    • b047ae41 feat: support accelerator key strings , - . Space Tab and F13-F24 (#228) on 2021-11-15
  • Allow more strings to parse to keycode, for example , is now parsed as a comma.
    • f0a3dcee feat: Allow more strings to parse to keycode (#229) on 2021-11-03
  • Add macOS show_application() method
    • 7e10b0df feat(macos): Add unhide_application method, closes #182 (#231) on 2021-11-03

Cargo Publish

\` Updating crates.io index Packaging tao v0.6.0 (/home/runner/work/tao/tao) Uploading tao v0.6.0 (/home/runner/work/tao/tao) \`

tao-v0.5.2 - Aug 12, 2021

Updating crates.io index

Cargo Audit

\` Fetching advisory database from https://github.com/RustSec/advisory-db.git Loaded 323 security advisories (from /home/runner/.cargo/advisory-db) Updating crates.io index Scanning Cargo.lock for vulnerabilities (192 crate dependencies) \`

[0.5.2]

  • Fix missing Sync trait on EventLoopProxy. This commit also introduces crossbeam-channel crate which could also improve the performance.

Cargo Publish

\` Updating crates.io index Packaging tao v0.5.2 (/home/runner/work/tao/tao) Uploading tao v0.5.2 (/home/runner/work/tao/tao) \`

tao-v0.5.1 - Aug 09, 2021

Updating crates.io index

Cargo Audit

\` Fetching advisory database from https://github.com/RustSec/advisory-db.git Loaded 322 security advisories (from /home/runner/.cargo/advisory-db) Updating crates.io index Scanning Cargo.lock for vulnerabilities (192 crate dependencies) \`

[0.5.1]

  • Remove feature flag that break doc builds
    • 324eca05 Update README.md on 2021-05-08
    • 2a90e63c publish new versions on 2021-05-08
    • eb6f4f9e Remove feature flag that breaks doc build (#178) on 2021-08-09

Cargo Publish

\` Updating crates.io index Packaging tao v0.5.1 (/home/runner/work/tao/tao) Uploading tao v0.5.1 (/home/runner/work/tao/tao) \`

tao-v0.5.0 - Aug 08, 2021

Updating crates.io index

Cargo Audit

\` Fetching advisory database from https://github.com/RustSec/advisory-db.git Loaded 322 security advisories (from /home/runner/.cargo/advisory-db) Updating crates.io index Scanning Cargo.lock for vulnerabilities (192 crate dependencies) \`

[0.5.0]

  • Move global_shortcut mod to the lib root.

    • 6e72e54c refactor: move global_shortcut mod to lib roo (#145) on 2021-07-20
  • Bump gtk-rs to version 0.14. This also introduces a new feature ayatana for developers to use updated libayatana-appindicator since the original libappindicator is no longer maintained.

  • Remove Clipboard MenuItem on Linux since they only work on a few sepcific widget.

    • 969052ab fix(linux): remove clipboard menuitems on Linux (#150) on 2021-07-21
  • Fixes incorrect monitor size on Linux.

  • Fix no key equivalent for Accelerator for Space, Escape, Minus and Equal keycode.

    • ecd3c405 fix(accelerator): add missing KeyCode to prevent no key equivalent for Accelerator (#148) on 2021-07-20
  • Fix incorrect macOS Redo and Close Window shortcuts

    • f4d718a8 fix(macos): Fix incorrect Redo and CloseWindow accelerators (#166) on 2021-08-03
  • Images you mark as template images should consist of only black and clear colors. You can use the alpha channel in the image to adjust the opacity of black content, however.

  • 577458c4 feat(tray): Support macOS icon template (#162) on 2021-07-29

  • macOS: Add with_parent_window() on WindowBuilder.

    • 73c7aac7 feat(macOS): Allow creation of child Window (#160) on 2021-08-04
  • Removed SystemTrayExtWindows::remove(), the icon will be automatically removed when SystemTray is dropped.

    • cc9d2b17 refactor: refactor system_tray impl on windows (#153) on 2021-07-22
  • Add MenuItem::SelectAll implementation on windows.

    • 222adeb2 feat(window): add Select all native menu item (#146) on 2021-07-21
  • Add flags to support all other possible unix systems.

    • 546f51a3 Add flags to support other unix systems. (#142) on 2021-07-20
  • Fix confliction between set_skip_taksbar(true) and set_visible(false).

    • 226e6611 fix(Windows): conflict between taskbar and visible (#172) on 2021-08-06

Cargo Publish

\` Updating crates.io index Packaging tao v0.5.0 (/home/runner/work/tao/tao) Uploading tao v0.5.0 (/home/runner/work/tao/tao) \`

tao-v0.4.0 - Jul 14, 2021

Updating crates.io index

Cargo Audit

\` Fetching advisory database from https://github.com/RustSec/advisory-db.git Loaded 317 security advisories (from /home/runner/.cargo/advisory-db) Updating crates.io index Scanning Cargo.lock for vulnerabilities (176 crate dependencies) \`

[0.4.0]

  • On Windows, Allow resizing of decorations: false aka borderless window.
    • f35dd03d fix(windows): fix aero-snap and resizing of borderless window, fixes #103 #104 (#110) on 2021-07-07
  • Do not close the window on CloseRequested event and let the user handle it, keeping compatibility with macOS and Windows behavior.
    • ea7330ef fix(linux): do not close window on CloseRequested event (#114) on 2021-07-05
  • On Windows, fix Aero-Snap for decorations: false aka borderless window.
    • f35dd03d fix(windows): fix aero-snap and resizing of borderless window, fixes #103 #104 (#110) on 2021-07-07
  • Implement MonitorHandle and related methods on Linux.
    • 6fcfa629 feat(linux): implement MonitorHandle and related methods (#125) on 2021-07-12
  • Add is_menu_visilbe getter on Window
  • On macOS, make sure the set_focus is triggered even if the window is not visible.
    • 3da167aa fix(macos): set_focus should be triggered even if the window isn't visible (#128) on 2021-07-14
  • Fix with_visible(bool) in WindowBuilder for macOS.
    • a0ac7075 fix(macos): Window state (visible) (#119) on 2021-07-06
  • Mark enums as #[non_exhaustive] to prevent breaking changes on enum update.
    • 9b906f50 refactor: add #[non_exhaustive] attributes to enums (#90) on 2021-07-07
  • Remove with_focus and focus field in WindowAttribute. Use set_focus instead in most cases.
    • e2399bc9 Remove with_focus and focus field in WindowAttribute (#121) on 2021-07-06
  • Revert d344825 and move set_skip_taskbar back behind a WindowExtWindows and WindowExtUnix.
    • a641d3a3 refactor: Revert d344825, move set_skip_taskbar behind platform-ext (#118) on 2021-07-06
  • SystemTray expose set_menu to update the system tray menu once created.
    • 578dd23e feat: implement set_menu for system tray (#106) on 2021-07-14
  • Only show window behaviour when it is visible. winuser::ShowWindow will show the window and make with_visible(false) obsolete.
    • ff0903f6 Only show window behaviour when it is visible (#126) on 2021-07-14
  • Add with_skip_taskbar behind WindowBuilderExtWindows and WindowBuilderExtUnix.
    • e7cdb950 feat(taskbar): add with_skip_taskbar for windows and linux (#127) on 2021-07-14

Cargo Publish

\` Updating crates.io index Packaging tao v0.4.0 (/home/runner/work/tao/tao) Uploading tao v0.4.0 (/home/runner/work/tao/tao) \`

tao-v0.3.1 - Jun 23, 2021

Updating crates.io index

Cargo Audit

\` Fetching advisory database from https://github.com/RustSec/advisory-db.git Loaded 307 security advisories (from /home/runner/.cargo/advisory-db) Updating crates.io index Scanning Cargo.lock for vulnerabilities (175 crate dependencies) \`

[0.3.1]

  • Add window_id to MenuEvent.
    • 96651dcc feat(menu): Add window_id to MenuEvent (#89) on 2021-06-22
  • Prevent duplicate MenuEvent on window menu in Windows.
    • 8cf4033f fix(windows): menu event (#91) on 2021-06-22

Cargo Publish

\` Updating crates.io index Packaging tao v0.3.1 (/home/runner/work/tao/tao) Uploading tao v0.3.1 (/home/runner/work/tao/tao) \`

tao-v0.3.0 - Jun 21, 2021

Updating crates.io index

Cargo Audit

\` Fetching advisory database from https://github.com/RustSec/advisory-db.git Loaded 307 security advisories (from /home/runner/.cargo/advisory-db) Updating crates.io index Scanning Cargo.lock for vulnerabilities (175 crate dependencies) \`

[0.3.0]

  • Drop the event callback before exiting on macOS.
    • 52ebebbc Drop the event callback before exiting (#86) on 2021-06-18
  • Add clipboard api exposing read_text and write_text.
  • Fix LoopDestroyed to really exit the application.
    • 55e52a91 Fix LoopDestroy condition to really exit the app on 2021-06-01
  • Implement all control flow variants
    • 16e2ac06 Add change file on 2021-05-19
  • Add checks before focusing window
    • 1bd3b1c0 Add change file on 2021-05-22
  • Add is_visible getter on Window
    • c402a38b feat: Add is_visible getter to Window (#61) on 2021-05-27
  • Breaking change: New keyboard API, including Accelerator and GlobalShortcut.

WindowEvent::ModifiersChanged is emitted when a new keyboard modifier is pressed. This is your responsibility to keep a local state. When the modifier is released, ModifiersState::empty() is emitted.

WindowEvent::KeyboardInput as been refactored and is exposing the event KeyEvent.

All menus (ContextMenu and MenuBar), now includes Accelerator support on Windows, macOS and Linux.

New modules available: keyboard, accelerator and platform::global_shortcut.

Please refer to the docs and examples for more details.

  • 01fc43b0 refactor: keyboards events (#82) on 2021-06-21
  • Breaking change: New menu/tray API.

System tray now expose set_icon() to update the tray icon after initialization. The system_tray::SystemTrayBuilder has been moved to the root of the package as a module and available on Windows, Linux and macOS, only when the tray feature is enabled. Windows expose a remove() function available with SystemTrayExtWindows.

Menu builder has been rebuilt from scratch, exposing 2 different types, ContextMenu and MenuBar.

Please refer to the docs and examples for more details.

  • 7546dbd1 refactor: menu & tray (#77) on 2021-06-03
  • Fix match branch of run loop observer on iOS.
    • 4e9fede6 Add change file on 2021-05-23
    • skip_taskbar is renamed to set_skip_taskbar.
  • set_skip_taskbar is now available on Window and is no longer behind a PlatformExt.
  • set_skip_taskbar takes a boolean to either show or hide the window icon from the taskbar.
  • Add with_skip_taskbar to WindowBuilder.
  • c0aac091 add with_skip_taskbar on 2021-05-29
  • Add skip_taskbar implementation for windows
    • 83341701 feat: add skip_taskabr impl for windows (#78) on 2021-05-29

Cargo Publish

\` Updating crates.io index Packaging tao v0.3.0 (/home/runner/work/tao/tao) Uploading tao v0.3.0 (/home/runner/work/tao/tao) \`

tao-v0.2.6 - May 17, 2021

Updating crates.io index

Cargo Audit

\` Fetching advisory database from https://github.com/RustSec/advisory-db.git Loaded 302 security advisories (from /home/runner/.cargo/advisory-db) Updating crates.io index Scanning Cargo.lock for vulnerabilities (173 crate dependencies) \`

[0.2.6]

  • Add is_decorated getter on Window
  • Add is_resizable getter on Window
  • Fix panic from borrowing in event loop on linux.
    • 12d7ccbc Fix event loop on linux on 2021-05-17
  • Implement set_focus() and with_focus() for macOS, Windows and Linux.
    • 448e4c17 Add change file on 2021-05-07

Cargo Publish

\` Updating crates.io index Packaging tao v0.2.6 (/home/runner/work/tao/tao) Uploading tao v0.2.6 (/home/runner/work/tao/tao) \`

tao-v0.2.5 - May 17, 2021

Updating crates.io index

Cargo Audit

\` Fetching advisory database from https://github.com/RustSec/advisory-db.git Loaded 302 security advisories (from /home/runner/.cargo/advisory-db) Updating crates.io index Scanning Cargo.lock for vulnerabilities (173 crate dependencies) \`

[0.2.5]

  • Fix Priority import on Linux.
    • 20128896 Add change file on 2021-05-17

Cargo Publish

\` Updating crates.io index Packaging tao v0.2.5 (/home/runner/work/tao/tao) Uploading tao v0.2.5 (/home/runner/work/tao/tao) \`

tao-v0.2.4 - May 17, 2021

Updating crates.io index

Cargo Audit

\` Fetching advisory database from https://github.com/RustSec/advisory-db.git Loaded 302 security advisories (from /home/runner/.cargo/advisory-db) Updating crates.io index Scanning Cargo.lock for vulnerabilities (173 crate dependencies) \`

[0.2.4]

  • Refactor control flow implementation to wait.
    • f5514f04 Add change file on 2021-05-15

Cargo Publish

\` Updating crates.io index Packaging tao v0.2.4 (/home/runner/work/tao/tao) Uploading tao v0.2.4 (/home/runner/work/tao/tao) \`

tao-v0.2.3 - May 10, 2021

Updating crates.io index

Cargo Audit

\` Fetching advisory database from https://github.com/RustSec/advisory-db.git Loaded 301 security advisories (from /home/runner/.cargo/advisory-db) Updating crates.io index Scanning Cargo.lock for vulnerabilities (173 crate dependencies) \`

[0.2.3]

  • Split feature flags (menu and tray).

Cargo Publish

\` Updating crates.io index Packaging tao v0.2.3 (/home/runner/work/tao/tao) Uploading tao v0.2.3 (/home/runner/work/tao/tao) \`

tao-v0.2.2 - May 09, 2021

Updating crates.io index

Cargo Audit

\` Fetching advisory database from https://github.com/RustSec/advisory-db.git Loaded 301 security advisories (from /home/runner/.cargo/advisory-db) Updating crates.io index Scanning Cargo.lock for vulnerabilities (173 crate dependencies) \`

[0.2.2]

  • Add dox flag to skip link lib when building doc.

Cargo Publish

\` Updating crates.io index Packaging tao v0.2.2 (/home/runner/work/tao/tao) Uploading tao v0.2.2 (/home/runner/work/tao/tao) \`

tao-v0.2.1 - May 09, 2021

Updating crates.io index

Cargo Audit

\` Fetching advisory database from https://github.com/RustSec/advisory-db.git Loaded 301 security advisories (from /home/runner/.cargo/advisory-db) Updating crates.io index Scanning Cargo.lock for vulnerabilities (172 crate dependencies) \`

[0.2.1]

  • Update covector script to fix doc build.
    • 25f291f2 Update covector script to fix doc build on 2021-05-09

Cargo Publish

\` Updating crates.io index Packaging tao v0.2.1 (/home/runner/work/tao/tao) Uploading tao v0.2.1 (/home/runner/work/tao/tao) \`

Information - Updated Jun 17, 2022

Stars: 404
Forks: 37
Issues: 62

Repositories & Extras

Rust library for Self Organising Maps (SOM)

Add rusticsom as a dependency in Cargo

Rust library for Self Organising Maps (SOM)

Rust library for parsing configuration files

The 'option' can be any string with no whitespace

Rust library for parsing configuration files

Rust library for the Pimoroni Four Letter pHAT

This library aims to port ht16k33 (or rather a fork, as of right now) so credit goes to ht16k33-diet

Rust library for the Pimoroni Four Letter pHAT

Rust library for emulating 32-bit RISC-V

This library can execute instructions against any memory and register file that implements

Rust library for emulating 32-bit RISC-V

Rust library for connecting to the IPFS HTTP API using Hyper/Actix

You can use actix-web as a backend instead of hyper

Rust library for connecting to the IPFS HTTP API using Hyper/Actix

Rust library to manipulate file system access control lists (ACL) on macOS, Linux, and FreeBSD

This module provides two high level functions, getfacl and setfacl

Rust library to manipulate file system access control lists (ACL) on macOS, Linux, and FreeBSD

Rust library translation (rust-src/rust-std/stdlib/rustlib translation)

This is the place to translate Having a documentation in your native language is essential if you don't speak English, and still enjoyable even if...

Rust library translation (rust-src/rust-std/stdlib/rustlib translation)

Rust library for using Infrared hardware decoders (For example a Vishay TSOP* decoder),

enabling remote control support for embedded project

Rust library for using Infrared hardware decoders (For example a Vishay TSOP* decoder),

Rust library for interaction with the OriginTrail Decentralized Knowledge Graph

open up an issue on this repository and let us know

Rust library for interaction with the OriginTrail Decentralized Knowledge Graph

Rust library for parsing COLLADA files

Notice: This library is built around files exported from Blender 2

Rust library for parsing COLLADA files

Rust library for low-level abstraction of MIPS32 processors

This project is licensed under the terms of the MIT license

Rust library for low-level abstraction of MIPS32 processors
Facebook Instagram Twitter GitHub Dribbble
Privacy