Skip to content

Commit 732a5e2

Browse files
committed
Fix: do not attempt to use keybinder in wayland
1 parent a5398c8 commit 732a5e2

File tree

2 files changed

+23
-12
lines changed

2 files changed

+23
-12
lines changed

crates/findex-daemon/src/main.rs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
use std::ffi::OsStr;
12
use daemonize::Daemonize;
23
use inotify::{Inotify, WatchMask};
34
use nix::libc::{pid_t, time_t};
@@ -73,7 +74,11 @@ fn findex_daemon(current_time: time_t) {
7374
let mut buf = [0; 1024];
7475
match inotify.read_events(&mut buf) {
7576
Ok(mut events) => {
76-
if events.next().is_some() {
77+
if let Some(event) = events.next() {
78+
if event.name == Some(OsStr::new("toggle_file")) && events.next().is_none() {
79+
continue;
80+
}
81+
7782
println!("[INFO] configs changed, restarting findex");
7883
if findex_process.poll().is_none() {
7984
findex_process.kill().unwrap();

crates/findex/src/gui/mod.rs

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ pub struct GUI {
2424
pub window: Window,
2525
search_box: Entry,
2626
result_list: ListBox,
27-
keybinder: KeyBinder<KeypressHandlerPayload>,
27+
keybinder: Option<KeyBinder<KeypressHandlerPayload>>,
2828
}
2929

3030
impl GUI {
@@ -110,25 +110,31 @@ impl GUI {
110110
}
111111
});
112112

113-
let keybinder = match KeyBinder::new(true) {
114-
Ok(instance) => instance,
115-
Err(_e) => {
116-
eprintln!("[ERROR] Keybinder is not supported");
117-
std::process::exit(1);
118-
}
119-
};
113+
let keybinder;
114+
if std::env::var("WAYLAND_DISPLAY").is_err() {
115+
keybinder = match KeyBinder::new(true) {
116+
Ok(instance) => Some(instance),
117+
Err(_e) => {
118+
eprintln!("[ERROR] Keybinder is not supported");
119+
std::process::exit(1);
120+
}
121+
};
122+
} else {
123+
keybinder = None;
124+
}
125+
120126
Self {
127+
keybinder,
121128
window,
122-
search_box,
123129
result_list,
124-
keybinder,
130+
search_box,
125131
}
126132
}
127133

128134
pub fn wait_for_toggle(&mut self) {
129135
if std::env::var("WAYLAND_DISPLAY").is_err() {
130136
assert!(
131-
self.keybinder.bind(
137+
self.keybinder.as_mut().unwrap().bind(
132138
&FINDEX_CONFIG.toggle_key,
133139
|_, payload| {
134140
Self::show_window(&payload.window, &payload.search_box, &payload.result_list);

0 commit comments

Comments
 (0)