LINUX.ORG.RU

История изменений

Исправление 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"