all repos — openbox @ 8d5bd298540b98eb10072c5ee281c64f221ce9a6

openbox fork - make it a bit more like ryudo

set desktop names on startup
Dana Jansens danakj@orodu.net
commit

8d5bd298540b98eb10072c5ee281c64f221ce9a6

parent

0c96f0fc8980143213fb4b15950ab806b6da634d

4 files changed, 22 insertions(+), 6 deletions(-)

jump to
M src/client.ccsrc/client.cc

@@ -539,7 +539,8 @@

void OBClient::setDesktop(long target) { - assert(target >= 0); + printf("Setting desktop %ld\n", target); + assert(target >= 0 || target == (signed)0xffffffff); //assert(target == 0xffffffff || target < MAX); // XXX: move the window to the new desktop (and set root property)
M src/rootwindow.ccsrc/rootwindow.cc

@@ -38,9 +38,8 @@ if (!property->get(_info->rootWindow(),

otk::OBProperty::net_desktop_names, otk::OBProperty::utf8, &num, &_names)) _names.clear(); - for (int i = 0; i < numWorkspaces; ++i) - if (i <= static_cast<int>(_names.size())) - _names.push_back("Unnamed workspace"); + while ((signed)_names.size() < numWorkspaces) + _names.push_back("Unnamed"); }

@@ -74,9 +73,17 @@ if (e.format != 32) return;

//const otk::OBProperty *property = Openbox::instance->property(); - // XXX: so many client messages to handle here! + // XXX: so many client messages to handle here! ..or not.. they go to clients } + +void OBRootWindow::setDesktopNames(const otk::OBProperty::StringVect &names) +{ + _names = names; + const otk::OBProperty *property = Openbox::instance->property(); + property->set(_info->rootWindow(), otk::OBProperty::net_desktop_names, + otk::OBProperty::utf8, names); +} void OBRootWindow::setDesktopName(int i, const std::string &name) {
M src/rootwindow.hhsrc/rootwindow.hh

@@ -53,6 +53,9 @@ OBRootWindow(int screen);

//! Destroys the OBRootWindow object virtual ~OBRootWindow(); + //! Sets the name of all desktops + void setDesktopNames(const otk::OBProperty::StringVect &names); + //! Sets the name of a desktop /*! @param i The index of the desktop to set the name for (base 0)
M src/screen.ccsrc/screen.cc

@@ -93,7 +93,7 @@

// set up notification of netwm support setSupportedAtoms(); - // Set the netwm atoms for geomtery and viewport + // Set the netwm properties for geometry and viewport unsigned long geometry[] = { _info->width(), _info->height() }; Openbox::instance->property()->set(_info->rootWindow(),

@@ -106,6 +106,11 @@ otk::OBProperty::net_desktop_viewport,

otk::OBProperty::Atom_Cardinal, viewport, 2); + // Set the net_desktop_names property + std::vector<std::string> names; + python_get_stringlist("desktop_names", &names); + _root.setDesktopNames(names); + // create the window which gets focus when no clients get it XSetWindowAttributes attr; attr.override_redirect = true;