Coder Social home page Coder Social logo

pytyle3's Introduction

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.

pytyle3's People

Contributors

antovigo avatar burntsushi avatar hmusta avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

pytyle3's Issues

Pytyle3 development status

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.

Pytyle picks up temporary desktop resizing triggered by wine

Wine triggers resizes

  • pytyle is running and doing a good job.
  • wine is starting a new window and resizes the resolution, typically to that of a crappy old windows game i like to play. lets say from 1600x900 to 1024x768.
  • after i finished playing, the window is closed and the resolution of the desktop is resized to the default value that was active before, so from 1024x768 back to 1600x900.
  • with the resizing the window-geometry was changed and this value is not changed back during the second resizing
  • so, pytyle thinks I am still running with another resolution and gives my windows a smaller-than-useful-size.

I hope that this is clear, but maybe a picture does a better job at explaining this.

Do you like poems?

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

Feature request: manual placement

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.

UnboundLocalError: local variable 'basestring' referenced before assignment

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

Unable to remove windows from master

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.

Keybinding "Super" shadows ordinary keys

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 while polling for events.

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.

dualview handling

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

Automatic tiling on startup

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

Dual screen is not working correctly:
all the windows are tiled on one screen only (on a configuration which was working with pytyle2).

Licensing

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.

Don't redefine M-q

I took me some time to figure why M-q doesn't work anymore in Emacs Latex mode.

pytyle3 ignores margins

< margins >
< top>20 < /top >
< bottom>0< /bottom >
< left>0
< right>0< /right >

Windows cover up all screen, ignoring the margins.

pytyle3 crashes on key combo

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)}
{keybind.py (
/.config/pytyle3) (58720259)} being added to VerticalLayout (desk 0) 1024x575+0+25
{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?

Getting "assert bindings is not None" Assertion Error

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

pytyle3: IndexError: list index out of range

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

Add Ubuntu 12.04 installation documentation

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.

Installing PyTyle on Lubuntu 12.04 GNU/Linux PowerPC Python 2.7.3

Dependencies

  1. sudo apt-get install python-dev python-xcbgen automake libtool pkg-config xsltproc xcb-proto libxau-dev libpthread-stubs0-dev

libxcb

  1. git clone git://anongit.freedesktop.org/git/xcb/libxcb
  2. cd libxcb/
  3. ./autogen.sh
  4. sudo make install

xpyb-ng

  1. git clone https://github.com/qtile/xpyb-ng.git
  2. cd xpyb-ng
  3. vi tools/py_client.py
  4. Apply patch from https://github.com/dequis/xpyb-ng/pull/6
  5. sudo python setup.py install

pytyle

  1. git clone https://github.com/BurntSushi/pytyle3.git
  2. cd pytyle3
  3. sudo python setup.py install

Cannot run pytyle3

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?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.