Next Previous Contents

13. Desktop

13.1 Что такое WM, DE и чем они отличаются? Что лучше?

Есть X-сервер (XFree86, xorg). Он отвечает за устройства ввода-вывода, графику и вывод окон.

А еще есть менеджеры окон и рабочие среды, которые отвечают за поведение окон, число рабочих столов, вид окон, иными словами, за поведение и вид. К числу менеджеров окон можно отнести FluxBox (да любой *box), IceWM, Window Maker, FVWM, AfterStep и прочее. К группе вторых относятся вторым - KDE и Gnome, ну может еще XFCE. Где-то отдельно стоит Enlightenment - он вроде как теперь проходит по спецификациям к рабочим средам, но программ под его API почти нет.

Аббревиатура WM переводится как Window Manager (менеджер окон), коротко и довольно доступно об этом написано на здесь или здесь, вот кусочек:

X-сервер -- программа в определенном смысле довольно глупая. Все, что он умеет -- это выделять программам прямоугольные области экрана ("окна") и рисовать в них то, что программы попросят; плюс он знает, что одно окошко может располагаться поверх другого, и правильно их отрисовывает.

Но ведь надо еще изобразить рамку вокруг окошка, заголовок над ним, уметь "сворачивать" окно в пиктограмму и еще многое другое. Этим занимается специальная программа, называемая "Window Manager" (дословно - "менеджер окон").

В список функций хорошего window manager'а входят: декорирование окон (бордюр, заголовок, кнопочки), манипуляции с окнами (перемещение, изменение размера, свертывание в пиктограмму и т.д.), разнообразные меню и панели инструментов (например, для запуска программ), виртуальный экран.

Аббревиатура DE переводится как Desktop Environment (рабочая среда), на пальцах объясню - криво и коряво, зато понятно:

Рабочие среды имеют свои библиотеки (GTK, QT) и средства для более легкого создания приложений и их более тесной интеграции (собственный API). Соответственно, если я беру и собираю тот же licq с поддержкой KDE, то он будет убираться в трей, вызывать kmail, работать с Konqueror и получит поддержку arts. Если нет - получим тоже рабочее приложение, но без таких вкусностей.

Если программа собрана под рабочую среду, ее запуск и работа возможна и в оконном менеджере, но она утащит за собой необходимые библиотеки из своей рабочей среды. Например, kppp утащит kdeinit, а тот - kaccess и кучу еще всего, а StarDict (который работает только с Gnome) возьмет с собой еще и bonobo-activation-server.

Кстати, если программа написана к примеру на GTK, это еще не значит, что она написана под Gnome. Во-первых это значит, что такая программа не обязательно будет "прятаться в трей" и т.д. в этом самом Gnome, и во-вторых - она не будет "тянуть за собой" его сервисы.

Многие менеджеры могут собираться с поддержкой рабочей среды - тогда программы из сред смогут работать корректнее - например, убираться в тот же трей менеджера (который работает иначе, чем у рабочей среды).

В принципе, DE - это более прогрессивный (хоть и не unix-way) подход, если проблем с ресурсами нет, проще поставить рабочую среду.

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

Вопрос же о том, что лучше WM или DE весьма спорный - эффективно работать можно и там и там, а вопрос красивости - это дело вкуса (многим просто НЕ нравится тот-же KDE на генном уровне). Т.е. стоит попробовать несколько и выбрать то, что /просто нравится именно вам/.

Здесь имеется рейтинг самых разнообразных WM и DE, с описанием и ссылками на их домашние странички.

Несколько интересных, хоть и местами спорных, статей имеется на http://linux-forever.narod.ru/winman/index.htm

На http://linuxportal.ru/entry.php/P491_0_3_0 можно почитать о том, "Как поменять Display Manager" в подробностях.

13.2 Размер десктопа == разрешению монитора при переключении разрешения. Это возможно? Как поменять разрешение, не завершая X-сервер?

В KDE 3.1.x и выше есть программа "Screen Resize & Rotate". Пускаете ее как апплет, она садится в трей. Ею переключаете разрешение - размер десктопа тоже будет меняться.

Что-то такое планируется (или уже есть) в Gnome.

Или же можно переключить вручную (если wm поддерживает расширение xrandr):

Запустите xrandr, он выдаст нечто вроде:

 SZ:    Pixels          Physical       Refresh
