moved to personal fennel config for awesome and added qutebrowser
This commit is contained in:
parent
403cb92b7d
commit
688748f8a6
502 changed files with 8576 additions and 9597 deletions
597
awes2/widget/screen-recorder/screen-recorder-ui-backend.lua
Normal file
597
awes2/widget/screen-recorder/screen-recorder-ui-backend.lua
Normal file
|
@ -0,0 +1,597 @@
|
|||
local wibox = require('wibox')
|
||||
local awful = require('awful')
|
||||
local gears = require('gears')
|
||||
local naughty = require('naughty')
|
||||
local beautiful = require('beautiful')
|
||||
|
||||
local dpi = beautiful.xresources.apply_dpi
|
||||
|
||||
local config_dir = gears.filesystem.get_configuration_dir()
|
||||
local widget_icon_dir = config_dir .. 'widget/screen-recorder/icons/'
|
||||
|
||||
-- The screen-recorders scripting
|
||||
local screen_rec_backend = require('widget.screen-recorder.screen-recorder-scripts')
|
||||
|
||||
|
||||
-- The screen-recorder's UI
|
||||
local screen_rec_ui = require('widget.screen-recorder.screen-recorder-ui')
|
||||
|
||||
|
||||
-- User Preferences
|
||||
|
||||
local sr_user_resolution = screen_rec_backend.user_resolution
|
||||
local sr_user_offset = screen_rec_backend.user_offset
|
||||
local sr_user_audio = screen_rec_backend.user_audio
|
||||
local sr_user_update = screen_rec_backend.update_user_settings
|
||||
|
||||
-- Panel UIs
|
||||
|
||||
local sr_toggle_imgbox = screen_rec_ui.screen_rec_toggle_imgbox
|
||||
local sr_toggle_button = screen_rec_ui.screen_rec_toggle_button
|
||||
local sr_countdown_text = screen_rec_ui.screen_rec_countdown_txt
|
||||
local sr_main_imgbox = screen_rec_ui.screen_rec_main_imgbox
|
||||
local sr_main_button = screen_rec_ui.screen_rec_main_button
|
||||
local sr_audio_imgbox = screen_rec_ui.screen_rec_audio_imgbox
|
||||
local sr_audio_button = screen_rec_ui.screen_rec_audio_button
|
||||
local sr_settings_button = screen_rec_ui.screen_rec_settings_button
|
||||
local sr_close_button = screen_rec_ui.screen_rec_close_button
|
||||
|
||||
|
||||
-- Settings UIs
|
||||
|
||||
local sr_back_button = screen_rec_ui.screen_rec_back_button
|
||||
|
||||
local sr_resolution_box = screen_rec_ui.screen_rec_res_txtbox
|
||||
local sr_offset_box = screen_rec_ui.screen_rec_offset_txtbox
|
||||
|
||||
local sr_resolution_tbox = sr_resolution_box:get_children_by_id('res_tbox')[1]
|
||||
local sr_offset_tbox = sr_offset_box:get_children_by_id('offset_tbox')[1]
|
||||
|
||||
|
||||
-- Main Scripts
|
||||
|
||||
local sr_start_recording = screen_rec_backend.start_recording
|
||||
local sr_stop_recording = screen_rec_backend.stop_recording
|
||||
|
||||
|
||||
-- Active Screen Recorder
|
||||
local sr_screen = nil
|
||||
|
||||
|
||||
-- Active textbox
|
||||
local sr_active_tbox = nil
|
||||
|
||||
|
||||
-- Status variables
|
||||
|
||||
local status_countdown = false
|
||||
local status_recording = false
|
||||
|
||||
local status_audio = sr_user_audio
|
||||
|
||||
|
||||
-- Update UI on startup using the user config
|
||||
|
||||
sr_resolution_tbox:set_markup('<span foreground="#FFFFFF66">' .. sr_user_resolution .. "</span>")
|
||||
sr_offset_tbox:set_markup('<span foreground="#FFFFFF66">' .. sr_user_offset .. "</span>")
|
||||
|
||||
local sr_res_default_markup = sr_resolution_tbox:get_markup()
|
||||
local sr_offset_default_markup = sr_offset_tbox:get_markup()
|
||||
|
||||
|
||||
if status_audio then
|
||||
sr_audio_button.bg = '#EE4F84' .. '66'
|
||||
else
|
||||
sr_audio_button.bg = beautiful.groups_bg
|
||||
end
|
||||
|
||||
|
||||
-- Textbox ui manipulators
|
||||
|
||||
local emphasize_inactive_tbox = function()
|
||||
if sr_active_tbox == 'res_tbox' then
|
||||
|
||||
sr_resolution_box.shape_border_width = dpi(0)
|
||||
sr_resolution_box.shape_border_color = beautiful.transparent
|
||||
|
||||
elseif sr_active_tbox == 'offset_tbox' then
|
||||
|
||||
sr_offset_box.shape_border_width = dpi(0)
|
||||
sr_offset_box.shape_border_color = beautiful.transparent
|
||||
end
|
||||
|
||||
sr_active_tbox = nil
|
||||
end
|
||||
|
||||
local emphasize_active_tbox = function()
|
||||
|
||||
if sr_active_tbox == 'res_tbox' then
|
||||
|
||||
sr_resolution_box.border_width = dpi(1)
|
||||
sr_resolution_box.border_color = '#F2F2F2AA'
|
||||
|
||||
elseif sr_active_tbox == 'offset_tbox' then
|
||||
|
||||
sr_offset_box.border_width = dpi(1)
|
||||
sr_offset_box.border_color = '#F2F2F2AA'
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
|
||||
-- Delete, reset and write to the textbox
|
||||
|
||||
local write_to_textbox = function(char)
|
||||
|
||||
-- naughty.notification({message=sr_active_tbox})
|
||||
|
||||
if sr_active_tbox == 'res_tbox' and (char:match('%d') or char == 'x') then
|
||||
|
||||
if sr_resolution_tbox:get_markup() == sr_res_default_markup then
|
||||
sr_resolution_tbox:set_text('')
|
||||
end
|
||||
|
||||
if tonumber(#sr_resolution_tbox:get_text()) <= 8 then
|
||||
sr_resolution_tbox:set_text(sr_resolution_tbox:get_text() .. char)
|
||||
end
|
||||
|
||||
elseif sr_active_tbox == 'offset_tbox' and (char:match('%d') or char == ',') then
|
||||
|
||||
if sr_offset_tbox:get_markup() == sr_offset_default_markup then
|
||||
sr_offset_tbox:set_text('')
|
||||
end
|
||||
|
||||
sr_offset_tbox:set_text(sr_offset_tbox:get_text() .. char)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
local reset_textbox = function()
|
||||
|
||||
if sr_active_tbox == 'res_tbox' then
|
||||
|
||||
sr_resolution_tbox:set_markup(sr_res_default_markup)
|
||||
|
||||
elseif sr_active_tbox == 'offset_tbox' then
|
||||
|
||||
sr_offset_tbox:set_markup(sr_offset_default_markup)
|
||||
|
||||
end
|
||||
|
||||
emphasize_inactive_tbox()
|
||||
|
||||
end
|
||||
|
||||
|
||||
-- Set audio mode
|
||||
|
||||
|
||||
local sr_audio_mode = function()
|
||||
|
||||
if not status_recording and not status_countdown then
|
||||
|
||||
-- screen_rec_audio_button
|
||||
|
||||
if status_audio then
|
||||
|
||||
status_audio = false
|
||||
|
||||
sr_audio_button.bg = beautiful.groups_bg
|
||||
|
||||
else
|
||||
|
||||
status_audio = true
|
||||
|
||||
sr_audio_button.bg = '#EE4F84' .. '66'
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
|
||||
local delete_key = function()
|
||||
|
||||
if sr_active_tbox == 'res_tbox' then
|
||||
|
||||
if tonumber(#sr_resolution_tbox:get_text()) == 1 then
|
||||
reset_textbox()
|
||||
return
|
||||
end
|
||||
|
||||
sr_resolution_tbox:set_text(sr_resolution_tbox:get_text():sub(1, -2))
|
||||
|
||||
|
||||
elseif sr_active_tbox == 'offset_tbox' then
|
||||
|
||||
if tonumber(#sr_offset_tbox:get_text()) == 1 then
|
||||
reset_textbox()
|
||||
return
|
||||
end
|
||||
|
||||
sr_offset_tbox:set_text(sr_offset_tbox:get_text():sub(1, -2))
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
|
||||
local apply_new_settings = function()
|
||||
|
||||
-- Get the text on texbox
|
||||
sr_user_resolution = sr_resolution_tbox:get_text()
|
||||
sr_user_offset = sr_offset_tbox:get_text()
|
||||
|
||||
-- Apply new settings
|
||||
sr_user_update(sr_user_resolution, sr_user_offset, status_audio)
|
||||
|
||||
|
||||
-- Debugger
|
||||
screen_rec_backend.check_settings()
|
||||
|
||||
end
|
||||
|
||||
|
||||
-- Settings Key grabber
|
||||
|
||||
local settings_updater = awful.keygrabber {
|
||||
auto_start = true,
|
||||
stop_event = 'release',
|
||||
keypressed_callback = function(self, mod, key, command)
|
||||
if key == 'BackSpace' then
|
||||
delete_key()
|
||||
end
|
||||
end,
|
||||
keyreleased_callback = function(self, mod, key, command)
|
||||
|
||||
if key == 'Return' then
|
||||
apply_new_settings()
|
||||
self:stop()
|
||||
end
|
||||
|
||||
if key == 'Escape' then
|
||||
self:stop()
|
||||
reset_textbox()
|
||||
end
|
||||
|
||||
if key:match('%d') or key == 'x' or key == ',' then
|
||||
write_to_textbox(key)
|
||||
end
|
||||
|
||||
end
|
||||
}
|
||||
|
||||
|
||||
-- Textboxes
|
||||
|
||||
|
||||
sr_resolution_tbox:buttons(
|
||||
gears.table.join(
|
||||
awful.button(
|
||||
{},
|
||||
1,
|
||||
nil,
|
||||
function()
|
||||
emphasize_inactive_tbox()
|
||||
|
||||
sr_active_tbox = 'res_tbox'
|
||||
|
||||
emphasize_active_tbox()
|
||||
|
||||
settings_updater:start()
|
||||
end
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
sr_offset_tbox:buttons(
|
||||
gears.table.join(
|
||||
awful.button(
|
||||
{},
|
||||
1,
|
||||
nil,
|
||||
function()
|
||||
emphasize_inactive_tbox()
|
||||
|
||||
sr_active_tbox = 'offset_tbox'
|
||||
|
||||
emphasize_active_tbox()
|
||||
|
||||
settings_updater:start()
|
||||
end
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
-- UI switcher
|
||||
|
||||
|
||||
local sr_navigation_reset = function()
|
||||
if sr_screen then
|
||||
local recorder_panel = sr_screen:get_children_by_id('recorder_panel')[1]
|
||||
local recorder_settings = sr_screen:get_children_by_id('recorder_settings')[1]
|
||||
|
||||
recorder_settings.visible = false
|
||||
recorder_panel.visible = true
|
||||
end
|
||||
end
|
||||
|
||||
local sr_navigation = function()
|
||||
|
||||
if sr_screen then
|
||||
|
||||
local recorder_panel = sr_screen:get_children_by_id('recorder_panel')[1]
|
||||
local recorder_settings = sr_screen:get_children_by_id('recorder_settings')[1]
|
||||
|
||||
if recorder_panel.visible then
|
||||
recorder_panel.visible = false
|
||||
recorder_settings.visible = true
|
||||
else
|
||||
recorder_settings.visible = false
|
||||
recorder_panel.visible = true
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
sr_settings_button:buttons(
|
||||
gears.table.join(
|
||||
awful.button(
|
||||
{},
|
||||
1,
|
||||
nil,
|
||||
function()
|
||||
if not status_recording and not status_countdown then
|
||||
sr_navigation()
|
||||
end
|
||||
end
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
sr_back_button:buttons(
|
||||
gears.table.join(
|
||||
awful.button(
|
||||
{},
|
||||
1,
|
||||
nil,
|
||||
function()
|
||||
-- Save settings
|
||||
apply_new_settings()
|
||||
|
||||
-- Reset textbox UI
|
||||
emphasize_inactive_tbox()
|
||||
|
||||
-- Go back to UI Panel
|
||||
sr_navigation()
|
||||
end
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
-- Close button functions and buttons
|
||||
|
||||
local screen_rec_close = function()
|
||||
|
||||
for s in screen do
|
||||
s.recorder_screen.visible = false
|
||||
end
|
||||
|
||||
settings_updater:stop()
|
||||
|
||||
sr_navigation_reset()
|
||||
sr_screen = nil
|
||||
end
|
||||
|
||||
sr_close_button:buttons(
|
||||
gears.table.join(
|
||||
awful.button(
|
||||
{},
|
||||
1,
|
||||
nil,
|
||||
function()
|
||||
screen_rec_close()
|
||||
end
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
-- Right click to exit
|
||||
|
||||
local screen_close_on_rmb = function(widget)
|
||||
widget:buttons(
|
||||
gears.table.join(
|
||||
awful.button(
|
||||
{},
|
||||
3,
|
||||
nil,
|
||||
function()
|
||||
screen_rec_close()
|
||||
end
|
||||
)
|
||||
)
|
||||
)
|
||||
end
|
||||
|
||||
-- Open recorder screen
|
||||
|
||||
sr_toggle_button:buttons(
|
||||
gears.table.join(
|
||||
awful.button(
|
||||
{},
|
||||
1,
|
||||
nil,
|
||||
function()
|
||||
for s in screen do
|
||||
s.recorder_screen.visible = false
|
||||
end
|
||||
|
||||
sr_screen = awful.screen.focused().recorder_screen
|
||||
|
||||
screen_close_on_rmb(sr_screen)
|
||||
|
||||
sr_screen.visible = not sr_screen.visible
|
||||
end
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
-- Start Recording
|
||||
|
||||
local sr_recording_start = function()
|
||||
|
||||
status_countdown = false
|
||||
status_recording = true
|
||||
|
||||
local sr_screen = awful.screen.focused().recorder_screen
|
||||
|
||||
-- Hide recorder screen
|
||||
sr_screen.visible = false
|
||||
|
||||
-- Manipulate UIs
|
||||
sr_toggle_imgbox:set_image(widget_icon_dir .. 'recording-button' .. '.svg')
|
||||
sr_main_imgbox:set_image(widget_icon_dir .. 'recorder-on' .. '.svg')
|
||||
|
||||
|
||||
sr_start_recording(status_audio)
|
||||
|
||||
end
|
||||
|
||||
|
||||
-- Stop Recording
|
||||
|
||||
|
||||
local sr_recording_stop = function()
|
||||
|
||||
status_recording = false
|
||||
status_audio = false
|
||||
|
||||
-- Manipulate UIs
|
||||
sr_toggle_imgbox:set_image(widget_icon_dir .. 'start-recording-button' .. '.svg')
|
||||
sr_main_imgbox:set_image(widget_icon_dir .. 'recorder-off' .. '.svg')
|
||||
|
||||
|
||||
sr_stop_recording()
|
||||
|
||||
end
|
||||
|
||||
awesome.connect_signal('widget::screen_recorder',
|
||||
function()
|
||||
sr_recording_stop()
|
||||
end
|
||||
)
|
||||
|
||||
-- Countdown timer functions
|
||||
|
||||
local countdown_timer = nil
|
||||
|
||||
local counter_timer = function()
|
||||
|
||||
status_countdown = true
|
||||
|
||||
local seconds = 3
|
||||
|
||||
countdown_timer = gears.timer.start_new(
|
||||
1,
|
||||
function()
|
||||
if seconds == 0 then
|
||||
|
||||
sr_countdown_text.opacity = 0.0
|
||||
|
||||
-- Start recording function
|
||||
sr_recording_start()
|
||||
|
||||
sr_countdown_text:emit_signal('widget::redraw_needed')
|
||||
return false
|
||||
|
||||
else
|
||||
|
||||
sr_main_imgbox:set_image(widget_icon_dir .. 'recorder-countdown' .. '.svg')
|
||||
|
||||
sr_countdown_text.opacity = 1.0
|
||||
sr_countdown_text:set_text(tostring(seconds))
|
||||
|
||||
sr_countdown_text:emit_signal('widget::redraw_needed')
|
||||
end
|
||||
|
||||
seconds = seconds - 1
|
||||
|
||||
return true
|
||||
end
|
||||
)
|
||||
|
||||
end
|
||||
|
||||
|
||||
-- Stop Countdown timer
|
||||
|
||||
|
||||
local sr_countdown_stop = function()
|
||||
|
||||
countdown_timer:stop()
|
||||
|
||||
status_countdown = false
|
||||
|
||||
sr_main_imgbox:set_image(widget_icon_dir .. 'recorder-off' .. '.svg')
|
||||
|
||||
sr_countdown_text.opacity = 0.0
|
||||
sr_countdown_text:emit_signal('widget::redraw_needed')
|
||||
|
||||
end
|
||||
|
||||
|
||||
sr_audio_button:buttons(
|
||||
gears.table.join(
|
||||
awful.button(
|
||||
{},
|
||||
1,
|
||||
nil,
|
||||
function()
|
||||
sr_audio_mode()
|
||||
end
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
-- Main button functions and buttons
|
||||
|
||||
local status_checker = function()
|
||||
|
||||
if status_recording and not status_countdown then
|
||||
|
||||
-- Stop recording
|
||||
sr_recording_stop()
|
||||
return
|
||||
|
||||
elseif not status_recording and status_countdown then
|
||||
|
||||
-- Stop timer
|
||||
sr_countdown_stop()
|
||||
return
|
||||
end
|
||||
|
||||
|
||||
-- Start counting down
|
||||
counter_timer()
|
||||
|
||||
end
|
||||
|
||||
|
||||
sr_main_button:buttons(
|
||||
gears.table.join(
|
||||
awful.button(
|
||||
{},
|
||||
1,
|
||||
nil,
|
||||
function()
|
||||
status_checker()
|
||||
end
|
||||
)
|
||||
)
|
||||
)
|
Loading…
Add table
Add a link
Reference in a new issue