Skip navigation.

exploreopera

| Help

Sign up | Help

Romhacker's Guide to the Galaxy

Życie, wszechświat i cała reszta ;)

Posts tagged with "sztuczki"

KDE, HAL i eject

, , , ...

Po ostatniej aktualizacji udeva, którą zrobiłem przy okazji migracji na OpenRC, zauważyłem w KDE jeden niepokojący objaw. Po kliknięciu prawym przyciskiem na ikonie zamontowanego nośnika i wybraniu "Usuń bezpiecznie" zaczął pojawiać się komunikat, że owszem nośnik odmontowano, ale nie można go wysunąć. Zdziwienie było o tyle większe, że raz już zwalczyłem ten błąd (wtedy pomogło dodanie użytkownika do grupy disk). By oszczędzić drapania się po głowie osobom, które znalazły się w tym samym położeniu, zdradzę jak udało mi się tę wredną pluskwę ubić. Zasadniczo istnieją cztery sposoby, by to zrobić (osobiście polecam ostatni):

1) Patch na kdeeject. Nakładamy łatkę i KDE zaczyna używać eventów HAL do wysuwania zamiast komendy eject. Aktualnie używam, działa cudownie.

2) Zmiana parametru w media_safelyremove.desktop. Po tej zmianie KDE zamiast próbować wysunąć nośnik tylko go odmontuje.

3) Innym, ale niezbyt bezpiecznym rozwiązaniem jest ustawienie suid root dla /usr/bin/eject:
chmod u+s /usr/bin/eject


4) Chyba najbardziej eleganckie rozwiązanie. Tworzymy plik /etc/udev/rules.d/51-local.rules i wklejamy tam taką regułkę:
ACTION=="add", SUBSYSTEM=="block", KERNEL=="sd[a-z]*", ATTRS{removable}=="1", MODE="0660", GROUP="plugdev"


A skoro już jesteśmy przy temacie KDE, HAL i ejecta, pozwolę sobie wspomnieć o kolejnym bugu, który mnie irytuje, tym razem od nieco dłuższego czasu. Przycisk eject na napędzie dvd wysuwa zamontowaną płytę dopiero po drugim naciśnięciu. Na domiar złego powoduje to restart kded i tracę skróty klawiszowe, co zmusza mnie do uruchomienia khotkeys. Niezbyt fajnie, prawda? Co ciekawe winne okazały się... wpisy od udziałów NFS w fstab. Wygląda na to, że backend HAL w KDE nie przepada za nazwami z dwukropkami. Sytuację rzekomo poprawia ten patch. Rzekomo, bo u mnie nie zauważyłem zmian. Może do działania wymaga jeszcze jakiejś łatki. W każdym razie, wróble ćwierkają, że w KDE 3.5.9 ten bug został na dobre ubity. Czekam więc na odmaskowanie tej wersji. Tymczasem po prostu zakomentowałem odpowiednie wpisy w fstabie, bo z rzeczonych udziałów korzystam raczej sporadycznie. Nie jest to jednak zbyt ładne rozwiązanie.

EDIT: Dodałem dwa inne sposoby, w tym regułkę udeva.

[HOWTO] Zmusić net.ppp0 do czekania na synchronizację

, ,

Mój Sagem F@st 800 to bardzo fajny modem ADSL i działa bez problemów (sterownik w kernelu), ale czasem bywa trochę ospały, jeśli chodzi o synchronizację. Przełączenie na bliższą centralę znacznie pomogło w tym względzie, ale nadal zdarza się czasem, że net.ppp0 startuje zanim modem się zsynchronizuje. Pod OpenRC z GIT problem przybrał na sile ze względu na szybszy start systemu. Zakasałem więc rękawy i postanowiłem usunąć problem. W ten sposób powstał skrypt eagle-waitforsync. W rzeczywistości to znacznie okrojony i troszkę zmodyfikowany skrypt eagle-stats, który kiedyś zdobyłem na forum Gentoo (nie pomnę dokładnie gdzie). Jak to działa? Skrypt sprawdza czy stan modemu to "operational". Jeśli nie, odczekuje 2 sekundy i próbuje dalej. I tak aż do skutku. Gdy znajdzie to, czego szukał, kończy działanie. Niestety, rozwiązanie to opóźnia też start systemu. Na razie nie udało mi się tego zwalczyć w sensowny sposób.

Opis instalacji:
1) Wrzucamy skrypt do dowolnego katalogu w $PATH (najlepiej /usr/local/bin)
2) Do /etc/conf.d/net dopisujemy:
function preup() {
    if [ "${IFACE}" = "ppp0" ] ; then
        eagle-waitforsync
        return 0
    fi
}