*0   1152 x 864    ( 333mm x 252mm )  *78  
 1   1024 x 768    ( 333mm x 252mm )   84  
 2    800 x 600    ( 333mm x 252mm )   88  
 3    640 x 480    ( 333mm x 252mm )   84  
 4    400 x 300    ( 333mm x 252mm )   84  
 5    832 x 624    ( 333mm x 252mm )   74  
 6    640 x 512    ( 333mm x 252mm )   60  
 7    720 x 400    ( 333mm x 252mm )   85  
 8    640 x 400    ( 333mm x 252mm )   85  
 9    576 x 432    ( 333mm x 252mm )   75  
 10   640 x 350    ( 333mm x 252mm )   85  
 11   512 x 384    ( 333mm x 252mm )   84   75   70   60  
 12   416 x 312    ( 333mm x 252mm )   74  
 13   320 x 240    ( 333mm x 252mm )   85   75   72   60  
 14   320 x 200    ( 333mm x 252mm )   89  
 15   320 x 175    ( 333mm x 252mm )   85  
Current rotation - normal
Current reflection - none
Rotations possible - normal 
Reflections possible - none

Теперь напишете, например, xrandr 1 и вы получите 1024x768 с изменившимся размером окон.

13.3 Как в KDE переключать языки по Ctrl+Shift?

Вообще-то никак :) Лучше выключить эту возможность в KDE, и использовать средства X-сервера, а в качестве индикатора - xxkb или kkbswitch.

Видел предположение, что если в файле  /.kde/share/apps/kcmkeys/my.kksrc поменять строку

Switch to Next Keyboard Layout=Ctrl+Alt+K
на
Switch to Next Keyboard Layout=Ctrl+Shift_L;Ctrl+Shift_R

то работать будет как надо. На KDE версий выше 3.1.4 этот способ не работал.

13.4 Как отключить сглаживание шрифтов (anti-aliasing) в приложениях GTK?

Для GTK-приложений - в консоли выполнить export GDK_USE_XFT=0 или прописать эту команду в  /.gtkrc. Если после этого приложения перестанут видеть TTF-шрифты, нужно прописать директорию с ними в файле конфигурации X-сервера, либо FontServer'а. Читайте Как настроить шрифты?

Также можно добавить параметр в $HOME/.Xresources

Xft.antialias: false

13.5 Как отключить сглаживание шрифтов (anti-aliasing) в приложениях QT?

Для Qt-приложений можно через Центр Управления KDE - Центр Управления -> Внешний вид -> Шрифты -> Использовать сглаживание для шрифтов (Control Center -> Appearance & Themes -> Fonts -> Use anti-alising for fonts)

13.6 Как включить "нормальное" сглаживание шрифтов (anti-aliasing)?

Из-за проблем с лицензированием алгоритма сглаживания FreeType распространяется с выключенными по умолчанию функциями сглаживания шрифтов, где используются пропиетарные алгоритмы. В нашей России патенты на эти алгоритмы не действуют, поэтому мы можем включить их использование и пересобрать FreeType. В общем случае подойдет способ, описанный здесь.

В redhat/fedora вы можете поправить соответствующий параметр в spec-файле и пересобрать пакет.

Есть дополнительные способы по улучшению вида шрифтов: http://www.freebsd.org/gnome/docs/faq2.html#q11

13.7 Какие файлы отвечают за внешний вид (шрифт, тема, стиль...) GTK приложений? Дайте пример такого файла.

Это файлы gtkrc. Существуют глобальные настройки и локальные. Локальные хранятся в домашней папке, в файле &.gtkrc, глобальные в /etc/gtk/gtkrc и /etc/gtk/gtcrc.ru.

Настройки внешнего вида приложений GTK 1.x

Файл /etc/gtk/gtkrc в общем случае выглядит так и трогать его не нужно:

style "gtk-tooltips-style" {
  bg[NORMAL] = "#ffffc0"
  fg[NORMAL] = "#000000"
}

widget "gtk-tooltips" style "gtk-tooltips-style"

style "gtk-progressbar-style" {
  bg[NORMAL] = "#ffffff"
  bg[PRELIGHT] = "#a0a0a0"
}

class "GtkProgressBar" style "gtk-progressbar-style"

Файл /etc/gtk/gtkrc.ru выглядит примерно так:

style "gtk-default-ru" {
        fontset = "-*-arial-medium-r-normal--12-*-*-*-*-*-koi8-r,\
                   -*-helvetica-medium-r-normal--12-*-*-*-*-*-koi8-r,\
                   -*-arial-medium-r-normal--12-*-*-*-*-*-koi8-r,*-r-*,\
                   -adobe-helvetica-medium-r-normal--12-*-*-*-*-*-koi8-r-*
                   "
 }
 class "GtkWidget" style "gtk-default-ru"

