Paste #268689

   
pasted on 12.03.2023 03:41
  • Edit to this paste
  • Print
  • Raw
  • Compare with paste
    #  
  • Toggle line numbers
  • Syntax highlighting  
Text paste
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#! /bin/env lua

local signal_file_name = '.coffee'
local signal_file = os.getenv('HOME')..'/'..signal_file_name;
local file = io.open(signal_file);

if(file) then
    local stat = file:read('*all');
    file:close();
    if stat == 'working' then
       file = io.open(signal_file,'w');
       file:write('stop');
       return 0;
    else
       file = io.open(signal_file,'w');
       file:write('working');
       file:close();
       stat="working";
    end
    local timer = 420;
    -- получаум ID прогессбара
    local qpopen = io.popen('kdialog --progressbar "Кофе" '..timer..' ',"r");
    local qprogress_id    = qpopen:read("*l");
    local play_sound = true;
    -- теперь мы крутим цикл не вечно, но оставляем его
    while(stat=="working") do
            -- заводим цикл отправки сообщений прогрессбару
            for coffee=0, timer ,1 do
                -- теперь проверяем стастус в цикле 
                -- отправки счётчика прогрессбару
                file = io.open(signal_file,'r');
                stat = file:read('*all');
                file:close();
                -- если повторно нажать хоткей
                -- значением поменяется на стоп
                -- выходим из цикла прогрессбара
                -- и задаём оснанов для основного цикла
                if stat == "stop" then 
                    play_sound=false; 
                    stat="stop"
                    break; 
                end
                --шлём счётчик прогрессбару
                local qdbus = 'qdbus '..qprogress_id..' Set "" value '..tostring(coffee)..' >/dev/null';
                os.execute(qdbus);
                os.execute("sleep 1")
            end
            -- проигрываем музыку тогда и только тогда когда завешилось естественно
            -- если прервали играть не надо ибо зачем, а главное ****я
            if play_sound == true then 
               -- если музыка не просто тилинь тилинь короткая, а целая песня 
               -- то будет играть до победного и только тогда всё завершится корректно
               -- если тут музыка длинная то надо делать детекст нажатия в окне
               -- прогресс бара кнопочки "закрыть" и в фоне грохать музыку
               -- для этого уже надо завести отдельный поток который будет это делать
               -- музыка просто тилинь-тилинь недолгая
               os.execute("mpv --force-window=no /home/diver/Загрузки/Музыка/12/coffee.mp3");
               os.execute("killall kdialog_progress_helper");
               file = io.open(signal_file,'w');
               file:write('stop');
               file:close();
               break;
            end
            -- всегда грохаем прогресс бар после достижения таймером финала
            os.execute("qdbus "..qprogress_id.." org.kde.kdialog.ProgressDialog.close");
            -- после того как в любом случае завершился прогресс бар 
            -- посылаем сигнал сами себе что мы всё. 
            file = io.open(signal_file,'w');
            file:write('stop');
        end
    end
Add Comment
Author