특정 파일을 선택하도록 thunar를 어떻게 열 수 있나요?

특정 파일을 선택하도록 thunar를 어떻게 열 수 있나요?

제목과 같습니다. Windows에서는 다음과 같이 할 수 있습니다.

explorer /select,"C:\folder\file.txt"

이렇게 하면 Open이 explorer.exe즉시 열리고 C:\folder선택됩니다 file.txt.

ROX에도 이 기능이 있다고 생각합니다.

thunar에서도 동일한 작업을 수행할 수 있나요?

답변1

답변을 바탕으로 theY4KmanPython을 사용하지 않고 이를 수행하는 방법은 다음과 같습니다.

dbus-send --type=method_call --dest=org.xfce.Thunar /org/xfce/FileManager org.xfce.FileManager.DisplayFolderAndSelect string:"/home/user/Downloads" string:"File.txt" string:"" string:""

주의하실점은 폴더경로와 파일명을 구분하셔야 한다는 점입니다.

답변2

약간의 조사 끝에 D-Bus를 사용하여 이것이 가능하다는 것을 알았습니다.

#!/usr/bin/env python
import dbus
import os
import sys
import urlparse
import urllib


bus = dbus.SessionBus()
obj = bus.get_object('org.xfce.Thunar', '/org/xfce/FileManager')
iface = dbus.Interface(obj, 'org.xfce.FileManager')

_thunar_display_folder = iface.get_dbus_method('DisplayFolder')
_thunar_display_folder_and_select = iface.get_dbus_method('DisplayFolderAndSelect')


def display_folder(uri, display='', startup_id=''):
    _thunar_display_folder(uri, display, startup_id)


def display_folder_and_select(uri, filename, display='', startup_id=''):
    _thunar_display_folder_and_select(uri, filename, display, startup_id)


def path_to_url(path):
    return urlparse.urljoin('file:', urllib.pathname2url(path))


def url_to_path(url):
    return urlparse.urlparse(url).path


def main(args):
    path = args[1]  # May be a path (from cmdline) or a file:// URL (from OS)
    path = url_to_path(path)
    path = os.path.realpath(path)
    url = path_to_url(path)

    if os.path.isfile(path):
        dirname = os.path.dirname(url)
        filename = os.path.basename(url)
        display_folder_and_select(dirname, filename)
    else:
        display_folder(url)


if __name__ == '__main__':
    main(sys.argv)

구현하다:

$ ./thunar-open-file.py /home/user/myfile.txt

다음을 통과하면 여전히 폴더가 열립니다.

$ ./thunar-open-file.py /home/user/

하드코어 증거의 스크린샷 비디오

답변3

thunar에 내장된 명령줄 스위치를 사용하여 이 작업을 수행할 수 없습니다. 이 표시되면 man thunar이 방법으로 폴더를 열 수만 있고 폴더에 있는 파일을 미리 선택할 수는 없다는 것을 알 수 있습니다.

단순히 할 수 없다는 뜻인가요?

다행히 그렇지는 않지만 외부 프로그램의 도움이 필요합니다. 다음을 사용하여 이를 수행하는 예xdo 도구보내기 ctrl+s및 입력 filename(이렇게 하면 효과적으로 선택됩니다):

#!/bin/sh
file=$1
[ -z "$file" ]; then
    echo 'No file selected' 1>&2
    exit 1
fi

if [[ ! $(command -v thunar) ]]; then
    echo 'Thunar is not installed' 1>&2
    exit 1
fi

if [ -d "$file" ]; then
    thunar "$file" &
else
    if [ ! -f "$file" ]; then
        echo 'File does not exist' 1>&2
        exit 1
    fi

    if [[ ! $(command -v xdotool) ]]; then
        echo 'Xdotool is not installed' 1>&2
        exit 1
    fi

    set -e #exit on any error
    thunar "$(dirname "$file")" &
    window_id=`xdotool search --sync --onlyvisible --class 'Thunar' | head -n1`
    xdotool key --clearmodifiers 'ctrl+s'
    xdotool type "$(basename "$file")"
    xdotool key Return
fi

용법:script /path/to/file-or-folder

주목해야 할 두 가지 사항이 있습니다.

  1. 이로 인해 약간의 지연이 발생 xdotool --sync하지만 허용 가능하다고 생각합니다.
  2. 이는 도트 파일과 같이 어떤 이유로든 thunar에 숨겨진 파일에는 적용되지 않습니다.

관련 정보