Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Strony: 1
Tak próbuje ogarnąć sobie typy MIME, by wszystkie programy bez względu na środowisko graficzne odpalały te aplikacje, które im się określi jako domyślne w pliku ~/.config/mimeapps.list . Mam porobione dowiązania z tych przestarzałych lokalizacji i z tych, które mają odpowiadać różnym środowiskom graficznym.
Weźmy sobie przykładowy film o linuxie pobrany w qbottorencie. Jeśli w okienku qbittorenta kliknę 2x na pliku linux.avi, to qbittorrent inicjuje xdg-open. Z kolei xdg-open powinien otworzyć to co jest określone w ~/.config/mimeapps.list .
Z testów wynika coś takiego:
$ xdg-mime query filetype linux.avi video/x-msvideo $ xdg-mime query default video/x-msvideo smplayer.desktop;
Zatem ten film, powinien się odpalić w smplayer, bo to jego plik jest ustawiony domyślnie. W SpaceFM wszystko działa tak jak powinno, natomiast w qbittorrent jak wywołam ten plik, to mi się on odpala w kodi. xD
Sprawdziłem jak wygląda ręczne odpalenie tego pliku przez xdg-open i faktycznie ten plik jest odpalany w kodi, a nie w smplayer, więc to nie jest wina qbittorrenta.
Poczytałem trochę i wychodzi na to, że problem tkwi w zmiennej DE. Standardowo ona nie jest ustawiona w openboxie. [url=https://wiki.archlinux.org/index.php/Environment_variables]Tu piszą[/url], że ta zmienna może powodować problemy z xdg-open oraz, że rozpoznawane są następujące wartości: gnome, kde, xfce, lxde oraz mate. Sprawdziłem jak się zachowa xdg-open na każdej z nich i wychodzi, że po ustawieniu tej zmiennej na xfce, film z linuxem odpalany jest za pomocą xdg-open w tej aplikacji co potrzeba, w oparciu o domyślny typ ustawiony w pliku ~/.config/mimeapps.list .
Pytanie, czy idzie jakoś inaczej ten xdg-open zmusić do współpracy, czy ta zmienna jest wymagana do poprawnego działania xdg-open i musi ona być obecna w środowisku?
Ostatnio edytowany przez morfik (2016-01-17 23:43:29)
Offline
O widzisz, ja mam durne Mate na strasznym Gentusiu, konfiguracje jeszcze ze starego Gnome-2.32, wszystko bryka, jak powinno.
Ostatnio edytowany przez Jacekalex (2016-01-17 21:49:42)
Offline
To zobacz, co wyleciało, może po nazwie dojdziesz.
Możesz też xdg-open strace'm potraktować pod kątem "No such file or directory".
Zależności toto zbyt wiele nie ma:
* dependency graph for x11-misc/xdg-utils-1.1.1 `-- x11-misc/xdg-utils-1.1.1 amd64 `-- app-text/xmlto-0.0.26-r1 (>=app-text/xmlto-0.0.26-r1) amd64 [text(+)] `-- sys-devel/automake-1.15 (>=sys-devel/automake-1.15) amd64 `-- sys-devel/autoconf-2.69 (>=sys-devel/autoconf-2.69) amd64 `-- sys-devel/libtool-2.4.6 (>=sys-devel/libtool-2.4) amd64 `-- dev-util/desktop-file-utils-0.22 (dev-util/desktop-file-utils) amd64 `-- x11-misc/shared-mime-info-1.4 (x11-misc/shared-mime-info) amd64 `-- x11-apps/xprop-1.2.2 (x11-apps/xprop) amd64 `-- x11-apps/xset-1.2.3 (x11-apps/xset) amd64 `-- dev-perl/File-MimeInfo-0.270.0 (dev-perl/File-MimeInfo) amd64
Ostatnio edytowany przez Jacekalex (2016-01-17 22:12:37)
Offline
W sumie, to ja z okazji nowego roku wgrałem świeżego sida. No i instalowałem go via debootstrap z apt.conf praktycznie ustawionym zaraz po zakończeniu instalacji tego minimalnego debiana, a tam były wyłączone zalecane i sugerowane pakiety. Także zainstalowało mi się ich mniej niż poprzednio, bo wtedy te ustawienia były aplikowane trochę później, xD A na strace mogę popatrzeć w sumie.
Offline
Minimalnego Debiana przez debootstrap?
Właśnie leci debootsrap Strecha u mnie, i minimalnie to on ciągnie jakiegoś boosta, vima, całkiem sporo tego, jak na miniaturkę.
Ciekawe tylko, czy w iptables znajdę cgroup, czy znowu będzie trzeba latki kombinować i kompilować dziada.
Niestety:
Can't find library for match `cgroup'
Ostatnio edytowany przez Jacekalex (2016-01-18 01:21:08)
Offline
Z analizy strace wyszło, że ten xdg-open to zwykły skrypt. xD Zajrzałem do niego i tam jest funkcja o bardzo wymownej nazwie detectDE() . Tam jest z kolei sprawdzana zmienna XDG_CURRENT_DESKTOP i na jej podstawie ustawiana zmienna DE. Później w oparciu o DE jest dobierane narzędzie. Jeśli nie ustawiono zmiennej DE, w wyniku braku jej w środowisku albo w wyniku braku XDG_CURRENT_DESKTOP , to wtedy jest seria fallbacków:
if [ x"$DE" = x"" ]; then # classic fallbacks if [ x"$KDE_FULL_SESSION" != x"" ]; then DE=kde; elif [ x"$GNOME_DESKTOP_SESSION_ID" != x"" ]; then DE=gnome; elif [ x"$MATE_DESKTOP_SESSION_ID" != x"" ]; then DE=mate; elif `dbus-send --print-reply --dest=org.freedesktop.DBus /org/freedesktop/DBus org.freedesktop.DBus.GetNameOwner string:org.gnome.SessionManager > /dev/null 2>&1` ; then DE=gnome; elif xprop -root _DT_SAVE_MODE 2> /dev/null | grep ' = \"xfce4\"$' >/dev/null 2>&1; then DE=xfce; elif xprop -root 2> /dev/null | grep -i '^xfce_desktop_window' >/dev/null 2>&1; then DE=xfce elif echo $DESKTOP | grep -q '^Enlightenment'; then DE=enlightenment; fi fi
I tu już widać, czemu ustawienie GNOME_DESKTOP_SESSION_ID wpływało na wyniki. xD Żadne z tych powyższych jednak nie aplikuje się do mojego środowiska. Dalsze fallbacki w skrypcie również nie pasują. Także wychodzi na to, że ten xdg-open nie jest w stanie ustalić środowiska i przechodzi do:
$ /usr/bin/file --brief --dereference --mime-type linux.avi video/x-msvideo
A następnie do:
$ /usr/bin/xdg-mime query default video/x-msvideo smplayer.desktop;
Więc czemu się kodi odpala? xD Przeglądając dalej ten cały strace, zauważyłem coś takiego:
49023 faccessat(AT_FDCWD, "/usr/share//applications//smplayer.desktop;", R_OK) = -1 ENOENT (No such file or directory)
Może i nie ma [b]/usr/share//applications//smplayer.desktop;[/b] ale jest [b]/usr/share//applications//smplayer.desktop[/b] . Skasowałem zatem w tym powyższym ten ostatni średnik i... zadziałało bez zmiennej DE. xD
Choć po tym co zobaczyłem w tym strace, to ustawie sobie te zmienną DE na xfce. Taki overhead tam jest w poszukiwaniu tej domyślnej aplikacji, że to głowa mała. xD Dla porównania, przy ustawionej zmiennej to smplayer jest wywoływany w 1604 linijce, a przy braku to doszedłem póki co do prawie 10k linii i jeszcze nic się nie dzieje. xD Ta zmienna definitywnie zostaje.
Tak na przyszłość, nie zostawiajcie ostatniego średnika w pliku ~/.config/mimeapps.list przynajmniej w sekcji z domyślnymi aplikacjami. Ciekawe czy to bug czy ficzer. :]
Właśnie leci debootsrap Strecha u mnie, i minimalnie to on ciągnie jakiegoś boosta, vima, całkiem sporo tego, jak na miniaturkę[/quote]
Vima? Ja to musiałem u siebie sam instalować. xD
Offline
Ja w ~/.config/mimeapps.list w sekcji [Default Applications] nie mam ani jednego średnika.
Za to w [Added Associations] wszystkie niepuste linie kończą się średnikami.
Ciekawe, dlaczego.
Ostatnio edytowany przez Jacekalex (2016-01-18 00:08:55)
Offline
Spacefm dodaje standardowo te średniki na końcu każdej pozycji w defaults jeśli za jego pomocą określa się domyślne aplikacje. Zgłosiłem to przed chwilą: https://github.com/IgnorantGuru/spacefm/issues/618
Offline
2573
Ostatnio edytowany przez uzytkownikubunt (2016-12-01 01:31:32)
Offline
U mnie działało dlatego:
echo $MATE_DESKTOP_SESSION_ID this-is-deprecated
W ~/.xinitrc dodałem:
elif [ -x /usr/bin/mate-session ]; then export DE="mate"; exec /usr/bin/ck-launch-session /usr/bin/dbus-launch --sh-syntax --exit-with-session /usr/bin/mate-session 2>/dev/null
Zobaczymy, czy to coś zmieni.
Offline
W sumie, to u ciebie aż takiego boosta przy odpalaniu domyślnych aplikacji raczej nie będzie, bo ty tą zmienną i tak miałeś ustawianą, tylko, że w 3 podejściu. U mnie ona w ogóle nie była ustawiana, a prób to tam było chyba paręnaście, z tym, że też robiło kilka dodatkowych obiegów z bliżej mi nie znanego powodu. xD
A jeszcze taka sprawa co do tych domyślnych typów. Jeśli ustawicie inną aplikację jako domyślą, to czy ona przepisuje tę, która już została ustawiona wcześniej w pliku ~/.config/mimeapps.list ? Bo w spacefm pod tym względem też coś jest nie tak.
Jeśli jest ustawiona domyślna aplikacja, przykładowo:
[Default Applications] ... video/x-msvideo=smplayer.desktop
Nie ma znaczenia czy tam będzie średnik czy też nie. Jeśli teraz spróbuję wybrać w spacefm inną aplikację i ustawić ją jako default, to ta powyższa linijka zmienia się na taką:
[Default Applications] ... video/x-msvideo=vlc.desktop;smplayer.desktop;
następne ustawienie domyślnej aplikacji daje:
[Default Applications] ... video/x-msvideo=mpv.desktop;vlc.desktop;smplayer.desktop;
Jak widać, teraz są trzy domyślne typy dla tej aplikacji. Oczywiście przy ustawionej zmiennej DE, to nie ma znaczenia i poprawnie jest wybierany mpv. Ten wpis z tymi trzema aplikacjami niekoniecznie musi być błędy, może jak nie ma tego pierwszego pliku, to system przejdzie do następnego, itd. Niemniej jednak, usunięcie z tej linijki tego ostatniego średnika, nie poprawia xdg-open i ten dalej wywołuje ten typ MIME w kodi.
Coś te narzędzia z xfce radzą sobie o wiele lepiej z przetwarzaniem tego pliku ~/.config/mimeapps.list niż ten xdg-open. xD
Offline
A kto Ciebie zmusza do SpaceFM?
Thunar gryzie?
Caja gryzie?
Chcesz walnięty SpaceFM, to Twój wybór, nie znam żadnego dobrego psychologa (którego mogę polecić) w Twojej okolicy. ;D
Ja bym na Twoim miejscu odpoczął od SpaceFm do czasu, aż poprawią tego babola, którego zgłosiłeś.
Pozdro
;-)
Offline
No bo ten spacefm jest zajebiście konfigurowalny. xD W sumie, to ten problem tylko tyczy się tego średnika w środowiskach bez zmiennej DE. Moje już ma i nie ma problemów. Tam pisali, że to ten xdg-open ssie i nie przestrzega specyfikacji i dlatego są problemy. xD Poza tym, to wszędzie działa ze średnikami.
Offline
Xdg-utils ssie? To są zwykłe skrypty, pewnie da się jakoś to poprawić,
żeby ignorowały średnik na końcu ścieżki.
Poza tym, skoro to ssie, i nie przestrzega specyfikacji, to ciekawe, która wersja SystemD to cudo zastąpi. :P
Ostatnio edytowany przez Jacekalex (2016-01-18 18:49:19)
Offline
Nie xdg-utils, tylko samo xdg-open. Poza tym, przecie każde środowisko ma swoje własne "xdg-open" i te potrafią se radzić jakoś. xD
Ostatnio edytowany przez morfik (2016-01-18 19:13:08)
Offline
Każde środowisko ma support do API XDG, to prawda.
Np w Xfce masz exo-open.
Offline
Strony: 1
Time (s) | Query |
---|---|
0.00009 | SET CHARSET latin2 |
0.00004 | SET NAMES latin2 |
0.00095 | SELECT u.*, g.*, o.logged FROM punbb_users AS u INNER JOIN punbb_groups AS g ON u.group_id=g.g_id LEFT JOIN punbb_online AS o ON o.ident='3.142.200.247' WHERE u.id=1 |
0.00076 | REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '3.142.200.247', 1732227527) |
0.00054 | SELECT * FROM punbb_online WHERE logged<1732227227 |
0.00037 | SELECT topic_id FROM punbb_posts WHERE id=295771 |
0.00007 | SELECT id FROM punbb_posts WHERE topic_id=28119 ORDER BY posted |
0.00073 | SELECT t.subject, t.closed, t.num_replies, t.sticky, f.id AS forum_id, f.forum_name, f.moderators, fp.post_replies, 0 FROM punbb_topics AS t INNER JOIN punbb_forums AS f ON f.id=t.forum_id LEFT JOIN punbb_forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=3) WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.id=28119 AND t.moved_to IS NULL |
0.00006 | SELECT search_for, replace_with FROM punbb_censoring |
0.00094 | SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.poster_email, p.message, p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online FROM punbb_posts AS p INNER JOIN punbb_users AS u ON u.id=p.poster_id INNER JOIN punbb_groups AS g ON g.g_id=u.group_id LEFT JOIN punbb_online AS o ON (o.user_id=u.id AND o.user_id!=1 AND o.idle=0) WHERE p.topic_id=28119 ORDER BY p.id LIMIT 0,25 |
0.00078 | UPDATE punbb_topics SET num_views=num_views+1 WHERE id=28119 |
Total query time: 0.00533 s |