Login
Newsletter
Di, 6. Juli 2004, 23:53

ION2: Frame- und Desktopwechsel mit einer einzigen Tastenkombination

Ion2 ist ein etwas außergewöhnlicher Windowmanager, der gut mit der Tastatur zu bedienen ist. Er unterstützt mehrere Desktops, die in einzelne Regionen (genannt »Frames«) unterteilt werden, um so eine Alternative zu überlappenden Fenstern zu schaffen.

Doch ein Verhalten störte mich: Man kann mit einer Tastenkombination zwar um ein Frame nach links oder rechts springen, um auf den nächsten Bildschirm zu gelangen, braucht man jedoch eine weite Tastenkombination. Wollte man zu einer Region springen, die rechts neben der rechtsliegendsten Region des Bildschirms - und somit außerhalb von diesem - liegt, so wurde automatisch die am weitesten linke ausgewählt.

Zum Glück ist ION nicht nur sehr effizient in der Bedienung, sondern auch durch die Sprache Lua sehr leicht erweiterbar. So schrieb ich mir ohne große Lua-Kenntnisse mit Hilfe der ION-Funktionsreferenz eine Funktion, die folgendes leistet: Versucht der Anwender, zu einer Region zu springen, die außerhalb des aktuellen Desktops ist, so wird automatisch auf den nächsten Desktop geschaltet, der in der angegebenen Richtung liegt. Dies ist in etwa mit Windowmanagern vergleichbar, die die Desktops wechseln, wenn man mit dem Mauszeiger den bisherigen Bildschirm zu verlassen versucht.

-- By 2004, Rene van Bevern <rvb@pro-linux.de>
-- 	Public Domain

function go_frame_or_desk(ws, dir)
	local reg = ws:current()
	local scr = ws:screen_of()
	if ws:next_to(reg,dir) then ws:goto_dir(dir)
	elseif dir == "left" then
		scr:switch_prev()
		scr:current():rightmost():goto()
	elseif dir == "right" then
		scr:switch_next()
		scr:current():leftmost():goto()
	end
end

Nun kann man die Funktion in seine ION2-Konfigurationsdatei ionws.lua schreiben und im Bereich ionws_bindings ein paar Tasten definieren:

ionws_bindings{
	kpress(DEFAULT_MOD.."Down", function(f) go_frame_or_desk(f, "down") end),
	kpress(DEFAULT_MOD.."Up", function(f) go_frame_or_desk(f, "up") end),
	kpress(DEFAULT_MOD.."Right", function(f) go_frame_or_desk(f, "right") end),
	kpress(DEFAULT_MOD.."Left", function(f) go_frame_or_desk(f, "left") end),
}

Damit lässt sich nun mit der Tastenkombination Standardmodifier+Pfeiltasten zu einer neuen Region oder zu einem neuen Desktop gleichermaßen springen.

Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten