xinitrc (Українська)
Короткий зміст |
---|
Огляд основного файлу конфігурації для програми xinit(startx). |
Пов'язане |
Display Manager |
Start X at boot |
Xorg (Українська) |
xprofile |
Файл ~/.xinitrc - це скрипт командного рядка, що читається xinit і startx. В основному він використовується для запуску середовища робочого столу, менеджера вікон та інших програм при запуску сервера X(наприклад, запуску демонів і змінних середовища). Програми xinit і startx запускають X Window System і працюють як перші клієнтські програми на системах, які не можуть запустити X безпосередньо з /etc/init, або в середовищах, що використовують декілька віконних систем. Файл ~/.xinitrc є простим способом запуску X, зазвичай використовується разом з методом inittab.
Одна з головних функцій ~/.xinitrc полягає в тому, щоб говорити, який клієнт для X Window System викликається з /usr/bin/startx та/або /usr/bin/xinit для кожного користувача. Існує безліч додаткових специфікацій і команд, які також можуть бути додані до ~/.xinitrc, коли ви додатково налаштовуєте вашу систему.
Contents
1 Починаємо
/etc/skel/ містить файли та каталоги для забезпечення нормальних параметрів для новостворених облікових записів користувачів. (Ім'я skel походить від слова скелет, тому що файли, які він містить, є базовою структурою для домашніх каталогів користувачів.) Пакет xorg-xinit заповнюватиме /etc/skel з фреймворком .xinitrc.
Скопіюйте зразок файлу /etc/skel/.xinitrc у ваш домашній каталог:
$ cp /etc/skel/.xinitrc ~/
Тепер відредагуйте ~/.xinitrc і розкоментуйте рядок, що відповідає вашому DE/WM. Наприклад, якщо ви хочете перевірити основну конфігурацію X(миша, клавіатура, роздільна здатність графіки), ви можете просто використовувати xterm:
#!/bin/sh # # ~/.xinitrc # # Створено за допомогою startx(запускайте віконний менеджер звідси) # exec gnome-session # exec startkde # exec startxfce4 # exec wmaker # exec icewm # exec blackbox # exec fluxbox # exec openbox-session # ...або віконний менеджер за вашим вибором exec xterm
Після правильного редагування ~/.xinitrc прийшов час запустити X. Щоб запустити X як не-кореневий користувач, виконайте:
$ startx
Або
$ xinit
Ваш DE/WM тепер повинен запускатися. Ви можете перевірити свою клавіатуру з її розкладкою, переміщати мишу і, звичайно, насолоджуватися видом.
Якщо виникають проблеми з автоматичним підключенням, спробуйте додати ck-launch-session між оператором exec і оператором DE/WM. Наприклад:
exec ck-launch-session gnome-session
Частина ck-launch-session гарантує, що різні змінні середовища встановлені правильно, запустивши чистий сеанс ConsoleKit. ConsoleKit є основою для відстеження різних користувачів, сесій і місць, присутніх у системі. Він забезпечує механізм реагування програмного забезпечення на зміни будь-якого з цих елементів або будь-яких метаданих, пов'язаних з ними. Він працює у поєднанні з D-Bus та іншими інструментами.
2 Приклади файлів
Нижче наведено простий приклад файлу ~/.xinitrc, який включає запуск деяких програм при завантаженні:
~/.xinitrc
#!/bin/sh xrdb -merge ~/.Xresources # оновлення БД ресурсів X xscreensaver -no-splash & # запуск демона заставки xsetroot -cursor_name left_ptr & # встановлює піктограму курсору sh ~/.fehbg & # встановлює фонове зображення exec openbox-session # запускає менеджер вікон
Наступний приклад може бути використаний як шаблон для запуску різних менеджерів вікон, шляхом розкомментовування того, який буде використовуватися, наприклад. Openbox:
~/.xinitrc
#!/bin/sh # # ~/.xinitrc # # Створено за допомогою startx(запускайте віконний менеджер звідси) # # exec ion # exec jwm # exec wmaker # exec startkde # exec icewm # exec pekwm # exec blackbox # exec /usr/bin/ratpoison # exec gnome-session # exec startfluxbox # exec startxfce4 # exec xfce4-session exec openbox-session # exec startlxde
Передбачення exec рекомендується, оскільки воно замінює поточний процес менеджером, але це не обов'язково, якщо всі додаткові менеджери робочого столу/віконні менеджери прокоментовані, як у прикладі вище. Використовуйте повний шлях до менеджера вікон або засобу запуску середовища робочого столу, коли це можливо. Шлях до нього можна отримати, використовуючи type - тобто type startkde.
3 Конфігурація файлу
Коли менеджер вікон не використовується, важливо пам'ятати, що сеанс X починається і закінчується з ~/.xinitrc. Це означає, що як тільки сценарій закривається, X завершує роботу, незалежно від того, чи є у вас ще запущені програми(включаючи менеджер вікон). Тому важливо, щоб менеджер вікон завершив роботу і X завершив роботу. Це легко досягти, якщо запустити менеджер вікон як останню програму сценарію.
Зверніть увагу, що у першому прикладі вище, такі програми, як cairo-compmgr, xscreensaver, xsetroot і sh виконуються у фоновому режимі (додано суфікс &. В іншому випадку скрипт зупиниться і чекає виходу кожної програми та демонів перед виконанням openbox-session. Також зверніть увагу, що openbox-session не є фоновою. Це гарантує, що сценарій не завершиться, поки не відкриється openbox. Якщо ви запустите скрипт startx вручну, закінчення сценарію завершиться X і залишить вас з будь-якими віртуальними консолями /etc/inittab.
Якщо запустити файл з /etc/inittab і встановити лінію respawn замість once, ~/.xinitrc можна буде перезапустити. Таким чином, X можна перезапустити без перезавантаження комп'ютера.
У наступних розділах пояснюється, як налаштувати ~/.xinitrc для декількох WM та DE.
3.1 У командному рядку
Якщо у вас є робочий ~/.xinitrc, але просто хочете спробувати інший WM/DE, ви можете запустити його через xinit, за яким слід шлях до менеджера вікон:
xinit /full/path/to/window-manager
Зауважте, що повний шлях обов'язковий. За бажанням, ви можете передавати параметри X-серверу після - - наприклад:
xinit /usr/bin/enlightenment -- -br +bs -dpi 96
Наступний приклад ~/.xinitrc показує, як запустити певний менеджер вікон з аргументом:
~/.xinitrc
#!/bin/sh # # ~/.xinitrc # # Створено за допомогою startx(запускайте віконний менеджер звідси) if [[ $1 == "fluxbox" ]] then exec startfluxbox elif [[ $1 == "spectrwm" ]] then exec spectrwm else echo "Choose a window manager" fi
За допомогою цього прикладу ви можете запустити fluxbox або spectrwm за допомогою команди xinit fluxbox або xinit spectrwm.
3.2 При запуску
Ви також можете мати на вибір менеджери вікон і середовища робочого столу під час запуску, використовуючи тільки ~/.xinitrc і GRUB, а не дисплейний менеджер. Ідея полягає в тому, щоб скористатися тим фактом, що Arch не робить особливого використання системи runlevel. Наступні тести ~/.xinitrc для поточного рівня запуску запуску Openbox і GNOME на рівнях 5 і 4 відповідно:
rl=$(runlevel | grep -o [0-6]) case $rl in 4) exec gnome-session;; 5) exec openbox-session;; esac
Вибір між різними рівнями виконання - це просто питання клонування запису GRUB і додавання бажаного рівня до аргументів ядра. Вставка рівня виконання в кінці рядка 'kernel' вказує, що inittab типовий рівень 5 повинен бути перевизначений і замінений на бажаний рівень запуску, 4 у цьому випадку:
title Arch Linux GNOME root (hd0,2) kernel /boot/vmlinuz-linux root=/dev/sda1 ro 4 initrd /boot/initramfs-linux.img
Нарешті, вам потрібно переконатися, що файл ~/.xinitrc запускається на вибраному рівні виконання. Використовуючи підказку з Start X at boot #/etc/inittab, ви можете відредагувати inittab, щоб просто запустити startx на бажаному рівні виконання, який, у свою чергу, використовуватиме скрипт {ic|~/.xinitrc}}:
x:45:once:/bin/su PREFERED_USER -l -c "/bin/bash --login -c startx >/dev/null 2>&1"
Зверніть увагу, що "45" означає, що це відбудеться на обох рівнях 4 і 5. Остаточна диференціація між 4 і 5 буде входити в ~/.xinitrc, як описано вище. Це краще, щоб спробувати диференціювати у файлі inittab, оскільки ми досить близькі до використання різноманітних конфігураційних файлів, як вони були призначені.
4 Поради та підказки
4.1 PolicyKit та ConsoleKit
Різні функції та додатки настільного середовища очікують, що PolicyKit та ConsoleKit будуть активними, і, якщо вони відсутні, будуть видавати помилки. Поширеною помилкою, яку можна помітити, є неможливість доступу до вимикання або перезавантаження консолей з вікон середовища робочого столу, а також нездатність монтувати USB-пристрої, компакт-диски і т.д. Більшість сучасних менеджерів дисплеїв автоматично запустять PolicyKit і ConsoleKit. При використанні лише ~/.xinitrc з наприклад startx, ви повинні запустити менеджер вікон наступним чином:
exec ck-launch-session gnome-session
Якщо ви створили ваш ~/.xinitrc з /etc/skel/.xinitrc, він матиме фрагмент у верхній частині, який виводить скрипти в /etc/X11/xini/xinitrc.d/, включаючи /etc/X11/xinit/xinitrc.d/30-bus, який таким чином запускає dbus перед ConsoleKit: це викликає помилку Issue#25031, оскільки необхідно запустити dbus після ConsoleKit, або у вас виникнуть проблеми з авторизацією при монтажі дисків.
Як тимчасове рішення можна змінити фрагмент у ~/.xinitrc таким чином:
if [ -d /etc/X11/xinit/xinitrc.d ]; then for f in /etc/X11/xinit/xinitrc.d/*; do # Do not launch dbus before ConsoleKit (FS#25031) #[ -x "$f" ] && . "$f" [ "$f" -ne "/etc/X11/xinit/xinitrc.d/30-dbus" ] && [ -x "$f" ] && . "$f" done unset f fiЦе дозволить вам правильно запустити dbus після ConsoleKit, дотримуйтесь статей віконний менеджер або середовище робочого столу для детальних інструкцій.
4.2 Запуск WM першим
Якщо потрібно запустити диспетчер вікон перед іншими додатковими програмами, скористайтеся наступним методом:
#!/bin/bash openbox & wmpid=$! urxvtd -q -f -o & xscreensaver -no-splash & fbpanel & wait $wmpid
Перший рядок запускає openbox як фоновий процес і негайно зберігає ідентифікатор процесу ($!}) у змінній wmpid. У останньому рядку він чекає завершення процесу, вказаного wmpid.