Мы можем настроить gtk исключительно под себя, если создадим подобный файл в домашнем каталоге ( /.gtkrc или gtkrc.ru):

include "/home/fagot/.themes/Industrial/gtk/gtkrc"

style "user-font"
{
  font="-monotype-arial-medium-r-normal-*-*-140-*-*-p-*-koi8-ru"
}
widget_class "*" style "user-font"

include "/home/fagot/.gtkrc.mine"

Настройки внешнего вида приложений GTK 2.x

Глобальные настройки зависят от выбранной темы /etc/gtk-2.0/gtkrc:

gtk-theme-name = "Bluecurve"
<verb>

Локальные настройки для приложений GTK 2.x хранятся в ~/.gtkrc-2.0:

<verb>
~/.gtkrc-2.0:

include "/usr/local/share/themes/Default/gtk-2.0/gtkrc"
style "user-font" 
{
        font_name="sans 12" 
}
widget_class "*" style "user-font" 

include "/home/sk/.gtkrc.mine"

Файл  .gtkrc-kde - раньше был нужен для указания шрифтов GTK-приложений, теперь - нет. Если не ошибаюсь, можно удалить и выключить галку KDE Control Center -> Appearance & Themes -> Apply Colors to non-KDE Applications.

Для некоторых тем кроме "картинок" (из  /.themes/Theme-name/gtk-* например) также нужны библиотеки, которые должны быть правильно размещены. При сборке темы следует указать ./configure --prefix=PREFIX, где PREFIX тот же что и у установленного GTK (для Slackware это /usr, к примеру).

Дополнение от eRazor:

Для GTK2-приложений в KDE используются настройки из конфигурационных файлов перечисленных в переменной GTK2_RC_FILES, например:

$GTK2_RC_FILES:

/etc/opt/gnome/gtk-2.0/gtkrc: /opt/gnome/share/themes/Qt/gtk-2.0/gtkrc: ~/.gtkrc-2.0-plastik: ~/.kde/share/config/gtkrc 

Обратите внимание на то, что суффикс в имени rc-файла содержит имя темы. Когда вы в KDE, используется не  /.gtkrc-2.0, а  /.gtkrc-2.0-plastic, если он есть конечно.

13.8 Как переключить тему в gnome или приложениях gtk?

Скачиваем тему, распаковываем ее куда-нибудь, вроде $HOME/themes/_название_темы_

Далее в файле .gtkrc пишем include "$HOME/themes/_название_темы_/gtkrc"

Если есть файл .gtkrc.ru или gtkrc.ru проще всего сделать их ссылками на .gtkrc

Если у вас стоит KDE, то влияние на тему оказывает файл gtkrc-kde. Чтобы этого не происходило, вы можете снять галку в Центре Управления: Appearance & Themes -> Colors KDE -> Apply colors to non-KDE applications.

Если у вас стоит Gnome, проще (и лучше всего - со слов пользователя Gnome) воспользоваться gtk-theme-switch. Если у вас его нет, вы можете скачать его здесь: http://www.muhri.net/nav.php3?node=gts (отдельно версия для приложений gtk-1 и gtk-2) или попробовать найти в своем дистрибутиве.

13.9 Почему в GTK-программах, например VWware, xmms, jpilot вместо русских букв квадраты?

Это происходит потому, что в файле /etc/gtk/gtkrc.utf8 (или /etc/gtkrc.ru - в файле, соответвующим вашей локали) фигурирует ссылка на шрифт семейства helvetica, в котором отсутствуют русские символы или указан несушествующий шрифт.

Данную неприятность легко исправить, вписав вместо него любой шрифт, который реально присутствует в системе. Например, на RedHat или Fedora Core, файл может выглядеть так:

style "default-text" { 
                     fontset = "-urw-urw bookman l-medium-r-normal-*-14-*-*-*-p-*-koi8-uni" 
} 


class "GtkWidget" style "default-text"

Также примеры для redhat можно посмотреть в предыдущем вопросе.

13.10 Как настроить шрифты в Motif-приложениях?

man editres

man xrdb

13.11 Как сделать, чтобы xmms можно было свернуть в трэй KDE/Gnome?

Данный плагин работает и в GNOME и в KDE - http://www.hellion.org.uk/xmms-status-plugin/index.html. Для Fedora Core готовый пакет можно взять на сайте http://freshrpm.org

