forked from quickshell/quickshell
		
	x11/panelwindow: set _NET_WM_DESKTOP to stay on all desktops
This commit is contained in:
		
							parent
							
								
									683d92a05f
								
							
						
					
					
						commit
						23cd6cd9e1
					
				
					 3 changed files with 22 additions and 1 deletions
				
			
		| 
						 | 
					@ -185,7 +185,25 @@ void XPanelWindow::setFocusable(bool focusable) {
 | 
				
			||||||
	emit this->focusableChanged();
 | 
						emit this->focusableChanged();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void XPanelWindow::xInit() { this->updateDimensions(); }
 | 
					void XPanelWindow::xInit() {
 | 
				
			||||||
 | 
						if (this->window == nullptr || this->window->handle() == nullptr) return;
 | 
				
			||||||
 | 
						this->updateDimensions();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						auto* conn = x11Connection();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Stick to every workspace
 | 
				
			||||||
 | 
						auto desktop = 0xffffffff;
 | 
				
			||||||
 | 
						xcb_change_property(
 | 
				
			||||||
 | 
								conn,
 | 
				
			||||||
 | 
								XCB_PROP_MODE_REPLACE,
 | 
				
			||||||
 | 
								this->window->winId(),
 | 
				
			||||||
 | 
								XAtom::_NET_WM_DESKTOP.atom(),
 | 
				
			||||||
 | 
								XCB_ATOM_CARDINAL,
 | 
				
			||||||
 | 
								32,
 | 
				
			||||||
 | 
								1,
 | 
				
			||||||
 | 
								&desktop
 | 
				
			||||||
 | 
						);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void XPanelWindow::connectScreen() {
 | 
					void XPanelWindow::connectScreen() {
 | 
				
			||||||
	if (this->mTrackedScreen != nullptr) {
 | 
						if (this->mTrackedScreen != nullptr) {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -23,11 +23,13 @@ xcb_connection_t* x11Connection() {
 | 
				
			||||||
// NOLINTBEGIN
 | 
					// NOLINTBEGIN
 | 
				
			||||||
XAtom XAtom::_NET_WM_STRUT {};
 | 
					XAtom XAtom::_NET_WM_STRUT {};
 | 
				
			||||||
XAtom XAtom::_NET_WM_STRUT_PARTIAL {};
 | 
					XAtom XAtom::_NET_WM_STRUT_PARTIAL {};
 | 
				
			||||||
 | 
					XAtom XAtom::_NET_WM_DESKTOP {};
 | 
				
			||||||
// NOLINTEND
 | 
					// NOLINTEND
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void XAtom::initAtoms() {
 | 
					void XAtom::initAtoms() {
 | 
				
			||||||
	_NET_WM_STRUT.init("_NET_WM_STRUT");
 | 
						_NET_WM_STRUT.init("_NET_WM_STRUT");
 | 
				
			||||||
	_NET_WM_STRUT_PARTIAL.init("_NET_WM_STRUT_PARTIAL");
 | 
						_NET_WM_STRUT_PARTIAL.init("_NET_WM_STRUT_PARTIAL");
 | 
				
			||||||
 | 
						_NET_WM_DESKTOP.init("_NET_WM_DESKTOP");
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void XAtom::init(const QByteArray& name) {
 | 
					void XAtom::init(const QByteArray& name) {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -15,6 +15,7 @@ public:
 | 
				
			||||||
	// NOLINTBEGIN
 | 
						// NOLINTBEGIN
 | 
				
			||||||
	static XAtom _NET_WM_STRUT;
 | 
						static XAtom _NET_WM_STRUT;
 | 
				
			||||||
	static XAtom _NET_WM_STRUT_PARTIAL;
 | 
						static XAtom _NET_WM_STRUT_PARTIAL;
 | 
				
			||||||
 | 
						static XAtom _NET_WM_DESKTOP;
 | 
				
			||||||
	// NOLINTEND
 | 
						// NOLINTEND
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	static void initAtoms();
 | 
						static void initAtoms();
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue