aboutsummaryrefslogtreecommitdiff
path: root/src/input.rs
diff options
context:
space:
mode:
authorKirill Chibisov <contact@kchibisov.com>2023-11-02 00:09:31 +0400
committerIvan Molodetskikh <yalterz@gmail.com>2023-11-08 19:09:11 +0400
commiteb7d20c638e8912747ee21a4b8de95dd27bb7aba (patch)
tree521ed085c5340a4297f3c3ee98b7b191a95800ef /src/input.rs
parent195ca80c3959c35819ef33d84efd5970321b7614 (diff)
downloadniri-eb7d20c638e8912747ee21a4b8de95dd27bb7aba.tar.gz
niri-eb7d20c638e8912747ee21a4b8de95dd27bb7aba.tar.bz2
niri-eb7d20c638e8912747ee21a4b8de95dd27bb7aba.zip
Add action to switch layouts
Allow users to trigger layout change with custom bindings.
Diffstat (limited to 'src/input.rs')
-rw-r--r--src/input.rs13
1 files changed, 12 insertions, 1 deletions
diff --git a/src/input.rs b/src/input.rs
index b57c4c20..83f186fd 100644
--- a/src/input.rs
+++ b/src/input.rs
@@ -17,7 +17,7 @@ use smithay::input::pointer::{
use smithay::utils::SERIAL_COUNTER;
use smithay::wayland::tablet_manager::{TabletDescriptor, TabletSeatTrait};
-use crate::config::{Action, Binds, Modifiers};
+use crate::config::{Action, Binds, LayoutAction, Modifiers};
use crate::niri::State;
use crate::screenshot_ui::ScreenshotUi;
use crate::utils::{center, get_monotonic_time, spawn};
@@ -90,6 +90,7 @@ impl State {
| Action::ChangeVt(_)
| Action::Suspend
| Action::PowerOffMonitors
+ | Action::SwitchLayout(_)
)
{
return;
@@ -186,6 +187,16 @@ impl State {
self.niri.layout.toggle_fullscreen(&window);
}
}
+ Action::SwitchLayout(action) => {
+ self.niri
+ .seat
+ .get_keyboard()
+ .unwrap()
+ .with_kkb_state(self, |mut state| match action {
+ LayoutAction::Next => state.cycle_next_layout(),
+ LayoutAction::Prev => state.cycle_prev_layout(),
+ });
+ }
Action::MoveColumnLeft => {
self.niri.layout.move_left();
// FIXME: granular