Kolega se mě nedávno ptal na mé vývojové prostředí. Tak jsem si říkal, že o tom mohu rovnou napsat na blog, kdyby to ještě někoho zajímalo :). Podíváme se na operační systém, správce oken, terminál a aplikace, které používám (programování, multimédia a další), včetně pár screenshotů a odkazů na mé konfigurační soubory.
Operační systém
Již deset let běžím na Linuxu, z toho posledních šest let na Arch Linuxu. Dříve jsem používal Fedoru, Kubuntu a Debian. Své cestování mezi distribucemi jsem při přechodu na Arch Linux popsal zde. Na serverech pak používám Debian. Pokud bych na desktopu nepoužíval Arch Linux, tak bych asi zvolil taktéž Debian. S Arch Linuxem jsem nicméně spokojen a změnu neplánuji. Co bych ještě pro úplnost chtěl dodat, tak před Linuxem jsem používal MS-DOS a Windows (95, 98, XP). Ve virtuálce mám pak ještě Windows 7, především kvůli některým aplikacím, které potřebuji v práci a neběží na Linuxu (či s kterými si nechci "zacpávat" systém).
Co se týče init systému, tak používám systemd (výchozí init systém v Arch Linuxu). Jako boot manager mám systemd-boot, který je pro mé účely (nabootování Arch Linuxu) plně dostačující.
K package managementu používám jak výchozí pacman, tak yaourt, který má přehlednější výstup a zvládá instalaci balíčků z AUR (komunitní repozitář balíčků pro Arch Linux, které nejsou obsaženy ve standardních repozitářích). Dříve jsem používal paktahn, ale ten je mrtvý.
Co bych ještě zmínil, tak k zašifrování celého systému používám dm-crypt/LUKS, konkrétně variantu LVM on LUKS.
Správce oken
Po nabootování na mě naběhne login manager SLiM s Arch Linux témou. SLiM sice již bohužel není vyvíjený, ale jelikož funguje, tak jej stále používám.
Jako správce oken používám Fluxbox. Splňuje všechny mé potřeby: velmi jednoduché a rychlé prostředí bez zbytečných efektů, které se s postupem času nemění (nemám rád změny) a je plně konfigurovatelné pomocí textových konfiguračních souborů. Důvody jsem již popisoval zde. Používám vlastní styl, 12 ploch, černé pozadí, a spoustu klávesových zkratek (viz mé konfiguráky). Dále u většiny aplikací nemám ani okraje, ani taková ta tlačítka nahoře ("zavřít" apod.). Níže je ukázka. Kromě dolního panelu ale na ní není nic zajímavého :).
Z aplikací, které bych na tomto místě chtěl zmínit, patří následující. K zamykání obrazovky používám xsecurelock. Pro přepínání layoutů na klávesnici (EN/CS) a zobrazení aktuálního layoutu v system tray mám qxkb (můj konfigurák). K zobrazení jednoduchého kalendáře používám Gsimplecal. Jako správce schránky mám Parcellite (synchronizace schránek v X11 a zobrazení historie zkopírovaného textu). Pro překlad mezi češtinou a angličtinou používám QStarDict (Qt rozhraní k StarDict). Konečně jakožto nástroj pro správu síťových připojení používám Wicd.
Terminál
Většinu času při práci trávím v terminálu. Jako emulátor používám Konsole. Kromě něj používám i Yakuake, u kterého mi vždy běží jedna instance terminálu, kterou si mohu kdykoliv zobrazit/schovat. Velmi užitečné pro běh programů, které chcete mít jednoduše přístupné odkudkoliv (např. pro instant messaging, sledování vytížení systému, SSH připojení k serverům apod.).
V terminálu používám Tmux, což je tzv. terminal multiplexer. Jedná se o (podle mě) lepší variantu screenu. Umožní vám v terminálu mít různá sezení (angl. sessions). V rámci sezení pak můžete mít okna (něco jako taby v prohlížeči), která mohou být dále rozdělena na tzv. panes. Nemusíte tak mít na jedné ploše spuštěno několik terminálů, stačí vám jeden. Od daných sezení se navíc můžete odhlásit a později zase přihlásit, což se hodí především na serveru při připojení přes SSH. Vše je navíc nastavitelné a plně skriptovatelné. Své nastavení Tmuxu jsem detailně popsal zde. Moje konfigurace je navíc k dispozici na GitHubu. Souvisejícím skvělým nástrojem je Tmuxinator, který vám umožní si sezení nakonfigurovat přes textové soubory. Můžete si např. nastavit, aby se vám pro váš projekt vytvořila tři okna, v prvním se spustil Midnight Commander, ve druhém Vim, a ve třetím ještě něco jiného. To se hodí především po restartu systému k bleskovému obnovení toho, na čem jste pracovali. Osobně si pro každý projekt, na kterém pracuji, vytvářím takovýto konfigurační soubor. Kdo si totiž má pořád pamatovat, co měl kde spuštěného...
Jako shell používám Bash, protože jsem na něj zvyklý a mám jej konfigurovaný. Další jeho výhoda je, že je velmi rozšířený a často používaný pro psaní skriptů. Mé konfigurační soubory jsou zde. Prompt je vidět na screenshotu výše. Kdybych nepoužíval Bash, tak by má volba byla Zsh.
Co se týče editoru, tak jsem již sedm let spokojený uživatel Vimu, na který nedám dopustit. Popsání důvodů, proč jej používám, by bylo na samotný příspěvek, takže se o to zde ani nebudu pokoušet :). Mé nastavení, včetně soupisu pluginů, je k dispozici zde. O jeho propojení s Tmuxem jsem psal zde.
Jako správce souborů používám především Midnight Commander, občas pak Krusader. U Midnight Commanderu jsem si vytvořil vlastní styl.
Z dalších souvisejících aplikací bych zmínil htop (alternativa top
pro přehled procesů a vytížení systému), iotop (monitorování vytížení I/O) a nethogs (monitorování vytížení síťového spojení).
Samozřejmě používám i standardní unixové utility (ls
, grep
apod.), ale o těch tady nemá smysl psát.
Programování
Krátce bych chtěl zmínit i nástroje používané při programování. O terminálu, Tmuxu, Vimu, Bashi apod. jsem již psal, takže je nebudu opakovat. Při programování v C a C++ používám překladače GCC a Clang. Pro správu buildu typicky používám Make a CMake. U Pythonu používám jako interprety CPython a PyPy. Pro správu prostředí a instalaci balíčků pak virtualenv a pip. U Rustu pak používám standardní překladač rustc, balíčkovací systém a správce buildu cargo a instalátor rustup.
Pro ladění a profiling používám GDB (konfigurace) a Valgrind, včetně jeho nástrojů callgrind (profilování doby běhu) a massif (profilování paměťové spotřeby). Pro vizualizaci výsledků pak používám KCachegrind a massif-visualizer.
Ke správě verzí používám především Git (CLI rozhraní). Své nastavení jsem detailně popsal zde, včetně zmínky dodatečných rozšíření (git-up a můj git-edit-index).
Prohlížeč, emaily, novinky, IM
Jako primární prohlížeč používám již deset let Firefox, především kvůli jeho doplňkům (Vimperator, It's All Text, uBlock Origin, Flashblock, Yet Another Remove It Permanently, I don't care about cookies a další). Má konfigurace k Vimperatoru je zde. Jako sekundární prohlížeč používám Chromium.
Pro správu emailů používám primárně Thunderbird + jeho rozšíření External Editor, které mi umožňuje psát emaily ve Vimu. Mezi další používané rozšíření patří Lightning (kalendář). Pokud jsem v terminálu (např. připojený přes SSH), tak používám mutt.
K odběru novinek (RSS/ATOM) používám Newsbeuter, což je aplikace pro terminál. Zkoušel jsem i různé grafické programy, ale Newsbeuter mi vyhovuje nejvíc. Můj konfigurák je zde.
Pro instant messaging (IM) používám WeeChat (opět pro terminál) v kombinaci s BitlBee a ZNC. WeeChat je rychlý, nastavitelný, skriptovatelný a rozšiřitelný chatovací klient (screenshoty). Pro zobrazení notifikací používám svůj plugin weechat-notify-send. BitlBee je IM-to-IRC brána, která umožňuje používat jednoho IRC klienta (jako je WeeChat) i pro Jabber, MSN, ICQ apod. ZNC je pak IRC bouncer, který mi umožňuje, abych byl stále online, mohl se připojit odkudkoliv (i z více míst najednou) a měl přehled o historii v kanálech i pokud nejsem online. Jako poslední bych pak zmínil plugin wee-slack, který umožňuje používat WeeChat pro komunikaci přes Slack.
Multimédia
Pro přehrávání videa používám mpv, což je fork mplayeru. Moje konfigurace je zde. Pro přehrávání hudby používám Clementine, který je založen na mém oblíbeném Amaroku 1.4. Ten jsem používal dříve, ale s příchodem verze 2 jsem se musel poohlédnout jinde, protože se mi absolutně nelíbilo, co s Amarokem udělali (z jednoduchého rozhraní se stal přeplácaný bastl). Pro ovládání hlasitosti mám KMix. K vypalování CD/DVD používám k3b a ke stahování videí z youtube youtube-dl.
K prohlížení obrázků používám Gwenview. Pokud potřebuji obrázky upravit, tak používám GIMP. K típání screenshotů mám Spectacle (nástupce KSnapshot). Ke scannování používám XSane.
Dokumenty
K prohlížení dokumentů používám LibreOffice a Okular. K psaní dokumentů pak LaTeX. Pro tvorbu prezentací používám LaTeX + balíček Beamer.
Ostatní
Pro běh ostatních operačních systémů ve virtuálce (Windows či jiné Linuxové distribuce pro testovací účely) používám VirtualBox. Pro připojení k serverům přes RDP či VNC používám Remmina.
A to je vše. Mé konfigurační soubory jsou zde. Pokud jsem něco vynechal či by vás něco zajímalo, tak klidně napište komentář.
Diky za Clementine!
Diky za Clementine! Amarok uz byl k nesneseni.