Uwagi:
Skrypt działa tylko z modemami obsługiwanymi przez ueagle-atm. Nie sprawdzałem żadnych dziwnych konfiguracji (np. kilka modemów). U mnie działa.

EDIT: Jednak parę usterek wyszło w praniu, więc poprawiłem opis. Zaktualizowałem też skrypt. Poprzedni od razu kończył pracę, jeśli ueagle-atm nie zdążył jeszcze utworzyć swojego katalogu w /sys. My bad.

Przypadkowe wynurzenia czyli uwag kilka

, , , ...

Ostatnio zebrało mi się parę ciekawych obserwacji, więc postanowiłem je przelać na "papier", zanim wylecą mi z głowy. Z góry przepraszam za mocno eklektyczny post. W każdym razie, zaczynamy!

XFCE4 i przycisk Eject
Ostatnio na jednym z komputerów chciałem wyjąć płytę z napędu. Naciskam więc bez zastanowienia Eject na napędzie, myśląc, że hal zajmie się resztą. Przy tej okazji odkryłem buga w XFCE4: zamiast płytą zostałem poczęstowany śliczny errorem. Na szczęście nie jestem sam. Pomógł ten patch dla exo.

Sound-juicer i zgrywanie do mp3
Żeby za pomocą Sound-juicera zgrywać utwory do mp3, należy posłużyć się nieco niekonwencjonalnymi środkami. Najpierw merdżujemy gst-plugins-lame czyli wtyczkę kompresora mp3 dla Gstreamera. Po tym zabiegu nie pojawia się jednak żadna nowa opcja w ustawieniach programu. Na szczęście z pomocą przychodzi gconf-editor, którym wystarczy zmienić wartość klucza /apps/sound-juicer/audio_profile na "mp3". No, niby już działa, ale pozostaje jeden problem - wyjściowe empetrójki nie są odpowiednio otagowane. Problem ten rozwiązujemy instalując gst-plugins-taglib. Case closed :yes:

Gthumb i data w ścieżce docelowej
Gthumb nie jest złym programem, jeśli chcemy pod GNOME albo XFCE szybko zaimportować zdjęcia. Wprawdzie wygodniej byłoby przestawić aparat w tryb USB Storage i skopiować pliki (przynajmniej mi), ale niektóre nowsze aparaty mają już tylko tryb PTP. W Gthumbie irytowała mnie w sumie tylko jedna rzecz (przyznaję, nie korzystałem z niego długo) - jeśli nie podamy nazwy albumu przy importowaniu, program wstawia w to miejsce datę i do takiego podkatalogu lądują zdjęcia. Nie przeczę, czasem może się to okazać przydatne. Mnie akurat denerwowało. Lubię mieć zdjęcia w jednym miejscu, w katalogu, który podałem. Skleciłem więc na szybko tę łatkę. Chyba nawet działa :smile:

Pimp my MC

,

Midnight Commander to bez wątpienia jedno z największych osiągnięć ludzkości. W życiu nie spotkałem się z przyjaźniejszym menedżerem plików pod konsolę. A przy odrobinie wysiłku można uczynić pracę z nim jeszcze przyjemniejszą. Chodzi mi w tym momencie o menu użytkownika (dostępne pod F2). Ostatnio postanowiłem zrobić tam generalne porządki i dodać parę nowych komend.

Oto co ciekawsze rzeczy z mojego ~/.mc/menu:
+ f \.ebuild & ! t t
m       Generate Manifest for ebuild
ebuild "%f" manifest

+ f \.ebuild & t t
M       Generate Manifests for selected ebuilds
set %t
while [ -n "$1" ]; do
  ebuild "$1" manifest
  shift
done

+ t r & ! t t
d       Diff against file of same name in other directory
        if [ "%d" = "%D" ]; then
          echo "The two directores must be different"
          exit 1
        fi
        if [ -f %D/%f ]; then        # if two of them, then
          diff -up %f %D/%f | sed -e 's/\(^-.*\)/\x1b[1;31m\1\x1b[0m/g' \
                                  -e 's/\(^\+.*\)/\x1b[1;32m\1\x1b[0m/g' \
                                  -e 's/\(^@.*\)/\x1b[36m\1\x1b[0m/g' | less -R
        else
          echo %f: No copy in %D/%f
        fi

D       Diff current directory against other directory
        if [ "%d" = "%D" ]; then
          echo "The two directores must be different"
          exit 1
        fi
        diff -up %d %D | sed -e 's/\(^-.*\)/\x1b[1;31m\1\x1b[0m/g' \
                             -e 's/\(^\+.*\)/\x1b[1;32m\1\x1b[0m/g' \
                             -e 's/\(^@.*\)/\x1b[36m\1\x1b[0m/g' | less -R
        fi

