add layer option, fixes #43
This commit is contained in:
parent
79e8ac0a36
commit
01802fe84e
2 changed files with 44 additions and 4 deletions
|
|
@ -89,6 +89,28 @@ pub enum Mode {
|
||||||
Emoji,
|
Emoji,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[derive(Clone, Debug, Serialize, Deserialize)]
|
||||||
|
pub enum Layer {
|
||||||
|
Background,
|
||||||
|
Bottom,
|
||||||
|
Top,
|
||||||
|
Overlay
|
||||||
|
}
|
||||||
|
|
||||||
|
impl FromStr for Layer {
|
||||||
|
type Err = String;
|
||||||
|
|
||||||
|
fn from_str(s: &str) -> Result<Self, Self::Err> {
|
||||||
|
match s {
|
||||||
|
"Background" => Ok(Layer::Background),
|
||||||
|
"Bottom" => Ok(Layer::Bottom),
|
||||||
|
"Top" => Ok(Layer::Top),
|
||||||
|
"Overlay" => Ok(Layer::Overlay),
|
||||||
|
_ => Err(format!("{s} is not a valid layer.")),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#[derive(Debug, Error)]
|
#[derive(Debug, Error)]
|
||||||
pub enum ArgsError {
|
pub enum ArgsError {
|
||||||
#[error("input is not valid {0}")]
|
#[error("input is not valid {0}")]
|
||||||
|
|
@ -344,9 +366,13 @@ pub struct Config {
|
||||||
/// If set to `true` the search field willOption<> be hidden.
|
/// If set to `true` the search field willOption<> be hidden.
|
||||||
#[clap(long = "hide-search")]
|
#[clap(long = "hide-search")]
|
||||||
hide_search: Option<bool>,
|
hide_search: Option<bool>,
|
||||||
|
|
||||||
#[clap(long = "dynamic-lines")]
|
#[clap(long = "dynamic-lines")]
|
||||||
dynamic_lines: Option<bool>, // todo support this
|
dynamic_lines: Option<bool>, // todo support this
|
||||||
layer: Option<String>, // todo support this
|
|
||||||
|
#[clap(long = "layer")]
|
||||||
|
layer: Option<Layer>,
|
||||||
|
|
||||||
copy_exec: Option<String>, // todo support this
|
copy_exec: Option<String>, // todo support this
|
||||||
#[clap(long = "single_click")]
|
#[clap(long = "single_click")]
|
||||||
single_click: Option<bool>, // todo support this
|
single_click: Option<bool>, // todo support this
|
||||||
|
|
@ -579,6 +605,11 @@ impl Config {
|
||||||
pub fn version(&self) -> bool {
|
pub fn version(&self) -> bool {
|
||||||
self.version
|
self.version
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[must_use]
|
||||||
|
pub fn layer(&self) -> Layer {
|
||||||
|
self.layer.clone().unwrap_or(Layer::Top)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn default_false() -> bool {
|
fn default_false() -> bool {
|
||||||
|
|
|
||||||
|
|
@ -485,6 +485,17 @@ fn modifiers_from_mask(mask: gdk4::ModifierType) -> HashSet<Modifier> {
|
||||||
modifiers
|
modifiers
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl From<config::Layer> for gtk4_layer_shell::Layer{
|
||||||
|
fn from(value: config::Layer) -> Self {
|
||||||
|
match value {
|
||||||
|
config::Layer::Background => gtk4_layer_shell::Layer::Background,
|
||||||
|
config::Layer::Bottom => gtk4_layer_shell::Layer::Bottom,
|
||||||
|
config::Layer::Top => gtk4_layer_shell::Layer::Top,
|
||||||
|
config::Layer::Overlay => gtk4_layer_shell::Layer::Overlay,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#[derive(Clone, PartialEq, Debug)]
|
#[derive(Clone, PartialEq, Debug)]
|
||||||
pub struct KeyBinding {
|
pub struct KeyBinding {
|
||||||
pub key: Key,
|
pub key: Key,
|
||||||
|
|
@ -674,9 +685,7 @@ fn build_ui<T, P>(
|
||||||
if !config.normal_window() {
|
if !config.normal_window() {
|
||||||
// Initialize the window as a layer
|
// Initialize the window as a layer
|
||||||
ui_elements.window.init_layer_shell();
|
ui_elements.window.init_layer_shell();
|
||||||
ui_elements
|
ui_elements.window.set_layer(config.layer().into());
|
||||||
.window
|
|
||||||
.set_layer(gtk4_layer_shell::Layer::Overlay);
|
|
||||||
ui_elements
|
ui_elements
|
||||||
.window
|
.window
|
||||||
.set_keyboard_mode(KeyboardMode::Exclusive);
|
.set_keyboard_mode(KeyboardMode::Exclusive);
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue