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
172
awes2/widget/screen-recorder/screen-recorder-scripts.lua
Normal file
172
awes2/widget/screen-recorder/screen-recorder-scripts.lua
Normal file
|
@ -0,0 +1,172 @@
|
|||
local awful = require('awful')
|
||||
local naughty = require('naughty')
|
||||
|
||||
local user_config = require('widget.screen-recorder.screen-recorder-config')
|
||||
|
||||
local scripts_tbl = {}
|
||||
|
||||
local ffmpeg_pid = nil
|
||||
|
||||
-- Get user settings
|
||||
scripts_tbl.user_resolution = user_config.user_resolution
|
||||
scripts_tbl.user_offset = user_config.user_offset
|
||||
scripts_tbl.user_audio = user_config.user_audio
|
||||
scripts_tbl.user_dir = user_config.user_save_directory
|
||||
scripts_tbl.user_mic_lvl = user_config.user_mic_lvl
|
||||
scripts_tbl.user_fps = user_config.user_fps
|
||||
|
||||
scripts_tbl.update_user_settings = function(res, offset, audio)
|
||||
scripts_tbl.user_resolution = res
|
||||
scripts_tbl.user_offset = offset
|
||||
scripts_tbl.user_audio = audio
|
||||
end
|
||||
|
||||
scripts_tbl.check_settings = function()
|
||||
-- For debugging purpose only
|
||||
-- naughty.notification({
|
||||
-- message=scripts_tbl.user_resolution .. ' ' .. scripts_tbl.user_offset .. tostring(scripts_tbl.user_audio)
|
||||
-- })
|
||||
end
|
||||
|
||||
local create_save_directory = function()
|
||||
|
||||
local create_dir_cmd = [[
|
||||
dir=]] .. scripts_tbl.user_dir .. [[
|
||||
|
||||
if [ ! -d $dir ]; then
|
||||
mkdir -p $dir
|
||||
fi
|
||||
]]
|
||||
|
||||
awful.spawn.easy_async_with_shell(
|
||||
create_dir_cmd,
|
||||
function(stdout) end
|
||||
)
|
||||
|
||||
end
|
||||
|
||||
create_save_directory()
|
||||
|
||||
local kill_existing_recording_ffmpeg = function()
|
||||
-- Let's killall ffmpeg instance first after awesome (re)-starts if there's any
|
||||
awful.spawn.easy_async_with_shell(
|
||||
[[
|
||||
ps x | grep "ffmpeg -video_size" | grep -v grep | awk '{print $1}' | xargs kill
|
||||
]],
|
||||
function(stdout) end
|
||||
)
|
||||
end
|
||||
|
||||
kill_existing_recording_ffmpeg()
|
||||
|
||||
local turn_on_the_mic = function()
|
||||
awful.spawn.easy_async_with_shell(
|
||||
[[
|
||||
amixer set Capture cap
|
||||
amixer set Capture ]].. scripts_tbl.user_mic_lvl ..[[%
|
||||
]],
|
||||
function() end
|
||||
)
|
||||
end
|
||||
|
||||
local ffmpeg_stop_recording = function()
|
||||
awesome.kill(
|
||||
ffmpeg_pid, awesome.unix_signal.SIGINT
|
||||
)
|
||||
end
|
||||
|
||||
local create_notification = function(file_dir)
|
||||
local open_video = naughty.action {
|
||||
name = 'Open',
|
||||
icon_only = false,
|
||||
}
|
||||
|
||||
local delete_video = naughty.action {
|
||||
name = 'Delete',
|
||||
icon_only = false,
|
||||
}
|
||||
|
||||
open_video:connect_signal(
|
||||
'invoked',
|
||||
function()
|
||||
awful.spawn('xdg-open ' .. file_dir, false)
|
||||
end
|
||||
)
|
||||
|
||||
delete_video:connect_signal(
|
||||
'invoked',
|
||||
function()
|
||||
awful.spawn('gio trash ' .. file_dir, false)
|
||||
end
|
||||
)
|
||||
|
||||
naughty.notification ({
|
||||
app_name = 'Screenshot Recorder',
|
||||
timeout = 60,
|
||||
title = '<b>Recording Finished!</b>',
|
||||
message = 'Recording can now be viewed.',
|
||||
actions = { open_video, delete_video }
|
||||
})
|
||||
end
|
||||
|
||||
local ffmpeg_start_recording = function(audio, filename)
|
||||
|
||||
local add_audio_str = ' '
|
||||
|
||||
if audio then
|
||||
turn_on_the_mic()
|
||||
add_audio_str = ' -f pulse -ac 2 -i default '
|
||||
end
|
||||
|
||||
ffmpeg_pid = awful.spawn.easy_async_with_shell(
|
||||
[[
|
||||
file_name=]] .. filename .. [[
|
||||
|
||||
ffmpeg -video_size ]] .. scripts_tbl.user_resolution .. [[ -framerate ]] .. scripts_tbl.user_fps .. [[ -f x11grab \
|
||||
-i :0.0+]] .. scripts_tbl.user_offset .. add_audio_str .. [[ $file_name
|
||||
]],
|
||||
function(stdout, stderr)
|
||||
|
||||
if stderr and stderr:match('Invalid argument') then
|
||||
naughty.notification({
|
||||
app_name = 'Screen Recorder',
|
||||
title = '<b>Invalid Configuration!</b>',
|
||||
message = 'Please, put a valid settings!',
|
||||
timeout = 60,
|
||||
urgency = 'normal'
|
||||
})
|
||||
awesome.emit_signal('widget::screen_recorder')
|
||||
return
|
||||
end
|
||||
create_notification(filename)
|
||||
end
|
||||
)
|
||||
end
|
||||
|
||||
local create_unique_filename = function(audio)
|
||||
awful.spawn.easy_async_with_shell(
|
||||
[[
|
||||
dir=]] .. scripts_tbl.user_dir .. [[
|
||||
date=$(date '+%Y-%m-%d_%H-%M-%S')
|
||||
format=.mp4
|
||||
|
||||
echo ${dir}${date}${format} | tr -d '\n'
|
||||
]],
|
||||
function(stdout)
|
||||
local filename = stdout
|
||||
ffmpeg_start_recording(audio, filename)
|
||||
end
|
||||
)
|
||||
end
|
||||
|
||||
scripts_tbl.start_recording = function(audio_mode)
|
||||
create_save_directory()
|
||||
create_unique_filename(audio_mode)
|
||||
end
|
||||
|
||||
scripts_tbl.stop_recording = function()
|
||||
ffmpeg_stop_recording()
|
||||
end
|
||||
|
||||
|
||||
return scripts_tbl
|
Loading…
Add table
Add a link
Reference in a new issue