You are not logged in.

#1 2022-05-06 21:26:01

Gabachin
Member
Registered: 2022-05-06
Posts: 105

Setting Picom Opacity Rule for Qtile Widgets/Status Bar (Solved)

I have a vanilla Arch setup on a Dell Latitude, and have installed qtile. My compositor is picom. To set opacity on inactive/unfocused widows I added "mark-ovredir-focused = false" to my picom config. The problem is that the qtile status bar and widgets are now at the same opacity, .6, as the inactive windows. I tried to write a picom rule to exclude the bar/widgets, using xprop, but I did not understand the output. There is no class name to use. I also have polybar running as a second bar on top, and it is not affected at all.

How do I exclude the bar/widgets from picom? Or can I set the opacity for the windows in my qtile.py?

Here is my picom config:

 backend = "glx";
glx-no-stencil = true;
vsync = true;

# Shadow
shadow = true;			# Enabled client-side shadows on windows.
shadow-radius = 4;		        # The blur radius for shadows. (default 12)
shadow-offset-x = -4;		# The left offset for shadows. (default -15)
shadow-offset-y = -4;		# The top offset for shadows. (default -15)
# shadow-opacity = 0.6;		# The translucency for shadows. (default .75)
# shadow-red = 0.0;		# Red color value of shadow. (0.0 - 1.0, defaults to 0)
# shadow-green = 0.0;		# Green color value of shadow. (0.0 - 1.0, defaults to 0)
# shadow-blue = 0.0;		# Blue color value of shadow. (0.0 - 1.0, defaults to 0)
shadow-exclude = [ "n:e:Notification" ];	# Exclude conditions for shadows.
# shadow-exclude = "n:e:Notification";
shadow-ignore-shaped = true;

# Opacity
inactive-opacity = .8;			# Opacity of inactive windows. (0.1 - 1.0)
frame-opacity = 1;			# Opacity of window titlebars and borders. (0.1 - 1.0)
inactive-opacity-override = true;	# Inactive opacity set by 'inactive-opacity' overrides value of _NET_WM_OPACITY.

# Fading
fading = true;			# Fade windows during opacity changes.
fade-delta = 10;		# The time between steps in a fade in milliseconds. (default 10).
#fade-in-step = 0.03;		# Opacity change between steps while fading in. (default 0.028).
#fade-out-step = 0.03;		# Opacity change between steps while fading out. (default 0.03).
 no-fading-openclose = true;	# Fade windows in/out when opening/closing.

# Other
inactive-dim = .6;		# Dim inactive windows. (0.0 - 1.0, defaults to 0).
mark-wmwin-focused = true;	# Try to detect WM windows and mark them as active.
mark-ovredir-focused = true;
detect-rounded-corners = true;

# Mark override-redirect windows that doesn't have a child window with 'WM_STATE' focused.
mark-ovredir-focused = false
#mark-ovredir-focused = true;

# Window type settings

opacity-rule = [
	"100:class_g *?= 'Rofi'"
];
wintypes:
{
  #normal = { fade = false; shadow = true; opacity = 1; focus = true; };
  menu = { fade = true; shadow = true; opacity = 1; focus = true; };
  #dialog = { fade = true; shadow = true; opacity = 0.9; focus = true; };
  popup_menu = { fade = true; shadow = true; opacity = 1; focus = true; };
  tooltip = { fade = false; shadow = true; opacity = 0.8; focus = true; };
  toolbar = { fade = false; shadow = true; opacity = 0.8; focus = true; };
};

Last edited by Gabachin (2022-05-09 10:32:23)

Offline

#2 2022-05-07 06:50:08

seth
Member
From: Won't reply 2 private help req
Registered: 2012-09-03
Posts: 77,245

Re: Setting Picom Opacity Rule for Qtile Widgets/Status Bar (Solved)

Please use code tags, https://bbs.archlinux.org/help.php#bbcode

What are the outputs of "xprop" and "xwininfo" for the qtile status bar?

Also

To set opacity on inactive/unfocused widows I added "mark-ovredir-focused = false" to my picom config.

This makes your OP sound like an xy-problem.
Override redirect windows are to be ignored by the window manager, they're neither active/inactive nor focused/unfocused in that sense.
What was the original problem you wanted to solve by this (there might be a directer way that then avoids the subsequent undesired impact)

Offline

#3 2022-05-07 14:23:32

Gabachin
Member
Registered: 2022-05-06
Posts: 105

Re: Setting Picom Opacity Rule for Qtile Widgets/Status Bar (Solved)

xprop gives me this:

 _NET_WM_WINDOW_OPACITY(CARDINAL) = 4294967295
_NET_FRAME_EXTENTS(CARDINAL) = 0, 0, 0, 0
QTILE_INTERNAL(CARDINAL) = 1
WM_STATE(WM_STATE):
		window state: Normal
		icon window: 0x0 

xwininfo:

