LINUX.ORG.RU

Избранные сообщения serkhay

Grey and Green

Галерея — Скриншоты

Manjaro, ACYL, баловство

http://i.imgur.com/QVUnTEO.png — с менюшкой

http://i.imgur.com/5IK3JSp.png — с ЛОРом

http://i.imgur.com/85U3waO.png — Терминал

>>> Просмотр (1366x768, 323 Kb)

 , ,

imho-su
()

Разбаньте пользователя vim

Форум — Linux-org-ru

leave, разблокируй его, плз.

 

int13h
()

Кто там плакал насчет dwb?

Форум — Desktop

Общеизвестно, что на 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)

 , , , ,

vim
()

Awesome'щики зацените тему (в галерею не могу).

Форум — Desktop

Будет ли интересна вам вот такая тема: http://i.imgur.com/e80vr32.png

В галерею не могу, просил накинуть мне скор со старого аккаунта, но на мороз меня.

В общем теги заменил на иконки, добавил интерактив, т.е. если тег в фокусе - горит голубым, просто занят - белым, пустой черный, urgent красный, в таком стиле. В панель интегрирован плеер (mpd), управление и показывает текущий трек.

По клику на виджет часы он сменяется на виджет календарь (показывает дату, но иконка часы сменяется на иконку календарь).

На самом деле осом (особенно 3.5.*) - самый кастомизируемый wm, который можно желать, в целом можно много чего интересного сделать.

Все элементы рисовал сам.

 , , ,

vim
()

RFC HOWTO: автологин в иксовую сессию с помощью systemd

Форум — General

Добрый вечер, господа. Это тред-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 могут запускаться двумя способами.

  • Первый — по требованию, через logind. При переключении на ttyN logind запускает юнит 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-сервер и произойдёт адъ и израиль.

Как-то так. Сейчас три часа семнадцать минут по московскому времени, поэтому прошу меня извинить за упрт стиль изложения, краткость, неконсистентное использование форматирования и так далее.

 , ,

intelfx
()

Создание загрузочного диска с кучей LiveCD iso

Форум — Talks

Решил привести в порядок загрузочный usb hdd. Лежала пара полезных iso-шков в директории, в grub2 прописана руками загрузка loopback каждого ядра из них. Думал, сейчас появилась в грабе функция передачи загрузки с указанного iso без выковыривания параметров ядра, пути к initrd... А оказывается НЕТ. Т.е. положить десяток iso на внешний диск и простенько организовать мультибут все еще нельзя.

Может кто-то сможет объяснить технические препятствия к этому, почему нельзя незаглядывая внутрь iso просто загрузиться с него, обязательно надо выковыривать все параметры и варианты загрузки руками?

 , ,

Deleted
()

Iris

Галерея — Скриншоты

GTK: Iris Light
Обои: Berries (источник не найден)
Иконки: перекрашенные Flattr
Шрифты: Russia и PT Mono

PNG

>>> Просмотр (2560x1440, 1285 Kb)

zezic
()

Awesome tasklist

Форум — Desktop

Долгое время изучал 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 найдите функцию awful.key отвечающую за нужные вам клавиши и измените их.

==Разбираем 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 ),
Затем где нибудь в начале файла rc.lua добавьте функцию context_menu:
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 })
Здесь вы можете изменить ее расположение, top - сверху, bottom - снизу. height - это высота панели. Или даже можете создать себе вторую панель, переместив панель задач сверху вниз(на примере 3.4):
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)
"'Awesome 3.5"'
table.insert(clients, c)
Замените ее на:
table.insert(clients, 1, c)
Перезапустите Awesome.

==Ширина приложений в списке задач ==

Если вас не устраивает, то, что одно запущенное приложение можент занимать все доступное пространоство, на панели задач, то это поведение можно немного изменить. Для этого потребуется отредактировать файл ~/.config/awesome/awful/widget/tasklist.lua

===Awesome 3.4===

Найдите функцию new, в ней необхоидмо изменить

layout = layout.horizontal.flex
На тот вариант расположения виджетов, который вас устраивает. Их полный список находится в файлах awful/widget/layout horizontal.lua и vertical.lua
layout = layout.horizontal.leftright
===Awesome 3.5===

Найдите функцию tasklist.new затем замените

