WillieShen

joined 2 weeks ago
[–] WillieShen@lemmy.world 1 points 7 hours ago

I selfhosted it on my phone and laptop. Great as a replacement of ILovePDF and those CLI tools that have no common interface (I could write some functions to make one tho).

[–] WillieShen@lemmy.world 3 points 7 hours ago (2 children)

As a Taiwanese, I have a perception that the US is dangerous, with lots of drug users and gun shots, and even in schools. Is that stereotype or fact?

[–] WillieShen@lemmy.world 3 points 1 day ago

Taiwanese here. No. And many white people look just resemblant for me in my small Asian eyes.

[–] WillieShen@lemmy.world 3 points 3 days ago (1 children)

I have a Matrix acc and joined several rooms of FOSS, but sadly it looks like most of them are still less active than their Telegram/Discord counterpart.

[–] WillieShen@lemmy.world 2 points 3 days ago

in case I run with set -e

[–] WillieShen@lemmy.world 1 points 3 days ago (3 children)
update_pm() {
  sudo apt update
  sudo DEBIAN_FRONTEND=noninteractive apt upgrade -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confnew" -o Dpkg::Options::="--force-overwrite"
  sudo DEBIAN_FRONTEND=noninteractive apt autoremove -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confnew" -o Dpkg::Options::="--force-overwrite"
  echo y | sudo ubuntu-drivers install || true
  sudo apt install -f -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confnew" -o Dpkg::Options::="--force-overwrite"
  echo y | sudo ubuntu-drivers install || true
  sudo apt install -f -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confnew" -o Dpkg::Options::="--force-overwrite"
  echo y | sudo ubuntu-drivers install || true
  sudo apt install -f -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confnew" -o Dpkg::Options::="--force-overwrite"
  echo y | sudo ubuntu-drivers autoinstall || true
  sudo apt install -f -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confnew" -o Dpkg::Options::="--force-overwrite"
  echo y | sudo ubuntu-drivers autoinstall || true
  sudo apt install -f -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confnew" -o Dpkg::Options::="--force-overwrite"
  echo y | sudo ubuntu-drivers autoinstall || true
  sudo apt install -f -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confnew" -o Dpkg::Options::="--force-overwrite"
  sudo DEBIAN_FRONTEND=noninteractive apt autoremove -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confnew" -o Dpkg::Options::="--force-overwrite"
  sudo apt clean
  sudo apt autoclean
  flatpak update -y || true
  flatpak uninstall --unused -y || true
  sudo snap refresh || true
  brew update
  echo y | brew upgrade
  echo y | brew autoremove
  brew cleanup
  uv self update
  uv tool upgrade --all
  npm i -g npm
  npm update -g
}
[–] WillieShen@lemmy.world 1 points 3 days ago

I stick with KDE (Kubuntu) after using GNOME, KDE Plasma, and Cinnamon. I think GNOME lack some settings available in KDE, KDE is the most customizable with a good default, and back then Cinnamon doesn't have Wayland that some of my apps, especially Waydroid, need. The only thing I hate about KDE is the wallet that keeps popping up by default. GNOME keyring is better IMO. I'm a heavy terminal user tho, for automation with bash script and easier copy-paste from Arch Wiki etc., so mb I not quite representative on DE.

[–] WillieShen@lemmy.world 1 points 3 days ago

I'm a Taiwanese and interacted with a bunch of Linux users from Mainland China on Mastodon. From what I saw, I don't think it's as easy to use Linux in China, mainly due to the Great Firewall. They often need to tweak the mirrors and even tunnel through their VPS overseas.

[–] WillieShen@lemmy.world 2 points 3 days ago

I think it can be removed, at least for my phone, in the settings > Google or just use adb.

If they really care about users' security, they should make Graphene OS's GMSCompact and explicit permissions the new standard instead of restricting what apps can they use and forcing invasive system apps. And centralized censorship and requiring an account is not what makes apps secure. Source available and reproducible build is.

[–] WillieShen@lemmy.world 5 points 3 days ago

I came from Mastodon. I think Mastodon does have some good features that haven't come to Lemmy such as account migration and bio sites verification, while Markdown and no word count limit in Lemmy excels Mastodon. Other difference are more due to the different nature of them, just like Twitter compared to Reddit, for example, more organizations, artists, developers, etc. post on Mastodon.

[–] WillieShen@lemmy.world 1 points 3 days ago* (last edited 3 days ago)

Updation on it for clean when error and ignoring ffmpeg names for double run in same folder and a helper function. This is my new account btw since I found that infosec.pub can't be viewed without login.

multimedia_convert() {
  (
    shopt -s globstar nullglob
    for f in **/*; do
      [[ -f $f ]] || continue
      local file=${f##*/}
      local dir=${f%/*}
      [[ $dir == "$f" ]] && dir=.
      case ${file,,} in
        *_ffmpeg_av1_*_*_opus_*.mkv | *_ffmpeg_av1_lossless_flac*.mkv)
          continue
          ;;
        *.ico | *.flac | *.gif | *.opus)
          local ext="${file##*.}"
          ext="${ext,,}"
          if [[ ${file##*.} != "$ext" ]]; then
            if [[ -e "${f%.*}.${ext}" ]]; then
              printf 'Skipping: output exists: %s\n' "$f" >&2
              continue
            fi
            mv -- "$f" "${f%.*}.${ext}"
          fi
          ;;
        *.jpg | *.jpeg | *.png)
          local jxl="${file%.*}.jxl"
          if [[ -e "$dir/$jxl" ]]; then
            printf 'Skipping: output exists: %s\n' "$f" >&2
            continue
          fi
          (
            if cd "$dir"; then
              if jxl_lossy 1 "./$file" "./$jxl"; then
                rm -- "$file"
              else
                rm -f -- "$jxl"
              fi
            fi
          )
          ;;
        *.avif | *.bmp | *.heic | *.heif | *.jbg | *.jbig | *.jp2 | *.tif | *.webp)
          local png="${file%.*}.png"
          if [[ -e "$dir/$png" ]]; then
            printf 'Skipping: intermediate png exists: %s\n' "$f" >&2
            continue
          fi
          local jxl="${file%.*}.jxl"
          if [[ -e "$dir/$jxl" ]]; then
            printf 'Skipping: output exists: %s\n' "$f" >&2
            continue
          fi
          (
            if cd "$dir"; then
              if magick "./$file" "./$png"; then
                if jxl_lossy 1 "./$png" "./$jxl"; then
                  rm -- "$file"
                else
                  rm -f -- "$jxl"
                fi
              fi
              rm -f -- "$png"
            fi
          )
          ;;
        *.3gp | *.mov | *.vob | *.wmv)
          (
            cd "$dir" &&
              ffmpeg_av1_opus 4 40 24k "./$file" &&
              rm -- "$file"
          )
          ;;
        *.avi | *.mkv | *.mp4)
          (
            cd "$dir" &&
              ffmpeg_av1_opus 4 32 72k "./$file" &&
              rm -- "$file"
          )
          ;;
        *.aac | *.mp3 | *.m4a | *.ogg)
          (
            cd "$dir" &&
              ffmpeg_opus 96k "./$file" &&
              rm -- "$file"
          )
          ;;
        *.wav)
          (
            cd "$dir" &&
              ffmpeg_flac "./$file" &&
              rm -- "$file"
          )
          ;;
        *)
          continue
          ;;
      esac
    done
  )
}

ls_extension() {
  (
    shopt -s globstar nullglob
    printf '%s\n' **/* | sed -n 's/.*\(\.[^.]*\)$/\1/p' | sort -u
  )
}
view more: next ›