|
|
@ -196,27 +196,25 @@ pub fn exec_swayr_cmd(args: ExecSwayrCmdArgs) { |
|
|
|
|
|
|
|
|
|
|
|
match args.cmd { |
|
|
|
match args.cmd { |
|
|
|
SwayrCommand::SwitchToUrgentOrLRUWindow => { |
|
|
|
SwayrCommand::SwitchToUrgentOrLRUWindow => { |
|
|
|
switch_to_urgent_or_lru_window(Some(&*props.read().unwrap())) |
|
|
|
switch_to_urgent_or_lru_window(&*props.read().unwrap()) |
|
|
|
} |
|
|
|
|
|
|
|
SwayrCommand::SwitchWindow => { |
|
|
|
|
|
|
|
switch_window(Some(&*props.read().unwrap())) |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
SwayrCommand::SwitchWindow => switch_window(&*props.read().unwrap()), |
|
|
|
SwayrCommand::NextWindow { windows } => focus_window_in_direction( |
|
|
|
SwayrCommand::NextWindow { windows } => focus_window_in_direction( |
|
|
|
Direction::Forward, |
|
|
|
Direction::Forward, |
|
|
|
windows, |
|
|
|
windows, |
|
|
|
Some(&*props.read().unwrap()), |
|
|
|
&*props.read().unwrap(), |
|
|
|
Box::new(always_true), |
|
|
|
Box::new(always_true), |
|
|
|
), |
|
|
|
), |
|
|
|
SwayrCommand::PrevWindow { windows } => focus_window_in_direction( |
|
|
|
SwayrCommand::PrevWindow { windows } => focus_window_in_direction( |
|
|
|
Direction::Backward, |
|
|
|
Direction::Backward, |
|
|
|
windows, |
|
|
|
windows, |
|
|
|
Some(&*props.read().unwrap()), |
|
|
|
&*props.read().unwrap(), |
|
|
|
Box::new(always_true), |
|
|
|
Box::new(always_true), |
|
|
|
), |
|
|
|
), |
|
|
|
SwayrCommand::NextTiledWindow { windows } => focus_window_in_direction( |
|
|
|
SwayrCommand::NextTiledWindow { windows } => focus_window_in_direction( |
|
|
|
Direction::Forward, |
|
|
|
Direction::Forward, |
|
|
|
windows, |
|
|
|
windows, |
|
|
|
Some(&*props.read().unwrap()), |
|
|
|
&*props.read().unwrap(), |
|
|
|
Box::new(|w: &con::Window| { |
|
|
|
Box::new(|w: &con::Window| { |
|
|
|
!w.is_floating() && w.is_child_of_tiled_container() |
|
|
|
!w.is_floating() && w.is_child_of_tiled_container() |
|
|
|
}), |
|
|
|
}), |
|
|
@ -224,7 +222,7 @@ pub fn exec_swayr_cmd(args: ExecSwayrCmdArgs) { |
|
|
|
SwayrCommand::PrevTiledWindow { windows } => focus_window_in_direction( |
|
|
|
SwayrCommand::PrevTiledWindow { windows } => focus_window_in_direction( |
|
|
|
Direction::Backward, |
|
|
|
Direction::Backward, |
|
|
|
windows, |
|
|
|
windows, |
|
|
|
Some(&*props.read().unwrap()), |
|
|
|
&*props.read().unwrap(), |
|
|
|
Box::new(|w: &con::Window| { |
|
|
|
Box::new(|w: &con::Window| { |
|
|
|
!w.is_floating() && w.is_child_of_tiled_container() |
|
|
|
!w.is_floating() && w.is_child_of_tiled_container() |
|
|
|
}), |
|
|
|
}), |
|
|
@ -233,7 +231,7 @@ pub fn exec_swayr_cmd(args: ExecSwayrCmdArgs) { |
|
|
|
focus_window_in_direction( |
|
|
|
focus_window_in_direction( |
|
|
|
Direction::Forward, |
|
|
|
Direction::Forward, |
|
|
|
windows, |
|
|
|
windows, |
|
|
|
Some(&*props.read().unwrap()), |
|
|
|
&*props.read().unwrap(), |
|
|
|
Box::new(|w: &con::Window| { |
|
|
|
Box::new(|w: &con::Window| { |
|
|
|
!w.is_floating() |
|
|
|
!w.is_floating() |
|
|
|
&& w.is_child_of_tabbed_or_stacked_container() |
|
|
|
&& w.is_child_of_tabbed_or_stacked_container() |
|
|
@ -244,7 +242,7 @@ pub fn exec_swayr_cmd(args: ExecSwayrCmdArgs) { |
|
|
|
focus_window_in_direction( |
|
|
|
focus_window_in_direction( |
|
|
|
Direction::Backward, |
|
|
|
Direction::Backward, |
|
|
|
windows, |
|
|
|
windows, |
|
|
|
Some(&*props.read().unwrap()), |
|
|
|
&*props.read().unwrap(), |
|
|
|
Box::new(|w: &con::Window| { |
|
|
|
Box::new(|w: &con::Window| { |
|
|
|
!w.is_floating() |
|
|
|
!w.is_floating() |
|
|
|
&& w.is_child_of_tabbed_or_stacked_container() |
|
|
|
&& w.is_child_of_tabbed_or_stacked_container() |
|
|
@ -255,7 +253,7 @@ pub fn exec_swayr_cmd(args: ExecSwayrCmdArgs) { |
|
|
|
focus_window_in_direction( |
|
|
|
focus_window_in_direction( |
|
|
|
Direction::Forward, |
|
|
|
Direction::Forward, |
|
|
|
windows, |
|
|
|
windows, |
|
|
|
Some(&*props.read().unwrap()), |
|
|
|
&*props.read().unwrap(), |
|
|
|
Box::new(|w: &con::Window| w.is_floating()), |
|
|
|
Box::new(|w: &con::Window| w.is_floating()), |
|
|
|
) |
|
|
|
) |
|
|
|
} |
|
|
|
} |
|
|
@ -263,7 +261,7 @@ pub fn exec_swayr_cmd(args: ExecSwayrCmdArgs) { |
|
|
|
focus_window_in_direction( |
|
|
|
focus_window_in_direction( |
|
|
|
Direction::Backward, |
|
|
|
Direction::Backward, |
|
|
|
windows, |
|
|
|
windows, |
|
|
|
Some(&*props.read().unwrap()), |
|
|
|
&*props.read().unwrap(), |
|
|
|
Box::new(|w: &con::Window| w.is_floating()), |
|
|
|
Box::new(|w: &con::Window| w.is_floating()), |
|
|
|
) |
|
|
|
) |
|
|
|
} |
|
|
|
} |
|
|
@ -271,25 +269,25 @@ pub fn exec_swayr_cmd(args: ExecSwayrCmdArgs) { |
|
|
|
focus_similar_window_in_direction( |
|
|
|
focus_similar_window_in_direction( |
|
|
|
Direction::Forward, |
|
|
|
Direction::Forward, |
|
|
|
windows, |
|
|
|
windows, |
|
|
|
Some(&*props.read().unwrap()), |
|
|
|
&*props.read().unwrap(), |
|
|
|
) |
|
|
|
) |
|
|
|
} |
|
|
|
} |
|
|
|
SwayrCommand::PrevSimilarWindow { windows } => { |
|
|
|
SwayrCommand::PrevSimilarWindow { windows } => { |
|
|
|
focus_similar_window_in_direction( |
|
|
|
focus_similar_window_in_direction( |
|
|
|
Direction::Backward, |
|
|
|
Direction::Backward, |
|
|
|
windows, |
|
|
|
windows, |
|
|
|
Some(&*props.read().unwrap()), |
|
|
|
&*props.read().unwrap(), |
|
|
|
) |
|
|
|
) |
|
|
|
} |
|
|
|
} |
|
|
|
SwayrCommand::QuitWindow => quit_window(Some(&*props.read().unwrap())), |
|
|
|
SwayrCommand::QuitWindow => quit_window(&*props.read().unwrap()), |
|
|
|
SwayrCommand::SwitchWorkspace => { |
|
|
|
SwayrCommand::SwitchWorkspace => { |
|
|
|
switch_workspace(Some(&*props.read().unwrap())) |
|
|
|
switch_workspace(&*props.read().unwrap()) |
|
|
|
} |
|
|
|
} |
|
|
|
SwayrCommand::SwitchWorkspaceOrWindow => { |
|
|
|
SwayrCommand::SwitchWorkspaceOrWindow => { |
|
|
|
switch_workspace_or_window(Some(&*props.read().unwrap())) |
|
|
|
switch_workspace_or_window(&*props.read().unwrap()) |
|
|
|
} |
|
|
|
} |
|
|
|
SwayrCommand::QuitWorkspaceOrWindow => { |
|
|
|
SwayrCommand::QuitWorkspaceOrWindow => { |
|
|
|
quit_workspace_or_window(Some(&*props.read().unwrap())) |
|
|
|
quit_workspace_or_window(&*props.read().unwrap()) |
|
|
|
} |
|
|
|
} |
|
|
|
SwayrCommand::TileWorkspace { floating } => { |
|
|
|
SwayrCommand::TileWorkspace { floating } => { |
|
|
|
tile_current_workspace(floating, false) |
|
|
|
tile_current_workspace(floating, false) |
|
|
@ -381,7 +379,7 @@ pub fn get_tree() -> s::Node { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
pub fn switch_to_urgent_or_lru_window( |
|
|
|
pub fn switch_to_urgent_or_lru_window( |
|
|
|
extra_props: Option<&HashMap<i64, con::ExtraProps>>, |
|
|
|
extra_props: &HashMap<i64, con::ExtraProps>, |
|
|
|
) { |
|
|
|
) { |
|
|
|
let root = get_tree(); |
|
|
|
let root = get_tree(); |
|
|
|
let windows = con::get_windows(&root, false, extra_props); |
|
|
|
let windows = con::get_windows(&root, false, extra_props); |
|
|
@ -397,7 +395,7 @@ pub fn switch_to_urgent_or_lru_window( |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
pub fn switch_window(extra_props: Option<&HashMap<i64, con::ExtraProps>>) { |
|
|
|
pub fn switch_window(extra_props: &HashMap<i64, con::ExtraProps>) { |
|
|
|
let root = get_tree(); |
|
|
|
let root = get_tree(); |
|
|
|
let windows = con::get_windows(&root, true, extra_props); |
|
|
|
let windows = con::get_windows(&root, true, extra_props); |
|
|
|
|
|
|
|
|
|
|
@ -414,7 +412,7 @@ pub enum Direction { |
|
|
|
pub fn focus_window_in_direction( |
|
|
|
pub fn focus_window_in_direction( |
|
|
|
dir: Direction, |
|
|
|
dir: Direction, |
|
|
|
consider_wins: &ConsiderWindows, |
|
|
|
consider_wins: &ConsiderWindows, |
|
|
|
extra_props: Option<&HashMap<i64, con::ExtraProps>>, |
|
|
|
extra_props: &HashMap<i64, con::ExtraProps>, |
|
|
|
pred: Box<dyn Fn(&con::Window) -> bool>, |
|
|
|
pred: Box<dyn Fn(&con::Window) -> bool>, |
|
|
|
) { |
|
|
|
) { |
|
|
|
let root = get_tree(); |
|
|
|
let root = get_tree(); |
|
|
@ -471,7 +469,7 @@ pub fn focus_window_in_direction( |
|
|
|
pub fn focus_similar_window_in_direction( |
|
|
|
pub fn focus_similar_window_in_direction( |
|
|
|
dir: Direction, |
|
|
|
dir: Direction, |
|
|
|
consider_wins: &ConsiderWindows, |
|
|
|
consider_wins: &ConsiderWindows, |
|
|
|
extra_props: Option<&HashMap<i64, con::ExtraProps>>, |
|
|
|
extra_props: &HashMap<i64, con::ExtraProps>, |
|
|
|
) { |
|
|
|
) { |
|
|
|
let root = get_tree(); |
|
|
|
let root = get_tree(); |
|
|
|
let windows = con::get_windows(&root, false, extra_props); |
|
|
|
let windows = con::get_windows(&root, false, extra_props); |
|
|
@ -507,7 +505,7 @@ pub fn focus_similar_window_in_direction( |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
pub fn switch_workspace(extra_props: Option<&HashMap<i64, con::ExtraProps>>) { |
|
|
|
pub fn switch_workspace(extra_props: &HashMap<i64, con::ExtraProps>) { |
|
|
|
let root = get_tree(); |
|
|
|
let root = get_tree(); |
|
|
|
let workspaces = con::get_workspaces(&root, false, extra_props); |
|
|
|
let workspaces = con::get_workspaces(&root, false, extra_props); |
|
|
|
|
|
|
|
|
|
|
@ -518,9 +516,7 @@ pub fn switch_workspace(extra_props: Option<&HashMap<i64, con::ExtraProps>>) { |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
pub fn switch_workspace_or_window( |
|
|
|
pub fn switch_workspace_or_window(extra_props: &HashMap<i64, con::ExtraProps>) { |
|
|
|
extra_props: Option<&HashMap<i64, con::ExtraProps>>, |
|
|
|
|
|
|
|
) { |
|
|
|
|
|
|
|
let root = get_tree(); |
|
|
|
let root = get_tree(); |
|
|
|
let workspaces = con::get_workspaces(&root, true, extra_props); |
|
|
|
let workspaces = con::get_workspaces(&root, true, extra_props); |
|
|
|
let ws_or_wins = con::WsOrWin::from_workspaces(&workspaces); |
|
|
|
let ws_or_wins = con::WsOrWin::from_workspaces(&workspaces); |
|
|
@ -537,7 +533,7 @@ pub fn switch_workspace_or_window( |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
pub fn quit_window(extra_props: Option<&HashMap<i64, con::ExtraProps>>) { |
|
|
|
pub fn quit_window(extra_props: &HashMap<i64, con::ExtraProps>) { |
|
|
|
let root = get_tree(); |
|
|
|
let root = get_tree(); |
|
|
|
let windows = con::get_windows(&root, true, extra_props); |
|
|
|
let windows = con::get_windows(&root, true, extra_props); |
|
|
|
|
|
|
|
|
|
|
@ -546,9 +542,7 @@ pub fn quit_window(extra_props: Option<&HashMap<i64, con::ExtraProps>>) { |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
pub fn quit_workspace_or_window( |
|
|
|
pub fn quit_workspace_or_window(extra_props: &HashMap<i64, con::ExtraProps>) { |
|
|
|
extra_props: Option<&HashMap<i64, con::ExtraProps>>, |
|
|
|
|
|
|
|
) { |
|
|
|
|
|
|
|
let root = get_tree(); |
|
|
|
let root = get_tree(); |
|
|
|
let workspaces = con::get_workspaces(&root, true, extra_props); |
|
|
|
let workspaces = con::get_workspaces(&root, true, extra_props); |
|
|
|
let ws_or_wins = con::WsOrWin::from_workspaces(&workspaces); |
|
|
|
let ws_or_wins = con::WsOrWin::from_workspaces(&workspaces); |
|
|
|