LINUX.ORG.RU

А можно скрины того, как это выглядело? Мне просто интересно, какие это бинарные часы.

alex-pat
()

Awesome 4 - не работает виджет с 3 версии

Так и не должен, с тех пор API сильно изменили.

mord0d ★★★★★
()

ошибок не выдает

Выдает, плохо смотрел. Держи исправленную версию

local timer = require("gears.timer")
local binClock = wibox.widget.base.make_widget()

binClock.radius = 1.5
binClock.shift = 1.8
binClock.farShift = 2
binClock.border = 1
binClock.lineWidth = 1
binClock.colorActive = beautiful.bg_focus

binClock.fit = function(binClock, _, width, height)
	local size = math.min(width, height)
	return 6 * 2 * binClock.radius + 5 * binClock.shift + 2 * binClock.farShift + 2 * binClock.border + 2 * binClock.border, size
end

binClock.draw = function(binClock, _, cr, width, height)
	local curTime = os.date("*t")

	local column = {}
	table.insert(column, string.format("%04d", binClock:dec_bin(string.sub(string.format("%02d", curTime.hour), 1, 1))))
	table.insert(column, string.format("%04d", binClock:dec_bin(string.sub(string.format("%02d", curTime.hour), 2, 2))))
	table.insert(column, string.format("%04d", binClock:dec_bin(string.sub(string.format("%02d", curTime.min), 1, 1))))
	table.insert(column, string.format("%04d", binClock:dec_bin(string.sub(string.format("%02d", curTime.min), 2, 2))))
	table.insert(column, string.format("%04d", binClock:dec_bin(string.sub(string.format("%02d", curTime.sec), 1, 1))))
	table.insert(column, string.format("%04d", binClock:dec_bin(string.sub(string.format("%02d", curTime.sec), 2, 2))))

	local bigColumn = 0
	for i = 0, 5 do
		if math.floor(i / 2) > bigColumn then
			bigColumn = bigColumn + 1
		end
		for j = 0, 3 do
			if string.sub(column[i + 1], j + 1, j + 1) == "0" then
				active = false
			else
				active = true
			end
			binClock:draw_point(cr, bigColumn, i, j, active)
		end
	end
end

binClock.dec_bin = function(binClock, inNum)
	inNum = tonumber(inNum)
	local base, enum, outNum, rem = 2, "01", "", 0
	while inNum > (base - 1) do
		inNum, rem = math.floor(inNum / base), math.fmod(inNum, base)
		outNum = string.sub(enum, rem + 1, rem + 1) .. outNum
	end
	outNum = inNum .. outNum
	return outNum
end

binClock.draw_point = function(binClock, cr, bigColumn, column, row, active)
	cr:arc(binClock.border + column * (2 * binClock.radius + binClock.shift) + bigColumn * binClock.farShift + binClock.radius,
			binClock.border + row * (2 * binClock.radius + binClock.shift) + binClock.radius, 2, 0, 2 * math.pi)
	if active then
		cr:set_source_rgba(0, 0.5, 0, 1)
	else
		cr:set_source_rgba(0.5, 0.5, 0.5, 1)
	end
	cr:fill()
end

local binClocktimer = timer { timeout = 1 }
binClocktimer:connect_signal("timeout", function() binClock:emit_signal("widget::updated") end)
binClocktimer:start()

Worron ★★★
()
Ответ на: комментарий от GGUseR

Если используешь какой display manager, то должны быть в его логе. Вообще для настройки осома рекомендую Xephyr установить, упрощает процесс прям в разы.

Worron ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.