1
0
Fork 0
forked from wry/wry
wry/default-config/src/lib.rs
2022-03-13 23:16:26 +01:00

113 lines
3.8 KiB
Rust

use jay_config::embedded::grab_input_device;
use jay_config::keyboard::mods::{Modifiers, ALT, CTRL, SHIFT};
use jay_config::keyboard::syms::{SYM_Super_L, SYM_b, SYM_comma, SYM_d, SYM_f, SYM_h, SYM_j, SYM_k, SYM_l, SYM_p, SYM_period, SYM_q, SYM_r, SYM_t, SYM_v, SYM_y, SYM_F1, SYM_F9, SYM_F12, SYM_F11, SYM_F10, SYM_F8, SYM_F7, SYM_F6, SYM_F5, SYM_F4, SYM_F3, SYM_F2};
use jay_config::theme::{get_title_height, set_title_color, set_title_height, Color};
use jay_config::Axis::{Horizontal, Vertical};
use jay_config::Direction::{Down, Left, Right, Up};
use jay_config::{config, create_seat, input_devices, on_new_input_device, quit, Command, Seat, switch_to_vt};
use rand::Rng;
const MOD: Modifiers = ALT;
fn configure_seat(s: Seat) {
log::info!("Configuring seat {:?}", s);
let change_rate = move |delta| {
let (rate, delay) = s.repeat_rate();
let new_rate = rate - delta;
let new_delay = delay + 10 * delta;
log::info!("Changing repeat rate to {}/{}", new_rate, new_delay);
s.set_repeat_rate(new_rate, new_delay);
};
s.bind(CTRL | SHIFT | SYM_l, move || change_rate(-1));
s.bind(CTRL | SHIFT | SYM_r, move || change_rate(1));
s.bind(MOD | SYM_comma, move || {
let mut rng = rand::thread_rng();
set_title_color(Color {
r: rng.gen(),
g: rng.gen(),
b: rng.gen(),
a: rng.gen(),
})
});
s.bind(MOD | SYM_period, move || {
set_title_height(get_title_height() + 1)
});
s.bind(MOD | SYM_h, move || s.focus(Left));
s.bind(MOD | SYM_j, move || s.focus(Down));
s.bind(MOD | SYM_k, move || s.focus(Up));
s.bind(MOD | SYM_l, move || s.focus(Right));
s.bind(MOD | SYM_d, move || s.create_split(Horizontal));
s.bind(MOD | SYM_v, move || s.create_split(Vertical));
s.bind(MOD | SYM_t, move || {
s.set_split(s.split().other());
});
s.bind(MOD | SYM_f, move || {
s.focus_parent();
});
s.bind(MOD | SHIFT | SYM_f, move || {
s.toggle_floating();
});
s.bind(MOD | SHIFT | SYM_h, move || s.move_(Left));
s.bind(MOD | SHIFT | SYM_j, move || s.move_(Down));
s.bind(MOD | SHIFT | SYM_k, move || s.move_(Up));
s.bind(MOD | SHIFT | SYM_l, move || s.move_(Right));
s.bind(SYM_Super_L, || Command::new("alacritty").spawn());
s.bind(MOD | SYM_p, || Command::new("xeyes").spawn());
s.bind(MOD | SYM_q, || quit());
s.bind(CTRL | ALT | SYM_F1, || switch_to_vt(1));
s.bind(CTRL | ALT | SYM_F2, || switch_to_vt(2));
s.bind(CTRL | ALT | SYM_F3, || switch_to_vt(3));
s.bind(CTRL | ALT | SYM_F4, || switch_to_vt(4));
s.bind(CTRL | ALT | SYM_F5, || switch_to_vt(5));
s.bind(CTRL | ALT | SYM_F6, || switch_to_vt(6));
s.bind(CTRL | ALT | SYM_F7, || switch_to_vt(7));
s.bind(CTRL | ALT | SYM_F8, || switch_to_vt(8));
s.bind(CTRL | ALT | SYM_F9, || switch_to_vt(9));
s.bind(CTRL | ALT | SYM_F10, || switch_to_vt(10));
s.bind(CTRL | ALT | SYM_F11, || switch_to_vt(11));
s.bind(CTRL | ALT | SYM_F12, || switch_to_vt(12));
fn do_grab(s: Seat, grab: bool) {
for device in s.input_devices() {
log::info!(
"{}rabbing keyboard {:?}",
if grab { "G" } else { "Ung" },
device.0
);
grab_input_device(device, grab);
}
if grab {
s.unbind(SYM_y);
s.bind(MOD | SYM_b, move || do_grab(s, false));
} else {
s.unbind(MOD | SYM_b);
s.bind(SYM_y, move || do_grab(s, true));
}
}
do_grab(s, false);
}
pub fn configure() {
let seat = create_seat("default");
configure_seat(seat);
for device in input_devices() {
device.set_seat(seat);
}
on_new_input_device(move |device| device.set_seat(seat));
}
config!(configure);