Skip to content

Commit fd851be

Browse files
authored
Merge pull request #21 from derenv/nvidia_settings
Nvidia settings
2 parents a74db25 + 38ef397 commit fd851be

File tree

7 files changed

+191
-121
lines changed

7 files changed

+191
-121
lines changed

.github/workflows/rust.yml

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,21 +5,20 @@ name: Rust CI
55

66
on:
77
push:
8-
branches: [ main ]
8+
branches: [main]
99
paths-ignore:
10-
- '**.md'
10+
- "**.md"
1111
pull_request:
12-
branches: [ main ]
12+
branches: [main]
1313
paths-ignore:
14-
- '**.md'
14+
- "**.md"
1515

1616
env:
1717
CARGO_TERM_COLOR: always
1818
RUST_TOOLCHAIN: nightly
1919
TOOLCHAIN_PROFILE: minimal
2020
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
2121

22-
2322
jobs:
2423
lints:
2524
name: Run cargo fmt and cargo clippy

src/mainwindow/imp.rs

Lines changed: 15 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -21,16 +21,14 @@
2121
use adwaita::{gio, glib, prelude::*, subclass::prelude::*};
2222
use gio::Settings;
2323
use glib::{
24-
clone, once_cell::sync::Lazy, once_cell::sync::OnceCell, signal::Inhibit,
24+
once_cell::sync::Lazy, once_cell::sync::OnceCell, signal::Inhibit,
2525
subclass::InitializingObject, FromVariant, ParamSpec, Value,
2626
};
2727
use gtk::{
2828
subclass::prelude::*, Button, CompositeTemplate, PolicyType, ScrolledWindow, Stack,
2929
TemplateChild,
3030
};
31-
use std::{
32-
cell::Cell, cell::RefCell, cell::RefMut, rc::Rc, sync::Arc, sync::Mutex, sync::MutexGuard,
33-
};
31+
use std::{cell::Cell, cell::RefCell, cell::RefMut, rc::Rc};
3432

