You are not logged in.
Hello all!
I'd like to announce the availability of my second version of PyTyle, which is a complete re-write.
PyTyle 2 can be installed along side PyTyle 1. But only one can be running at the same time.
PyTyle is a tiling manager that works with EWMH compliant window managers (like Openbox and KWin) to provide functions for tiling windows. Both Xmonad and Musca have influenced the feature set. Some of the key features include, but are not limited to:
* On-demand tiling on a per workspace per monitor basis. Tile workspace 2 while workspace 0 is left in a floating model. Or, if you have multiple monitors, tile one screen but not the other.
* Automatic layouts, including the classic "Vertical" and some new additions as well. Based on Xmonad.
* Manual tiling -- this is new! Create your own layout on the fly. Based on Musca. I consider this aspect of PyTyle the least stable, though.
* Uses the new XCB library (or, more aptly, xpyb)
* Much better support for undecorated windows--including drawing borders (like Xmonad).
* Drag and drop windows to other positions in any tiling layout.
* Auto-detection of any panels (i.e., windows that set struts) even on multi-monitor displays.
* Move windows to and from a floating state when the workspace its on is in tiling mode.
* A robust configuration file that allows one to change all keybindings, a multitude of options, and layout specific settings. (i.e., border color/size, ignore certain windows, margins, padding). Options can be set based on workspace, monitor, and tiler (and any combination).
See my Google project page for more info: http://code.google.com/p/pytyle/
Dependencies
The X Python Binding (xpyb)
Installation
PyTyle 2 can be found in the aur: http://aur.archlinux.org/packages.php?ID=42541
Execution
After installation, simply run
pytyle2
on the command line.
Then press Alt + a.
Configuration
After you have started PyTyle for the first time, a new configuration directory should appear in your XDG_CONFIG_HOME directory (usually ~/.config/) called pytyle2. Inside this directory is config.ini. All of the configuration options are stored there. I haven't really documented the options yet, so your guess will have to do at the moment.
Help
You can either post here or use the mailing list: http://groups.google.com/group/pytyle
Notes
PyTyle 2 is still highly beta. I've developed it on Openbox, and tried to maintain parity with KWin at the same time. I haven't tested it with any other window manager yet. You should be golden if you're running Openbox or KWin. However, I recommend that any and all composite settings be turned off before using PyTyle... You don't have to, but it can be a bit ugly if you don't. See for yourself :-)
Also, I'm closing out my first semester in grad school at the moment, so my replies in the next week or so might be a bit sparse. After that though, I'll pick back up with development/bug fixing.
Last edited by BurntSushi (2010-12-03 05:22:27)
Education is favorable to liberty. Freedom can exist only in a society of knowledge. Without learning, men are incapable of knowing their rights, and where learning is confined to a few people, liberty can be neither equal nor universal.
Tu ne cede malis sed contra audentior ito
Offline
Yes! *goes to try it out*
EDIT: compiz and metacity don't work to be expected, of course, at this stage.
Last edited by ngoonee (2010-12-03 05:59:03)
Allan-Volunteer on the (topic being discussed) mailn lists. You never get the people who matters attention on the forums.
jasonwryan-Installing Arch is a measure of your literacy. Maintaining Arch is a measure of your diligence. Contributing to Arch is a measure of your competence.
Griemak-Bleeding edge, not bleeding flat. Edge denotes falls will occur from time to time. Bring your own parachute.
Offline
Cool, thanks for the post. I enjoyed pytyle, and was waiting for this release.
Supergirl: But fortunately I printed out everything I could find, not just the beginner's guide.
Supergirl: I printed out internet.
Offline
Sounds VERY interesting, especially that musca influenced your work. I think I'll give it a shot.
Offline
Yes! *goes to try it out*
EDIT: compiz and metacity don't work
to be expected, of course, at this stage.
Yeah, compiz I know won't work. I haven't done any work in supporting viewports yet, which is necessary for Compiz.
Actually, I did try metacity a few days ago... I'll look at it again once my semester is over, but I anticipate it should be an easy fix (since, I think, pytyle 1 works with metacity).
For anyone who can get it working, I'd like to hear thoughts! Especially on the manual tiling aspect of it. I've never really used manual tiling before, so I tried to stick pretty closely to the features of Musca.
Last edited by BurntSushi (2010-12-03 16:46:50)
Education is favorable to liberty. Freedom can exist only in a society of knowledge. Without learning, men are incapable of knowing their rights, and where learning is confined to a few people, liberty can be neither equal nor universal.
Tu ne cede malis sed contra audentior ito
Offline
just tried this out and I have to say that it's switched me back to Openbox from DWM. I do have one minor complaint though. Openbox's dock doesn't seem to be handled properly. I suspect that in most cases, the dock is used as a replacement for a panel, and should be treated as such. Currently, it just floats over top of the window, even if a strut is defined in openbox's configurations for it. It's also problematic as it means my conky display, which replaces dzen2 and dwm's status bar for me currently, is hidden underneath all of my windows. If you'd like a screenshot, just let me know.
Other than that, this works perfectly for me. Thanks so much for your work and I hope you stay motivated to continue.
"Unix is basically a simple operating system, but you have to be a genius to understand the simplicity." (Dennis Ritchie)
Offline
just tried this out and I have to say that it's switched me back to Openbox from DWM. I do have one minor complaint though. Openbox's dock doesn't seem to be handled properly. I suspect that in most cases, the dock is used as a replacement for a panel, and should be treated as such. Currently, it just floats over top of the window, even if a strut is defined in openbox's configurations for it. It's also problematic as it means my conky display, which replaces dzen2 and dwm's status bar for me currently, is hidden underneath all of my windows. If you'd like a screenshot, just let me know.
Other than that, this works perfectly for me. Thanks so much for your work and I hope you stay motivated to continue.
Ah, that is a bit of a pain. Might I suggest try using the "margin" option in the pytyle configuration for a temporary work-around?
I believe, you should find this in the [Global] section:
margin = auto
Its format is thus (taken from CSS):
margin = top right bottom left
So if your conky window is 100 pixels wide and on the right side of your screen...
margin = 0 100 0 0
However, I would of course like to handle auto-detection for Openbox docks. I would love a screenshot, and if possible, a conky configuration file would be great. (I might not need the config file, but I'm kind of curious if conky supports struts? And also, I'd like to try to reproduce the environment as best as possible.)
And thanks for your kind sentiments :-) For some reason, I love working with X... I'm currently working on a compositing manager written in Python for a course project: http://code.google.com/p/pycompmgr/.
Last edited by BurntSushi (2010-12-04 05:12:40)
Education is favorable to liberty. Freedom can exist only in a society of knowledge. Without learning, men are incapable of knowing their rights, and where learning is confined to a few people, liberty can be neither equal nor universal.
Tu ne cede malis sed contra audentior ito
Offline
Hi,
i really love pytyle1 and this version sounds very promising, but...
:: ~ % pytyle2
Could not grab key: alt-shift-right
Could not grab key: alt-ctrl-c
Could not grab key: alt-shift-left
So far no real problems. But when i press alt+a, pytyle2 quits:
Traceback (most recent call last):
File "/usr/bin/pytyle2", line 49, in <module>
d = Dispatcher(event_data)
File "/usr/lib/python2.7/site-packages/pt/dispatcher.py", line 20, in __init__
getattr(self, self._event_data['event'])()
File "/usr/lib/python2.7/site-packages/pt/dispatcher.py", line 55, in KeyPressEvent
Tile.dispatch(state.get_active_monitor(), cmd)
File "/usr/lib/python2.7/site-packages/pt/state.py", line 35, in get_active_monitor
wsid, mid = get_active_wsid_and_mid()
File "/usr/lib/python2.7/site-packages/pt/state.py", line 45, in get_active_wsid_and_mid
wsid = win.monitor.workspace.id
AttributeError: 'NoneType' object has no attribute 'workspace'
It's a fresh install from AUR, v2.0.0-1, hg rev. ae99017392. pytyle1 ran before, but it's stopped. I haven't changed anything in the configs. Using openbox 3.4.11.2-2
rich_o
Offline
rich_o,
I've updated the repo with something I hope will fix that error, although it might cause other problems. What is your setup? Do you have any special windows or docks open? (Or any windows that are on "all" desktops?)
Education is favorable to liberty. Freedom can exist only in a society of knowledge. Without learning, men are incapable of knowing their rights, and where learning is confined to a few people, liberty can be neither equal nor universal.
Tu ne cede malis sed contra audentior ito
Offline
the error message changed:
Traceback (most recent call last):
File "/usr/bin/pytyle2", line 49, in <module>
d = Dispatcher(event_data)
File "/usr/lib/python2.7/site-packages/pt/dispatcher.py", line 20, in __init__
getattr(self, self._event_data['event'])()
File "/usr/lib/python2.7/site-packages/pt/dispatcher.py", line 55, in KeyPressEvent
Tile.dispatch(state.get_active_monitor(), cmd)
File "/usr/lib/python2.7/site-packages/pt/state.py", line 37, in get_active_monitor
return get_monitor(wsid, mid)
File "/usr/lib/python2.7/site-packages/pt/state.py", line 53, in get_monitor
return Workspace.WORKSPACES[wsid].get_monitor(mid)
File "/usr/lib/python2.7/site-packages/pt/workspace.py", line 37, in get_monitor
return self.monitors[mid]
KeyError: -1
No special windows, no docks, no windows on all desktops. Just urxvt and firefox on one workspace, opera on another.
Offline
Hmmm... Can you re-create the error message, and afterwards, post the output of the following commands?
xprop -root
And:
wmctrl -lG
If you don't have wmctrl, it's in community, if you don't mind.
Education is favorable to liberty. Freedom can exist only in a society of knowledge. Without learning, men are incapable of knowing their rights, and where learning is confined to a few people, liberty can be neither equal nor universal.
Tu ne cede malis sed contra audentior ito
Offline
Although i changed nothing, everything is working fine after restarting today. Same setup, same opened windows . Must be the influence of all the windows computers in the house.
Offline
I tried pytyle, and liked it a great deal - was and still am using a floating manager so it fitted pertfectly into that niche of wanting a t. Will give this one a whirl right now. Thanks
[edit for odd computer freeze!] I tried pytyle, and liked it a great deal - was and still am using a floating manager so it fitted pertfectly into that niche of wanting tiling sometimes, but not always. Will give this one a whirl right now. Thanks.
Last edited by Fruity (2010-12-05 13:28:12)
Offline
Good to hear rich_o, I'm sure that bug will crop up again at some point. For some reason, it wasn't assigning monitors to windows, odd.
Let me know what you think, Fruity :-)
Education is favorable to liberty. Freedom can exist only in a society of knowledge. Without learning, men are incapable of knowing their rights, and where learning is confined to a few people, liberty can be neither equal nor universal.
Tu ne cede malis sed contra audentior ito
Offline
Hmm... this program is great... been using PyTyle for awhile and finally installed PyTyle 2 today But unfortunately I can't seem to get pytyle2 to start when adding it to either autostart.sh (Openbox) or .xinitrc. If I start the program by command line it works without a hitch. Has anyone else been successful with this?
Traceback (most recent call last):
File "/usr/bin/pytyle2", line 27, in <module>
import pt.state as state
File "/usr/lib/python2.7/site-packages/pt/state.py", line 267, in <module>
init()
File "/usr/lib/python2.7/site-packages/pt/state.py", line 20, in init
load_properties()
File "/usr/lib/python2.7/site-packages/pt/state.py", line 109, in load_properties
update_property(pane)
File "/usr/lib/python2.7/site-packages/pt/state.py", line 155, in update_property
m()
File "/usr/lib/python2.7/site-packages/pt/state.py", line 188, in update_NET_CLIENT_LIST
update_NET_ACTIVE_WINDOW()
File "/usr/lib/python2.7/site-packages/pt/state.py", line 160, in update_NET_ACTIVE_WINDOW
set_active(ptxcb.XROOT.get_active_window())
File "/usr/lib/python2.7/site-packages/pt/ptxcb/window.py", line 559, in get_active_window
return self._get_property('_NET_ACTIVE_WINDOW')[0]
IndexError: list index out of range
Last edited by bkadoctaj (2010-12-05 22:02:28)
Offline
Try doing something like this... PyTyle is probably trying to ask the window manager something before the window manager is ready to answer.
(sleep 5 && pytyle2) &
Increase "5" if that doesn't work, but it should.
PyTyle 1 sometimes required this, but I had also built in a delayed start before PyTyle asked the window manager for anything.
Education is favorable to liberty. Freedom can exist only in a society of knowledge. Without learning, men are incapable of knowing their rights, and where learning is confined to a few people, liberty can be neither equal nor universal.
Tu ne cede malis sed contra audentior ito
Offline
Thanks for this nice application. I thing setting the configuration is not taking effect. For eg to have horizontal staking , Alt-Ctrl-H = hsplit does't arrange the windows in hsplit instead Alt-comma and Alt-period do the horizontal/vertical arrangement.
Offline
Could you post your configuration file? If you want to use the automatic horizontal tiler, then you need to bind Alt-Ctrl-H to tile.Horizontal.
It seems like you're binding it to hsplit, though. hsplit is a command that only works when you're in manual tiling mode. Alt-comma and Alt-period increase/decrease the number of masters in an automatic layout.
Education is favorable to liberty. Freedom can exist only in a society of knowledge. Without learning, men are incapable of knowing their rights, and where learning is confined to a few people, liberty can be neither equal nor universal.
Tu ne cede malis sed contra audentior ito
Offline
Try doing something like this... PyTyle is probably trying to ask the window manager something before the window manager is ready to answer.
(sleep 5 && pytyle2) &
Increase "5" if that doesn't work, but it should.
PyTyle 1 sometimes required this, but I had also built in a delayed start before PyTyle asked the window manager for anything.
Thanks a lot BurntSushi for the great work and for the quick reply. Unfortunately the fix you offered is hit or miss. Sometimes PyTyle 2 starts and other times it doesn't, failing with the same error as before. I'd really love to use PyTyle 2 but right now it seems a bit unstable.
Offline
BurntSushi wrote:Try doing something like this... PyTyle is probably trying to ask the window manager something before the window manager is ready to answer.
(sleep 5 && pytyle2) &
Increase "5" if that doesn't work, but it should.
PyTyle 1 sometimes required this, but I had also built in a delayed start before PyTyle asked the window manager for anything.
Thanks a lot BurntSushi for the great work and for the quick reply.
Unfortunately the fix you offered is hit or miss. Sometimes PyTyle 2 starts and other times it doesn't, failing with the same error as before.
Really? How much did you increase the sleep by? Weird... I'll investigate later.
I'd really love to use PyTyle 2 but right now it seems a bit unstable.
Yeah, it is. This is my first go. :-(
Education is favorable to liberty. Freedom can exist only in a society of knowledge. Without learning, men are incapable of knowing their rights, and where learning is confined to a few people, liberty can be neither equal nor universal.
Tu ne cede malis sed contra audentior ito
Offline
Nothing specific in config file and the only change is
[ManualKeybindings]
Alt-Up = up
Alt-Right = right
Alt-Down = down
Alt-Left = left
Alt-Ctrl-H = hsplit
Alt-Ctrl-V = vsplit
Alt-Shift-C = close_frame
Alt-T = print_tree
Alt-O = only
Alt-C = cycle
Alt-G = toggle_catchall
If you have time pl create a man page which will be much helpful. Now I know what syntax is to be used for the key assignment ie tile.Horizontal etc.
Thanks
Offline
EDIT: compiz and metacity don't work
to be expected, of course, at this stage.
Indeed metacity is quite broken. Windows get positioned but not resized.
archlinux - please read this and this — twice — then ask questions.
--
http://rsontech.net | http://github.com/rson
Offline
bkadoctaj wrote:BurntSushi wrote:Try doing something like this... PyTyle is probably trying to ask the window manager something before the window manager is ready to answer.
(sleep 5 && pytyle2) &
Increase "5" if that doesn't work, but it should.
PyTyle 1 sometimes required this, but I had also built in a delayed start before PyTyle asked the window manager for anything.
Thanks a lot BurntSushi for the great work and for the quick reply.
Unfortunately the fix you offered is hit or miss. Sometimes PyTyle 2 starts and other times it doesn't, failing with the same error as before.
Really? How much did you increase the sleep by? Weird... I'll investigate later.
bkadoctaj wrote:I'd really love to use PyTyle 2 but right now it seems a bit unstable.
Yeah, it is. This is my first go. :-(
Well, I set sleep to 10 and figured that had to be enough. Don't be discouraged... PyTyle still works.
Last edited by bkadoctaj (2010-12-06 20:13:24)
Offline
Just installed pytyle2. launched it and got this output in cli
martins@localhost ~]$
martins@localhost ~]$pytyle2
Could not grab key: alt-shift-right
Could not grab key: alt-shift-down
Could not grab key: alt-shift-up
Could not grab key: alt-shift-left
sometimes i had more keys. When i tried doing alt+a to start it i got this
Traceback (most recent call last):
File "/usr/bin/pytyle2", line 49, in <module>
d = Dispatcher(event_data)
File "/usr/lib/python2.7/site-packages/pt/dispatcher.py", line 20, in __init__
getattr(self, self._event_data['event'])()
File "/usr/lib/python2.7/site-packages/pt/dispatcher.py", line 55, in KeyPressEvent
Tile.dispatch(state.get_active_monitor(), cmd)
File "/usr/lib/python2.7/site-packages/pt/state.py", line 37, in get_active_monitor
return get_monitor(wsid, mid)
File "/usr/lib/python2.7/site-packages/pt/state.py", line 53, in get_monitor
return Workspace.WORKSPACES[wsid].get_monitor(mid)
File "/usr/lib/python2.7/site-packages/pt/workspace.py", line 37, in get_monitor
return self.monitors[mid]
KeyError: -1
as suggested somewhere up in the thread output from xprop
[martins@localhost ~]$xprop -root
_NET_WM_USER_TIME(CARDINAL) = 2886859
_NET_ACTIVE_WINDOW(WINDOW): window id # 0x2200022
ESETROOT_PMAP_ID(PIXMAP): pixmap id # 0x2000001
_XROOTPMAP_ID(PIXMAP): pixmap id # 0x2000001
_NET_CLIENT_LIST(WINDOW): window id # 0x1800002, 0x1400006, 0xe000af, 0x2200022
_NET_SHOWING_DESKTOP(CARDINAL) = 0
_NET_CURRENT_DESKTOP(CARDINAL) = 0
_NET_DESKTOP_NAMES(UTF8_STRING) = 0x44, 0x65, 0x73, 0x6b, 0x74, 0x6f, 0x70, 0x20, 0x31, 0x0, 0x44, 0x65, 0x73, 0x6b, 0x74, 0x6f, 0x70, 0x20, 0x32, 0x0, 0x44, 0x65, 0x73, 0x6b, 0x74, 0x6f, 0x70, 0x20, 0x33, 0x0, 0x44, 0x65, 0x73, 0x6b, 0x74, 0x6f, 0x70, 0x20, 0x34, 0x0
_NET_WORKAREA(CARDINAL) = 1, 20, 1678, 1010, 1, 20, 1678, 1010, 1, 20, 1678, 1010, 1, 20, 1678, 1010
_NET_DESKTOP_VIEWPORT(CARDINAL) = 0, 0, 0, 0, 0, 0, 0, 0
_NET_NUMBER_OF_DESKTOPS(CARDINAL) = 4
_NET_DESKTOP_GEOMETRY(CARDINAL) = 1680, 1050
_NET_CLIENT_LIST_STACKING(WINDOW): window id # 0x1800002, 0x1400006, 0xe000af, 0x2200022
_OB_THEME(UTF8_STRING) = 0x43, 0x68, 0x69, 0x6c, 0x61
_OB_VERSION(UTF8_STRING) = 0x33, 0x2e, 0x34, 0x2e, 0x31, 0x31, 0x2e, 0x32
_NET_SUPPORTED(ATOM) = _NET_SUPPORTING_WM_CHECK, _NET_WM_FULL_PLACEMENT, _NET_CURRENT_DESKTOP, _NET_NUMBER_OF_DESKTOPS, _NET_DESKTOP_GEOMETRY, _NET_DESKTOP_VIEWPORT, _NET_ACTIVE_WINDOW, _NET_WORKAREA, _NET_CLIENT_LIST, _NET_CLIENT_LIST_STACKING, _NET_DESKTOP_NAMES, _NET_CLOSE_WINDOW, _NET_DESKTOP_LAYOUT, _NET_SHOWING_DESKTOP, _NET_WM_NAME, _NET_WM_VISIBLE_NAME, _NET_WM_ICON_NAME, _NET_WM_VISIBLE_ICON_NAME, _NET_WM_DESKTOP, _NET_WM_STRUT, _NET_WM_STRUT_PARTIAL, _NET_WM_ICON, _NET_WM_ICON_GEOMETRY, _NET_WM_WINDOW_TYPE, _NET_WM_WINDOW_TYPE_DESKTOP, _NET_WM_WINDOW_TYPE_DOCK, _NET_WM_WINDOW_TYPE_TOOLBAR, _NET_WM_WINDOW_TYPE_MENU, _NET_WM_WINDOW_TYPE_UTILITY, _NET_WM_WINDOW_TYPE_SPLASH, _NET_WM_WINDOW_TYPE_DIALOG, _NET_WM_WINDOW_TYPE_NORMAL, _NET_WM_ALLOWED_ACTIONS, _NET_WM_ACTION_MOVE, _NET_WM_ACTION_RESIZE, _NET_WM_ACTION_MINIMIZE, _NET_WM_ACTION_SHADE, _NET_WM_ACTION_MAXIMIZE_HORZ, _NET_WM_ACTION_MAXIMIZE_VERT, _NET_WM_ACTION_FULLSCREEN, _NET_WM_ACTION_CHANGE_DESKTOP, _NET_WM_ACTION_CLOSE, _NET_WM_ACTION_ABOVE, _NET_WM_ACTION_BELOW, _NET_WM_STATE, _NET_WM_STATE_MODAL, _NET_WM_STATE_MAXIMIZED_VERT, _NET_WM_STATE_MAXIMIZED_HORZ, _NET_WM_STATE_SHADED, _NET_WM_STATE_SKIP_TASKBAR, _NET_WM_STATE_SKIP_PAGER, _NET_WM_STATE_HIDDEN, _NET_WM_STATE_FULLSCREEN, _NET_WM_STATE_ABOVE, _NET_WM_STATE_BELOW, _NET_WM_STATE_DEMANDS_ATTENTION, _NET_MOVERESIZE_WINDOW, _NET_WM_MOVERESIZE, _NET_WM_USER_TIME, _NET_FRAME_EXTENTS, _NET_REQUEST_FRAME_EXTENTS, _NET_RESTACK_WINDOW, _NET_STARTUP_ID, _NET_WM_SYNC_REQUEST, _NET_WM_SYNC_REQUEST_COUNTER, _NET_WM_PID, _NET_WM_PING, _KDE_WM_CHANGE_STATE, _KDE_NET_WM_FRAME_STRUT, _KDE_NET_WM_WINDOW_TYPE_OVERRIDE, _OB_WM_ACTION_UNDECORATE, _OB_WM_STATE_UNDECORATED, _OPENBOX_PID, _OB_THEME, _OB_CONFIG_FILE, _OB_CONTROL, _OB_VERSION, _OB_APP_ROLE, _OB_APP_NAME, _OB_APP_CLASS, _OB_APP_TYPE
_NET_SUPPORTING_WM_CHECK(WINDOW): window id # 0x1a00073
_OPENBOX_PID(CARDINAL) = 14943
_XKB_RULES_NAMES(STRING) = "evdev", "pc104", "lv", "apostrophe", "terminate:ctrl_alt_bksp"
XFree86_VT(INTEGER) = 8
output from wmctrl
[martins@localhost ~]$wmctrl -lG
0x01800002 -1 -5 1028 1691 26 localhost Conky (localhost)
0x01400006 -1 0 0 1680 20 N/A tint2
0x00e000af 0 3 68 1676 985 localhost PyTyle 2: On-demand automatic/manual tiling for EWMH compliant WM's (Page 1) / Community Contributions / Arch Linux Forums - Namoroka
0x02200022 -1 1 20 1678 388 localhost Guake!
version: pytyle2-hg 2.0.0-1
Offline
Did you kill pytyle before running pytyle2? The error indicates that some other app has already bound those keys (may be pytyle, may be your DE).
Allan-Volunteer on the (topic being discussed) mailn lists. You never get the people who matters attention on the forums.
jasonwryan-Installing Arch is a measure of your literacy. Maintaining Arch is a measure of your diligence. Contributing to Arch is a measure of your competence.
Griemak-Bleeding edge, not bleeding flat. Edge denotes falls will occur from time to time. Bring your own parachute.
Offline