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+J { move-window-down-or-to-workspace-down; }
|
||||||
// Mod+Ctrl+K { move-window-up-or-to-workspace-up; }
|
// 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+H { focus-monitor-left; }
|
||||||
Mod+Shift+J { focus-monitor-down; }
|
Mod+Shift+J { focus-monitor-down; }
|
||||||
Mod+Shift+K { focus-monitor-up; }
|
Mod+Shift+K { focus-monitor-up; }
|
||||||
|
|||||||
@@ -313,6 +313,8 @@ pub enum Action {
|
|||||||
FullscreenWindow,
|
FullscreenWindow,
|
||||||
FocusColumnLeft,
|
FocusColumnLeft,
|
||||||
FocusColumnRight,
|
FocusColumnRight,
|
||||||
|
FocusColumnFirst,
|
||||||
|
FocusColumnLast,
|
||||||
FocusWindowDown,
|
FocusWindowDown,
|
||||||
FocusWindowUp,
|
FocusWindowUp,
|
||||||
FocusWindowOrWorkspaceDown,
|
FocusWindowOrWorkspaceDown,
|
||||||
|
|||||||
@@ -357,6 +357,12 @@ impl State {
|
|||||||
Action::FocusColumnRight => {
|
Action::FocusColumnRight => {
|
||||||
self.niri.layout.focus_right();
|
self.niri.layout.focus_right();
|
||||||
}
|
}
|
||||||
|
Action::FocusColumnFirst => {
|
||||||
|
self.niri.layout.focus_column_first();
|
||||||
|
}
|
||||||
|
Action::FocusColumnLast => {
|
||||||
|
self.niri.layout.focus_column_last();
|
||||||
|
}
|
||||||
Action::FocusWindowDown => {
|
Action::FocusWindowDown => {
|
||||||
self.niri.layout.focus_down();
|
self.niri.layout.focus_down();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -816,6 +816,20 @@ impl<W: LayoutElement> Layout<W> {
|
|||||||
monitor.focus_right();
|
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) {
|
pub fn focus_down(&mut self) {
|
||||||
let Some(monitor) = self.active_monitor() else {
|
let Some(monitor) = self.active_monitor() else {
|
||||||
return;
|
return;
|
||||||
@@ -1524,6 +1538,8 @@ mod tests {
|
|||||||
FullscreenWindow(#[proptest(strategy = "1..=5usize")] usize),
|
FullscreenWindow(#[proptest(strategy = "1..=5usize")] usize),
|
||||||
FocusColumnLeft,
|
FocusColumnLeft,
|
||||||
FocusColumnRight,
|
FocusColumnRight,
|
||||||
|
FocusColumnFirst,
|
||||||
|
FocusColumnLast,
|
||||||
FocusWindowDown,
|
FocusWindowDown,
|
||||||
FocusWindowUp,
|
FocusWindowUp,
|
||||||
FocusWindowOrWorkspaceDown,
|
FocusWindowOrWorkspaceDown,
|
||||||
@@ -1635,6 +1651,8 @@ mod tests {
|
|||||||
}
|
}
|
||||||
Op::FocusColumnLeft => layout.focus_left(),
|
Op::FocusColumnLeft => layout.focus_left(),
|
||||||
Op::FocusColumnRight => layout.focus_right(),
|
Op::FocusColumnRight => layout.focus_right(),
|
||||||
|
Op::FocusColumnFirst => layout.focus_column_first(),
|
||||||
|
Op::FocusColumnLast => layout.focus_column_last(),
|
||||||
Op::FocusWindowDown => layout.focus_down(),
|
Op::FocusWindowDown => layout.focus_down(),
|
||||||
Op::FocusWindowUp => layout.focus_up(),
|
Op::FocusWindowUp => layout.focus_up(),
|
||||||
Op::FocusWindowOrWorkspaceDown => layout.focus_window_or_workspace_down(),
|
Op::FocusWindowOrWorkspaceDown => layout.focus_window_or_workspace_down(),
|
||||||
|
|||||||
@@ -197,6 +197,14 @@ impl<W: LayoutElement> Monitor<W> {
|
|||||||
self.active_workspace().focus_right();
|
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) {
|
pub fn focus_down(&mut self) {
|
||||||
self.active_workspace().focus_down();
|
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));
|
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) {
|
pub fn focus_down(&mut self) {
|
||||||
if self.columns.is_empty() {
|
if self.columns.is_empty() {
|
||||||
return;
|
return;
|
||||||
|
|||||||
Reference in New Issue
Block a user