local w = base_widget or flex.horizontal()
Например следующим кодом:
local w = base_widget or fixed.horizontal()
А в начало файла добавьте
local fixed = require("wibox.layout.fixed")
Если предоженный вариант вас не устраивает, можете поэкспериментировать с layout'ами, они находятся в каталоге ~/.config/awesome/wibox/layout

Правда ширина каждого клиента будет зависеть от названия, в принципе это тоже можно поправить если вам требуется фиксированная ширина клиентов, для этого нужно изменить в файле tasklist.lua функцию widget_tasklist_label_common (3.4) или tasklist_label (в 3.5): В начало файла поместите

local string = string
Затем перед строкой "if capi.client.focus == c then" поместите следующий код:
if #name >20 then
    name = string.sub(name,1,20)
end
Здесь мы ограничиваем название 20-ю символами, если вам требуется другое значение, измените его.

Есть еще один ньюанс, при изменении испльзуемой схемы(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
Похожий код используется и в 3.4, но без строки "and filter(c, s)". Т.е. здесь мы пропускаем часть клиентов, если какие то из них вам все же нужны, удалите код отвечающий за них.

==Сигналы==

Сигналы - это система сообщений которую рассылает ядро 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)
Названия сигналов говорят сами за себя, единственное, первые 2 улавливают события от тегов, для того, чтобы при смене тега отобразить актуальный список клиентов на нем. После того, как будет принято данное событие будет вызвана функция u:
u = function () tasklist_update(screen, w, buttons, filter, data, style, uf) end
Т.е. панель задач будет обновлена. Так что если вы где то будете менять какое то свойство для клиента, можете не беспокоиться, оно будет отловлено и корректно обработано. Если же нужного вам сигнала здесь нет, то вы всегда можете создать свой.

 

Faiver
()

Разукрашка

Галерея — Скриншоты

После прочтения поста вспомнил свои прошлогодние затеи с раскрашиванием терминалов. Заново прочитал это и это, немного перепелил вывод скрипта под себя.

Скрипт автоматом генерирует цветовую схему для терминалов и GTK2/3, настроен под тёмную гамму. Я использую для этих наркоманств угловатую тему Mist, но вы можете перепилить под ту же более симпатичную и аккуратную oomox, сделать опцию для светлого оформления и терминалов (или, если хотите, я могу).

( Ну и как работает твоя развалюха? )

Скрипт

Mist-Colorized

PNG

>>> Просмотр (2715x1207, 1342 Kb)

 , , , trip,

zezic
()

Что почитать для понимания сути работы и архитектуры линукса?

Форум — General

Читаю Немет - Unix и Linux. Руководство системного администратора, и не могу отделаться от мысли, что книга похожа на набор рецептов по установке и конфигурированию софта. То-есть после небольшого введения дается прикладное решение типа вот апач для вебсервера, вот конфиг-файл, тут такие вот опции есть, их можно покрутить. А хочется почитать что-то, что бы дало более глубокое понимание сути работы юникса, его архитектуры, в общем сути а не перечня настроек конфигов демонов. Что посоветуете?

 , ,

n3yron
()

Гораздо проще, чем казалось

Галерея — Скриншоты

Раньше я думал, что поставить gentoo - это крайне сложно и красноглазо и пытаться даже и не стоит. Но, устав от жёсткой политики меинтейнеров в debian (особенно по части jessie) с их навязыванием своего дефолта, а в особенности systemd, решил, что пора бы делать ноги. Как оказалось, не так страшен чёрт.

Установка генты оказалась относительно простой, прослеживались параллели с установкой арча несколько месяцев назад (после успешной установки и настройки окружения я, пожив на этом дистрибутиве пару дней, осознал, какой этот systemd весь клёвый и прекрасный, поэтому и снёс арч, накатив обратно crunchbang). Гибкость системы поражает, больше не нужно тащить действительно ненужные на практике функции. USE-флаги и маски - удобны и сделаны для людей. Что бы там ни говорили, но компиляция занимает относительно мало времени и вообще не мешает. Долго собираются только монструозные пакеты, которые всегда есть в бинарном варианте (у меня такие большие это libreoffice, а также firefox, который, к слову, всё равно ставил из исходников), так что причитания о вечных компиляциях - это байки и небылицы.

Быстро освоив portage и дополнительные инструменты, безо всякого труда восстановил привычное окружение (urxvt, i3, deadbeef, ST3, lxappearance, nitrogen и множество других утилит).

