> Which terminal are you using?
I'm using Tilix and I'm currently switching to alacritty to add
transparency without success yet. Qtile is version 0.17.0
also my full config is :
# 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.
# default imports
from typing import List # noqa: F401
from libqtile import bar, layout, widget, hook
from libqtile.config import Click, Drag, Group, Key, Match, Screen
from libqtile.lazy import lazy
from libqtile.utils import guess_terminal
# custom imports
import os, subprocess
import libqtile
# AUTOSTART
=============================================================================================
@hook.subscribe.startup_once
def autostart():
home = os.path.expanduser('~/.config/qtile/autostart.sh')
subprocess.call([home])
# PARAMETERS
===========================================================================================
mod = "mod1"
terminal = "tilix"
# KEYS
==================================================================================================
keys = [
# Switch between windows
Key([mod], "h", lazy.layout.left(), desc="Move focus to left"),
Key([mod], "l", lazy.layout.right(), desc="Move focus to right"),
Key([mod], "j", lazy.layout.down(), desc="Move focus down"),
Key([mod], "k", lazy.layout.up(), desc="Move focus up"),
Key([mod], "space", lazy.layout.next(),
desc="Move window focus to other window"),
# Move windows between left/right columns or move up/down in current stack.
# Moving out of range in Columns layout will create new column.
Key([mod, "shift"], "h", lazy.layout.shuffle_left(),
desc="Move window to the left"),
Key([mod, "shift"], "l", lazy.layout.shuffle_right(),
desc="Move window to the right"),
Key([mod, "shift"], "j", lazy.layout.shuffle_down(),
desc="Move window down"),
Key([mod, "shift"], "k", lazy.layout.shuffle_up(), desc="Move window up"),
# Grow windows. If current window is on the edge of screen and direction
# will be to screen edge - window would shrink.
Key([mod, "control"], "h", lazy.layout.grow_left(),
desc="Grow window to the left"),
Key([mod, "control"], "l", lazy.layout.grow_right(),
desc="Grow window to the right"),
Key([mod, "control"], "j", lazy.layout.grow_down(),
desc="Grow window down"),
Key([mod, "control"], "k", lazy.layout.grow_up(), desc="Grow window up"),
Key([mod], "n", lazy.layout.normalize(), desc="Reset all window sizes"),
# 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([mod, "shift"], "Return", lazy.layout.toggle_split(),
desc="Toggle between split and unsplit sides of stack"),
Key([mod], "Return", lazy.spawn(terminal), desc="Launch terminal"),
# Toggle between different layouts as defined below
Key([mod], "Tab", lazy.next_layout(), desc="Toggle between layouts"),
Key([mod], "w", lazy.window.kill(), desc="Kill focused window"),
Key([mod, "control"], "r", lazy.restart(), desc="Restart Qtile"),
Key([mod, "control"], "q", lazy.shutdown(), desc="Shutdown Qtile"),
Key([mod], "r", lazy.spawncmd(),
desc="Spawn a command using a prompt widget"),
]
# GROUPS
===================================================================================================
groups = [
Group("MAIN", spawn=terminal, exclusive=False, matches=[]),
Group("WWW", spawn="firefox", exclusive=False),
Group("CHAT",spawn=["discord","telegram-desktop"], exclusive=False),
Group("VBOX", exclusive=False),
]
keys.extend([
Key([mod], "a", lazy.group["MAIN"].toscreen(toggle=False)), # Move to the
group called group_name. Takes an optional toggle parameter (defaults to
True). If this group is already on the screen, then the group is toggled
with last used
Key([mod, "shift"], "a", lazy.window.togroup("MAIN", switch_group=True)), #
Move focused window to the group called group_name
Key([mod], "s", lazy.group["WWW"].toscreen(toggle=False)),
Key([mod, "shift"], "s", lazy.window.togroup("WWW", switch_group=True)),
Key([mod], "d", lazy.group["CHAT"].toscreen(toggle=False)),
Key([mod, "shift"], "d", lazy.window.togroup("CHAT", switch_group=True)),
Key([mod], "f", lazy.group["VBOX"].toscreen(toggle=False)),
Key([mod, "shift"], "f", lazy.window.togroup("VBOX", switch_group=True)),
])
# LAYOUTS
====================================================================================================
layout_theme = {"border_width": 2,
"margin": 8,
"border_focus": "e1acff",
"border_normal": "1D2330"
}
colors = [["#2e3440", "#2e3440"], # background
["#242831", "#242831"], # background alt
["#ffffff", "#ffffff"], # white
["#ff5555", "#ff5555"], # white alt
["#797FD4", "#797FD4"], # violet
["#89aaff", "#89aaff"], # blue
["#89ddff", "#89ddff"], # ice
["#E05F27", "#E05F27"], # orange
["#c3e88d", "#c3e88d"], # green
["#ffcb6b", "#ffcb6b"], # orange
["#f07178", "#f07178"]] # red
layouts = [
layout.Columns(**layout_theme),
layout.Max(),
# Try more layouts by unleashing below layouts.
# layout.Stack(num_stacks=2),
# layout.Bsp(),
# layout.Matrix(),
layout.MonadTall(),
# layout.MonadWide(),
# layout.RatioTile(),
# layout.Tile(),
# layout.TreeTab(),
# layout.VerticalTile(),
# layout.Zoomy(),
]
layouts_main = [
]
# WIDGETS
======================================================================================================
widget_defaults = dict(
font="Ubuntu Mono",
fontsize = 14,
padding = 2,
#background=colors[2]
)
extension_defaults = widget_defaults.copy()
# initialisation des widgets pour le grand écran
def init_widget_big():
res = [
# layouts
widget.Sep(
linewidth = 0,
padding = 15,
foreground = colors[2],
background = colors[1]
),
widget.CurrentLayoutIcon(
custom_icon_paths = [os.path.expanduser("~/.config/qtile/icons")],
foreground = colors[0],
background = colors[0],
padding = 0,
scale = 0.7
),
widget.CurrentLayout(
foreground = colors[2],
background = colors[0],
padding = 5
),
widget.Sep(
linewidth = 0,
padding = 15,
foreground = colors[2],
background = colors[1]
),
# groupbox
widget.GroupBox(
font = "Ubuntu Bold",
fontsize = 9,
margin_y = 3,
margin_x = 0,
padding_y = 5,
padding_x = 3,
borderwidth = 3,
active = colors[2],
inactive = colors[2],
rounded = False,
highlight_color = colors[0],
highlight_method = "line",
this_current_screen_border = colors[6],
this_screen_border = colors [4],
other_current_screen_border = colors[6],
other_screen_border = colors[4],
foreground = colors[2],
background = colors[1]
),
# promt & window name
widget.Prompt(
linewidth = 0,
padding = 40,
foreground = colors[2],
background = colors[1]
),
widget.Sep(
linewidth = 0,
padding = 40,
foreground = colors[2],
background = colors[1]
),
widget.WindowName(
max_chars = 70,
empty_group_string = '---',
foreground = colors[6],
background = colors[1],
padding = 0
),
widget.Sep(
linewidth = 0,
padding = 6,
foreground = colors[1],
background = colors[1]
),
# clock
widget.TextBox(
text = ' ',
background = colors[1],
foreground = colors[0],
padding = 0,
fontsize = 20
),
widget.Clock(
foreground = colors[6],
background = colors[0],
format = " %A, %B %d - %H:%M "
),
widget.TextBox(
text = ' ',
background = colors[1],
foreground = colors[0],
padding = 0,
fontsize = 20
),
widget.Sep(
linewidth = 0,
padding = 1000,
foreground = colors[1],
background = colors[1]
),
# net
widget.TextBox(
text = ' ',
background = colors[1],
foreground = colors[0],
padding = 0,
fontsize = 20
),
widget.Net(
interface = "wlp2s0",
format = ' ↓ {down:<5} ↑ {up:<5}',
foreground = colors[8],
background = colors[0],
padding = 5,),
widget.TextBox(
text = ' ',
background = colors[1],
foreground = colors[0],
padding = 0,
fontsize = 20
),
# temp
widget.TextBox(
text = ' ',
background = colors[1],
foreground = colors[0],
padding = 0,
fontsize = 20
),
widget.TextBox(
text = " 🌡",
padding = 2,
foreground = colors[2],
background = colors[0],
),
widget.ThermalSensor(
foreground = colors[10],
background = colors[0],
threshold = 90,
padding = 5
),
widget.TextBox(
text = ' ',
background = colors[1],
foreground = colors[0],
padding = 0,
fontsize = 20
),
# update
widget.TextBox(
text = ' ',
background = colors[1],
foreground = colors[0],
padding = 0,
fontsize = 20
),
widget.TextBox(
text = " ⟳",
padding = 2,
foreground = colors[9],
background = colors[0],
),
widget.CheckUpdates(
update_interval = 1800,
distro = "Arch_checkupdates",
display_format = "{updates} Updates",
mouse_callbacks = {'Button1': lambda: qtile.cmd_spawn(myTerm + ' -e sudo
pacman -Syu')},
foreground = colors[9],
background = colors[0]
),
widget.TextBox(
text = ' ',
background = colors[1],
foreground = colors[0],
padding = 0,
fontsize = 20
),
# memory
widget.TextBox(
text = ' ',
background = colors[1],
foreground = colors[0],
padding = 0,
fontsize = 20
),
widget.TextBox(
text = " ",
foreground = colors[4],
background = colors[0],
padding = 0,
),
widget.Memory(
foreground = colors[4],
background = colors[0],
mouse_callbacks = {'Button1': lambda: qtile.cmd_spawn(myTerm + ' -e bpytop'
)},
padding = 5,
format = '{MemUsed: .0f}/{MemTotal: .0f}',
measure_mem = 'G',
measure_swap = 'G'
),
widget.TextBox(
text = ' ',
background = colors[1],
foreground = colors[0],
padding = 0,
fontsize = 20
),
# volume
widget.TextBox(
text = ' ',
background = colors[1],
foreground = colors[0],
padding = 0,
fontsize = 20
),
widget.TextBox(
text = " :",
foreground = colors[9],
background = colors[0],
padding = 0
),
widget.Volume(
foreground = colors[9],
background = colors[0],
padding = 5
),
widget.TextBox(
text = ' ',
background = colors[1],
foreground = colors[0],
padding = 0,
fontsize = 20
),
# CPU
widget.TextBox(
text = ' ',
background = colors[1],
foreground = colors[0],
padding = 0,
fontsize = 20
),
widget.TextBox(
text = " : ",
foreground = colors[6],
background = colors[0],
padding = 0
),
widget.CPU(
frequency=1,
format = '{freq_current} GHz {load_percent:>6.2f}%',
samples=10,
foreground = colors[6],
background = colors[0],
padding = 10,
),
widget.TextBox(
text = ' ',
background = colors[1],
foreground = colors[0],
padding = 0,
fontsize = 20
),
#widget.Systray(),
]
return res
# initialisation des widgets pour le petit écran
def init_widget_small():
res = [
widget.CurrentLayout(),
widget.GroupBox(visible_groups=["VBOX"]),
widget.WindowName(),
widget.Chord(
chords_colors={
'launch': ("#ff0000", "#ffffff"),
},
name_transform=lambda name: name.upper(),
),
widget.TextBox("Press <M-r> to spawn", foreground="#d75f5f"),
widget.Systray(),
widget.Clock(format='%Y-%m-%d %a %I:%M %p'),
widget.QuickExit(),
]
return res
# SCREENS
=========================================================================================================
screens = [
# écran principal, 24 = taille de la bar
#Screen(top=bar.Bar(init_widget_small(),24)),
# écran secondaire (WQHD)
Screen(top=bar.Bar(init_widget_big(),opacity=1.0, size=25))
]
# MOUSE
============================================================================================================
mouse = [
Drag([mod], "Button1", lazy.window.set_position_floating(),
start=lazy.window.get_position()),
Drag([mod], "Button3", lazy.window.set_size_floating(),
start=lazy.window.get_size()),
Click([mod], "Button2", lazy.window.bring_to_front())
]
dgroups_key_binder = None
dgroups_app_rules = [] # type: List
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.
*layout.Floating.default_float_rules,
Match(wm_class='confirmreset'), # gitk
Match(wm_class='makebranch'), # gitk
Match(wm_class='maketag'), # gitk
Match(wm_class='ssh-askpass'), # ssh-askpass
Match(title='branchdialog'), # gitk
Match(title='pinentry'), # GPG key password entry
])
auto_fullscreen = True
focus_on_window_activation = "smart"
# 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"
On Thursday, April 8, 2021 at 10:49:54 PM UTC+2 elParaguayo wrote:
> I couldn't recreate this.
>
> I tried creating a group which spawned alacritty on start up. I could
> still create additional alacritty instances in any other group.
>
> Which terminal are you using?
>
> On Thursday, 8 April 2021 at 20:29:28 UTC+1 [email protected] wrote:
>
>> To answers future people looking for this thread I did solved it by
>> adding an empty matches parameter to the corresponding group :
>> Group("MAIN", spawn=terminal, exclusive=False, matches=[]),
>>
>>
>> On Thursday, April 8, 2021 at 8:04:44 PM UTC+2 Seph IZ wrote:
>>
>>> Any ideas how to unmatch this ?
>>>
>>> On Thursday, April 8, 2021 at 3:26:11 PM UTC+2 elParaguayo wrote:
>>>
>>>> I may well be wrong.
>>>>
>>>> It looks like that Match rule is just on the pid of the spawned
>>>> process, rather than the app name/class.
>>>>
>>>> I'm happy to do some testing/digging in to this.
>>>>
>>>> On Thu, 8 Apr 2021, 14:23 Tycho Andersen, <[email protected]> wrote:
>>>>
>>>>> On Thu, Apr 8, 2021, at 6:38 AM, el Paraguayo wrote:
>>>>>
>>>>> Adding the spawn argument not only results in the app being spawned on
>>>>> init but it also adds a Match rule so that future instances of those apps
>>>>> are also spawned in those groups.
>>>>>
>>>>>
>>>>> Which is a bug, IMO. It used to delete these rules after they were
>>>>> matched, though that code seems to have disappeared somehow.
>>>>>
>>>>> Tycho
>>>>>
>>>>>
>>>>> On Thu, 8 Apr 2021, 13:28 Kai Stian Olstad, <[email protected]>
>>>>> wrote:
>>>>>
>>>>> On 08.04.2021 09:13, Seph IZ wrote:
>>>>>
>>>>> >> I observed a weird behaviour, don't know if it's a bug or im
>>>>> missusing
>>>>> > something.
>>>>> >>
>>>>> >> I've put the spawn option in Groups for firefox and my terminal.
>>>>> >> However,
>>>>> > when I try to to spawn on another group it autonatically goes to the
>>>>> > group
>>>>> > were I assigned the previously app>
>>>>> >>
>>>>> >> groups = [
>>>>> >> Group("MAIN", spawn=terminal, exclusive=False),
>>>>> >> Group("WWW", spawn="firefox", exclusive=False),
>>>>> >> Group("CHAT",spawn=["discord","telegram-desktop"],
>>>>> >> exclusive=False),
>>>>> >> Group("VBOX", exclusive=False),
>>>>> >> ]
>>>>> >> when I try to open a terninal in my WWW Group it is redirected in
>>>>> the
>>>>> >> MAIN group.
>>>>> >>
>>>>> >> Any ideas ?
>>>>> >
>>>>> > Should I create another issue regarding this behaviour ?
>>>>>
>>>>> Unfortunately I can not help you there, I haven't used spawn.
>>>>>
>>>>>
>>>>> --
>>>>> Kai Stian Olstad
>>>>>
>>>>> --
>>>>> You received this message because you are subscribed to the Google
>>>>> Groups "qtile-dev" group.
>>>>> To unsubscribe from this group and stop receiving emails from it, send
>>>>> an email to [email protected].
>>>>> To view this discussion on the web visit
>>>>> https://groups.google.com/d/msgid/qtile-dev/e7fb66aa73acbbb2d643b18ac590f6a5%40olstad.com
>>>>> .
>>>>>
>>>>>
>>>>> --
>>>>> You received this message because you are subscribed to the Google
>>>>> Groups "qtile-dev" group.
>>>>> To unsubscribe from this group and stop receiving emails from it, send
>>>>> an email to [email protected].
>>>>> To view this discussion on the web visit
>>>>> https://groups.google.com/d/msgid/qtile-dev/CADPQLhDYNAhdBXcxz0r4RjAcNf8hD9-7MohR%3DwdqH0EQb9Sx9g%40mail.gmail.com
>>>>>
>>>>> <https://groups.google.com/d/msgid/qtile-dev/CADPQLhDYNAhdBXcxz0r4RjAcNf8hD9-7MohR%3DwdqH0EQb9Sx9g%40mail.gmail.com?utm_medium=email&utm_source=footer>
>>>>> .
>>>>>
>>>>> --
>>>>> You received this message because you are subscribed to the Google
>>>>> Groups "qtile-dev" group.
>>>>> To unsubscribe from this group and stop receiving emails from it, send
>>>>> an email to [email protected].
>>>>>
>>>> To view this discussion on the web visit
>>>>> https://groups.google.com/d/msgid/qtile-dev/3078f051-ebe2-4f05-b9b9-209235d86842%40www.fastmail.com
>>>>>
>>>>> <https://groups.google.com/d/msgid/qtile-dev/3078f051-ebe2-4f05-b9b9-209235d86842%40www.fastmail.com?utm_medium=email&utm_source=footer>
>>>>> .
>>>>>
>>>>
--
You received this message because you are subscribed to the Google Groups
"qtile-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/qtile-dev/a627ef65-fb38-498f-8bb2-7bca4a6a3348n%40googlegroups.com.