altdesktop / i3ipc-python

🐍 An improved Python library to control i3wm and sway.
http://i3ipc-python.readthedocs.io
BSD 3-Clause "New" or "Revised" License
851 stars 109 forks source link

Con.floating is None in sway #185

Open tmarkov opened 3 years ago

tmarkov commented 3 years ago

i3ipc-python version: 2.2.1 sway: 1.6.1 python: 3.9.6

I run the following code:

from i3ipc import Connection, Event
i3 = Connection()
focused = i3.get_tree().find_focused()
print(focused.name) # gives proper name
print(focused.floating) # gives None

And the floating attribute is None (it's also None for the parents and I think all nodes on the tree).

suconakh commented 2 years ago

It seems that sway itself doesn't provide this field in swaymsg -t get_tree so it's not related to i3ipc-python.

SpiritCroc commented 2 years ago

Using window.type == "floating_con" seems to work as workaround for me

ch3n9w commented 1 year ago

@SpiritCroc May I ask how to get window.type in sway? as when I use i3ipc.Con#type(), it just give me a useless string "con".

SpiritCroc commented 1 year ago

@SpiritCroc May I ask how to get window.type in sway? as when I use i3ipc.Con#type(), it just give me a useless string "con".

When I do

i3ipc.Connection().get_tree().find_focused().type

I get con if my focused window is in normal tiled layout, and floating_con if it's floating. In my sway config I have

bindsym $mod+Shift+space floating toggle

to get a window to floating or back, which I used for testing.

ch3n9w commented 1 year ago

My bad, I always use tabbed mode in scratchpad, the tabbed window is con while its parent node is floating_con