Линукс с несколькими экранами

Несколько графических сессий на разных консолях.

Я очень далёк от графической подсистемы и её настройки. Так же довольно мало опыта использования линукс в многопользовательском режиме на реальных консолях (в основном доступ делался по VNC-подобным технологиям), поэтому опишу как можно обще.

В ОС заведено два пользователя. При старте системы на 7-й консоли запускается графическое окружение для пользователя №1 (основной пользователь ОС). Если оно «падает» — после перезапуска оказывается на 8-й консоли, да там и остаётся.

Я хочу: запустить вторую графическую оболочку на 6-й консоли и войти под вторым пользователем системы. ОС — минт Оливия и первый пользователь всегда использует окружение по дефолту, в то время как я предпочитаю FVWM-Crystal и хочу _при_необходимости_ стартовать себе отдельное окружение на выбраной консоли (например, 6), притом так, чтобы это не мешало основному пользователю, а у меня был нормальный графический интерфейс. Основная задача сделать так, чтобы мы могли переключаться между пользователями с помощью Ctrl+Alt+Fx.

Буду благодарен за помощь!

Не знаю как в ОС — минт Оливия, а в Слаке есть файл /etc/inittab.

# These are the standard console login getties in multiuser mode:

В вашей ОС, вероятно, что то подобное(?)

