Kalmat / PyWinCtl

Cross-Platform module to get info on and control windows on screen
Other
191 stars 20 forks source link

Window is not behind Icons #16

Closed Fidode07 closed 1 year ago

Fidode07 commented 2 years ago

Hello.

Here is my Code:

def move_behind(title: str):
    all_windows: list = pwc.getAllWindows()

    for window in all_windows:
        my: pwc.LinuxWindow = window
        if my.title == title:
            my.sendBehind()

move_behind("ItsABackground")

The Issue is with every Window. I use Ubuntu with installed KDE (kde-standard) in Plasma.

Kalmat commented 2 years ago

Hi!

You're right. In Ubuntu, I was able to send the window behind all others, but I couldn't find any way to send it behind the desktop icons (curiously it works ok in Mint/Cinnamon).

I even opened a post in stackoverflow, in which I spent almost all my reputation points (500) as a bounty reward, with no success. If you are skilled on Xlib or similar, I would really appreciate any help, clue or contribution!!!

Besides, and taking a look at your code, bear in mind that you have getAllWindowsWithTitle() method in order to find the windows which match the desired title (you can also set different methods to "match" the title, not just "==", including similarity checks). Using this, it will be simpler and quicker. Unfortunately, it will be useless until I find a solution on Ubuntu.

Fidode07 commented 2 years ago

Thanks for the quick reply. Sad that it doesn't work, anyway I can bring out my WallpaperEngine for Cinnamon at least. And the question on Stackoverflow, only through this I found the project here. I will look at Xlib again, but I don't think I can find a way.

Thanks for your help and time!

Kalmat commented 2 years ago

Yes, it's a real pitty I couldn't find a solution. I tried absolutely everything that I could imagine: reparent the window to all possible parents, configure it as desktop-type window, use Xlib library directly, besides thru python-xlib, to set a number of window attributes and properties combinations... all in vain. I have to admit I am totally lost here... I will try to search and ask again just to try my luck!

Thank you for your interest and support!

Fidode07 commented 2 years ago

I downloaded Linux Mint Cinnamon, but the window was not behind the icons there either. The code is the same. Any idea?

Kalmat commented 2 years ago

Hi again! Sorry for the delay in the reply. I've been out on travel.

It's not working for me either. Perhaps a recent update has "broken" something (in fact, I was using an ugly "hack" to make it work on Mint/Cinnamon). I will look into it and will let you know any progress.

Kalmat commented 2 years ago

Hi!

I found a different hack to make it work on Mint/Cinnamon (unfortunately, it does not work in Ubuntu). Please try this wheel and tell me if it works.

Unzip the file and install it by running this on a terminal:

cd /path/to/folder/where/the/wheel/file/was/downloaded
python3 -m pip uninstall pywinctl
python3 -m pip install PyWinCtl-0.0.38-py3-none-any.whl

PyWinCtl-0.0.38-py3-none-any.whl.zip

Kalmat commented 1 year ago

Hi again! New version (0.0.42) includes a solution which seems to work OK on Ubuntu/GNOME (only version 22.04 and above) and Mint/Cinnamon.

If you are still interested, install wheel file (PyWinCtl-0.0.42-py3-none-any.whl) located in dist folder and let me know any comment or issue.