2012-01-06 34 views
7

Trong linux, làm thế nào tôi có thể xác định trình soạn thảo văn bản mặc định, thiết bị đầu cuối, v.v ...?Làm thế nào để lập trình xác định ứng dụng mặc định trong linux

nó có thay đổi theo phân phối không?

+1

Ok để trông giống như hệ thống sử dụng một tập tin gọi defaults.list. Vì vậy, tìm ra defaults.list hệ thống đang sử dụng nên giải quyết điều này. Nếu có ai có bất kỳ lời khuyên, làm đi trên – sqram

Trả lời

1

Tôi không nghĩ rằng khái niệm về mặc định trình chỉnh sửa hoặc thiết bị đầu cuối có ý nghĩa. Đối với trình soạn thảo, có quy ước sử dụng $EDITOR khi được xác định.

Trên Debian và liên quan (ví dụ: Ubuntu, Mint), bạn có các đường dẫn như /usr/bin/editor/usr/bin/x-terminal-emulator được liên kết tượng trưng (qua các liên kết trong /etc/alternatives/) với một số hệ thống mặc định.

Xem thêm Dacav's answer

1

Biến môi trường cho mỗi người dùng cho bạn biết điều đó.

  • $ EDITOR cung cấp cho bạn lệnh được khởi chạy làm trình chỉnh sửa văn bản;
  • $ BROWSER cung cấp cho bạn trình duyệt
  • $ PAGER cung cấp cho bạn trình nhắn tin (ví dụ: nhiều hơn hoặc ít hơn).

Tuy nhiên, điều này có giá trị đối với các phần mềm dòng lệnh, trong khi môi trường thường sử dụng các biến (nội bộ) của riêng mình.

Cũng trong python bạn có thể đọc các biến môi trường sử dụng os.getenv.

+0

vì vậy tôi nên tôi có thể (trong vỏ) echo $ EDITOR để xem nó là gì? Tôi vừa thử và nó chỉ cho tôi một dòng trống – sqram

+0

Thực tế là có. Định nghĩa của nó không bắt buộc. Tôi đoán trong trường hợp nó không có mặt, nó mặc định trên một số giá trị dựa trên distro. Tôi không biết làm thế nào để có được nó trong trường hợp này. – Dacav

3

tôi truy cập danh sách trong khi trước đây programatically một cách khá xấu xí và tôi chắc chắn không phải là cách tốt nhất của mình. Các tùy chọn được lưu trữ trong một tập tin gọi là defaults.list (tôi nghĩ đây thường là trường hợp). Các vị trí là ít chung tôi nghĩ rằng nó trong/usr/share/applications/trên hệ thống ubuntu của tôi mặc dù nó xuất hiện ở những nơi khác tôi nghĩ. Sau đó tôi xử lý nó như một tập tin văn bản.

1

này hoạt động trong ubuntu/gnome:

>>> query_lines = subprocess.check_output(['update-alternatives', 
              '--query', 
              'gnome-text-editor']).split('\n') 
>>> bestlist = filter(lambda l: 'Best' in l, query_lines) 
>>> bestlist[0].split()[1] 
'/usr/bin/gedit' 

Nếu không phải trên gnome, ít nhất bạn có thể nhận được các biên tập viên dòng lệnh:

>>> query_lines = subprocess.check_output(['update-alternatives', 
...          '--query', 
...          'editor']).split('\n') 
>>> bestlist = filter(lambda l: 'Best' in l, query_lines) 
>>> bestlist[0].split()[1] 
'/bin/nano' 
2

Trình tự giải quyết là $EDITOR ->editor - > một số danh sách các trình chỉnh sửa bảng điều khiển được xác định trước. Trên Debian/Ubuntu, sensible-editor (và sensible-browsersensible-pager) sẽ thực hiện tìm kiếm cho bạn, bao gồm xem xét các biến môi trường phù hợp. Các biến tương tự là $PAGER, $SHELL, $BROWSER. Để tìm kiếm liên kết tệp, bạn có thể sử dụng xdg-open.

1

Lấy gợi ý từ câu trả lời @ bowler, và hoàn toàn bash:

editor=$(grep "text/plain" -r -i -I /usr/share/applications/defaults.list | awk -F';' '{print $1}' | awk -F'.desktop' '{print $1}' | awk -F'=' '{print $2}') 
Các vấn đề liên quan