burntsushi / pytyle3 Goto Github PK
View Code? Open in Web Editor NEWAn updated (and much faster) version of pytyle that uses xpybutil and is compatible with Openbox Multihead.
License: Do What The F*ck You Want To Public License
An updated (and much faster) version of pytyle that uses xpybutil and is compatible with Openbox Multihead.
License: Do What The F*ck You Want To Public License
An updated (and much faster) version of pytyle that uses xpybutil and is compatible with Openbox Multihead. Due to using xpybutil much of the lower level XCB/xpyb stuff has been factored out of pytyle3. Also, because it relies on Openbox Multihead when there is more than one monitor active, a lot less state needs to be saved. As a result, pytyle3 is ~1000 lines while pytyle2 is ~7000 lines. Additionally, because of a simpler design, pytyle3's memory footprint is much smaller and is actually quite snappier in moving windows on the screen.
Is pytyle3 under active development? The last edit was a configuration fix a year ago and there are multiple open issues.
Just for clarification: It is completely okay if a project is discontinued. But I think a lot of people like pytyle and don't want to let it die. This said: I would like to know the status and your opinion before I decide what I should/can/would do … f.e.: fork it and close issues.
I hope that this is clear, but maybe a picture does a better job at explaining this.
pytyle starts and is wise.
everything is fine.
Then I open wine,
and then: the desktop resize!
after me and wine have left the game
the old-new size stays the same
duh! give me the old-old size
As a new feature, I would love to be able to switch the placement of two windows just by grabbing one onto the other, or to be able to decrease/increase the master window by alt+RightClick.
You can find an illustratuion of this feature in awesome-wm.
I am having this issue, which was also reported by someone else in the past but was closed without explanation:
#22
This error happens immediately on startup
Here is the traceback
Traceback (most recent call last):
File "/usr/bin/pytyle3", line 19, in <module>
client.update_clients()
File "/usr/lib/python2.7/site-packages/pt3/client.py", line 192, in update_clients
track_client(c)
File "/usr/lib/python2.7/site-packages/pt3/client.py", line 208, in track_client
clients[client] = Client(client)
File "/usr/lib/python2.7/site-packages/pt3/client.py", line 52, in __init__
tile.update_client_add(self)
File "/usr/lib/python2.7/site-packages/pt3/tile.py", line 88, in update_client_add
tiler.add(c)
File "/usr/lib/python2.7/site-packages/pt3/layouts/layout_vert_horz.py", line 21, in add
self.store.add(c)
File "/usr/lib/python2.7/site-packages/pt3/layouts/store.py", line 16, in add
ewmh.request_wm_state_checked(c.wid,0,util.get_atom('_NET_WM_STATE_BELOW')).check()
File "/usr/lib/python2.7/site-packages/xpybutil/ewmh.py", line 1434, in request_wm_state_checked
action, first, second, source)
File "/usr/lib/python2.7/site-packages/xpybutil/event.py", line 90, in root_send_client_event_checked
packed = pack_client_message(window, message_type, *data)
File "/usr/lib/python2.7/site-packages/xpybutil/event.py", line 72, in pack_client_message
if isinstance(message_type, basestring):
UnboundLocalError: local variable 'basestring' referenced before assignment
After adding windows to master, using the default hotkey (mod+.) I am usually unable to remove them (using mod+,). this results in a window being permanently stuck in master until I must eventually kill and restart pytyle3. Sometimes it will work fine, but more often then not, it will not recognize the hotkey. If I am trying to remove a window from master that is looking for text-input for example (a terminal, irc, etc) it will print the comma character, meaning the hotkey isn't being detected. I have checked for hotkey conflicts and don't see any. I'm trying to notice actions that cause this, maybe certrain programs, but I can't find any. Sometimes I can open 4 terminals, send some to master and remove them just fine, sometimes it will stop working later one, sometimes even after the I add the first terminal to master I'm unable to move it back.
When using pytyle3 (new version. pulled from github 6 days ago) with OpenBox and use keybindings with "Super" (like "Super-a") the original key (in this case 'a') is shadowed. With "shadowed" I mean that I can't type this key anymore unless I kill pytyle.
pytyle3 exits with an IO Error on a freshly installed CrunchBang system, while calling conn.poll_for_event() from xpybutil.
joe@localhost ~/pytyle3 [n] % pytyle3
Openbox window manager is running...
Traceback (most recent call last):
File "/usr/local/bin/pytyle3", line 25, in <module>
event.main()
File "/usr/local/lib/python2.6/dist-packages/xpybutil/event.py", line 128, in main
read(block=True)
File "/usr/local/lib/python2.6/dist-packages/xpybutil/event.py", line 118, in read
e = conn.poll_for_event()
IOError: I/O error on X server connection.
hello
it seems that tiling in dual mode view .. pytyle3 only take care of primary display
any way of tiling with virtual screen size ?
thx for help
After startup, I have to press Alt-a on each desktop to enable tiling. Can tiling be enabled on startup, as was possible with pytyle2?
I use xfwm4.
Dual screen is not working correctly:
all the windows are tiled on one screen only (on a configuration which was working with pytyle2).
.config/pytyle3/keybin.py :
bindings = {
'Super-a': tile.cmd('tile'),
}
not work.
Mod4==Super
Hello,
I'm a little confused about the license. setup.py contains
Copyright (C) 2009-2010 Andrew Gallant [email protected]
and licenses the code as GPL v2 or later. is pytyle3 a complete rewrite or did you get permission from Andrew to re-license his code?
Maybe you should then update the license in setup.py to WTFPL.
I took me some time to figure why M-q doesn't work anymore in Emacs Latex mode.
< margins >
< top>20 < /top >
< bottom>0< /bottom >
< left>0
< right>0< /right >
Windows cover up all screen, ignoring the margins.
Running up to date Arch linux, stock XFCE desktop (with 3 virtual desktops) .
pytyle3 starts fine, the tile.cmd('tile') key combo works as expected. Then any key combo in the keybind.py configuration file crashes pytyle3 roughly with the same output:
$pytyle3 --debug > pytyle3.debug 2>&1
Xfwm4 window manager is running...
Adding tilers to desktop 0
Adding tilers to desktop 1
Adding tilers to desktop 2
Ignoring xfce4-panel because it has type _NET_WM_WINDOW_TYPE_DOCK
Connecting to {Terminal - riadh@HaRo: ~ (62914564)}
{Terminal - riadh@HaRo: ~ (62914564)} being added to VerticalLayout (desk 0) 1024x575+0+25
{Terminal - riadh@HaRo: ~ (62914564)} being added to HorizontalLayout (desk 0) 1024x575+0+25
Connecting to {keybind.py (/.config/pytyle3) (58720259)}/.config/pytyle3) (58720259)} being added to VerticalLayout (desk 0) 1024x575+0+25
{keybind.py (
{keybind.py (~/.config/pytyle3) (58720259)} being added to HorizontalLayout (desk 0) 1024x575+0+25
Connecting to {event.py = (/usr/lib/py...acka (60817411)}
{event.py = (/usr/lib/py...acka (60817411)} being added to VerticalLayout (desk 0) 1024x575+0+25
{event.py = (/usr/lib/py...acka (60817411)} being added to HorizontalLayout (desk 0) 1024x575+0+25
Connecting to {Terminal - riadh@HaRo: ~ (62916726)}
{Terminal - riadh@HaRo: ~ (62916726)} being added to VerticalLayout (desk 0) 1024x575+0+25
{Terminal - riadh@HaRo: ~ (62916726)} being added to HorizontalLayout (desk 0) 1024x575+0+25
Connecting to {New Issue · BurntSushi/pytyle (48234636)}
{New Issue · BurntSushi/pytyle (48234636)} being added to VerticalLayout (desk 1) which isn't visible
{New Issue · BurntSushi/pytyle (48234636)} being added to HorizontalLayout (desk 1) which isn't visible
Ignoring rsync: Backup running because it is transient
Connecting to {Grsync: Backup 75% (48:42 elap (54525955)}
{Grsync: Backup 75% (48:42 elap (54525955)} being added to VerticalLayout (desk 2) which isn't visible
{Grsync: Backup 75% (48:42 elap (54525955)} being added to HorizontalLayout (desk 2) which isn't visible
Connecting to {Desktop Entries - ArchWiki - C (48234626)}
{Desktop Entries - ArchWiki - C (48234626)} being added to VerticalLayout (desk 1) which isn't visible
{Desktop Entries - ArchWiki - C (48234626)} being added to HorizontalLayout (desk 1) which isn't visible
Connecting to {Laptop Mode Tools - ArchWiki - (48234566)}
{Laptop Mode Tools - ArchWiki - (48234566)} being added to VerticalLayout (desk 1) which isn't visible
{Laptop Mode Tools - ArchWiki - (48234566)} being added to HorizontalLayout (desk 1) which isn't visible
Ignoring Desktop because it has type _NET_WM_WINDOW_TYPE_DESKTOP
Traceback (most recent call last):
File "/usr/bin/pytyle3", line 25, in
event.main()
File "/usr/lib/python2.7/site-packages/xpybutil/event.py", line 142, in main
cb(e)
File "/usr/lib/python2.7/site-packages/xpybutil/keybind.py", line 465, in __run_keybind_callbacks
cb()
File "/usr/lib/python2.7/site-packages/pt3/tile.py", line 35, in _cmd
getattr(tiler, action)()
File "/usr/lib/python2.7/site-packages/pt3/layouts/layout_vert_horz.py", line 54, in prev_client
prv = self._get_prev()
File "/usr/lib/python2.7/site-packages/pt3/layouts/layout_vert_horz.py", line 149, in _get_prev
awin = self._get_focused()
File "/usr/lib/python2.7/site-packages/pt3/layouts/layout_vert_horz.py", line 116, in _get_focused
if state.activewin not in client.clients:
TypeError: unhashable type: 'list'
Am I missing something?
I'm getting the following error when I try to run pytyle3 on CrunchBang 11:
Traceback (most recent call last):
File "/usr/local/bin/pytyle3", line 13, in <module>
import pt3.keybind
File "/usr/local/lib/python2.7/dist-packages/pt3/keybind.py", line 26, in <module>
assert bindings is not None
AssertionError
I have a issue with pytyle3 on my setup: Ubuntu server 12.04 and Openbox. I follow the link https://github.com/BurntSushi/pytyle3/wiki/Ubuntu-12.04-installation-documentation to download source and compile sucessful, but when running, it shows the error below, pls help
./pytyle3
Openbox window manager is running...
Traceback (most recent call last):
File "./pytyle3", line 19, in
client.update_clients()
File "/home/yvo/packages/pytyle3/pt3/client.py", line 189, in update_clients
track_client(c)
File "/home/yvo/packages/pytyle3/pt3/client.py", line 205, in track_client
clients[client] = Client(client)
File "/home/yvo/packages/pytyle3/pt3/client.py", line 52, in init
tile.update_client_add(self)
File "/home/yvo/packages/pytyle3/pt3/tile.py", line 83, in update_client_add
tiler.add(c)
File "/home/yvo/packages/pytyle3/pt3/layouts/layout_vert_horz.py", line 20, in add
debug('%s being added to %s' % (c, self))
File "/home/yvo/packages/pytyle3/pt3/layouts/init.py", line 61, in str
wa = self.get_workarea()
File "/home/yvo/packages/pytyle3/pt3/layouts/init.py", line 56, in get_workarea
mon = state.workarea[state.visibles.index(self.desk)]
IndexError: list index out of range
Thanks for this software. I use Openbox with Lubuntu on my PowerBook G4 laptop and was looking for an easy way to add tiling capabilities. I'm using pytyle now and look forward to learning how to take full advantage of it.
I ran in to a few issues installing it since there's no package and a number of decencies gave me problems. So I would like to share what I did to install pytyle3 on my system. Let me know if I can help add it to the wiki.
sudo apt-get install python-dev python-xcbgen automake libtool pkg-config xsltproc xcb-proto libxau-dev libpthread-stubs0-dev
git clone git://anongit.freedesktop.org/git/xcb/libxcb
cd libxcb/
./autogen.sh
sudo make install
git clone https://github.com/qtile/xpyb-ng.git
cd xpyb-ng
vi tools/py_client.py
sudo python setup.py install
git clone https://github.com/BurntSushi/pytyle3.git
cd pytyle3
sudo python setup.py install
I got this error when running pytyle3:
Traceback (most recent call last):
File "/usr/bin/pytyle3", line 13, in <module>
import pt3.keybind
File "/usr/lib/python2.7/site-packages/pt3/keybind.py", line 23, in <module>
execfile(conffile)
File "/etc/xdg/pytyle3/keybind.py", line 2, in <module>
import state
File "/usr/lib/python2.7/site-packages/pt3/state.py", line 22, in <module>
w = ewmh.get_supporting_wm_check(xpybutil.root).reply()
File "/usr/lib/python2.7/site-packages/xpybutil/util.py", line 47, in reply
ret = get_property_value(self.cookie.reply())
xcb.xproto.BadWindow: <xcb.xproto.WindowError object at 0x7fa888804878>
What should I do to fix it?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.