HnuWETqkp4YG

joined 1 year ago
MODERATOR OF
mpv
[–] HnuWETqkp4YG 43 points 1 year ago (4 children)

Well, this is goodby to lemmy.world! Rest in pieces

[–] HnuWETqkp4YG 1 points 1 year ago (1 children)

I didn't know Apple also did this. That is ridiculous

[–] HnuWETqkp4YG 7 points 1 year ago

I have never hit anything when backing in or driving out forward. I have hit 4 vehicles while backing out. It may be an attention thing, no idea. It is better for my wallet to back in

[–] HnuWETqkp4YG 40 points 1 year ago* (last edited 1 year ago) (5 children)

In America, some carriers disable hotspot on the devices they sell and hold you hostage. There are many ways around this. The best way is to use OEM non carrier phones. Other options include pdanet and several other apps designed to bypass the carrier software locks. My graphene os hotspot works perfectly no matter what carrier I use

Edit: Oh, and you can forget it on iphones. Apple loves sucking carriers dicks and fucking you all over. They go out of their way to ensure the carriers are robbing you before allowing hotspot use

[–] HnuWETqkp4YG 3 points 1 year ago

I use my monitors with DP 1.4 for general computing and the TV for media and gaming. I HATE using Windows but forced too for now for HDR. I use an offline Ventoy instance of Windows. I will change to QEMU and dedicated video card for Windows once I get another video card

[–] HnuWETqkp4YG 3 points 1 year ago (2 children)

I have to use hdmi for my S95B because the clowns at Samsung won't add DP to their TVs, and I need HDMI for Atmos. I can do 4k 120HZ 10bit VRR in Windows with hdmi. In Linux it is only 8bit 120hz no VRR over hdmi. DP works as expected on my monitors

[–] HnuWETqkp4YG 2 points 1 year ago (4 children)

Variable Refresh Rate. AMD is trying to work with their legal department to enable Hdmi 2.1 but I haven't seen a working driver release yet. https://gitlab.freedesktop.org/drm/amd/-/issues/1417#note_1795980

[–] HnuWETqkp4YG 2 points 1 year ago (6 children)

10bit VRR works in Windows but it won't work in linux. Linux is limited to 8bit and no vrr. How can you confirm that hdmi 2.1 is working? My display is Samsung S95B

[–] HnuWETqkp4YG 2 points 1 year ago

I got 99 problems but a.....

[–] HnuWETqkp4YG 4 points 1 year ago (8 children)

I spent an absurd amount of wasted hours in linux trying to get my Rx6700xt to do 10bit VRR output over hdmi 2.1. Turn out, we are not allowed to use hdmi 2.1 at all in open source drivers thanks to the pieces of shit at "HDMI Forum". If HIP RT requires hdmi 2.1 that will be an unsolvable issue with hdmi

[–] HnuWETqkp4YG 2 points 1 year ago (1 children)

I didn't know such a thing existed. I may cancel spotify and give tidal a try

 

I went to my local theater for Oppenheimer and was shocked by how bad the experience was. I hadn't been there in 10 years with the only other theater experience being Dolby Cinema Laser a few times which is great. This dated local theater with Christie DLP projectors was shockingly bad compared to what I have become used too. The "blacks" were more of a bright whitish grey and the entire picture looked ridiculously washed out. The audio was subpar and bass almost non existent.

This is the same theater that looked great to me years ago. My budget 5.3.2 Atmos and S95B blow it away now.

Has anyone else been shocked by an unexpected bad experience due to being unknowingly spoiled by newer tech?

 

cross-posted from: https://lemmy.world/post/1594575

This script will get MPV watch history from files watch_later dir and display them in reverse order of watch. The list is numbered and a prompt for a number will play the desired file in MPV

Need line "write-filename-in-watch-later-config=yes" in mpv.conf Deps rg (ripgrep)

#!/usr/bin/env bash
# Return mpv watch history oldest to newest. 
# Need line "write-filename-in-watch-later-config=yes" in mpv.conf
# Deps rg

watch_later_dir="$HOME/.config/mpv/watch_later/"

SAVEIFS=$IFS
IFS=$'\n'

if [ ! -d "$watch_later_dir" ]; then
    echo "Specified dir doesn't exist: $watch_later_dir"
    echo "Set var watch_later_dir to your watch later dir"
    echo "also, mpv.conf should have line \"write-filename-in-watch-later-config=yes\""
    exit 1
fi

