My i3 dual screen workflow

Using the i3 tiling window manager on two screens („outputs“) can be challenging. The number of workspaces grows twice as fast than with a single screen setup and it is easy to lose track of the numbers and contents of workspaces. For me personally it is more intuitive to remember a certain sequence of workspaces on each screen, which seemingly extends above and below the workspace presently displayed. (It may be that this intuition has been coined by using the GNOME Shell over extended periods.)

In order to achieve a comparable user experience within i3, I use the following Python script with the keybindings presented below. The script is inspired by an article on the i3 homepage by user captnfab. It has one dependency: ziberna/i3-py, which can be installed with pip3 install i3-py. As is apparent from the keybindings, Ctrl+Alt+Up/Down are used to switch the present workspace on the focused output. With the same keys together with +Shift you can take the focused window with you.

#!/usr/bin/python3
#
# i3-switch-workspace.py
# by Fabian Stanke
#
# Sequentially switch workspaces on present output

import i3
import argparse

parser = argparse.ArgumentParser(
    description='i3 workspace switcher.')

parser.add_argument(
    '--move', action='store_true',
    help='take the focused container with you when moving.')
parser.add_argument(
    'direction', choices=['next', 'prev'],
    help='defines in which direction to switch.')

args = parser.parse_args()

workspaces = i3.get_workspaces()

# Determine focused workspace (and thus the focused output)
focused_ws = next((w for w in workspaces if w['focused']))

# Collect all workspaces of the focused output
ws_names = list(w['name'] 
                for w in workspaces 
                if w['output'] == focused_ws['output'])

# Determine position of focused worspace in that collection
idx = ws_names.index(focused_ws['name'])
target = focused_ws['name']

if args.direction == 'next':
	# Determine next workspace	

	if (idx + 1 < len(ws_names)):
		target = ws_names[idx + 1]
	else:
		# Determine last number used on this output
		maxidx = 1
		# Determine unused numbers 
		used = {}
		for w in workspaces:
			try:
				widx = int(w['name'])
				used[widx] = True
				if w['output'] == focused_ws['output']:
					maxidx = max(widx, maxidx)
			except:
				continue
		# Increment to create new name
		while used.get(maxidx, False):
			print(maxidx)
			maxidx += 1
		target = str(maxidx)


elif args.direction == 'prev':
	# Determine previous workspace

	if (idx - 1 >= 0):
		target = ws_names[idx - 1]
	#else remain at first workspace

if args.move:
	# Move the focused container to the target workspace first
	i3.command('move', 'container to workspace ' + target)

# Switch
#print("switch to " + target)
i3.workspace(target)

My preferred keybindings to actually use the above script are:

bindsym Ctrl+Mod1+Down exec i3-switch-workspace.py next
bindsym Ctrl+Mod1+Up exec i3-switch-workspace.py prev
bindsym Ctrl+Mod1+Shift+Down exec i3-switch-workspace.py --move next
bindsym Ctrl+Mod1+Shift+Up exec i3-switch-workspace.py --move prev

Umbau der ASUS EAH4870 Dark Knight

Mein Desktop Rechner, den ich mir Mitte letzten Jahres wie berichtet zusammengestellt habe, hatte seitdem ein gravierendes Problem: obwohl ich bei der Auswahl darauf geachtet hatte, produzierte das Gerät einen unangenehm hohen Lärmpegel. Der Schuldige war die zentrale Komponente, um die herum ich damals die Zusammenstellung aufgebaut hatte, die Grafikkarte. Dabei handelt es sich um die ASUS EAH4870 Dark Knight mit 1 GB Video RAM. Der darauf verbaute Kühlkörper mit Ventilator war bei weitem lauter als ich mir das vorgestellt hatte.

Da ich mich mit dieser Situation nicht dauerhaft abfinden wollte, recherchierte ich vergangene Woche bezüglich so genannten after-market Kühlern für Grafikkarten. In die engere Auswahl kamen folgende Kühler:

Andere Modelle musste ich aus Platzgründen von vornherein ausschließen. Von den drei angegebenen ist der Accelero zwar der günstigste, aber laut diversen testberichten auch der lauteste. Fairer Weise muss man dazusagen, dass bei dem Thermalright Kühler im Unterschied zu den beiden anderen keine Ventilatoren mitgeliefert werden. Nachdem ich den Platz in meinem ASUS TM-22 Gehäuse ausgemessen hatte, musste ich leider feststellen, dass für den favorisierten Musashi sehr wahrscheinlich nicht genügend Platz gewesen wäre.

Daher fiel meine Wahl auf den T-Rad2, den ich dann auch bestellte und heute Früh geliefert bekam. Dazu nahm ich zwei Noiseblocker Black Silent XE2 Ventilatoren, um die Luftzirkulation um den Kühlkörper sicherzustellen. Die Fotos dokumentieren den Umbau. Das Ergebnis ist sehr zufriedenstellend und die Geräusche des Rechners werden jetzt von der Festplatte dominiert. Bei inaktiver Festplatte hört man hauptsächlich den von Intel mitgelieferten CPU Ventilator.

