kstep 09.03.2012 23:35

СкриптыАвтоконфиграция раскладки дисплеев

Долго не писал, потому что не знал о чём будет интересно народу. Например недавно порывался написать о моём опыте настройки Optimus-видеокарты на Lenovo ThinkPad T520 под Арчиком, но потом стушевался (кстати, если нужно, напишу, т.к. наткнулся на пару подводных камней).

Сейчас всё же рискнул выложить коротенький скрипт который у меня стоит в автозагрузке и позволяет не мучатся мне с конфигами Иксов, когда я подключаю/отключаю к своему ноуту новый монитор (а такое бывает очень часто).


Для своей работы скрипт требует awk и xrandr.

1
2
3
4
5
6
7
8
#!/bin/sh

case "$1" in
left-of|right-of|above|below|same-as) D=$1 ;;
*) D=left-of ;;
esac

xrandr | awk -v dir=$D 'out { gsub("[^0-9.]", "", $2); print "--output " out " --mode " $1 " --rate " $2 pout; pout=" --" dir " " out; out=0 } / connected/ { out=$1 }' | xargs xrandr



Скрипт очень простой. Принимает единственный опциональный параметр, определяющий в какую сторону тайлить дисплеи (left-of/right-of/above/below/same-as), по умолчанию дисплеи размещаются слева-напрво (left-of, то есть каждый следующий дисплей будет размещён слево от предыдущего).

Скрипт лежит на гисте.

P.S. Кстати, маленький фичереквест: было бы неплохо иметь возможность вставлять embed-код из гиста (хоть он и script, но отфильтровать-то по src очень легко).


Тэги: config layouts sh xrandr
+ 2 -
Похожие Поделиться

mealsforall 10.03.2012 00:11 #
case странный (можно заменить на D=${1-left-of}), а так ничо, хороший костыль. :)
kstep 10.03.2012 00:43 #
Да, раньше так и было, но потом решил сделать так, чтобы отфильтровать «левые» варианты аргумента (типа секурность). Наверное стоит сократить до:

1
2
3
4
case "$1" in
left-of|right-of|above|below) D=$1 ;;
*) D=left-of ;;
esac

dront78 10.03.2012 12:46 #
про optimus хочу
blackraven 12.03.2012 18:11 #
И я хочу!
kstep 12.03.2012 23:02 #
Там особо писать нечего, если всё ужать до нескольких команд. Будет что-то вроде

yaourt -Sy bbswitch bumblebee nvidia-bumblebee nvidia-utils-bumblebee lib32-nvidia-utils-bumblebee
vim /etc/rc.conf // добавить bbswitch в MODULES
modprobe bbswitch
// перелогинится в Иксах
winetricks directx9
wine regedit.exe // в ветке HKCU/Software/Wine/Direct3D создать string-ключ VideoMemorySize="1024"
optirun wine Игрушка.exe

Просто я очень долго не мог понять, почему у меня ничего не запускается, пришлось много гуглить пока сначала до меня не дошло что на моей 64-битной машинке не зватает lib32-nvidia-utils-bumblebee, а потом пока не дошло, что wine не видит правильный объём видео-памяти. В остальном если просто знать куда тыкать всё просто, я просто не знал куда тыкать, потому убил много времени.
kstep 13.03.2012 18:29 #
Забыл ещё, что надо запустить /etc/rc.d/bumblebeed start и добавить bumblebeed в DAEMONS в /etc/rc.conf.
NickNill 01.04.2012 21:33 #
По поводу подключения монитора - есть способ намного проще\удобнее. Сделал бинд на горячие клавиши(у меня CTRL+ALT+D) для команды xrandr --auto. При подключении монитора - нажимаешь эти клавиши и все окей. При отключении - еще раз, и все становится на свои места! Удачи)
NickNill 01.04.2012 21:35 #
правда когда я подключаю монитор - мне нужен клон текущего экрана. Но может кому пригодится