56 lines
1.6 KiB
Python
56 lines
1.6 KiB
Python
#!/usr/bin/env python3
|
|
|
|
from gi.repository import Gtk, GLib
|
|
from i3ipc import Event
|
|
|
|
from nwg_panel.tools import check_key, update_image
|
|
|
|
|
|
class SwayMode(Gtk.Box):
|
|
def __init__(self, i3, settings, icons_path=""):
|
|
Gtk.Box.__init__(self, orientation=Gtk.Orientation.HORIZONTAL, spacing=0)
|
|
self.settings = settings
|
|
self.i3 = i3
|
|
self.label = Gtk.Label.new("default")
|
|
|
|
icon = Gtk.Image()
|
|
|
|
defaults = {
|
|
"show-default": False,
|
|
"show-icon": True,
|
|
"css-name": "",
|
|
"icon-size": 16,
|
|
"angle": 0.0
|
|
}
|
|
for key in defaults:
|
|
check_key(settings, key, defaults[key])
|
|
|
|
update_image(icon, "mode", self.settings["icon-size"], icons_path)
|
|
|
|
if self.settings["css-name"]:
|
|
self.set_property("name", self.settings["css-name"])
|
|
else:
|
|
self.set_property("name", "executor-label")
|
|
|
|
if settings["angle"] != 0.0:
|
|
self.set_orientation(Gtk.Orientation.VERTICAL)
|
|
self.label.set_angle(settings["angle"])
|
|
|
|
if settings["show-icon"]:
|
|
self.pack_start(icon, False, False, 2)
|
|
|
|
self.pack_start(self.label, False, False, 2)
|
|
|
|
if not self.settings["show-default"]:
|
|
GLib.idle_add(self.hide, priority=GLib.PRIORITY_HIGH)
|
|
|
|
self.i3.on(Event.MODE, self.on_i3ipc_event)
|
|
|
|
def on_i3ipc_event(self, i3conn, event):
|
|
mode = event.change
|
|
self.label.set_text(mode)
|
|
if mode != "default" or self.settings["show-default"]:
|
|
self.show_all()
|
|
else:
|
|
self.hide()
|