summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--.config/env6
-rw-r--r--.config/mpv/mpv.conf4
-rw-r--r--.config/newsboat/config60
-rw-r--r--.config/x11/xinitrc4
-rwxr-xr-x.local/bin/linkview604
-rwxr-xr-x.local/bin/nb1
-rwxr-xr-x.local/bin/ndate5
-rwxr-xr-x.local/bin/newsboat-notif3
-rwxr-xr-x.local/bin/ref-newsboat24
-rwxr-xr-x.local/bin/scr24
-rwxr-xr-x.local/bin/scr36
-rw-r--r--.local/state/w3m/history2
12 files changed, 414 insertions, 309 deletions
diff --git a/.config/env b/.config/env
index 761ef8b..ff8f825 100644
--- a/.config/env
+++ b/.config/env
@@ -37,10 +37,10 @@ export FILE='lf'
# UTF-8
export CHARSET='UTF-8'
-export LANG='en_US.UTF-8'
-# export LANG='C'
+export LC_ALL=en_US.UTF-8
export LC_COLLATE='C'
-export LC_ALL=''
+export LC_CTYPE=en_US.UTF-8
+export LANG=en_US.UTF-8
# Cleanup
export ANDROID_SDK_HOME="$XDG_CONFIG_HOME"/android
diff --git a/.config/mpv/mpv.conf b/.config/mpv/mpv.conf
index fbb1019..b33320e 100644
--- a/.config/mpv/mpv.conf
+++ b/.config/mpv/mpv.conf
@@ -1,4 +1,6 @@
-video-sync=display-resample
+# video-sync=display-resample
osc=yes
demuxer-max-bytes=1GiB
+ytdl=yes
script-opts=ytdl_hook-ytdl_path=yt-dlp,ytdl_hook-try_ytdl_first=yes,ytdl_hook-exclude="%.webm$|%.ts$|%.mp3$|%.m3u8$|%.m3u$|%.mkv$|%.mp4$|%.VOB$"
+term-osd-bar=yes
diff --git a/.config/newsboat/config b/.config/newsboat/config
index c1036c9..dfa91a2 100644
--- a/.config/newsboat/config
+++ b/.config/newsboat/config
@@ -1,8 +1,17 @@
-#how-read-feeds no
-auto-reload no
+auto-reload yes
+refresh-on-startup yes
+reload-time 30
confirm-mark-all-feeds-read yes
confirm-mark-feed-read no
-reload-threads 4
+reload-threads 100
+text-width 80
+show-keymap-hint no
+show-title-bar no
+swap-title-and-hints no
+ignore-mode download
+notify-program ~/.local/bin/newsboat-notif
+notify-always yes
+notify-format "%d"
external-url-viewer "urlview"
@@ -31,22 +40,30 @@ bind-key v show-urls
bind-key x pb-delete
bind-key ^t next-unread
-color listnormal white default
-color listfocus black white standout
-color listnormal_unread red default bold
-color listfocus_unread red black bold
-color info yellow black bold
-color article default default
+ignore-article "*" "title =~ \"#shorts$\""
+ignore-article "*" "link =~ \"youtube.com/shorts/\""
-browser "linkview %u"
+color background default default
+color listnormal default default dim
+color listnormal_unread default default bold
+color listfocus default black dim
+color listfocus_unread default black bold
+color info yellow black bold
+color article default default
+
+search-highlight-colors yellow black bold
+
+browser "linkview %u %T"
macro , open-in-browser
macro t set browser "youtube-dl --add-metadata -ic"; open-in-browser ; set browser linkhandler
macro a set browser "youtube-dl --add-metadata -xic -f bestaudio/best"; open-in-browser ; set browser linkhandler
macro v set browser "linkview"; open-in-browser ; set browser linkhandler
macro w set browser "linkview"; open-in-browser ; set browser linkhandler
-highlight all "---.*---" yellow
-highlight feedlist ".*(0/0))" black
+datetime-format "%y-%m-%d %H:%M"
+articlelist-format "%D - %t"
+feedlist-format "%?T?%n%8u %t [%T]&#%-8t----------------------------------------------------------?"
+
highlight article "(^Feed:.*|^Title:.*|^Author:.*)" cyan default bold
highlight article "(^Link:.*|^Date:.*)" default default
highlight article "https?://[^ ]+" green default
@@ -57,3 +74,22 @@ highlight article "\\[embedded flash: [0-9][0-9]*\\]" green default bold
highlight article ":.*\\(link\\)$" cyan default
highlight article ":.*\\(image\\)$" blue default
highlight article ":.*\\(embedded flash\\)$" magenta default
+
+highlight feedlist ".*(0/0))" black
+highlight feedlist ".* \\[(news|tech|normies|gaming|space|skate|music)\\]$" default default dim
+highlight feedlist "^N.* \\[tech\\]$" cyan default bold
+highlight feedlist "^N.* \\[normies\\]$" red default bold
+highlight feedlist "^N.* \\[news\\]$" green default bold
+highlight feedlist "^N.* \\[gaming\\]$" yellow default bold
+highlight feedlist "^N.* \\[space\\]$" blue default bold
+highlight feedlist "^N.* \\[skate\\]$" magenta default bold
+highlight feedlist "^N.* \\[music\\]$" white default bold
+highlight feedlist "^#tech .*" cyan default bold
+highlight feedlist "^#normies .*" red default bold
+highlight feedlist "^#news .*" green default bold
+highlight feedlist "^#gaming .*" yellow default bold
+highlight feedlist "^#space .*" blue default bold
+highlight feedlist "^#skate .*" magenta default bold
+highlight feedlist "^#music .*" white default bold
+highlight feedlist "^N" default default invis
+highlight feedlist "\\[(news|tech|normies|gaming|space|skate|music)\\]$" default default invis
diff --git a/.config/x11/xinitrc b/.config/x11/xinitrc
index 59b01e8..782f441 100644
--- a/.config/x11/xinitrc
+++ b/.config/x11/xinitrc
@@ -65,11 +65,11 @@ start_apps() {
export LANG='en_US.UTF-8'
[ $host = "mother" ] && xrandr \
--output HDMI-0 --primary --mode 1920x1080 --pos 0x0 --rotate normal \
- --output DP-0 --mode 1680x1050 --pos 1920x0 --rotate normal \
+ --output DP-0 --off \
--output DP-1 --off \
--output DP-2 --off \
--output DP-3 --off \
- --output DP-4 --off \
+ --output DP-4 --mode 1680x1050 --pos 1920x0 --rotate normal \
--output DP-5 --off
# --output DP-4 --mode 1440x900 --pos 0x0 --rotate normal \
[ $host = "po-rbo" ] && xrandr \
diff --git a/.local/bin/linkview b/.local/bin/linkview
index ca07feb..2d4fc9f 100755
--- a/.local/bin/linkview
+++ b/.local/bin/linkview
@@ -8,12 +8,9 @@ use File::HomeDir qw(home);
use File::Basename qw(basename fileparse);
use Cwd qw(cwd);
use Env qw(BROWSER TERMINAL);
-use Term::ReadKey;
use Capture::Tiny qw(capture);
use POSIX qw(setsid);
use Data::UUID;
-use feature qw(switch);
-no warnings qw(experimental::smartmatch);
my $menu = "fzf";
@@ -31,14 +28,12 @@ use constant {
COPYQ_PATH => 'copyq',
HOSTNAME => (split /\./, hostname())[0]
};
-use constant PROG_LIST => "" .
-"play" . "\n" .
-"img" . "\n" .
-"dl" . "\n" .
-"pdf" . "\n" .
-"w3m" . "\n" .
-"browser" . "\n" .
-"clip";
+
+my @keys = ( 'vid', 'img', 'dl', 'audio', 'pdf', 'w3m', 'web', 'clip' );
+my @func_refs = ( \&vid, \&img_pdf, \&dl, \&audio, \&img_pdf, \&w3m, \&web, \&clip );
+my %func_list;
+@func_list{@keys} = @func_refs;
+
use constant QUAL_LIST => "" .
"uncap" . "\n" .
"1440" . "\n" .
@@ -49,188 +44,201 @@ use constant QUAL_LIST => "" .
"240" . "\n" .
"144" . "\n";
-sub open_link
+sub vid
{
- my ($a, $url) = @_;
- my $count;
+ my ($url, $article_name) = @_;
+ my $pid;
+
+ $article_name = "some media" if ($article_name eq "");
+ $pid = fork();
+ if (not $pid) {
+ setsid();
+ close_io();
+ system(
+ NOTIFYSEND_PATH,
+ '-t', '2000',
+ 'playing media',
+ ' playing <b>' . $article_name . '</b>'
+ );
+ if (system(MPV_PATH, "--force-window=yes", $url) != 0) {
+ exec(
+ NOTIFYSEND_PATH,
+ '-u', 'critical',
+ '-t', '10000',
+ 'playback failed',
+ ' failed to open <b>' . $url . '</b>'
+ );
+ }
+ return;
+ }
+ return;
+}
+
+sub img_pdf
+{
+ my ($url, $article_name, $key) = @_;
my $file_name;
- my $i;
- my $list;
+ my $new_file_name;
my $pid;
- my $pid2;
- my $pwd;
- my $quality;
my $ret;
my $tmp;
- my $tmpfile;
my $ug;
my $uuid;
- my $val;
- my @wc;
- if ($a eq "play") {
- $pid = fork();
- if (not $pid) {
- setsid();
- close_io();
+ $article_name = "some media" if ($article_name eq "");
+ $pid = fork();
+ if (not $pid) {
+ setsid();
+ close_io();
+ chdir '/tmp' or die $!;
+ $file_name = $url;
+ $file_name =~ s/.+\///g;
+ if (is_yt($url) != 0) {
system(
NOTIFYSEND_PATH,
- '-u', 'low',
- '-t', '2000',
- 'playing media',
- ' playing <b>' . $url . '</b>'
+ '-t', '5000',
+ 'fetching thumbnail',
+ ' fetching thumbnail for <b>' . $article_name . '</b>'
);
- if (system(MPV_PATH, $url) != 0) {
- exec(
+ ($tmp, undef, $ret) = capture {
+ system(YTDL_PATH, '--get-thumbnail', $url);
+ };
+ chomp $tmp;
+ if ($ret != 0) {
+ system(
NOTIFYSEND_PATH,
'-u', 'critical',
- '-t', '10000',
- 'playback failed',
- ' failed to open <b>' . $url . '</b>'
+ 'failed to get thumbnail',
+ ' failed to get thumbail for <b>' . $article_name . '</b>'
);
+ return;
}
- return;
+ $url = $tmp;
}
+ else {
+ system(
+ NOTIFYSEND_PATH,
+ '-t', '5000',
+ 'download started',
+ ' fetching <b>'. $file_name . '</b> to <b>/tmp</b>'
+ );
+ }
+ $file_name = $url;
+ $file_name =~ s/.+\///g;
+ if (HOSTNAME eq "mother" or "po-rbo") {
+ system(CURL_PATH, "-fsSLO", $url);
+ } elsif (HOSTNAME == "mars") {
+ system(FETCH_PATH, "-q", $url);
+ }
+ my ($name, undef, $ext) = fileparse($file_name, qr/\.[^.]*/);
+ $ug = Data::UUID->new;
+ $uuid = $ug->create_str();
+ $ext =~ s/\?.*//;
+ $new_file_name = $uuid . $ext;
+ rename($file_name, $new_file_name) or die $!;
+ if ($key =~ /img/) {
+ $ret = system(IMGVIEW_PATH . " " . $new_file_name);
+ }
+ else {
+ $ret = system(ZATHURA_PATH, $new_file_name);
+ }
+ if ($ret != 0) {
+ system(
+ NOTIFYSEND_PATH,
+ '-u', 'critical',
+ 'failed to open image',
+ ' failed to open file <b>/tmp/'. $new_file_name . '</b>'
+ );
+ }
+ unlink($new_file_name);
return;
}
- elsif ($a eq "mpv-term") {
- exec(TERMINAL_PATH, '-e', MPV_PATH, '--audio-channels=stereo', $url);
+ return;
+}
+
+sub dl
+{
+ my ($url) = @_;
+ my $count;
+ my $file_name;
+ my $i;
+ my $list;
+ my $pid;
+ my $pid2;
+ my $pwd;
+ my $quality;
+ my $ret;
+ my $tmpfile;
+ my $val;
+ my @wc;
+
+ if (is_yt($url) != 0) {
+ $list = QUAL_LIST;
+ $quality = `printf "$list" | $menu --prompt 'quality > '`;
+ if (not $quality) {
+ return;
+ }
+ chomp $quality;
}
- elsif ($a eq "dl") {
+ $pid = fork();
+ if (not $pid) {
+ setsid();
+ close_io();
+ $ret = -1;
+ chdir home() . "/dl" or
+ chdir home() . "/Downloads" or
+ chdir home() or die $!;
+ if (basename(cwd()) eq basename(home())) {
+ $pwd = '~/';
+ }
+ else {
+ $pwd = '~/' . basename(cwd());
+ }
if (is_yt($url) != 0) {
- $list = QUAL_LIST;
- $quality = `printf "$list" | $menu --prompt 'quality > '`;
- if (not $quality) {
- return;
- }
- chomp $quality;
+ $file_name = get_yt_vid_name($url);
}
- $pid = fork();
- if (not $pid) {
- setsid();
- close_io();
- $ret = -1;
- chdir home() . "/dl" or
- chdir home() . "/Downloads" or
- chdir home() or die $!;
- if (basename(cwd()) eq basename(home())) {
- $pwd = '~/';
- }
- else {
- $pwd = '~/' . basename(cwd());
- }
- if (is_yt($url) != 0) {
- $file_name = get_yt_vid_name($url);
- }
- else {
- $file_name = $url;
- $file_name =~ s/.+\///g;
- }
- chomp $file_name;
- @wc = split / /, $file_name;
- if (@wc > 8) {
- $file_name = "";
- $i = 0;
- while ($i < 8) {
- $file_name .= "$wc[$i] ";
- $i++;
- }
- $file_name .= "[...]";
+ else {
+ $file_name = $url;
+ $file_name =~ s/.+\///g;
+ }
+ chomp $file_name;
+ @wc = split / /, $file_name;
+ if (@wc > 8) {
+ $file_name = "";
+ $i = 0;
+ while ($i < 8) {
+ $file_name .= "$wc[$i] ";
+ $i++;
}
- $file_name =~ s/^[0-9]+/\[\.\.\.\]/;
- system(
- NOTIFYSEND_PATH,
- '-u', 'low',
- '-t', '2000',
- 'download starting',
- ' downloading <b>' . $file_name . '</b>'
- );
- if (is_yt($url) != 0) {
- $tmpfile = `mktemp`;
- chomp $tmpfile;
- $pid2 = fork();
- if (not $pid2) {
- (undef, undef, $ret) = capture {
- if ($quality eq 'uncap') {
- system(YTDL_PATH . ' -f \'bestvideo*+bestaudio/best\' --newline --add-metadata ' . $url . ' >' . $tmpfile);
- }
- elsif ($quality eq '1440') {
- system(YTDL_PATH . " -f '308+140' --newline --add-metadata " . $url . ' >' . $tmpfile);
- }
- elsif ($quality eq '1080') {
- system(YTDL_PATH . " -f '299+140' --newline --add-metadata " . $url . ' >' . $tmpfile);
- }
- elsif ($quality eq '720') {
- system(YTDL_PATH . " -f '298+140' --newline --add-metadata " . $url . ' >' . $tmpfile);
- }
- else {
- system(YTDL_PATH . " -f '[height<=" . $quality . "]' --newline --add-metadata " . $url . ' >' . $tmpfile);
- }
- };
- if ($ret == 0) {
- system(
- NOTIFYSEND_PATH,
- '-u', 'normal',
- 'download complete',
- ' <b>' . $file_name . '</b> downloaded successfully to ' .
- '<b>' . $pwd . '</b>'
- );
+ $file_name .= "[...]";
+ }
+ $file_name =~ s/^[0-9]+/\[\.\.\.\]/;
+ system(
+ NOTIFYSEND_PATH,
+ '-t', '2000',
+ 'download starting',
+ ' downloading <b>' . $file_name . '</b>'
+ );
+ if (is_yt($url) != 0) {
+ $tmpfile = `mktemp`;
+ chomp $tmpfile;
+ $pid2 = fork();
+ if (not $pid2) {
+ (undef, undef, $ret) = capture {
+ if ($quality eq 'uncap') {
+ system(YTDL_PATH . ' --newline --add-metadata ' . $url . ' >' . $tmpfile);
}
- else {
- system(
- NOTIFYSEND_PATH,
- '-u', 'critical',
- 'download failed',
- ' failed to download <b>' . $file_name . '</b>'
- );
+ elsif ($quality eq '1440') {
+ system(YTDL_PATH . " -f '308+140' --newline --add-metadata " . $url . ' >' . $tmpfile);
}
- return;
- }
- elsif ($pid2 < 0) {
- system(
- NOTIFYSEND_PATH,
- '-u', 'critical',
- 'download failed',
- ' failed to <b>fork(2)</b>'
- );
- return;
- }
- else {
- $count = 0;
- while (1) {
- $val = `tail -n 1 "$tmpfile" | awk '{print \$2}' | tr -d '%'`;
- if (looks_like_number($val) != 0) {
- system(
- NOTIFYSEND_PATH,
- '-h',
- 'int:value:' . $val,
- '-u', 'low',
- '-t', '5000',
- 'downloading',
- ' downloading <b>' . $file_name . '</b>'
- );
- if ($val == 100 || system('pgrep yt-dlp >/dev/null 2>&1') != 0) {
- last;
- }
- }
- else {
- if ($count == 10) {
- last;
- }
- $count += 1;
- }
- sleep 2;
+ elsif ($quality eq '1080') {
+ system(YTDL_PATH . " -f '299+140' --newline --add-metadata " . $url . ' >' . $tmpfile);
}
- unlink $tmpfile;
- }
- return;
- }
- else {
- (undef, undef, $ret) = capture {
- if (HOSTNAME eq "mother" or "po-rbo") {
- system(CURL_PATH, "-fsSLO", $url);
- } elsif (HOSTNAME == "mars") {
- system(FETCH_PATH, $url);
+ elsif ($quality eq '720') {
+ system(YTDL_PATH . " -f '298+140' --newline --add-metadata " . $url . ' >' . $tmpfile);
+ }
+ else {
+ system(YTDL_PATH . " -f '[height<=" . $quality . "]' --newline --add-metadata " . $url . ' >' . $tmpfile);
}
};
if ($ret == 0) {
@@ -250,132 +258,188 @@ sub open_link
' failed to download <b>' . $file_name . '</b>'
);
}
+ return;
}
- return;
- }
- elsif ($pid < 0) {
- system(
- NOTIFYSEND_PATH,
- '-u', 'critical',
- '-t', '10000',
- 'download failed',
- ' failed to <b>fork(2)</b>'
- );
- return;
- }
- return;
- }
- elsif ($a eq "img" || $a eq "pdf") {
- $pid = fork();
- if (not $pid) {
- setsid();
- close_io();
- chdir '/tmp' or die $!;
- $file_name = $url;
- $file_name =~ s/.+\///g;
- if (is_yt($url) != 0) {
+ elsif ($pid2 < 0) {
system(
NOTIFYSEND_PATH,
- '-u', 'low',
- '-t', '5000',
- 'download started',
- ' fetching thumbnail'
- );
- ($tmp, undef, $ret) = capture {
- system(YTDL_PATH, '--get-thumbnail', $url);
- };
- chomp $tmp;
- if ($ret != 0) {
- system(
- NOTIFYSEND_PATH,
- '-u', 'critical',
- 'failed to get thumbnail',
- ' failed to get thumbail'
+ '-u', 'critical',
+ 'download failed',
+ ' failed to <b>fork(2)</b>'
);
- return;
- }
- $url = $tmp;
+ return;
}
else {
- system(
- NOTIFYSEND_PATH,
- '-u', 'low',
- '-t', '5000',
- 'download started',
- ' fetching <b>'. $file_name . '</b> to <b>/tmp</b>'
- );
+ $count = 0;
+ while (1) {
+ $val = `tail -n 1 "$tmpfile" | awk '{print \$2}' | tr -d '%'`;
+ if (looks_like_number($val) != 0) {
+ system(
+ NOTIFYSEND_PATH,
+ '-h',
+ 'int:value:' . $val,
+ '-u', 'low',
+ '-t', '5000',
+ 'downloading',
+ ' downloading <b>' . $file_name . '</b>'
+ );
+ if ($val == 100 || system('pgrep yt-dlp >/dev/null 2>&1') != 0) {
+ last;
+ }
+ }
+ else {
+ if ($count == 10) {
+ last;
+ }
+ $count += 1;
+ }
+ sleep 2;
+ }
+ unlink $tmpfile;
}
- $file_name = $url;
- $file_name =~ s/.+\///g;
- given (HOSTNAME) {
- when(["mother", "po-rbo"]) {
+ return;
+ }
+ else {
+ (undef, undef, $ret) = capture {
+ if (HOSTNAME eq "mother" or "po-rbo") {
system(CURL_PATH, "-fsSLO", $url);
+ } elsif (HOSTNAME == "mars") {
+ system(FETCH_PATH, "-q", $url);
}
- when("mars") {
- system(FETCH_PATH, '-q', $url);
- }
- }
- my ($name, undef, $ext) = fileparse($file_name, qr/\.[^.]*/);
- $ug = Data::UUID->new;
- $uuid = $ug->create_str();
- rename($file_name, $uuid . $ext);
- $file_name = $uuid . $ext;
- if ($a eq "img") {
- $ret = system(IMGVIEW_PATH . " " . $file_name);
+ };
+ if ($ret == 0) {
+ system(
+ NOTIFYSEND_PATH,
+ '-u', 'normal',
+ 'download complete',
+ ' <b>' . $file_name . '</b> downloaded successfully to ' .
+ '<b>' . $pwd . '</b>'
+ );
}
else {
- $ret = system(ZATHURA_PATH, $file_name);
- }
- if ($ret != 0) {
system(
NOTIFYSEND_PATH,
'-u', 'critical',
- 'failed to open image',
- ' failed to open image <b>/tmp/'. $file_name . '</b>'
+ 'download failed',
+ ' failed to download <b>' . $file_name . '</b>'
);
}
- unlink($file_name);
- return;
}
+ return;
}
- elsif ($a eq "w3m") {
- close_io();
- exec(TERMINAL_PATH, '-e', W3M_PATH, $url);
- }
- elsif ($a eq "browser") {
- $pid = fork();
- if (not $pid) {
- setsid();
- close_io();
- exec(BROWSER_PATH, $url);
- }
+ elsif ($pid < 0) {
+ system(
+ NOTIFYSEND_PATH,
+ '-u', 'critical',
+ '-t', '10000',
+ 'download failed',
+ ' failed to <b>fork(2)</b>'
+ );
return;
}
- elsif ($a eq "clip") {
- $pid = fork();
- if (not $pid) {
- setsid();
- close_io();
- if (defined $ENV{WAYLAND_DISPLAY}) {
- system("echo -n " . $url . " | wl-copy");
- return;
- }
- else {
- exec(COPYQ_PATH, "copy", $url);
- }
- }
+ return;
+}
+
+sub audio
+{
+ my ($url, $article_name) = @_;
+ my $pid;
+
+ $pid = fork();
+ if (not $pid) {
+ setsid();
+ close_io();
system(
NOTIFYSEND_PATH,
- '-u', 'low',
'-t', '2000',
- 'clipped url',
- ' clipped url'
+ 'playing media',
+ ' playing <b>' . $article_name . '</b>'
);
+ if (system(
+ TERMINAL_PATH,
+ "-e",
+ MPV_PATH,
+ "--vo=null",
+ "--video=no",
+ "--no-video",
+ $url
+ ) != 0) {
+ exec(
+ NOTIFYSEND_PATH,
+ '-u', 'critical',
+ '-t', '10000',
+ 'playback failed',
+ ' failed to open <b>' . $url . '</b>'
+ );
+ }
return;
}
return;
}
+sub w3m
+{
+ my ($url) = @_;
+ my $pid;
+
+ $pid = fork();
+ if (not $pid) {
+ setsid();
+ close_io();
+ if (system(TERMINAL_PATH, '-e', W3M_PATH, $url) != 0) {
+ exec(
+ NOTIFYSEND_PATH,
+ '-u', 'critical',
+ '-t', '10000',
+ 'w3m failed',
+ ' failed to open <b>' . $url . '</b>'
+ );
+ }
+ return;
+ }
+ return;
+}
+
+sub web
+{
+ my ($url) = @_;
+ my $pid;
+
+ $pid = fork();
+ if (not $pid) {
+ setsid();
+ close_io();
+ exec(BROWSER_PATH, $url);
+ }
+ return;
+}
+
+sub clip
+{
+ my ($url) = @_;
+ my $pid;
+
+ $pid = fork();
+ if (not $pid) {
+ setsid();
+ close_io();
+ if (defined $ENV{WAYLAND_DISPLAY}) {
+ system("echo -n " . $url . " | wl-copy");
+ return;
+ }
+ else {
+ exec(COPYQ_PATH, "copy", $url);
+ }
+ }
+ system(
+ NOTIFYSEND_PATH,
+ '-t', '2000',
+ 'clipped url',
+ ' clipped url'
+ );
+ return;
+}
+
sub close_io
{
open STDIN, '<', '/dev/null' or die $!;
@@ -406,7 +470,6 @@ sub get_yt_vid_name
system(
NOTIFYSEND_PATH,
- '-u', 'low',
'-t', '4000',
'checking name',
' looking for video name'
@@ -423,8 +486,9 @@ sub fzf_prompt
{
my ($url) = @_;
my $answer;
- my $list = PROG_LIST;
+ my $list;
+ $list = join("\n", @keys);
$answer = `printf "$list\n" | $menu --prompt '$url > '`;
chomp $answer;
return $answer;
@@ -434,12 +498,14 @@ sub linkview
{
my $answer;
- if (@ARGV == 0) {
+ if (@ARGV == 0 || $ARGV[0] eq '') {
print STDERR "linkview: no URL\n";
exit 1;
}
+
$answer = fzf_prompt($ARGV[0]);
- open_link($answer, $ARGV[0]);
+ return unless exists $func_list{$answer};
+ $func_list{$answer}->($ARGV[0], $ARGV[1], $answer);
return;
}
diff --git a/.local/bin/nb b/.local/bin/nb
index 117840d..3b36835 100755
--- a/.local/bin/nb
+++ b/.local/bin/nb
@@ -1,5 +1,6 @@
#!/bin/sh
+[ $(hostname -s) = "po-rbo" ] && exec newsboat
[ -f /tmp/cache.db ] && exec newsboat -c /tmp/cache.db -u /tmp/urls
cache_file="$XDG_DATA_HOME/newsboat/cache.db.gpg"
urls_file="$XDG_CONFIG_HOME/newsboat/urls.gpg"
diff --git a/.local/bin/ndate b/.local/bin/ndate
index 9811bff..323be43 100755
--- a/.local/bin/ndate
+++ b/.local/bin/ndate
@@ -69,10 +69,7 @@ sub main
$date = scalar reverse $date;
system(
NOTIFYSEND_PATH,
- '-u',
- 'low',
- '-t',
- '4000',
+ '-t', '4000',
'date',
$date
);
diff --git a/.local/bin/newsboat-notif b/.local/bin/newsboat-notif
new file mode 100755
index 0000000..cc2b385
--- /dev/null
+++ b/.local/bin/newsboat-notif
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+[ $1 -gt 0 ] && notify-send -u normal -t 6000 newsboat " <b>$@</b> new articles"
diff --git a/.local/bin/ref-newsboat b/.local/bin/ref-newsboat
index 090ca63..ca1aee1 100755
--- a/.local/bin/ref-newsboat
+++ b/.local/bin/ref-newsboat
@@ -5,27 +5,25 @@ use warnings;
use Capture::Tiny qw(capture);
use constant {
- NEWSBOAT_PATH => '/usr/local/bin/newsboat',
- NOTIFY_SEND_PATH => '/usr/local/bin/notify-send'
+ NEWSBOAT_PATH => 'newsboat',
+ NOTIFY_SEND_PATH => 'notify-send'
};
sub main
{
my $stdout;
+ my $nb;
+
+ $nb = NEWSBOAT_PATH;
if (system(
- NEWSBOAT_PATH,
+ $nb,
'-x',
'reload'
) != 0) {
exit 1;
}
- ($stdout, undef, undef) = capture {
- system(
- NEWSBOAT_PATH,
- '-x',
- 'print-unread'
- );
- };
+
+ $stdout = qx($nb -x print-unread);
$stdout =~ s/\s.+//;
chomp $stdout;
if ($stdout != 0) {
@@ -33,11 +31,13 @@ sub main
NOTIFY_SEND_PATH,
'-u',
'low',
+ '-t',
+ '4000',
'newsboat',
- ' ' . $stdout . ' new articles'
+ ' <b>' . $stdout . '</b> new articles'
);
}
- exit 0;
+ return;
}
main();
diff --git a/.local/bin/scr2 b/.local/bin/scr2
index 24c1b64..48a4a03 100755
--- a/.local/bin/scr2
+++ b/.local/bin/scr2
@@ -2,11 +2,11 @@
xrandr \
--output HDMI-0 --primary --mode 1920x1080 --pos 0x0 --rotate normal \
- --output DP-0 --mode 1680x1050 --pos 1920x0 --rotate normal \
+ --output DP-0 --off \
--output DP-1 --off \
--output DP-2 --off \
--output DP-3 --off \
- --output DP-4 --off \
+ --output DP-4 --mode 1680x1050 --pos 1920x0 --rotate normal \
--output DP-5 --off
setwp "$HOME"/pics/wp.png
diff --git a/.local/bin/scr3 b/.local/bin/scr3
index f94fb6c..17b9fe7 100755
--- a/.local/bin/scr3
+++ b/.local/bin/scr3
@@ -2,11 +2,11 @@
xrandr \
--output HDMI-0 --primary --mode 1920x1080 --pos 1440x0 --rotate normal \
- --output DP-0 --mode 1680x1050 --pos 3360x0 --rotate normal \
+ --output DP-0 --off \
--output DP-1 --off \
- --output DP-2 --off \
+ --output DP-2 --mode 1440x900 --pos 0x0 --rotate normal \
--output DP-3 --off \
- --output DP-4 --mode 1440x900 --pos 0x0 --rotate normal \
+ --output DP-4 --mode 1680x1050 --pos 3360x0 --rotate normal \
--output DP-5 --off
diff --git a/.local/state/w3m/history b/.local/state/w3m/history
index d59a3a0..842aa12 100644
--- a/.local/state/w3m/history
+++ b/.local/state/w3m/history
@@ -6,5 +6,5 @@ https://atlas.nuabee.fr/
file:///tmp/tmpmail/tmpmail.html
file:///home/r_bousset/nuabee.fr
https://nuabee.fr/
-https://lite.duckduckgo.com/lite/
https://jozan.org/
+https://lite.duckduckgo.com/lite/