Skip to content

Commit 9d751ec

Browse files
bbb651Supreeeme
authored andcommitted
Fix black screen on minimize
Thanks @UjinT34 for the hint Fixes #54.
1 parent 467f301 commit 9d751ec

File tree

1 file changed

+29
-0
lines changed

1 file changed

+29
-0
lines changed

src/xstate/mod.rs

+29
Original file line numberDiff line numberDiff line change
@@ -741,6 +741,7 @@ xcb::atoms_struct! {
741741
wm_protocols => b"WM_PROTOCOLS" only_if_exists = false,
742742
wm_delete_window => b"WM_DELETE_WINDOW" only_if_exists = false,
743743
wm_transient_for => b"WM_TRANSIENT_FOR" only_if_exists = false,
744+
wm_state => b"WM_STATE" only_if_exists = false,
744745
wm_check => b"_NET_SUPPORTING_WM_CHECK" only_if_exists = false,
745746
net_wm_name => b"_NET_WM_NAME" only_if_exists = false,
746747
wm_pid => b"_NET_WM_PID" only_if_exists = false,
@@ -867,6 +868,25 @@ impl TryFrom<u32> for SetState {
867868
}
868869
}
869870

871+
#[derive(Debug, Clone, Copy)]
872+
pub enum WmState {
873+
Withdrawn = 0,
874+
Normal = 1,
875+
Iconic = 3,
876+
}
877+
878+
impl TryFrom<u32> for WmState {
879+
type Error = ();
880+
fn try_from(value: u32) -> Result<Self, Self::Error> {
881+
match value {
882+
0 => Ok(Self::Withdrawn),
883+
1 => Ok(Self::Normal),
884+
3 => Ok(Self::Iconic),
885+
_ => Err(()),
886+
}
887+
}
888+
}
889+
870890
pub struct RealConnection {
871891
atoms: Atoms,
872892
connection: Rc<xcb::Connection>,
@@ -985,6 +1005,15 @@ impl XConnection for RealConnection {
9851005
}) {
9861006
debug!("ChangeProperty failed ({:?}: {:?})", window, e);
9871007
}
1008+
if let Err(e) = self.connection.send_and_check_request(&x::ChangeProperty {
1009+
mode: x::PropMode::Replace,
1010+
window,
1011+
property: self.atoms.wm_state,
1012+
r#type: self.atoms.wm_state,
1013+
data: &[WmState::Normal as u32, 0],
1014+
}) {
1015+
debug!("ChangeProperty failed ({:?}: {:?})", window, e);
1016+
}
9881017

9891018
if let Some(name) = output_name {
9901019
let Some(output) = self.outputs.get(&name).copied() else {

0 commit comments

Comments
 (0)