tauri-plugin-network-manager 2.0.1

A Tauri plugin to manage network connections using networkmanager and systemd-networkd.
Documentation

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)

[dependencies]
tauri-plugin-network-manager = { git = "https://github.com/Vasak-OS/tauri-plugin-network-manager" }

Node.js

bun add @vasakgroup/plugin-network-manager  

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