LINUX.ORG.RU
решено ФорумTalks

Часов много не бывает

 , , , ,


4

1

Так как сегодня пятница и похвальной является любая шизофрения в рамках почти здравого смысла, представляю вашему вниманию часы!

clockrip
██████ ██████    ██████ ██████
    ██     ██ ██     ██ ██    
██████ ██████    ██████ ██████
██         ██ ██ ██         ██
██████ ██████    ██████ ██████

clockrip -f O -s
OOOOOO OOOOOO    OOOOOO OOOOOO    OOOOOO OOOOOO
    OO     OO OO     OO OO  OO OO     OO OO  OO
OOOOOO OOOOOO    OOOOOO OOOOOO    OOOOOO OOOOOO
OO         OO OO OO     OO  OO OO OO     OO  OO
OOOOOO OOOOOO    OOOOOO OOOOOO    OOOOOO OOOOOO

clockrip -f ▓ -s
▓▓▓▓▓▓ ▓▓▓▓▓▓    ▓▓▓▓▓▓ ▓▓▓▓▓▓    ▓▓▓ ▓▓▓▓▓▓
    ▓▓     ▓▓ ▓▓     ▓▓     ▓▓ ▓▓  ▓▓     ▓▓
▓▓▓▓▓▓ ▓▓▓▓▓▓    ▓▓▓▓▓▓ ▓▓▓▓▓▓     ▓▓ ▓▓▓▓▓▓
▓▓         ▓▓ ▓▓     ▓▓ ▓▓     ▓▓  ▓▓ ▓▓    
▓▓▓▓▓▓ ▓▓▓▓▓▓    ▓▓▓▓▓▓ ▓▓▓▓▓▓     ▓▓ ▓▓▓▓▓▓

Эта элегантная утилита позволит вам выводить время в виде больших букф чисел в разнообразном цвете и стиле, а элегантное название подчеркнёт туннельный синдром кистей ваших рук при наборе в эмуляторе терминала.

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

Суть, мне нужны были часы как tty-clock нравится какой у них вывод, но только мне нужно было иметь возможность просто выводить время в таком виде в файл, а не держать обновляющееся время в терминале с виду дурацкая идея, но так надо, в этом вся суть.

  • clockrip

  • Аргументы опциональные

    • -h Отобразить справку
    • -u Выводить мировое UTC время, а не локальное
    • -s Отображать секунды
    • -f Установить символ заполнитель (одно знакоместо)
    • -ft [TEXT] Установить символ заполнитель (одно знакоместо)
    • -fw [TEXT] Установить символ заполнитель (два знакоместа)
    • -c [COLOR] Установить цвет заливки
    • -b [COLOR] Установить цвет заливки фона
    • -d Включить эффект мигания для точек разделителей
    • -t [TEMP] Установить цвет через значение температуры в Цельсиях
    • -bt [TEMP] Установить цвет фона через значение температуры в Цельсиях
    • -k [TEMP] Установить цвет через значение температуры в Кельвинах
    • -bk [TEMP] Установить цвет фона через значение температуры в Кельвинах

Ключи -t -k -bt -bk отменяют значение ключей -c -b
Ключи -t -k переопределяют друг друга, какой задан последним тот и задаёт значение
Ключи -bt -bk переопределяют друг друга, какой задан последним тот и задаёт значение

Цвет заливки может быть названием цвета из списка

  black |  red |  green |  yelow |  blue |  purple |  cyan |  gray
 bblack | bred | bgreen | byelow | bblue | bpurple | bcyan | bgray

Цвет заливки может быть кодом цвета от 0 до 256 или от 000000 до FFFFFF Если вместо времени отображается белиберда можно попробовать заменить -fw на -ft и наоборот, утилита работает только с заливкой символами шириной 1 или 2 знакоместа от любого иного варианта отображаемое форматирование поедет.

Может кому надо тоже, эта супер пупер утилита на все времена UnixWay ультраортодоксальна и не умеет сама обновлять время, а тупо её выводит, поэтому

  • watch -tcn 60 clockrip -c green Будет вызывать скрипт и обновлять время раз в минуту
  • watch -tcn 1 clockrip -s -c green Будет вызывать скрипт и обновлять время раз в секунду
  • watch -tcn 1 clockrip -s -fw 😊 Будет вызывать скрипт и обновлять время раз в секунду

Негодники

Вишенка на торте, в этом описании текста больше чем кода в утилите

★★★★★

Последнее исправление: LINUX-ORG-RU (всего исправлений: 13)

Не, ну если серьезно - первые и третьи выглядят хорошо. Я б поставил, если б не носил наручные часы.

Vilicus
()

выводить время в таком виде в файл

Оно там не на диск делает запись ежесекундно? // По ссылке не ходил.

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

Нее, оно никуда не делает запись, просто выводит время как date только без даты и всё. А в файл, пайп, сокет это я хочу сам писать clockrip > file.txt. Пытался сделать это с tty-clock, но не вышло, оно для постоянного показа, а мне надо было примерно такой же вид как у него только для разового показа. Вот и всё. А все вот эти замены символов для отрисовки и цвета, это так, баловство. Но пусть будет.

LINUX-ORG-RU ★★★★★
() автор топика
Последнее исправление: LINUX-ORG-RU (всего исправлений: 2)
Ответ на: комментарий от anonymous_sama

Поздно. А суть названия проста, программа сначала делает clock, а потом она сразу rip, прям как в жизни.

LINUX-ORG-RU ★★★★★
() автор топика

эта супер пупер утилита на все времена UnixWay ультраортодоксальна

Было бы так коль она бы получала данные из вне. Но такие утилиты уже есть же, banner, figlet например. Но я не уверен что они клоунами умеют показывать, так что предложенные вариант, конечно, круче.

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

Было бы так коль она бы получала данные из вне

Да, недоработка надо было date | clockrip. Ну, тогда без ультра

LINUX-ORG-RU ★★★★★
() автор топика

в этом описании текста больше чем кода в утилите

Как графоману, ты себе льстишь. :)

dataman ★★★★★
()

Эта элегантная утилита позволит вам выводить время в виде больших букф чисел в разнообразном цвете и стиле

Не позволяет с римскими цифрами :)

quickquest ★★★★★
()

Сам сделал? А попробуй так:

$ date +%H:%M:%S | toilet -f future --gay
┏━┓┏━┓ ┏━┓┏━┓ ╺┓ ┏━┓
┏━┛╺━┫╹╺━┫┏━┛╹ ┃ ┏━┛
┗━╸┗━┛╹┗━┛┗━╸╹╺┻╸┗━╸
rupert ★★★★★
()
Ответ на: комментарий от rupert

Сам сделал?

А кто же ещё то :D Я часа два пердохался с этими широкими cимволами, пытаясь понять как их легко и быстро распознавать, а никак их распознавать, ну и ладно подумал я и решил что это можно указывать явно, ориентируясь на глаз результата, всё криво, значит не то :D

А попробуй так

Где же ты раньше то был с туалетом то

dron@gnu:~$ apt search toilet
toilet/testing,unstable 0.3-1.4 amd64          
  отображение больших цветных символов в текстовом режиме

Не знал про него. Прикольно. Мне бы подошло под хотелку, там вроде как можно свой «шрифт» сделать чтобы было как в tty-clock жирненько, но уже поздно =)

LINUX-ORG-RU ★★★★★
() автор топика
Последнее исправление: LINUX-ORG-RU (всего исправлений: 1)

похвальной является любая шизофрения в рамках почти здравого смысла

сохраню на случай важных переговоров.

etwrq ★★★★★
()

watch -tn 60 clockrip Будет вызывать скрипт и обновлять время раз в минуту watch -tn 1 clockrip -s Будет вызывать скрипт и обновлять время раз в секуну

Надо так

watch -tcn 1 ./clockrip -s -c green

а то ведь не догадаются :-)

vtVitus ★★★★★
()

ЗачОт, курсант! ✌️🍺

sparkie ★★★★★
()
🔥 🔥 🔥   🔥🔥🔥 🔥🔥🔥
🔥 🔥 🔥 🔥   🔥 🔥 🔥
🔥 🔥🔥🔥   🔥🔥🔥 🔥 🔥
🔥   🔥 🔥 🔥   🔥 🔥
🔥   🔥   🔥🔥🔥 🔥🔥🔥

-c [COLOR] Установить цвет заливки

FR: -b --bcolor – цвет фона.
Да, rgb и brgb – тоже. :)

dataman ★★★★★
()
Последнее исправление: dataman (всего исправлений: 1)

Шревты еще можно разные растровые прикрутить. А вообще прикольная идея!

aiqu6Ait ★★★★
()

Угадал язык программирования по нику.

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