У меня такого нету(

А чем DM не устраивает? Заводишь менеджер сессий в своём FVWM и живёте в одних иксах. ЕМНИП, проприетарный драйвер невидии не умел работать с несколькими Xorg одновременно. Можно, конечно, и завести разные сервера для каждого пользователя, только тогда тебе нужно будет пинать startx из

/.bashrc; посмотри, как это сделано у меня, например.
Работает так: Ctrl+F2 в обычную tty, там логинишься, т. к. у меня пользовательский шелл — bash, он смотрит на

/.bash_profile, а оттуда сорсится

/.bashrc. Если в текущем инстансе шелла DISPLAY ещё не объявлена и это именно 2-я tty, стартуем иксы. Ты можешь добавить там vt9 в ключи после —, это должно спавнить твои иксы на девятой консоли. Шестая обычно не графическая и иксы там не взлетят.

С файлом xorg.conf.suffix можешь не возиться, это не обязательно, Xorg будет использовать первый подходящий из дефолтных путей. Просто я время от времени переключаюсь между двумя конфигами, поэтому написал обёртку на выход из WM, которая выбирает конфиг с конкретным суффиксом.

Прости, конечно, но человек пишет что он ньюфаг, а ты ему тучу терминов и заимствованных слов вывалил. Повтори по-русски, и получится полноценное решение проблемы и для ТС, и для тех кто найдет этот тред из гугла.

Я очень далёк от графической подсистемы и её настройки. Так же довольно мало опыта использования линукс в многопользовательском режиме на реальных консолях.

Какая разница как давно человек зареган на лоре, если сам говорит что в конкретно этой теме он несведущ?

Возможно, даже скрытый гений, просто никогда не было необходимости в этом вашем гугле.

Большое спасибо за ответ, хотя я действительно не всё понял. NeverLoved бвл прав: срок моей регистрации не гарантирует понимая в плохо изученой области. К сожалению, всё моё общение с иксами было сведено к установке и однократной настройке проприентарного дровчика и то, если это действительно небходимо. Самое сложное, что я делал — настраивал дублирование вывода на второй монитор (стандартная опция драйвера не работала, так как это были две ЖК-матрицы разных форматов и пришлось править конфиг напрямую).

Про параметр «vt№» знаю, и даже как-то на работе (ради смеху) смог стартовать иксы на 2-й tty загрузившись в рекавери и вписав руками командную строку которую подсмотрел в «ps ax | grep». Странно, ибо это расходится с Вашими словами о том, что так не выйдет, но работать на 2-й tty я не смог — сильно глючила. К тому же это было не на дебьяновом дистре. Ctrl+F2. У меня не работает. Видимо потому что у меня не Nautilus, а Nemo.

Но сейчас проблема в другом. Я работаю не на тестовом компе на своей работе, а на уже рабочей лошадке. Первый и основной пользователь этого ноутбука далёк от мира юникс и уже успел привыкнуть к стандартной системе логина и управления. Я не хочу обучать этого пользователя выбору своего графического окружения — пускай для него всё останется «как было», также я не хочу эксперементировать — любые риски неприемлимы и я должен чётко понимать что и как делаю. Я понимаю, просить готовое решение — не правильно. Я должен для начала понять принцип, а уже потом реализовать своими руками. Вообще, для меня был-бы идеален такой вариант: Ctrl+Alt+F9 -> если окружения нет: идём в tty1, логинимся, выполняем, например, startx_4me и снова на 9-ю консоль. Это реализуется просто, однако я не понимаю, с какой стороны подойти к этому вопросу.

Читайте также:  Fujitsu fi 6130z linux

Странно, ибо это расходится с Вашими словами

но работать на 2-й tty я не смог — сильно глючила.

Потому что поднять иксы командой Xorg недостаточно. Во-первых, там есть что-то вроде внутрииксовой аутентификации (между X-сервером и X-клиентом), которая прозрачна для тебя, если ты используешь startx, плюс для нормальной работы с дисками, виджетами выключения/перезагрузки нужна поддержка consolekit, т. е. запущенная сессия от пользователя. Её делает либо systemd либо ck-launch-session.
О том, как стартут иксы, я написал там же.

Если в runlevel default не стартует xdm, то ты остаёшься на tty1, когда загрузка завершится. Между tty1-6 можно переключаться без Alt, он нужен, только когда ты из иксов переключаешься во фреймбуферную tty. Раз ты предлагаешь оставить DM в автозагрузке, то придётся жать и Alt тоже, естессно.

любые риски неприемлимы и я должен чётко понимать что и как делаю

Спрашивай, что непонятно.

однако я не понимаю, с какой стороны подойти к этому вопросу.

/.bashrc я тебе уже написал.

бедняги-хуцкеры понаустанавливают всяких красноглазых поделок, а потом бьются над задачами, которые в KDE уже решены за пользователя

Без меня меня женили или «а КДЕ и так умеет»? о_О

которые в KDE уже решены за пользователя

А что, КДЕ мне поставит этот фоункционал из коробки? И что мне делать, если меня не устаривает дефолтная комплектация или настройка? Или разработчики КДЕ уже давно читают мои мысли и лучше меня знают что мне нужно как конечному пользователю? Спасибо, но в жопу такую логику!

Написал скрипт такого содержания:

Проблема вот какая: оуружение стартует то же самое, что у первого пользователя, а мне охота в FVWM всегда попадать

А статьи по ссылке мы читаем, как завещала юичка.

4. After X is up, xinit launches

/.xinitrc file and all the commands from there. Window manager (WM) is also intended to run from there.

Сказал же — читай, ходи по ссылкам.

Можно опустить. Ты же конфиги с разными суффиксами не используешь? Нет. И скобочки я бы убрал. В случае, когда у тебя после && идёт единственная команда, скобки не нужны. В общем, я бы переделал вот так:

Когда-то давно в конце девяностых — начале двухтысячных я работал пользовался в линуксе несколькими графическими консолями.

Сейчас, сижу на Linux Mint 16 Cinnamon и возникла необходимость тоже иметь возможность включить вторую графическую консоль.

Мне сначало казалось, что команда запуска второй сессии иксов должна выглядеть как-то вроде «xinit — :2» или «startx — :2» но ничего подобного не получалось.

Долго искал информацию и нашёл описание в этой теме.

Зачем нужна такая длинная строка: «startx — vt9 -nolisten tcp &>

Ведь для запуска второй графической консоли достаточно только с любого tty набрать: «startx — vt9»

Что делает опция «-nolisten» и причём тут «tcp»?

В MAN`е я ответа не нашёл.

Кроме того, при запуске второй консоли система выдаёт сообщение, что оконный менеджер на девятом виртуальном терминале работает в режиме программного рендеринга без аппаратного ускорения.

Правильно ли я понял — это проблемма с драйверами и эту ситуацию никак не изменить?

Не делай так больше, ну серьёзно какое может быть ласкательно-уменьшительное слово для чисто технического термина?

Это реализуется просто, однако я не понимаю, с какой стороны подойти к этому вопросу.

Ты ещё не видел реализацию и уже судишь о её простоте.

Зачем нужна такая длинная строка: «startx — vt9 -nolisten tcp &>

X-сервер по умолчанию может иметь клиентов как локальных, так и удалённых. Основной способ подключения удалённых клиентов — через TCP порт, который X-сервер слушает. Проблема в том, что, если копьютер смотрит хотя бы одним интерфейсом прямо в интернет, X светит туда своей голой жопой, потому что слушать на каком-то определённом интерфейсе он не умеет, и слушает везде, при этом его TCP ничем не защищён и представляет потенциальную уязвимость.
&>/x.log просто пишет лог загрузки иксов в домашнюю папку. Ведь моя цель была какая — вынести всю конфигурацию иксов как можно дальше в пространство пользователя, для того, чтобы удобнее переносить её между рабочими станциями, в том числе теми, где прав рута у пользователя нет.

это проблемма с драйверами и эту ситуацию никак не изменить?

Источник

Читайте также:  Система безопасности linux серверов

Обзор терминальных мультиплексоров: tmux и dvtm

Терминал принадлежит к числу наиболее часто используемых инструментов администратора. Нередко во время работы приходится одновременно держать открытыми несколько вкладок терминала: одну — для управления веб-сервером, другую — для управления базой данных, третью — для копирования файлов и т.п. Когда открытых вкладок очень много, отслеживать одновременно все процессы становится трудно, и это существенно усложняет работу. Существуют специальные программы, c помощью которых можно решить проблему множественных терминалов. Они называются терминальными мультиплексорами.

Терминальные мультиплексоры позволяют одновременно работать с несколькими терминальными сессиями в одном окне. Принцип их работы заключается в следующем: терминал с множественными вкладками создается на удаленной машине; на локальной машине окно терминала делится на несколько частей, и в каждой из них могут быть запущены любые приложения и процессы. От удаленной машины можно отключиться (текущая сессия будет сохранена), а затем снова подключиться к ней и продолжать работу.

Самым известным и распространенным терминальным мультиплексором является, конечно же, GNU Screen. При всех своих преимуществах он отличается некоторым неудобством в работе. Неудачно реализована, например, операция разделения экрана на части: при отключении от текущей сессии и последующем ее возобновлении порядок расположения частей не сохраняется.

В последнее время широкое распространение получили и другие терминальные мультиплексоры, более наглядные и удобные в работе — например, tmux и dvtm, которым и посвящена эта статья.

Tmux работает под Linux и под MacOS; он включен в официальные репозитории большинства современных Linux-систем и может быть установлен при помощи стандартного менеджера пакетов.

Запустим tmux при помощи следующей команды:

В нижней части экрана появится строка состояния:

Управление всеми терминальными мультиплексорами осуществляется так: сначала нажимается так называемая префиксная комбинация клавиш, а после нее — клавиша, управляющая той или иной функцией. В tmux по умолчанию в качестве префиксной установлена комбинация Ctrl+B. Чтобы разделить экран терминала на две половины вертикальной чертой, нужно сначала нажать Ctrl+B, а затем — % (т.е. Shift+5):

Каждую из получившихся вкладок можно также разделить на две части горизонтальной чертой при помощи комбинации клавиш Ctrl+B+” (сначала нажимаем Ctrl+B, а затем — “).

Разделить окно на две части можно также при помощи команд:

(разделить на две части горизонтально)

(разделить на две части вертикально)

Чтобы перейти из одной части окна в другую, нажимаем сначала Ctrl+B, а затем — клавиши ←, ↑, → и ↓.

Чтобы создать новое окно, нажмем комбинацию клавиш Ctrl+B+C. В рамках одной сессии может быть задействовано неограниченное количество окон; каждое из них может быть в свою очередь разделено на части. Переключение между окнами осуществляется при помощи следующих комбинаций:

  • Ctrl+B 0. 9 — перейти в указанное окно;
  • Ctrl+B P — перейти в предыдущее окно;
  • Ctrl+B N — перейти в следующее окно;
  • Ctrl+B L — перейти в предыдущее активное окно (т.е. в то, из которого ранее был осуществлен переход в текущее окно);
  • Ctrl+B X — закрыть окно (это можно также сделать при помощи команды exit).

Текущую сессию tmux можно прервать, нажав комбинацию клавиш Ctrl+B+D. Чтобы возобновить прерванную сессию, нужно ввести команду:

Прерванная сессия будет восстановлена; при этом все данные и процессы будут сохранены.
Эту команду можно ввести и в сокращенном виде:

Чтобы вывести на экран список сессий, нужно выполнить следующую команду:

Завершение открытой сессии осуществляется при помощи команды:

Чтобы завершить все открытые сессии одновременно, нужно ввести команду:

Рекомендации по настройке

Отображение строки состояния в нижней части экрана можно отключить. Для этого введем следующую команду:

А чтобы отключенная строка состояния отображалась снова — команду:

Можно изменить положение строки состояния и сделать так, чтобы она находилась не в нижней, а в верхней части экрана:

Цвет строки состояния изменяется при помощи следующей команды:

Dvtm (dynamic virtual terminal manager) представляет собой терминальный мультиплексор, по функциональности во многом близкий к tmux.
Он также включен в официальные репозитории большинства современных Linux-систем и устанавливается при помощи стандартного менеджера пакетов.
После запуска dvtm в верхней части экрана будет отображена строка состояния:

Читайте также:  Как поменять системный звук windows 10

Управление dvtm организовано по тому же принципу, что и управление tmux. В качестве префиксной используется комбинация клавиш Ctrl+G. Понятие окна в dvtm интерпретируется совершенно иначе по сравнению с tmux. Для создания нового окна используется комбинация клавиш Ctrl+G+C. При нажатии этой комбинации экран будет разделен на две части; при этом каждая из них является отдельным окном:

При помощи той же самой комбинации клавиш можно создавать дополнительные окна:

Порядок расположения окон можно изменять. Выделяются следующие варианты расположения:

  • вертикальное (Ctrl+G T) — текущее окно расположено в левой половине экрана; все остальные окна расположены в правой половине;
  • горизонтальное (Ctrl+G B) — основное рабочее окно занимает верхнюю половину экрана, все остальные окна располагаются внизу;
  • режим сетки (Ctrl+G G) — экран делится на части одинакового размера по количество созданных окон;
  • полноэкранный режим (Ctrl+G M) — текущее окно занимает весь экран.

Переходить от одного режима расположения окон к другому можно, нажимая омбинацию Ctrl+G+пробел.

Для управления окнами используются следующие клавиатурные комбинации:

  • Ctrl+G X — закрыть текущее окно;
  • Ctrl+G J — перейти в следующее окно;
  • Ctrl+G K — перейти в предыдущее окно;
  • Ctrl+G 0…9 — перейти в указанное окно (цифры обозначают номер окна);
  • Ctrl+G L — увеличить ширину текущего окна;
  • Ctrl+G H — уменьшить ширину текущего окна;
  • Ctrl+G Q — закрыть все окна и выйти из dvtm.

В dvtm имеется одна интересная функция, которой больше нет ни в одном из известных нам терминальных мультиплексоров: нажатияклавиш в текущем окне могут автоматически воспроизводиться во всех остальных открытых окнах. Нажмем комбинацию клавиш Ctrl+G+A. Если после этого нажать на какую-нибудь клавишу, нажатие сработает во всех окнах сразу. (UPD. Наши читатели сообщили, что аналогичная возможность имеется и в tmux: tmux set synchronize-panes on).

Если ввести в текущем окне какую-либо команду, она также будет одновременно выполнена во всех открытых окнах. С помощью этой функции можно, например, осуществлять одновременную настройку нескольких удаленных серверов по одинаковой схеме.

В отличие от tmux, dvtm не поддерживает сохранения и возобновления сессий. Для этого используется dtach — вспомогательная утилита, которая обеспечивает возможность отключения от текущей сессии и последующего подключения к ней для любых консольных приложений. Устанавливается при помощи стандартного менеджера пакетов.

Чтобы получить возможность отключать сессии и снова подключаться к ним, нужно запустить dvtm под dtach:

При работе с dtach нужно явно указывать сокет, с помощью которого идентифицируется сессия. Доступ к сессии целиком и полностью определяется доступом к сокету.

Чтобы покинуть dtach, нужно нажать комбинацию Ctrl+\. Подключение к существующей сессии осуществляется при помощи команды:

Более подробная информация о dtach представлена на официальной man-странице.

В заключение приведем небольшую шпаргалку — таблицу основных команд и клавиатурных комбинаций, используемых в screen, tmux и dvtm.

Сравнительная таблица команд и клавиатурных комбинаций

Управление сессиями

Операция screen tmux dvtm
Запустить новую сессию screen tmux
tmux new-session
tmux new-session -s [имя сессии]
Возможность сохранения и возобновления сессий не поддерживается — для этого нужно устанавливать утилиту dtach, реализующую такую возможность для всех консольных приложений. Запуск dvtm под dtach осуществляется при помощи команды:
dtach -c /tmp/dvtm-session -r winch dvtm
Подключиться к уже созданной сессии screen -r tmux attach
tmux attach-session -s [имя сессии]
tmux -a
dtach -a /tmp/dvtm-session -r winch
Отсоединиться от текущей сессии Ctrl+A D tmux detach ИЛИ Ctrl+B D Ctrl+\
Просмотреть список активных сессий screen -ls tmux ls ps aux | grep dtach
Удалить сессию screen -r [имя сессии] -X quit tmux kill-session -t [имя сессии]
Удалить все сессии Ctrl+A \ tmux kill-server

Управление окнами

Операция screen tmux dvtm
Cоздать новое окно Ctrl+A C Ctrl+B C Ctrl+G C
Перейти в указанное окно Ctrl+A 0. 9 Ctrl+B 0. 9 Ctrl+G 0. 9
Перейти в предыдущее окно Ctrl+A P Ctrl+B P Ctrl+G J
Перейти в следующее окно Ctrl+A N Ctrl+B N Ctrl+G K
Перейти в последнее активное окно Ctrl+A L Ctrl+B L
Показать список всех открытых окон Ctrl+A « Ctrl+B W
Увеличить ширину окна Ctrl+B Ctrl+N→ или Ctrl+B Alt+→ (увеличивает с большим шагом) Ctrl+G L
Уменьшить ширину окна Ctrl+B Ctrl+← Ctrl+G H
Воспроизводить нажатия клавиш во всех открытых окнах tmux set synchronize-panes on Ctrl+G A
Закрыть текущее окно Ctrl+A X Ctrl+B X Ctrl+G X

Читателей, не имеющих возможности комментировать посты на Хабре, приглашаем к нам в блог.

Источник

Оцените статью