improve dmenu style, fix config loading issues
This commit is contained in:
parent
eafd962276
commit
818cc41aac
7 changed files with 29 additions and 14 deletions
|
@ -2,9 +2,9 @@ image_size=0
|
||||||
columns=999
|
columns=999
|
||||||
allow_images=false
|
allow_images=false
|
||||||
orientation="Horizontal"
|
orientation="Horizontal"
|
||||||
row_bow_orientation="Horizontal"
|
row_box_orientation="Horizontal"
|
||||||
content_halign="Start"
|
content_halign="Start"
|
||||||
height="0"
|
|
||||||
width="100%"
|
width="100%"
|
||||||
hide_scroll=true
|
hide_scroll=true
|
||||||
location=["Top"]
|
location=["Top"]
|
||||||
|
lines=1
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
image_size=64
|
image_size=64
|
||||||
columns=6
|
columns=6
|
||||||
orientation="Vertical"
|
orientation="Vertical"
|
||||||
row_bow_orientation="Vertical"
|
row_box_orientation="Vertical"
|
||||||
content_halign="Center"
|
content_halign="Center"
|
||||||
height="70%"
|
height="70%"
|
||||||
width="60%"
|
width="60%"
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
image_size=64
|
image_size=64
|
||||||
columns=6
|
columns=6
|
||||||
orientation="Vertical"
|
orientation="Vertical"
|
||||||
row_bow_orientation="Vertical"
|
row_box_orientation="Vertical"
|
||||||
content_halign="Center"
|
content_halign="Center"
|
||||||
height="105%"
|
height="105%"
|
||||||
width="100%"
|
width="100%"
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
image_size=64
|
image_size=64
|
||||||
columns=6
|
columns=6
|
||||||
orientation="Vertical"
|
orientation="Vertical"
|
||||||
row_bow_orientation="Vertical"
|
row_box_orientation="Vertical"
|
||||||
content_halign="Center"
|
content_halign="Center"
|
||||||
height="70%"
|
height="70%"
|
||||||
width="60%"
|
width="60%"
|
||||||
|
|
|
@ -57,7 +57,6 @@ pub enum CustomKeyHintLocation {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Clone, Debug, Serialize, Deserialize, PartialEq)]
|
#[derive(Clone, Debug, Serialize, Deserialize, PartialEq)]
|
||||||
|
|
||||||
pub enum KeyDetectionType {
|
pub enum KeyDetectionType {
|
||||||
/// Raw keyboard value, might not be correct all layouts
|
/// Raw keyboard value, might not be correct all layouts
|
||||||
Code,
|
Code,
|
||||||
|
@ -282,8 +281,13 @@ pub struct Config {
|
||||||
#[clap(short = 'a', long = "no-actions")]
|
#[clap(short = 'a', long = "no-actions")]
|
||||||
no_actions: Option<bool>,
|
no_actions: Option<bool>,
|
||||||
|
|
||||||
|
/// If set, the given amount tof lines will be shown
|
||||||
#[clap(short = 'L', long = "lines")]
|
#[clap(short = 'L', long = "lines")]
|
||||||
lines: Option<i32>, // todo support this
|
lines: Option<i32>,
|
||||||
|
|
||||||
|
/// Additional space to add to the window when `lines` is used.
|
||||||
|
#[clap(long = "line-additional-space")]
|
||||||
|
lines_additional_space: Option<i32>,
|
||||||
|
|
||||||
#[clap(short = 'w', long = "columns")]
|
#[clap(short = 'w', long = "columns")]
|
||||||
columns: Option<u32>,
|
columns: Option<u32>,
|
||||||
|
@ -342,7 +346,7 @@ pub struct Config {
|
||||||
#[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: bool, // todo support this
|
dynamic_lines: Option<bool>, // todo support this
|
||||||
layer: Option<String>, // todo support this
|
layer: Option<String>, // todo support this
|
||||||
copy_exec: Option<String>, // todo support this
|
copy_exec: Option<String>, // todo support this
|
||||||
#[clap(long = "single_click")]
|
#[clap(long = "single_click")]
|
||||||
|
@ -472,7 +476,7 @@ impl Config {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[must_use]
|
#[must_use]
|
||||||
pub fn row_bow_orientation(&self) -> Orientation {
|
pub fn row_box_orientation(&self) -> Orientation {
|
||||||
self.row_box_orientation.unwrap_or(Orientation::Horizontal)
|
self.row_box_orientation.unwrap_or(Orientation::Horizontal)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -566,6 +570,11 @@ impl Config {
|
||||||
pub fn lines(&self) -> Option<i32> {
|
pub fn lines(&self) -> Option<i32> {
|
||||||
self.lines
|
self.lines
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[must_use]
|
||||||
|
pub fn lines_additional_space(&self) -> i32 {
|
||||||
|
self.lines_additional_space.unwrap_or(0)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn default_false() -> bool {
|
fn default_false() -> bool {
|
||||||
|
@ -722,6 +731,7 @@ pub fn load_config(args_opt: Option<&Config>) -> Result<Config, Error> {
|
||||||
let config_path = conf_path(args_opt.as_ref().and_then(|c| c.cfg_path.as_ref()));
|
let config_path = conf_path(args_opt.as_ref().and_then(|c| c.cfg_path.as_ref()));
|
||||||
match config_path {
|
match config_path {
|
||||||
Ok(path) => {
|
Ok(path) => {
|
||||||
|
log::debug!("loading config from {}", path.display());
|
||||||
let toml_content = fs::read_to_string(path).map_err(|e| Error::Io(format!("{e}")))?;
|
let toml_content = fs::read_to_string(path).map_err(|e| Error::Io(format!("{e}")))?;
|
||||||
let mut config: Config =
|
let mut config: Config =
|
||||||
toml::from_str(&toml_content).map_err(|e| Error::ParsingError(format!("{e}")))?;
|
toml::from_str(&toml_content).map_err(|e| Error::ParsingError(format!("{e}")))?;
|
||||||
|
|
|
@ -1176,13 +1176,11 @@ fn window_show_resize<T: Clone + 'static>(config: &Config, ui: &Rc<UiElements<T>
|
||||||
// todo fix this eventually properly, so baseline is always set and not only in 85% of cases.
|
// todo fix this eventually properly, so baseline is always set and not only in 85% of cases.
|
||||||
let height = if baseline > 0 {
|
let height = if baseline > 0 {
|
||||||
baseline
|
baseline
|
||||||
} else if config.allow_images() {
|
|
||||||
i32::from(config.image_size()) // wild guess that image makes the most part of the row ...
|
|
||||||
} else {
|
} else {
|
||||||
nat // for my configuration way bigger than baseline
|
nat // for my configuration way bigger than baseline
|
||||||
};
|
};
|
||||||
|
|
||||||
Some((height_search + height) * lines)
|
Some((height_search + height) * lines + config.lines_additional_space())
|
||||||
} else {
|
} else {
|
||||||
log::warn!("No widget for height calculation available");
|
log::warn!("No widget for height calculation available");
|
||||||
Some(0)
|
Some(0)
|
||||||
|
@ -1330,7 +1328,7 @@ fn create_menu_row<T: Clone + 'static + Send>(
|
||||||
row.set_halign(Align::Fill);
|
row.set_halign(Align::Fill);
|
||||||
row.set_widget_name("row");
|
row.set_widget_name("row");
|
||||||
|
|
||||||
let row_box = gtk4::Box::new(meta.config.row_bow_orientation().into(), 0);
|
let row_box = gtk4::Box::new(meta.config.row_box_orientation().into(), 0);
|
||||||
row_box.set_hexpand(true);
|
row_box.set_hexpand(true);
|
||||||
row_box.set_vexpand(false);
|
row_box.set_vexpand(false);
|
||||||
row_box.set_halign(Align::Fill);
|
row_box.set_halign(Align::Fill);
|
||||||
|
|
|
@ -11,8 +11,15 @@ fn main() -> anyhow::Result<()> {
|
||||||
.init();
|
.init();
|
||||||
|
|
||||||
let args = config::parse_args();
|
let args = config::parse_args();
|
||||||
let config = config::load_config(Some(&args)).unwrap_or(args);
|
|
||||||
|
|
||||||
|
let config = config::load_config(Some(&args));
|
||||||
|
let config = match config {
|
||||||
|
Ok(c) => c,
|
||||||
|
Err(e) => {
|
||||||
|
log::error!("error during config load, skipping it, {e}");
|
||||||
|
args
|
||||||
|
}
|
||||||
|
};
|
||||||
fork_if_configured(&config);
|
fork_if_configured(&config);
|
||||||
|
|
||||||
if let Some(show) = &config.show() {
|
if let Some(show) = &config.show() {
|
||||||
|
|
Loading…
Add table
Reference in a new issue