move workspace X to active display
, nous la réalisonsVous avez deux écrans ou plus, et lorsque vous êtes sur un écran et souhaitez aller sur un workspace X, vous souhaitez que ce workspace soit affiché sur l'écran courant et non sur l'écran sur lequel il a été déclaré.
Il n'y a pas de commande intégrée à i3 qui permette de faire ça directement, mais en utilisant les IPC, nous allons réaliser un script qui fait tout ce qu'on veut.
~/.config/i3/
.#!/usr/bin/env python from json import loads from os import popen from sys import argv def ipc_query(req="command", msg=""): ans = popen("i3-msg -t " + req + " " + msg).readlines()[0] return loads(ans) if __name__ == "__main__": # Usage & checking args if len(argv) != 2: print "Usage: switch-workspace.py name-of-workspace" exit(-1) newworkspace = argv[1] # Retrieving active display active_display = None old_display = None for w in ipc_query(req="get_workspaces"): if w['focused']: active_display = w['output'] if w['name'] == newworkspace: old_display = w['output'] if newworkspace.isdigit() and w['num'] == int(newworkspace): old_display = w['output'] print w # Pre-computing commands if newworkspace.isdigit(): cmd_show = "workspace number " + newworkspace else: cmd_show = "workspace " + newworkspace cmd_move = "move workspace to output " + active_display # Moving workspace to active display if active_display == old_display: print cmd_show print ipc_query(msg=cmd_show) else: cmd="'" + cmd_show + ";" + cmd_move + ";" + cmd_show + "'" print cmd print ipc_query(msg=cmd)
chmod u+x ~/.config/i3/switch-workspace.py
Pour utiliser le script, on rajoute les bindings qui vont bien dans le fichier de configuration d'i3 :
... bindsym $mod+minus exec ~/.config/i3/switch-workspace.py 6 ...
Et avec ça:
Meta + -
affiche directement le workspace 6 sur l'écran courant.