summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--util/epist/actions.cc5
-rw-r--r--util/epist/actions.hh17
-rw-r--r--util/epist/epist.cc13
-rw-r--r--util/epist/screen.cc32
-rw-r--r--util/epist/screen.hh4
5 files changed, 41 insertions, 30 deletions
diff --git a/util/epist/actions.cc b/util/epist/actions.cc
index d4beaacb..ac4fc4ab 100644
--- a/util/epist/actions.cc
+++ b/util/epist/actions.cc
@@ -22,6 +22,7 @@
#include "actions.hh"
-Action::Action(enum ActionType type, KeyCode keycode, int modifierMask):
- _type(type), _keycode(keycode), _modifierMask(modifierMask)
+Action::Action(enum ActionType type, KeyCode keycode, int modifierMask,
+ int num): _type(type), _keycode(keycode),
+ _modifierMask(modifierMask), _numberParam(num)
{ }
diff --git a/util/epist/actions.hh b/util/epist/actions.hh
index 9a7a6043..09ee523f 100644
--- a/util/epist/actions.hh
+++ b/util/epist/actions.hh
@@ -47,15 +47,15 @@ public:
nextWindow,
prevWindow,
- nextWindowOnAllDesktops,
- prevWindowOnAllDesktops,
+ nextWindowOnAllWorkspaces,
+ prevWindowOnAllWorkspaces,
nextWindowOfClass,
prevWindowOfClass,
- changeDesktop,
- nextDesktop,
- prevDesktop,
+ changeWorkspace, //done
+ nextWorkspace, //done
+ prevWorkspace, //done
// these are openbox extensions
showRootMenu,
@@ -74,13 +74,16 @@ private:
enum ActionType _type;
const KeyCode _keycode;
const int _modifierMask;
-
+
+ const int _numberParam;
public:
inline enum ActionType type() const { return _type;}
inline const KeyCode keycode() const { return _keycode; }
inline const int modifierMask() const { return _modifierMask; }
+ inline const int number() const { return _numberParam; }
- Action(enum ActionType type, KeyCode keycode, int modifierMask);
+ Action(enum ActionType type, KeyCode keycode, int modifierMask,
+ int number = 0);
};
typedef std::list<Action> ActionList;
diff --git a/util/epist/epist.cc b/util/epist/epist.cc
index a9d01792..6296fe03 100644
--- a/util/epist/epist.cc
+++ b/util/epist/epist.cc
@@ -76,14 +76,18 @@ epist::epist(char **argv, char *dpy_name, char *rc_file)
::exit(1);
}
- _actions.push_back(Action(Action::nextDesktop,
+ _actions.push_back(Action(Action::nextWorkspace,
XKeysymToKeycode(getXDisplay(),
XStringToKeysym("Tab")),
Mod1Mask));
- _actions.push_back(Action(Action::prevDesktop,
+ _actions.push_back(Action(Action::prevWorkspace,
XKeysymToKeycode(getXDisplay(),
XStringToKeysym("Tab")),
ControlMask));
+ _actions.push_back(Action(Action::shade,
+ XKeysymToKeycode(getXDisplay(),
+ XStringToKeysym("F5")),
+ Mod1Mask));
activateGrabs();
}
@@ -92,11 +96,6 @@ epist::~epist() {
delete _xatom;
}
-
-// XGrabKey(_epist->getXDisplay(), XKeysymToKeycode(_epist->getXDisplay(),
-// XStringToKeysym("F5")),
-// Mod1Mask, _root, True, GrabModeAsync, GrabModeAsync);
-
void epist::activateGrabs() {
ScreenList::const_iterator scrit, scrend = _screens.end();
diff --git a/util/epist/screen.cc b/util/epist/screen.cc
index d8f05540..afe5b8d1 100644
--- a/util/epist/screen.cc
+++ b/util/epist/screen.cc
@@ -150,12 +150,18 @@ void screen::handleKeypress(const XEvent &e) {
e.xkey.state == it->modifierMask() )
{
switch (it->type()) {
- case Action::nextDesktop:
+ case Action::nextWorkspace:
cycleWorkspace(true);
break;
- case Action::prevDesktop:
+ case Action::prevWorkspace:
cycleWorkspace(false);
break;
+ case Action::changeWorkspace:
+ changeWorkspace(it->number());
+ break;
+ case Action::shade:
+ toggleShaded((*_active)->window());
+ break;
}
break;
}
@@ -259,9 +265,7 @@ void screen::updateActiveWindow() {
}
*/
-void screen::cycleWorkspace(const bool forward) {
- cout << "blef" << endl;
-
+void screen::cycleWorkspace(const bool forward) const {
unsigned long currentDesktop = 0;
unsigned long numDesktops = 0;
@@ -272,9 +276,6 @@ void screen::cycleWorkspace(const bool forward) {
else
--currentDesktop;
- cout << currentDesktop << endl;
-
-
_xatom->getValue(_root, XAtom::net_number_of_desktops, XAtom::cardinal,
numDesktops);
@@ -283,10 +284,15 @@ void screen::cycleWorkspace(const bool forward) {
else if (currentDesktop >= numDesktops)
currentDesktop = 0;
-
- _xatom->sendClientMessage(_root, XAtom::net_current_desktop, _root,
- currentDesktop);
-
+ changeWorkspace(currentDesktop);
}
}
-
+
+void screen::changeWorkspace(const int num) const {
+ _xatom->sendClientMessage(_root, XAtom::net_current_desktop, _root, num);
+}
+
+void screen::toggleShaded(const Window win) const {
+ _xatom->sendClientMessage(_root, XAtom::net_wm_state, win, 2,
+ XAtom::net_wm_state_shaded);
+}
diff --git a/util/epist/screen.hh b/util/epist/screen.hh
index 06b2cb09..42e685de 100644
--- a/util/epist/screen.hh
+++ b/util/epist/screen.hh
@@ -65,7 +65,9 @@ public:
void handleKeypress(const XEvent &e);
- void cycleWorkspace(const bool forward);
+ void cycleWorkspace(const bool forward)const;
+ void changeWorkspace(const int num)const;
+ void toggleShaded(const Window win) const;
};
#endif // __screen_hh