richardgv / skippy-xd Goto Github PK
View Code? Open in Web Editor NEWA full-screen Exposé-style standalone task switcher for X11.
License: GNU General Public License v2.0
A full-screen Exposé-style standalone task switcher for X11.
License: GNU General Public License v2.0
I installed the git version of skippy-xd today and in my ~/.skippy-xd.rc I have the section:
[bindings]
miwMouse1 = focus
miwMouse2 = close-ewmh
miwMouse3 =
but it seems that this section isn't getting read, as the defaults are still used. I've also tried putting other actions on Mouse 3, but the settings are still ignored.
I've been desperate for the equivalent of Compiz Scale 'by window group' for a long time, across many distros, and would be very happy to use skippy-xd for this feature, driven by my own scripting, as running a full window manager just for Scale behaviour is a bit crazy, and creates lots of other unnecessary problems (e.g. distro keyboard shortcuts not working).
However, I don't see any mechanism for scaling just a subset of the windows with skippy-xd. Not sure what kind of window identifiers skippy-xd uses internally, but it should be fairly straightforward to filter the windows using a list of appropriate X11 ids, I would guess.
This would mean that, for example, when looking at a focused Chrome window, you could zoom to see all other Chrome windows, or when looking at a focused Terminal window, could zoom to see only other Terminals. The result in terms of screen real-estate, and the ease of identifying windows, is very significant in the case of Compiz Scale. However, I believe Compiz is buggy and is not due to be maintained on any future rendering platform, sadly.
From the point of view of skippy-xd support, I don't think skippy should have to handle the logic of which windows to present, but an invocation which could pass window ids (from a suitably configured script) would be brilliant, and very reusable I think across lots of desktop metaphors.
When starting skippy-xd with first skippy-xd --start-daemon
, then skippy-xd-activate
(is that the theoretically best way?), it takes up to three seconds till the expose-view appears. The strange thing is, that it is not always like that - sometimes it is instant. But if it is instant, it is always that way, till I restart compton. I can't nail down what is causing this.
I'm using icewm and compton with an AMD-Gpu.
Let me know which information you need.
When running from the daemon with skippy-xd --start-daemon
and skippy-xd --activate window-picker
, Skippy-XD is not rendering chromium windows when a new tab is opened or an existing one is selected. The space for the window is allocated in the window picker space, but there is no image rendered to represent the window and the window is not selectable. This only happens on the first run of the window picker with the new tab opened-- when it is run again with the same tab visible, the window renders and is selectable.
Steps to reproduce:
skippy-xd --start-daemon
)skippy-xd --activate window-picker
) noting that Chromium is visible in the picker view and close it.skippy-xd --activate window-picker
) noting that Chromium is not visible although a space for the window is allocated in the picker view, and close it.skippy-xd --activate window-picker
) noting that Chromium and it's new tab are now visible.Notes:
skippy-xd
without the daemon/window picker, this does not occur.Specs:
I can provide any other logs if needed as it's easy for me to reproduce.
Hi,
I love skippy, but sometime the thumbnail is not enough to quicly distinguish a chrome window from a PDF viewer window (too much white). I don't like the icon-only view mode so, would it be possible to add a mix mode where both thumbnail and icon are overlapped. this is typical in other compositors like compiz or kwin.
Regaeds
When using multimonitor, I've found two issues:
All the miniatures are displayed on the active monitor. I'd rather see them on their monitor if possible. If this is doable, then 2) does not apply. Otherwise, if this is not going to be done shorty or ever, please see 2) as a intermediate fix.
When miniatures are displayed, the other monitor still shows whatever it was showing (e.g. thunderbird window), but with a static image. This leads to some confusions, as sometimes you don't realize to be in the exposee mode and click on the image thinking it is the actual window. More importantly, even though the image is static, it is actually responsive. Therefore, if you click on it, you can perform actual actions without seeing what's happening (well, you can see it on the miniature, but not in the big window). To solve this issue I'd suggest just performing whatever you are doing on the exposee display, that is, hiding the windows and showing the destktop instead.
Regards
It would be neat if skippy-xd had a tray icon you could click to open it.
Sometimes the up/down keys don't work when choosing windows.
In some situations the key strokes are passed to one of the clients, and skippy takes 100% CPU.
I usually find this happens usually after navigating around a little with the keyboard, and returning to the same window. Especially if there are an uneven number of windows on each row (e.g. three windows total, two on one row, and one on the other and you use up/down.)
I can't 100% reproduce it though. (I'm using the latest version from git as of 2013-06-02, and fvwm is my window manager.)
Thanks for this wonderful tool!
I have found a quick solution. Please check my fork. But the developers of this project may have a better patch for that.
Hi,
after having used skippy-xd for a while, I've found myself surprised that some windows are not displayed. I don't know if they are special or not, but they are listed in Xfce's application list on the panel, but skippy fails to show them.
In particular, this happens with some pop-up windows in chromium (the kidn of browser window without navigation bar, etc.). It also happens with a "tclsh" program I have to execute from time to time.
Am I missing some option?
Regards
from 0.5.1git20131213ubuntu13.10.1 to 0.5.1git20140201ubuntu13.10.1
Anyone else seeing this issue?
When I press ctrl+alt+-> my system changes of workspace. If skippy is running, the view is not updated. Is it possible to add this functionality?
Would it be difficult for Skippy-XD to optionally display only windows from current workspace and display?
By default Skippy-XD shows windows from all displays (i.e., monitors), not only those that are on the current display (where "current display" means the one where the currently active window lies). This can be very useful for people using multiple monitors: see these somewhat related askubuntu question and xfce bug report.
skippy-xd is pretty nice, but the real killer feature of Mission Control that appears to be missing is drag and drop placement of workspaces, windows on workspaces, and creation/deletion of workspaces. I use XMonad with Xfce4, so getting that working for me is a long shot. As it is, I don't have a need for skippy-xd now, but if I could get the workspace features working, that would be awesome.
I like to use [Alt]+[Tab] to cycle thru the window previews.
And I like to use [Alt]+[Shift]+[Tab] to do this in reverse.
I've found a little bug in the thumbnail-icon mode. However, I don't know if it is skippy related, or maybe some image library on my box. Firstly, icon transparency is not correctly recognized, and secondly image's rows are shifted to the right.
System: gentoo stable (with few exceptions, but not for libraries) without multilib support.
Skippy is run in the daemon mode: skippy-xd --start-daemon
Libpng is compiled with the apng support.
$ skippy-xd --help
skippy-xd (git-998e0e7-2014-06-18)
Compiled with libpng 1.6.12, using 1.6.12.
Compiled with zlib 1.2.8, using 1.2.8.
$ ldd ~/bin/skippy-xd
linux-vdso.so.1 (0x00007fff6a5b8000)
libjpeg.so.62 => /usr/lib64/libjpeg.so.62 (0x00007f2f8d4c2000)
libgif.so.4 => /usr/lib64/libgif.so.4 (0x00007f2f8d2b8000)
libm.so.6 => /lib64/libm.so.6 (0x00007f2f8cfb6000)
libXft.so.2 => /usr/lib64/libXft.so.2 (0x00007f2f8cda0000)
libXrender.so.1 => /usr/lib64/libXrender.so.1 (0x00007f2f8cb96000)
libX11.so.6 => /usr/lib64/libX11.so.6 (0x00007f2f8c85b000)
libXcomposite.so.1 => /usr/lib64/libXcomposite.so.1 (0x00007f2f8c658000)
libXdamage.so.1 => /usr/lib64/libXdamage.so.1 (0x00007f2f8c455000)
libXfixes.so.3 => /usr/lib64/libXfixes.so.3 (0x00007f2f8c24f000)
libXinerama.so.1 => /usr/lib64/libXinerama.so.1 (0x00007f2f8c04c000)
libpng16.so.16 => /usr/lib64/libpng16.so.16 (0x00007f2f8be17000)
libz.so.1 => /lib64/libz.so.1 (0x00007f2f8bc01000)
libc.so.6 => /lib64/libc.so.6 (0x00007f2f8b85a000)
libfontconfig.so.1 => /usr/lib64/libfontconfig.so.1 (0x00007f2f8b61e000)
libfreetype.so.6 => /usr/lib64/libfreetype.so.6 (0x00007f2f8b35c000)
libxcb.so.1 => /usr/lib64/libxcb.so.1 (0x00007f2f8b13a000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007f2f8af36000)
libXext.so.6 => /usr/lib64/libXext.so.6 (0x00007f2f8ad24000)
/lib64/ld-linux-x86-64.so.2 (0x00007f2f8d717000)
libexpat.so.1 => /usr/lib64/libexpat.so.1 (0x00007f2f8aafb000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f2f8a8dd000)
libbz2.so.1 => /lib64/libbz2.so.1 (0x00007f2f8a6cd000)
libXau.so.6 => /usr/lib64/libXau.so.6 (0x00007f2f8a4c9000)
libXdmcp.so.6 => /usr/lib64/libXdmcp.so.6 (0x00007f2f8a2c3000)
I'm encountering some strange messages when building master:
make (11804)
fatal: Not a git repository (or any of the parent directories): .git
fatal: Not a git repository (or any of the parent directories): .git
cc -I/usr/include/freetype2 -DNDEBUG -O2 -D_FORTIFY_SOURCE=2 -std=c99 -Wall -DCFG_XINERAMA -DSKIPPYXD_VERSION=""git--"" -c src/skippy.c
fatal: Not a git repository (or any of the parent directories): .git
fatal: Not a git repository (or any of the parent directories): .git
cc -I/usr/include/freetype2 -DNDEBUG -O2 -D_FORTIFY_SOURCE=2 -std=c99 -Wall -DCFG_XINERAMA -DSKIPPYXD_VERSION=""git--"" -c src/wm.c
src/wm.c: In function ‘wm_get_window_title’:
src/wm.c:400:2: warning: pointer targets in return differ in signedness [-Wpointer-sign]
src/wm.c: In function ‘wm_wid_get_prop_rstr’:
src/wm.c:656:3: warning: pointer targets in passing argument 1 of ‘mstrdup’ differ in signedness [-Wpointer-sign]
src/skippy.h:299:1: note: expected ‘const char *’ but argument is of type ‘unsigned char *’
fatal: Not a git repository (or any of the parent directories): .git
fatal: Not a git repository (or any of the parent directories): .git
cc -I/usr/include/freetype2 -DNDEBUG -O2 -D_FORTIFY_SOURCE=2 -std=c99 -Wall -DCFG_XINERAMA -DSKIPPYXD_VERSION=""git--"" -c src/dlist.c
fatal: Not a git repository (or any of the parent directories): .git
fatal: Not a git repository (or any of the parent directories): .git
cc -I/usr/include/freetype2 -DNDEBUG -O2 -D_FORTIFY_SOURCE=2 -std=c99 -Wall -DCFG_XINERAMA -DSKIPPYXD_VERSION=""git--"" -c src/mainwin.c
fatal: Not a git repository (or any of the parent directories): .git
fatal: Not a git repository (or any of the parent directories): .git
cc -I/usr/include/freetype2 -DNDEBUG -O2 -D_FORTIFY_SOURCE=2 -std=c99 -Wall -DCFG_XINERAMA -DSKIPPYXD_VERSION=""git--"" -c src/clientwin.c
fatal: Not a git repository (or any of the parent directories): .git
fatal: Not a git repository (or any of the parent directories): .git
cc -I/usr/include/freetype2 -DNDEBUG -O2 -D_FORTIFY_SOURCE=2 -std=c99 -Wall -DCFG_XINERAMA -DSKIPPYXD_VERSION=""git--"" -c src/layout.c
fatal: Not a git repository (or any of the parent directories): .git
fatal: Not a git repository (or any of the parent directories): .git
cc -I/usr/include/freetype2 -DNDEBUG -O2 -D_FORTIFY_SOURCE=2 -std=c99 -Wall -DCFG_XINERAMA -DSKIPPYXD_VERSION=""git--"" -c src/focus.c
fatal: Not a git repository (or any of the parent directories): .git
fatal: Not a git repository (or any of the parent directories): .git
cc -I/usr/include/freetype2 -DNDEBUG -O2 -D_FORTIFY_SOURCE=2 -std=c99 -Wall -DCFG_XINERAMA -DSKIPPYXD_VERSION=""git--"" -c src/config.c
fatal: Not a git repository (or any of the parent directories): .git
fatal: Not a git repository (or any of the parent directories): .git
cc -I/usr/include/freetype2 -DNDEBUG -O2 -D_FORTIFY_SOURCE=2 -std=c99 -Wall -DCFG_XINERAMA -DSKIPPYXD_VERSION=""git--"" -c src/tooltip.c
cc -Wl,-O1 -Wl,--as-needed -o skippy-xd skippy.o wm.o dlist.o mainwin.o clientwin.o layout.o focus.o config.o tooltip.o -lm -lXft -lXrender -lX11 -lXcomposite -lXdamage -lXfixes -lXext -lXinerama
make (11804) returned '0'
Are they expected? (Including the "fatal: Not a git repository (or any of the parent directories): .git" message?)
I like to see skippy-xd loading default user config file from:
$XDG_CONFIG_HOME/skippy-xd/skippy-xd.rc
Highlighting previews works only when I use keyboard navigation. With the mouse cursor only the tooltip changes. This is with version 5.1~git20130603 from the daily ppa.
I would love to be able to use this in conjunction with a dock to view open windows of a specific application. i.e. I have 3 firefox windows open; I click firefox on my dock and skippy-xd shows the firefox windows only.
I am aware that the integration would need to come from the dock side, but to allow easy integration with multiple launchers/docks etc, this would ideally be achieved by adding a command line option --application-class to select the windows.
Right now, I can only see the window-title text of a window when hovering over it's mini-window, and when I have many windows of the same type open, e.g. nautilus, it's hard to see which one is the one I want to switch to.
In that situation it's cumbersome to hover over all of the mini-windows of same type to see their title in order to switch to it.
I would propose to have a possibility to add the window-title text to the mini-windows, in a manner which does not break the design by filling all of the mini-window with text, if the title text is super long.
Also, control over size, color, font, placement inside and eventually a bit outside of the mini-windows would be desirable.
I don't know if this should count as a feature request or bug.. I installed skippy-xd
package from Arch Linux AUR to see if it would work in i3wm. It didn't. It gave me...
FATAL: WM not NETWM or GNOME WM Spec compliant.
With skippy-xd-git
witch is currently built from the 20.e8e3638
commit gave..
config_get_double(general, updateFreq, 10,000000): Value "10.0" is not a valid floating-point number.
main(): WM not NETWM or GNOME WM Spec compliant. Troubles ahead.
running once then quitting...
skippy_run(): No client windows found.
So I guess it is not compatible yet. Will it be in the future?
It would be great to be able to close some windows directly from skippy, for example by middle clicking the windows.
Anyway, thanks for maintaining this great program.
Hey,
Right now Skippy upscales windows if there is room enough for it. For example, this happens if you have a single small window open and use Skippy.
I think better behavior would be if Skippy downscaled windows when necessary, but didn't upscale them.
Somehow when I run skippyxd it only shows the window content, but without the window-decoration. That looks a bit odd to me, maybe it can be fixed. Thanks!
Hello,
I am currently using touchegg for activating skippy-xd (three swipes down), works like a charm. Also three taps are set to mimic Mouse3 button, but it does not work in exposē mode, as it seems to be blocked by skippy.
Any suggestions?
Thank you.
Xfwm4's compositor recently gained an API to retrieve the window pixmap (as can be seen here: http://git.xfce.org/xfce/xfwm4/commit/?id=f6d5236b887c062117ee504358e54e63a98e3a54)
I would imagine this could simplify skippy's code quite a bit, care to take a peek at that?
hi,
I got problem running skippy-xd
terminal message:
"
skippy-xd
WARNING: Ignoring invalid line: 0q�
running once then quitting...
"
nothing happens
I am using precise 64 mate, also i have installed xcompmgr last version
I like to see all my windows in an overview.
Hi, would it be possible to add the reverse of iconify to the available bindings, i.e. toggle the WM_STATE back to NormalState and redraw the pixmap of the window?
Many thanks for the great program by the way.
Occasionally, window previews are replaced with icons (see screenshot), but will be displayed correctly on a second invocation of --activate-window-picker
.
Unfortunately I have not been able to reproduce this on demand, so I can't provide information on when and why this happens. I am running metacity in standalone mode on Debian Wheezy.
I'll gladly provide any information or help I can in tracking down the cause of this issue.
With xfwm4, exposé on non-1st virtual desktops/workspaces displays the (incompletely rendered) windows from the 1st workspace. I.e., if no windows are open on the 1st workspace, the exposé on other workspaces works as expected.
I get this with xfwm 4.10 and skippy-xd from git with the latest wip-patch applied. Btw, wm-check() reports xfwm as EWMH compliant.
Title says it all. To reproduce: start expose, switch to another vt and run top. skippy-xd consumes permantly 100% cpu usage on one core. Version 5.1~git20130603 from the daily ppa
ESC sometimes fails to close skippy-xd. This is intermittent. How could I debug this?
The newer versions of libgif introduce an incompatible change in the function DGifOpenFileName
. On 3.10.10-1-ARCH I had to change line 13 of src/img-gif.c
from
GifFileType *f = DGifOpenFileName(path);
to
GifFileType *f = DGifOpenFileName(path,&ret);
in order for the program to compile.
Plase add shadow options to thumbnails preview.
Some users may prefer to use Skippy-XD instead of the default alt+tab
switcher coming with their WM. So it would be nice to make Skippy-XD behave nicer for people used to this workflow.
Assume that skippy-xd
is bound to alt+tab
. Once that is pressed, it would be nice if tab
allowed to recursively move/select the displayed windows (as traditional alt+tab
would do on Xfce, for example).
Additionally, if at all possible, Skippy-XD could inhibit the alt+tab
as captured by the WM, and by continuing to keep alt
pressed and by hitting tab
allow to move/select/focus the displayed windows recursively. This would be "exactly" like the Xfce alt+tab
switcher.
What do you think?
I like to see skippy-xd using native GTK+ tooltips.
Currently iconified windows are not displayed in Skippy-XD. Would it be possible to have them displayed at the bottom of the Skippy-XD screen, Windows7- or Xfce (unlabelled) Window Buttons-style? This way when right-click to minimize a window will not make it disappear from the screen, but merely place it in the bottom row of iconified windows.
Skippy works well when window is placed on other tag (it swiches to that tag when selecting preview).
But when window is iconified it only sends 'urgent' event to it but client still stays iconified.
I like to define my own keyboard bindings.
Something like:
[bindings] miwMouse1 = focus miwMouse2 = close-ewmh miwMouse3 = iconify Alt+Tab = select-next Alt+Shift+Tab = select-previous Enter = focus Right = select-right Left = select-left Up = select-up Down = select-down
When skippy-xd is starting and the mouse cursor isn't over the window preview, the cursor keys doesn't work.
I installed package skippy-xd_0.5-1_amd64.deb.
When I run skippy-xd in terminal, I get the error:
"FATAL:. NETWM not WM or GNOME WM Spec compliant".
I'd really like to have this app on xmonad, it's possible ?
Thank you.
$ xmonad --version
xmonad 0.10
Please ignore this. I clicked on the wrong button, heh...
Im using skippy-xd and xfce with gerybird theme.
I noticed that the each window preview has a black rectangle at the bottom and some are slightly cut at the top.
Looking at the code ( in function 'clientwin_repaint' line 220 ) i found that this artifacts could be fixed by substracting a little amount from y_src(s_y) in XRenderComposite.
Obviously this is only a hack that works for me in my current configuration. Unfortunately i dont know anything about xlib so i couldnt fix it in a more generic way.
When activating skippy on an empty desktop with no faked root window (e.g. fluxbox), uninitialized pointer is freed.
It is caused by the fact that XGetInputFocus returns PointerRoot in this case, which is not checked. Passing this value as a window ID causes X* functions to fail. In the final results uninitialized pointer is freed (wm.c function wm_get_focused line XFree(children)).
Proposed patch:
Bug fix: Proper handling of the PointerRoot focus
Fix a SIGSEGV issue when input focus is on the X root window. In that case,
XGetInputFocus returns PointerRoot, which can not be passed as a valid
window ID.
Signed-off-by: Arkadiusz Bokowy <[email protected]>
---
src/wm.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/wm.c b/src/wm.c
index bebf44c..91b7c06 100644
--- a/src/wm.c
+++ b/src/wm.c
@@ -626,8 +626,8 @@ wm_get_focused(Display *dpy)
unsigned char *data;
XGetInputFocus(dpy, &focused, &revert_to);
-
- while(focused != None && focused != root)
+
+ while(focused != None && focused != PointerRoot && focused != root)
{
status = XGetWindowProperty(dpy, focused, XA_WM_STATE,
0L, 1L, False, XA_WM_STATE, &real_type, &real_format,
--
1.8.3.2
Greetings!
Thank You for very usefull app. (I really have looked for such)
I think, skippy-xd misses one feature to show windows from all desktops, not just from current. Is it possible to add this option to program? It would be great.
Maybe, command argument --show-from-all or something else.
Now the window title follows the mouse as a tooltip. Sometimes this is confusing. Maybe it will be nicer if the title were always displayed in the same location (configurable), say top-center. What do you think?
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.