+ ! t t
g       Edit file with GVim
gvim "%f"

+ t t
g       Edit files with GVim
set %t; CMD=%{Enter command}
while [ -n "$1" ]; do
  $CMD "$1"
  shift
done


W skrócie: generowanie Manifestu dla plików .ebuild, porównywanie pliku/katalogu między panelami i możliwość odpalenia dowolnego pliku GVimem. Osobiście uważam te dodatki za bardzo przydatne. Odkąd je dodałem, zdążyły mi się już wiele razy przydać. Aż dziw bierze, że wcześniej nie chciało mi się tego zrobić :D

Gwoli ścisłości, przepis na diffa jest wzięty stąd. Tutaj jedna uwaga - domyślnie klawisze od diffa (d i D) pokrywają się z innymi funkcjami. Rozwiązaniem jest zmiana skrótów lub wywalenie rzeczonych funkcji (opisane jako "Delete file if a copy exists in the other directory." i "Delete tagged files if a copy exists in the other directory.") z konfiguracji menu.

Kilka sztuczek pod XFCE4.4

,

W ramach rozrywki wywalić na pewnym stareńkim laptopie Gnome i wstawić w to miejsce coś lżejszego i szybszego. Wybór padł na XFCE4.4, bo słyszałem o nim wiele dobrego. No więc postawiłem to to i jestem pozytywnie zaskoczony. Kiedyś XFCE było środowiskiem dość ascetycznym i niezbyt ładnym. Na szczęście sporo się w tym względzie poprawiło od tamtego czasu. Jest nawet porządnie działająca obsługa hal. Parę rzeczy oczywiście brakowało, ale udało się je w ten czy inny sposób dodać:

Autologin bez menedżera logowania
Skoro mamy już lekkie środowisko graficzne, należałoby pozbyć się zbędnego balastu w postaci gdm. Oto gotowy przepis:

1) Najpierw instalujemy mały programik o wdzięcznej nazwie mingetty:
emerge mingetty

2) Otwieramy /etc/inittab ulubionym edytorem. Znajdujemy linię:
c2:2345:respawn:/sbin/agetty 38400 tty2 linux

i zastępujemy ją czymś takim:
c2:2345:respawn:/sbin/mingetty --autologin nazwauzytkownika tty2

3) Na koniec umieszczamy w .bash_profile (w katalogu domowym użytkownika) taki wpis:
if [ $(tty) == /dev/tty2 ]; then 
  startxfce4 >dev/null 2>/dev/null & 
fi

Minusem tej metody jest to, że autologin następuje dopiero po załadowaniu wszystkich usług. Na razie nie znalazłem obejścia.

Przełączanie układów klawiatury
XFCE ma owszem aplet do przełączania się między różnymi układami klawiatury, ale nie można spod niego przypisać skrótu klawiszowego do zmiany klawiatury ani dodać nowych układów. Na szczęście oba problemy załatwia taki wpis w xorg.conf (w sekcji od klawiatury):
Option "XkbLayout" "pl,de"
Option "XkbOptions" "grp:ctrl_shift_toggle"

W podanym przykładzie mamy dwa układy: polski i niemiecki, a pod przełączania służą Ctrl i Shift.

Wygodne ustawianie tapet

1) Wchodzimy do ustawień pulpitu i klikamy Nowa lista. By dopełnić formalności dodajemy jakąś tapetę. W porządku, lista została utworzona.
2) Do /usr/local/bin/setwallpaper wrzucamy takie coś:
#!/bin/sh
sed -i -e "s:^/.*$:$@:" -e "s:^'::" -e "s:'$::" ~/.config/xfce4/desktop/backdrops.list && xfdesktop -reload

3) W oknie Thunara wybieramy Edycja\Konfiguruj akcje. Dodajemy następującą:
Nazwa: Ustaw jako tapetę
Polecenie: setwallpaper %f
Warunki powiązania: Pliki graficzne

Od tej pory możemy zmienić tapetę klikając prawym przyciskiem na plik graficzny i wybierając wiadomą opcję. Skrypt setwallpaper można też dodać np. w gqview do narzędzi. Co kto lubi :smile:

Wyłączanie przyciskiem power
Pod XFCE można oczywiście odpalić kobylastego gnome-power-manager, ale po co, skoro wystarczy parę pomniejszych modyfikacji w paru configach? Poniżej przepis:

1) Instalujemy sudo:
emerge sudo

2) Na końcu /etc/sudoers dopisujemy:
%users ALL=(root) NOPASSWD: /usr/libexec/xfsm-shutdown-helper

3) W miejsce zawartości /etc/acpi/events/default wklejamy:
event=button[ /]power.*
action=echo POWEROFF | /usr/libexec/xfsm-shutdown-helper