xinitrc (Українська)

From ParabolaWiki
Jump to: navigation, search

i18n


Dansk – Deutsch – English – Esperanto – Español – Euskera – Français – Galego – Indonesia – Italiano – Lietuviškai – Magyar – Nederlands – Polski – Português – Română – Slovenský – Suomi – Svenska – Türkçe – Česky – Ελληνικά – Български – Русский – Српски – Українська – العربيّة – עברית – ไทย – 日本語 – 正體中文 – 简体中文 – 한국어

Короткий зміст
Огляд основного файлу конфігурації для програми 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, коли ви додатково налаштовуєте вашу систему.

1 Починаємо

/etc/skel/ містить файли та каталоги для забезпечення нормальних параметрів для новостворених облікових записів користувачів. (Ім'я skel походить від слова скелет, тому що файли, які він містить, є базовою структурою для домашніх каталогів користувачів.) Пакет xorg-xinit заповнюватиме /etc/skel з фреймворком .xinitrc.

Примітка: ~/.xinitrc є так званим файлом - "точкою"(.). Файли у файловій системі *nix, яким передує точка (.), 'приховані' і не відображатимуться з регулярною командою ls, як правило, для збереження орієнтації каталогів. Файли (.) можна побачити, виконавши ls -a. 'Rc' позначає Run Commands(запуск команд) і просто вказує, що це файл конфігурації. Оскільки він керує тим, як програма запускається, вона(хоча і історично неправильно) також говорить, що займається "Run Control(контролем запуску)".

Скопіюйте зразок файлу /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
Примітка: Це важливо, щоб тільки одна лінія exec була некоментована, інакше буде запущена тільки перша нерозбита лінія.

Після правильного редагування ~/.xinitrc прийшов час запустити X. Щоб запустити X як не-кореневий користувач, виконайте:

$ startx

Або

$ xinit

Ваш DE/WM тепер повинен запускатися. Ви можете перевірити свою клавіатуру з її розкладкою, переміщати мишу і, звичайно, насолоджуватися видом.

Якщо виникають проблеми з автоматичним підключенням, спробуйте додати ck-launch-session між оператором exec і оператором DE/WM. Наприклад:

exec ck-launch-session gnome-session
Примітка: Для цього потрібно встановити пакет consolekit.

Частина 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
Примітка: Пам'ятайте, що пакунки polkit і consolekit повинні бути присутніми у вашій системі.
Примітка:

Якщо ви створили ваш ~/.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.

5 Дивіться також

6 Підтвердження

Ця стаття базується на ArchWiki. Ми вилучили всі елементи, які не відповідають FSDG(оригінал).