watch_later_files="$(find "$watch_later_dir" -type f -printf "%T@ %p\n" | sort | sed 's/^\([0-9]\+\.[0-9]\+\) //')"

file_count=$(find "$watch_later_dir" -type f | wc -l)

if [ "$file_count" -eq 0 ]; then
    echo "no files found in \"$watch_later_dir\""
    exit 1
fi

watch_later_files=($watch_later_files) 

filepaths_not_echoed="$(for (( i=0; i<${#watch_later_files[@]}; i++ ))
do
  cat "${watch_later_files[$i]}" | rg -o --color=never '(/|http).*'
done)"

filepaths_not_echoed=($filepaths_not_echoed) 

# Reverse the order of array
length=${#filepaths_not_echoed[@]}
for ((i=0; i<length/2; i++)); do
    temp="${filepaths_not_echoed[i]}"
    filepaths_not_echoed[i]="${filepaths_not_echoed[length-i-1]}"
    filepaths_not_echoed[length-i-1]="$temp"
done

filepaths="$(for (( i=0; i<${#watch_later_files[@]}; i++ ))
do
  echo -n "$(( $i - $file_count +1 )) " | sed 's/^-//' 
  cat "${watch_later_files[$i]}" | rg -o --color=never '/.*'
done)"

#echo "$filepaths" | perl -pe 's/^(\d+ ).*\//$1/g' | rg \
echo "$filepaths" | sed -E 's/^([0-9]+ ).*\//\1/g' | rg \
  --colors 'match:none' \
  --colors 'match:fg:0,200,0' \
  --colors 'match:bg:0,0,0' \
  --colors 'match:style:bold' \
  "[^0-9 ].*" 

IFS=$SAVEIFS

read -p "Enter number to play " selection

echo "${filepaths_not_echoed[$selection]}"

setsid >/dev/null 2>&1 </dev/null \
mpv "${filepaths_not_echoed[$selection]}" 2>&1 >/dev/null & 
 

This script will get MPV watch history from files watch_later dir and display them in reverse order of watch. The list is numbered and a prompt for a number will play the desired file in MPV

Need line "write-filename-in-watch-later-config=yes" in mpv.conf Deps rg (ripgrep)

#!/usr/bin/env bash
# Return mpv watch history oldest to newest. 
# Need line "write-filename-in-watch-later-config=yes" in mpv.conf
# Deps rg

watch_later_dir="$HOME/.config/mpv/watch_later/"

SAVEIFS=$IFS
IFS=$'\n'

if [ ! -d "$watch_later_dir" ]; then
    echo "Specified dir doesn't exist: $watch_later_dir"
    echo "Set var watch_later_dir to your watch later dir"
    echo "also, mpv.conf should have line \"write-filename-in-watch-later-config=yes\""
    exit 1
fi

watch_later_files="$(find "$watch_later_dir" -type f -printf "%T@ %p\n" | sort | sed 's/^\([0-9]\+\.[0-9]\+\) //')"

file_count=$(find "$watch_later_dir" -type f | wc -l)

if [ "$file_count" -eq 0 ]; then
    echo "no files found in \"$watch_later_dir\""
    exit 1
fi

watch_later_files=($watch_later_files) 

filepaths_not_echoed="$(for (( i=0; i<${#watch_later_files[@]}; i++ ))
do
  cat "${watch_later_files[$i]}" | rg -o --color=never '(/|http).*'
done)"

filepaths_not_echoed=($filepaths_not_echoed) 

# Reverse the order of array
length=${#filepaths_not_echoed[@]}
for ((i=0; i<length/2; i++)); do
    temp="${filepaths_not_echoed[i]}"
    filepaths_not_echoed[i]="${filepaths_not_echoed[length-i-1]}"
    filepaths_not_echoed[length-i-1]="$temp"
done

filepaths="$(for (( i=0; i<${#watch_later_files[@]}; i++ ))
do
  echo -n "$(( $i - $file_count +1 )) " | sed 's/^-//' 
  cat "${watch_later_files[$i]}" | rg -o --color=never '/.*'
done)"

#echo "$filepaths" | perl -pe 's/^(\d+ ).*\//$1/g' | rg \
echo "$filepaths" | sed -E 's/^([0-9]+ ).*\//\1/g' | rg \
  --colors 'match:none' \
  --colors 'match:fg:0,200,0' \
  --colors 'match:bg:0,0,0' \
  --colors 'match:style:bold' \
  "[^0-9 ].*" 

