So, I started sending a lot of commands to dvtm via the command fifo and
I noticed an odd thing.
Every window exposes a variable called $DVTM_WINDOW_ID, so one can
imagine that if you want to focus on a window you should just pass the
command 'focusn 1' where 1 would be the id of that window.
What happens is something different than this and somewhat confusing.
Maybe there's a reason for it being that way, I don't know if this is a
design decision or a bug.
In any case: I attached a patch that changes the focus command to
use the window id, so that the focus command is invariant in respect to
layout changes and scripts have a better api to interact with.
diff --git a/dvtm.c b/dvtm.c
index 71ffccb..055d982 100644
--- a/dvtm.c
+++ b/dvtm.c
@@ -787,7 +787,7 @@ copymode(const char *args[]) {
static void
focusn(const char *args[]) {
for (Client *c = clients; c; c = c->next) {
- if (c->order == atoi(args[0])) {
+ if (c->id == atoi(args[0])) {
focus(c);
if (c->minimized)
toggleminimize(NULL);