xdg-open és az alias

Fórumok

Sziasztok! Debian+xfce alatt...

Van sok szépen paraméterezett alias-om. Hogyan lehet rávenni az xdg-open-t arra, hogy ha egy adott könyvtárban kiadom az xdg-open * parancsot, akkor az adott default app (be)paraméterezett alias-át hívja meg?

pl. a ~/.bashrc-ben van egy ilyenem: alias vlc="vlc --fullscreen --repeat --quiet --no-video-title-show --key-play-pause '5' --key-next '3' --key-prev '9' --key-faster '1' --key-slower '7'"
Ha vlc * a parancs, akkor a fenti paraméterek működnek. Ha viszont xdg-open *, akkor nem.

Átmeneti megoldásként az adott fájlra jobb-klikk és Megnyitás -> Egyéni parancs használata sorba bepastézva működik, de a fájlok változnak és nem akarnám/tudnám folyamat ezt eljátszani.

Bash script írásban sem vagyok jártas, de ha azzal meg lehetne oldani a fájltípus felismerést, majd annak az alias-szal való megnyitását, akkor az is jó lenne :)

Hozzászólások

Ez igy kozvetlenul nem megoldhato. Az a problema, hogy az aliasok csak a shellen belul elnek, az xdg-open viszont nem hiv vissza kozvetlenul a futo bash folyamatba, hogy azzal nyittassa meg a fajlokat, hanem o maga lovi fel azokat a programokat, amik hozza vannak kotve az adott fajlhoz, meghozza olyan parameterezessel, ahogy a program beregisztralta magat a megfelelo MIME tipushoz.

Ami megoldas lehet, az egy script irasa case meg for szerkezetekkel, viszont az messze nem lesz ennyire dinamikus, mint az xdg-open.


#!/bin/bash

# mivel scriptnel a bashrc nem kerul kozvetlen ertelmezesre, erdemesebb az aliasokat kulon pakolni

source ~/.bash_aliases 

for x in "$@" do
  t="$(file -i "${x}")"


  case "${t}" in
    video/*)
      vlc "${x}"
      ;;
    image/*)
      gqview "${x}"
      ;;
    *)
      xdg-open "${x}"
      ;;
  esac
done

--
Ki oda vágyik, hol száll a galamb, elszalasztja a kincset itt alant:


()=() 
('Y') Blog | @hron84
C . C Üzemeltető macik
()_()

Igen, ez igy megoldhato, az viszont, amit a kerdezo mondott, hogy hasznaljon aliasokat, az nem.

Amugy meg szerintem a desktop fajlt megirni meg kitesztelgetni sokkal nagyobb szivas, mint irni egy scriptet. Probaltam.

Szerintem egy scriptben ezek sokkal jobban egyben vannak, ha mar ilyesmit kell csinalni, akkor inkabb scriptet irok ra. Persze, ha az az igeny, hogy nautilusbol is ugyanilyen parameterekkel induljon el a vidi, az mar mas teszta...
--
Ki oda vágyik, hol száll a galamb, elszalasztja a kincset itt alant:


()=() 
('Y') Blog | @hron84
C . C Üzemeltető macik
()_()

Valo igaz, aliasokat nehezen lehet beleheggeszteni (bar az sem teljesen lehetetlen, csak gany). Cserebe az alapproblemat megoldja.

Es lehet scriptet irni, amit megfelelo nevre symlinkel az ember, es sajat neve + grep alias ~/.zshrc kombinacio alapjan mukodik. Az valahol feluton van a ketto kozott.

(Mondjuk szvsz egyszerubb .desktop filet irni, vagy az adott toolt beconfigolni, hogy az altalam kivant beallitasokkal induljon by default, mert akkor csak xdg-open -t kell megjegyezni.)

--
|8]

Megirni egyszeru a desktop file-t, azzal tenyleg nincsen gond. Hibakeresni, az a pocsek, ha valamiert megse ugy indul be a progi, es kinyomozni, hogy hol ment felre a regisztracio. Mondom, egyszer kiserleteztem ilyesmivel, es a vege az volt, hogy beleuntam keresni, epp miert nem akar jol mukodni a dolog, lett belole script. Jo dolog az xdg-open, de nekem nincs turelmem az ilyesmihez, pontosabban amikor lenne, akkor meg masvalamivel foglalkozok.
--
Ki oda vágyik, hol száll a galamb, elszalasztja a kincset itt alant:


()=() 
('Y') Blog | @hron84
C . C Üzemeltető macik
()_()

Nekem elsosorban az volt a bajom, hogy bemasoltam a desktop file-t a helyere, es nem tortent semmi. Vegul kiderult, hogy le kell futtatni az update-desktop-database vagy ilyesmi cuccot, mert a GNOME 2 (akkor meg az volt) nem mindig veszi fel az uj desktop fajlokat automatikusan, mert persze, hogy az xdg-open epp mit mi alapjan nyit meg, azt nem tudod vele lelogoltatni sehova. De ez relative sok man olvasgatasba telt. Most mar persze okosabb vagyok, csak egyszeruen akkor elment a kedvem az egesztol.
--
Ki oda vágyik, hol száll a galamb, elszalasztja a kincset itt alant:


()=() 
('Y') Blog | @hron84
C . C Üzemeltető macik
()_()
~/.local/share/applications/mimeapps.list

file-ba:


[Default Applications]
video/mpeg=vlc-custom.desktop

Es ugyanezen konyvtarba csinalsz egy

vlc-custom.desktop

filet:


[Desktop Entry]
Version=1.0
Terminal=no
Exec=/usr/bin/vlc --akarmi %2
Name=Custom VLC blabla
Icon=vlc

Elvileg, xdg-open forrasaba belekukkantva.

--
|8]