Grey and Green
Manjaro, ACYL, баловство
http://i.imgur.com/QVUnTEO.png — с менюшкой
http://i.imgur.com/5IK3JSp.png — с ЛОРом
http://i.imgur.com/85U3waO.png — Терминал
Manjaro, ACYL, баловство
http://i.imgur.com/QVUnTEO.png — с менюшкой
http://i.imgur.com/5IK3JSp.png — с ЛОРом
http://i.imgur.com/85U3waO.png — Терминал
Общеизвестно, что на 10-15 и более вкладках, dwb и firefox жрут одинаково памяти, но при этом dwb начинает умирать уже где-то на 25 вкладке.
Качество рендеринга шрифтов, ощущение недодвижка (webkit-gtk VS gecko), другие вопросы и тем более главный из них, что сейчас разработка dwb заморожена навсегда (пока не форкнут, наверное), т.к. немец решил пилить новый обозреватель уже на Gecko.
Так вот, что страдать-то? votafak поделился ссылкой на крутого человека, который может в кастомизацию Firefox очень сильно.
Я себе подпилил под свою тему: http://i.imgur.com/0mSQxUo.png
Тот человек себе сделал более крутые, с классными вкладками, без urlbar'а вообще: http://fc04.deviantart.net/fs71/f/2014/277/1/a/twily_linux_desktop_v4__luna__...
Вот ссылка на него, там другие варианты еще есть: http://dwv91.deviantart.com
Кастомизация устанавливается/редактируется через Stylish + VimFX: вопрос с dwb закрыт.
Или есть какие-либо еще причины использовать эти обрезки? (dwb, luakit, etc)
Будет ли интересна вам вот такая тема: http://i.imgur.com/e80vr32.png
В галерею не могу, просил накинуть мне скор со старого аккаунта, но на мороз меня.
В общем теги заменил на иконки, добавил интерактив, т.е. если тег в фокусе - горит голубым, просто занят - белым, пустой черный, urgent красный, в таком стиле. В панель интегрирован плеер (mpd), управление и показывает текущий трек.
По клику на виджет часы он сменяется на виджет календарь (показывает дату, но иконка часы сменяется на иконку календарь).
На самом деле осом (особенно 3.5.*) - самый кастомизируемый wm, который можно желать, в целом можно много чего интересного сделать.
Все элементы рисовал сам.
Добрый вечер, господа. Это тред-howto о том, как сделать корректный автологин в иксы «на чистом systemd». В вики мне писать влом, да и никто её не читает, а тут и теги указать можно, и людей скастовать. Собственно, да: border-radius, ecko.
В чём вообще проблема? Проблема в том, что значительное количество людей делают это через банальнейшие костыли, настраивая автологин в текстовую консоль и запуская иксы из bashrc (или, чего хуже, из bash_profile). Это плохо по трём причинам:
systemd
/bin/agetty
/bin/login
PAM
/bin/bash
~/.bashrc
/bin/startx
Я предлагаю написать getty-подобный юнит, который будет запускать иксы от фиксированного пользователя с фиксированным номером дисплея на произвольном VT. (Почему так много хардкода? Потому что systemd — не дисплейный менеджер.)
Это тоже неидеальное решение. Например, нафиг идёт мультисит и возникают гонки между запуском иксов и обнаружением видеоустройств. Но этими недостатками мы пренебрежём.
Параграф один. logind, autovt и getty-подобные юниты. Getty могут запускаться двумя способами.
autovt@ttyN.service
, который засимлинкен на getty@.service
. Эта логика работает для tty2-tty6.
getty@tty1.service
включен по умолчанию и втягивается через getty.target
. Это даёт нам всегда запущенный getty на tty1.
Соответственно, допустим, у нас есть юнит xorg@.service, который запускает иксы на указанном VT.
Его нужно либо симлинкнуть под именем autovt@ttyN.service
, переопределив шаблонный юнит (тогда при переключении на выбранный VT иксы будут запускаться вместо getty — первый способ), либо отключить getty@tty1.service
и включить вместо него xorg@tty1.service
(тогда мы вместо всегда запущенного getty будем иметь всегда запущенные иксы — второй способ).
Параграф два. Xorg вместо getty. Итак, имеем юнит для иксов, написанный по аналогии с getty@.service: /etc/systemd/system/xorg@.service.
User=<впишитеюзера>
PAMName=login
-- это аналог su.
Conflicts=getty@%i.service
After=getty@%i.service
-- это некоторая защита от одновременного запуска getty на том же терминале.
StandardOutput=tty
StandardInput=tty-fail
-- это указание systemd запускать иксы подсоединёнными напрямую к терминалу, а не к логгеру (нужно для того, чтобы иксы можно было запускать не от рута... ах да, работает только с 1.16 и выше).
ExecStart=/etc/systemd/scripts/startx -D :0
-- это мой велосипед вместо startx с нескучным синтаксисом и exec xinit
в конце, что важнее.
Дело в том, что systemd из-за вероятного бага при остановке юнита отправляет SIGTERM/SIGKILL не всем процессам в дереве, начиная с startx, а только самому startx. А поскольку он написан на шелле, то он радостно игнорирует SIGTERM и ждёт завершения xinit, которому никакого сигнала не приходит. Следовательно, проблему решаем переписыванием startx так, чтобы он в конце не запускал xinit подпроцессом, а делал exec xinit
, заменяя им собственный процесс. Тогда сигнал приходит xinit'у, а он его корректно ловит и убивает иксы.
Всё остальное скопипащено из getty@.service.
Да, дисплей захардкожен в :0. Пара слов о назначении VT: процесс startx получает номер VT в переменной $XDG_VTNR
(её устанавливает pam_systemd), а из startx запускается /etc/X11/xinit/xserverrc
, который об этой переменной знает и передаёт X-серверу параметр vt$XDG_VTNR
.
Параграф три. Запускаем.
Итак, помещаем юнит в /etc/systemd/system/xorg@.service
, startx в /etc/systemd/scripts/startx
(можно куда угодно) и делаем:
systemctl daemon-reload
systemctl disable getty@tty1
systemctl enable xorg@tty1
После этого можно ребутиться и надеяться, что запустится. Ах да, дисплейный менеджер тоже стоит отключить, потому что он запустит свой X-сервер и произойдёт адъ и израиль.
Как-то так. Сейчас три часа семнадцать минут по московскому времени, поэтому прошу меня извинить за упрт стиль изложения, краткость, неконсистентное использование форматирования и так далее.
Решил привести в порядок загрузочный usb hdd. Лежала пара полезных iso-шков в директории, в grub2 прописана руками загрузка loopback каждого ядра из них. Думал, сейчас появилась в грабе функция передачи загрузки с указанного iso без выковыривания параметров ядра, пути к initrd... А оказывается НЕТ. Т.е. положить десяток iso на внешний диск и простенько организовать мультибут все еще нельзя.
Может кто-то сможет объяснить технические препятствия к этому, почему нельзя незаглядывая внутрь iso просто загрузиться с него, обязательно надо выковыривать все параметры и варианты загрузки руками?
GTK: Iris Light
Обои: Berries (источник не найден)
Иконки: перекрашенные Flattr
Шрифты: Russia и PT Mono
Долгое время изучал Wiki, но на многие вопросы так и не нашел ответов, поэтому начал изучать lua код. И в результате этого изучения, родилась эта статья(перенесена на wiki). Опытные, подскажите, может где то есть возможность оптимизировать описанный код.
Панель задач - отображает по умолчанию клиенты с активного тега/тегов.
Перед началом работы скопируйте библиотеки в домашний каталог, если до сих пор этого не сделали.
mkdir -p ~/.config/awesome/themes
cp /etc/xdg/awesome/rc.lua ~/.config/awesome/rc.lua
cp -R /usr/share/awesome/lib/* ~/.config/awesome/
cp -R /usr/share/awesome/themes/* ~/.config/awesome/themes/
Вообще, за обработку панели задач отвечает файл awful/widget/tasklist.lua
Так что если возникнет желание ознакомится со всеми возможностями панели задач, изучите этот файл. Также для работы этого файла потребуются другие библиотеки lua (вызываемые оттуда функции и т.д.), они прописаны в начале файла, это те самые require. Имейте в виду, что код для 3.4 и 3.5 в библиотеке tasklist, как и названия функций в них довольно существенно отличается.
==Управление списком задач==
Для управления открытми клиентами существуют следующие клавиши:
Mod4 + Shift + r - Перерисовать активное окно.
Mod4 + m - Развернуть на весь экран.
Mod4 + n - Свернуть.
Mod4 + Control + n - Восстановить.
Mod4 + f - Полноэкранный режим.
Mod4 + Shift + c - Убить выбранный клиент.
Mod4 + t - Прикрепить поверх всех.
==Разбираем rc.lua==
Разбирая rc.lua можно обнаружить следующий код, связанный с панелью задач
mytasklist = {} --создаем таблицу панели задач
mytasklist.buttons = awful.util.table.join( --прикрепляем клавиши мыши к панели задач
awful.button({ }, 1, function (c) --нажатие левой кнопки
if c == client.focus then --свернуть/развернуть приложение
c.minimized = true
else
-- Without this, the following
-- :isvisible() makes no sense
c.minimized = false
if not c:isvisible() then
awful.tag.viewonly(c:tags()[1])
end
-- This will also un-minimize
-- the client, if needed
client.focus = c
c:raise()
end
end),
awful.button({ }, 3, function () --нажатие правой клавиши
if instance then --отображает список всех клиентов/приложений
instance:hide()
instance = nil
else
instance = awful.menu.clients({
theme = { width = 250 }
})
end
end),
awful.button({ }, 4, function () --колесо прокрутки
awful.client.focus.byidx(1) --перейти на следующий клиент
if client.focus then client.focus:raise() end
end),
awful.button({ }, 5, function () --колесо прокрутки
awful.client.focus.byidx(-1) --перейти на предыдущий клиент
if client.focus then client.focus:raise() end
end))
....
-- Create a tasklist widget - создание виджета tasklist
mytasklist[s] = awful.widget.tasklist(s, awful.widget.tasklist.filter.currenttags, mytasklist.buttons)
....
layout:set_middle(mytasklist[s]) --Располагаем список задач в центре панели
--awful.button({ }, 4, function () --колесо прокрутки
-- awful.client.focus.byidx(1) --перейти на следующий клиент
-- if client.focus then client.focus:raise() end
-- end),
--awful.button({ }, 5, function () --колесо прокрутки
-- awful.client.focus.byidx(-1) --перейти на предыдущий клиент
-- if client.focus then client.focus:raise() end
-- end))
И добавьте завершающую скобку после закомментированного кода, иначе выдаст ошибку
)
===Варианты для правой кнопки мыши===
====Закрыть приложение====
Для того, чтобы при нажатии правой кнопки мыши мы могли закрывать приложение (как в OpenBox или Tint2), а не открывать список меню, переделайте код (или закомментируйте его, если вы не планируете использовать правую клавишу для панели задач).
awful.button({ }, 3, function ()
if instance then
instance:hide()
instance = nil
else
instance = awful.menu.clients({
theme = { width = 250 }
})
end
end),
awful.button({ }, 3, function (c)
c:kill()
end ),
====Альтернативное меню====
Если вас не устраивает стандартное контекстное меню в панели задач, то вы можете его заменить, на то, которое нужно именно вам, далее приводится лишь один из возможных вариантов. Для начала заменим стандартный вызов awful.button на следующий:
awful.button({ }, 3, function (c)
if instance then
instance:hide()
instance = nil
else
instance = context_menu(c)
end
end ),
function context_menu(c)
if c.minimized then --меняем текст элемента меню в зависимости от состояния
cli_min = "Развернуть"
else
cli_min = "Свернуть"
end
if c.ontop then
cli_top = "★ Поверх всех"
else
cli_top = " Поверх всех"
end
if awful.client.floating.get(c) then
cli_float = "★ Floating"
else
cli_float = " Floating"
end
--создаем список тегов(в виде подменю), для перемещения клиента на другой тег
tag_menu = { }
for i,t in pairs(tags.names) do
if not tags[c.screen][i].selected then --удаляем из списка выбранный тег/теги
table.insert(tag_menu, { tostring(t), function() awful.client.movetotag(tags[c.screen][i]) end } )
end
end
taskmenu = awful.menu({ items = { { "Переместить на", tag_menu },
{ cli_min, function() c.minimized = not c.minimized end },
{ "Fullscreen", function() c.fullscreen = not c.fullscreen end, beautiful.layout_fullscreen },
{ cli_float, function() awful.client.floating.toggle(c) end },
{ cli_top, function() c.ontop = not c.ontop end },
{ "Закрыть", function() c:kill() end },
width = 150
} )
taskmenu:show()
return taskmenu
end
==Отобразить только иконки или текст==
Если вас не устраивает отображение текста и иконок одновременно (например вы большой любитель Unity или Win7), то можно настроить Awesome для отображения только иконок или только текста у приложений. Есть один недостаток, если для приложения не назначено иконки, то соответсвенно и отображать будет нечего (у меня такая ситуация наблюдалась с терминалом xterm, если у вас похожая ситуация, то назначьте иконку по умолчанию для приложений не имеющих собственных иконок(описано ниже).
Откройте ~/.config/awesome/awful/widget/tasklist.lua и в функции widget_tasklist_label_common() (для 3.4) или tasklist_label (для 3.5) замените return text, bg.... на следующий код:
return not theme.tasklist_only_icon and text or '', bg, status_image, not tasklist_disable_icon and c.icon or nil
Затем, создайте переменную в вашем theme.lua со следующим содержанием:
--для отображения только иконок
theme.tasklist_only_icon = true
--для отображения только текста
tasklist_disable_icon = true
Примечание: Не определяйте как одновременно обе этих переменных, иначе вы вообще не увидите своих задач.
Есть еще один способ убрать текст в Awesome 3.4 (к сожалению в 3.5 код вызываемой функции был изменен и поэтому этот способ в нем не работает), но здесь все манипуляции мы будем производить только с файлом rc.lua. Найдите следующий код:
mytasklist[s] = awful.widget.tasklist(function(c)
return awful.widget.tasklist.label.currenttags(c, s)
end, mytasklist.buttons)
mytasklist[s] = awful.widget.tasklist(function(c)
local task = { awful.widget.tasklist.label.currenttags(c, s) }
return '', task[2], task[3], task[4]
end, mytasklist.buttons)
Аналогичным способом можно удалить и иконки в Awesome 3.4. Откройте ваш rc.lua, найдите
mytasklist[s] = awful.widget.tasklist(function(c)
return awful.widget.tasklist.label.currenttags(c, s)
end, mytasklist.buttons)
mytasklist[s] = awful.widget.tasklist(function(c)
local task = { awful.widget.tasklist.label.currenttags(c, s) }
return task[1], task[2], task[3], nil
end, mytasklist.buttons)
==Иконка по умолчанию==
Для некоторых приложений не установлены иконки по умочанию (обычно это терминалы), и если вы, например, используете только иконки в панели задач, или используете отображение приложений в тегах, то приложения без иконок вы просто не увидите. Для решения этой проблемы отредактируйте функцию "tasklist_update" в файле ~/.config/awesome/awful/widget/tasklist.lua. В функции tasklist_update перед строкой table.insert вставьте следующий код:
if not c.icon then
c.icon = capi.image("path/to/icon/default_icon.png")
end
==Настройка внешнего вида==
Для настройки панели задач, в theme.lua вы можете определить следующие переменные:
===Awesome 3.5===
theme.tasklist_fg_normal - цвет текста панели задач, если значение не определено, то используется значение theme.fg_normal
theme.tasklist_bg_normal - цвет фона панели задач, если значение не определено, то используется значение theme.bg_normal
theme.tasklist_fg_focus - цвет текста активного приложения, если значение не определено, используется значение theme.fg_focus
theme.tasklist_bg_focus - цвет фона активного приложения, если значение не определено, то используется значение theme.bg_focus
theme.tasklist_fg_urgent - цвет текста «срочного» приложения, если не определено, то будет использоваться значение из theme.fg_urgent
theme.tasklist_bg_urgent цвет фона «срочного» приложения, если не определено, то будет использоваться значение theme.bg_urgent
theme.tasklist_fg_minimize - цвет текста свернутого приложения, если не определено, то будет использоваться значение из theme.fg_minimize
theme.tasklist_bg_minimize - цвет фона свернутого приложения, если не определено, то будет использоваться значение из theme.bg_minimize
theme.bg_image_normal - позволяет установить изображение для неактивных в данный момент клиентов
theme.bg_image_focus - позволяет установить фоновое изображение для активного клиента
theme.bg_image_urgent - позволяет установить фоновое изображения для «срочного» клиента
theme.bg_image_minimize - позволяет установить фоновое изображение для свернутого клиента
theme.tasklist_disable_icon - позволяет отключить отображение иконок, если значение равно true
theme.tasklist_font - шрифт для панели задач, если не определено, то будет испльзоватся шрифт из theme.font
theme.tasklist_sticky - позволяет установить текст для «липкого» клиента, если значение не установлено, то используется «▪»
theme.tasklist_ontop - позволяет установить текст/символ для приложения «поверх всех», если значение не установлено, то используется '⌃'
theme.tasklist_floating - текст для приложения в «плавающем» режиме, если значение не установлено, то используется '✈'
theme.tasklist_maximized_horizontal - текст для развернутого по горизонтали приложения, если на установлено, то используется '⬌'
theme.tasklist_maximized_vertical - текст для приложения развернутого по вертикали, если на установлено, то используется '⬍'
===Awesome 3.4===
Здесь возможностей по настройке намного меньше, это еще одна причина перейти на более новую версию.
theme.tasklist_fg_focus - цвет текста активного приложения, если значение не определено, используется значение theme.fg_focus
theme.tasklist_bg_focus - цвет фона активного приложения, если значение не определено, то используется значение theme.bg_focus
theme.tasklist_fg_urgent - цвет текста "срочного" приложения, если не определено, то будет использоваться значение из theme.fg_urgent
theme.tasklist_bg_urgent цвет фона "срочного" приложения, если не определено, то будет использоваться значение theme.bg_urgent
theme.tasklist_fg_minimize - цвет текста свернутого приложения, если не определено, то будет использоваться значение из theme.fg_minimize
theme.tasklist_bg_minimize - цвет фона свернутого приложения, если не определено, то будет использоваться значение из theme.bg_minimize
theme.tasklist_floating_icon - иконка для приложения в "плавающем" режиме
theme.tasklist_font - шрифт для панели задач, если не определено, то будет испльзоватся шрифт из theme.font
===Высота панели ===
Если вас не устраивает стандартная высота панели задач, то ее можно изменить, для этого найдите в rc.lua код отвечающий за создание контейнера mywibox и измените его следующим образом:
mywibox[s] = awful.wibox({ position = "top", height = 24, screen = s })
bottomwibox = {}
bottomwibox[s] = awful.wibox({ position = "bottom", height = 27, screen = s })
bottomwibox[s].widget = {
{
mylauncher,
layout = awful.widget.layout.horizontal.leftright
},
mytasklist[s],
layout = awful.widget.layout.horizontal.rightleft
}
==Порядок открытых приложений==
По умолчанию новое приложение отображается слева от открытых ранее. Но если вы привыкли к другому, например в Gnome или KDE, то можно настроить, чтобы вновь открываемые приложения открывались справа, т.е. список задач был отсортирован по запуску, где первым в списке будет первое открытое приложение, а последним соответственно последнее. Для этого необходимо открыть файл ~/.config/awesome/awful/widget/tasklist.lua. Все манипуляции с этими файлами лучше всего делать когда они находится в домашнем каталоге, чтобы если вы что-то испортите, можно было их легко восстановить. Итак, найдите в этом файле функцию "function tasklist_update" в ней есть следующая строка:
"'Awesome 3.4"'
table.insert(shownclients,c)
table.insert(shownclients, 1, c)
table.insert(clients, c)
table.insert(clients, 1, c)
==Ширина приложений в списке задач ==
Если вас не устраивает, то, что одно запущенное приложение можент занимать все доступное пространоство, на панели задач, то это поведение можно немного изменить. Для этого потребуется отредактировать файл ~/.config/awesome/awful/widget/tasklist.lua
===Awesome 3.4===
Найдите функцию new, в ней необхоидмо изменить
layout = layout.horizontal.flex
layout = layout.horizontal.leftright
Найдите функцию tasklist.new затем замените
local w = base_widget or flex.horizontal()
local w = base_widget or fixed.horizontal()
local fixed = require("wibox.layout.fixed")
Правда ширина каждого клиента будет зависеть от названия, в принципе это тоже можно поправить если вам требуется фиксированная ширина клиентов, для этого нужно изменить в файле tasklist.lua функцию widget_tasklist_label_common (3.4) или tasklist_label (в 3.5): В начало файла поместите
local string = string
if #name >20 then
name = string.sub(name,1,20)
end
Есть еще один ньюанс, при изменении испльзуемой схемы(layout), приложения теперь перестают масштабироваться, и в результате их теперь на панель входит штук 5, конечно это можно изменить, но изменений потребуется достаточно много и они уже выходят за рамки данной статьи.
==Список клиентов ==
По умолчанию в файле rc.lua для обработки списка клиентов для tasklist используется следующий код:
Awesome 3.5
mytasklist[s] = awful.widget.tasklist(s, awful.widget.tasklist.filter.currenttags, mytasklist.buttons)
Awesome 3.4
mytasklist[s] = awful.widget.tasklist(function(c)
return awful.widget.tasklist.label.currenttags(c,s)
end, mytasklist.button)
Awesome 3.4
awful.widget.tasklist.label.allscreen - для отображения клиентов со всех экранов
awful.widget.tasklist.label.alltags - для отображения клиентов со всех тегов текущего экрана
awful.widget.tasklist.label.currenttags - для отображения клиентов с текущего тега
awful.widget.tasklist.label.focused - для оторажения только клиентов в фокусе
Awesome 3.5
awful.widget.tasklist.filter.allscreen - для отображения клиентов со всех экранов
awful.widget.tasklist.filter.alltags - для отображения клиентов со всех тегов текущего экрана
awful.widget.tasklist.filter.currenttags - для отображения клиентов с текущего тега
awful.widget.tasklist.filter.minimizedcurrenttags - для отображения свернутых клиентов на текущем теге
awful.widget.tasklist.filter.focused - для оторажения только клиентов в фокусе
Awesome 3.5 - tasklist.lua - function tasklist_update
if not (c.skip_taskbar or c.hidden
or c.type == "splash" or c.type == "dock" or c.type == "desktop")
and filter(c, s) then
table.insert(clients, c)
end
==Сигналы==
Сигналы - это система сообщений которую рассылает ядро Awesome для управления виджетами, клиентами, тегами и т.д. Подробне ознакомится с системой сигналов вы можете [Signals/ru|здесь]. Итак, поддерживаются следующие сигналы:
tag.attached_connect_signal(screen, "property::selected", u)
tag.attached_connect_signal(screen, "property::activated", u)
capi.client.connect_signal("property::urgent", u)
capi.client.connect_signal("property::sticky", u)
capi.client.connect_signal("property::ontop", u)
capi.client.connect_signal("property::floating", u)
capi.client.connect_signal("property::maximized_horizontal", u)
capi.client.connect_signal("property::maximized_vertical", u)
capi.client.connect_signal("property::minimized", u)
capi.client.connect_signal("property::name", u)
capi.client.connect_signal("property::icon_name", u)
capi.client.connect_signal("property::icon", u)
capi.client.connect_signal("property::skip_taskbar", u)
capi.client.connect_signal("property::screen", u)
capi.client.connect_signal("property::hidden", u)
capi.client.connect_signal("tagged", u)
capi.client.connect_signal("untagged", u)
capi.client.connect_signal("unmanage", u)
capi.client.connect_signal("list", u)
capi.client.connect_signal("focus", u)
capi.client.connect_signal("unfocus", u)
u = function () tasklist_update(screen, w, buttons, filter, data, style, uf) end
После прочтения поста вспомнил свои прошлогодние затеи с раскрашиванием терминалов. Заново прочитал это и это, немного перепелил вывод скрипта под себя.
Скрипт автоматом генерирует цветовую схему для терминалов и GTK2/3, настроен под тёмную гамму. Я использую для этих наркоманств угловатую тему Mist, но вы можете перепилить под ту же более симпатичную и аккуратную oomox, сделать опцию для светлого оформления и терминалов (или, если хотите, я могу).
( Ну и как работает твоя развалюха? )
Читаю Немет - Unix и Linux. Руководство системного администратора, и не могу отделаться от мысли, что книга похожа на набор рецептов по установке и конфигурированию софта. То-есть после небольшого введения дается прикладное решение типа вот апач для вебсервера, вот конфиг-файл, тут такие вот опции есть, их можно покрутить. А хочется почитать что-то, что бы дало более глубокое понимание сути работы юникса, его архитектуры, в общем сути а не перечня настроек конфигов демонов. Что посоветуете?
Раньше я думал, что поставить gentoo - это крайне сложно и красноглазо и пытаться даже и не стоит. Но, устав от жёсткой политики меинтейнеров в debian (особенно по части jessie) с их навязыванием своего дефолта, а в особенности systemd, решил, что пора бы делать ноги. Как оказалось, не так страшен чёрт.
Установка генты оказалась относительно простой, прослеживались параллели с установкой арча несколько месяцев назад (после успешной установки и настройки окружения я, пожив на этом дистрибутиве пару дней, осознал, какой этот systemd весь клёвый и прекрасный, поэтому и снёс арч, накатив обратно crunchbang). Гибкость системы поражает, больше не нужно тащить действительно ненужные на практике функции. USE-флаги и маски - удобны и сделаны для людей. Что бы там ни говорили, но компиляция занимает относительно мало времени и вообще не мешает. Долго собираются только монструозные пакеты, которые всегда есть в бинарном варианте (у меня такие большие это libreoffice, а также firefox, который, к слову, всё равно ставил из исходников), так что причитания о вечных компиляциях - это байки и небылицы.
Быстро освоив portage и дополнительные инструменты, безо всякого труда восстановил привычное окружение (urxvt, i3, deadbeef, ST3, lxappearance, nitrogen и множество других утилит).
Теперь всё так:
По традиции - конфиги можно найти тут, а на рабочем столе обоина из японской анимации.
Отказался от Flash Player по понятным причинам.
Как можно привязать VLC в Firefox вместо Flash, чтобы он воспроизводил видео через VLC (Youtube + некоторые сайты, желательно конечно и стримы бы, но не обязательно). У меня Arch.
Доброго дня господа.
По мотивам.
ranger - отличный консольный файловый менеджер.
Когда-то обещался сделать.
Сроков не называл, но таки затянул, увы.
И так, вообще статейка хороша бы для какого-то блога, но поскольку таковых не имею - оставлю тут в виде файла, кому будет интересно, разместите у себя в уютных блогах.
Так же призываю ekzotech, который проявлял интерес к этой теме.
pdf'ка на яндексе
Если протухнет, а кому-то будет нужно или интересно - кастуйте.
ЗЫ: жду ваших «не нужно» и мнений. Спасибо :)
Accessibility - не нужно. Есть vimperator.
user_pref("accessibility.typeaheadfind", false);
user_pref("accessibility.typeaheadfind.autostart", false);
user_pref("browser.fixup.alternate.enabled", false);
user_pref("keyword.enabled", false);
user_pref("browser.search.suggest.enabled", false);
user_pref("browser.urlbar.autoFill", false);
user_pref("browser.urlbar.autoFill.typed", false);
user_pref("browser.urlbar.autocomplete.enabled", false);
Анимации не нужны.
user_pref("browser.fullscreen.animateUp", 0);
user_pref("browser.tabs.animate", false);
user_pref("alerts.disableSlidingEffect", true);
Auto update не нужно.
user_pref("app.update.auto", false);
user_pref("lightweightThemes.update.enabled", false);
user_pref("extensions.update.enabled", false);
user_pref("browser.search.update", false);
HTML5 не нужен.
user_pref("browser.history.allowPopState", false);
user_pref("browser.history.allowPushState", false);
user_pref("browser.history.allowReplaceState", false);
user_pref("dom.event.clipboardevents.enabled", false);
user_pref("dom.indexedDB.enabled", false);
user_pref("dom.workers.enabled", false);
user_pref("geo.enabled", false);
user_pref("html5.offmainthread", false);
user_pref("media.autoplay.enabled", false);
user_pref("media.navigator.enabled", false);
user_pref("media.ogg.enabled", false);
user_pref("media.opus.enabled", false);
user_pref("media.peerconnection.aec_enabled", false);
user_pref("media.peerconnection.enabled", false);
user_pref("media.peerconnection.use_document_iceservers", false);
user_pref("media.raw.enabled", false);
user_pref("media.wave.enabled", false);
user_pref("media.webm.enabled", false);
user_pref("webgl.disable-extensions", true);
user_pref("webgl.disabled", true);
user_pref("layout.3d-transforms.enabled", false);
user_pref("layout.css.flexbox.enabled", false);
user_pref("network.websocket.enabled", false);
user_pref("dom.network.enabled", false);
user_pref("dom.webnotifications.enabled", false);
user_pref("full-screen-api.enabled", false);
user_pref("dom.battery.enabled", false);
user_pref("dom.vibrator.enabled", false);
Гуглоподелки не нужны.
user_pref("browser.safebrowsing.enabled", false);
user_pref("network.http.spdy.enabled", false);
Datareporting не нужен. Захочу - сообщу.
user_pref("datareporting.healthreport.service.enabled", false);
user_pref("dom.enable_performance", false);
user_pref("dom.ipc.plugins.flash.subprocess.crashreporter.enabled", false);
HEХ ненужна. Она отключается, наверняка, сама на неподдерживаемых системах, но почему-то в конфиге все остается включено.
user_pref("device.sensors.enabled", false);
user_pref("toolkit.telemetry.server", "http://localhost/NOT-EXIST/");
user_pref("network.IDN.use_whitelist", false);
user_pref("network.dns.disablePrefetch", true);
user_pref("network.prefetch-next", false);
user_pref("network.stricttransportsecurity.preloadlist", false);
user_pref("network.allow-experiments", false);
Безопасность и приватность не нужны по мнению Mozilla.
user_pref("security.mixed_content.block_active_content", true);
user_pref("security.mixed_content.block_display_content", true);
user_pref("network.http.sendRefererHeader", 0);
user_pref("network.http.sendSecureXSiteReferrer", false);
user_pref("network.protocol-handler.*", false);
user_pref("dom.ipc.plugins.enabled", false);
user_pref("network.proxy.socks_remote_dns", true);
JavaScript не нужен. Нужен только быдлокодерам, которые не умеют делать полнофункциональные сайты с поддержкой noscript-браузеров.
user_pref("javascript.enabled", false);
FireFox не нужен
user_pref("pdfjs.disabled", true);
Берем бутылку пива, открываем, вставляем в горлышко чайную ложку. Берем еще 5 бутылок пива, открываем, поочередно выпиваем. Когда допили 4ю бутылку, пятая уже полностью выветрилась, но из бутылки с ложкой газы и не думали выходить. Почему?
PS: да, знаю. Ужасный, непростительный оффтопик.
Доброго времени суток!
Помогите, пожалуйста, начинающему гентушнику оценить качество сглаживания шрифтов.
1. Выставил глобальные USE флаги infinality lcdfilter в /etc/portage/make.conf.
2. Обновил систему как обычно:
eix-sync && emerge -avuDN --quiet-build=y --with-bdeps=y world && emerge -ac && revdep-rebuild ; rm -rf /var/tmp/* ; rm /usr/portage/distfiles/* ; rm -rf /usr/share/doc/* ; localepurge
3. В ходе обновления пересобрался freetype:
media-libs/freetype-2.4.11-r2:2 USE="X bzip2 infinality -auto-hinter -bindist -debug -doc -fontforge -static-libs -utils"
4. Затем провел эти манипуляции, чтобы активировать infinality:
eselect fontconfig enable 52-infinality.conf
eselect infinality set infinality
eselect lcdfilter set infinality
5. Потом для верности сделал следующее:
eselect fontconfig enable 60-liberation.conf
У меня шрифтом по умолчанию в Xfce стоит Liberation Sans, а в терминале и Eclipse стоит Liberation Mono.
fontconfig:
# eselect fontconfig list
Available fontconfig .conf files (* is enabled):
[1] 10-autohint.conf *
[2] 10-no-sub-pixel.conf
[3] 10-sub-pixel-bgr.conf
[4] 10-sub-pixel-rgb.conf
[5] 10-sub-pixel-vbgr.conf
[6] 10-sub-pixel-vrgb.conf
[7] 10-unhinted.conf
[8] 11-lcdfilter-default.conf *
[9] 11-lcdfilter-legacy.conf
[10] 11-lcdfilter-light.conf
[11] 20-unhint-small-dejavu-sans.conf
[12] 20-unhint-small-dejavu-sans-mono.conf
[13] 20-unhint-small-dejavu-serif.conf
[14] 20-unhint-small-vera.conf *
[15] 25-ttf-arphic-ukai-render.conf
[16] 25-ttf-arphic-uming-bitmaps.conf
[17] 25-ttf-arphic-uming-render.conf
[18] 25-unhint-nonlatin.conf
[19] 30-metric-aliases.conf *
[20] 30-urw-aliases.conf *
[21] 35-ttf-arphic-ukai-aliases.conf
[22] 35-ttf-arphic-uming-aliases.conf
[23] 40-nonlatin.conf *
[24] 41-ttf-arphic-ukai.conf
[25] 41-ttf-arphic-uming.conf
[26] 44-wqy-zenhei.conf
[27] 45-latin.conf *
[28] 49-sansserif.conf *
[29] 50-user.conf *
[30] 51-local.conf *
[31] 52-infinality.conf *
[32] 57-dejavu-sans.conf
[33] 57-dejavu-sans-mono.conf
[34] 57-dejavu-serif.conf
[35] 59-google-droid-sans.conf
[36] 59-google-droid-sans-mono.conf
[37] 59-google-droid-serif.conf
[38] 60-latin.conf *
[39] 60-liberation.conf *
[40] 62-croscore-arimo.conf
[41] 62-croscore-cousine.conf
[42] 62-croscore-symbolneu.conf
[43] 62-croscore-tinos.conf
[44] 64-ttf-arphic-uming.conf
[45] 65-fonts-persian.conf *
[46] 65-khmer.conf
[47] 65-nonlatin.conf *
[48] 66-ja-ipafonts.conf
[49] 66-lohit-assamese.conf
[50] 66-lohit-bengali.conf
[51] 66-lohit-gujarati.conf
[52] 66-lohit-hindi.conf
[53] 66-lohit-kannada.conf
[54] 66-lohit-kashmiri@devanagari.conf
[55] 66-lohit-konkani.conf
[56] 66-lohit-maithili.conf
[57] 66-lohit-marathi.conf
[58] 66-lohit-oriya.conf
[59] 66-lohit-punjabi.conf
[60] 66-lohit-sindhi@devanagari.conf
[61] 66-lohit-tamil.conf
[62] 66-lohit-telugu.conf
[63] 66-takao-fonts.conf
[64] 66-wqy-zenhei-sharp.conf
[65] 66-wqy-zenhei-sharp-no13px.conf
[66] 67-lohit-malayalam.conf
[67] 67-lohit-nepali.conf
[68] 69-unifont.conf *
[69] 70-no-bitmaps.conf *
[70] 70-yes-bitmaps.conf
[71] 75-ttf-arphic-ukai-select.conf
[72] 80-delicious.conf *
[73] 90-synthetic.conf *
[74] 90-ttf-arphic-ukai-embolden.conf
[75] 90-ttf-arphic-uming-embolden.conf
Заранее благодарю за ответы и конструктивную критику!
P.S. Ногами сильно не пинать...
1. [Не смейтесь] Интересует стабильность. То есть, как часто возникают серьёзные поломки, напрочь выводящие систему из рабочего состояния, и требующие большого количества телодвижений (а также внимания) для устранения неисправностей? Также интересует, насколько велико количество мелких, но крайне раздражающих багов? Насколько оперативно исправляются ошибки?
2. Поправьте, где ошибаюсь.
Установка Slackware-current
# mkdir /home/user/slackdvd
# cd /home/user/slackdvd
# rsync -av rsync://mirrors.slackware.com/slackware/slackware-current/slackware .
# rsync -av rsync://mirrors.slackware.com/slackware/slackware-current/kernels .
# rsync -av rsync://mirrors.slackware.com/slackware/slackware-current/isolinux .
Создаю ISO образ.
В каталог slackdvd кидаю скрипт:
---------------
#!/bin/sh
mkisofs -o /tmp/slackware-dvd.iso \
-R -J -A "Slackware Install" \
-hide-rr-moved \
-v -d -N \
-no-emul-boot -boot-load-size 4 -boot-info-table \
-sort isolinux/iso.sort \
-b isolinux/isolinux.bin \
-c isolinux/isolinux.boot \
-V "SlackDVD" .
---------------
Полученный ISO образ, само собой, записываю; установка, как я понял, ничем не отличается от установки обычного стабильного релиза.
Впредь обновляемся при помощи slackpkg:
slackpkg update
slackpkg install-new
slackpkg upgrade-all
slackpkg clean-system
Собственноручно собранный софт добавляю в /etc/slackpkg/blacklist
3. mirror.yandex всё также не рекомендуется использовать?
4. Как я понял, current можно сравнить с веткой sid Debian'а (до перехода current в стадию rc), а rc стадия сравнима с Debian testing?
5. Избавляет ли использование slackpkg от чтения chenglog'а?
6. [Дурацкий вопрос] Стоит ли игра свеч? Пригоден ли slackware-current для повседневного использования на десктопе?
какие параметры за что отвечают с комментариями и на русском
Если ошибся разделом - прошу сильно не пинать.
Собрал небольшую базовую систему под Rasperry Pi на основе Генту. Залил на гитхаб.
Вот .
Что установлено:
Инструкция по установке в README.md.
Вопросы и предложения приветствуются.