You can still drag on the whitespace between status bar components, for example on the 2 spaces before the buffer name.
You can also resize windows with the keyboard:
C-x ^ (
enlarge-window), the prefix argument is the number of lines to add.
Each mode line element may have a
local-map property which is a keymap that applies when you click on that element. The mouse bindings for the standard mode line elements are defined in
bindings.el. You can loop over the various keymaps you find in there; the key to remap is
[mode-line mouse-1]. You may have to also deal with modes that add their own components to the mode line.
A mode line element that has a local keymap looks like this:
(:propertize ELEMENT ... local-map (keymap ...) ...). You can iterate over
mode-line-format and detect and modify all such keymaps. It's more code than I care to write in this answer because elements can be symbols, which you have to follow, and lists, which you have to recurse into if their
car is right. Unfortunately for you, when
:propertize elements are nested, it looks like the deepest property applies, so you can't just override all
local-map propertize by wrapping the whole mode line in a
propertize. Again you'll have to deal with modes that add their own components separately.