From fd3511d513a684b3971b5442c229e09c4a7da622 Mon Sep 17 00:00:00 2001 From: FollieHiyuki Date: Thu, 18 Feb 2021 18:17:03 +0300 Subject: [PATCH] clean up `setup` directory --- README.md | 4 +- home/.config/doom/packages.el | 1 + home/.config/imv/config | 3 +- home/.config/qutebrowser/config.py | 4 +- home/.local/bin/farge | 222 ------------ home/.local/bin/tmpmail | 334 ------------------ home/.local/bin/tmpsms | 216 ----------- home/.local/bin/ytmenu | 6 +- .../{install_bsp-layout.sh => bsp-layout.sh} | 0 setup/{install_greenclip.sh => greenclip.sh} | 0 setup/{install_river.sh => river.sh} | 0 setup/scripts.sh | 13 + setup/{install_tt.sh => tt.sh} | 0 ...nstall_vscode-icons.sh => vscode-icons.sh} | 0 ...ll_wayland-logout.sh => wayland-logout.sh} | 0 15 files changed, 23 insertions(+), 780 deletions(-) delete mode 100755 home/.local/bin/farge delete mode 100755 home/.local/bin/tmpmail delete mode 100755 home/.local/bin/tmpsms rename setup/{install_bsp-layout.sh => bsp-layout.sh} (100%) rename setup/{install_greenclip.sh => greenclip.sh} (100%) rename setup/{install_river.sh => river.sh} (100%) create mode 100755 setup/scripts.sh rename setup/{install_tt.sh => tt.sh} (100%) rename setup/{install_vscode-icons.sh => vscode-icons.sh} (100%) rename setup/{install_wayland-logout.sh => wayland-logout.sh} (100%) diff --git a/README.md b/README.md index 9610df7..0234b91 100644 --- a/README.md +++ b/README.md @@ -20,7 +20,7 @@ - Fonts: **[Sarasa Gothic](https://github.com/be5invis/Sarasa-Gothic)** + **Iosevka Nerd Font** - Other dependencies: - - jq, sysstat, psmisc, wireless_tools (status on spectrwm's bar) + - jq, sysstat, psmisc, wireless_tools (status info on spectrwm's bar) - [light](https://github.com/haikarainen/light) / [brightnessctl](https://github.com/Hummer12007/brightnessctl) - [bottom](https://github.com/clementtsang/bottom) - [fzf](https://github.com/junegunn/fzf), [fd](https://github.com/sharkdp/fd), [ripgrep](https://github.com/BurntSushi/ripgrep) @@ -30,6 +30,7 @@ - [starship](https://starship.rs/) - [gallery-dl](https://github.com/mikf/gallery-dl) / [mangadl-bash](https://github.com/Akianonymus/mangadl-bash) - [translate-shell](https://github.com/soimort/translate-shell) + - [ddgr](https://github.com/jarun/ddgr), [buku](https://github.com/jarun/buku) - [pulsemixer](https://github.com/GeorgeFilipkin/pulsemixer) - [nwg-launchers](https://github.com/nwg-piotr/nwg-launchers) / [wofi](https://hg.sr.ht/~scoopta/wofi) - [rofi](https://github.com/davatorium/rofi) / [dmenu](https://git.disroot.org/FollieHiyuki/dmenu) @@ -65,7 +66,6 @@ - I use some scripts from other people: - [some fzf scripts](https://github.com/DanielFGray/fzf-scripts) - [colorscripts](https://gitlab.com/dwt1/shell-color-scripts) - - **farge**, **tmpsms** and **tmpmail** from [@sdushantha](https://github.com/sdushantha) - **ytmenu** from [here](https://github.com/sayan01/scripts) - You want some more **kawaii** wallpapers? Here is the list of artists: [@rimuu](https://rimuu.com/), [@hiten](https://www.pixiv.net/users/490219/artworks), [@Tiv](https://www.pixiv.net/en/users/35081), [@mery](https://www.pixiv.net/en/users/2750098), [@Mashima_saki](https://www.pixiv.net/en/users/18403608), [@Yuuki_Tatsuya](https://www.pixiv.net/en/users/27691), [@Bison倉鼠](https://www.pixiv.net/en/users/333556/artworks), [@Dana](https://twitter.com/hapong07), [@gomzi](https://twitter.com/gcmzi), [@Rella](https://twitter.com/Rellakinoko), [@dnwls3010](https://twitter.com/dnwls3010), [@Shigure_Ui](https://www.pixiv.net/en/users/431873), [@QuAn_](https://www.pixiv.net/en/users/6657532/artworks), [@杉87](https://twitter.com/k_su_keke1121), [@fuzichoco](https://twitter.com/fuzichoco), [@Astero](https://twitter.com/asteroid_ill), [@shin556](https://www.pixiv.net/en/users/642762) diff --git a/home/.config/doom/packages.el b/home/.config/doom/packages.el index cc25103..2515ad3 100644 --- a/home/.config/doom/packages.el +++ b/home/.config/doom/packages.el @@ -54,6 +54,7 @@ (package! exwm-edit) ;;(package! system-packages) (package! desktop-environment) +(package! ebuku) ;;(package! emms) ;;(package! emms-mode-line-cycle) diff --git a/home/.config/imv/config b/home/.config/imv/config index b1e1ed5..c3fb927 100644 --- a/home/.config/imv/config +++ b/home/.config/imv/config @@ -30,7 +30,8 @@ overlay_text = [$imv_current_index/$imv_file_count] $imv_current_file [${imv_wid [binds] # Define some key bindings q = quit -y = exec echo working! + = exec rm -f $imv_current_file; next + = exec rm -f $imv_current_file; next # Image navigation = prev diff --git a/home/.config/qutebrowser/config.py b/home/.config/qutebrowser/config.py index 78ee1fc..73fbb88 100644 --- a/home/.config/qutebrowser/config.py +++ b/home/.config/qutebrowser/config.py @@ -38,8 +38,8 @@ c.content.geolocation = False # Headers c.content.headers.accept_language = 'en-US,en;q=0.5' c.content.headers.custom = {"accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8"} -# c.content.headers.do_not_track = True -# c.content.headers.referer = 'same-domain' +c.content.headers.do_not_track = True +c.content.headers.referer = 'same-domain' # From current TorBrowser c.content.headers.user_agent = 'Mozilla/5.0 (Windows NT 10.0; rv:78.0) Gecko/20100101 Firefox/78.0' diff --git a/home/.local/bin/farge b/home/.local/bin/farge deleted file mode 100755 index cba6b41..0000000 --- a/home/.local/bin/farge +++ /dev/null @@ -1,222 +0,0 @@ -#!/usr/bin/env bash -# ┌─┐┌─┐┬─┐┌─┐┌─┐ -# ├┤ ├─┤├┬┘│ ┬├┤ -# ┴ ┴ ┴┴└─└─┘└─┘ -# Created by Siddharth Dushantha -# -# Dependencies: -# bash -# imagemagick -# feh (Other: mpv or sxiv, but you must specify it using the --image-viewer flag) -# -# If you use X11 -# colorpicker (https://github.com/ym1234/colorpicker) -# -# If you use Wayland -# slurp (https://wayland.emersion.fr/slurp) -# grim (https://wayland.emersion.fr/grim) -# wl-copy (https://github.com/bugaevc/wl-clipboard) - -VERSION="1.0.8" -TEMP_DIR=/tmp/farge -MSG=${XDG_CACHE_HOME:-$HOME/.cache}/farge.msg - -COLOR_TYPE="hex" -WRITE_COLOR_CODE=true -PREVIEW=true -IMAGE_VIEWER="imv" -STDOUT=false - -NOTIFICATION=false -EXPIRE_TIME=120000 - -show_help() { - cat </dev/null && - echo "grim need to be installed: https://wayland.emersion.fr/grim" && v=" " - ! command -v slurp &>/dev/null && - echo "slurp needs to be installed: https://wayland.emersion.fr/slurp" && v=" " - ! command -v wl-copy &>/dev/null && - echo "wl-copy needs to be installed: https://github.com/bugaevc/wl-clipboard" && v=" " - [ "$v" ] && exit 1 - unset v - else - ! command -v colorpicker &>/dev/null && - echo "colorpicker need to be installed: https://github.com/ym1234/colorpicker" && exit 1 - fi - - ! command -v convert &>/dev/null && - echo "imagemagick needs to be installed" && exit 1 - - # We are using the variable $IMAGE_VIEWER because we also have to check if - # the image viewer the user has told us to use actually exists. - - # If the user wants to show the color and the color code through a notification, - # then do not check if they have the image viewer installed because it wont be used - [ $NOTIFICATION == false ] && - ! command -v $IMAGE_VIEWER &>/dev/null && - echo "$IMAGE_VIEWER needs to be installed or use another image by using --image-viewer " && - exit 1 -} - - -# Caclulate math equations with decimals. This is better than $(()) -calc(){ awk "BEGIN { print $*}"; } - - -calculate_text_color(){ - # I dont even know why this equation works - # Source: https://stackoverflow.com/a/3943023 - INTENSITY=$(calc "$R*0.299 + $G*0.587 + $B*0.114") - - if [ "$(echo "$INTENSITY>186" | bc)" -eq 1 ]; then - TEXT_COLOR="#000000" - else - TEXT_COLOR="#FFFFFF" - fi -} - - -image_preview(){ - case $IMAGE_VIEWER in - "mpv") - mpv --geometry=100x100 --title="Farge" "$FNAME" &>/dev/null & - ;; - "feh") - feh --geometry=100x100 --title="Farge" "$FNAME" &>/dev/null & - ;; - "sxiv") - sxiv -g=100x100 -b -N "Farge" "$FNAME" &>/dev/null & - ;; - "imv") - imv "$FNAME" -s shrink &>/dev/null & - ;; - *) - # If the image viewer given by the user is not supported by - # farge, then let the user know - echo "The image viewer $IMAGE_VIEWER is not supported yet." - echo "Make an issue requesting your image viewer: https://github.com/sdushantha/farge/issues/new" - ;; - esac -} - - -main() { - if [ "$WAYLAND_DISPLAY" ]; then - HEX_COLOR=$(grim -g "$(slurp -p)" -t ppm - | - convert - -format '%[pixel:p{0,0}]' txt:- | tail -n1 | - grep '#' | awk '{print $3}') - else - HEX_COLOR=$(colorpicker -doq) - fi - - # If no color is chosen, then exit - [[ ! $HEX_COLOR ]] && echo "No color was selected" && exit 1 - - mkdir -p $TEMP_DIR - - # Remove the hashtag - HEX="${HEX_COLOR#\#}" - - # Combine the dir and hex color code to form the file name - FNAME="$TEMP_DIR/$HEX.png" - - hex_to_rgb "$HEX" - - # If the baground is dark, then use white as the text color. - # If the background is light, then use a dark text color. - calculate_text_color - - # Create a 100x100 image, filled with the selected color - convert -size 100x100 xc:"$HEX_COLOR" "$FNAME" - - if [ $COLOR_TYPE == "rgb" ]; then - COLOR_CODE="($R,$G,$B)" - else - COLOR_CODE="$HEX_COLOR" - fi - - - if [ $WRITE_COLOR_CODE == true ]; then - # Write the color code in the center of the image - convert "$FNAME" -gravity Center -pointsize 10 -fill "$TEXT_COLOR" -annotate 0 "$COLOR_CODE" "$FNAME" - fi - - # Save the color code to clipboard - if [ "$WAYLAND_DISPLAY" ]; then - printf %s "$COLOR_CODE" | wl-copy - else - printf %s "$COLOR_CODE" | xclip -sel c - fi - - # Output the color code to stdout only if the user uses the --stdout flag - if [ "$STDOUT" == true ]; then - echo "$COLOR_CODE" - elif [ "$NOTIFICATION" == "true" ]; then - notify-send -a Farge "$COLOR_CODE" --icon="$FNAME" --expire-time="$EXPIRE_TIME" - elif [ "$PREVIEW" == "true" ]; then - image_preview - fi -} - - -while [[ "$1" ]]; do - case "$1" in - -h|--help) show_help && exit ;; - -v|--version) echo $VERSION && exit ;; - --no-preview) PREVIEW=false ;; - --no-color-code) WRITE_COLOR_CODE=false ;; - --rgb) COLOR_TYPE="rgb" ;; - --image-viewer) IMAGE_VIEWER="$2" ;; - --notify) NOTIFICATION=true ;; - --expire-time) EXPIRE_TIME="$2" ;; - --stdout) STDOUT=true ;; - esac - shift -done - -# If the user wants to show a notification, then the color code -# will not be written onto the image because the color code will be -# shown in the notification message -[ "$NOTIFICATION" == true ] && WRITE_COLOR_CODE=false - -check_dependencies - -# When the user runs farge for the first time, tell them how to exit feh. -# We do with by checking if $MSG exists -[ ! -f "$MSG" ] && echo "To close the color window, click on it and press 'q'" && touch "$MSG" - -# Run the main function where all the magic happens -main diff --git a/home/.local/bin/tmpmail b/home/.local/bin/tmpmail deleted file mode 100755 index 29bf6e3..0000000 --- a/home/.local/bin/tmpmail +++ /dev/null @@ -1,334 +0,0 @@ -#!/usr/bin/env sh -# -# by Siddharth Dushantha 2020 -# -# Dependencies: jq, curl, w3m -# - -VERSION=1.1.7 - -# By default 'tmpmail' uses 'w3m' as it's web browser to render -# the HTML of the email -BROWSER="w3m" - -# If the value is set to 'true' tmpmail will convert the HTML email -# to raw text and send that to stdout -RAW_TEXT=false - -# Everything related to 'tmpmail' will be stored in /tmp/tmpmail -# so that the old emails and email addresses get cleared after -# restarting the computer -TMPMAIL_DIR="/tmp/tmpmail" - -# TMPMAIL_EMAIL_ADDRESS is where we store the temporary email address -# that gets generated. This prevents the user from providing -# the email address everytime they run tmpmail -TMPMAIL_EMAIL_ADDRESS="$TMPMAIL_DIR/email_address" - -# tmpmail.html is where the email gets stored. -# Even though the file ends with a .html extension, the raw text version of -# the email will also be stored in this file so that w3m and other browsers -# are able to open this file -TMPMAIL_HTML_EMAIL="$TMPMAIL_DIR/tmpmail.html" - -# Default 1secmail API URL -TMPMAIL_API_URL="https://www.1secmail.com/api/v1/" - -usage() { - # Using 'cat << EOF' we can easily output a multiline text. This is much - # better than using 'echo' for each line or using '\n' to create a new line. - cat <"$TMPMAIL_EMAIL_ADDRESS" - - # If this function was called because the user wanted to generate a new - # email address, show them the email address - [ "$EXTERNALLY" = true ] && cat "$TMPMAIL_EMAIL_ADDRESS" && printf "\n" -} - -get_email_address() { - # This function is only called once and that is when this script - # get executed. The output of this function gets stored in $EMAIL_ADDRESS - # - # If the file that contains the email address is empty, - # that means we do not have an email address, so generate one. - [ ! -s "$TMPMAIL_EMAIL_ADDRESS" ] && generate_email_address - - # Output the email address by getting the first line of $TMPMAIL_EMAIL - head -n 1 "$TMPMAIL_EMAIL_ADDRESS" -} - -list_emails() { - # List all the received emails in a nicely formatted order - # - # Fetch the email data using 1secmail's API - DATA=$(curl -sL "$TMPMAIL_API_URL?action=getMessages&login=$USERNAME&domain=$DOMAIN") - - # Using 'jq' we get the length of the JSON data. From this we can determine whether or not - # the email address has gotten any emails - DATA_LENGTH=$(printf %s "$DATA" | jq length) - - # We are showing what email address is currently being used - # in case the user has forgotten what the email address was. - printf "[ Inbox for %s ]\n\n" "$EMAIL_ADDRESS" - - # If the length of the data we got is 0, that means the email address - # has not received any emails yet. - [ "$DATA_LENGTH" -eq 0 ] && echo "No new mail" && exit - - # This is where we store all of our emails, which is then - # displayed using 'column' - INBOX="" - - # Go through each mail that has been received - index=1 - while [ $index -le "${DATA_LENGTH}" ]; do - # Since arrays in JSON data start at 0, we must subtract - # the value of $index by 1 so that we dont miss one of the - # emails in the array - MAIL_DATA=$(printf %s "$DATA" | jq -r ".[$index-1]") - ID=$(printf %s "$MAIL_DATA" | jq -r ".id") - FROM=$(printf %s "$MAIL_DATA" | jq -r ".from") - SUBJECT=$(printf %s "$MAIL_DATA" | jq -r ".subject") - - # The '||' are used as a divideder for 'column'. 'column' will use this divider as - # a point of reference to create the division. By default 'column' uses a blank space - # but that would not work in our case as the email subject could have multiple white spaces - # and 'column' would split the words that are seperated by white space, in different columns. - INBOX="$INBOX$ID ||$FROM ||$SUBJECT\n" - index=$((index + 1)) - done - - # Show the emails cleanly - printf "%b" "$INBOX" | column -t -s "||" -} - -randomize() { - # We could use 'shuf' and 'sort -R' but they are not a part of POSIX - awk 'BEGIN {srand();} {print rand(), $0}' | \ - sort -n -k1 | cut -d' ' -f2 -} - -view_email() { - # View an email by providing it's ID - # - # The first argument provided to this function will be the ID of the email - # that has been received - EMAIL_ID="$1" - DATA=$(curl -sL "${TMPMAIL_API_URL}?action=readMessage&login=$USERNAME&domain=$DOMAIN&id=$EMAIL_ID") - - # After the data is retrieved using the API, we have to check if we got any emails. - # Luckly 1secmail's API is not complicated and returns 'Message not found' as plain text - # if our email address as not received any emails. - # If we received the error message from the API just quit because there is nothing to do - [ "$DATA" = "Message not found" ] && print_error "Message not found" - - # We pass the $DATA to 'jq' which extracts the values - FROM=$(printf %s "$DATA" | jq -r ".from") - SUBJECT=$(printf %s "$DATA" | jq -r ".subject") - HTML_BODY=$(printf %s "$DATA" | jq -r ".htmlBody") - ATTACHMENTS=$(printf %s "$DATA" | jq -r ".attachments | length") - - # If you get an email that is in pure text, the .htmlBody field will be empty and - # we will need to get the content from .textBody instead - [ -z "$HTML_BODY" ] && HTML_BODY="
$(printf %s "$DATA" | jq -r ".textBody")
" - - # Create the HTML with all the information that is relevant and then - # assigning that HTML to the variable HTML_MAIL. This is the best method - # to create a multiline variable - HTML_MAIL=$(cat <To: $EMAIL_ADDRESS -From: $FROM -Subject: $SUBJECT -$HTML_BODY - -EOF -) - - if [ ! "$ATTACHMENTS" = "0" ]; then - HTML_MAIL="$HTML_MAIL
[Attachments]
" - - index=1 - while [ "$index" -le "$ATTACHMENTS" ]; do - FILENAME=$(printf %s "$DATA" | jq -r ".attachments | .[$index-1] | .filename") - LINK="$TMPMAIL_API_URL?action=download&login=$USERNAME&domain=$DOMAIN&id=$EMAIL_ID&file=$FILENAME" - HTML_LINK="$FILENAME
" - - if [ "$RAW_TEXT" = true ]; then - # The actual url is way too long and does not look so nice in STDOUT. - # Therefore we will shortening it using is.gd so that it looks nicer. - LINK=$(curl -s -F"url=$LINK" "https://is.gd/create.php?format=simple") - HTML_MAIL="$HTML_MAIL$LINK [$FILENAME]
" - else - HTML_MAIL="$HTML_MAIL$HTML_LINK" - fi - - index=$((index + 1)) - done - fi - - # Save the $HTML_MAIL into $TMPMAIL_HTML_EMAIL - printf %s "$HTML_MAIL" >"$TMPMAIL_HTML_EMAIL" - - # If the '--text' flag is used, then use 'w3m' to convert the HTML of - # the email to pure text by removing all the HTML tags - [ "$RAW_TEXT" = true ] && w3m -dump "$TMPMAIL_HTML_EMAIL" && exit - - # Open up the HTML file using $BROWSER. By default, - # this will be 'w3m'. - $BROWSER "$TMPMAIL_HTML_EMAIL" -} - - -view_recent_email() { - # View the most recent email. - # - # This is done by listing all the received email like you - # normally see on the terminal when running 'tmpmail'. - # We then grab the ID of the most recent - # email, which the first line. - MAIL_ID=$(list_emails | head -3 | tail -1 | cut -d' ' -f 1) - view_email "$MAIL_ID" -} - -print_error() { - # Print error message - # - # The first argument provided to this function will be the error message. - # Script will exit after printing the error message. - printf "%s\n" "Error: $1" >&2 - exit 1 -} - -main() { - # Iterate of the array of dependencies and check if the user has them installed. - # We are checking if $BROWSER is installed instead of checking for 'w3m'. By doing - # this, it allows the user to not have to install 'w3m' if they are using another - # browser to view the HTML - for dependency in jq $BROWSER curl; do - if ! command -v "$dependency" >/dev/null 2>&1; then - print_error "Could not find '$dependency', is it installed?" - fi - done - - # Create the $TMPMAIL_DIR directory and dont throw any errors - # if it already exists - mkdir -p "$TMPMAIL_DIR" - - # Get the email address and save the value to the EMAIL_ADDRESS variable - EMAIL_ADDRESS="$(get_email_address)" - - # ${VAR#PATTERN} Removes shortest match of pattern from start of a string. - # In this case, it takes the EMAIL_ADDRESS and removed everything after - # the '@' symbol which gives us the username. - USERNAME=${EMAIL_ADDRESS%@*} - - # ${VAR%PATTERN} Remove shortest match of pattern from end of a string. - # In this case, it takes the EMAIL_ADDRESS and removes everything until the - # period '.' which gives us the domain - DOMAIN=${EMAIL_ADDRESS#*@} - - # If no arguments are provided just the emails - [ $# -eq 0 ] && list_emails && exit - - while [ "$1" ]; do - case "$1" in - --help | -h) usage && exit ;; - --generate | -g) generate_email_address true "$2" && exit ;; - --browser | -b) BROWSER="$2" ;; - --text | -t) RAW_TEXT=true ;; - --version) echo "$VERSION" && exit ;; - --recent | -r) view_recent_email && exit ;; - *[0-9]*) - # If the user provides number as an argument, - # assume its the ID of an email and try getting - # the email that belongs to the ID - view_email "$1" && exit - ;; - -*) print_error "option '$1' does not exist" ;; - esac - shift - done -} - -main "$@" diff --git a/home/.local/bin/tmpsms b/home/.local/bin/tmpsms deleted file mode 100755 index bc70f41..0000000 --- a/home/.local/bin/tmpsms +++ /dev/null @@ -1,216 +0,0 @@ -#!/usr/bin/env sh -# -# by Siddharth Dushantha -# - -VERSION="1.0.0" - -# Everything related to 'tmpsms' will be stored in this directory. Once the -# computer get restarted, this directory gets deleted. -TMPSMS_DIR="/tmp/tmpsms" - -# The phone number that the user has selected gets stored in this file so that -# the do not have reselect at ever run. -TMPSMS_PHONE_NUMBER="$TMPSMS_DIR/phonenumber.txt" - -# 'fzf' is used to allow the user to select a phone number. This variable -# stores extra arguments which the user might to provide, so that 'fzf' -# behaves to their liking. -FZF_ARGUMENTS="" - -# The temporary SMS service is provided by Upmasked -API="https://upmasked.com" - -usage(){ - # Using 'cat << EOF' we can easily output a multiline text. This is much - # better than using 'echo' for each line or using '\n' to create a new line. - cat <] -tmpsms init [--fzf ] -tmpsms -h | --version - -When called with no options or commands, tmpsms lists -the 3 newest messages. - -Options --h, --help Show this help message --c, --count Only show the newest messages ---version Show version - -Commands -init Initialize a new phone number by selecting one - from the available ones using 'fzf' - --fzf Extra arguments to use for 'fzf' -EOF -} - -print_error(){ - # Print error message - # - # The first argument provided to this function will be the error message. - # Script will exit after printing the error message. - printf "%s\n" "Error: $1" >&2 - exit 1 -} - - -select_phone_number(){ - # There are 2 ways which this function is called in this script. - # [1] The user wants to initilize a new phone number by running 'tmpsms init' - # [2] The user runs 'tmpsms' to check for new messages, but $TMPSMS_PHONE_NUMBER - # does't exist. Therefore they have to select phone number before we can - # show them the messages. - # - # When the function 'select_phone_number()' is called with the argument 'true' - # that means this function was called becaues the user ran 'tmpsms init' - # - # We need this variable so we can know whether or not we need to show the user - # the phone number they have selected. If they ran 'tmpsms init', then we will - # show them the phone number they selected. This is so that they can easily - # copy and paste it to whatever site that needs the phone number. - EXTERNALLY=${1:-false} - - # Fetch the available phone numbers - DATA=$(curl -s "$API/api/sms/numbers") - - # Using 'jq' we are able to get the length of the JSON data retreived from - # API. The length indicates the the total number of phone numbers available. - DATA_LENGTH=$(printf %s "$DATA" | jq length) - - # This is where we store the phone numbers which then gets shown to the user - # through 'fzf' so that they can select one. - PHONE_NUMBERS="" - - index=1 - while [ $index -le "$DATA_LENGTH" ]; do - # Since arrays in JSON data start at 0, we must subtract - # the value of $index by 1 so that we dont miss one of the - # phone numbers in the array - PHONE_NUMBER_INFO=$(printf %s "$DATA" | jq -r ".[$index-1]") - PHONE_NUMBER=$(printf %s "$PHONE_NUMBER_INFO" | jq -r ".number") - COUNTRY_CODE=$(printf %s "$PHONE_NUMBER_INFO" | jq -r ".country") - - PHONE_NUMBERS="$PHONE_NUMBERS$COUNTRY_CODE +$PHONE_NUMBER\n" - index=$((index+1)) - done - - # By default we use 'fzf' without any arguments in order to display the - # phone numbers they can use. If the '--fzf' argument is passed along with - # 'fzf' arguments, 'tmpsms' will make sure to use them. - FZF_COMMAND="fzf" - [ -n "$FZF_ARGUMENTS" ] && FZF_COMMAND="fzf $FZF_ARGUMENTS" - - # If the user did not select a phone number then quit 'tmpsms' as the - # user might have just wanted to check if there were any new number - # that they could use. - SELECTION=$(printf %b "$PHONE_NUMBERS" | $FZF_COMMAND) - [ -z "$SELECTION" ] && print_error "Phone number was not selected" - - # Store the selected phone number in $TMPSMS_PHONE_NUMBER for later use - printf %s "$SELECTION" > "$TMPSMS_PHONE_NUMBER" - - # If the user ran 'tmpsms init', then show them their selection - [ "$EXTERNALLY" = true ] && printf "%s\n" "$SELECTION" -} - -list_messages(){ - # By default, the 3 newest messages are shown. But if the user would like - # to see more of the messages, they can provide how many they want to see - # by using the '--count' option. - COUNT="${1:-3}" - - # The provided value to '--count' must be an interger. We can verify that it is - # an integer by checking if $COUNT matches the regex. - REGEX='^[0-9]+$' - if ! printf %s "$COUNT" | grep -Eq "$REGEX";then - print_error "'$COUNT' is not an integer" - fi - - # If /tmp/tmpsms/phonenumber.txt does not exist or is empty that means that - # the user has not initialized a phone number yet. - [ ! -s "$TMPSMS_PHONE_NUMBER" ] && print_error "A phone number must be initilzied in order to view the messages" - - # The country code is needed because it gets displayed to the user. It may - # be useful for the user to know which country the phone number is from - # so that they dont have to guess by looking at the area code. - COUNTRY_CODE=$(awk -F" " '{print $1}' < $TMPSMS_PHONE_NUMBER) - PHONE_NUMBER=$(awk -F"+" '{print $2}' < $TMPSMS_PHONE_NUMBER) - DATA=$(curl -s "$API/api/sms/messages/$PHONE_NUMBER") - - # Even though we are using the phone numbers that are available on - # upmasked.com, there is a chance that they might remove one of the numbers. - # The checking needs to be done in case the phone number that is stored in - # $TMPSMS_PHONE_NUMBER has been removed. - if printf %s "$DATA" | grep -Eq "Not Found"; then - print_error "Looks like the phone number '+$PHONE_NUMBER' no longer exists. Initialize a new one and try again." - fi - - DATA_LENGTH=$(printf %s "$DATA" | jq length) - - # If the number of messages the user wants to view is greater than the - # number of messages that are available, then make sure to show - # all the messages that are available. - [ "$COUNT" -gt "$DATA_LENGTH" ] && COUNT="$DATA_LENGTH" - - # Show a nice little header before showing the messages - printf "%s\n\n" "[ Messages for +$PHONE_NUMBER ($COUNTRY_CODE) ]" - - # All the messages get stored in here - MESSAGES="" - - index=1 - while [ $index -le "$COUNT" ]; do - # Since arrays in JSON data start at 0, we must subtract - # the value of $index by 1 so that we dont miss one of the - # messages in the array - MESSAGE_DATA=$(printf %s "$DATA" | jq -r ".[$index-1]") - BODY=$(printf %s "$MESSAGE_DATA" | jq -r ".body" | tr "\n" " ") - SENDER=$(printf %s "$MESSAGE_DATA" | jq -r ".originator") - - # The '||' is used as a divider for 'column'. 'column' will use this - # divider as a point of reference to create the division. By default - # 'column' uses a blank space but that would not work in our case as the - # message could have multiple white spaces and 'column' would - # split the words that are seperated by white space, in different columns. - MESSAGES="$MESSAGES$SENDER ||$BODY\n" - - index=$((index+1)) - done - - # Show the messages cleanly - printf "%b" "$MESSAGES" | column -t -s "||" -} - -main(){ - # Iterate the array of dependencies and check if the user has them installed. - for dependency in jq curl fzf; do - if ! command -v "$dependency" >/dev/null 2>&1; then - print_error "Could not find '$dependency', is it installed?" - fi - done - - # Create the $TMPSMS_DIR directory and dont throw any errors - # if it already exists - mkdir -p "$TMPSMS_DIR" - - # If no arguments are provided just show the messages - [ $# -eq 0 ] && list_messages && exit 0 - - while [ "$1" ]; do - case "$1" in - init) - case "$2" in - --fzf) FZF_ARGUMENTS="$3" && select_phone_number true ;; - "") select_phone_number true ;; - esac ;; - --help | -h) usage && exit ;; - --count | -c) list_messages "$2" && shift 2;; - --version) printf %s "$VERSION" && exit ;; - -*) print_error "option '$1' does not exist" ;; - *) print_error "command '$1' does not exist" ;; - esac - shift - done -} - -main "$@" diff --git a/home/.local/bin/ytmenu b/home/.local/bin/ytmenu index 6326dc7..3af00f3 100755 --- a/home/.local/bin/ytmenu +++ b/home/.local/bin/ytmenu @@ -6,9 +6,9 @@ # yt search query takes input from the passed arg, prompts using fzf # yt -r takes input and prompts using rofi ($guicmd) +agent="Mozilla/5.0 (Windows NT 10.0; rv:78.0) Gecko/20100101 Firefox/78.0" defcmd="fzf" -guicmd="wofi -d -i" #uncomment next line for dmenu -#guicmd="dmenu -i -l 15" +guicmd="wofi -d -i" promptcmd="$defcmd" if [ -z "$*" ]; then echo -n "Search: " @@ -30,7 +30,7 @@ query=$(sed \ <<< "$query") # fetch the results with the $query and # delete all escaped characters -response="$(curl -s "https://www.youtube.com/results?search_query=$query" |\ +response="$(curl -s "https://www.youtube.com/results?search_query=$query" -A "$agent" |\ sed 's|\\.||g')" # if unable to fetch the youtube results page, inform and exit if ! grep -q "script" <<< "$response"; then echo "unable to fetch yt"; exit 1; fi diff --git a/setup/install_bsp-layout.sh b/setup/bsp-layout.sh similarity index 100% rename from setup/install_bsp-layout.sh rename to setup/bsp-layout.sh diff --git a/setup/install_greenclip.sh b/setup/greenclip.sh similarity index 100% rename from setup/install_greenclip.sh rename to setup/greenclip.sh diff --git a/setup/install_river.sh b/setup/river.sh similarity index 100% rename from setup/install_river.sh rename to setup/river.sh diff --git a/setup/scripts.sh b/setup/scripts.sh new file mode 100755 index 0000000..1d81051 --- /dev/null +++ b/setup/scripts.sh @@ -0,0 +1,13 @@ +#!/bin/sh + +curl -fL "https://github.com/sdushantha/tmpsms/raw/master/tmpsms" -o $HOME/.local/bin/tmpsms +chmod 755 $HOME/.local/bin/tmpsms + +curl -fL "https://github.com/sdushantha/tmpmail/raw/master/tmpmail" -o $HOME/.local/bin/tmpmail +chmod 755 $HOME/.local/bin/tmpmail + +curl -fL "https://github.com/sdushantha/farge/raw/master/farge" -o $HOME/.local/bin/farge +chmod 755 $HOME/.local/bin/farge + +curl -fL "https://raw.githubusercontent.com/Bugswriter/tuxi/main/tuxi" -o $HOME/.local/bin/tuxi +chmod 755 $HOME/.local/bin/tuxi diff --git a/setup/install_tt.sh b/setup/tt.sh similarity index 100% rename from setup/install_tt.sh rename to setup/tt.sh diff --git a/setup/install_vscode-icons.sh b/setup/vscode-icons.sh similarity index 100% rename from setup/install_vscode-icons.sh rename to setup/vscode-icons.sh diff --git a/setup/install_wayland-logout.sh b/setup/wayland-logout.sh similarity index 100% rename from setup/install_wayland-logout.sh rename to setup/wayland-logout.sh