IFS=$SAVEIFS

read -p "Enter number to play " selection

echo "${filepaths_not_echoed[$selection]}"

setsid >/dev/null 2>&1 </dev/null \
mpv "${filepaths_not_echoed[$selection]}" 2>&1 >/dev/null & 
 

This will convert all webp in a directory to jpg or mp4 if animated. It will utilize all cores with gnu parallel. It will also handle an error with ffmpeg that happens if animated webp pixel width or height is an odd number by padding 1 pixel if necessary

cat convertwebp

#!/usr/bin/env bash
# Convert webp to jpg if static or gif/mp4 if animated
# Pads animated webp to avoid "libx264 not divisible by 2 error"
# Deps imagemagick libwebp parallel

# Usage assuming saved as convertwebp
# convertwebp             # Will convert all webp in current dir to jpeg or mp4 and gif if animated
# convertwebp /some/dir/  # Same but on specified dir
# convertwebp /some/file  # Same but on specified file

######### Set jpg quality. There will be 2 outputs one of each quality setting
#          0-100 percent
export     QUALITY_ONE=35
export     QUALITY_TWO=75

find_args=(-maxdepth 1 -type f -regextype posix-extended -iregex '.*\.(webp)$' -print0)

dir="$PWD"
if [[ -d "$@" ]]; then
    dir="$@"
    echo "Dir $@"
else
    if [[ -f "$@" ]]; then
        dir="$@"
        echo "File $@"
    fi
fi

mkdir -p "$MY_DWEBP_OUTDIR"

find "$dir" "${find_args[@]}" | parallel -0 -j+0 --eta --bar '
jpg_out_quality_one=$(echo {/.}_"$QUALITY_ONE"_percent.jpg)
jpg_out_quality_two=$(echo {/.}_"$QUALITY_TWO"_percent.jpg)
png_out=$(echo {/.}.ffmpeg.png)
gif_out=$(echo {/.}.gif)
mp4_out=$(echo {/.}.mp4)
isanimated="$(webpmux -info {} | grep animation)"
if [[ "$isanimated" == "Features present: animation transparency" ]]; then
    convert '{}' "$gif_out"
    # Begin mp4 conversion handler to pad geometry 1 pixel to x and y if either are odd to avoid "libx264 not divisible by 2 error"
    geometry_x=$(webpmux -info '{}' | head -n 1 | tr "[:space:]" "\n" | tail -3 | head -n 1)
    geometry_y=$(webpmux -info '{}' | head -n 1 | tr "[:space:]" "\n" | tail -3 | tail -1)
    if [ $(( $geometry_x  % 2)) -ne 0 ] | [ $(( $geometry_y  % 2)) -ne 0 ]; then
        if [ $(( $geometry_x  % 2)) -ne 0 ] && [ $(( $geometry_y  % 2)) -ne 0 ]; then
            splice_geometry="1x1"
            gravity_direction="northeast"
            convert -splice $splice_geometry -gravity $gravity_direction '{}' "$mp4_out"
        else 
            if [ $(( $geometry_x  % 2)) -ne 0 ]; then
                splice_geometry="1x0"
                gravity_direction="east"
                convert -splice $splice_geometry -gravity $gravity_direction '{}' "$mp4_out"
            else
                if [ $(( $geometry_y  % 2)) -ne 0 ]; then
                    splice_geometry="0x1"
                    gravity_direction="north"
                    convert -splice $splice_geometry -gravity $gravity_direction '{}' "$mp4_out"
                fi
            fi
        fi
    else
        convert '{}' "$mp4_out"
    fi
    # End mp4 conversion handler to pad geometry 1 pixel to x and y if either are odd to avoid "libx264 not divisible by 2 error"
    else
        dwebp '{}' -o - | convert - -quality $QUALITY_ONE% "$jpg_out_quality_one"    # pipe to convert for filesize reduction
        dwebp '{}' -o - | convert - -quality $QUALITY_TWO% "$jpg_out_quality_two"    # pipe to convert for filesize reduction
fi
'
unset QUALITY_ONE
unset QUALITY_TWO
 

The default character set excludes easy to confuse characters ILOl0. It is fast too

Generating 1 million 40 character passwords

time pw -n 1000000 >/dev/null
0.47s user 0.24s system 229% cpu 0.310 total
cat pw
#!/usr/bin/env bash
#set -x

num_passwords=20                                  # Default number of passwords to return.
pw_len=40                                         # Default password length.
random_data='/dev/urandom'                        # Random data
urandom_bytes_default=300000                      # Default random bytes to read.

