История изменений
Исправление wandrien, (текущая версия) :
Разве это не форки с некоторыми доработками? Ничего интересного и принципиально нового вы не сделали, увы. Но мечтать не вредно, за это не осуждаю.
Я и в этой теме ничего «принципиально нового» не написал.
Ни xprop
, ни xclip
не являются принципиально новыми.
Однако вот прототип, который был написан за полвечера:
$ cat ~/.bin/open-selection
#!/bin/sh
is_command_present()
{
which "$1" >/dev/null 2>/dev/null
}
unquote()
{
# FIXME: pretty incomplete impl lol
sed 's/[\]\(['\''"]\)/\1/g'
}
get_window_title()
{
if is_command_present xdotool ; then
xdotool getactivewindow getwindowname
return
fi
if is_command_present xprop ; then
local wid="`
xprop -root _NET_ACTIVE_WINDOW | grep -o '# 0x.*' | grep -o '0x.*'
`"
xprop -id "$wid" _NET_WM_NAME | sed 's/.* = "\(.*\)"$/\1/' | unquote
return
fi
}
get_selection()
{
if is_command_present xclip ; then
xclip -o -selection
return
fi
if is_command_present xsel ; then
xsel -o --primary
return
fi
}
extract_path()
{
local path="`echo "$1" | grep -o '\(/\|~/\).*'`"
case "$path" in
'~/'*)
path="${path/\~/$HOME}"
;;
esac
while test -n "$path" -a "x$path" != "/" ; do
if test -d "$path" ; then
break
fi
#path="`dirname "$path"`"
path="`echo "$path" | sed 's!\(.*\)[-:/ ][^-:/ ]*!\1!'`"
done
echo "$path"
}
window_title="`get_window_title`"
work_dir="`extract_path "$window_title"`"
selection="`get_selection`"
qk "$work_dir/$selection"
Исходная версия wandrien, :
Разве это не форки с некоторыми доработками? Ничего интересного и принципиально нового вы не сделали, увы. Но мечтать не вредно, за это не осуждаю.
Я и в этой теме ничего «принципиально нового» не написал.
Ни xprop
, ни xclip
не являются принципиально новыми.
Однако вот прототип, который был написан за полвечера:
$ cat ~/.bin/open-selection
#!/bin/sh
is_command_present()
{
which "$1" >/dev/null 2>/dev/null
}
unquote()
{
# FOXME: pretty incomplete impl lol
sed 's/[\]\(['\''"]\)/\1/g'
}
get_window_title()
{
if is_command_present xdotool ; then
xdotool getactivewindow getwindowname
return
fi
if is_command_present xprop ; then
local wid="`
xprop -root _NET_ACTIVE_WINDOW | grep -o '# 0x.*' | grep -o '0x.*'
`"
xprop -id "$wid" _NET_WM_NAME | sed 's/.* = "\(.*\)"$/\1/' | unquote
return
fi
}
get_selection()
{
if is_command_present xclip ; then
xclip -o -selection
return
fi
if is_command_present xsel ; then
xsel -o --primary
return
fi
}
extract_path()
{
local path="`echo "$1" | grep -o '\(/\|~/\).*'`"
case "$path" in
'~/'*)
path="${path/\~/$HOME}"
;;
esac
while test -n "$path" -a "x$path" != "/" ; do
if test -d "$path" ; then
break
fi
#path="`dirname "$path"`"
path="`echo "$path" | sed 's!\(.*\)[-:/ ][^-:/ ]*!\1!'`"
done
echo "$path"
}
window_title="`get_window_title`"
work_dir="`extract_path "$window_title"`"
selection="`get_selection`"
qk "$work_dir/$selection"