mirror of
https://github.com/niri-wm/niri.git
synced 2026-06-22 02:01:55 +07:00
Add focus-column-{first,last}
This commit is contained in:
@@ -203,6 +203,9 @@ binds {
|
||||
// Mod+Ctrl+J { move-window-down-or-to-workspace-down; }
|
||||
// Mod+Ctrl+K { move-window-up-or-to-workspace-up; }
|
||||
|
||||
Mod+Home { focus-column-first; }
|
||||
Mod+End { focus-column-last; }
|
||||
|
||||
Mod+Shift+H { focus-monitor-left; }
|
||||
Mod+Shift+J { focus-monitor-down; }
|
||||
Mod+Shift+K { focus-monitor-up; }
|
||||
|
||||
@@ -313,6 +313,8 @@ pub enum Action {
|
||||
FullscreenWindow,
|
||||
FocusColumnLeft,
|
||||
FocusColumnRight,
|
||||
FocusColumnFirst,
|
||||
FocusColumnLast,
|
||||
FocusWindowDown,
|
||||
FocusWindowUp,
|
||||
FocusWindowOrWorkspaceDown,
|
||||
|
||||
@@ -357,6 +357,12 @@ impl State {
|
||||
Action::FocusColumnRight => {
|
||||
self.niri.layout.focus_right();
|
||||
}
|
||||
Action::FocusColumnFirst => {
|
||||
self.niri.layout.focus_column_first();
|
||||
}
|
||||
Action::FocusColumnLast => {
|
||||
self.niri.layout.focus_column_last();
|
||||
}
|
||||
Action::FocusWindowDown => {
|
||||
self.niri.layout.focus_down();
|
||||
}
|
||||
|
||||
@@ -816,6 +816,20 @@ impl<W: LayoutElement> Layout<W> {
|
||||
monitor.focus_right();
|
||||
}
|
||||
|
||||
pub fn focus_column_first(&mut self) {
|
||||
let Some(monitor) = self.active_monitor() else {
|
||||
return;
|
||||
};
|
||||
monitor.focus_column_first();
|
||||
}
|
||||
|
||||
pub fn focus_column_last(&mut self) {
|
||||
let Some(monitor) = self.active_monitor() else {
|
||||
return;
|
||||
};
|
||||
monitor.focus_column_last();
|
||||
}
|
||||
|
||||
pub fn focus_down(&mut self) {
|
||||
let Some(monitor) = self.active_monitor() else {
|
||||
return;
|
||||
@@ -1524,6 +1538,8 @@ mod tests {
|
||||
FullscreenWindow(#[proptest(strategy = "1..=5usize")] usize),
|
||||
FocusColumnLeft,
|
||||
FocusColumnRight,
|
||||
FocusColumnFirst,
|
||||
FocusColumnLast,
|
||||
FocusWindowDown,
|
||||
FocusWindowUp,
|
||||
FocusWindowOrWorkspaceDown,
|
||||
@@ -1635,6 +1651,8 @@ mod tests {
|
||||
}
|
||||
Op::FocusColumnLeft => layout.focus_left(),
|
||||
Op::FocusColumnRight => layout.focus_right(),
|
||||
Op::FocusColumnFirst => layout.focus_column_first(),
|
||||
Op::FocusColumnLast => layout.focus_column_last(),
|
||||
Op::FocusWindowDown => layout.focus_down(),
|
||||
Op::FocusWindowUp => layout.focus_up(),
|
||||
Op::FocusWindowOrWorkspaceDown => layout.focus_window_or_workspace_down(),
|
||||
|
||||
@@ -197,6 +197,14 @@ impl<W: LayoutElement> Monitor<W> {
|
||||
self.active_workspace().focus_right();
|
||||
}
|
||||
|
||||
pub fn focus_column_first(&mut self) {
|
||||
self.active_workspace().focus_column_first();
|
||||
}
|
||||
|
||||
pub fn focus_column_last(&mut self) {
|
||||
self.active_workspace().focus_column_last();
|
||||
}
|
||||
|
||||
pub fn focus_down(&mut self) {
|
||||
self.active_workspace().focus_down();
|
||||
}
|
||||
|
||||
@@ -617,6 +617,18 @@ impl<W: LayoutElement> Workspace<W> {
|
||||
self.activate_column(min(self.active_column_idx + 1, self.columns.len() - 1));
|
||||
}
|
||||
|
||||
pub fn focus_column_first(&mut self) {
|
||||
self.activate_column(0);
|
||||
}
|
||||
|
||||
pub fn focus_column_last(&mut self) {
|
||||
if self.columns.is_empty() {
|
||||
return;
|
||||
}
|
||||
|
||||
self.activate_column(self.columns.len() - 1);
|
||||
}
|
||||
|
||||
pub fn focus_down(&mut self) {
|
||||
if self.columns.is_empty() {
|
||||
return;
|
||||
|
||||
Reference in New Issue
Block a user