Der Ausgangszustand
Nach Abnehmen des Originalkühlers
Nach der Reinigung der GPU und der VRAM Bausteine
Mit neuen Video-RAM Kühlkörper
T-Rad2 Kühlkörper
Das geht sich, wie erwartet, haarscharf aus
Kühler mit Ventilatoren
Ansicht von unten
Die Grafikkarte samt neuer Kühllösung ist wieder im Gehäuse verbaut

Neuer Desktop

Innenansicht
Innenansicht

Mittlerweile ist es ja schon sieben Wochen her, dass ich mir meinen neuen Desktop zusammengebaut habe und ich wollte schon längst einmal darüber berichten. Das hole ich jetzt nach. Zuerst eine Liste der verbauten Komponenten:

  • Intel Core 2 Quad Q8400, 4x 2.67GHz, boxed
  • ASUS EAH4870 DK/HTDI/1GD5, Radeon HD 4870, 1024MB GDDR5, 2x DVI, TV-out, PCIe 2.0
  • ASUS Maximus II GENE, P45 (dual PC2-6400U DDR2)
  • Mushkin DIMM Kit Black Ascent XP2-8500 4GB PC2-8500U CL5-5-5-15 (DDR2-1066)
  • ASUS TM-22 schwarz
  • Western Digital Caviar Blue 640GB, SATA II
  • Enermax LibertyECO 500W ATX 2.3

Das DVD-Laufwerk habe ich aus meinem alten Desktop weiterverwendet.

Die Zusammenstellung des Desktops habe ich unter zwei Voraussetzungen erstellt. Zum einen musste Sims 3 in FullHD mit höchsten Grafikeinstellungen darauf laufen, was mich auf den 4870 Chipsatz von ATI brachte. Zum zweiten musste der Rechner eine maximal Höhe von 40 cm aufweisen. Das war nur mit einem ?ATX Motherboard möglich.

Festplatte und RAM
Festplatte und RAM

Der ATI 4870 Chipsatz wird von verschiedenen Herstellern verbaut, aber die Dark Knight Karte schien die leiseste Option zu sein und hat außerdem mit 1 GB ausreichend Grafikspeicher auch für zukünftige Anwendungen.

Der Intel Core 2 Quad Q8400 war zum Zeitpunkt der Auswahl der Prozessor mit dem besten Preis/Leistungs Verhältnis aller Desktop Prozessoren.

Damit diese beiden zentralen Komponenten optimal miteinander kommunizieren können, musste der Chipsatz die maximalen Transferraten unterstützen. Der günstigste Chipsatz, der diese Bedingung erfüllt, war der Intel P45 und das einzige ?ATX Motherboard mit diesem Chipsatz war das ASUS Maximus II GENE.

Bei der Auswahl des Arbeitsspeichers habe ich mich vor allem nach der Dokumentation des Motherboards gerichtet. Der Mushkin Kit war kaum teurer als andere 4 GB Kits und hatte gute Testberichte und inkludierte Kühlkörper, die aber nicht zu groß für das kompakte Gehäuse schienen. Beim Einbauen stellte sich heraus, dass ich großes Glück hatte, da die Festplatte über den RAM Slot hinausragt und sich die Kühlkörper haargenau hinter der Festplatte ausgingen.

Damit die angeführten Komponenten nicht unter Leistungsengpässen zu leiden haben, musste ich ein 500 Watt Netzteil auswählen. Das Enermax LibertyECO wurde als ruhig beschrieben und für die gut ausgeführten Anschlüssel gelobt.

Bei der Gehäuseauswahl gab es also zwei Bedingungen: eine maximale Höhe von 40 cm und kein eingebautes Netzteil. Da in den Angaben auf der Herstellerseite ein Platz für den Frontlüfter angegeben wurde, fiel die Wahl aufgrund optischer Kriterien auf das TM-22. Diese Wahl war leider nicht gut, da vorne tatsächlich kein Platz für den Frontlüfter vorgesehen war. Das hätte ich mir nach den Bildern von der geschlossenen Frontblende denken können.

Rearlüfter
Rearlüfter

Trotzdem war die Enttäuschung groß, als ich feststellen musste, dass der Luftzug im Gehäuse nicht ausreicht um den Chipsatz am Motherboard unter 50 °C zu halten, was für einen stabilen Betrieb aber notwendig wäre. Bei Anwendungen mit hoher Belastung öffne ich im Augenblick das Gehäuse um das Absturzrisiko zu verringern.

Die Festplatte war mir eigentlich relativ gleichgültig. Die Western Digital Caviar Blue 640GB war eine günstige Wahl und schien jedenfalls auch in Zukunft genügend Platz zu bieten. Das Preis/Leistungs Verhältnis von größeren Platten war außerdem nicht besser.