Tauri Plugin device-info
February 4, 2026 ยท View on GitHub
A comprehensive Tauri plugin to access device information including Battery, Network, Storage, Display, and System Details.
๐ธ Preview
Example Dashboard Application across platforms
Platform Support
| Platform | Support |
|---|---|
| Windows | โ |
| macOS | โ |
| Linux | โ |
| iOS | โ |
| Android | โ |
Installation
Using Tauri CLI (Recommended)
npm run tauri add device-info
# or
yarn tauri add device-info
Manual Installation
[dependencies]
tauri-plugin-device-info = "1.0" # Check crates.io for latest version
# or from git
tauri-plugin-device-info = { git = "https://github.com/edisdev/tauri-plugin-device-info" }
{
"dependencies": {
"tauri-plugin-device-info-api": "^1.0.0"
}
}
Setup
Register the plugin in your Tauri app:
src-tauri/src/lib.rs:
fn main() {
tauri::Builder::default()
.plugin(tauri_plugin_device_info::init())
.run(tauri::generate_context!())
.expect("error while running tauri application");
}
Usage
import {
getDeviceInfo,
getBatteryInfo,
getNetworkInfo,
getStorageInfo,
getDisplayInfo,
} from "tauri-plugin-device-info-api";
// Get device information
const device = await getDeviceInfo();
console.log(device);
Response:
{
"uuid": "550e8400-e29b-41d4-a716-446655440000",
"manufacturer": "Apple Inc.",
"model": "MacBookPro16,1",
"serial": "C02XG2JHJG5H",
"android_id": null,
"device_name": "John's MacBook Pro"
}
// Get battery status
const battery = await getBatteryInfo();
console.log(battery);
Response:
{
"level": 85,
"isCharging": true,
"health": "Good"
}
// Get network information
const network = await getNetworkInfo();
console.log(network);
Response:
{
"ipAddress": "192.168.x.x",
"networkType": "wifi",
"macAddress": "a1:b2:c3:d4:e5:f6"
}
// Get storage information
const storage = await getStorageInfo();
console.log(storage);
Response:
{
"totalSpace": 500107862016,
"freeSpace": 125026965504,
"storageType": "SSD"
}
// Get display information
const display = await getDisplayInfo();
console.log(display);
Response:
{
"width": 2560,
"height": 1600,
"scaleFactor": 2.0,
"refreshRate": 120
}
API Reference
getDeviceInfo()
Returns device identification and hardware information.
| Field | Type | Description |
|---|---|---|
uuid | string? | Unique device identifier |
manufacturer | string? | Device manufacturer (e.g., "Apple Inc.") |
model | string? | Device model (e.g., "MacBookPro16,1") |
serial | string? | Serial number (restricted on some platforms) |
android_id | string? | Android-specific ID (Android only) |
device_name | string? | User-assigned device name |
getBatteryInfo()
Returns battery status and health information.
| Field | Type | Description |
|---|---|---|
level | number? | Battery percentage (0-100) |
isCharging | boolean? | Whether the device is charging |
health | string? | Battery health status |
getNetworkInfo()
Returns network connection details.
| Field | Type | Description |
|---|---|---|
ipAddress | string? | Local IP address |
networkType | string? | Connection type: "wifi", "cellular", "ethernet", "unknown" |
macAddress | string? | MAC address (unavailable on iOS/Android due to privacy) |
getStorageInfo()
Returns storage capacity information.
| Field | Type | Description |
|---|---|---|
totalSpace | number? | Total storage in bytes |
freeSpace | number? | Available storage in bytes |
storageType | string? | Storage type: "SSD", "HDD", "internal" |
getDisplayInfo()
Returns display/screen information.
| Field | Type | Description |
|---|---|---|
width | number? | Screen width in pixels |
height | number? | Screen height in pixels |
scaleFactor | number? | Display scale factor (e.g., 2.0 for Retina) |
refreshRate | number? | Screen refresh rate in Hz |
TypeScript Types
All types are exported and can be imported:
import type {
DeviceInfoResponse,
BatteryInfo,
NetworkInfo,
StorageInfo,
DisplayInfo,
} from "tauri-plugin-device-info-api";
Permissions
Add the required permissions in your capabilities configuration.
src-tauri/capabilities/default.json:
{
"$schema": "../gen/schemas/desktop-schema.json",
"identifier": "default",
"description": "Capability for the main window",
"windows": ["main"],
"permissions": ["core:default", "device-info:default"]
}
Available Permissions
| Permission | Description |
|---|---|
device-info:default | Enables all device-info commands |
device-info:allow-get-device-info | Allows getting device information |
device-info:allow-get-battery-info | Allows getting battery status |
device-info:allow-get-network-info | Allows getting network details |
device-info:allow-get-storage-info | Allows getting storage info |
device-info:allow-get-display-info | Allows getting display info |
Individual Permissions Example
If you want to grant only specific permissions:
{
"$schema": "../gen/schemas/desktop-schema.json",
"identifier": "default",
"description": "Capability for the main window",
"windows": ["main"],
"permissions": [
"core:default",
"device-info:allow-get-battery-info",
"device-info:allow-get-network-info"
]
}
Platform-Specific Notes
iOS
- MAC address is not available due to Apple's privacy restrictions (returns "unavailable")
- Serial number uses a persistent Keychain-stored UUID
Android
- MAC address is restricted on Android 6.0+ (returns "restricted")
- Requires no special permissions for basic device info
macOS
- Uses native CoreGraphics API for accurate refresh rate detection
- Full access to all device information
Windows
- Uses WMI (Windows Management Instrumentation) for device info
- Full access to all device information
Linux
- Display refresh rate requires X11 (xrandr)
- Device info read from
/sys/class/dmi/id/
License
MIT