letters='A-HJ-KM-NP-Za-km-z'                      # Default letters set.
numbers='1-9'                                     # Default numbers set.
symbols='!?*^_@#%^&*()=+<>}{][;:",./|~\\'\''`-'   # Default symbols set. If dash "-" is needed, put it at the end
characters="$letters$numbers$symbols"             # All default sets combined

min_calculated_urandom_bytes=20000                # Minimum bytes when calculated. Fix issue when not enough data for simple character sets 
urandom_bytes_user=0                              # Leave at 0, for use with logic of -b , --bytes=
urandom_bytes_calculated=0                        # Leave at 0, for use with end logic
regex_match_flags="^-(b|-bytes=|c|-characters=|l|-length=)$" # Pattern to check against a flag being blank and reading next flag as arguemnt

while test $# -gt 0; do
  case "$1" in

    -h|--help)
      echo " "
      echo " "
      echo " "
      echo "pw - generate passwords"
      echo " "
      echo "pw [options]"
      echo " "
      echo "options:"
      echo "-b NUM   ,  --bytes=NUM          Specify bytes to read from "$random_data". Not compatible with flag -n, --ncount. Defaults to $urandom_bytes_default bytes"
      echo "-c 'CHAR',  --characters='CHAR'  Specify allowed password characters. Defaults to '$characters'"
      echo "-h       ,  --help               Show brief help"
      echo "-l NUM   ,  --length=NUM         Specify password length. Defaults to length of $pw_len"
      echo "-n NUM   ,  --ncount=NUM         Specify number of passwords to return. Not compatible with flag -b, --bytes"
      echo " "
      echo " "
      echo " "
      echo " "
      echo "examples:"
      echo " "
      echo " "
      echo "# 20 character alphanumeric with symbols "'!?"*#-'" using 20000 bytes of data from "$random_data""
      echo "pw --bytes=20000 --characters='a-zA-Z0-9"'!?"*#-'"' --length=20"
      echo "   IjLVomO*LZIvBWhmITtS"
      echo "pw -b 20000 -c 'a-zA-Z0-9"'!?"*#-'"' -l 20"
      echo "   IjLVomO*LZIvBWhmITtS"
      echo " "
      echo " "
      echo " "
      echo "# 200 passwords using default values"
      echo "pw --ncount=200"
      echo '   !=[8x|d`dHdVA-:xn8t>G=~tkgbg}T#~2(/r?9N&'
      echo "   ...{200 lines}"
      echo " "
      echo "pw -c '18bu' -l 10 -n 2"
      echo "   bb8b8bb1ub"
      echo "   88b1ub8b8u"
      echo " "
      echo " "
      echo "pw -c '0-4' --length=80 --ncount=10"
      echo "   10132440443120133034412013333104142320411133221101130324111200442311420044122312"
      echo " "
      echo " "
      echo "pw -c 'zplaeiou' --length=80 --ncount=1"
      echo "   uuzzzalilepauzuepaazoizoeiiaazupupalolzliluuoazluzuepzlozepapaioipupapleuzaolpuu"
      echo " "
      echo " "
      echo "pw -c '1-4*-' -l 10 -n 2"
      echo "   2414443*24"
      echo "   *123-*4-31"
      echo " "
      echo " "
      echo "pw -b 400 -c 'a-zA-Z0-9 [#!?*(){}~[]/\\-]'\''' -l 40"
      echo "   EVuMxtVR**6}?M2HTZlED{ARjKL?D]r8h[7Pidvo"
      echo " "
      echo " "
      echo " "
      exit 0
      ;;


    -b)
      shift
      # Test that -b value (previously shifted $1) is gt 0 before setting var urandom_bytes_user
      # And test that $pw_line_count_target has not been set
      if [[ $1 -gt 0 ]] && [[ -z $pw_line_count_target ]] 2> /dev/null; then
        urandom_bytes_user=$1
        urandom_bytes_default=0
        pw_line_count_target=0
      else
          printf "error: \"-b NUM\" needs numeral greater that 0. Value > 1000 recommended\n"
          exit 1
      fi
      shift
      ;;
    --bytes*)
      # Test that --bytes value "${1/*"="/}" is gt 0 before setting var urandom_bytes_user
      # And test that pw_line_count_target is not set
      if [[ "${1/*"="/}" -gt 0 ]] && [[ $pw_line_count_target -le 0 ]] 2> /dev/null; then
        urandom_bytes_user="${1/*"="/}"
        urandom_bytes_default=0
        pw_line_count_target=0
      else
        if [[ ! $pw_line_count_target -le 0 ]] 2> /dev/null; then
          printf "\nflag -n, --ncount not compatible with flag -b, --bytes\n"
          exit 1
        else
          printf "error: usage \"--bytes=NUM\" needs numeral greater that 0. Value > 1000 recommended\n"
          exit 1
        fi
      fi
      shift
      ;;


    -c)
      shift
      # Before set var characters, test for -c value (previously shifted $1) being blank,
      # or another flag shifted in as unintended -c value.
      if [[ ! -z $1 ]] && [[ ! "$1" =~ $regex_match_flags ]]; then
        characters="$1"
      else
        printf "error: usage \"-c 'CHARACTERS'\" (allowed password characters) needs value\n"
        exit 1
      fi
      shift
      ;;
    --characters*)
    # Before set var characters, test for --characters string "${1/*"="/}" being blank,
    # or another flag shifted in as unintended --characters string by checking 
    # $characters_to_check for regex match on $regex_match_flags.
    characters_to_check="${1/*"="/}"
      if [[ ! -z "${1/*"="/}" ]] && [[ ! "$characters_to_check" =~ $regex_match_flags ]]; then
        characters="${1/*"="/}"
      else
        printf "error: usage \"--characters 'CHARACTERS'\" (allowed password characters) needs value\n"
        exit 1
      fi
      shift
      ;;


    -l)
      shift
      # Test that -l value (previously shifted $1) is gt 0 before setting var pw_len
      if [ $1 -gt 0 ] 2> /dev/null; then
        pw_len=$1
      else
        printf "error: usage \"-l NUM\" (password length) needs numeral greater that 0\n"
        exit 1
      fi
      shift
      ;;
    --length*)
      # Test that --length value "${1/*"="/}" is gt 0 before setting var pw_len
      if [[ "${1/*"="/}" -gt 0 ]] 2> /dev/null; then
        pw_len="${1/*"="/}"
      else
        printf "error: usage \"--length=NUM\" (password length) needs numeral greater that 0\n"
        exit 1
      fi
      shift
      ;;


    -n)
      shift
      # Test that -b value (previously shifted $1) is gt 0 before setting var pw_line_count_target
      if [ $1 -gt 0 ] ; then
        pw_line_count_target=$1
        urandom_bytes_default=0
      else
          printf "error: \"-n NUM\" needs numeral greater that 0\n"
          exit 1
      fi
      shift
      ;;
    --ncount*)
      # Test that --bytes value "${1/*"="/}" is gt 0 before setting var pw_line_count_target
      if [[ "${1/*"="/}" -gt 0 ]] ; then
        pw_line_count_target="${1/*"="/}"
        urandom_bytes_default=0
      else
        printf "error: usage \"--ncount=NUM\" needs numeral greater that 0\n"
        exit 1
      fi
      shift
      ;;


    *)
      break
      ;;
  esac
