DK Window Manager


@natemaia Here’s something that’s happening when I run yaxwm with polybar. You can see I have two workspaces 1 and even one workspace 11, but I can’t really click on both the first ws 1 and ws 11. If I do super + 1 I go to the first one, super +2 I get to the second ws 1, super +2 takes me to ws 3 and so on, and I can’t get to ws 11 neither by clicking or by keybinds. One other thing is that if I restart yaxwm on any workspace, then the workspace I’m currently on will be the one that gets a duplicate except when I go to ws 9 and restart yaxwm, that way it ‘removes’ the duplicates and sets the straight 1-10 ws row.

Can you post the output of

xprop -root

$ xprop -root
_NET_ACTIVE_WINDOW(WINDOW): window id # 0x2a00006
_NET_CLIENT_LIST(WINDOW): window id # 0x1600006, 0x1800001, 0x1a00001, 0x2200002, 0x2a00006
_NET_DESKTOP_VIEWPORT(CARDINAL) = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
_XROOTPMAP_ID(PIXMAP): pixmap id # 0xe00000
ESETROOT_PMAP_ID(PIXMAP): pixmap id # 0xe00000
XFree86_DDC_EDID1_RAWDATA(INTEGER) = 0, -1, -1, -1, -1, -1, -1, 0, 6, -81, 60, 35, 0, 0, 0, 0, 0, 22, 1, 4, -112, 31, 17, 120, 2, -69, -11, -108, 85, 84, -112, 39, 35, 80, 84, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, -14, 29, 86, -22, 80, 0, 30, 48, 38, 22, 54, 0, 53, -83, 16, 0, 0, 26, -9, 19,
86, -22, 80, 0, 30, 48, 38, 22, 54, 0, 53, -83, 16, 0, 0, 26, 0, 0, 0, -2, 0, 57, 84, 77, 68, 71, -128,
66, 49, 52, 48, 88, 84, 78, 0, 0, 0, 0, 0, 0, 65, 33, -106, 1, 17, 0, 0, 1, 1, 10, 32, 32, 0, 71
RESOURCE_MANAGER(STRING) = “.font:\tInconsolata Nerd Font:pixelsize=14:antialias=true:autohint=true\nbackground:\t#0f0f0f\ncolor0:\t#0c0c0c\ncolor1:\t#0e6b57\ncolor10:\t#0d5c94\ncolor11:\t#9f9f9f\ncolor12:\t#4F929A\ncolor13:\t#A1A09B\ncolor14:\t#CCC0BA\ncolor15:\t#530b72\ncolor2:\t#0d5c94\ncolor3:\t#fd6200\ncolor4:\t#9f9f9f\ncolor5:\t#78909c\ncolor6:\t#CCC0BA\ncolor7:\t#530b72\ncolor8:\t#a19f9c\ncolor9:\t#0e6b57\nforeground:\t#e6e4df\nSxiv.background:\t#0d0d0d\nSxiv.foreground:\t#ebdbb2\nURxvtbackground:\t[95]#292929\nURxvtdepth:\t32\nURxvtexternalBorder:\t0\nURxvtinternalBorder:\t4\nURxvtiso14755:\tfalse\nURxvtletterSpace:\t-1\nURxvtsaveline:\t15000\nURxvtscrollBar:\tfalse\nURxvtscrollBar_right:\tfalse\nURxvt*termName:\trxvt-256color\nURxvt.copyCommand:\txclip -i -selection clipboard\nURxvt.font:\txft:mono:pixelsize=12:antialias=true:autohint=true\nURxvt.keysym.m-c:\tperl:clipboard:copy\nURxvt.keysym.m-v:\tperl:clipboard:paste\nURxvt.pasteCommand:\txclip -o -selection clipboard\nURxvt.underlineURLs:\ttrue\nURxvt.urlButton:\t1\nURxvt.urlLauncher:\texo-open\nst.alpha:\t1\n”
_NET_DESKTOP_NAMES(UTF8_STRING) = “1”, “2”, “3”, “4”, “5”, “6”, “7”, “8”, “9”, “10”
_NET_SUPPORTING_WM_CHECK(WINDOW): window id # 0x40000a
_XKB_RULES_NAMES(STRING) = “evdev”, “pc105”, “br”, “”, “caps:super”
XFree86_has_VT(INTEGER) = 1
XFree86_VT(INTEGER) = 1

Yea everything is as it should be there. What about your polybar workspace module?

I’ll install polybar in a minute here and give it a go, been a while.

