diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..e69de29 diff --git a/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml new file mode 100644 index 0000000..105ce2d --- /dev/null +++ b/.idea/inspectionProfiles/profiles_settings.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..0bdf6c9 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..f82ef78 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/qtile.iml b/.idea/qtile.iml new file mode 100644 index 0000000..8b8c395 --- /dev/null +++ b/.idea/qtile.iml @@ -0,0 +1,12 @@ + + + + + + + + + + \ No newline at end of file diff --git a/.idea/workspace.xml b/.idea/workspace.xml new file mode 100644 index 0000000..f240587 --- /dev/null +++ b/.idea/workspace.xml @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + 1605572036306 + + + + + + + + + + + + + + \ No newline at end of file diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..86336ad --- /dev/null +++ b/LICENSE @@ -0,0 +1,20 @@ +MIT License + +Copyright (c) 2020 Daniel Diaz + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE diff --git a/__pycache__/config.cpython-38.pyc b/__pycache__/config.cpython-38.pyc new file mode 100644 index 0000000..fa20b1f Binary files /dev/null and b/__pycache__/config.cpython-38.pyc differ diff --git a/__pycache__/functions.cpython-38.pyc b/__pycache__/functions.cpython-38.pyc new file mode 100644 index 0000000..75b9212 Binary files /dev/null and b/__pycache__/functions.cpython-38.pyc differ diff --git a/__pycache__/groups.cpython-38.pyc b/__pycache__/groups.cpython-38.pyc new file mode 100644 index 0000000..231cb45 Binary files /dev/null and b/__pycache__/groups.cpython-38.pyc differ diff --git a/__pycache__/keybindings.cpython-38.pyc b/__pycache__/keybindings.cpython-38.pyc new file mode 100644 index 0000000..aa28ab8 Binary files /dev/null and b/__pycache__/keybindings.cpython-38.pyc differ diff --git a/__pycache__/layouts.cpython-38.pyc b/__pycache__/layouts.cpython-38.pyc new file mode 100644 index 0000000..3b8c4d3 Binary files /dev/null and b/__pycache__/layouts.cpython-38.pyc differ diff --git a/__pycache__/widgets.cpython-38.pyc b/__pycache__/widgets.cpython-38.pyc new file mode 100644 index 0000000..a66081a Binary files /dev/null and b/__pycache__/widgets.cpython-38.pyc differ diff --git a/autostart.sh b/autostart.sh new file mode 100755 index 0000000..e2291b1 --- /dev/null +++ b/autostart.sh @@ -0,0 +1,4 @@ +#! /bin/bash +picom & +nitrogen --restore & +megasync & diff --git a/config.py b/config.py new file mode 100644 index 0000000..0db5365 --- /dev/null +++ b/config.py @@ -0,0 +1,131 @@ +############################################### +### QTILE CONFIGURATION FILE OF DANIEL DIAZ ### +# +# ____ ____ +# | _ \ | _ \ Copyright (c) 2020 Daniel Diaz +# | | | || | | | +# | |_| || |_| | http://www.github.com/Daniel1404/ +# |____/ |____/ +# + +# Copyright (c) 2010 Aldo Cortesi +# Copyright (c) 2010, 2014 dequis +# Copyright (c) 2012 Randall Ma +# Copyright (c) 2012-2014 Tycho Andersen +# Copyright (c) 2012 Craig Barnes +# Copyright (c) 2013 horsik +# Copyright (c) 2013 Tao Sauvage +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. + +####### IMPORTS ######### +import os +import subprocess + + +# from typing import List # noqa: F401 + +from libqtile import hook, layout +from libqtile.config import Group + +# Local Files +from keybindings import Keybindings, Mouse +from widgets import MyWidgets +from layouts import Layouts +from groups import CreateGroups + +group_icons = ["B  ", + "D  ", + "T  ", + "V  ", + "M  ", + "C  ", + "E  "] + + +###### MAIN ###### +if __name__ in ["config", "__main__"]: + # Initializes objects + obj_keys = Keybindings() + obj_mouse = Mouse() + obj_widgets = MyWidgets() + obj_layouts = Layouts() + obj_groups = CreateGroups() + # Initializes qtile variables + keys = obj_keys.init_keys() + mouse = obj_mouse.init_mouse() + layouts = obj_layouts.init_layouts() + groups = obj_groups.init_groups() + + # Append group keys for groups + keys += obj_keys.init_keys_groups(group_icons) + + ### DISPLAYS WIDGETS IN THE SCREEN #### + + screens = obj_widgets.init_screen() + main_widgets_list = obj_widgets.init_widgets_list() + widgets_screen1 = obj_widgets.init_widgets_screen() + + +dgroups_key_binder = None +dgrups_app_rules = [] +main = None # WARNING: this is deprecated and will be removed soon +follow_mouse_focus = True +bring_front_click = False +cursor_warp = False +floating_layout = layout.Floating(float_rules=[ + # Run the utility of `xprop` to see the wm class and name of an X client. + {'wmclass': 'confirm'}, + {'wmclass': 'dialog'}, + {'wmclass': 'download'}, + {'wmclass': 'error'}, + {'wmclass': 'file_progress'}, + {'wmclass': 'notification'}, + {'wmclass': 'splash'}, + {'wmclass': 'toolbar'}, + {'wmclass': 'confirmreset'}, # gitk + {'wmclass': 'makebranch'}, # gitk + {'wmclass': 'maketag'}, # gitk + {'wname': 'branchdialog'}, # gitk + {'wname': 'pinentry'}, # GPG key password entry + {'wmclass': 'ssh-askpass'}, # ssh-askpass +]) +auto_fullscreen = True +focus_on_window_activation = "smart" + + +@hook.subscribe.startup_once +def start_once(): + home = os.path.expanduser('~') + subprocess.call([home + '/.config/qtile/autostart.sh']) + +@hook.subscribe.client_new +def dialogs(window): + if(window.window.get_wm_type() == 'dialog' or window.window.get_wm_transient_for()): + window.floating = True + +# XXX: Gasp! We're lying here. In fact, nobody really uses or cares about this +# string besides java UI toolkits; you can see several discussions on the +# mailing lists, GitHub issues, and other WM documentation that suggest setting +# this string if your java app doesn't work correctly. We may as well just lie +# and say that we're a working one by default. +# +# We choose LG3D to maximize irony: it is a 3D non-reparenting WM written in, +# java that happens to be on java's whitelist. +wmname = "LG3D" diff --git a/functions.py b/functions.py new file mode 100644 index 0000000..30c8daf --- /dev/null +++ b/functions.py @@ -0,0 +1,50 @@ +from libqtile.command import lazy + +class Functions(object): + + ##### MOVE WINDOW IN GROUPS ##### + @staticmethod + def window_to_prev_group(): + @lazy.function + def __inner(qtile): + i = qtile.groups.index(qtile.current_group) + + if qtile.current_window and i != 0: + group = qtile.groups[i - 1].name + qtile.current_window.togroup(group, switch_group=True) + return __inner + + @staticmethod + def window_to_next_group(): + @lazy.function + def __inner(qtile): + i = qtile.groups.index(qtile.current_group) + + if qtile.current_window and i != len(qtile.groups): + group = qtile.groups[i + 1].name + qtile.current_window.togroup(group, switch_group=True) + return __inner + + + ##### KILL ALL WINDOWS ##### + + @staticmethod + def kill_all_windows(): + @lazy.function + def __inner(qtile): + for window in qtile.current_group.windows: + window.kill() + return __inner + + @staticmethod + def kill_all_windows_minus_current(): + @lazy.function + def __inner(qtile): + for window in qtile.current_group.windows: + if window != qtile.current_window: + window.kill() + return __inner + + +if __name__ == "__main__": + pass diff --git a/groups.py b/groups.py new file mode 100644 index 0000000..2dbf7ec --- /dev/null +++ b/groups.py @@ -0,0 +1,23 @@ +from libqtile.config import Group + + +class CreateGroups: + def __init__(self): + self.group_names = ["B  ", + "D  ", + "T  ", + "V  ", + "M  ", + "C  ", + "E  "] + + def init_groups(self): + """ + Return the groups of Qtile + """ + #### First and last + groups = [Group(name, layout="max") if name == self.group_names[0] + else Group(name, layout="floating") + if name == self.group_names[-1] else Group(name, layout="monadtall") + for name in self.group_names] + return groups diff --git a/icons/layout-floating.png b/icons/layout-floating.png new file mode 100644 index 0000000..e876b13 Binary files /dev/null and b/icons/layout-floating.png differ diff --git a/icons/layout-max.png b/icons/layout-max.png new file mode 100644 index 0000000..889bc78 Binary files /dev/null and b/icons/layout-max.png differ diff --git a/icons/layout-monadtall.png b/icons/layout-monadtall.png new file mode 100644 index 0000000..cf84fb8 Binary files /dev/null and b/icons/layout-monadtall.png differ diff --git a/icons/layout-tile.png b/icons/layout-tile.png new file mode 100644 index 0000000..74cd1e7 Binary files /dev/null and b/icons/layout-tile.png differ diff --git a/icons/layout-treetab.png b/icons/layout-treetab.png new file mode 100644 index 0000000..bd9c396 Binary files /dev/null and b/icons/layout-treetab.png differ diff --git a/icons/python.png b/icons/python.png new file mode 100644 index 0000000..bd02fea Binary files /dev/null and b/icons/python.png differ diff --git a/keybindings.py b/keybindings.py new file mode 100644 index 0000000..cfdcc65 --- /dev/null +++ b/keybindings.py @@ -0,0 +1,162 @@ +from libqtile.config import Click, Drag, Group, Key +from libqtile.lazy import lazy +from libqtile.utils import guess_terminal +from libqtile import layout + +# Import the function that move the window to the next and prev group +from functions import Functions + + +class Keybindings: + def __init__(self, mod="mod4", alt="mod1", altgr="mod5", termite="termite"): + self.mod = mod + self.alt = alt + self.altgr = altgr + self.termite = termite + + def init_keys(self): + + #################### CUSTOM KEYS ########################## + return [ + # Switch between windows in current stack pane + Key([self.mod], "k", lazy.layout.down(), + desc="Move focus down in stack pane"), + Key([self.mod], "j", lazy.layout.up(), + desc="Move focus up in stack pane"), + + # Move windows up or down in current stack + Key([self.mod, "control"], "k", lazy.layout.shuffle_down(), + desc="Move window down in current stack "), + Key([self.mod, "control"], "j", lazy.layout.shuffle_up(), + desc="Move window up in current stack "), + Key([self.mod, "control"], "h", lazy.layout.swap_left()), + Key([self.mod, "control"], "l", lazy.layout.swap_right()), + + # Move screen to next and previous workspace + Key([self.mod], "l", lazy.screen.next_group(), + desc="Move screen to the next workspace"), + Key([self.mod], "h", lazy.screen.prev_group(), + desc="Move screen to the previous workspace"), + + ####### MOVE WINDOWS TO PREV AND NEXT GROUPS ###### + Key([self.mod, "shift"], "l", Functions.window_to_next_group(), + desc="Move window and screen to the next workspace"), + Key([self.mod, "shift"], "h", Functions.window_to_prev_group(), + desc="Move window and screen to the previous workspace"), + + ####### MOVE WINDOWS TO PREV AND NEXT GROUPS ###### + Key([self.mod, self.altgr], "w", Functions.kill_all_windows(), + desc="Kill all windows in the workspace"), + Key([self.mod, self.altgr], "c", Functions.kill_all_windows_minus_current(), + desc="Kill all windows except current in the workspace"), + + # Switch window focus to other pane(s) of stack + Key([self.mod], "space", lazy.layout.next(), + desc="Switch window focus to other pane(s) of stack"), + + # Swap panes of split stack + Key([self.mod, "shift"], "space", lazy.layout.rotate(), + desc="Swap panes of split stack"), + + # Toggle between split and unsplit sides of stack. + # Split = all windows displayed + # Unsplit = 1 window displayed, like Max layout, but still with + # multiple stack panes + Key([self.mod, "shift"], "Return", lazy.layout.toggle_split(), + desc="Toggle between split and unsplit sides of stack"), + Key([self.mod], "Return", lazy.spawn( + self.termite), desc="Launch terminal"), + + # Toggle between different layouts as defined below + Key([self.mod], "Tab", lazy.next_layout(), + desc="Toggle between layouts"), + Key([self.mod], "w", lazy.window.kill(), desc="Kill focused window"), + + # Normalize or Maximize windows + Key([self.mod, self.altgr], "n", + lazy.layout.normalize(), desc="Normalize current windows"), + Key([self.mod, self.altgr], "m", + lazy.layout.maximize(), desc="Normalize current windows"), + + # Basic Commands + Key([self.mod, "control"], "r", + lazy.restart(), desc="Restart qtile"), + Key([self.mod, "control"], "q", + lazy.shutdown(), desc="Shutdown qtile"), + Key([self.mod, self.alt], "space", lazy.spawn("dmenu_run -p 'Run: '"), + desc="Run Dmenu"), + + # Applications hotkeys + # Apps are opened with Super + left self.alt keys + Key([self.mod, self.alt], "d", lazy.spawn( + "emacs"), desc="Open Doom Emacs"), + Key([self.mod, self.alt], "v", lazy.spawn("gvim"), desc="Open Gvim"), + Key([self.mod, self.alt], "o", lazy.spawn( + "env LIBGL_ALWAYS_SOFTWARE=1 obs"), desc="Open Obs Studio"), + Key([self.mod, self.alt], "n", lazy.spawn( + self.termite + " -e nvim"), desc="Open Neovim"), + Key([self.mod, self.alt], "f", lazy.spawn(self.termite + \ + " -e ./.config/vifm/scripts/vifmrun"), desc="Open vifm"), + Key([self.mod, self.alt], "b", lazy.spawn( + "brave"), desc="Open Brave"), + Key([self.mod, self.alt], "c", lazy.spawn( + "codium"), desc="Open VS codium"), + Key([self.mod, self.alt], "p", lazy.spawn( + "pycharm"), desc="Open Pycharm CE"), + Key([self.mod, self.alt], "a", lazy.spawn("pavucontrol"), + desc="Open Pulse audio GUI controller"), + Key([self.mod, self.alt], "e", lazy.spawn("emacs ~/.config/qtile/config.py"), + desc="Open Qtile config file on emacs"), + + + # PWA hotkeys + + Key([self.mod, self.alt], "s", + lazy.spawn( + "/usr/lib/brave-beta/brave --profile-directory=Default --app-id=pjibgclleladliembfgfagdaldikeohf"), + desc="Open Spotify PWA"), # In others system the PWA id will be different + + Key([self.mod, self.alt], "y", + lazy.spawn( + "/usr/lib/brave-beta/brave --profile-directory=Default --app-id=cinhimbnkkaeohfgghhklpknlkffjgod"), + desc="Open Youtube Music PWA"), + + # Media hotkeys + Key([self.mod], 'Up', lazy.spawn('pulseaudio-ctl up 5')), + Key([self.mod], 'Down', lazy.spawn('pulseaudio-ctl down 5')), + Key([self.mod], 'm', lazy.spawn('pulseaudio-ctl set 1')), + + # Screenshots + Key([], "Print", lazy.spawn('flameshot gui')), + Key([self.alt], "Print", lazy.spawn('flameshot full -c')), + ] + + def init_keys_groups(self, group_names): + """ + Create bindings to move between groups + """ + keys = [] + + for icon in group_names: + indx = (icon[0]).lower() + + keys += [ + Key([self.mod, 'control'], indx, lazy.group[icon].toscreen()), + Key([self.mod, 'shift'], indx, lazy.window.togroup(icon, switch_group=True))] + + return keys + + +class Mouse: + def __init__(self): + self.mod = "mod4" + + def init_mouse(self): + mouse = [ + Drag([self.mod], "Button1", lazy.window.set_position_floating(), + start=lazy.window.get_position()), + Drag([self.mod], "Button3", lazy.window.set_size_floating(), + start=lazy.window.get_size()), + Click([self.mod], "Button2", lazy.window.bring_to_front()) + ] + return mouse diff --git a/layouts.py b/layouts.py new file mode 100644 index 0000000..b98183c --- /dev/null +++ b/layouts.py @@ -0,0 +1,31 @@ +from libqtile import layout + +class Layouts: + def __init__(self): + self.default = { + "border_width": 2, + "margin": 6, + "border_focus": "#668bd7", + "border_normal": "1D2330"} + + def init_layouts(self): + """ + Returns the layouts variable + """ + layouts = [ + layout.MonadTall(**self.default), + layout.Max(**self.default), + layout.floating.Floating(**self.default), + layout.TreeTab(**self.default), + layout.Stack(num_stacks=2), + # Try more layouts by unleashing below layouts. + # layout.Bsp(), + # layout.Columns(), + # layout.Matrix(), + # layout.MonadWide(**self.default), + # layout.RatioTile(), + # layout.Tile(), + # layout.VerticalTile(), + # layout.Zoomy(), + ] + return layouts \ No newline at end of file diff --git a/widgets.py b/widgets.py new file mode 100644 index 0000000..6e3c6b0 --- /dev/null +++ b/widgets.py @@ -0,0 +1,209 @@ +import os +from libqtile import bar, layout, widget +from libqtile.lazy import lazy +from libqtile.config import Screen + +# widget_defaults = dict( +# font="Ubuntu Mono", +# fontsize = 12, +# padding = 2, +# background=colors[2] +# ) + +# extension_defaults = widget_defaults.copy() + + +class MyWidgets: + def __init__(self): + self.colors = [["#292d3e", "#292d3e"], # panel background + # background for current screen tab + ["#434758", "#434758"], + ["#ffffff", "#ffffff"], # font color for group names + # border line color for current tab + ["#ff5555", "#ff5555"], + # border line color for other tab and odd widgets + ["#8d62a9", "#8d62a9"], + ["#668bd7", "#668bd7"], # color for the even widgets + ["#e1acff", "#e1acff"]] # window name + self.termite = "termite" + + def init_widgets_list(self): + ''' + Function that returns the desired widgets in form of list + ''' + widgets_list = [ + widget.Sep( + linewidth=0, + padding=6, + foreground=self.colors[2], + background=self.colors[0] + ), + widget.Image( + filename="~/.config/qtile/icons/python.png", + mouse_callbacks={ + 'Button1': lambda qtile: qtile.cmd_spawn('dmenu_run')} + ), + widget.GroupBox( + font="Ubuntu Bold", + fontsize=12, + margin_y=2, + margin_x=0, + padding_y=5, + padding_x=3, + borderwidth=3, + active=self.colors[2], + inactive=self.colors[2], + rounded=False, + highlight_color=self.colors[1], + highlight_method="line", + this_current_screen_border=self.colors[3], + this_screen_border=self.colors[4], + other_current_screen_border=self.colors[0], + other_screen_border=self.colors[0], + foreground=self.colors[2], + background=self.colors[0] + ), + widget.Prompt( + prompt=lazy.spawncmd(), + font="Ubuntu Mono", + padding=10, + foreground=self.colors[3], + background=self.colors[1] + ), + widget.Sep( + linewidth=0, + padding=40, + foreground=self.colors[2], + background=self.colors[0] + ), + widget.WindowName( + foreground=self.colors[6], + background=self.colors[0], + padding=0 + ), + widget.Systray( + background=self.colors[0], + padding=5 + ), + # widget.TextBox( + # text = '', + # background = self.colors[0], + # foreground = self.colors[4], + # padding = 0, + # fontsize = 37 + # ), + # widget.TextBox( + # text = " ⟳", + # padding = 2, + # foreground = self.colors[2], + # background = self.colors[4], + # fontsize = 14 + # ), + # # widget.CheckUpdates( + # # update_interval = 1000, + # # foreground = self.colors[2], + # # mouse_callbacks = {'Button1': lambda qtile: qtile.cmd_spawn(self.termite + ' -e sudo pacman -Syu')}, + # # background = self.colors[4] + # # ), + # widget.TextBox( + # text = "Updates", + # padding = 5, + # mouse_callbacks = {'Button1': lambda qtile: qtile.cmd_spawn(self.termite + ' -e sudo pacman -Syu')}, + # foreground = self.colors[2], + # background = self.colors[4] + # ), + widget.TextBox( + text='', + background=self.colors[0], + foreground=self.colors[5], + padding=0, + fontsize=37 + ), + widget.TextBox( + text=" 🖬", + foreground=self.colors[2], + background=self.colors[5], + padding=0, + fontsize=14 + ), + widget.Memory( + foreground=self.colors[2], + background=self.colors[5], + mouse_callbacks={'Button1': lambda qtile: qtile.cmd_spawn( + self.termite + ' -e htop')}, + padding=5 + ), + widget.TextBox( + text='', + background=self.colors[5], + foreground=self.colors[4], + padding=0, + fontsize=37 + ), + widget.TextBox( + text="  ", + foreground=self.colors[2], + background=self.colors[4], + padding=0, + mouse_callbacks={ + "Button1": lambda qtile: qtile.cmd_spawn("pavucontrol")} + ), + widget.Volume( + foreground=self.colors[2], + background=self.colors[4], + padding=5 + ), + widget.TextBox( + text='', + background=self.colors[4], + foreground=self.colors[5], + padding=0, + fontsize=37 + ), + widget.CurrentLayoutIcon( + custom_icon_paths=[os.path.expanduser( + "~/.config/qtile/icons")], + foreground=self.colors[0], + background=self.colors[5], + padding=0, + scale=0.7 + ), + widget.CurrentLayout( + foreground=self.colors[2], + background=self.colors[5], + padding=5 + ), + widget.TextBox( + text='', + background=self.colors[5], + foreground=self.colors[4], + padding=0, + fontsize=37 + ), + widget.Clock( + foreground=self.colors[2], + background=self.colors[4], + format="%B %d [ %H:%M ]" + ), + widget.Sep( + linewidth=0, + padding=10, + foreground=self.colors[0], + background=self.colors[4] + ), + ] + return widgets_list + + def init_widgets_screen(self): + ''' + Function that returns the widgets in a list. + It can be modified so it is useful if you have a multimonitor system + ''' + widgets_screen = self.init_widgets_list() + return widgets_screen + + def init_screen(self): + ''' + Init the widgets in the screen + ''' + return [Screen(top=bar.Bar(widgets=self.init_widgets_screen(), opacity=1.0, size=20))]