RGB «подсветку» добавил, clockrip -c A0643C -b 242B3c.

Параметры -c и -b могут принимать три варианта цвета

  • имя цвета
  • код цвета 0..256
  • код цвета 000000..FFFFFF

Фон закрашивает только область цифарок. Ибо иначе получается фигня

Сверху фигня, ниже правильно. Так как я не обновляю часы я не могу корректно закрашивать фон всей области расположения часов, всегда будет артефакт сверху, даже если добавить перевод строки. Так что закрашиваю только область фона цифров. Это единственный способ правильно всё отоюбразить например в прозрачном терминале

LINUX-ORG-RU ★★★★★
() автор топика
Ответ на: комментарий от dataman

Это Rejected бекаусе оптион минус ю -u занята под вывод UTC времени. Ну и смысл в выводе больших жирных чиселок, с разницей лишь в их заполнением чем либо. Вот тебе и другая утилита, в юникоде 100500 разных видов цифр, запили утилиту которая будет выводить время в том или ином наборе цифр из юникода, сделовай это ты, будем конкурировать бизнес часами. :D

А я остановлюсь. хотя там ещё приколюху можно прикрутить, мигающий текст, курсив включать и выключать и прочее

LINUX-ORG-RU ★★★★★
() автор топика
Последнее исправление: LINUX-ORG-RU (всего исправлений: 1)
Ответ на: комментарий от dataman

Последний штрих, ключ -d включает мигание точек разделяющих цифры.

LINUX-ORG-RU ★★★★★
() автор топика
Ответ на: комментарий от tiinn

Ну, не знаю, коньки тогда должны дёргать скрипт раз в заданное время. Я их никогда не настраивал сам особо. Но у себя я свою поделку использую wallwa для вывода почти всего как обои

Вот так получается (только в эмодзи не умеет оно).

Да наверное можно и в коньки, всё что делает clockrip это просто выводит текст.

LINUX-ORG-RU ★★★★★
() автор топика
Ответ на: комментарий от Clockwork

Оно там не на диск делает запись ежесекундно?

Это тебе надо спрашивать у ФС и планировщика ввода-вывода, а не у ТС

buddhist ★★★★★
()
Ответ на: комментарий от LINUX-ORG-RU

переписал на Сишечку

$ make install

install -d //usr/local//bin
install -d //usr/local//share/doc/clockrip
install clockrip //usr/local//bin
install README.md LICENSE //usr/local//share/doc/clockrip

Двойные слеши для надёжности?

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

А что, на разных ФС команда date работает по-разному?

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

Патамучта в составе есть : :D хотя да, переименовать в SYMBOL было бы лучше.

LINUX-ORG-RU ★★★★★
() автор топика

https://gitflic.ru/

Это только у меня, или это поделие ужасно просто медленно работает? Я главную больше минуты ждал.

Ну и проекты там открытые один другого краше.

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

Это только у меня, или это поделие ужасно просто медленно работает? Я главную больше минуты ждал.

У меня всё шустро, чини интернет :) Сейчас проверил, всё хорошо, хотя и не отрицаю что может что и было такое, но я не сталкивался пока никогда.

Ну и проекты там открытые один другого краше.

Ты о чём?

LINUX-ORG-RU ★★★★★
() автор топика
Последнее исправление: LINUX-ORG-RU (всего исправлений: 2)
Ответ на: комментарий от dmitry237

Сделай тему и поделись с народом, может кто-то тоже себе как у тебя хочет =) Прикольно так-то

Вопщем, тема часов ещё не раскрыта! :D

LINUX-ORG-RU ★★★★★
() автор топика
Последнее исправление: LINUX-ORG-RU (всего исправлений: 1)
Ответ на: комментарий от YogSagot

А, это :D Ага, там по началу были только заркала и тематические разделы с зеркалами, порой кто репу оформлял, по минимуму причёсывал, лицензия, язык указан, описание, README и прочее для своих проектов, просто домашних или в целом публичных. А потом вжух и пришли студенты создали 100500 репозиториев с домашками, и теперь 80% всех реп видны как Markdown вне зависимости от содержания ибо нахер оно надо, преподу ссылку с домашкой скинул и норм.

