вывод текста в awesome

Разработка скриптов на lua. Создание виджетов, диалогов и т.д.
Ответить
Аватара пользователя
olgmen
Сообщения: 155
Зарегистрирован: 30 ноя 2012, 11:00
Темы: 32
Откуда: Санкт-Петербург
Статус: Не в сети

вывод текста в awesome

Сообщение olgmen » 21 дек 2013, 10:15

Текст в awesome выводится с помощью скрипта textbox.lua находящегося в папке /home/olgmen/.config/awesome/wibox/widget/ на вашем компьютере путь конечно будет немного другим. :) Покажу на примере, как пишутся команды вывода текста. Для примера возьмем готовую команду

<span foreground="blue" size="x-large" >Вывод текста в awesome</span>

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

<span атрибут или атрибуты текста>сам текст</span>

Цвет текста

foreground="blue", foreground="#0000ff", fgcolor="red", color="#ff0000", background="green", bgcolor="#00ff00". Все эти атрибуты окрашивают текст в заданный цвет, можно использовать любой вариант

Размер шрифта

size="x-large" или font_size="x-large" В awesome существуют несколько "стандартных" размеров шрифта: "xx-small", "x-small", "small", "medium", "large", "x-large", "xx-large", но можно задавать шрифт и другими командами, такими как: font="12.5" или в Pango единицах size="12800", что соответствует размеру 12.5 (12.5 х 1024).

Название шрифта

font_family="Sans" или face="Sans" - назначает шрифт, тут всё зависит от того, какой шрифт вы используете.
Тип выводимого шрифта

font_style="normal" или  style="normal" - будет выведен обыкновенный, простой шрифт. Можно также использовать "oblique" или "italic".

Размер, название и тип можно объединить в одну команду

font="Sans Italic 12" или font_desc="Sans Italic 12".

Ширина шрифта

font_weight или weight - Ширина шрифта, можно использовать один из "ultralight", "light", "normal", "bold", "ultrabold", "heavy", или числовое значение

font_variant или variant - выбираем один из двух "normal" или "smallcaps", я не увидел никаких изменений при использовании этих атрибутов.

font_stretch или stretch - выбираем из "ultracondensed", "extracondensed", "condensed", "semicondensed", "normal", "semiexpanded", "expanded", "extraexpanded", "ultraexpanded" - "сжимает" шрифт, расшрение шрифта у меня не получилось, видно требуется масштабированный шрифт

underline="none" - по умолчанию, без подчеркивания
underline="single" - подчеркнутый одной линией текст
underline="double" - подчеркнутый двумя линиями текст
underline="low", - при выводе текста на русском языке увеличивает расстояниу между текстом и линией, при выводе текста на английском - линия не понизилась
underline="error" - подчеркивание ломанной линией

underline_color - совместно с атрибутом underline="...", описанными выше, окрашивает линию подчеркивания. Цвет можно задать как названием "red", та и кодом RGB "#ff0000"

rise="+12800" - поднимает текст на 12800 Pango единиц, т.е. на высоту шрифта 12.5
rise="-12800" - опускает текст на такое же расстояние

strikethrough="true" - зачеркнуть текст
strikethrough="false" - не зачеркивать текст

strikethrough_color="red" strikethrough="true" - окрасить линию зачеркивания

fallback="true" - по умолчанию, разрешает использовать символы из других шрифтов установленных в системе
fallback="false" - использование только заявленного шрифта

lang
A language code, indicating the text language
языки
Код языка, с указанием языка текста

letter_spacing="12800" - разреженный текст, расстояние между буквами в Pango единицах

-- ================ не понял, т.к. нет изменений при вводе ===========================
gravity
One of 'south', 'east', 'north', 'west', 'auto'.
вес
Один из «юг», «восток», «север», «запад», «авто».

gravity_hint
One of 'natural', 'strong', 'line'.
gravity_hint
Один из «естественного», «сильного», «линии».
-- ===================================================================================

Для того чтобы выделить одно слово из текста, например сменить для одного слова толщину шрифта или тип шрифта, можно применить сокращенный вариант атрибутов. Например

<span foreground="blue" size="x-large" >Вывод текста в <i>awesome</i></span>

