Есть 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 на генном уровне). Т.е. стоит попробовать несколько и выбрать то, что /просто нравится именно вам/.
Несколько интересных, хоть и местами спорных, статей имеется на http://linux-forever.narod.ru/winman/index.htm
На http://linuxportal.ru/entry.php/P491_0_3_0 можно почитать о том, "Как поменять Display Manager" в подробностях.
В KDE 3.1.x и выше есть программа "Screen Resize & Rotate" (K - > System tools) . Пускаете ее как апплет, она садится в трей. Ею переключаете разрешение - размер десктопа тоже будет меняться.
В 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 с изменившимся размером окон.
Откройте терминал и дайте команду xrandr. После нее будут выведены возможные разрешения и рабочие частоты. В строке, помеченной звездочкой, ваше текущее разрешение и частота обновления.
Чем/как отрегулировать яркость в LCD дисплеях Apple Cinema Display?
http://acdcontrol.sourceforge.net/
Вообще-то никак :) Лучше выключить эту возможность в KDE, и использовать средства X-сервера, а в качестве индикатора - kkbswitch или если не хватает функционала последней, xxkb.
Видел предположение, что если в файле ~/.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 этот способ не работал.
Для GTK-приложений - в консоли выполнить export GDK_USE_XFT=0
или прописать эту команду в ~/.gtkrc. Если после этого приложения перестанут видеть TTF-шрифты, нужно прописать директорию с ними в файле конфигурации X-сервера, либо FontServer'а.
Чтобы убрать сглаживание с помощью FontServer'а (спасибо Demetrio):
В ~/.fonts.conf
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<!-- /etc/fonts.conf file to configure system font access -->
<fontconfig>
<!-- Enable sub-pixel rendering
<match target="font">
<test qual="all" name="rgba">
<const>unknown</const>
</test>
<edit name="rgba" mode="assign"><const>rgb</const></edit>
</match>
-->
<match target="font">
<test name="size" compare="less_eq">
<double>12</double>
</test>
<edit name="antialias" mode="assign">
<bool>falselt;/bool>
</edit>
</match>
<match target="font">
<test name="pixelsize" compare="less_eq">
<double>12</double>
</test>
<edit name="antialias" mode="assign">
<bool>false</bool>
</edit>
</match>
<match target="pattern" name="family">
<test qual="any" name="family">
<string>fixed</string>
</test>
<edit name="family" mode="assign">
<string>mono</string>
</edit>
</match>
<match target="pattern" name="family">
<test qual="any" name="family">
<string>console</string>
</test>
<edit name="family" mode="assign">
<string>mono</string>
</edit>
</match>
<match target="pattern" name="family">
<test qual="any" name="family">
<string>mono</string>
</test>
<edit name="spacing" mode="assign">
<int>100</int>
</edit>
</match>
<match target="pattern" name="family">
<test qual="any" name="family">
<string>Helvetica</string>
</test>
<edit name="family" mode="assign">
>string<sans-serif</string>
</edit>
</match>
<alias>
<family>serif</family>
<prefer>
<family>Times New Roman</family>
</prefer>
</alias>
<alias>
<family>sans-serif</family>
<prefer>
<family>Verdana</family>
</prefer>
</alias>
<alias>
<family>monospace</family>
<prefer>
<family>Andale Mono</family>
</prefer>
</alias>
</fontconfig>
Дополнительно можно прочитать о настройке шрифтов здесь.
Также можно добавить параметр в $HOME/.Xresources
Xft.antialias: false
Для Qt-приложений можно через Центр Управления KDE - Центр Управления -> Внешний вид -> Шрифты -> Использовать сглаживание для шрифтов (Control Center -> Appearance & Themes -> Fonts -> Use anti-alising for fonts)
Из-за проблем с лицензированием алгоритма сглаживания FreeType распространяется с выключенными по умолчанию функциями сглаживания шрифтов, где используются пропиетарные алгоритмы. В нашей России патенты на эти алгоритмы не действуют, поэтому мы можем включить их использование и пересобрать FreeType. В общем случае подойдет способ, описанный здесь.
В redhat/fedora вы можете поправить соответствующий параметр в spec-файле и пересобрать пакет.
Есть дополнительные способы по улучшению вида шрифтов: http://www.freebsd.org/gnome/docs/faq2.html#q11
Это файлы gtkrc. Существуют глобальные настройки и локальные. Локальные хранятся в домашней папке, в файле &.gtkrc, глобальные в /etc/gtk/gtkrc и /etc/gtk/gtcrc.ru.
Файл /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"
Глобальные настройки зависят от выбранной темы /etc/gtk-2.0/gtkrc:
gtk-theme-name = "Bluecurve"
Локальные настройки для приложений GTK 2.x хранятся в ~/.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, если он есть конечно.
Дополнение от int19h:
Стоит упомянуть про мерзкую привычку GNOME2 в некоторых дистрибутивах использовать вместо ~/.gtkrc
автоматически создаваемый ~/.gtkrc-1.2-gnome
, в котором первой строчкой идет include ~/.gtkrc-mine
. Аналогично для GTK2 файл ~/.gtkrc-2.0
игнорируется под GNOME с запущенным gnome-settings-daemon.
Скачиваем тему, распаковываем ее куда-нибудь, вроде $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 шрифты и темы можно переключить следующим образом.
Шрифты: Applications -> Desktop Preferences -> Font, поставить переключатель в положение Monochrome
Темы: Applications -> Desktop Preferences -> Theme
Строго говоря, эта схема может меняться в зависимости от дистрибутива. Дистронезависимый способ: открыть Nautilus в режиме обозревателя (browser mode) и набрать в строке адреса "preferences:///". Там будут значки с подписями Font и Theme, соответственно.
Если у вас не стоит Gnome, проще воспользоваться gtk-theme-switch. Если у вас его нет, вы можете скачать его здесь: http://www.muhri.net/nav.php3?node=gts (отдельно версия для приложений gtk-1 и gtk-2) или попробовать найти в своем дистрибутиве.
Это происходит потому, что в файле /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 можно посмотреть в предыдущем вопросе.
man editres
man xrdb
Данный плагин работает и в 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.
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
Задать такую переменную:
export FLASH_GTK_LIBRARY=libgtk-x11-2.0.so.0
Скорее всего это не Mozilla, а контент открытых страниц. Одным из радикальных, но довольно действенных методов борьбы с этим явлением является отказ от использования flash-plugin (просто не устанавливать). Как вариант, можно поставить Adblock ( http://adblock.mozdev.org) и запретить *.swf.
/usr/lib/mozilla/plugins
)
Скорее всего это
проблема с обращением к ipv6.
Добавьте в /etc/modprobe.conf
(для ядер 2.4 - /etc/modules.conf
):
# Turn off IPv6
alias net-pf-10 off
alias ipv6 off
Настройки шрифтов и цвета хранятся в файле ~/.mozilla/default/*/chrome/userChrome.css. Если его там нет, то создайте вручную. Вот пример настройки шрифтов:
/* UI fonts */
* {
font-size: 8pt !important;
font-family: Tahoma !important;
}
menubar {
font-weight: bold !important;
}
http://www.mozilla.org/unix/customizing.html
Воспользоваться скриптом отсюда - http://www.eightlines.com/neil/mozskin/installjar.html.
Нужно поставить соответствующий плагин для mplayer.
Лежит он здесь - http://mplayerplug-in.sourceforge.net/
Чтобы указать кодировку, поправьте в файле /usr/share/services/searchproviders/google.desktop
параметр Encoding.
Если хочется отключить писк в консоли (для 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
В ядрах серии 2.6.х можно просто не собирать поддержку для pc speaker.
Если знаком английский, вы даже сможете прочитать описания команд (а если нет, читайте русские маны, чтобы узнать. что они делают).
http://www.linuxdevcenter.com/linux/excerpt/LinuxPG_quickref/linux.pdf
man console_codes
user@linux# nohup COMMAND [ARG]...
Программа nohup запускает COMMAND таким образом, что она игнорирует сигнал hangup, что позволяет ей продолжать работу и после выхода из терминала. Также, она перенаправляет весь вывод программы в файл $HOME/nohup.out и понижает приоритет выполняемой программы.
C-A c - создать новое окно
C-A C - очистить экран
C-A l - обновить вывод
C-A d - отключиться от сеанса.
C-A K - убить текущее окно
C-A C-D - отключиться и покинуть screen
C-A x - запереть экран
C-A C-\ - убить все и выйти
C-A * - показать все экраны, которые сейчас есть
C-A w - показать список окон
C-A bscp - предыдущее окно
h
p
C-A spc - следующее окно
n
Можно запустить Screen сразу в отключенном от сеанса режиме:
screen -m -r
Подключиться заново к сеансу (скажем, посмотреть как у нас все собирается):
user@remotehost $ screen -D -R
или
user@remotehost $ screen -D -RR
Проблема перемотки
здесь
Очень рекомендуем прочитать man screen (он подробный и хорошо написан).
user@remotehost $ beep-media-player http://64.236.34.67:80/stream/2007 &
user@remotehost $ disown beep-media-player
fg
, bg
, job
Прямо из одного из окошек screen'а пишем: screen program. При этом запустится не ещё один screen под уже существующим, как можно было подумать, а уже существующий screen создаст ещё одно окошко, в котором без всяких bash'ей будет бегать программка program (с уже правильным заголовком).
Задать где-нибудь в своих файлах конфигурации (например, /.bashrc) export TERM=linux
C-A [ и сколь pgUp/pgDn или Up/Down
Воспользуйтесь командой nice. Чтобы понизить приоритет, напишите нечто вроде:
user@linux$ nice -n 10 myprogram
Подробности можно узнать, набрав man nice
Нужны утилиты отсюда http://tech9.net/rml/schedutils/
Сама утилита называется taskset.
Прочитать обо всем можно здесь: http://www.kernel.org/pub/linux/kernel/people/rml/cpu-affinity/README-cpu-affinity
Посмотреть на каком процессоре выполняется задача можно с помощью обычной утилиты top
.
Это настройка не терминала, а WM/DE.
Для FluxBox, это можна сделать например так: добавить в
~/.fluxbox/keys строку
"Mod4 d : ToggleDecor"
После этого нажатием на [Win+d] можно управлять наличием рамки у любого окна.
Например, для WindowMaker - Свойства окна (правая кнопка мыши по заголовку)->Атрибуты->Скрыть строку заголовка
man tar
в районе -M
Либо man split
и натравить split на tar.gz.
Есть несколько способов (и программ).
Первый: в терминале задаем переменную LANG=ru_RU.cp1251. Запускаем любимый клиент. Файлы будут выглядеть нормально.
Второй: ставим gftp - http://gftp.seul.org/. В свойствах выбираем Параметры->Набор символов удаленной стороны. Проблема в том, что они придут на машину в "непотребной" кодировке. Существуют патчи - можно почитать об этом здесь.
Третий: запускаем mozilla или konqueror и выбираем кодировку. У konqueror соответствующий пункт появится в меню tools (Select Remote Charset). Да, если вы перешли с одного сайта, указав там кодировку cp1251, на другой с cp1251, названия файлов на другом будут отображаться некорректно. Лечится просто - выставляете какую-нибудь другую кодировку, затем снова cp1251.
Четвертый: Пользуемся lftp:
lftp :~> set ftp:charset CP1251
lftp :~>open <имя виндового ftp сервера>
Примечание:
Для первых двух случаев файлы после закачки придется переименовать. Первый способ не сработает для fedora core.
Есть такой пакет
ImageMagick, Входит он практически в любой дистрибутив и содержит группу утилит, предназначенных для различного преобразования файлов. Полный список поддерживаемых форматов вы можете узнать, набрав man ImageMagick
.
В качестве примера возьмем задачу по уменьшению группы файлов (jpeg уменьшить пропорционально, чтобы координата x равнялась 800 пикселям).
Пишем такой скрипт, у меня он называется conv (автор неизвестен):
#!/bin/sh
for i in $@ ; do convert -geometry 800 $i small/$i ; done
Дальше делаем просто:
./conv *.jpg
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
Нужно настроить 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) придется делать дополнительные телодвижения.
Нужно настроить framebuffer, а если он уже настроен и драйвер не стандартная vesafb, а специфичный драйвер карты, то можете для изменения частоты использовать утилиту fbset (иначе частоту придется менять при загрузке).
Почитать о том, как все настроить, можно здесь и по материалу этой статьи написана еще одна.
Есть две тонкости:
Для этого нужна специальная утилита SVGATextMode. Лежит она здесь: ftp://sunsite.unc.edu/pub/Linux/utils/console/
Чтобы она нормально собралась на современных системах, нужно в файл cfgfile.y
добавить после строки #include <stdlib.h>
строчку #include <stdio.h>
Также рекомендуется посмотреть на патчи под определенные карточки.
За ответ благодарим lumag.
Возможны следующие варианты:
/lib/modules/ваше_ядро/
файл с названием rivafb.ko и выполнить команду depmod -a
, после чего перегрузиться.
Можно воспользоваться программой fbdump.
Можно воспользоваться такой командой:
user@localhost $: cat /dev/fb0
Воспользоваться таким скриптом. Выходной формат - bmp:
#!/usr/bin/perl
$ttynum=shift or die "Usage: grab <vttynum>\n";
die "$ttynum: Incorrect virtual console number\n" unless $ttynum=~/^\d+$/;
$ttydev="/dev/tty" . $ttynum;
$vcsadev="/dev/vcsa" . $ttynum;
open(VCSA,$vcsadev) or die "Cannot open $vcsadev: $!\n";
$len=read(VCSA,$buf,16384);
close(VCSA);
($height,$width,$curx,$cury)=unpack('C4',$buf);
open(T,$ttydev) or die "Cannot open $ttydev: $!\n";
$fnt=pack('L4096',0);
$fntx=pack('SSP',256,32,$fnt);
ioctl(T,0x4B6B,$fntx) or die "Cannot grab console font: $!\n";
close(T);
($nchars,$fheight)=unpack('SS',$fntx);
if($fheight>=14) {
$thickness=2;
} else {
$thickness=1;
}
foreach $c (0..255) {
my @tmp;
my @ch=split(//,substr($fnt,$c*32,$fheight));
push @tmp, [ split(//,unpack('B8',shift @ch)) ] while @ch;
push @font,[ @tmp ];
}
print 'BM'.pack('L29',
$width*$height*$fheight*4+118,0,118,40,$width*8,$height*$fheight,0x40001,
0,$width*$height*$fheight*4,0x120b,0x120b,16,16,
0x000000,0x000080,0x008000,0x008080,0x800000,0x800080,0x808000,0xC0C0C0,
0x808080,0x0000FF,0x00FF00,0x00FFFF,0xFF0000,0xFF00FF,0xFFFF00,0xFFFFFF);
for($line=$height-1;$line>=0;--$line) {
my @img;
push @img,[] while (1..$fheight);
foreach $col (0..$width-1) {
($fgattr,$bgattr)=
split(//,unpack('h2',substr($buf,5+2*($line*$width+$col),1)));
$ch=unpack('C',substr($buf,4+2*($line*$width+$col),1));
if($line==$cury && $col==$curx) {
foreach $_ (1..$fheight-$thickness) {
push(@{$img[$fheight-$_]},
map {$_?$fgattr:$bgattr} @{$font[$ch][$_-1]});
}
foreach $_ (0..$thickness-1) {
push @{$img[$_]},($fgattr)x8;
}
} else {
foreach $_ (1..$fheight) {
push(@{$img[$fheight-$_]},
map {$_?$fgattr:$bgattr} @{$font[$ch][$_-1]});
}
}
}
print pack('H'.(8*$width),join('',@$_)) while $_=shift @img;
}
За ответ благодарим sS.
Запись в avi - http://sourceforge.net/projects/xvidcap
Запись в swf - http://www.unixuser.org/~euske/vnc2swf/
Запись сессии vnc - http://www.sodan.org/%7Epenny/vncrec/
Помимо пересборки ядра под свою систему, X-сервера, выключения ненужных системных служб и сервисов самого KDE можно прочитать вот эту статью.
Существенный прирост дает использование prelink'а (на данный момент его поддержка присутствует практически во всех современных дистрибутивах).
Есть такая вещь под названием xosd.
http://www.ignavus.net/software.html
Под xmms есть отдельный плагин.
Пакет для redhat/fedora core был найден на ATrpms
Если по виндовой сети - ищите в faq слово samba.
Если поднят ssh - sftp/scp.
Ну и можно ftp-сервер поднять.
Например, воспользоваться программой root-tail