aboutsummaryrefslogtreecommitdiffhomepage
path: root/freedowm.py
diff options
context:
space:
mode:
authorMarvin Borner2019-06-07 18:12:34 +0200
committerMarvin Borner2019-06-07 18:12:34 +0200
commit73d10d8c26b942f1cabbaf881b0055b359173f9a (patch)
tree2c99600b79eb6c34320d013cb7696525a97a6dff /freedowm.py
parentaee9b49284b64bc8ccb8adb93af20d85ac036043 (diff)
Added tag assigning via shift mask
Diffstat (limited to 'freedowm.py')
-rw-r--r--freedowm.py27
1 files changed, 18 insertions, 9 deletions
diff --git a/freedowm.py b/freedowm.py
index 7ee10a1..1cdc5c8 100644
--- a/freedowm.py
+++ b/freedowm.py
@@ -22,6 +22,7 @@ class FreedoWM(object):
self.colors = self.config["COLORS"]
self.programs = self.config["PROGRAMS"]
self.mod = X.Mod1Mask if self.keys["MOD"] == "alt" else X.Mod4Mask
+ self.shift_mask = False
self.display = Display()
self.screen = self.display.screen()
@@ -210,11 +211,8 @@ class FreedoWM(object):
try:
if not self.ignore_actions:
self.log("CLOSE WINDOW")
- if {"window": self.event.window, "tag": self.current_tag} \
- in self.program_stack:
- self.program_stack.remove(
- {"window": self.event.window, "tag": self.current_tag}
- )
+ if {"window": self.event.window, "tag": self.current_tag} in self.program_stack:
+ self.program_stack.remove({"window": self.event.window, "tag": self.current_tag})
if self.tiling_state:
self.tiling_windows[self.monitor_id].remove(self.event.window)
self.update_tiling()
@@ -302,8 +300,12 @@ class FreedoWM(object):
y=attribute.y + (self.start.detail == 1 and y_diff or 0)
)
+ # Toggle the shift mask identifier
+ elif (self.event.type == X.KeyPress or self.event.type == X.KeyRelease) and self.event.detail == 50:
+ self.shift_mask = not self.shift_mask
+
# Cycle between windows (MOD + Tab) // X11's "tab" keysym is 0, but it's 23
- if self.event.type == X.KeyPress and self.event.detail == int(self.keys["CYCLE"]) \
+ elif self.event.type == X.KeyPress and self.event.detail == int(self.keys["CYCLE"]) \
and len(self.program_stack) > 0:
if self.program_stack_index + 1 >= len(self.program_stack):
self.program_stack_index = 0
@@ -372,13 +374,20 @@ class FreedoWM(object):
self.display.close()
sys.exit()
+ # Display tag or move window to tag with shift mask
elif self.event.type == X.KeyPress and self.event.detail in \
[self.to_key(self.keys["TAG0"]), self.to_key(self.keys["TAG1"]), self.to_key(self.keys["TAG2"]),
self.to_key(self.keys["TAG3"]), self.to_key(self.keys["TAG4"]), self.to_key(self.keys["TAG5"]),
self.to_key(self.keys["TAG6"]), self.to_key(self.keys["TAG7"]), self.to_key(self.keys["TAG8"])]:
- self.current_tag = int(XK.keysym_to_string(self.display.keycode_to_keysym(self.event.detail, 0)))
- self.log("SHIFT TAG TO " + str(self.current_tag))
- self.update_tags()
+ new_tag = int(XK.keysym_to_string(self.display.keycode_to_keysym(self.event.detail, 0)))
+ if not self.shift_mask:
+ self.log("SHIFT TAG TO " + str(self.current_tag))
+ self.current_tag = new_tag
+ self.update_tags()
+ elif self.window_focused():
+ self.log("MODIFY WINDOW TAG " + str(self.current_tag))
+ self.program_stack[self.program_stack_index]["tag"] = new_tag
+ self.update_tags()
elif self.event.type == X.ButtonRelease:
self.start = None