제목과 같습니다. Windows에서는 다음과 같이 할 수 있습니다.
explorer /select,"C:\folder\file.txt"
이렇게 하면 Open이 explorer.exe
즉시 열리고 C:\folder
선택됩니다 file.txt
.
ROX에도 이 기능이 있다고 생각합니다.
thunar에서도 동일한 작업을 수행할 수 있나요?
답변1
답변을 바탕으로 theY4Kman
Python을 사용하지 않고 이를 수행하는 방법은 다음과 같습니다.
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
주목해야 할 두 가지 사항이 있습니다.
- 이로 인해 약간의 지연이 발생
xdotool --sync
하지만 허용 가능하다고 생각합니다. - 이는 도트 파일과 같이 어떤 이유로든 thunar에 숨겨진 파일에는 적용되지 않습니다.