Страница 1 из 1
Как перенаправить ввод/вывод в yad?
Добавлено: 30 дек 2023, 10:19
vir0id
Всем привет. Есть код(foo), который что-то делает и перенаправляет вывод в stdout/stderr
function foo() {
бла-бла-бла-блатная информация 2>&1
}
Как можно сделать перенаправление ИЗ stdout в (foo2)?
2>&1 > foo2
Если такой финт вообще возможет?
Как перенаправить ввод/вывод в yad?
Добавлено: 30 дек 2023, 12:35
rogoznik
vir0id, а ты опиши что ты хочешь сделать. Так проще будет понять и дать ответ. А то выглядит как "удаление гланд через жопу"
К примеру можно сделать что-то такое
Код: Выделить всё
function foo() {
echo $1
}
var1="123"
foo $(echo $var1)
Тут функция принимает вывод другой функции как аргумент и выводит его
Как перенаправить ввод/вывод в yad?
Добавлено: 30 дек 2023, 14:43
vir0id
Ну вот смотри. Есть код
Код: Выделить всё
#!/usr/bin/bash
#{1..$(echo $(<"/home/vir0id/log_play_info") | wc -l ~/log_play_info | awk '{print $1}')}
#Serash youtube
log_play_info="$HOME/log_play_info"
if [[ -f /usr/bin/mpv && /usr/bin/yad ]]; then
function info_playlist() {
mpv --fs -ao=pulse --no-video --shuffle --script-opts-append=osc-visibility=always --term-playing-msg='Title: ${media-title}' "$input" 2>&1 | yad \
--image="$HOME/.config/i3/scripts/polybar-mpv/icons/youtube.svg" \
--geometry=20x40+500+400 \
--fontname="Iosevka Term Regular 12" \
--wrap --justify="center" \
--margins=1 \
--tail \
--editable \
--fore="#bb9af7" \
--back="#16161E" \
--listen \
--auto-close \
--auto-kill \
--monitor \
--text-info &
}
function info_track() {
mpv --fs ytdl://ytsearch:"$input" --no-video -ao=pulse --script-opts-append=osc-visibility=always --term-playing-msg='Title: ${media-title}' 2>&1 | yad \
--image="$HOME/.config/i3/scripts/polybar-mpv/icons/youtube.svg" \
--geometry=20x40+500+400 \
--fontname="Iosevka Term Regular 12" \
--wrap \
--justify="center" \
--margins=1 \
--tail \
--editable \
--fore="#bb9af7" \
--back="#16161E" \
--listen \
--auto-close \
--auto-kill \
--monitor \
--text-info &
}
function mpv_audio() {
function close_exit() {
killall mpv
killall yad
}
export -f close_exit
export -f info_playlist
export -f info_track
input=$(yad \
--title="Search-tube" \
--text="Press Enter:" \
--image="$HOME/.config/i3/scripts/polybar-mpv/icons/youtube.svg" \
--icon-size=48 \
--form \
--field=" Your track or playlist URL: " \
--button="Exit:bash -c close_exit" \
--fixed \
--width=800 \
--height=100 \
--separator="\t")
if [[ $input =~ "https" ]]; then
info_playlist
else
info_track
fi
}
function mpv_video() {
function close_exit() {
killall mpv
killall yad
}
export -f close_exit
input=$(yad \
--title="Search-tube" \
--text="Press Enter:" \
--image="$HOME/.config/i3/scripts/polybar-mpv/icons/youtube.svg" \
--icon-size=48 \
--form \
--field=" Your video or playlist URL: " \
--button="Exit:bash -c close_exit" \
--fixed \
--width=800 \
--height=100 \
--separator="\t")
if [[ $input =~ "https" ]]; then
mpv -ao=pulse --shuffle --term-playing-msg='Title: ${media-title}' "$input"
else
mpv ytdl://ytsearch:"$input" -ao=pulse --term-playing-msg='Title: ${media-title}'
fi
}
function close_exit_sec() {
killall mpv
killall yad
}
function close() {
killall yad
}
export -f mpv_audio
export -f mpv_video
export -f close_exit_sec
export -f close
export -f info_playlist
export -f info_track
endoff=$(yad \
--title="Search-tube" \
--text="What are you want?" \
--image="$HOME/.config/i3/scripts/polybar-mpv/icons/youtube.svg" \
--text-align=center \
--fixed \
--width=280 \
--height=100 \
--button-align=center \
--button="!$HOME/.config/i3/scripts/polybar-mpv/icons/window-close.svg!Exit:bash -c close_exit_sec" \
--button="!$HOME/.config/i3/scripts/polybar-mpv/icons/go-down-skip.svg!Close:bash -c close" \
--button="!$HOME/.config/i3/scripts/polybar-mpv/icons/monitor.svg!Display:bash -c (отдельная функция yad)" \
--button="!$HOME/.config/i3/scripts/polybar-mpv/icons/audio-volume-medium.svg!Audio:bash -c mpv_audio" \
--button="!$HOME/.config/i3/scripts/polybar-mpv/icons/filmgrain.svg!Video:bash -c mpv_video" \
--separator="\t")
else
echo "Please install mpv and yad"
fi
Это кастомный псевдоплеер в связке mpv+ytdlp+yad. В нем(коде) срабатывает функция со связкой mpv+ytdlp, и вывод терминала уходит в stdout/stderr, а затем уходит в yad. После чего, yad видит информацию о треке (время,скорость передачи и тд..). Мне это всё нужно вывести на кнопку Display, да только так, что бы yad это видел и открывал свою "консоль/окно". Для этого мне нужно создать (отдельную функцию yad) и скармливать туда выводы от info_playlist или info_track. Дальше нужно выводить информацию в (отдельную функцию yad) чтоб она обновлялась, а не выходила целым потоком.
Вопрос: Как скормить конечный вывод stdout/stderr от функций info_playlist или info_track в (отдельную функцию yad)?
Ну и еще один вопрос: Как обновлять информацию поступающую в (отдельную функцию yad) из stdout/stderr?
Как перенаправить ввод/вывод в yad?
Добавлено: 30 дек 2023, 15:29
rogoznik
vir0id, тогда пиши вывод в файл и читай этот файл через функцию, когда хочешь. Хоть посимвольно, хоть построчно, хоть целиком.
Как перенаправить ввод/вывод в yad?
Добавлено: 30 дек 2023, 15:32
vir0id
rogoznik писал(а): ↑30 дек 2023, 15:29
vir0id, тогда пиши вывод в файл и читай этот файл через функцию, когда хочешь. Хоть посимвольно, хоть построчно, хоть целиком.
Я пробовал. Не пишет. Хз чего я делаю не так