Tauri/Premier exemple
Retour à la page parente : Tauri
Nom du projet : Navig2
Généralité
Fichiers C:\Prog\Navig2\src-tauri\tauri.conf.json
Détails :
- Nom de la fenêtre :
"title": "Navigation",
index.html
C:\Prog\Navig2\src\index.html
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<link rel="stylesheet" href="styles.css" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Mon application Tauri</title>
<script type="module" src="/main.js" defer></script>
</head>
<body>
<div class="titlebar"><span class="grip-btn-g" >⠿</span><span class="title">Barre de déplacement</span><span class="grip-btn-d">⠿</span></div>
<h1>Bienvenue sur Tauri !</h1>
<div class="row">
<a href="https://tauri.app" target="_blank"> <img src="/assets/tauri.svg" class="logo tauri" alt="Tauri logo" /></a>
<a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript" target="_blank" ><img src="/assets/javascript.svg" class="logo vanilla" alt="JavaScript logo" /></a>
</div>
<p>Cliquer sur le logo Tauri ou JavaScript pour en apprendre plus.</p>
<form class="row" id="greet-form">
<input id="greet-input" placeholder="Saisir un nom..." />
<button type="submit">Salut</button>
</form>
<p id="greet-msg"></p>
</body>
</html>
styles.css
C:\Prog\Navig2\src\styles.css
body {
margin: 0;
padding-top: 10vh;
padding-top: 0;
display: flex;
flex-direction: column;
justify-content: center;
text-align: center;
}
.logo.tauri:hover {
filter: drop-shadow(0 0 2em #24c8db);
}
.logo.vanilla:hover {
filter: drop-shadow(0 0 2em #ffe21c);
}
:root {
font-family: Inter, Avenir, Helvetica, Arial, sans-serif;
font-size: 16px;
line-height: 24px;
font-weight: 400;
color: #0f0f0f;
background-color: #f6f6f6;
font-synthesis: none;
text-rendering: optimizeLegibility;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
-webkit-text-size-adjust: 100%;
}
.logo {
height: 6em;
padding: 1.5em;
will-change: filter;
transition: 0.4s;
}
.row {
display: flex;
justify-content: center;
}
a {
font-weight: 500;
color: #646cff;
text-decoration: inherit;
}
a:hover {
color: #535bf2;
}
h1 {
text-align: center;
}
input, button {
border-radius: 8px;
border: 1px solid transparent;
padding: 0.6em 1.2em;
font-size: 1em;
font-weight: 500;
font-family: inherit;
color: #0f0f0f;
background-color: #ffffff;
transition: border-color 0.25s;
box-shadow: 0 2px 2px rgba(0, 0, 0, 0.2);
}
button {
cursor: pointer;
}
button:hover {
border-color: #396cd8;
}
button:active {
border-color: #396cd8;
background-color: #e8e8e8;
}
input, button {
outline: none;
}
#greet-input {
margin-right: 5px;
}
@media (prefers-color-scheme: dark) {
:root {
color: #f6f6f6;
background-color: #2f2f2f;
}
a:hover {
color: #24c8db;
}
input, button {
color: #ffffff;
background-color: #0f0f0f98;
}
button:active {
background-color: #0f0f0f69;
}
}
.titlebar {
height: 50px;
display: flex;
align-items: center;
background: #0f3460;
-webkit-app-region: drag;
}
.grip-btn-g { font-size: 2em; color: #4a6fa5; cursor: grab; }
.grip-btn-d { font-size: 2em; color: #4a6fa5; cursor: grab; }
.title { font-size: 1.1em; color: #8899aa; margin:auto; }
main.js
C:\Prog\Navig2\src\main.js
const { invoke } = window.__TAURI__.core;
let greetInputEl;
let greetMsgEl;
async function greet() {
// Learn more about Tauri commands at https://tauri.app/develop/calling-rust/
greetMsgEl.textContent = await invoke("greet", { name: greetInputEl.value });
}
window.addEventListener("DOMContentLoaded", () => {
greetInputEl = document.querySelector("#greet-input");
greetMsgEl = document.querySelector("#greet-msg");
document.querySelector("#greet-form").addEventListener("submit", (e) => {
e.preventDefault();
greet();
});
});
build.rs
C:\Prog\Navig2\src-tauri\build.rs
fn main() {
tauri_build::build()
}
build.rs
C:\Prog\Navig2\src-tauri\src\main.rs
// Prevents additional console window on Windows in release, DO NOT REMOVE!!
#![cfg_attr(not(debug_assertions), windows_subsystem = "windows")]
fn main() {
navig2_lib::run()
}
lib.rs
C:\Prog\Navig2\src-tauri\src\lib.rs
// Learn more about Tauri commands at https://tauri.app/develop/calling-rust/
use tauri::{Manager, PhysicalPosition};
#[tauri::command]
fn greet(name: &str) -> String {
format!("Bonjour, {} ! Bienvenue sur Tauri !", name)
}
#[cfg_attr(mobile, tauri::mobile_entry_point)]
pub fn run() {
tauri::Builder::default()
.setup(|app| {
let window = app.get_webview_window("main").unwrap();
let monitor = window.primary_monitor().unwrap().unwrap();
let screen = monitor.size();
let win_size = window.outer_size().unwrap();
let x = ((screen.width - win_size.width) / 2) as i32; // calcul du centre de l'écran
let y = 2 as i32; // marge en haut (utile si pas de decorations)
//let y = margin_top;
window.set_position(PhysicalPosition::new(x, y)).unwrap();
Ok(())
})
.plugin(tauri_plugin_opener::init())
.invoke_handler(tauri::generate_handler![greet])
.run(tauri::generate_context!())
.expect("error while running tauri application");
}
tauri.conf.json
C:\Prog\Navig2\src-tauri\tauri.conf.json
{
"$schema": "https://schema.tauri.app/config/2",
"productName": "navig2",
"version": "0.1.1",
"identifier": "com.phil.navig2",
"build": {
"frontendDist": "../src"
},
"app": {
"withGlobalTauri": true,
"windows": [
{
"title": "Navigation",
"width": 700,
"height": 500,
"decorations": false,
"alwaysOnTop": true,
"resizable": false,
"maximizable": false,
"minimizable": false,
"skipTaskbar": true
}
],
"security": {
"csp": null
}
},
"bundle": {
"active": true,
"targets": "all",
"icon": [
"icons/32x32.png",
"icons/128x128.png",
"icons/128x128@2x.png",
"icons/icon.icns",
"icons/icon.ico"
]
}
}