Tauri Network Manager Plugin
A Rust-based Tauri plugin for managing network connections on Linux systems using NetworkManager.
Features
- Get current network state
- Toggle network connections
- Lisen for network state changes
Future Work
- List available WiFi networks
- Connect to WiFi networks
- Disconnect from WiFi networks
Installation
Add this plugin to your Tauri project by installing the package and registering the plugin.
Rust (Cargo.toml)
[]
= { = "https://github.com/Vasak-OS/tauri-plugin-network-manager" }
Node.js
Usage
<template>
<button @click="toggleCurrentNetwork"
class="p-2 rounded-xl bg-white/50 dark:bg-black/50 hover:bg-white/70 dark:hover:bg-black/70 transition-colors h-[70px] w-[70px]"
:disabled="isLoading">
<img :src="networkIconSrc" :alt="networkAlt" class="m-auto w-[50px] h-[50px]" />
</button>
</template>
<script setup lang="ts">
import { ref, computed, onMounted, onUnmounted } from 'vue';
import { listen } from '@tauri-apps/api/event';
import { getCurrentNetworkState, type NetworkInfo, toggleNetwork } from '@vasakgroup/plugin-network-manager';
let ulisten: Function | null = null;
const networkState = ref<NetworkInfo>(
{
...
}
);
const toggleCurrentNetwork = async () => {
try {
await toggleNetwork(!networkState.value.is_connected);
} catch (error) {
console.error('Error toggling network:', error);
}
};
const getCurrentNetwork = async () => {
try {
networkState.value = await getCurrentNetworkState();
} catch (error) {
console.error('Error getting current network state:', error);
}
};
onMounted(async () => {
await getCurrentNetwork();
ulisten = await listen<NetworkInfo>('network-changed', async (event) => {
networkState.value = event.payload;
});
});
onUnmounted(() => {
if (ulisten !== null) {
ulisten();
}
});
</script>
Requirements
- Linux with NetworkManager
- Rust 1.77.2+
- Tauri 2.5+
Dependencies
- networkmanager
- dbus