Swego czasu (blisko rok temu) zostałem poproszony o projekt oprogramowania / urządzenia, którego zadaniem byłoby wyświetlanie na dużym ekranie dynamicznych informacji uaktualnianych z programu operatora. Jako, że programowanie pod Windows zostawiłem daleko w tyle i obsługa dwóch kart w tym systemie do wyświetlania informacji na niezależnym monitorze wykracza poza moje możliwości, postanowiłem zaprojektować osobne urządzenie, które będzie bardziej ‘idiotoodporne’.
Wybór sprzętu – coś małego, prostego do zainstalowania, z wyjściem VGA (początkowo wymogiem było TV-Out, ale po porównaniu z VGA w 1024 x 768, które większość telewizorów LCD obsługują, odpadło).
Pierwszą testowaną płytą była Via Epia (nie pamiętam dokładnego modelu, prawdopodobnie seria LN, prywatnie mam słabszy model z serii M) z obudową Emko EM-151. Okazało się jednakże, że dopuszczalnym rozmiarem jest również obudowa Shuttle SS51G z płytą FS51, sprowadzane jako sprzęt z odzysku za niższą kwotę niż pierwszy zestaw.
Pierwsze zestawy miały dyski PATA i SATA, kolejne – karty CF z odpowiednimi adapterami PATA (lub SATA). Był też pomysł wstawiania pamięci flash na USB.
Wybór systemu prosty – GNU/Linux, a dokładnie Gentoo Linux. Konfiguracja sieci typowo jak w Gentoo + sekcja fallback, gdyby serwer DHCP nie był dostępny.
Uznałem, że najprościej (i najtaniej) efekt końcowy uzyskam wykorzystując przeglądarkę, można wsadzić dowolny format pliku i zawsze się jakoś wyświetli. Nie jestem grafikiem, więc samą animację robiła osoba trzecia.
Ponieważ projekt miał ‘cieszyć oko’, więc został zrobiony we flash’u, a wyświetlany na Mozilla Firefox (Opera nie radziła sobie z tą animacją – zbyt ‘świeży’ flash).
Żeby przeglądarka mogła pracować, wymagała odpowiedniego środowiska. Wybrałem Xfce (na X.Org), bo samo X.Org nie dawało mi tylu możliwości (uruchamianie programów po starcie, zarządzanie zasilaniem). Urządzenie jest bezobsługowe, tzn. włącza się i wyłącza jednym przyciskiem. Automatyczne logowanie daje nam mingetty, a wyłączanie za pomocą acpid. Tutaj można znaleźć więcej informacji:
Zaskakujący dla mnie był fakt, że X.Org musi pracować z myszką (tzn. z widocznym wskaźnikiem). Nie da się go ukryć, wyłączyć, itp. Na szczęście jest unclutter, który wyłącza nieaktywny kursor (idle ustawiony na jedną sekundę).
Założenia wstępne były takie, by obraz wyświetlany był w pionie (czyli de facto 768 x 1024), za co odpowiada opcja:
Rotate „CCW”
w xorg.conf w sekcji Device dla karty graficznej. Sterowniku dla obu wspomnianych płyt obsługują to (odpowiednio via i sis).
Wspomniany Firefox pracuje z dodatkiem R-Kiosk (przy okazji: Opera i MS IE kiosk mode ma w standardzie), a w ustawieniach wyłączone zostało zapisywanie i pytanie o przywracanie sesji (odpowiednio browser.sessionstore.enabled i browser.sessionstore.resume_from_crash). Stosowny opis na stronach Mozilla:
Treść do wyświetlania serwuje nginx (wraz z PHP jako FastCGI, dane z MySQL).
Działające zestawy można pooglądać w kantorach spółki Exchange Group (na pewno w Katowicach na ulicy Stawowej), a w przyszłości może też w miejscu, gdzie obecnie pracuję.
TODO:
- splashscreen przy uruchamianiu systemu,
- optymalizacja systemu (odchudzanie),
- być może w przyszłości coś, co pozwoli na rozstanie się ze środowiskiem X.