Window Manager: Added support for getting window manager with xprop

This commit is contained in:
Dylan 2016-01-30 12:56:37 +11:00
parent c99d472ebb
commit f0416ec78e
3 changed files with 44 additions and 28 deletions

1
1.1.md
View File

@ -31,6 +31,7 @@ at launch or in script.
**Window Manager:** **Window Manager:**
- Added support for `$XINITRC` - Added support for `$XINITRC`
- Added support for `xprop`
**Shell:** **Shell:**

View File

@ -82,7 +82,7 @@ https://github.com/dylanaraps/fetch/wiki/Customizing-Info
- **Note:** The script can now also use iTerm2's builtin image rendering instead of w3m!<br \> - **Note:** The script can now also use iTerm2's builtin image rendering instead of w3m!<br \>
Enable it by changing `$image_backend` to `iterm2` or by using the launch flag `--image_backend`. Enable it by changing `$image_backend` to `iterm2` or by using the launch flag `--image_backend`.
- Image Cropping, Resizing etc: `ImageMagick` - Image Cropping, Resizing etc: `ImageMagick`
- More accurate window manager detection: `wmctrl` - More accurate window manager detection: `wmctrl` or `xprop`
**Linux / BSD:** **Linux / BSD:**

19
fetch
View File

@ -12,7 +12,7 @@
# Optional Dependencies: (You'll lose these features without them) # Optional Dependencies: (You'll lose these features without them)
# Displaying Images: w3m + w3m-img # Displaying Images: w3m + w3m-img
# Image Cropping: ImageMagick # Image Cropping: ImageMagick
# More accurate window manager detection: wmctrl # More accurate window manager detection: wmctrl or xprop
# [ Linux / BSD ] Wallpaper Display: feh, nitrogen or gsettings # [ Linux / BSD ] Wallpaper Display: feh, nitrogen or gsettings
# [ Linux / BSD ] Current Song: mpc or cmus # [ Linux / BSD ] Current Song: mpc or cmus
# [ Linux / BSD ] Resolution detection: xorg-xdpyinfo # [ Linux / BSD ] Resolution detection: xorg-xdpyinfo
@ -652,11 +652,25 @@ getshell () {
# Window Manager {{{ # Window Manager {{{
getwindowmanager () { getwindowmanager () {
# Check for window manager using wmctrl and xprop
if type -p wmctrl >/dev/null 2>&1; then if type -p wmctrl >/dev/null 2>&1; then
windowmanager="$(wmctrl -m | head -n1)" windowmanager="$(wmctrl -m | head -n1)"
windowmanager=${windowmanager/Name: } windowmanager=${windowmanager/Name: }
elif [ "$XDG_CURRENT_DESKTOP" ]; then elif type -p xprop >/dev/null 2>&1; then
# Get id of window manager
wid=$(xprop -root _NET_SUPPORTING_WM_CHECK 2>/dev/null)
wid=${wid//* }
windowmanager="$(xprop -id $wid 8s _NET_WM_NAME 2>/dev/null)"
windowmanager=${windowmanager/*\(*\) = \"}
windowmanager=${windowmanager/\"}
fi
# If the window manager wasn't found, fallback to
# checking files / envars.
if [ -z "$windowmanager" ]; then
if [ "$XDG_CURRENT_DESKTOP" ]; then
windowmanager="$XDG_CURRENT_DESKTOP" windowmanager="$XDG_CURRENT_DESKTOP"
elif [ "$XINITRC" ]; then elif [ "$XINITRC" ]; then
@ -685,6 +699,7 @@ getwindowmanager () {
windowmanager="${windowmanager/exec }" windowmanager="${windowmanager/exec }"
windowmanager="${windowmanager/-session}" windowmanager="${windowmanager/-session}"
windowmanager="${windowmanager^}" windowmanager="${windowmanager^}"
fi
} }
# }}} # }}}