Ладно. Там ещё дорабатывать и дорабатывать по этой части, включая алгоритмы показа, с тегами, сортировкой, по активности и так далее. Лично мне лишь нужно уютное место для стабильной публичной публикации и всё. На навороты пофиг. Codeberg.org не зашёл, я уже забыл в чём у меня были с ним проблемы, git.org.ru то работал, то нет. А на гитхабе я лишь в разные апстримы что-то делаю, удобно там работа с форками, а тут чисто своё зеркало своих локальных реп. Лично мне всё что надо от git хостинга это git push/git pull и чтобы README показывалось для удобства как моего так и людей, всё иное лично мне нафиг ненужно (но я не говорю что это ненужно совсем). У гитфлика дохрена проблем, благо все они касаются того что лично меня никак не колышит :)

LINUX-ORG-RU ★★★★★
() автор топика
Последнее исправление: LINUX-ORG-RU (всего исправлений: 2)
Ответ на: комментарий от dataman

Там внизу есть ссылки на готовые реализации.

Не, так не интересно, я сам хочу,, с разными фильтрами я раньше в рамках Conage много игрался LUTы, маски, прочие приколюхи, можно вот ещё один эффект добавить. Хотя по сути, как я вижу там можно просто взять выложенную картинку и сделать одномерное изображение, которое накладывать на фотку как тупо LUT и всё. А самим алгоритмом не обрабатывать всё изображение целиком, а только генерировать 1D картинку. Я прям сейчас смогу сделать 100% аналогичных вывод, просто взяв со страницы автора вот это

так как в этом вся суть. Но конечно это как запечённый свет, будет быстро, но на любое изменение нужно перегенерировать LUT 1D картинку. И вот уже для этого нужна реализация самого алгоритма. Хотя справедливости ради, тоже самое можно за 2 минуты в GIMP сделать из градиентов.

Но! Цель автора там в алгоритме, который есть просто сам по себе и который можно применить к любому RGB путём явных преобразований, а не всяких там LUT и прочих обработок нашлёпками в GIMPе. И вот это уже интеренее, так как можно переложить алгоритм на GLSL например, причём напрямую.

Но хотелось бы в Цельсиях. :)

Первое о чём я подумал, в кельвинах ориентироваться такое себе, без привычки неудобно. Сначала набросок на lua, как заработает, на сишку перекину.

LINUX-ORG-RU ★★★★★
() автор топика
Последнее исправление: LINUX-ORG-RU (всего исправлений: 1)
Ответ на: комментарий от TPPPbIHDELj

Да, выше уже сказали про аналоги. Но они не выводят так как мне надо/хотелось. Больше часов, хороших и разных хехе

LINUX-ORG-RU ★★★★★
() автор топика
Ответ на: комментарий от dataman

Блин пока некогда, наверное завтра

Сейчас получилось только в зелёный всех переодеть, слева референсы для сравнения, справа отфильтрованная картинка :)

Синий где-то потерялся :D

LINUX-ORG-RU ★★★★★
() автор топика
Ответ на: комментарий от dataman

На’ви синюшные все, конечно они шарахнулись бы от этого «Весь покрытый зеленью, абсолютно весь, остров невезения в океане есть» :D

LINUX-ORG-RU ★★★★★
() автор топика
Ответ на: комментарий от dataman

Ой короче не знаю когда, может потом, поиграть и это пойдёт

Холодная картинка для теста

mkdir phototeml
cd phototemp
touch main.lua
#копипаста кода
love.

Закинуть картинку в окошечко

  • нажать пробел, применить эффект
  • клик мышкой в разные места по ширине окна смена температуры

Я по дурацки цвета смешиваю и температуру накладываю, но да пофиг

local function kelvin_to_celsius(kelvin_temperature)
    return kelvin_temperature - 273.15
end
-------------------------------------------------------------------------------
local function celsius_to_kelvin(celsius_temperature)
    return celsius_temperature + 273.15
end
-------------------------------------------------------------------------------
local function phototemp_filter_kelvin(temperature)

    temperature = temperature / 100
    local r,g,b
    ---
    if temperature <= 66 then
       r = 255
    else
       r = temperature - 60
       r = 329.398727446 * (r ^ -0.1332047592)
       if r < 0 then
          r = 0
       end
       if r > 255 then
          r = 255
       end
    end
    ---
    if temperature <= 66 then
       g = temperature
       g = 99.4708025861 * math.log(g) - 161.1195681661
       if g < 0 then
          g = 0
      end
      if g > 255 then
         g = 255
      end
    else
       g = temperature - 60
       g = 288.1221695283 * (g ^ -0.0755148492)
       if g < 0 then
          g = 0
       end
       if g > 255 then
          g = 255
       end
    end
    ---
    if temperature >= 66 then
        b = 255
    elseif temperature <= 19 then
           b = 0
        else
            b = temperature - 10
            b = 138.5177312231 * math.log(b) - 305.0447927307
            if b < 0 then
               b = 0
            end
            if b > 255 then
               b = 255
            end
        end
    return r, g, b