Теперь всё так:

  • i3 - опять же, с xbm-патчем. Баров поставил два, дабы было просторнее буковкам. Ещё добавил новую индикацию - уровень Master на звуковой карте, количество внешних примонтированных разделов, заголовок текущего окна.
  • Тема GTK - на основе предыдущей - опять же, с некоторыми улучшениями.
  • Не так уж и просто было найти нужный мне шрифт: с чёткими очертаниями, довольно узкий и не слишком высокий, читаемый на низком размере без проблем. Поначалу это был Source Code Pro - но, увы, в нём пока нет поддержки кириллицы. Так что сейчас шрифт - Tewi, довольно маленький и аккуратный.
  • Тихо и незаметно обновился rofi: теперь можно не только просто запускать программу, но ещё и выполнять её с ключами и аргументами. К тому же теперь rofi можно настроить через Xresources.
  • Что бы там ни говорили, но FF29 не так уж и плох. Страшный, как божий грех, дефолт? Ну да. А какой смысл пользоваться лисом без аддонов и кастомизации? У этого браузера всегда была политика модульного функционала, и это хорошо. Так что, взяв в руки напильник и каталог аддонов, привёл его в надлежащий вид, после чего стало ещё лучше, чем на прошлых версиях. Что нас не убивает, то... ну вы знаете.

По традиции - конфиги можно найти тут, а на рабочем столе обоина из японской анимации.

>>> Просмотр (1366x768, 434 Kb)

 ,

Bfgeshka
()

VLC вместо Flash

Форум — General

Отказался от Flash Player по понятным причинам.

Как можно привязать VLC в Firefox вместо Flash, чтобы он воспроизводил видео через VLC (Youtube + некоторые сайты, желательно конечно и стримы бы, но не обязательно). У меня Arch.

 , ,

TheBear
()

Русская документация по ranger. v2

Форум — Talks

Доброго дня господа.
По мотивам.
ranger - отличный консольный файловый менеджер.
Когда-то обещался сделать.
Сроков не называл, но таки затянул, увы.
И так, вообще статейка хороша бы для какого-то блога, но поскольку таковых не имею - оставлю тут в виде файла, кому будет интересно, разместите у себя в уютных блогах.
Так же призываю ekzotech, который проявлял интерес к этой теме.

pdf'ка на яндексе

Если протухнет, а кому-то будет нужно или интересно - кастуйте.
ЗЫ: жду ваших «не нужно» и мнений. Спасибо :)

 

Spirit_of_Stallman
()

FrierFox. Ненужных фич тред. Попытка № 2.

Форум — Desktop

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);

 ,

trupiko
()

Газы в банке пива - 2

Форум — Talks

Берем бутылку пива, открываем, вставляем в горлышко чайную ложку. Берем еще 5 бутылок пива, открываем, поочередно выпиваем. Когда допили 4ю бутылку, пятая уже полностью выветрилась, но из бутылки с ложкой газы и не думали выходить. Почему?

PS: да, знаю. Ужасный, непростительный оффтопик.

 ,

drull
()

Помогите оценить качество сглаживания шрифтов в Xfce4 под Гентой

Форум — Desktop

Доброго времени суток!

Помогите, пожалуйста, начинающему гентушнику оценить качество сглаживания шрифтов.

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. Ногами сильно не пинать...

 , , ,

stan31337
()

Вопрос к пользователям Slackware-current

Форум — General

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 для повседневного использования на десктопе?

 ,

Essentuki_17
()

Что почитать про сборку ядра?

Форум — General

какие параметры за что отвечают с комментариями и на русском

 

rms
()

Gentoo for Raspberry Pi

Форум — Desktop

Если ошибся разделом - прошу сильно не пинать.

Собрал небольшую базовую систему под Rasperry Pi на основе Генту. Залил на гитхаб.

Вот .

Что установлено:

  • stable stage3
  • LXDE
  • Midori web browser
  • Ayttm IM client (Jabber only)
  • Sylpheed email client
  • Chromium browser (install script)
  • Openldap
  • Pam_mount
  • Midnight Commander
  • Gentoolkit, eix and Layman
  • Git
  • Tmux
  • Htop
  • rpi-update - script for firmware upgrade

Инструкция по установке в README.md.

Вопросы и предложения приветствуются.

 ,

ubiquitine
()