Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Always on top feature #829

Open
wants to merge 244 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
244 commits
Select commit Hold shift + click to select a range
0eccc2a
initial commit
pro470 May 16, 2024
67ba6f2
Merge branch 'LGUG2Z:master' into master
pro470 May 16, 2024
11a0dc7
some fixes and event
pro470 May 16, 2024
a68c646
Merge remote-tracking branch 'origin/master'
pro470 May 16, 2024
bc1a7d2
some fixes
pro470 May 16, 2024
1a00dd3
some fixes
pro470 May 17, 2024
d167e24
some fixes and add always on top feature for floating windows
pro470 May 17, 2024
c84688d
Merge branch 'LGUG2Z:master' into master
pro470 May 17, 2024
faf4efe
some fixes
pro470 May 17, 2024
f9a2559
Merge branch 'LGUG2Z:master' into master
pro470 May 19, 2024
aa6e286
Merge branch 'LGUG2Z:master' into master
pro470 May 20, 2024
b9478b0
some fixes
pro470 May 20, 2024
449ed63
some fixes
pro470 May 20, 2024
3de2a4c
some fixes
pro470 May 20, 2024
6d4e548
some fixes
pro470 May 20, 2024
57aeff1
some fixes
pro470 May 20, 2024
04b39b0
Merge branch 'LGUG2Z:master' into master
pro470 May 20, 2024
d243a70
some fixes
pro470 May 22, 2024
acf5eef
Merge branch 'LGUG2Z:master' into master
pro470 May 22, 2024
7ce1cef
Merge branch 'LGUG2Z:master' into master
pro470 May 23, 2024
48624a8
some fixes
pro470 May 23, 2024
31a4b67
Merge branch 'LGUG2Z:master' into master
pro470 May 25, 2024
bd24cdd
Merge branch 'LGUG2Z:master' into master
pro470 May 26, 2024
458cac9
fix(cli): respect named ws send behaviour
LGUG2Z May 29, 2024
8b623ca
Merge branch 'LGUG2Z:master' into master
pro470 May 30, 2024
13d7271
Merge branch 'master' into master
pro470 May 31, 2024
c443972
some fixes
pro470 May 31, 2024
8f330ff
Merge branch 'LGUG2Z:master' into master
pro470 Jun 2, 2024
4c9b3d6
Merge branch 'LGUG2Z:master' into master
pro470 Jun 3, 2024
294f626
Merge branch 'master' into master
pro470 Jun 5, 2024
7c4cb79
added the command to change focus to the window with the specified ex…
pro470 Jun 5, 2024
3c1df8f
some fixes
pro470 Jun 5, 2024
3fe0188
some fixes
pro470 Jun 5, 2024
8f8fc21
some fixes
pro470 Jun 5, 2024
07ff5d4
some fixes
pro470 Jun 6, 2024
493531e
refactor(wm): use bounded channels
LGUG2Z Jun 8, 2024
5f8cb84
Merge branch 'LGUG2Z:master' into master
pro470 Jun 9, 2024
21cf972
Merge branch 'master' into master
pro470 Jun 9, 2024
f379fdb
Merge branch 'LGUG2Z:master' into master
pro470 Jun 12, 2024
e01e9e7
some fixes
pro470 Jun 16, 2024
b738ef4
Merge remote-tracking branch 'origin/master'
pro470 Jun 16, 2024
0c9a45b
some fixes
pro470 Jun 17, 2024
5294e10
some fixes
pro470 Jun 17, 2024
fe6a5ac
Merge branch 'LGUG2Z:master' into master
pro470 Jun 18, 2024
6fb1ac4
Merge branch 'LGUG2Z:master' into master
pro470 Jun 19, 2024
39300cc
Merge branch 'LGUG2Z:master' into master
pro470 Jun 19, 2024
2a8e833
Merge branch 'master' into master
pro470 Jun 21, 2024
5ac0f08
some fixes
pro470 Jun 24, 2024
af17e00
Merge remote-tracking branch 'upstream/master'
pro470 Jun 24, 2024
6c55a8e
some fixes
pro470 Jun 24, 2024
29d3941
Merge remote-tracking branch 'upstream/master'
pro470 Jun 24, 2024
d6ee076
some fixes
pro470 Jun 24, 2024
9eacd35
some fixes
pro470 Jun 25, 2024
9be071e
Merge remote-tracking branch 'upstream/master'
pro470 Jun 26, 2024
9353ab7
Merge remote-tracking branch 'upstream/master'
pro470 Jun 27, 2024
f0cb18c
Merge remote-tracking branch 'upstream/master'
pro470 Jul 3, 2024
9eed022
Merge remote-tracking branch 'upstream/master'
pro470 Jul 5, 2024
182eb2b
Merge remote-tracking branch 'upstream/master'
pro470 Jul 9, 2024
3f83904
fixed the workspace rules but when komorebi stats but found out when …
pro470 Jul 9, 2024
e9eca8f
Merge remote-tracking branch 'upstream/master'
pro470 Jul 10, 2024
62c1618
Merge remote-tracking branch 'upstream/master'
pro470 Jul 11, 2024
bf59eb8
fix(animation): disable on cross-monitor ops
LGUG2Z Jul 12, 2024
7d97b8d
Merge remote-tracking branch 'upstream/master'
pro470 Jul 12, 2024
b8b31d7
fix merge conflicts
pro470 Jul 13, 2024
a7563e5
Merge remote-tracking branch 'upstream/master'
pro470 Jul 16, 2024
ff35559
fix merge conflicts
pro470 Jul 16, 2024
883e527
Merge remote-tracking branch 'upstream/master'
pro470 Jul 22, 2024
4d9edbc
Merge remote-tracking branch 'upstream/master'
pro470 Jul 23, 2024
e2f7ad7
Merge remote-tracking branch 'upstream/master'
pro470 Jul 25, 2024
d8fe905
Merge remote-tracking branch 'upstream/master'
pro470 Jul 27, 2024
1b214be
Merge remote-tracking branch 'upstream/master'
pro470 Aug 3, 2024
030de2b
Merge remote-tracking branch 'upstream/master'
pro470 Aug 6, 2024
01b0819
Merge remote-tracking branch 'upstream/master'
pro470 Aug 6, 2024
679e674
Merge remote-tracking branch 'upstream/master'
pro470 Aug 7, 2024
e647d4e
fix(wm): socket cleanup on exit
LGUG2Z Aug 10, 2024
df7b935
Merge remote-tracking branch 'upstream/master'
pro470 Aug 10, 2024
2bfcfe7
Merge remote-tracking branch 'upstream/master'
pro470 Aug 13, 2024
9260b68
fix(animation): enable cross-monitor animations
thearturca Jul 23, 2024
6390163
Merge remote-tracking branch 'upstream/master'
pro470 Aug 25, 2024
ea06d97
fix merge conflicts
pro470 Aug 27, 2024
a564a49
fix merge conflicts
pro470 Aug 28, 2024
bfd1cdf
Merge remote-tracking branch 'upstream/master'
pro470 Sep 14, 2024
a34a073
Merge remote-tracking branch 'upstream/master'
pro470 Sep 15, 2024
8b75fa6
Merge remote-tracking branch 'upstream/master'
pro470 Sep 16, 2024
d1a2a17
fix(bar): use custom windows-icons w/o panics
LGUG2Z Sep 16, 2024
6ba1172
Merge remote-tracking branch 'upstream/master'
pro470 Sep 17, 2024
08f4fb1
feat(wm): add replace configuration socket message
LGUG2Z Sep 18, 2024
38f92c7
fix merge conflicts
pro470 Sep 18, 2024
0f3d703
feat(wm): add replace configuration socket message
LGUG2Z Sep 18, 2024
b944eee
Merge remote-tracking branch 'upstream/master'
pro470 Sep 18, 2024
e489650
fix merge conflicts
pro470 Sep 19, 2024
a35f25e
fix merge conflicts
pro470 Sep 19, 2024
7378411
Merge remote-tracking branch 'upstream/master'
pro470 Sep 20, 2024
f3d6eb0
Merge remote-tracking branch 'upstream/master'
pro470 Sep 21, 2024
22c1d5f
fix(bar): use truncated labels for titles
LGUG2Z Sep 21, 2024
1ad8aa4
Merge remote-tracking branch 'upstream/master'
pro470 Sep 22, 2024
164c5b8
fix merge conflicts
pro470 Sep 23, 2024
a4eb0ec
Merge remote-tracking branch 'upstream/master'
pro470 Sep 25, 2024
08593d1
Merge remote-tracking branch 'upstream/master'
pro470 Sep 25, 2024
409b835
Merge remote-tracking branch 'upstream/master'
pro470 Sep 26, 2024
2fdfe9a
Merge remote-tracking branch 'upstream/master'
pro470 Sep 27, 2024
b39a6f0
Merge remote-tracking branch 'upstream/master'
pro470 Sep 28, 2024
071dcb1
Merge remote-tracking branch 'upstream/master'
pro470 Sep 29, 2024
2cdb300
Merge remote-tracking branch 'upstream/master'
pro470 Oct 3, 2024
861d415
chore(cargo): enable lto for release builds
LGUG2Z Oct 6, 2024
75d5971
refactor(bar): use native apis for positioning
LGUG2Z Oct 6, 2024
2f0a930
feat(config): add bar configurations opt
LGUG2Z Oct 6, 2024
46e6d89
fix(wm): update monitor focus before focus-stack-window
alex-ds13 Oct 7, 2024
d9f6392
Merge remote-tracking branch 'upstream/master'
pro470 Oct 7, 2024
c6e76d2
fix(wm): ignore minimize calls on komorebi-bar
LGUG2Z Oct 7, 2024
400f901
refactor(wm): standardize config env var handling
LGUG2Z Oct 8, 2024
98a2aa4
feat(bar): add cpu widget
CtByte Oct 8, 2024
8d5e40e
chore(deps): bump eframe from 0.28 to 0.29
LGUG2Z Oct 8, 2024
30e09d9
feat(wm): delete stale sub socket files
LGUG2Z Oct 8, 2024
13b7bef
Merge remote-tracking branch 'upstream/master'
pro470 Oct 9, 2024
8752bbb
feat(bar): add more logging around error paths
LGUG2Z Oct 9, 2024
dc6e326
chore(deps): cargo update
LGUG2Z Oct 10, 2024
24da24f
docs(github): update issue templates
LGUG2Z Oct 10, 2024
8c6e858
Merge remote-tracking branch 'upstream/master'
pro470 Oct 10, 2024
26a8912
feat(bar): add label prefix config opt
CtByte Oct 9, 2024
67c4869
Merge remote-tracking branch 'upstream/master'
pro470 Oct 11, 2024
0e1874d
docs(github): update issue templates
LGUG2Z Oct 10, 2024
4aed288
feat(bar): add label prefix config opt
CtByte Oct 9, 2024
bb52183
feat(wm): separate floating and ignored apps
LGUG2Z Sep 29, 2024
51c3b12
feat(wm): add float override option
alex-ds13 Sep 4, 2024
4f0e204
fix(wm): check exhaustively for ws emptiness
alex-ds13 Oct 10, 2024
1406dbf
fix(wm): allow cross-monitor floating window moves
alex-ds13 Oct 10, 2024
929c1c9
feat(config): add floating border colour opt
alex-ds13 Oct 10, 2024
f07e18d
docs(schema): update all json schemas
LGUG2Z Oct 11, 2024
97e8c36
chore(cargo): +nightly fmt
LGUG2Z Oct 11, 2024
39b549f
docs(cli): highlight eol features in start + check
LGUG2Z Oct 11, 2024
b5c0ae6
chore(cargo): suppress macro lint warnings
LGUG2Z Oct 11, 2024
dcd1144
fix(cli): update fetch-asc output to use '/'
LGUG2Z Oct 11, 2024
95fdb64
feat(client): add subscribe_with_options
LGUG2Z Oct 11, 2024
f7a66cb
fix merge conflicts
pro470 Oct 13, 2024
9dd2957
Merge remote-tracking branch 'upstream/master'
pro470 Oct 13, 2024
435925a
fix merge conflicts
pro470 Oct 16, 2024
6e80f38
Merge branch 'master' of https://github.com/LGUG2Z/komorebi
pro470 Oct 16, 2024
afda3f0
Merge remote-tracking branch 'upstream/master'
pro470 Oct 17, 2024
ab84c7a
Merge remote-tracking branch 'upstream/master'
pro470 Oct 18, 2024
76521fa
fix merge conflicts
pro470 Oct 19, 2024
74b4521
Merge remote-tracking branch 'upstream/master'
pro470 Oct 29, 2024
1d74ca3
Merge remote-tracking branch 'upstream/master'
pro470 Oct 30, 2024
58b032c
Merge remote-tracking branch 'upstream/master'
pro470 Nov 1, 2024
729eb18
fix merge conflicts
pro470 Nov 2, 2024
f1eae16
chore(release): v0.1.30
LGUG2Z Nov 3, 2024
0f25168
Merge remote-tracking branch 'upstream/master'
pro470 Nov 3, 2024
0adf2bc
Merge remote-tracking branch 'upstream/master'
pro470 Nov 4, 2024
de1dc97
Merge remote-tracking branch 'upstream/master'
pro470 Nov 5, 2024
e6d3002
Merge remote-tracking branch 'upstream/master'
pro470 Nov 9, 2024
4848fd5
Merge remote-tracking branch 'upstream/master'
pro470 Nov 11, 2024
371cf61
Merge remote-tracking branch 'upstream/master'
pro470 Nov 12, 2024
400d014
Merge remote-tracking branch 'upstream/master'
pro470 Nov 15, 2024
d8eadac
Merge remote-tracking branch 'upstream/master'
pro470 Nov 18, 2024
1389caa
Merge remote-tracking branch 'upstream/master'
pro470 Nov 19, 2024
73f86a1
Merge remote-tracking branch 'upstream/master'
pro470 Nov 20, 2024
544ea13
Merge remote-tracking branch 'upstream/master'
pro470 Nov 22, 2024
128ea5e
Merge remote-tracking branch 'upstream/master'
pro470 Nov 24, 2024
d87992e
Merge remote-tracking branch 'upstream/master'
pro470 Nov 26, 2024
60fe67b
Merge remote-tracking branch 'upstream/master'
pro470 Nov 27, 2024
1ef0630
feat(wm): listen to event_object_locationchange
LGUG2Z Nov 27, 2024
1a6df00
Merge remote-tracking branch 'upstream/master'
pro470 Nov 28, 2024
90f2a15
Merge remote-tracking branch 'upstream/master'
pro470 Nov 29, 2024
948bf9a
Merge remote-tracking branch 'upstream/master'
pro470 Nov 30, 2024
8ba63ca
fix merge conflicts
pro470 Dec 1, 2024
3aa8265
Merge remote-tracking branch 'upstream/master'
pro470 Dec 3, 2024
cc18697
fix(cli): handle spaces in bar config paths
LGUG2Z Dec 7, 2024
2792d58
Merge remote-tracking branch 'upstream/master'
pro470 Dec 7, 2024
ce5177c
fix merge conflicts
pro470 Dec 8, 2024
d490d44
Merge remote-tracking branch 'upstream/master'
pro470 Dec 10, 2024
51e475e
Merge remote-tracking branch 'upstream/master'
pro470 Dec 11, 2024
a4e0711
Merge remote-tracking branch 'upstream/master'
pro470 Dec 14, 2024
42f1143
Merge remote-tracking branch 'upstream/master'
pro470 Dec 15, 2024
b165345
Merge remote-tracking branch 'upstream/master'
pro470 Dec 17, 2024
7d99297
Merge remote-tracking branch 'upstream/master'
pro470 Dec 18, 2024
319b212
Merge remote-tracking branch 'upstream/master'
pro470 Dec 20, 2024
1e65eea
Merge remote-tracking branch 'upstream/master'
pro470 Dec 22, 2024
fc3859f
Merge remote-tracking branch 'upstream/master'
pro470 Dec 23, 2024
3a35bc4
Merge remote-tracking branch 'upstream/master'
pro470 Dec 27, 2024
a000fa7
testing
pro470 Dec 27, 2024
139e2eb
Merge remote-tracking branch 'upstream/master'
pro470 Dec 28, 2024
70ec12a
testing
pro470 Dec 31, 2024
723d364
Merge remote-tracking branch 'upstream/master'
pro470 Jan 1, 2025
7f15450
Merge remote-tracking branch 'upstream/master'
pro470 Jan 2, 2025
d0f9bc3
delete unnecessary whitespace
pro470 Jan 3, 2025
43aeba8
Revert "delete unnecessary whitespace"
pro470 Jan 3, 2025
dc2c70a
some format cleanup need to do more later
pro470 Jan 3, 2025
89d1ffa
fix(cli): allow checking of arbitrary config files
LGUG2Z Jan 4, 2025
d4d72e4
feat(config): allow specifying layout flip on ws
LGUG2Z Jan 4, 2025
7f518b9
fixed formating
pro470 Jan 4, 2025
bda3de6
Merge remote-tracking branch 'upstream/master'
pro470 Jan 4, 2025
40e1575
fix(wm): avoid focused ws rule enforcement deadlock
LGUG2Z Jan 4, 2025
39c82bd
fix(wm): add uncloak as a notif override event
LGUG2Z Jan 4, 2025
631d336
feat(cli): add stackbar-mode command
LGUG2Z Jan 4, 2025
45f9d27
Merge remote-tracking branch 'upstream/master'
pro470 Jan 4, 2025
c6958e8
fixed conflicts
pro470 Jan 5, 2025
12a621f
Merge remote-tracking branch 'upstream/master'
pro470 Jan 8, 2025
4604354
Merge remote-tracking branch 'upstream/master'
pro470 Jan 11, 2025
86f7219
Merge remote-tracking branch 'upstream/master'
pro470 Jan 12, 2025
6f9e337
Merge remote-tracking branch 'upstream/master'
pro470 Jan 17, 2025
86f7fa6
Merge remote-tracking branch 'upstream/master'
pro470 Jan 18, 2025
7583c87
Merge remote-tracking branch 'upstream/master'
pro470 Jan 23, 2025
6af70c8
feat(config): add aspect ratios for float toggling
LGUG2Z Jan 24, 2025
0119d29
docs(mkdocs): add note to update asc path
tieniu1 Nov 24, 2024
a575b28
feat(bar): add modifiers for strftime integer formatters
Samu-K Jan 23, 2025
cf446a6
Merge remote-tracking branch 'upstream/master'
pro470 Jan 24, 2025
edcba65
fix(bar): consider all window types when hiding empty ws
LGUG2Z Jan 24, 2025
367ae95
fix(wm): populate ws rules on config reload
LGUG2Z Jan 24, 2025
15e443a
feat(config): add object name change title ignore list
LGUG2Z Jan 24, 2025
110c534
fixed merge conficts
pro470 Jan 25, 2025
1d06582
fixed merge conficts
pro470 Jan 27, 2025
1984be9
Merge remote-tracking branch 'upstream/master'
pro470 Jan 27, 2025
2ee52ec
Merge remote-tracking branch 'upstream/master'
pro470 Jan 28, 2025
c8dfafa
Merge remote-tracking branch 'upstream/master'
pro470 Jan 28, 2025
51c043a
Merge remote-tracking branch 'upstream/master'
pro470 Jan 29, 2025
36cc9db
Merge remote-tracking branch 'upstream/master'
pro470 Feb 1, 2025
d3ed4d4
Merge remote-tracking branch 'upstream/master'
pro470 Feb 2, 2025
cafef6e
Merge remote-tracking branch 'upstream/master'
pro470 Feb 4, 2025
b9128c2
Merge remote-tracking branch 'upstream/master'
pro470 Feb 5, 2025
4cb8b58
Merge remote-tracking branch 'upstream/master'
pro470 Feb 6, 2025
ae2918d
Merge remote-tracking branch 'upstream/master'
pro470 Feb 8, 2025
09d10fa
Merge remote-tracking branch 'upstream/master'
pro470 Feb 16, 2025
2a32b39
Merge remote-tracking branch 'upstream/master'
pro470 Feb 17, 2025
3d7843e
chore(release): v0.1.34
LGUG2Z Feb 19, 2025
61d89e3
Merge remote-tracking branch 'upstream/master'
pro470 Feb 19, 2025
45a303d
fixed merge conficts
pro470 Feb 21, 2025
fef29cb
Merge remote-tracking branch 'upstream/master'
pro470 Feb 22, 2025
caff8d7
fixed merge conficts
pro470 Feb 23, 2025
30c5f6d
fixed merge conficts
pro470 Feb 24, 2025
8347709
Merge remote-tracking branch 'upstream/master'
pro470 Feb 25, 2025
1ab1a49
Merge remote-tracking branch 'upstream/master'
pro470 Mar 4, 2025
5c8c43d
Merge remote-tracking branch 'upstream/master'
pro470 Mar 5, 2025
2119077
chore(deps): add deny.toml and dependencies.json
LGUG2Z Mar 6, 2025
641190d
test(wm): add window manager unit tests
SaucePackets Mar 5, 2025
e1eb3ca
test(wm): colocate tests with src files, add socket msg test
LGUG2Z Mar 6, 2025
0514b0d
Merge remote-tracking branch 'upstream/master'
pro470 Mar 6, 2025
9a631c5
fixed merge conficts
pro470 Mar 8, 2025
6888cc0
Merge remote-tracking branch 'upstream/master'
pro470 Mar 9, 2025
9820e05
Merge remote-tracking branch 'upstream/master'
pro470 Mar 10, 2025
c732b97
Merge remote-tracking branch 'upstream/master'
pro470 Mar 11, 2025
12f7f77
Merge remote-tracking branch 'upstream/master'
pro470 Mar 12, 2025
b9032cd
Merge remote-tracking branch 'upstream/master'
pro470 Mar 14, 2025
05a8055
Merge remote-tracking branch 'upstream/master'
pro470 Mar 15, 2025
f102190
Merge remote-tracking branch 'upstream/master'
pro470 Mar 16, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions komorebi/src/core/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,8 @@ pub enum SocketMessage {
FocusStackWindow(usize),
StackAll,
UnstackAll,
FocusExe(Option<String>, Option<isize>),
DisplayMonitorWorkspaceNumber(usize, usize),
ResizeWindowEdge(OperationDirection, Sizing),
ResizeWindowAxis(Axis, Sizing),
MoveContainerToMonitorNumber(usize),
Expand Down Expand Up @@ -87,6 +89,7 @@ pub enum SocketMessage {
ToggleFloat,
ToggleMonocle,
ToggleMaximize,
ToggleAlwaysOnTop,
ToggleWindowContainerBehaviour,
ToggleFloatOverride,
WindowHidingBehaviour(HidingBehaviour),
Expand Down
47 changes: 47 additions & 0 deletions komorebi/src/process_command.rs
Original file line number Diff line number Diff line change
Expand Up @@ -230,6 +230,14 @@ impl WindowManager {
self.focus_container_in_direction(direction)?;
self.promote_container_to_front()?
}
SocketMessage::DisplayMonitorWorkspaceNumber(monitor_idx, workspace_idx) => {
self.send_always_on_top(
Option::from(monitor_idx),
Option::from(workspace_idx),
None,
)?;
self.display_monitor_workspace(monitor_idx, workspace_idx)?;
}
SocketMessage::EagerFocus(ref exe) => {
let focused_monitor_idx = self.focused_monitor_idx();
let focused_workspace_idx = self.focused_workspace_idx()?;
Expand Down Expand Up @@ -300,6 +308,9 @@ impl WindowManager {
}
}
}
SocketMessage::FocusExe(ref exe, hwnd) => {
self.focus_window_from_exe(exe, hwnd)?;
}
SocketMessage::MoveWindow(direction) => {
let focused_workspace = self.focused_workspace()?;
match focused_workspace.layer() {
Expand Down Expand Up @@ -360,6 +371,7 @@ impl WindowManager {
SocketMessage::ToggleFloat => self.toggle_float()?,
SocketMessage::ToggleMonocle => self.toggle_monocle()?,
SocketMessage::ToggleMaximize => self.toggle_maximize()?,
SocketMessage::ToggleAlwaysOnTop => self.toggle_always_on_top()?,
SocketMessage::ContainerPadding(monitor_idx, workspace_idx, size) => {
self.set_container_padding(monitor_idx, workspace_idx, size)?;
}
Expand Down Expand Up @@ -604,6 +616,7 @@ impl WindowManager {
}
SocketMessage::MoveContainerToWorkspaceNumber(workspace_idx) => {
self.move_container_to_workspace(workspace_idx, true, None)?;
self.send_always_on_top(None, Some(workspace_idx), Some(true))?;
}
SocketMessage::CycleMoveContainerToWorkspace(direction) => {
let focused_monitor = self
Expand All @@ -620,8 +633,10 @@ impl WindowManager {
);

self.move_container_to_workspace(workspace_idx, true, None)?;
self.send_always_on_top(None, Some(workspace_idx), Some(true))?;
}
SocketMessage::MoveContainerToMonitorNumber(monitor_idx) => {
self.send_always_on_top(Some(monitor_idx), None, Some(true))?;
let direction = self.direction_from_monitor_idx(monitor_idx);
self.move_container_to_monitor(monitor_idx, None, true, direction)?;
}
Expand All @@ -635,11 +650,14 @@ impl WindowManager {
.ok_or_else(|| anyhow!("there must be at least one monitor"))?,
);

self.send_always_on_top(Some(monitor_idx), None, Some(true))?;

let direction = self.direction_from_monitor_idx(monitor_idx);
self.move_container_to_monitor(monitor_idx, None, true, direction)?;
}
SocketMessage::SendContainerToWorkspaceNumber(workspace_idx) => {
self.move_container_to_workspace(workspace_idx, false, None)?;
self.send_always_on_top(None, Some(workspace_idx), Some(false))?;
}
SocketMessage::CycleSendContainerToWorkspace(direction) => {
let focused_monitor = self
Expand All @@ -656,8 +674,10 @@ impl WindowManager {
);

self.move_container_to_workspace(workspace_idx, false, None)?;
self.send_always_on_top(None, Some(workspace_idx), Some(false))?;
}
SocketMessage::SendContainerToMonitorNumber(monitor_idx) => {
self.send_always_on_top(Some(monitor_idx), None, Some(false))?;
let direction = self.direction_from_monitor_idx(monitor_idx);
self.move_container_to_monitor(monitor_idx, None, false, direction)?;
}
Expand All @@ -668,10 +688,13 @@ impl WindowManager {
.ok_or_else(|| anyhow!("there must be at least one monitor"))?,
);

self.send_always_on_top(Some(monitor_idx), None, Some(false))?;

let direction = self.direction_from_monitor_idx(monitor_idx);
self.move_container_to_monitor(monitor_idx, None, false, direction)?;
}
SocketMessage::SendContainerToMonitorWorkspaceNumber(monitor_idx, workspace_idx) => {
self.send_always_on_top(Some(monitor_idx), Some(workspace_idx), Some(false))?;
let direction = self.direction_from_monitor_idx(monitor_idx);
self.move_container_to_monitor(
monitor_idx,
Expand All @@ -681,6 +704,7 @@ impl WindowManager {
)?;
}
SocketMessage::MoveContainerToMonitorWorkspaceNumber(monitor_idx, workspace_idx) => {
self.send_always_on_top(Some(monitor_idx), Some(workspace_idx), Some(true))?;
let direction = self.direction_from_monitor_idx(monitor_idx);
self.move_container_to_monitor(
monitor_idx,
Expand All @@ -693,6 +717,7 @@ impl WindowManager {
if let Some((monitor_idx, workspace_idx)) =
self.monitor_workspace_index_by_name(workspace)
{
self.send_always_on_top(Some(monitor_idx), Some(workspace_idx), Some(false))?;
let direction = self.direction_from_monitor_idx(monitor_idx);
self.move_container_to_monitor(
monitor_idx,
Expand All @@ -706,6 +731,7 @@ impl WindowManager {
if let Some((monitor_idx, workspace_idx)) =
self.monitor_workspace_index_by_name(workspace)
{
self.send_always_on_top(Some(monitor_idx), Some(workspace_idx), Some(true))?;
let direction = self.direction_from_monitor_idx(monitor_idx);
self.move_container_to_monitor(
monitor_idx,
Expand Down Expand Up @@ -897,6 +923,8 @@ impl WindowManager {
.ok_or_else(|| anyhow!("there must be at least one workspace"))?,
);

self.send_always_on_top(None, Option::from(workspace_idx), None)?;

self.focus_workspace(workspace_idx)?;
}
SocketMessage::CycleFocusEmptyWorkspace(direction) => {
Expand Down Expand Up @@ -1015,6 +1043,7 @@ impl WindowManager {

if let Some(monitor) = self.focused_monitor_mut() {
if let Some(last_focused_workspace) = monitor.last_focused_workspace() {
self.send_always_on_top(None, Option::from(last_focused_workspace), None)?;
self.focus_workspace(last_focused_workspace)?;
}
}
Expand All @@ -1040,6 +1069,7 @@ impl WindowManager {
}

if self.focused_workspace_idx().unwrap_or_default() != workspace_idx {
self.send_always_on_top(None, Option::from(workspace_idx), None)?;
self.focus_workspace(workspace_idx)?;
}
}
Expand All @@ -1061,13 +1091,28 @@ impl WindowManager {

let focused_monitor_idx = self.focused_monitor_idx();

for i in 0..self.monitors.elements().len() {
if i != focused_monitor_idx {
self.send_always_on_top(
Option::from(i),
Option::from(workspace_idx),
None,
)?;
}
}

for (i, monitor) in self.monitors_mut().iter_mut().enumerate() {
if i != focused_monitor_idx {
monitor.focus_workspace(workspace_idx)?;
monitor.load_focused_workspace(false)?;
}
}

self.send_always_on_top(
Option::from(focused_monitor_idx),
Some(workspace_idx),
None,
)?;
self.focus_workspace(workspace_idx)?;
}
SocketMessage::FocusMonitorWorkspaceNumber(monitor_idx, workspace_idx) => {
Expand All @@ -1077,6 +1122,7 @@ impl WindowManager {
let focused_pair = (focused_monitor_idx, focused_workspace_idx);

if focused_pair != (monitor_idx, workspace_idx) {
self.send_always_on_top(Option::from(monitor_idx), Some(workspace_idx), None)?;
self.focus_monitor(monitor_idx)?;
self.focus_workspace(workspace_idx)?;
}
Expand All @@ -1085,6 +1131,7 @@ impl WindowManager {
if let Some((monitor_idx, workspace_idx)) =
self.monitor_workspace_index_by_name(name)
{
self.send_always_on_top(Option::from(monitor_idx), Some(workspace_idx), None)?;
self.focus_monitor(monitor_idx)?;
self.focus_workspace(workspace_idx)?;
}
Expand Down
9 changes: 9 additions & 0 deletions komorebi/src/process_event.rs
Original file line number Diff line number Diff line change
Expand Up @@ -191,6 +191,13 @@ impl WindowManager {

already_moved_window_handles.remove(&window.hwnd);
}

if let Some(aot) = self.always_on_top.as_mut() {
if aot.contains(&window.hwnd) {
let idx = aot.iter().position(|x| *x == window.hwnd).unwrap();
aot.remove(idx);
}
}
}
WindowManagerEvent::Minimize(_, window) => {
let mut hide = false;
Expand Down Expand Up @@ -707,6 +714,7 @@ impl WindowManager {
}
WindowManagerEvent::MouseCapture(..)
| WindowManagerEvent::Cloak(..)
| WindowManagerEvent::LocationChange(..)
| WindowManagerEvent::TitleUpdate(..) => {}
};

Expand Down Expand Up @@ -734,6 +742,7 @@ impl WindowManager {
if !matches!(
event,
WindowManagerEvent::Show(WinEvent::ObjectNameChange, _)
| WindowManagerEvent::LocationChange(_, _)
) {
tracing::info!("processed: {}", event.window().to_string());
} else {
Expand Down
1 change: 1 addition & 0 deletions komorebi/src/static_config.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1156,6 +1156,7 @@ impl StaticConfig {
already_moved_window_handles: Arc::new(Mutex::new(HashSet::new())),
uncloack_to_ignore: 0,
known_hwnds: HashMap::new(),
always_on_top: None,
};

match value.focus_follows_mouse {
Expand Down
Loading
Loading