Mengatur berbagai aplikasi standar untuk Lingkungan Desktop yang berbeda

9

Saya menggunakan Ubuntu 12,04 dengan antarmuka Unity default. Saya menginstal kemudian desktop KDE, XFCE, LXDE, gnome-shell dan Cinnamon.

KDE hadir dengan aplikasi standar yang berbeda dari Unity, seperti

  • kwrite untuk mengedit teks,
  • konsole sebagai terminal virtual,
  • kfontview untuk melihat dan menginstal font,
  • dolphin sebagai browser File dll.

DE lainnya datang dengan beberapa aplikasi standar lainnya.

Masalah muncul ketika Anda ingin membuka file seperti file teks, yang dapat dibuka oleh geditdan kwrite, saya ingin menggunakan kwritepada KDE dan geditpada Unity atau Gnome. Tapi, tidak ada cara untuk mengatur seperti ini. Saya dapat mengatur aplikasi default untuk file teks dengan mengubah pengaturan masing-masing di KDE dan Unity, tetapi itu menjadi default untuk DE.

Sebagai contoh, Jika saya menetapkan kfontviewersebagai aplikasi tampilan font default di KDE, itu juga membuka font ketika saya di Unity atau Gnome dan sebaliknya. Ini merupakan masalah karena, memuat program DE lainnya membutuhkan waktu lebih lama daripada DE default untuk DE yang digunakan.

Pertanyaan saya adalah: Dapatkah saya menggunakan aplikasi standar yang berbeda untuk DE yang berbeda? Bagaimana?

Anwar
sumber

Jawaban:

5

Saya telah mengumpulkan solusi ini untuk menyelesaikan masalah Anda, dan mengujinya pada KDE dan XFCE dengan membuka file teks dan file font. Ini adalah solusi umum yang harus dapat diterapkan pada sejumlah lingkungan desktop dan tipe mime. Cara kerjanya adalah ada skrip python sederhana bernama custom-open yang akan membuka file menggunakan aplikasi yang berbeda untuk lingkungan desktop yang berbeda. Ini adalah langkah-langkah untuk menyiapkan solusi:

  1. simpan skrip buka-kustom di komputer Anda lebih disukai di jalur Anda tetapi tidak harus.
  2. simpan .custom-open.ini di direktori home Anda ~ / .custom-open.ini
  3. atur buka-kustom sebagai aplikasi default untuk semua jenis file yang ingin Anda tangani.

buka kustom

#!/usr/bin/env python
import traceback, sys, os, ConfigParser, os.path
from subprocess import Popen, check_output
from gtk import MessageDialog, MESSAGE_ERROR, BUTTONS_CLOSE

try:
    file, desktop = sys.argv[1], os.environ['DESKTOP_SESSION']
    mime = check_output(['file', '--mime-type', file]).strip().split(': ')[1]
    config = ConfigParser.RawConfigParser()
    config.read(os.path.expanduser('~/.custom-open.ini'))
    cmd = config.get(desktop, mime)
    Popen([cmd] + sys.argv[1:])
except:
    msg = "CUSTOM OPEN ERROR\n\n" + traceback.format_exc()
    MessageDialog(None, 0, MESSAGE_ERROR, BUTTONS_CLOSE, msg).run()

.custom-open.ini

[gnome]
text/plain = gedit
application/x-font-ttf = gnome-font-viewer

[xubuntu]
text/plain = leafpad
application/x-font-ttf = gnome-font-viewer

[kde-plasma]
text/plain = kate
application/x-font-ttf = kfontview

jadi yang hebat dari solusi ini adalah Anda dapat menambahkan sebanyak mungkin lingkungan desktop yang Anda inginkan dan sebanyak mungkin tipe mime yang Anda inginkan. untuk memeriksa nama apa yang harus Anda berikan untuk lingkungan desktop, jalankan perintah di bawah ini di terminal.

env | grep -i DESKTOP_SESSION

untuk memeriksa jenis mime yang tepat dari sebuah file, jalankan:

file --mime-type filename

DIedit: Kebutuhan akan tautan simbolis telah dihapus ini seharusnya membuatnya lebih mudah digunakan. Saya juga telah menambahkan penangan kesalahan grafis yang akan memunculkan peringatan jika terjadi kesalahan.

Marwan Alsabbagh
sumber
1
Terima kasih atas jawaban Anda. Saya mengikuti langkah Anda dan membuat semua skrip, tautan, dan file yang sesuai. Solusi Anda berfungsi sangat baik dari baris perintah dan berkinerja seperti yang diiklankan. Tetapi ketika saya mencoba untuk mengatur skrip (atau lebih tepatnya tautan simbolik) sebagai aplikasi default untuk membuka jenis file tertentu, itu gagal dan jatuh kembali ke default sekunder. Saya tidak tahu, apakah saya melakukan sesuatu yang salah.
Glutanimate pada
Inilah cara saya mendefinisikan skrip sebagai aplikasi default: 1.) membuat peluncur ( co.desktop) dengan Exec=/home/user/.scripts/Customization/Defaultapps/custom-open-textdi ~ / .local / share / aplikasi. 2.) Mengedit ./local/share/applications/mimeapps.listdan menambahkan asosiasi default berikut: text/plain=co.desktop. Temukan kesalahan dalam prosedur ini?
Glutanimate
1
ok coba versi baru, saya membuat beberapa peningkatan agar lebih mudah digunakan. Saya juga telah menambahkan penangan kesalahan grafis jadi sekarang harus muncul peringatan dengan pesan kesalahan. Coba lagi dan kirim pesan kesalahan dalam komentar jika masih tidak berhasil. Anda juga dapat menyebutkan versi Ubuntu apa dan lingkungan desktop mana yang Anda coba.
Marwan Alsabbagh
Ini berfungsi dan bekerja dengan sangat fantastis (menggunakan LXDE / Unity)! Solusi Anda layak setiap poin terakhir dari karunia ini. Terima kasih banyak telah meluangkan waktu untuk melakukan ini. (PS: Saya masih berpikir fungsi seperti ini seharusnya datang dengan Ubuntu secara default. DE-hopping mungkin bukan praktik populer tetapi cukup umum untuk menjamin solusi resmi.)
Glutanimate
1
Maaf, tapi saya bukan OP, saya hanya mengatur hadiahnya. @Olive Twist harus menandai pertanyaannya sendiri sebagai dijawab.
Glutanimate
2

Jika Anda tidak menemukan cara "benar" untuk melakukannya, Anda dapat menggunakan metode brute force seperti:

  1. Tetapkan semua default dalam satu lingkungan desktop
  2. Lakukan sesuatu seperti cd $HOME;ls -Rlrt | lessuntuk mengetahui file apa yang baru saja diperbarui - yaitu di mana pilihan itu disimpan
  3. Buat salinan terpisah dari file-file itu untuk setiap lingkungan desktop (didukung).
  4. Ulangi untuk setiap lingkungan desktop
  5. Salin set yang sesuai ke tempatnya tepat sebelum beralih ke lingkungan desktop itu (mungkin dengan keluar dan masuk kembali dan memilih lingkungan desktop baru).

Mudah-mudahan, ada cara untuk mengubah lingkungan desktop dari skrip shell dengan opsi memberi tahu lingkungan desktop dari mana mendapatkan file konfigurasi itu. Itu mungkin lebih bersih daripada memindahkan file sepanjang waktu, tapi saya belum meneliti apakah atau bagaimana cara kerjanya.

Solusi lain yang jauh lebih sederhana, tetapi tidak persis seperti yang Anda minta, adalah:

  1. Buat akun pengguna terpisah untuk setiap lingkungan desktop
  2. Buat grup baru untuk pengguna ini
  3. Tambahkan semua pengguna ini ke grup baru
  4. Buat file data umum apa saja yang perlu Anda akses dari semua pengguna ini -rwxrwxr-x ( chmod 775 list-of-files-and-directories). Dengan cara itu Anda tidak akan mendapatkan kesalahan izin mencoba menulis ke file yang lain "pengguna" Anda menulis terlebih dahulu.

    • Jika Anda ingin beberapa file sama di semua pengguna ini, Anda dapat membuatnya dalam satu pengguna dan menghubungkannya dengan yang lainnya. Ini seharusnya bekerja, tetapi Anda harus ingat bahwa itu diatur seperti itu ketika Anda mengubah salah satunya. Misalnya, jika Anda mengedit salah satunya dan editor Anda membuat file cadangan, file cadangan itu hanya akan disimpan di tempat Anda mengeditnya, bukan di semua akun pengguna lain.
Joe
sumber
Anda mungkin mencatat di mana per file asosiasi pengguna disimpan~/.local/share/mime/
RobotHumans