derf / feh

a fast and light image viewer
https://feh.finalrewind.org
Other
1.51k stars 159 forks source link

fails to get keyboard focus in some (all?) tiling window managers #162

Open nbirnel opened 10 years ago

nbirnel commented 10 years ago

Behavior: Using dwm or awesome window managers, and st or xterm terminal emulators, run feh -F a_folder_of_images/* Feh displays the first image. Hit n to advance to next image. The "n" is passed to the terminal. Feh does nothing. Hit Ctrl-c to kill feh. Feh closes.

Bizarre workaround: run urxvt. (Optionally, close urxvt immediately.) from st or xterm, launch feh again. Feh receives keyboard focus as expected.

In openbox WM, feh works fine with st or xterm.

Tested on: feh version 2.10-19-gbf418d2 Compile-time switches: curl exif stat64 xinerama

and on: feh version 2.10-18-g2790131-dirty Compile-time switches: curl xinerama

Considering this is an issue using two different WMs and two different TERMs, I suspect this may be a bug in feh, not the other software.

nbirnel commented 10 years ago

Further testing on a bunch of tiling window managers (all tested with st under Xephyr).

fails to get keyboard focus, shows 'feh WARNING: Window Manager does not support MWM hints. To get a borderless window I have to bypass your wm.': dwm awesome herbstluftwm i3 larswm scrotwm spectrwm xmonad

works as expected: openbox (not a tiling WM) notion subtle

works as expected, but shows shows 'feh WARNING: Window Manager does not support MWM hints. To get a borderless window I have to bypass your wm.': Xephyr with no window manager.

The warning is obviously a feature, not a bug, but maybe it will help to figure out what is going on.

nbirnel commented 10 years ago

output of xprop on feh: before running urxvt: WM_COMMAND(STRING) = { "feh", "-F", "/home/noah/Pictures/today/IMAG1940.jpg", "/home/noah/Pictures/today/IMAG1941.jpg", "/home/noah/Pictures/today/IMAG1942.jpg", "/home/noah/Pictures/today/IMAG1943.jpg", "/home/noah/Pictures/today/IMAG1944.jpg" } WM_NORMAL_HINTS(WM_SIZE_HINTS): user specified location: 0, 0 WM_CLASS(STRING) = "feh", "feh" _NET_WM_ICON_NAME(UTF8_STRING) = "feh [1 of 5] - /home/noah/Pictures/today/IMAG1940.jpg" _NET_WM_NAME(UTF8_STRING) = "feh [1 of 5] - /home/noah/Pictures/today/IMAG1940.jpg" WM_ICON_NAME(STRING) = "feh" WM_NAME(STRING) = "feh [1 of 5] - /home/noah/Pictures/today/IMAG1940.jpg" WM_PROTOCOLS(ATOM): protocols WM_DELETE_WINDOW _NET_WM_STATE(ATOM) = _NET_WM_STATE_FULLSCREEN

and after: WM_STATE(WM_STATE): window state: Normal icon window: 0x0 WM_COMMAND(STRING) = { "feh", "-F", "/home/noah/Pictures/today/IMAG1940.jpg", "/home/noah/Pictures/today/IMAG1941.jpg", "/home/noah/Pictures/today/IMAG1942.jpg", "/home/noah/Pictures/today/IMAG1943.jpg", "/home/noah/Pictures/today/IMAG1944.jpg" } WM_NORMAL_HINTS(WM_SIZE_HINTS): user specified location: 0, 0 WM_CLASS(STRING) = "feh", "feh" _NET_WM_ICON_NAME(UTF8_STRING) = "feh [1 of 5] - /home/noah/Pictures/today/IMAG1940.jpg" _NET_WM_NAME(UTF8_STRING) = "feh [1 of 5] - /home/noah/Pictures/today/IMAG1940.jpg" WM_ICON_NAME(STRING) = "feh" WM_NAME(STRING) = "feh [1 of 5] - /home/noah/Pictures/today/IMAG1940.jpg" WM_PROTOCOLS(ATOM): protocols WM_DELETE_WINDOW _NET_WM_STATE(ATOM) = _NET_WM_STATE_FULLSCREEN _MOTIF_WM_HINTS(_MOTIF_WM_HINTS) = 0x2, 0x0, 0x0, 0x0, 0x0

WM_STATE and _MOTIF_WM_HINTS are set after running urxvt.

bradenbest commented 9 years ago

I found a workaroud for the time being.

inaimathi commented 8 years ago

Using feh with xmonad here. The workaround I've settled on is just adding spawn "urxvt -e exit" to my onStartup routine, which seems to work perfectly.

camilleg commented 8 years ago

For feh in awesome, append to /etc/xdg/awesome/rc.lua the line awful.util.spawn_with_shell("urxvt -e exit").