Примеры сокращенных атрибутов

b == <span font_weight="bold">
big == <span size="larger">
i == <span font_style="italic">
s == <span strikethrough="true">
sub -- нижний индекс
sup -- верхний индекс
small == <span size="smaller">
tt -- моноширный шрифт
u == <span underline="single">

Установить дополнительные шрифты для awesome, например шрифт "ConkyWeather" для вывода символов погоды, можно, как и для conky, поместив шрифт в папку ~/.fonts, затем необходимо дать команду в терминале

Код: Выделить всё

sudo fc-cache -v -f
Ну и под конец, как это всё выводится

Подключаем скрипт ответвенный за вывод текстов

Код: Выделить всё

local main = wibox.widget.textbox()
Задаем вывод текста слева и сверху

Код: Выделить всё

main:set_align("left")
main:set_valign("top")
ну и создаём базу выводимых текстов

Код: Выделить всё

local main_text = [[
<span foreground="red" font="64" face="ConkyWeather">a</span>
<span foreground="blue" face="KremlinCTT" size="xx-large">Вывод текста в awesome!</span>
<span foreground="blue" size="x-large" >Вывод текста в awesome</span>
<span size="x-large">Вывод <sub>текста</sub> в <sup>awesome</sup></span>
<span foreground="blue" size="x-large" >Вывод текста</span> в awesome
Вывод текста в awesome
]]
main:set_markup('<span font_desc="Arial 12" color="gray">'..main_text..'</span>')
вот так это выглядит

Изображение

Скрипт виджета под спойлером


[spoiler]--[[ black_square.lua ]]--
--[[
Создадим виджет выводящий на рабочий стол черный квадрат. Для начала создаём скрипт с названием
black_square.lua
и помещаем его в папку
awesome
в скрипте необходимо указать используемые библиотеки
]]

--local background = require("background")
local wibox = require("wibox")
-- всё будем выводить на первый экран
local oapi = { screen = screen }
local scrn = oapi.screen[1].geometry

-- создаем таблицу для хранения данных виджета, обзываем её как угодно, например

proba = {}

--Теперь пишем параметры виджета, везде используя название таблицы

proba.width = 450 -- ширина виджета
proba.height = 350 -- высота виджета
proba.bg_color = "#ffffff00" -- цвет фона черный полу прозрачный

proba.x = 200 -- Координаты
proba.y = 50 -- левого верхнего угла

-- Создаем wibox с нашими данными

local proba_wbox = wibox({ bg = proba.bg_color,
width = proba.width,
height = proba.height })
-- теперь определяем как будет выводиться
proba_wbox.ontop = false -- true - поверх всех окон / false - на рабочий стол
proba_wbox.visible = false -- true - при запуске виден / false - не виден
proba_wbox:geometry({x = proba.x, y = proba.y}) -- Координаты

-- Создаем виджет

local proba_widget = wibox.widget.base.make_widget()

-- Функция, определяющая размеры виджета

proba_widget.fit = function( proba_widget, width, height )
return width, height
end


-- Подключаем скрипт ответвенный за вывод текстов

local main = wibox.widget.textbox()

-- Задаем вывод текста слева и сверху

main:set_align("left")
main:set_valign("top")

-- ну и создаём базу выводимых текстов

local main_text = [[
<span foreground="red" font="64" face="ConkyWeather">a</span>
<span foreground="white" face="KremlinCTT" size="xx-large">Вывод текста в awesome!</span>
<span foreground="white" size="x-large" >Вывод текста в awesome</span>
<span size="x-large">Вывод <sub>текста</sub> в <sup>awesome</sup></span>
<span foreground="white" size="x-large" >Вывод текста</span> в awesome
Вывод текста в awesome
]]
main:set_markup('<span font_desc="Arial 12" color="gray">'..main_text..'</span>')


-- Размещаем виджет

local proba_layout = wibox.layout.fixed.horizontal()

proba_layout:add(main)

proba_wbox:set_widget(proba_layout)
proba.wibox = proba_wbox

return proba[/spoiler]
Кто ищет, тот всегда найдет

Arch Linux
Conky - 1.9

Ответить

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 0 гостей