xwininfo: Window id: 0x400120 (has no name)

  Absolute upper-left X:  0
  Absolute upper-left Y:  1056
  Relative upper-left X:  0
  Relative upper-left Y:  1056
  Width: 1920
  Height: 24
  Depth: 24
  Visual: 0x21
  Visual Class: TrueColor
  Border width: 0
  Class: InputOutput
  Colormap: 0x400121 (not installed)
  Bit Gravity State: ForgetGravity
  Window Gravity State: NorthWestGravity
  Backing Store State: NotUseful
  Save Under State: no
  Map State: IsViewable
  Override Redirect State: no
  Corners:  +0+1056  -0+1056  -0-0  +0-0
  -geometry 1920x24+0-0 

I want to reduce the opacity of unfocused windows. But since qtile has its own status bar, when I do this by modifying the picom config, the bar's opacity is also reduced.

Last edited by Gabachin (2022-05-07 14:56:57)

Offline

#4 2022-05-07 14:28:07

seth
Member
From: Won't reply 2 private help req
Registered: 2012-09-03
Posts: 77,245

Re: Setting Picom Opacity Rule for Qtile Widgets/Status Bar (Solved)

seth wrote:

Edit your posts accordingly.
The panel isn't an override redirect window to begin with, so that approach is going nowhere.

Offline

#5 2022-05-07 15:02:31

Gabachin
Member
Registered: 2022-05-06
Posts: 105

Re: Setting Picom Opacity Rule for Qtile Widgets/Status Bar (Solved)

When I add a rule to picom I use xprop to get the class of the application I want to change the opacity of. I do not know how to do this for the qtile status bar. Or is there a way to do this in qtile.py?

Last edited by Gabachin (2022-05-07 15:29:16)

Offline

#6 2022-05-07 15:23:09

seth
Member
From: Won't reply 2 private help req
Registered: 2012-09-03
Posts: 77,245

Re: Setting Picom Opacity Rule for Qtile Widgets/Status Bar (Solved)

Try using a

opacity-rule = [ "100:QTILE_INTERNAL:32c" ];

Offline

#7 2022-05-07 16:43:52

Gabachin
Member
Registered: 2022-05-06
Posts: 105

Re: Setting Picom Opacity Rule for Qtile Widgets/Status Bar (Solved)

This did not work for me. To set opacity in unfocused windows, I have to set

 mark-ovredir-focused = true; 

in which case, the bar also has this reduced opacity. Then adding

 opacity-rule = [ "100:QTILE_INTERNAL:32c" ]; 

to picom has no effect. I had this same problem with rofi on an i3 setup. The opacity rule I set in picom did not work. Apologies in advance for my ignorance. I'm a noobiest noob. Maybe there is a way to do this in qtile.py? My workflow is a lot easier with dimmed unfocused windows and I really can't do without this option. It seems strange that qtile, being a mature wm, wouldn't have fixed this.

Last edited by Gabachin (2022-05-07 16:45:09)

Offline

#8 2022-05-07 20:54:27

seth
Member
From: Won't reply 2 private help req
Registered: 2012-09-03
Posts: 77,245

Re: Setting Picom Opacity Rule for Qtile Widgets/Status Bar (Solved)

#3 wrote:

Override Redirect State: no

The window that belongs to the output in #3 is *not* override_redirect.
If "mark-ovredir-focused" has impact on some window, that is *NOT* the window referenced by the xwininfo/xprop output in #3 (so it would not be surprising if the rule won't apply)

Opacity settings in picom will steamroll over whatever qtile might hint, so you cannot use a qtile setting or code snippet to defy the impact of your changes in picom.conf.
(Also ftr, _NET_WM_WINDOW_OPACITY is already at the maximum value)

Also

to set opacity in unfocused windows

you might want to specify "unfocused" here, but generally, that's done via eg

inactive-opacity = 0.8;

I'll however say that the opacity-rule setting doesn't work here (and the comment say to prefer picom-trans)
There'd also be

focus-exclude = [ "QTILE_INTERNAL:32c"];

that considers thethe actual window from #3 as always focused, but remember that it's not even clear whether that's the window you care about.
(But at least this list worksforme™ eg. on video players)

Offline

#9 2022-05-08 15:51:02

Gabachin
Member
Registered: 2022-05-06
Posts: 105

Re: Setting Picom Opacity Rule for Qtile Widgets/Status Bar (Solved)

Yes, this worked.  It also worked for rofi.

 focus-exclude = [ "100:class_g = 'rofi" ]; 

Best part is I am starting to understand better how these things work. Thank you. I
guess I should mark this question as answered but I do not see how.

Last edited by Gabachin (2022-05-08 15:51:29)

Offline

#10 2022-05-08 16:18:27

seth
Member
From: Won't reply 2 private help req
Registered: 2012-09-03
Posts: 77,245

Re: Setting Picom Opacity Rule for Qtile Widgets/Status Bar (Solved)

Mark resolved threads by editing your initial posts subject - so others will know that there's no task left, but maybe a solution to find.
Thanks.

Offline

Board footer

Powered by FluxBB