Skip to content

Repository files navigation

TAO - Window Creation Library

LicenseChat Serverwebsitehttps://good-labs.github.io/greater-good-affirmation/assets/images/badge.svgsupport

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:

[[example]]
name = "request_redraw_threaded"crate-type = ["cdylib"]

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

#[cfg_attr(target_os = "android", ndk_glue::main(backtrace = "on"))]fnmain(){
...}

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:

sudo pacman -S gtk3

For tray feature:

sudo pacman -S libappindicator-gtk3

Debian / Ubuntu:

sudo apt install libgtk-3-dev

For tray feature, choose one of following pachages:

sudo apt install libappindicator3-dev
sudo apt install libayatana-appindicator3-dev

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.

About

The TAO of cross-platform windowing. A library in Rust built for Tauri.

Resources

Code of conduct

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
GitHub - caesar/tao: The TAO of cross-platform windowing. A library in Rust built for Tauri. · GitHub
Skip to content

Repository files navigation

TAO - Window Creation Library

LicenseChat Serverwebsitehttps://good-labs.github.io/greater-good-affirmation/assets/images/badge.svgsupport

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:

[[example]]
name = "request_redraw_threaded"crate-type = ["cdylib"]

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

#[cfg_attr(target_os = "android", ndk_glue::main(backtrace = "on"))]fnmain(){
...}

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:

sudo pacman -S gtk3

For tray feature:

sudo pacman -S libappindicator-gtk3

Debian / Ubuntu:

sudo apt install libgtk-3-dev

For tray feature, choose one of following pachages:

sudo apt install libappindicator3-dev
sudo apt install libayatana-appindicator3-dev

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.

About

The TAO of cross-platform windowing. A library in Rust built for Tauri.

Resources

Code of conduct

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - caesar/tao: The TAO of cross-platform windowing. A library in Rust built for Tauri. · GitHub
Skip to content

Repository files navigation

TAO - Window Creation Library

LicenseChat Serverwebsitehttps://good-labs.github.io/greater-good-affirmation/assets/images/badge.svgsupport

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:

[[example]]
name = "request_redraw_threaded"crate-type = ["cdylib"]

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

#[cfg_attr(target_os = "android", ndk_glue::main(backtrace = "on"))]fnmain(){
...}

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:

sudo pacman -S gtk3

For tray feature:

sudo pacman -S libappindicator-gtk3

Debian / Ubuntu:

sudo apt install libgtk-3-dev

For tray feature, choose one of following pachages:

sudo apt install libappindicator3-dev
sudo apt install libayatana-appindicator3-dev

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.

About

The TAO of cross-platform windowing. A library in Rust built for Tauri.

Resources

Code of conduct

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - caesar/tao: The TAO of cross-platform windowing. A library in Rust built for Tauri. · GitHub
Skip to content

Repository files navigation

TAO - Window Creation Library

LicenseChat Serverwebsitehttps://good-labs.github.io/greater-good-affirmation/assets/images/badge.svgsupport

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:

[[example]]
name = "request_redraw_threaded"crate-type = ["cdylib"]

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

#[cfg_attr(target_os = "android", ndk_glue::main(backtrace = "on"))]fnmain(){
...}

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:

sudo pacman -S gtk3

For tray feature:

sudo pacman -S libappindicator-gtk3

Debian / Ubuntu:

sudo apt install libgtk-3-dev

For tray feature, choose one of following pachages:

sudo apt install libappindicator3-dev
sudo apt install libayatana-appindicator3-dev

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.

About

The TAO of cross-platform windowing. A library in Rust built for Tauri.

Resources

Code of conduct

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' GitHub - caesar/tao: The TAO of cross-platform windowing. A library in Rust built for Tauri. · GitHub
Skip to content

Repository files navigation

TAO - Window Creation Library

LicenseChat Serverwebsitehttps://good-labs.github.io/greater-good-affirmation/assets/images/badge.svgsupport

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:

[[example]]
name = "request_redraw_threaded"crate-type = ["cdylib"]

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

#[cfg_attr(target_os = "android", ndk_glue::main(backtrace = "on"))]fnmain(){
...}

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:

sudo pacman -S gtk3

For tray feature:

sudo pacman -S libappindicator-gtk3

Debian / Ubuntu:

sudo apt install libgtk-3-dev

For tray feature, choose one of following pachages:

sudo apt install libappindicator3-dev
sudo apt install libayatana-appindicator3-dev

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.

About

The TAO of cross-platform windowing. A library in Rust built for Tauri.

Resources

Code of conduct

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - caesar/tao: The TAO of cross-platform windowing. A library in Rust built for Tauri. · GitHub
Skip to content

Repository files navigation

TAO - Window Creation Library

LicenseChat Serverwebsitehttps://good-labs.github.io/greater-good-affirmation/assets/images/badge.svgsupport

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:

[[example]]
name = "request_redraw_threaded"crate-type = ["cdylib"]

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

#[cfg_attr(target_os = "android", ndk_glue::main(backtrace = "on"))]fnmain(){
...}

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:

sudo pacman -S gtk3

For tray feature:

sudo pacman -S libappindicator-gtk3

Debian / Ubuntu:

sudo apt install libgtk-3-dev

For tray feature, choose one of following pachages:

sudo apt install libappindicator3-dev
sudo apt install libayatana-appindicator3-dev

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.

About

The TAO of cross-platform windowing. A library in Rust built for Tauri.

Resources

Code of conduct

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - caesar/tao: The TAO of cross-platform windowing. A library in Rust built for Tauri. · GitHub
Skip to content

Repository files navigation

TAO - Window Creation Library

LicenseChat Serverwebsitehttps://good-labs.github.io/greater-good-affirmation/assets/images/badge.svgsupport

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:

[[example]]
name = "request_redraw_threaded"crate-type = ["cdylib"]

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

#[cfg_attr(target_os = "android", ndk_glue::main(backtrace = "on"))]fnmain(){
...}

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:

sudo pacman -S gtk3

For tray feature:

sudo pacman -S libappindicator-gtk3

Debian / Ubuntu:

sudo apt install libgtk-3-dev

For tray feature, choose one of following pachages:

sudo apt install libappindicator3-dev
sudo apt install libayatana-appindicator3-dev

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.

About

The TAO of cross-platform windowing. A library in Rust built for Tauri.

Resources

Code of conduct

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); GitHub - caesar/tao: The TAO of cross-platform windowing. A library in Rust built for Tauri. · GitHub
Skip to content

Repository files navigation

TAO - Window Creation Library

LicenseChat Serverwebsitehttps://good-labs.github.io/greater-good-affirmation/assets/images/badge.svgsupport

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:

[[example]]
name = "request_redraw_threaded"crate-type = ["cdylib"]

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

#[cfg_attr(target_os = "android", ndk_glue::main(backtrace = "on"))]fnmain(){
...}

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:

sudo pacman -S gtk3

For tray feature:

sudo pacman -S libappindicator-gtk3

Debian / Ubuntu:

sudo apt install libgtk-3-dev

For tray feature, choose one of following pachages:

sudo apt install libappindicator3-dev
sudo apt install libayatana-appindicator3-dev

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.

About

The TAO of cross-platform windowing. A library in Rust built for Tauri.

Resources

Code of conduct

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages