Kirjoittaja Aihe: Ohjelman liittäminen tiedostotyyppiin [Ratkaistu kahdesti]  (Luettu 3982 kertaa)

AimoE

  • Käyttäjä
  • Viestejä: 2782
    • Profiili
Olen nyt parin vuoden aikana ehtinyt käydä läpi aika joukon keinoja joilla ohjelma liitetään tiedostotyyppiin, mutta vieläkin nautilus käyttäytyy asian suhteen täysin arvaamattomasti. Olen tutkinut mm. ohjelmat select-editor, update-alternatives, galternatives, mutta ainoa joka jotenkin on toiminut on se että muokkaan tiedostoa ~/.config/mimeapps.list, joko suoraan editorilla tai tiedoston ominaisuuksia muokkaamalla nautiluksen kautta. Mutta vaikka kuinka olen tehnyt asetukset oikein, niin silti nautilus käyttäytyy eri tavalla eri tiedostojen kanssa, enkä keksi mistä ero johtuu.

Lähinnä kyse on shellscript-tyyppisistä tiedostoista, siis tekstitiedostoista joiden alussa on rivi "#!/bin/sh" tai "#!/bin/bash" tms. Olen asettanut niiden oletusohjelmaksi Emacs GUI:n. Kun   nautilus-ikkunasssa valitsen jonkun tiedoston ja avaan kontekstivalikon hiiren kakkosnäppäimellä, ylimpänä näkyy joskus "Suorita" ja joskus "GNU Emacs24 (GUI)", ihan tiedoston nimestä ja shellistä riippumatta. Ei mitään logiikkaa siinä kumman nautilus valitsee. Kontekstivalikon alavalikossa "Avaa sovelluksella" ei koskaan ole valittavana Emacs GUI, vaan aina on mentävä vaihtoehdon "Muu sovellus..." kautta. En yhtään ymmärrä miksi Emacs GUI on niin piilossa vaikka olen asettanut sen oletukseksi shellscripteille mimeapps.list -tiedostossa, ja varsinkaan en ymmärrä miksi se näkyy joillekin tiedostoille, mutta useimmille ei. Siinä ei ole mitään logiikkaa, ei yhtikäs mitään.
« Viimeksi muokattu: 30.05.17 - klo:15.03 kirjoittanut AimoE »

nm

  • Käyttäjä
  • Viestejä: 16428
    • Profiili
Vs: Ohjelman liittäminen tiedostotyyppiin
« Vastaus #1 : 29.05.17 - klo:17.35 »
Toimiiko se aina samalla tavalla tietylle tiedostolle, vai vaihtuuko toiminta satunnaisesti silloinkin? Jos se toimii aina samalla tavalla yksittäiselle tiedostolle, eri tiedostojen välillä on todennäköisesti jokin oikea ero. Onko kaikki kokeilemasi tiedostot asetettu suoritettaviksi (executable-bitti päälle)?

Missä asennossa sinulla on Nautiluksen asetus Muokkaa -> Asetukset -> Toiminta -> Suoritettavat tekstitiedostot? Miten homma toimii, jos valitset tuolla asetuksissa "Kysy joka kerta" ja avaat tiedostot kaksoisklikkaamalla?

AimoE

  • Käyttäjä
  • Viestejä: 2782
    • Profiili
Vs: Ohjelman liittäminen tiedostotyyppiin
« Vastaus #2 : 29.05.17 - klo:18.29 »
Toimiiko se aina samalla tavalla tietylle tiedostolle, vai vaihtuuko toiminta satunnaisesti silloinkin? Jos se toimii aina samalla tavalla yksittäiselle tiedostolle, eri tiedostojen välillä on todennäköisesti jokin oikea ero.

Samalle tiedostolle aina samalla tavalla.

Onko kaikki kokeilemasi tiedostot asetettu suoritettaviksi (executable-bitti päälle)?

Olin aikeissa vastata että kaikilla on tasan samat bitit, mutta kun tarkistin niin tästäpä löytyi selitys: Emacs näkyy niille tiedostoille joilla ei ole x-bittiä omistajalle. Voi räkä, eihän x-bittiä voi pois ottaa vaan siksi että saisi editorin helpommin auki.

Missä asennossa sinulla on Nautiluksen asetus Muokkaa -> Asetukset -> Toiminta -> Suoritettavat tekstitiedostot?
Miten homma toimii, jos valitset tuolla asetuksissa "Kysy joka kerta" ja avaat tiedostot kaksoisklikkaamalla?

Muuttuu siten että kontekstivalikosta katoaa suoritus, ja alavalikko "Avaa sovelluksella" pysyy samana, eli sieltä pitää taaskin valita "Muu sovellus..." ennen kuin löytää Emacsin. Gedit siitä kyllä löytyisi, ja LibreOffice Writer, pöh.

AimoE

  • Käyttäjä
  • Viestejä: 2782
    • Profiili
Vs: Ohjelman liittäminen tiedostotyyppiin
« Vastaus #3 : 29.05.17 - klo:18.33 »
Kokeilin miten käy jos siirttä x-bitin omistajalta ryhmälle (ryhmässähän ei ole muita jäseniä), ja sehän toimii, nyt näkyy editori suoraan kontekstivalikossa. Aika eirkoinen ratkaisu, mutta toimiipahan nyt tässä tapauksessa.

retu

  • Käyttäjä
  • Viestejä: 949
    • Profiili
Vs: Ohjelman liittäminen tiedostotyyppiin [Ratkaistu]
« Vastaus #4 : 29.05.17 - klo:19.32 »
Ootko tehnyt käynnistimen sille emacsille? Komentoriviohjelmille ei sitä yleensä ole, mutta ainahan sen voi tehdä (.desktop tiedosto). Vaikuttaa siis siihen miksi emacs ei näy valikoissa, jossa esimerkiksi gedit näkyy.

AimoE

  • Käyttäjä
  • Viestejä: 2782
    • Profiili
Vs: Ohjelman liittäminen tiedostotyyppiin [Ratkaistu]
« Vastaus #5 : 29.05.17 - klo:20.04 »
Ootko tehnyt käynnistimen sille emacsille? Komentoriviohjelmille ei sitä yleensä ole, mutta ainahan sen voi tehdä (.desktop tiedosto). Vaikuttaa siis siihen miksi emacs ei näy valikoissa, jossa esimerkiksi gedit näkyy.

Käytän sitä käynnistintä jonka asennus teki. Ei se siitä kiinni ole.

Tällä välin kävi ilmi että x-bitin siirto omistajalta ryhmälle estää sellaisten komentotiedostojen suorituksne joita suyoritan itse tekemistäni käynnistimistä, joten niille tiedostoille jouduin palauttamaan x-bitin omistajalle. Ikävää, mutta nyt sentään tiedän mistä on kyse.

nm

  • Käyttäjä
  • Viestejä: 16428
    • Profiili
Vs: Ohjelman liittäminen tiedostotyyppiin [Ratkaistu]
« Vastaus #6 : 29.05.17 - klo:21.24 »
Ootko tehnyt käynnistimen sille emacsille? Komentoriviohjelmille ei sitä yleensä ole, mutta ainahan sen voi tehdä (.desktop tiedosto). Vaikuttaa siis siihen miksi emacs ei näy valikoissa, jossa esimerkiksi gedit näkyy.

Käytän sitä käynnistintä jonka asennus teki. Ei se siitä kiinni ole.

Voi olla, ettei siihen ole määritelty kaikkia samoja tiedostotyyppejä tai muita ominaisuuksia kuin vaikkapa Geditin käynnistimeen. Kannattaa vertailla ohjelmien desktop-tiedostoja.

AimoE

  • Käyttäjä
  • Viestejä: 2782
    • Profiili
Vs: Ohjelman liittäminen tiedostotyyppiin [Ratkaistu]
« Vastaus #7 : 29.05.17 - klo:22.04 »
Voi olla, ettei siihen ole määritelty kaikkia samoja tiedostotyyppejä tai muita ominaisuuksia kuin vaikkapa Geditin käynnistimeen. Kannattaa vertailla ohjelmien desktop-tiedostoja.

Kerro nyt millä tavalla ne tiedostot ovi olla eri tyyppiä? Minä en löydä niistä mitään eroa, tai siis se ainoa ero on ono´ko ekalla rivillä /bin/sh vai /bin/bash, mutta sillä ekalla rivillä ei ole merkitystä vaan pelkästään sillä x-bitillä siihen minkä operaation nautilus tarjoaa oletuksena.

Tieodstotyyppien liitoksen editoriin olen määritellyt mimeapps.list -tiedostossa kuten kerroin ekassa viestissäni.

nm

  • Käyttäjä
  • Viestejä: 16428
    • Profiili
Vs: Ohjelman liittäminen tiedostotyyppiin [Ratkaistu]
« Vastaus #8 : 29.05.17 - klo:22.13 »
Voi olla, ettei siihen ole määritelty kaikkia samoja tiedostotyyppejä tai muita ominaisuuksia kuin vaikkapa Geditin käynnistimeen. Kannattaa vertailla ohjelmien desktop-tiedostoja.

Kerro nyt millä tavalla ne tiedostot ovi olla eri tyyppiä? Minä en löydä niistä mitään eroa, tai siis se ainoa ero on ono´ko ekalla rivillä /bin/sh vai /bin/bash, mutta sillä ekalla rivillä ei ole merkitystä vaan pelkästään sillä x-bitillä siihen minkä operaation nautilus tarjoaa oletuksena.

Tieodstotyyppien liitoksen editoriin olen määritellyt mimeapps.list -tiedostossa kuten kerroin ekassa viestissäni.

Tuossa yllä puhuttiin Emacsin ja Geditin desktop-tiedostojen eroista, jotka vaikuttavat siihen mitä ohjelmia Nautilus tarjoaa valikoissa. Mimeapps.list ei ole ainoa lähde, jonka perusteella Nautilus tekee noita valintoja.


Lisäys: Ubuntu 14.04:ssä tuo toimii kyllä ihan siedettävästi, ja luulisin että sama pätee 16.04:ssä:

Jos valitsen haluamani editorin Nautiluksen kautta oletussovellukseksi suoritettaville skripteille (hiiren oikea tiedoston päällä, Ominaisuudet -> Avaa sovelluksella)  ja asetan Nautiluksessa Muokkaa -> Asetukset -> Toiminta -> Suoritettavat tekstitiedostot: Kysy joka kerta, Nautilus kysyy suoritettavaa sh-skriptiä kaksoisklikatessa, suoritetaanko se vai näytetäänkö. Jos valitsen Näytä, tiedosto avautuu aiemmin asettamaani oletuseditoriin. Kontekstivalikon Avaa sovelluksella-listassa ei kuitenkaan näy kyseistä editoria, koska se on oletussovellus. Tiedoston saa siis  avautumaan oletuseditoriin vain Avaa-toiminnon kautta. Jos haluaisin oman editorini sinne Avaa sovelluksella -valikkoon, valitsisin jonkun muun editorin oletusvaihtoehdoksi.

Sama pätee silloin kun Nautilus on asetettu suorittamaan suoritettavat tiedostot avattaessa. Silloin tiedoston saa auki oletuseditoriin vain kontekstivalikon valinnalla Avaa sovelluksella -> Muu sovellus... Helpompaa siis jättää vaikka gedit oletukseksi, jolloin kaikki muut text/plain-mimetyypille asetetut ohjelmat näkyvät suoraan Avaa sovelluksella -valikossa.
« Viimeksi muokattu: 29.05.17 - klo:23.16 kirjoittanut nm »

AimoE

  • Käyttäjä
  • Viestejä: 2782
    • Profiili
Vs: Ohjelman liittäminen tiedostotyyppiin [Ratkaistu]
« Vastaus #9 : 30.05.17 - klo:08.49 »
Tuossa yllä puhuttiin Emacsin ja Geditin desktop-tiedostojen eroista, jotka vaikuttavat siihen mitä ohjelmia Nautilus tarjoaa valikoissa. Mimeapps.list ei ole ainoa lähde, jonka perusteella Nautilus tekee noita valintoja.

En löydä käynnistimistä selitystä. Meinasin kopioida sisällöt tähän, mutta päivityksesi tekee sen turhaksi. Siellä oli kyllä sellainen ero että emacs24.desktop luettelee mimetypejä, mutta sen rivin uloskommentointi ei vaikuta shellscriptien avaamiseen nautiluksessa mitenkään.

Mukana on myös lisämetku: jos asetan "GNU Emacs 24 (GUI)":n oletuseditoriksi, niin "Avaa sovelluksella" -valikkoon ilmaantuu "GNU Emacs 24 (Terminal)", sen sijaan että siellä olisi "GNU Emacs 24 (GUI)". Siksi olen lisännyt emacs24-term.desktop:n tiedoston ~/.config/mimeapps.list [Removed Associations] -listaan kaikille ristiriidassa oleville tyypeille, mutta se ei tunnu riittävän. Se vain hävittää väärän emacsin "Avaa sovelluksella"-valikosta, mutta ei tuo tilalle oikeata. Raivostuttavaa.

Jos valitsen haluamani editorin Nautiluksen kautta oletussovellukseksi suoritettaville skripteille (hiiren oikea tiedoston päällä, Ominaisuudet -> Avaa sovelluksella)  ja asetan Nautiluksessa Muokkaa -> Asetukset -> Toiminta -> Suoritettavat tekstitiedostot: Kysy joka kerta, Nautilus kysyy suoritettavaa sh-skriptiä kaksoisklikatessa, suoritetaanko se vai näytetäänkö. Jos valitsen Näytä, tiedosto avautuu aiemmin asettamaani oletuseditoriin. Kontekstivalikon Avaa sovelluksella-listassa ei kuitenkaan näy kyseistä editoria, koska se on oletussovellus. Tiedoston saa siis  avautumaan oletuseditoriin vain Avaa-toiminnon kautta. Jos haluaisin oman editorini sinne Avaa sovelluksella -valikkoon, valitsisin jonkun muun editorin oletusvaihtoehdoksi.

Sama pätee silloin kun Nautilus on asetettu suorittamaan suoritettavat tiedostot avattaessa. Silloin tiedoston saa auki oletuseditoriin vain kontekstivalikon valinnalla Avaa sovelluksella -> Muu sovellus... Helpompaa siis jättää vaikka gedit oletukseksi, jolloin kaikki muut text/plain-mimetyypille asetetut ohjelmat näkyvät suoraan Avaa sovelluksella -valikossa.

No tässäpä tämä. Kun palautan geditin oletuseditoriksi, saan emacsin "Avaa sovelluksella" -valikkoon. Sen terminal-versio pitää edelleen filtteröidä pois. Jonkin aikaa näyttää hyvältä. Mutta sitten tulee vastaan tiedosto, esim. .bashrc, jolle joudun valitsemaan ohjelman "Muu sovellus"-valikosta, ja sen jälkeen emacs gui taas puuttuu suoritettavien tiedostojen "Avaa sovelluksella" -valikosta, koska emacs guista on taas tullut shellscript-tiedostojen oletus.  Siis että voi olla raivostuttavaa. Tässä vaiheessa ei lohduta edes se että tiedänpähän nyt mistä on kyse. Jäljelle jää siis vain se vaihtoehto että nautilus kysyy joka kerta mitä tehdään. Arrgh.

Lisäys: Vika on siis siinä(kin) että mimetype "application/x-shellscript" sisältää liian monia erilaisia tapauksia. Ei taida olla mahdollista määritellä omia luokkia niin että ne eivät jää olemassa olevien varjoon?
« Viimeksi muokattu: 30.05.17 - klo:08.54 kirjoittanut AimoE »

nm

  • Käyttäjä
  • Viestejä: 16428
    • Profiili
Vs: Ohjelman liittäminen tiedostotyyppiin [Ratkaistu]
« Vastaus #10 : 30.05.17 - klo:14.50 »
No tässäpä tämä. Kun palautan geditin oletuseditoriksi, saan emacsin "Avaa sovelluksella" -valikkoon. Sen terminal-versio pitää edelleen filtteröidä pois. Jonkin aikaa näyttää hyvältä. Mutta sitten tulee vastaan tiedosto, esim. .bashrc, jolle joudun valitsemaan ohjelman "Muu sovellus"-valikosta, ja sen jälkeen emacs gui taas puuttuu suoritettavien tiedostojen "Avaa sovelluksella" -valikosta, koska emacs guista on taas tullut shellscript-tiedostojen oletus.

Minulla nuo oletukset eivät muutu, kun käytän "Muu sovellus" -toimintoa, mutta kenties tässä on joku ero 14.04:n ja 16.04:n Nautiluksen välillä.

.bashrc ei ole suoritettava skripti, eli sen tiedostotyyppi on text/plain. Riittää, että määrittelet haluamasi oletussovelluksen (esim. gedit) sekä tyypille application/x-shellscript että text/plain, niin Emacs näkyy molemmille Avaa sovelluksella -valikossa.

AimoE

  • Käyttäjä
  • Viestejä: 2782
    • Profiili
Vs: Ohjelman liittäminen tiedostotyyppiin [Ratkaistu]
« Vastaus #11 : 30.05.17 - klo:15.02 »
Asensin ohjelma nautilus-actions ja lisäsin sen avulla Emacsin kontekstivalikkoon kaikille tiedostoille ja kaikille kansioille. Siis kontekstivalikossa on nyt sekä oletus (ylimpänä) että sen lisäksi Emacs (alempana valikossa). Tämä on minulle kaikkein paras ratkaisu.