@@ -112,15 +112,8 @@ impl Provider {
112
112
// Check provider type
113
113
let processor_args: [ & str ; 2 ] ;
114
114
match self . property :: < i32 > ( "provider-type" ) {
115
- // Nvidia Settings/SMI
116
- 0 => {
117
- processor_args = [
118
- "nvidia-settings" ,
119
- "-q GpuUUID -t"
120
- ] ;
121
- }
122
- // Nvidia Settings
123
- 1 => {
115
+ // Nvidia Settings/SMI OR Nvidia Settings
116
+ 0 | 1 => {
124
117
processor_args = [
125
118
"nvidia-settings" ,
126
119
"-q GpuUUID -t"
@@ -130,14 +123,14 @@ impl Provider {
130
123
2 => {
131
124
processor_args = [
132
125
"nvidia-smi" ,
133
- "--query-gpu=gpu_name --format=csv,noheader "
126
+ "-L "
134
127
] ;
135
128
}
136
129
// Nvidia Optimus
137
130
3 => {
138
131
processor_args = [
139
132
"optirun" ,
140
- "nvidia-smi --query-gpu=gpu_name --format=csv,noheader "
133
+ "nvidia-smi -L "
141
134
] ;
142
135
}
143
136
_ => {
@@ -159,7 +152,30 @@ impl Provider {
159
152
Ok ( output) => match output {
160
153
Some ( valid_output) => {
161
154
// If a valid output given, finally return to main window
162
- Ok ( valid_output)
155
+ match self . property :: < i32 > ( "provider-type" ) {
156
+ // Nvidia Settings/SMI OR Nvidia Settings
157
+ 0 | 1 => Ok ( valid_output) ,
158
+ // Nvidia SMI or Nvidia Optimus
159
+ 2 | 3 => {
160
+ let mut cleaned_output: Vec < String > = vec ! [ ] ;
161
+ for line in valid_output {
162
+ // Grab mostly-correct contents
163
+ let wanted: Vec < & str > = line. split ( "(UUID: " ) . collect ( ) ;
164
+
165
+ // Remove any unwanted chars
166
+ let cleaned_line = wanted[ 1 ] . replace ( ")" , "" ) ;
167
+
168
+ // Add to output
169
+ cleaned_output. push ( cleaned_line) ;
170
+ }
171
+
172
+ Ok ( cleaned_output)
173
+ } ,
174
+ _ => {
175
+ // Return error..
176
+ return Err ( String :: from ( "Invalid provider, check preferences.." ) )
177
+ } ,
178
+ }
163
179
}
164
180
None => {
165
181
// Return error..
@@ -199,8 +215,9 @@ impl Provider {
199
215
];
200
216
*/
201
217
pub fn get_gpu_data ( & self , uuid : & str , property : & str ) -> Result < String , String > {
202
- //println!("ASKED TO FETCH: `{}`", property);//TEST
203
- //println!("TYPE: `{}`", self.property::<i32>("provider_type"));//TEST
218
+ println ! ( "UUID: `{}`" , uuid) ; //TEST
219
+ println ! ( "ASKED TO FETCH: `{}`" , property) ; //TEST
220
+ println ! ( "TYPE: `{}`" , self . property:: <i32 >( "provider_type" ) ) ; //TEST
204
221
205
222
// Translate to appropriate name
206
223
let final_property: String ;
0 commit comments