Или скачать и поставить соответствующий plug-in:

http://xmms-kde.sourceforge.net/download.html.

На сайте также есть бинарники (rpm) под SuSe и RedHat.

13.12 Как сделать, чтобы xxkb "висел" в трее IceWM?

Waso отвечает :

~/.xxkbrc:

XXkb.mainwindow.enable: yes                                                     
XXkb.mainwindow.geometry: 15x15+985-31 !Цифры можно подобрать и другие

и

~/.icewm/winoptions:

XXkb.dTitleBar:0
XXkb.dBorder:0
XXkb.dResize:0
XXkb.ignoreTaskBar:1
XXkb.ignoreWinList:0
XXkb.dTitleBar:0
XXkb.dBorder:0
XXkb.dSysMenu:0
XXkb.dResize:0
XXkb.dClose:0
XXkb.allWorkspaces:1
XXkb.layer:AboveDock

13.13 Почему Mozilla грузит процессор на 100%?

Скорее всего это не Mozilla, а контент открытых страниц. Одным из радикальных, но довольно действенных методов борьбы с этим явлением является отказ от использования flash-plugin (просто не устанавливать). Как вариант, можно поставить Adblock ( http://adblock.mozdev.org) и запретить *.swf.

13.14 Как ускорить проигрывание FLASH (заставить его использовать меньше ресурсов)?

Задать такую переменную:

export FLASH_GTK_LIBRARY=libgtk-x11-2.0.so.0

13.15 Как включить java в mozilla?

13.16 Как поменять в KPPP тоновый набор на импульсный?

Либо перед номером телефона пишем букву 'P' (латинская!), либо заходим в свойства kppp, команды и пишем вместо ATDT команду ATDP.

13.17 Что делать, если при запуске wvdial не от рута программа пишет device busy?

Дайте пользователю права на запись в директорию /var/lock (скажем, включив его в группу, владеющую данной папкой)

13.18 А можно пример конфига для wvdial?

/etc/wvdial.conf:

[Dialer Defaults]
Modem = /dev/ttyS0
Baud = 112500
Init = ATZ
Init2 = AT S11=50
Dial Command = ATDP
Phone = 9955555
Username = int1104221
Password = LyQSptAy
New PPPD = yes
#Init3 = ATM0

[Dialer phone2]
Phone = 9955556

[Dialer phone3]
Phone = 1055555

[Dialer phone4]
Phone=9519024

[Dialer phone5]
Phone=9613332

[Dialer norm]
Init3 = ATM1

[Dialer phone6]
Phone=7132245

[Dialer phone7]
Phone=7113676

13.19 Как отключить beep?

Если хочется отключить писк в консоли (для bash и программ, использующих readline), можно добавить в  /.inputrc строку `set bell-style off`, или `xset -b` (что эквивалентно `xset b off`), затем выйти из нее (консоли) и зайти снова - должно получиться. Или сделать setterm -blength 0.

Для xterm, rxvt и других графических эмуляторов также можно использовать команду `xset b off`.

Для более глубокого ознакомления со способами управления звуком (и не только) в консоли рекомендую поселить http://gazette.linux.ru.net/rus/articles/hobcon.html и http://linuxdoc.ru/HOWTO/mini/Visual-Bell.html

13.20 Как запустить программу в фоне, без привязки к терминалу?

user@linux# nohup COMMAND [ARG]...

Программа nohup запускает COMMAND таким образом, что она игнорирует сигнал hangup, что позволяет ей продолжать работу и после выхода из терминала. Также, она перенаправляет весь вывод программы в файл $HOME/nohup.out и понижает приоритет выполняемой программы.

13.21 Как понизить/повысить приоритет запускаемой программе?

Воспользуйтесь командой nice. Чтобы понизить приоритет, напишите нечто вроде:

user@linux$ nice -n 10 myprogram

Подробности можно узнать, набрав man nice

13.22 Как сделать терминал без рамки?

Это настройка не терминала, а WindowManager'а.

Для FluxBox, это можна сделть например так: добавить в  /.fluxbox/keys строку

~/.fluxbox/keys:

"Mod4 d : ToggleDecor"

После этого нажатием на [Win+d] можно управлять наличием рамки у любого окна.

Для WindowMaker - Свойства окна (правая кнопка мыши по заголовку)->Атрибуты->Скрыть строку заголовка

13.23 Как разделить tar.gz на равные части?

man tar в районе -M

Либо man split и натравить split на tar.gz.

13.24 Как просматривать ресурсы сети Windows (сетевое окружение) из консоли? Как его смонтировать?

Для начала нужно посмотреть ресурсы при помощи команды smbclient -L winmachine. На данный момент ресурсы с названием более 16 символов поддерживаются некорректно, т.е. все символы в названии после 16-го отсекаются.

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

smbmount //winmachine/movie /home/jackill/mnt/movie -o  iocharset=koi8-r,rw,codepage=cp866,umask=0

Для ресурсов с паролем дайте команду:

smbmount //winmachine/work /home/jackill/mnt/work -o  iocharset=koi8-r,rw,umask=0,codepage=cp866,username=_username_,password=_password_

Также существуют GUI-утилиты и специальный скрипт, искать ресурсы которыми и монтировать значительно удобнее.

13.25 Как перевести текстовый файл из одной кодировки в другую?

Вот так.

13.26 Как провести операцию по преобразованию группы графических файлов (например, уменьшить размер ста файлов)?

Есть такой пакет ImageMagick, Входит он практически в любой дистрибутив и содержит группу утилит, предназначенных для различного преобразования файлов. Полный список поддерживаемых форматов вы можете узнать, набрав man ImageMagick.

В качестве примера возьмем задачу по уменьшению группы файлов (jpeg уменьшить пропорционально, чтобы координата x равнялась 800 пикселям).

Пишем такой скрипт, у меня он называется conv (автор неизвестен):

#!/bin/sh
for i in $@ ; do convert -geometry 800 $i small/$i ; done

Дальше делаем просто:

13.27 Как установить Maya 4.5 (В том числе под RedHat 9/ASP 9/Fedora Core 1 и прочее)?

  1. Ставим maya из rpm.
  2. Переходим в /usr/aw/maya/bin
  3. Находим файлик Maya 4.5
  4. В этом файле ищем строчки (27 строка):
    case Linux:
    set lib = lib
    
    После них ставим
    set lsFlags = '-l'
    setenv LD_ASSUME_KERNEL 2.4.2
    
    И весь кусок у нас выглядит так:
    /usr/aw/maya/bin/Maya4.5:
    
    case Linux:
    set lib = lib
    set lsFlags = '-l'
    setenv LD_ASSUME_KERNEL 2.4.2
    breaksw
    

13.28 Как установить в консоли развертку больше 60Гц при использовании framebuffer?

Нужно настроить buffer.

Но есть тонкость - если вы используете родные модули для карт от ATI, Matrox и NVIDIA (и в случае последней карты остаетесь без драйверов с поддержкой 3D), то проблем не будет.

Но если вы используете универсальный vesa framebuffer, ядро придется предварительно патчить, потому как 60Гц на мониторе при высоком разрешении никому не нужно. Есть небольшая тонкость - кажется, что карты GForce FX 5600 и 5900 игнорируют команды переключения частоты.

Вот страница патча http://dev.gentoo.org/~spock/projects/vesafb-tng/. Прочитать немного о патче можно в этом обсуждении. Подходит только для карт, поддерживающих VBE 3.0 (например, GeForce), для VBE 2.0 (например, Radeon 8500) придется делать дополнительные телодвижения.

13.29 Как изменить разрешение в консоли? Как настроить framebuffer?

Нужно настроить framebuffer, а если он уже настроен и драйвер не стандартная vesafb, а специфичный драйвер карты, то можете для изменения частоты использовать утилиту fbset (иначе частоту придется менять при загрузке).

Почитать о том, как все настроить, можно здесь и по материалу этой статьи написана еще одна.

Есть две тонкости:

  1. Стандартный драйвер vesafb выдает только 60Гц, но это можно обойти.
  2. Русский шрифт будет только в первой консоли. Для руссификации остальных придется сделать скрипт (или взять готовый из документа по русификации Slackware.

13.30 Как увеличить разрешение и частоту развертки консоли не используя framebuffer?

Для этого нужна специальная утилита SVGATextMode. Лежит она здесь: ftp://sunsite.unc.edu/pub/Linux/utils/console/

Чтобы она нормально собралась на современных системах, нужно в файл cfgfile.y добавить после строки #include <stdlib.h> строчку #include <stdio.h>

Также рекомендуется посмотреть на патчи под определенные карточки.

За ответ благодарим lumag.

13.31 Как ускорить работу KDE?

Помимо пересборки ядра под свою систему, X-сервера, выключения ненужных системных служб и сервисов самого KDE можно прочитать вот эту статью.


Next Previous Contents