It’s the same module PackRat showed me a couple of months ago

Do you recommend any other bars? I mean most of the time I just keep polybar hidden, the only thing I toggle it for is when I want to see the workspace I’m currently on. I have a notify-send script to show me the other stuff, so if there’s another good bar option that shows the workspaces I’m willing to try it

Awesome thanks.

Polybar should be fine, there’s also tint2 but it’s not as tiler friendly.

For now I just pushed a very large commit with some fixes and additions to things mentioned here

# set ws names
yaxcmd set ws=1 name="new ws 1" ws=2 name="I'm ws 2" ...

# ws=N rules properly apply now,
# no ws {next,prev} non-empty yet. 

Now to try out polybar and see what’s up.

1 Like

The rules are working great! Also that thing I mentioned earlier that the workspace got a duplicate every time I restarted yaxwm is gone!

Awesome, I recently overhauled the way workspaces are handled and there was a bunch of regressions, this being one of them. Getting there though, I appreciate the interest and posting when you have issues so cheers!

1 Like

No problem at all!

1 Like

@natemaia I noticed that the monocle layout won’t ignore gaps if I have smart gaps disabled. So say I have 15 gap width on the desktop and 2 windows open, if I set the monocle it will cover the windows area but the gaps will still be there. That only happens if smart gaps is disabled though

@rml it is expected behavior. Smart gaps enabled means with one window you don’t have gaps, and if it’s disabled - not reducing gaps for one window. Same about the borders.

I understand that, but I thought it would work like the monocle layout on bspwm and dwm. If you apply the smartgaps patch to dwm or if you have single_monocle set to ‘false’ in bspwmrc, the monocle layout will take the full screen anyway. That’s why I thought it wasn’t an expected behaviour. So, is there another way to have a windows completely fullscreen then?

you need to enable smart gaps, not sure i got the issue

Do you mean ignore bars too? If so then no, unless the window has built in support for setting it’s own state to fullscreen (video players, web browsers, etc.).

To use up the free real estate enable smart gaps so you don’t get gaps in layouts with only a single window visible (tiled with only one window or mono layout).

I’m also not trying to fully implement everything from [insert wm here] if it can be easily done through other means. I think you just want a different layout, the implementation of the mono layout is very simple; tweak it and add it to config.h with a matching entry in the layouts array under a different name then add a bind for that name to your sxhkdrc.

/* config.h */

int gmono(Workspace *ws)
	Client *c;
	int g, wx, wy, ww, wh;

	wx = ws->mon->wx + ws->padl;
	wy = ws->mon->wy + ws->padt;
	ww = ws->mon->ww - ws->padl - ws->padr;
	wh = ws->mon->wh - ws->padt - ws->padb;
	for (c = nextt(ws->clients); c; c = nextt(c->next))
		resizehint(c, wx, wy, ww, wh, border[Smart] ? 0 : border[Width], 0, 0);
	return 1;

static Layout layouts[] = {
	{ "tile",  tile  }, /* first is initial default */
	{ "mono",  mono  },
	{ "gmono", gmono },
	{ "none",  NULL  },
# sxhkdrc

alt + {t,m,g,f}
    yaxcmd set layout {tile,mono,gmono,none}

The same could be done for a “true” fullscreen layout that ignores bars too by changing the wx, wy, ww, wh variables though there might be issues with the stacking order and the bar may be on-top of the windows.

Edit: fixed error


No no, I don’t mean hiding the bar, in fact mine is hidden most of the time. It was just the case that I thought that the monocle would maximize the windows even with smart gaps disabled. It’s not really a problem to me, I always use smart gaps, I just disabled it to see how the layout would look like with a new wallpaper lol

1 Like

A lot of format changes in there. May have time to check it out again this week.

nate I just added this monocle layout and works great, thanks! I had to replace ‘border[Smart]’ with ‘globalcfg[SmartBorder]’ because it wouldn’t recompile so I checked the mono layout in yaxwm.c and copied that part.
Dude I’m really loving yax, it’s been 3 days taht I really got to use it and now it is the only wm I’ve used this past couple of days, and today I completely removed bspwm and i3 from my machine, now there’s just yax and dwm and to be honest I don’t plan on going back to dwm lol The only thing I miss is the option to move through occupied workspaces, other than that it just fits all my needs.

Whoops lol.

Thanks man, I’ve added next/prev non-empty workspace command, just working on some other things and haven’t pushed yet. I’ll post back here when I do.

@PackRat Yea for sure do it up man.