done




# Test that urandom_bytes_user has not been changed from 0
# And test that pw_line_count_target gt 0
if [[ $pw_line_count_target -gt 0 ]] && [[ $urandom_bytes_user -eq 0 ]] ; then
  count_out_of_10000="$(head -c 10000 < "$random_data" | tr -dc "$characters" | wc -c)"
  urandom_bytes_calculated=$(( (13000/$count_out_of_10000) * ($pw_len * $pw_line_count_target) ))
  if [[ $urandom_bytes_calculated -lt $min_calculated_urandom_bytes ]] ; then
    urandom_bytes_calculated=$min_calculated_urandom_bytes
  fi
else
  if [[ $pw_line_count_target -gt 0 ]] && [[ $urandom_bytes_user -ne 0 ]] ; then
    printf "\nflag \" -n|--ncount \" not compatible with flag \" -b|--bytes \"\n"
    exit 1
  fi
fi


if [[ $pw_line_count_target -eq 0 ]]; then
  pw_line_count_target=$num_passwords
fi


# PW generation bits
urandom_bytes=$(( ($urandom_bytes_default) + ($urandom_bytes_user) + ($urandom_bytes_calculated) )) 
head -c     "$urandom_bytes"      < "$random_data" |
tr   -dc    "$characters"                          |
fold -s     -w$pw_len                              |
head -n     "$pw_line_count_target"

view more: next ›