new xdotool version available (20090612)
Posted Sat, 13 Jun 2009
20090612: * Fixed bug where shift modifier was not reset when 'xdotool type' used. http://code.google.com/p/semicomplete/issues/detail?id=5
20090612: * Fixed bug where shift modifier was not reset when 'xdotool type' used. http://code.google.com/p/semicomplete/issues/detail?id=5
20090609: * Add '--delay' to xdotool type. Sets the delay between keys. * Add '--window ' to xdotool type, key, keyup, and keydown. This feature (key events with --window ) only works if the application does not reject X events that have 'send_event' set to true. Special notes: * Firefox appears to ignore all input when it does not have focus. * xterm ignores sendevent by default, ctrl+leftclick menu will let you enable it. * gnome-terminal appears to accept send_event input by default
I just finished working on the xinerama portion of multi-screen support for keynav.
If someone is interested, I could use some help testing. It's working for me, and there are a few odd behaviors that I'm not sure are the best. Let me know if you test it.
No new official release yet, but if you want to test, svn can be
fetched with:
svn checkout http://semicomplete.googlecode.com/svn/keynav
- Include support for multiple screens.
* When 'start' happens, the region will be the size of the current display
(wherever the mouse is)
* Moving the region outside of the current display will move it to the next
display (right or left). This currently only works with Xinerama.
* History works as expected (move to the right display, history-back goes to
the previous display, etc)
* When multiple Screen (non-xinerama) are found, XGrabKey on all root windows.
* Screens are sorted, if possible, from left-to-right based on x-coordinate
origin. This unfortuntely means, for now, only left-to-right monitor
configurations are known to be supported.
20080614.01:
- Several bug fixes and feature additions suggested by Yuri D'Elia.
- Sync xdotool library to 20080606
- Added default key binding Ctrl+[ as 'end' (requested by Luke Macken)
- New command: 'sh' - Executes shell commands.
Example keynavrc: ctrl+x sh "xterm -bg black -fg white"
- New command: 'history-back' - Undo a window change operation
Example keynavrc: a history-back
+ Such operations include: cut-*, grid, cell-select, move-*
+ The history size is currently hard-coded at 100 entries.
+ If you exceed 100 moves, the oldest entry will be removed.
+ Every time keynav is activated, the history is wiped.
- Fix: Any command starting with "start" is now bound globally.
- Fix: All rendering is delayed until after the end of the current command
sequence. This fixes (in order of annoyance, worst first):
1) Crash when a 'start' and 'end' exist in the same command sequence.
2) Visible 2x2 grid first, before a 3x3 grid when the start command is
'start, grid 3x3'
3) Rendering blinking a full white window on the screen before clipping to
the grid.
4) Visible blink when "cut-left,cut-up" and such are run simultaneously.
- Fix: If the 'start' command is invoked again while keynav is active, then
the default arrangement is set (full screen and 2x2 grid). Previously, the
'start' command was a no-op if keynav was active.
20080606: * Correctly report an error if xdotool is invoked with an invalid command. * Fix invalid error code reporting from 'windowraise'
20080603:
* Daniel Kahn Gillmor reported a problem with return codes from xdotool. All
commands return proper exit status now (0 == success, nonzero == error)
* I tested on 3 window managers: Gnome2 2.20.0, OpenBox 3.4, ion-3rc-20070608
- Gnome2 and OpenBox pass all tests.
- ion-3 fails on any desktop-related methods (ion-3 lacks the support).
20080601:
* Add new commands:
- windowactivate: Activate a window. If the window is on another desktop, we
will switch to that desktop and then activate the window.
- set_num_desktops number: Changes the number of desktops or workspaces.
- get_num_desktops: Output the current number of desktops.
- set_desktop desktop_number: Change the current view to the specified
desktop.
- get_desktop: Output the current desktop in view.
- set_desktop_for_window window_id desktop_number: Move a window to a
different desktop.
- get_desktop_for_window window_id: Output the desktop currently containing
the given window.
windowactivate tested and confirmed working in: ion-3 and Gnome2 (metacity)
The rest of the new commands have only been tested in Gnome2. They do not
work in ion-3 due to lacking support for EWMH in ion.
* Rewrote the man page in perlpod format.
Tonight I added 7 new commands to xdotool (not yet in a release):
The last is window activation. It will jump you to the window and give it focus. If the window is on a different desktop, it jumps to that desktop and then activates the window. I've tested exactly that behavior (firefox lives on a separate desktop or workspace) in Gnome2 and ion-3, and it works.
Example: Jump to firefox:
./xdotool windowactivate $(./xdotool search -title "Mozilla Firefox")Example: Trying to do bad things in Gnome2
% ./xdotool set_num_desktops 5000 % ./xdotool get_num_desktops 36Example: Move firefox to another desktop
# Find firefox's X Window ID % MOZWIN=$(./xdotool search --title "Mozilla Firefox") # Find the desktop containing firefox. % ./xdotool get_desktop_for_window $MOZWIN 0 # How many desktops do we have? % ./xdotool get_num_desktops 5 # Move firefox to desktop 3 (index starts at 0) % ./xdotool set_desktop_for_window $MOZWIN 3 # Show me that firefox has moved to desktop 3 % ./xdotool get_desktop_for_window $MOZWIN 3 # Show me the current desktop % ./xdotool get_desktop 0 # Activate firefox's window (taking us to Firefox's desktop) % ./xdotool windowactivate $MOZWIN # Show that we're now on the same desktop as firefox % ./xdotool get_desktop 3I'll put out a new release after I have a chance to tidy up the code a bit.
20080522:
- Sync xdotool library to 20080521.
- Added 2 grid examples to keynavrc
- Applied patches from Richard Kolkovich
+ Fix backwards math when calculating Nth cell when using 'cell-select N'
+ Fix dislexia when doing 'cell-select NxM'
+ Abort update() calls when app is inactive.
- Now warns you if you try to execute an invalid command.
(Yes, 0522 is tomorrow. Turns out uploads to googlecode are write-once, so I'll
need to come up with an additional versioning scheme that lets me push multiple
releases in a single day in case I find something bad after I upload a
release.)