3533
// Modules
3634
use crate::{
@@ -1800,6 +1798,10 @@ impl WindowImpl for MainWindow {
18001798
*
18011799
*/
18021800
fn close_request(&self, window: &Self::Type) -> Inhibit {
1801+
/*
1802+
//NOTE: this was meant for saving to json, probably unecessary now that i'm not using it..
1803+
1804+
18031805
// Create vector for final saving
18041806
let mut save_data: Vec<Vec<(String, String)>> = vec![];
18051807
//let mut save_data: gio::ListStore;
@@ -1830,35 +1832,21 @@ impl WindowImpl for MainWindow {
18301832
//save_data.append(&test_s);
18311833
}
18321834
1833-
// Create collection to store in json
18341835
// TEST OUTPUT
18351836
for gpu in save_data {
18361837
for stat in gpu {
18371838
println!("STAT NAME: `{}` STAT VALUE: `{}`", stat.0, stat.1);
18381839
}
18391840
}
1840-
// let qq = save_data
1841-
// .snapshot() //?
1842-
// .iter()
1843-
// .filter_map(Cast::downcast_ref::<TaskObject>)
1844-
// .map(TaskObject::task_data)
1845-
// .collect();
1846-
1847-
// let gpu_data: Vec<TaskData> = current_page
1848-
// .tasks() // change to "items" and grab all statistic pairs/objects
1849-
// .snapshot() //?
1850-
// .iter()
1851-
// .filter_map(Cast::downcast_ref::<TaskObject>)
1852-
// .map(TaskObject::task_data)
1853-
// .collect();
1854-
1855-
// Store in json
1856-
// Create json file object
1857-
//let file = File::create(data_path()).expect("Could not create json file.");
1858-
1859-
// Write json file
1860-
// serde_json::to_writer(file, &gpu_data)
1861-
// .expect("Could not write data to json file");
1841+
*/
1842+
1843+
//NOTE: This doesn't work for some reason, but seems to be to do with
1844+
// nvidia-settings or the Cancellable implementation in the rust bindings..
1845+
// Cancel any under-way sub processes
1846+
// if let Some(control) = Cancellable::current() {
1847+
// println!("Closing open windows..");
1848+
// control.cancel();
1849+
// }
18621850

18631851
// Store sub-window states in settings
18641852
self.update_setting("app-settings-open", false);

src/mainwindow/mod.rs

Lines changed: 54 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -274,57 +274,63 @@ impl MainWindow {
274274
//let def = shell::Edge::Top;
275275
//let dd = gio::DesktopAppInfo::from_filename("nvidia-settings.desktop");
276276

277-
if !app_settings_open {
278-
// Grab current stored provider
279-
let mut provider: Option<Provider> = window.property("provider");
280-
281-
// Check if provider exists
282-
match provider {
283-
Some(prov) => {
284-
// Open Nvidia Settings
285-
match prov.open_settings() {
286-
Ok(_result) => {
287-
println!("Opening the Nvidia Settings app..");
288-
},
289-
Err(err) => println!(
290-
"An error occured: {}",
291-
err
292-
),
293-
}
294-
},
295-
None => {
296-
// Check provider type
297-
let provider_type: i32 = window.imp().get_setting::<i32>("provider");
298-
299-
// Create new provider
300-
//println!("Creating new Provider..");//TEST
301-
window.set_property("provider", Some(window.imp().create_provider(provider_type)));
302-
303-
// Grab new provider
304-
provider = window.property("provider");
305-
306-
// Open Nvidia Settings
307-
println!("Opening the Nvidia Settings app..");//TEST
308-
match provider {
309-
Some(prov) => {
310-
// Open Nvidia Settings
311-
match prov.open_settings() {
312-
Ok(_result) => {
313-
println!("Opening the Nvidia Settings app..");
314-
},
315-
Err(err) => println!(
316-
"An error occured: {}",
317-
err
318-
),
319-
}
320-
},
321-
None => panic!("Cannot find `Provider`!")
277+
match app_settings_open {
278+
false => {
279+
// Grab current stored provider
280+
let mut provider: Option<Provider> = window.property("provider");
281+
282+
// Check if provider exists
283+
match provider {
284+
Some(prov) => {
285+
// Open Nvidia Settings
286+
match prov.open_settings() {
287+
Ok(_) => {
288+
println!("Opening the Nvidia Settings app..");
289+
290+
// Set state in settings
291+
window.imp().update_setting::<bool>("nvidia-settings-open", true);
292+
},
293+
Err(err) => println!(
294+
"An error occured: {}",
295+
err
296+
),
297+
}
298+
},
299+
None => {
300+
// Check provider type
301+
let provider_type: i32 = window.imp().get_setting::<i32>("provider");
302+
303+
// Create new provider
304+
//println!("Creating new Provider..");//TEST
305+
window.set_property("provider", Some(window.imp().create_provider(provider_type)));
306+
307+
// Grab new provider
308+
provider = window.property("provider");
309+
310+
// Open Nvidia Settings
311+
println!("Opening the Nvidia Settings app..");//TEST
312+
match provider {
313+
Some(prov) => {
314+
// Open Nvidia Settings
315+
match prov.open_settings() {
316+
Ok(_) => {
317+
println!("Opening the Nvidia Settings app..");
318+
319+
// Set state in settings
320+
window.imp().update_setting::<bool>("nvidia-settings-open", true);
321+
},
322+
Err(err) => println!(
323+
"An error occured: {}",
324+
err
325+
),
326+
}
327+
},
328+
None => panic!("Cannot find `Provider`!")
329+
}
322330
}
323331
}
324332
}
325-
326-
// Set state in settings
327-
window.imp().update_setting::<bool>("nvidia-settings-open", true);
333+
true => println!("Nvidia Settings app already open!"),
328334
}
329335
}));
330336
self.add_action(&open_nvidia_settings);

src/processor/mod.rs

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ use gtk::{gio, glib, prelude::ObjectExt};
2727
use std::ffi::OsStr;
2828

2929
// Crates
30-
use crate::subprocess::subprocess::exec_communicate;
30+
use crate::subprocess::subprocess::exec_communicate_sync;
3131

3232
// GObject wrapper for Processor
3333
glib::wrapper! {
@@ -194,14 +194,14 @@ impl Processor {
194194
];
195195

196196
// Run process, get output
197-
match exec_communicate(&argv, None::<&gio::Cancellable>) {
197+
match exec_communicate_sync(&argv, None::<&gio::Cancellable>) {
198198
Ok(return_val) => match return_val {
199199
// ACTUAL
200200
(None, None) => return Ok(None),
201201

202202
(None, Some(stderr_buffer)) => {
203203
println!(
204-
"Process failed with error: {}",
204+
"Process failed with error: `{}`",
205205
String::from_utf8_lossy(&stderr_buffer)
206206
);
207207
}
@@ -212,7 +212,7 @@ impl Processor {
212212

213213
(Some(stdout_buffer), Some(stderr_buffer)) => {
214214
println!(
215-
"Process succeeded, but with error: {}",
215+
"Process succeeded, but with error: `{}`",
216216
String::from_utf8_lossy(&stderr_buffer)
217217
);
218218

@@ -234,14 +234,14 @@ impl Processor {
234234
];
235235

236236
// Run process, get output
237-
match exec_communicate(&argv, None::<&gio::Cancellable>) {
237+
match exec_communicate_sync(&argv, None::<&gio::Cancellable>) {
238238
Ok(return_val) => match return_val {
239239
// ACTUAL
240240
(None, None) => return Ok(None),
241241

242242
(None, Some(stderr_buffer)) => {
243243
println!(
244-
"Process failed with error: {}",
244+
"Process failed with error: `{}`",
245245
String::from_utf8_lossy(&stderr_buffer)
246246
);
247247
}
@@ -252,7 +252,7 @@ impl Processor {
252252

253253
(Some(stdout_buffer), Some(stderr_buffer)) => {
254254
println!(
255-
"Process failed with error: {}",
255+
"Process failed with error: `{}`",
256256
String::from_utf8_lossy(&stderr_buffer)
257257
);
258258

@@ -273,14 +273,14 @@ impl Processor {
273273
];
274274

275275
// Run process, get output
276-
match exec_communicate(&argv, None::<&gio::Cancellable>) {
276+
match exec_communicate_sync(&argv, None::<&gio::Cancellable>) {
277277
Ok(return_val) => match return_val {
278278
// ACTUAL
279279
(None, None) => return Ok(None),
280280

281281
(None, Some(stderr_buffer)) => {
282282
println!(
283-
"Process failed with error: {}",
283+
"Process failed with error: `{}`",
284284
String::from_utf8_lossy(&stderr_buffer)
285285
);
286286
}
@@ -291,7 +291,7 @@ impl Processor {
291291

292292
(Some(stdout_buffer), Some(stderr_buffer)) => {
293293
println!(
294-
"Process failed with error: {}",
294+
"Process failed with error: `{}`",
295295
String::from_utf8_lossy(&stderr_buffer)
296296
);
297297

@@ -311,14 +311,14 @@ impl Processor {
311311
];
312312

313313
// Run process, get output
314-
match exec_communicate(&argv, None::<&gio::Cancellable>) {
314+
match exec_communicate_sync(&argv, None::<&gio::Cancellable>) {
315315
Ok(return_val) => match return_val {
316316
// ACTUAL
317317
(None, None) => return Ok(None),
318318

319319
(None, Some(stderr_buffer)) => {
320320
println!(
321-
"Process failed with error: {}",
321+
"Process failed with error: `{}`",
322322
String::from_utf8_lossy(&stderr_buffer)
323323
);
324324
}
@@ -329,7 +329,7 @@ impl Processor {
329329

330330
(Some(stdout_buffer), Some(stderr_buffer)) => {
331331
println!(
332-
"Process failed with error: {}",
332+
"Process failed with error: `{}`",
333333
String::from_utf8_lossy(&stderr_buffer)
334334
);
335335

@@ -345,14 +345,14 @@ impl Processor {
345345
let argv: [&OsStr; 2] = [call_stack_items[0], call_stack_items[1]];
346346

347347
// Run process, get output
348-
match exec_communicate(&argv, None::<&gio::Cancellable>) {
348+
match exec_communicate_sync(&argv, None::<&gio::Cancellable>) {
349349
Ok(return_val) => match return_val {
350350
// ACTUAL
351351
(None, None) => return Ok(None),
352352

353353
(None, Some(stderr_buffer)) => {
354354
println!(
355-
"Process failed with error: {}",
355+
"Process failed with error: `{}`",
356356
String::from_utf8_lossy(&stderr_buffer)
357357
);
358358
}
@@ -363,7 +363,7 @@ impl Processor {
363363

364364
(Some(stdout_buffer), Some(stderr_buffer)) => {
365365
println!(
366-
"Process failed with error: {}",
366+
"Process failed with error: `{}`",
367367
String::from_utf8_lossy(&stderr_buffer)
368368
);
369369

0 commit comments

Comments
 (0)