Ich habe Ihre Frage zu meiner Aufgabe für heute Abend gemacht und es ist mir gelungen, eine funktionierende Version zu bekommen. Seien Sie vorsichtig, es ist ziemlich hackig! Soweit ich weiß, gibt es keine andere Möglichkeit, dies zu tun. Vor allem, weil es einen Fehler bei der Anwendung von Regeln gibt.
Was machst du? Bei der Ausführung Mod4 + r
speichern wir das aktuelle fokussierte Tag in einer Liste. Bei der Anwendung von Regeln auf erscheinende Fenster wird das entsprechende Tag aus der Liste angezeigt. Wir benötigen die einmalige Funktion, weil awesome im Moment einen Fehler hat und Regeln zweimal auf ein Fenster anwendet. Wir müssen unseren Terminal-Emulator (und alle anderen Programme, die wir mit der Tastenkombination beginnen) davon ausschließen, da er sonst an dem Tag geöffnet wird, an dem wir zuletzt gedrückt haben Mod4 + r
.
Sie benötigen die folgenden Funktionen in Ihrer rc.lua.
local rule_count = 0 local tag_count = 0 local run_tag = {} local function once() if rule_count == 1 then rule_count = 0 else rule_count = 1 end return rule_count end local function get_run_tag() if once() == 1 then if tag_count > 0 then tag_count = tag_count - 1 return table.remove(run_tag) else return "1" end end end local function push_run_tag(tag) table.insert(run_tag, tag) tag_count = tag_count + 1 end
Suchen Sie dann in Ihrem rc.lua nach dem folgenden Teil:
{ rule_any = }, properties = { titlebars_enabled = false } -- or true },
Und füge ein paar Zeilen hinzu, damit es so aussieht:
{ rule_any = }, except_any = { class = { "Termite" }}, properties = { titlebars_enabled = false, tag = function() return get_run_tag() end} },
Sie müssen Termite
den Konsolenemulator ersetzen, mit dem Sie normalerweise beginnen Mod4 + return
. Zusätzlich müssen Sie jedes Programm der Klassentabelle hinzufügen, die Sie mit Schlüsselbindungen beginnen möchten.
Suchen Sie dann nach der Mod4 + r
Schlüsselbindung. Im Moment sollte es dieser gefallen:
awful.key({ modkey }, "r", awful.screen.focused().mypromptbox:run() ),
Ändern Sie es so, dass es so aussieht:
awful.key({ modkey }, "r", function () awful.screen.focused().mypromptbox:run() push_run_tag(awful.screen.focused().selected_tag.name) end, ),
Ich würde bessere Lösungen schätzen!
PS: Dies funktioniert nicht für Anwendungen wie Steam, da mehrere Fenster geöffnet werden. Der erste bekommt den richtigen Tag. Das folgende ist das Tag "1".