aboutsummaryrefslogtreecommitdiff
path: root/src/input.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/input.rs')
-rw-r--r--src/input.rs77
1 files changed, 73 insertions, 4 deletions
diff --git a/src/input.rs b/src/input.rs
index 35482ed9..e5dba51d 100644
--- a/src/input.rs
+++ b/src/input.rs
@@ -34,6 +34,14 @@ enum Action {
SwitchWorkspaceUp,
MoveToWorkspaceDown,
MoveToWorkspaceUp,
+ FocusMonitorLeft,
+ FocusMonitorRight,
+ FocusMonitorDown,
+ FocusMonitorUp,
+ MoveToMonitorLeft,
+ MoveToMonitorRight,
+ MoveToMonitorDown,
+ MoveToMonitorUp,
ToggleWidth,
ToggleFullWidth,
}
@@ -80,22 +88,35 @@ fn action(comp_mod: CompositorMod, keysym: KeysymHandle, mods: ModifiersState) -
KEY_n => Action::Spawn("nautilus".to_owned()),
KEY_q => Action::CloseWindow,
KEY_F => Action::ToggleFullscreen,
+ KEY_comma => Action::ConsumeIntoColumn,
+ KEY_period => Action::ExpelFromColumn,
+ KEY_r => Action::ToggleWidth,
+ KEY_f => Action::ToggleFullWidth,
+ // Move to monitor.
+ KEY_H | KEY_Left if mods.shift && mods.ctrl => Action::MoveToMonitorLeft,
+ KEY_L | KEY_Right if mods.shift && mods.ctrl => Action::MoveToMonitorRight,
+ KEY_J | KEY_Down if mods.shift && mods.ctrl => Action::MoveToMonitorDown,
+ KEY_K | KEY_Up if mods.shift && mods.ctrl => Action::MoveToMonitorUp,
+ // Focus monitor.
+ KEY_H | KEY_Left if mods.shift => Action::FocusMonitorLeft,
+ KEY_L | KEY_Right if mods.shift => Action::FocusMonitorRight,
+ KEY_J | KEY_Down if mods.shift => Action::FocusMonitorDown,
+ KEY_K | KEY_Up if mods.shift => Action::FocusMonitorUp,
+ // Move.
KEY_h | KEY_Left if mods.ctrl => Action::MoveLeft,
KEY_l | KEY_Right if mods.ctrl => Action::MoveRight,
KEY_j | KEY_Down if mods.ctrl => Action::MoveDown,
KEY_k | KEY_Up if mods.ctrl => Action::MoveUp,
+ // Focus.
KEY_h | KEY_Left => Action::FocusLeft,
KEY_l | KEY_Right => Action::FocusRight,
KEY_j | KEY_Down => Action::FocusDown,
KEY_k | KEY_Up => Action::FocusUp,
+ // Workspaces.
KEY_u if mods.ctrl => Action::MoveToWorkspaceDown,
KEY_i if mods.ctrl => Action::MoveToWorkspaceUp,
KEY_u => Action::SwitchWorkspaceDown,
KEY_i => Action::SwitchWorkspaceUp,
- KEY_comma => Action::ConsumeIntoColumn,
- KEY_period => Action::ExpelFromColumn,
- KEY_r => Action::ToggleWidth,
- KEY_f => Action::ToggleFullWidth,
_ => Action::None,
}
}
@@ -229,6 +250,54 @@ impl Niri {
Action::ToggleFullWidth => {
self.monitor_set.toggle_full_width();
}
+ Action::FocusMonitorLeft => {
+ if let Some(output) = self.output_left() {
+ self.monitor_set.focus_output(&output);
+ self.move_cursor_to_output(&output);
+ }
+ }
+ Action::FocusMonitorRight => {
+ if let Some(output) = self.output_right() {
+ self.monitor_set.focus_output(&output);
+ self.move_cursor_to_output(&output);
+ }
+ }
+ Action::FocusMonitorDown => {
+ if let Some(output) = self.output_down() {
+ self.monitor_set.focus_output(&output);
+ self.move_cursor_to_output(&output);
+ }
+ }
+ Action::FocusMonitorUp => {
+ if let Some(output) = self.output_up() {
+ self.monitor_set.focus_output(&output);
+ self.move_cursor_to_output(&output);
+ }
+ }
+ Action::MoveToMonitorLeft => {
+ if let Some(output) = self.output_left() {
+ self.monitor_set.move_to_output(&output);
+ self.move_cursor_to_output(&output);
+ }
+ }
+ Action::MoveToMonitorRight => {
+ if let Some(output) = self.output_right() {
+ self.monitor_set.move_to_output(&output);
+ self.move_cursor_to_output(&output);
+ }
+ }
+ Action::MoveToMonitorDown => {
+ if let Some(output) = self.output_down() {
+ self.monitor_set.move_to_output(&output);
+ self.move_cursor_to_output(&output);
+ }
+ }
+ Action::MoveToMonitorUp => {
+ if let Some(output) = self.output_up() {
+ self.monitor_set.move_to_output(&output);
+ self.move_cursor_to_output(&output);
+ }
+ }
}
}
}