add credit window
This commit is contained in:
parent
3d4df58282
commit
a87d458001
@ -1,4 +1,8 @@
|
|||||||
use crate::{content, kernel_pkg, sched_ext, KernelBranch, PRETTY_NAME};
|
use crate::APP_GITHUB;
|
||||||
|
use crate::VERSION;
|
||||||
|
use crate::APP_ID;
|
||||||
|
use crate::APP_ICON;
|
||||||
|
use crate::{content, kernel_pkg, sched_ext, KernelBranch};
|
||||||
use adw::prelude::*;
|
use adw::prelude::*;
|
||||||
use adw::*;
|
use adw::*;
|
||||||
use glib::property::PropertyGet;
|
use glib::property::PropertyGet;
|
||||||
@ -59,7 +63,7 @@ pub fn build_ui(app: &adw::Application) {
|
|||||||
}));
|
}));
|
||||||
|
|
||||||
let window_headerbar = adw::HeaderBar::builder()
|
let window_headerbar = adw::HeaderBar::builder()
|
||||||
.title_widget(&adw::WindowTitle::builder().title(PRETTY_NAME).build())
|
.title_widget(&adw::WindowTitle::builder().title("Fedora Kernel Manager").build())
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
let content_stack = gtk::Stack::builder()
|
let content_stack = gtk::Stack::builder()
|
||||||
@ -74,6 +78,8 @@ pub fn build_ui(app: &adw::Application) {
|
|||||||
.width_request(600)
|
.width_request(600)
|
||||||
.height_request(600)
|
.height_request(600)
|
||||||
.resizable(false)
|
.resizable(false)
|
||||||
|
.icon_name(APP_ICON)
|
||||||
|
.startup_id(APP_ID)
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
content_stack.add_named(
|
content_stack.add_named(
|
||||||
@ -98,6 +104,24 @@ pub fn build_ui(app: &adw::Application) {
|
|||||||
glib::Propagation::Proceed
|
glib::Propagation::Proceed
|
||||||
});
|
});
|
||||||
|
|
||||||
|
let credits_button = gtk::Button::builder()
|
||||||
|
.icon_name("dialog-information-symbolic")
|
||||||
|
.build();
|
||||||
|
|
||||||
|
let credits_window = adw::AboutWindow::builder()
|
||||||
|
.application_icon(APP_ICON)
|
||||||
|
.application_name("Fedora Kernel Manager")
|
||||||
|
.transient_for(&window)
|
||||||
|
.version(VERSION)
|
||||||
|
.hide_on_close(true)
|
||||||
|
.developer_name("Cosmo")
|
||||||
|
.issue_url(APP_GITHUB.to_owned() + "/issues")
|
||||||
|
.build();
|
||||||
|
|
||||||
|
window_headerbar.pack_end(&credits_button);
|
||||||
|
credits_button
|
||||||
|
.connect_clicked(clone!(@weak credits_button => move |_| credits_window.present()));
|
||||||
|
|
||||||
window.present();
|
window.present();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -146,10 +146,15 @@ pub fn content(
|
|||||||
.height_request(50)
|
.height_request(50)
|
||||||
.width_request(50)
|
.width_request(50)
|
||||||
.tooltip_text("Configure Sched_EXT settings")
|
.tooltip_text("Configure Sched_EXT settings")
|
||||||
|
.sensitive(is_scx_kernel())
|
||||||
.hexpand(true)
|
.hexpand(true)
|
||||||
.build();
|
.build();
|
||||||
config_kernel_button.add_css_class("circular");
|
config_kernel_button.add_css_class("circular");
|
||||||
|
|
||||||
|
if ! is_scx_kernel() {
|
||||||
|
config_kernel_button.set_tooltip_text(Some("Currently running kernel doesn't support Sched-EXT"));
|
||||||
|
}
|
||||||
|
|
||||||
config_kernel_button.connect_clicked(clone!(@weak content_stack, @weak window => move |_| {
|
config_kernel_button.connect_clicked(clone!(@weak content_stack, @weak window => move |_| {
|
||||||
content_stack.add_named(
|
content_stack.add_named(
|
||||||
&sched_ext::sched_ext_page(&content_stack, &window),
|
&sched_ext::sched_ext_page(&content_stack, &window),
|
||||||
@ -412,8 +417,15 @@ pub fn get_running_kernel_info() -> RunningKernelInfo {
|
|||||||
info
|
info
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn get_current_scheduler(version: String) -> String {
|
fn is_scx_kernel() -> bool {
|
||||||
if Path::new("/sys/kernel/sched_ext/root/ops").exists() {
|
if Path::new("/sys/kernel/sched_ext/root/ops").exists() {
|
||||||
|
true
|
||||||
|
} else {
|
||||||
|
false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
pub fn get_current_scheduler(version: String) -> String {
|
||||||
|
if is_scx_kernel() {
|
||||||
println!("sched_ext is detected, getting scx scheduler");
|
println!("sched_ext is detected, getting scx scheduler");
|
||||||
let scx_sched = match fs::read_to_string("/sys/kernel/sched_ext/root/ops") {
|
let scx_sched = match fs::read_to_string("/sys/kernel/sched_ext/root/ops") {
|
||||||
Ok(t) => t,
|
Ok(t) => t,
|
||||||
|
@ -10,7 +10,9 @@ use gtk::*;
|
|||||||
use crate::gdk::Display;
|
use crate::gdk::Display;
|
||||||
|
|
||||||
const APP_ID: &str = "com.github.cosmicfusion.fedora-kernel-manager";
|
const APP_ID: &str = "com.github.cosmicfusion.fedora-kernel-manager";
|
||||||
const PRETTY_NAME: &str = "Fedora Kernel Manager";
|
pub const VERSION: &str = env!("CARGO_PKG_VERSION");
|
||||||
|
pub const APP_ICON: &str = "com.github.cosmicfusion.fedora-kernel-manager";
|
||||||
|
pub const APP_GITHUB: &str = "https://github.com/CosmicFusion/fedora-kernel-manager";
|
||||||
|
|
||||||
#[derive(Clone)]
|
#[derive(Clone)]
|
||||||
struct RunningKernelInfo {
|
struct RunningKernelInfo {
|
||||||
|
@ -150,13 +150,6 @@ pub fn sched_ext_page(content_stack: >k::Stack, window: &adw::ApplicationWindo
|
|||||||
};
|
};
|
||||||
}));
|
}));
|
||||||
|
|
||||||
let cancel_button = gtk::Button::builder()
|
|
||||||
.halign(Align::End)
|
|
||||||
.label("Cancel Changes")
|
|
||||||
.sensitive(false)
|
|
||||||
.build();
|
|
||||||
cancel_button.add_css_class("pill");
|
|
||||||
|
|
||||||
//
|
//
|
||||||
let (loop0_sender, loop0_receiver) = async_channel::unbounded();
|
let (loop0_sender, loop0_receiver) = async_channel::unbounded();
|
||||||
let loop0_sender = loop0_sender.clone();
|
let loop0_sender = loop0_sender.clone();
|
||||||
@ -168,21 +161,18 @@ pub fn sched_ext_page(content_stack: >k::Stack, window: &adw::ApplicationWindo
|
|||||||
|
|
||||||
let loop0_context = MainContext::default();
|
let loop0_context = MainContext::default();
|
||||||
// The main loop executes the asynchronous block
|
// The main loop executes the asynchronous block
|
||||||
loop0_context.spawn_local(clone!(@weak apply_button, @weak cancel_button, @strong selected_scx_sched, @strong initial_running_kernel_info => async move {
|
loop0_context.spawn_local(clone!(@weak apply_button, @strong selected_scx_sched, @strong initial_running_kernel_info => async move {
|
||||||
while let Ok(_state) = loop0_receiver.recv().await {
|
while let Ok(_state) = loop0_receiver.recv().await {
|
||||||
if *selected_scx_sched.borrow() == initial_running_kernel_info.sched {
|
if *selected_scx_sched.borrow() == initial_running_kernel_info.sched {
|
||||||
apply_button.set_sensitive(false);
|
apply_button.set_sensitive(false);
|
||||||
cancel_button.set_sensitive(false);
|
|
||||||
} else {
|
} else {
|
||||||
apply_button.set_sensitive(true);
|
apply_button.set_sensitive(true);
|
||||||
cancel_button.set_sensitive(true);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}));
|
}));
|
||||||
//
|
//
|
||||||
|
|
||||||
window_bottombar.append(&back_button);
|
window_bottombar.append(&back_button);
|
||||||
window_bottombar.append(&cancel_button);
|
|
||||||
window_bottombar.append(&apply_button);
|
window_bottombar.append(&apply_button);
|
||||||
|
|
||||||
main_box.append(&badge_box);
|
main_box.append(&badge_box);
|
||||||
|
Loading…
Reference in New Issue
Block a user