Browse Source

Bare setup

main
Yigit Colakoglu 3 years ago
parent
commit
9d63a5f548
4 changed files with 236 additions and 65 deletions
  1. +0
    -65
      .local/bin/.gitignore
  2. +180
    -0
      .local/bin/connman_dmenu
  3. +1
    -0
      .zshenv
  4. +55
    -0
      pkg.list

+ 0
- 65
.local/bin/.gitignore View File

@ -1,65 +0,0 @@
*
!.gitignore
!autotrim
!convertToHtmlMultipart
!firefox-sync
!daily-update
!devmon
!dmenu-arch
!dmenu-bluetooth
!dmenu-edit
!dmenu-killall
!dmenu-logout
!dmenu-mconnect
!dmenu-refresh
!dmenu_run_history
!dmenu_surf
!dmenu-udevil
!dmenu-wallabag
!dunst_toggle.sh
!edit_screen.sh
!fastfetch
!gen_tracking_url
!kbmap_toggle
!keyboard
!layoutmenu.sh
!lf-ueberzug
!lf-ueberzug-cleaner
!lf-ueberzug-previewer
!lock
!mailsync
!menu-surfraw
!networkmanager_dmenu
!newmail.sh
!nextcloud-sync
!nm_sendmail.sh
!open_url
!pacontrol.sh
!password_manager
!purge_hist
!readability
!screensaver_toggle
!start-spotifyd
!status-bar
!status-bar/**
!st-copyout
!stop-spotifyd
!st_tmux
!st-urlhandler
!surf_linkselect.sh
!tabbed_surf
!tedportal
!toggle_monitor.sh
!toggle_touchpad.sh
!update_events.sh
!watch_mpv.sh
!weechat_start
!welcome.sh
!ytfzf_dmenu
!zaread
!texclear
!check-updates
!password_manager
!bwsync
!calsync

+ 180
- 0
.local/bin/connman_dmenu View File

@ -0,0 +1,180 @@
#!/bin/bash
readonly SCAN_RESULT=/tmp/connman.scan
readonly STORAGE_PATH=/var/lib/connman
readonly VPN_STORAGE_PATH=/var/lib/connman-vpn
get_services() {
if [[ -f $SCAN_RESULT ]]; then
dmenu_notify 'another connman_dmenu is running'
exit 1
fi
trap "rm -f $SCAN_RESULT" EXIT
connmanctl enable wifi &>/dev/null
connmanctl scan wifi &>/dev/null
connmanctl services | \
awk -F ' +' '{ service_id=$NF; $NF=""; $1=""; name=substr($0, 2, length-2); gsub(/[^a-zA-Z0-9-]/, "_", name) }
name { print name, service_id }' > $SCAN_RESULT
}
# $1 = index
index_to_name() {
[[ -f $SCAN_RESULT ]] || exit 1
awk -v line="$1" 'NR == line { print $1 }' $SCAN_RESULT
}
# $1 = index
index_to_service() {
[[ -f $SCAN_RESULT ]] || exit 1
awk -v line="$1" 'NR == line { print $2 }' $SCAN_RESULT
}
# $1 = service id
get_service_security() {
cut -d _ -f 5 <<<"$1"
}
# $1 = service id
get_service_signal() {
connmanctl services "$1" | awk '$1 == "Strength" { print $3 }'
}
# $1 = service id
get_service_state() {
connmanctl services "$1" | awk '$1 == "State" { print $3 }'
}
create_dmenu() {
[[ -f $SCAN_RESULT ]] || exit 1
echo 'setup vpn pptp'
local order=1
local name
local service_id
local security
local signal
local disconnect
while read -r name service_id; do
security=''
signal=''
disconnect=''
[[ ! "$(get_service_state "$service_id")" =~ ^(idle|failure)$ ]] && disconnect='(disconnect)'
case "$service_id" in
wifi_*)
security="$(get_service_security "$service_id")"
signal="$(get_service_signal "$service_id")"
;;
vpn_*)
security=vpn
;;
esac
printf '%2s %-40s%9s %-3s %s\n' "$order" "$name" "$security" "$signal" "$disconnect"
(( order++ ))
done < $SCAN_RESULT
}
# $1 = msg
dmenu_notify() {
: | dmenu -p "$1 (press enter)"
}
# $1 = question
# $2 = var name
dmenu_ask() {
IFS= read -r "$2" < <(: | dmenu -p "$1")
if [[ ! "${!2}" ]]; then
dmenu_notify "invalid $2"
exit 1
fi
}
get_services
index="$(create_dmenu | dmenu -l 10 -i -p 'select wifi service' | sed 's/^ *//g' | cut -d ' ' -f 1)"
if [[ "$index" == setup ]] ; then
# create vpn mode
dmenu_ask 'name this PPTP VPN' name
name="${name// /_}"
dmenu_ask 'please provide VPN domain' domain
dmenu_ask 'please provide identity' identity
dmenu_ask 'please provide password' password
cat > "$VPN_STORAGE_PATH/$name.config" <<-EOF
[provider_$name]
Type = PPTP
Name = $name
Host = $(dig +short A "$domain" | sort -n | head -n1)
Domain = $domain
PPTP.User = $identity
PPTP.Password = $password
EOF
dmenu_notify "VPN $name is created"
exit 0
fi
service_id="$(index_to_service "$index")"
[[ "$service_id" ]] || exit 1
name="$(index_to_name "$index")"
echo "$name { $service_id }"
if [[ ! "$(get_service_state "$service_id")" =~ ^(idle|failure)$ ]]; then
connmanctl disconnect "$service_id"
dmenu_notify "$name disconnected"
exit 0
fi
security="$(get_service_security "$service_id")"
# create service file for encryption
if [[ "$security" =~ ^(ieee8021x|psk|wep)$ ]]; then
config_file="$STORAGE_PATH/$name-$security.config"
if [[ -f "$config_file" && no != "$(echo -e 'yes\nno' | dmenu -p 'use previous profile?')" ]]; then
echo "use old profile: $config_file"
else
dmenu_ask 'please provide password' password
case "$security" in
ieee8021x)
dmenu_ask 'please provide identity' identity
case "$(echo -e 'PEAP/MSCHAPV2\nTTLS/PAP' | dmenu -p 'please specify EAP type')" in
PEAP/MSCHAPV2)
eap=peap
phase2=MSCHAPV2
;;
TTLS/PAP)
eap=ttls
phase2=PAP
;;
*)
dmenu_notify 'invalid EAP'
exit 1
;;
esac
cat > "$config_file" <<-EOF
[service_$service_id]
Type = wifi
Name = $name
EAP = $eap
Phase2 = $phase2
Identity = $identity
Passphrase = $password
EOF
;;
psk|wep)
cat > "$config_file" <<-EOF
[service_$service_id]
Type = wifi
Name = $name
Passphrase = $password
EOF
;;
esac
chmod 600 "$config_file"
fi
fi
connman_msg="$(timeout 10 connmanctl connect "$service_id" 2>&1 | head -n 1)"
if [[ "$connman_msg" == Connected* ]]; then
dmenu_notify "connected to $name"
else
error_msg='automatic timeout for connman_dmenu'
[[ "$connman_msg" ]] && error_msg="$(cut -d ' ' -f 3- <<<"$connman_msg")"
dmenu_notify "cannot connect to $name ($error_msg)"
fi

+ 1
- 0
.zshenv View File

@ -0,0 +1 @@
ZDOTDIR=$HOME/.config/zsh

+ 55
- 0
pkg.list View File

@ -0,0 +1,55 @@
yajl
webkit2gtk
surfraw
fzf
ytfzf
zsh
antibody
direnv
tmux
lf
bitwarden-cli
wallabag-client
spotify-tui
spotifyd-full-git
zathura
notmuch
msmtp
isync
pass
pass-otp
newsboat
pam-gnupg
libgee
calcurse
neomutt
nvim
mpd
mpc
mpc-mpris
libxfixes
libxi
libxt
htop
dunst
mpv-mpris
ncmpcpp
cmake
opencv
xmenu
pacman-contrib
clipmenu
clipnotify
polkit-dumb-agent
feh
imlib2
desktop-file-utils
xdg-utils
hicolor-icon-theme
libexif
libxft
udevil
redshift
python-notify2
python-gobject
gsound

Loading…
Cancel
Save