diff options
Diffstat (limited to 'util/epist/window.cc')
| -rw-r--r-- | util/epist/window.cc | 32 |
1 files changed, 31 insertions, 1 deletions
diff --git a/util/epist/window.cc b/util/epist/window.cc index 15f8b11c..62087283 100644 --- a/util/epist/window.cc +++ b/util/epist/window.cc @@ -35,13 +35,14 @@ using std::endl; using std::hex; using std::dec; - XWindow::XWindow(Window window) : _window(window) { _unmapped = false; XSelectInput(_display, _window, PropertyChangeMask | StructureNotifyMask); updateState(); updateDesktop(); + updateTitle(); + updateClass(); } @@ -80,3 +81,32 @@ void XWindow::updateDesktop() { static_cast<unsigned long>(_desktop))) _desktop = 0; } + + +void XWindow::updateTitle() { + _title = ""; + + // try netwm + if (! _xatom->getValue(_window, XAtom::net_wm_name, XAtom::utf8, _title)) { + // try old x stuff + _xatom->getValue(_window, XAtom::wm_name, XAtom::ansi, _title); + } + + if (_title.empty()) + _title = "Unnamed"; +} + + +void XWindow::updateClass() { + // set the defaults + _app_name = _app_class = ""; + + XAtom::StringVect v; + unsigned long num = 2; + + if (! _xatom->getValue(_window, XAtom::wm_class, XAtom::ansi, num, v)) + return; + + if (num > 0) _app_name = v[0]; + if (num > 1) _app_class = v[1]; +} |
