Skip to content

Commit 75ef04b

Browse files
committed
Show errors when udev rules are required on desktop
1 parent 4b90a1a commit 75ef04b

File tree

3 files changed

+20
-7
lines changed

3 files changed

+20
-7
lines changed

desktop/.eslintrc.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ module.exports = {
1313
},
1414
rules: {
1515
'no-console': process.env.NODE_ENV === 'production' ? ['warn', { allow: ['warn', 'error'] }] : 'off',
16-
'no-debugger': process.env.NODE_ENV === 'production' ? 'warn' : 'off'
16+
'no-debugger': process.env.NODE_ENV === 'production' ? 'warn' : 'off',
17+
'@typescript-eslint/explicit-module-boundary-types': 'off',
1718
}
1819
}

desktop/src-tauri/src/cmd.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ use std::sync::Arc;
22
use std::time::Duration;
33

44
use libnspire::{PID, PID_CX2, VID};
5-
use rusb::{DeviceHandle, Error, GlobalContext};
5+
use rusb::GlobalContext;
66
use serde::{Deserialize, Serialize};
77

88
use crate::{Device, DeviceState};
@@ -162,7 +162,7 @@ pub fn add_device(dev: Arc<rusb::Device<GlobalContext>>) -> rusb::Result<((u8, u
162162
)?,
163163
false,
164164
),
165-
Err(rusb::Error::NotSupported) => (
165+
Err(rusb::Error::NotSupported) | Err(rusb::Error::Access) => (
166166
if descriptor.product_id() == PID_CX2 {
167167
"TI-Nspire CX II"
168168
} else {

desktop/src/views/Home.vue

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,19 @@
44
<div class="flex-shrink-0 border-r w-64">
55
<device-select :selected.sync="selectedCalculator"/>
66
<div class="overflow-auto h-full px-4 py-4">
7-
<div v-if="needsDrivers">
7+
<div v-if="needsDrivers && !isLinux">
88
<h1 class="text-3xl">Drivers required</h1>
99
<p>The WinUSB driver is required to use this device.</p>
1010
<p class="text-center mt-2">
11-
<a href="#" @click.prevent="installDrivers" class="text-blue-600">See installation instructions</a>
11+
<a href="#" @click.prevent="installDrivers()" class="text-blue-600">See installation instructions</a>
12+
</p>
13+
</div>
14+
<div v-else-if="needsDrivers && isLinux">
15+
<h1 class="text-3xl">udev rules required</h1>
16+
<p>udev rules are required to access this device.</p>
17+
<p class="text-center mt-2">
18+
<a href="#" @click.prevent="installDrivers('linux')" class="text-blue-600">See installation
19+
instructions</a>
1220
</p>
1321
</div>
1422
<div v-else-if="calculator && !calculator.info" class="flex items-center justify-center h-full">
@@ -94,8 +102,12 @@ export default class Home extends Vue {
94102
return this.selectedCalculator && this.$devices.devices[this.selectedCalculator]?.needsDrivers;
95103
}
96104
97-
installDrivers() {
98-
open('https://lights0123.com/n-link/#windows');
105+
get isLinux() {
106+
return navigator.platform.includes('Linux');
107+
}
108+
109+
installDrivers(platform = 'windows') {
110+
open(`https://lights0123.com/n-link/#${platform}`);
99111
}
100112
}
101113
</script>

0 commit comments

Comments
 (0)