end
-------------------------------------------------------------------------------
local function phototemp_filter_celsius(r,g,b,temperature)
      return phototemp_filter_kelvin(r,g,b,celsius_to_kelvin(temperature))
end
-------------------------------------------------------------------------------
local inp  = nil
local out  = nil
local show = nil
local previ = nil;
local pose = {x=0,y=0};
local scal = 1;
local sx = 0;
local sy = 0;
local temperature = 1600
-- настроить окно
function love.load()
    love.window.setTitle('Перетащи png картинку в это окошечко')
    love.window.setMode(800,600,{resizable=true});
end
-- получить файл
function love.filedropped(file)
    local filename = file:getFilename();
    local file_ext = filename:match("%.%w+$")
    if file_ext == '.png' then
       inp = love.image.newImageData(file);
       out = love.image.newImageData(file);
       scal   = 1
       redraw()
    end
end

function redraw()
    if inp and out then
    local width, height = inp:getDimensions();
     for y = 1, height do
         for x = 1, width do
             local r, g, b, a = inp:getPixel(x-1, y-1);
             r,g,b,a = image_filter(r,g,b,a);
             out:setPixel( x-1, y-1, r, g, b, a );
         end
     end
    show = love.graphics.newImage(out);
    local w,h = love.window.getMode()
    sx,sy = w/inp:getWidth(),h/inp:getHeight();
    end
end

-- перемещение и температура
function love.mousemoved(x,y,dx,dy)
    if love.mouse.isDown(2) then
       if dx ~= 0 then pose.x = pose.x + dx; end
       if dy ~= 0 then pose.y = pose.y + dy; end
    end
end

local temp_width = 0
local rx,gx,bx = 1,1,1
function love.mousepressed(x,y)
    if love.mouse.isDown(1) then
       local w,h = love.window.getMode()
       temperature = (40000 / w) * x + 1000
       rx,gx,bx = phototemp_filter_kelvin(temperature)
       redraw()
       temp_width = x
    end
end

function love.resize()
    redraw()
end

-- масштабирование
function love.wheelmoved(x,y)
    scal = scal + y * 0.1;
end


function love.keypressed(key)
    if key == 'space' then
       local w,h = love.window.getMode()
       temperature = (40000 / w) * 10 + 1000
       rx,gx,bx = phototemp_filter_kelvin(temperature)
       redraw()
    end
end

function clamp (x,min,max)
    return math.min(math.max(x, min), max)
end

-- преобразовать температуру
function image_filter(r,g,b,a)
    local w = 1.5
    local l = (r + g + b ) / 3
    r = (r *0.5 + (rx/255) *0.5 * l * 1.5)
    g = (g *0.5 + (gx/255) *0.5 * l * 1.5)
    b = (b *0.5 + (bx/255) *0.5 * l * 1.5)
    return r, g, b, a;
end
-- отрисовать результат
function love.draw()
    if show then
       local r = math.max(sx,sy) / math.min(sx,sy)
       local w,h = love.window.getMode()
       sx,sy = w/inp:getWidth(),h/inp:getHeight();
       love.graphics.draw(show,pose.x ,pose.y ,0,sx*r*scal,sy*r*scal);
       love.graphics.print({{0.3,1,0.7},'F: '..math.floor(temperature)},5,0,0)
       love.graphics.print({{0.3,1,0.7},'C: '..math.floor(kelvin_to_celsius(temperature))},5,20)

       love.graphics.print({
       {0.3,1,0.7},'LM: temperature\nRM: move\nScroll: scale\nSpace: add effect'},5,40)

       love.graphics.setColor(0.2,0.2,0.2)
       love.graphics.rectangle('fill',0,h-40,w,40)
       love.graphics.setColor(0.5,0.5,0.5)
       love.graphics.rectangle('fill',5,h-30,temp_width-5,20)
       love.graphics.setColor(1,1,1)
    end
end

LINUX-ORG-RU ★★★★★
() автор топика
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.