From 4bade23063dd54f33c9e25231e3018d054143fbe Mon Sep 17 00:00:00 2001 From: Thiago Kenji Okada Date: Sat, 14 Jan 2017 17:41:53 -0200 Subject: [PATCH] Forcibly update xkblayout module internal state So when the user modifies the layout externally (for example, using setkbmap) the update is correctly reflect in i3pystatus. Fix issue #523. --- i3pystatus/xkblayout.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/i3pystatus/xkblayout.py b/i3pystatus/xkblayout.py index 9d0c8cf..518dd4d 100644 --- a/i3pystatus/xkblayout.py +++ b/i3pystatus/xkblayout.py @@ -72,7 +72,14 @@ class Xkblayout(IntervalModule): def change_layout(self, increment=1): self._xkb.group_num += increment + def update_state(self): + """Update internal state if keyboard layout changed externally""" + self._xkb.close_display() + self._xkb.open_display() + def run(self): + self.update_state() + cdict = { "num": self._xkb.group_num, "name": self._xkb.group_name,