27 нояб. 2013 г.

Два монитора для fluxbox

Долгое время я мучился сначала с Gnome 3, потом с Mate, всё не решался пересесть на fluxbox. А всё из-за того, что лень было почитать документацию о том, как настроить два монитора. В принципе, я знал, что это должно быть очень просто с помощью xrandr. Меня останавливало то, что я использую один лаптоп и дома, и на работе, дома у меня экран лаптопа и внешний монитор, а на работе док-станция и два врешних монитора, к тому же один из них стоит вертикально (удобно для консоли).
Но в один прекрасный день меня достал даже Mate, и я сел читать документацию. Всё оказалось даже проще, чем я предполагал.
Итак, первое, что нужно определить, это какие мониторы подключены:
$ xrandr
Screen 0: minimum 320 x 200, current 1366 x 768, maximum 8192 x 8192
eDP1 connected primary 1366x768+0+0 (normal left inverted right x axis y axis) 293mm x 165mm
   1366x768       60.0*+   40.0  
   1360x768       59.8     60.0  
   1024x768       60.0  
   800x600        60.3     56.2  
   640x480        59.9  
VGA1 disconnected (normal left inverted right x axis y axis)
HDMI1 disconnected (normal left inverted right x axis y axis)
DP1 disconnected (normal left inverted right x axis y axis)
HDMI2 disconnected (normal left inverted right x axis y axis)
DP2 disconnected (normal left inverted right x axis y axis)
Сейчас я пишу с лаптопа, нет никаких внешних мониторов, поэтому виден только один выход – eDP1. Чтобы изметить выход или конфигурацию текущего выхода (разрешение, ориентацию и т.п.), нужно выполнить команду xrandr с параметрами. Данные для параметров нужно взять из вывода выше. После того, как я выполнил xrandr дома и на работе, я написал два простых скрипта (для дома и для работы), которые пока вызываю вручную:
home.sh
#!/bin/bash

xrandr --output eDP1 --mode 1366x768
xrandr --output VGA1 --mode 1920x1080 --above eDP1
work.sh
#!/bin/bash

xrandr --output HDMI1 --mode 1680x1050 --rotate left
xrandr --output HDMI2 --mode 1920x1080 --right-of HDMI1 --rotate normal
Немного о параметрах:
  • --output <OUT> – видеовыход.
  • --mode <mode> – разрешение.
  • --above, --below, --right-of, --left-of, --same-as <OUT> – положение относительно видеовыхода <OUT>.
  • --rotate [normal|left|right|inverted] – поворот экрана.
У xrandr очень много параметров, но для большинства случаев описанных должно хватить.

Кнопки для fluxbox

Недавно перешёл назад на fluxbox, наслаждаюсь простотой, скоростью и гибкостью. Чтобы быстрее добираться до нужных мне функций, я добавил в ~/.fluxbox/keys следующие строки:

# ======= #
# My keys #
# ======= #

# Commands
# ========
Control Escape :RootMenu
# Привычка вызывать так главное меню у меня осталась ещё со времён Windows 95

Mod1 Mod4 Tab :NextWindow {static groups} (iconhidden=no)
Mod1 Mod4 Shift Tab :NextWindow {static groups} (iconhidden=no)
# Иногда полезно пройтись по всем окнам на всех рабочих столах

Mod4 Escape :WorkspaceMenu
# Вообще-то я хотел иметь возможность посмотреть, какие окна у меня открыты на текущем
# рабочем столе, но я не нашёл такой команды. Да и не искал :), так что пока так.

Control Mod1 l :Exec /usr/bin/xscreensaver-command -lock
# Блокировка экрана

Control Mod1 Shift w :Exec work.sh
Control Mod1 Shift h :Exec home.sh
# Вызываю скрипты

# Applications
# ============
Control Mod1 e :Exec emacs
Control Mod1 t :Exec x-terminal-emulator
Control Mod1 c :Exec conkeror
Control Mod1 m :Exec icedove
# Наиболее часто используемые приложения

# MPD
# ===
Mod1 Mod4 Right :Exec mpc next
Mod1 Mod4 Left  :Exec mpc prev
Mod1 Mod4 Up    :Exec mpc play
Mod1 Mod4 Down  :Exec mpc pause
# Управление mpd

# Volume
# ======
XF86AudioRaiseVolume :Exec pactl -- set-sink-volume 0 +5%
XF86AudioLowerVolume :Exec pactl -- set-sink-volume 0 -5%
XF86AudioMute        :Exec pactl -- set-sink-mute 0 toggle
# Управление громкостью с помощью мультимедийных клавиш

Mod1 Mod4 Mouse4 :Exec pactl -- set-sink-volume 0 +5%
Mod1 Mod4 Mouse5 :Exec pactl -- set-sink-volume 0 -5%
Mod1 Mod4 Mouse2 :Exec pactl -- set-sink-mute 0 toggle
# Тоже управление громкостью, только если мультимедийные клавиши недоступны,
# например, их просто нет или лаптор закрыт и стоит на док-станции.