From 27d10d20ada46d3eb762d173e445b9d6e8f4912f Mon Sep 17 00:00:00 2001 From: TrudeEH Date: Sun, 23 Jun 2024 22:28:14 +0100 Subject: [PATCH] New status bar --- .gitignore | 1 + dotfiles/.local/bin/sb-battery | 24 ++ dotfiles/.local/bin/sb-cpu | 26 ++ dotfiles/.local/bin/sb-memory | 3 + dotfiles/.local/bin/sb-network | 17 ++ dotfiles/.local/bin/sb-volume | 28 ++ dotfiles/.xinitrc | 2 +- install.sh | 2 +- programs/VERSIONS | 1 - programs/dmenu/dmenu | Bin 77592 -> 43304 bytes programs/dmenu/stest | Bin 71384 -> 16888 bytes programs/dwm/config.def.h | 11 +- programs/dwm/config.h | 11 +- programs/dwm/dwm | Bin 82704 -> 73008 bytes programs/dwmblocks/Makefile | 36 +++ programs/dwmblocks/blocks.def.h | 15 + programs/dwmblocks/blocks.h | 15 + programs/dwmblocks/dwmblocks.c | 213 ++++++++++++++ programs/slock/slock | Bin 68144 -> 23192 bytes programs/slstatus/LICENSE | 43 --- programs/slstatus/Makefile | 69 ----- programs/slstatus/README | 65 ----- programs/slstatus/arg.h | 33 --- programs/slstatus/components/battery.c | 247 ---------------- programs/slstatus/components/cat.c | 32 -- programs/slstatus/components/cpu.c | 157 ---------- programs/slstatus/components/datetime.c | 20 -- programs/slstatus/components/disk.c | 59 ---- programs/slstatus/components/entropy.c | 29 -- programs/slstatus/components/hostname.c | 17 -- programs/slstatus/components/ip.c | 61 ---- programs/slstatus/components/kernel_release.c | 19 -- .../slstatus/components/keyboard_indicators.c | 50 ---- programs/slstatus/components/keymap.c | 86 ------ programs/slstatus/components/load_avg.c | 19 -- programs/slstatus/components/netspeeds.c | 129 --------- programs/slstatus/components/num_files.c | 32 -- programs/slstatus/components/ram.c | 212 -------------- programs/slstatus/components/run_command.c | 31 -- programs/slstatus/components/swap.c | 274 ------------------ programs/slstatus/components/temperature.c | 73 ----- programs/slstatus/components/uptime.c | 34 --- programs/slstatus/components/user.c | 33 --- programs/slstatus/components/volume.c | 219 -------------- programs/slstatus/components/wifi.c | 267 ----------------- programs/slstatus/config.def.h | 84 ------ programs/slstatus/config.h | 84 ------ programs/slstatus/config.mk | 22 -- programs/slstatus/slstatus | Bin 68544 -> 0 bytes programs/slstatus/slstatus.1 | 47 --- programs/slstatus/slstatus.c | 134 --------- programs/slstatus/slstatus.h | 84 ------ programs/slstatus/util.c | 141 --------- programs/slstatus/util.h | 16 - programs/st/st | Bin 157208 -> 102360 bytes programs/tabbed/tabbed | Bin 77600 -> 43424 bytes programs/tabbed/xembed | Bin 70816 -> 16336 bytes 57 files changed, 386 insertions(+), 2941 deletions(-) create mode 100755 dotfiles/.local/bin/sb-battery create mode 100755 dotfiles/.local/bin/sb-cpu create mode 100755 dotfiles/.local/bin/sb-memory create mode 100755 dotfiles/.local/bin/sb-network create mode 100755 dotfiles/.local/bin/sb-volume create mode 100644 programs/dwmblocks/Makefile create mode 100644 programs/dwmblocks/blocks.def.h create mode 100644 programs/dwmblocks/blocks.h create mode 100644 programs/dwmblocks/dwmblocks.c delete mode 100644 programs/slstatus/LICENSE delete mode 100644 programs/slstatus/Makefile delete mode 100644 programs/slstatus/README delete mode 100644 programs/slstatus/arg.h delete mode 100644 programs/slstatus/components/battery.c delete mode 100644 programs/slstatus/components/cat.c delete mode 100644 programs/slstatus/components/cpu.c delete mode 100644 programs/slstatus/components/datetime.c delete mode 100644 programs/slstatus/components/disk.c delete mode 100644 programs/slstatus/components/entropy.c delete mode 100644 programs/slstatus/components/hostname.c delete mode 100644 programs/slstatus/components/ip.c delete mode 100644 programs/slstatus/components/kernel_release.c delete mode 100644 programs/slstatus/components/keyboard_indicators.c delete mode 100644 programs/slstatus/components/keymap.c delete mode 100644 programs/slstatus/components/load_avg.c delete mode 100644 programs/slstatus/components/netspeeds.c delete mode 100644 programs/slstatus/components/num_files.c delete mode 100644 programs/slstatus/components/ram.c delete mode 100644 programs/slstatus/components/run_command.c delete mode 100644 programs/slstatus/components/swap.c delete mode 100644 programs/slstatus/components/temperature.c delete mode 100644 programs/slstatus/components/uptime.c delete mode 100644 programs/slstatus/components/user.c delete mode 100644 programs/slstatus/components/volume.c delete mode 100644 programs/slstatus/components/wifi.c delete mode 100644 programs/slstatus/config.def.h delete mode 100644 programs/slstatus/config.h delete mode 100644 programs/slstatus/config.mk delete mode 100755 programs/slstatus/slstatus delete mode 100644 programs/slstatus/slstatus.1 delete mode 100644 programs/slstatus/slstatus.c delete mode 100644 programs/slstatus/slstatus.h delete mode 100644 programs/slstatus/util.c delete mode 100644 programs/slstatus/util.h diff --git a/.gitignore b/.gitignore index 382d7bf0..ccac6fe1 100644 --- a/.gitignore +++ b/.gitignore @@ -41,5 +41,6 @@ programs/tabbed/tabbed programs/slstatus/slstatus programs/surf/surf programs/herbe/herbe +programs/dwmblocks/dwmblocks logs/ diff --git a/dotfiles/.local/bin/sb-battery b/dotfiles/.local/bin/sb-battery new file mode 100755 index 00000000..ccb939a9 --- /dev/null +++ b/dotfiles/.local/bin/sb-battery @@ -0,0 +1,24 @@ +#!/bin/sh + +# Prints all batteries, their percentage remaining and an emoji corresponding +# to charge status (🔌 for plugged up, 🔋 for discharging on battery, etc.). + +# Loop through all attached batteries and format the info +for battery in /sys/class/power_supply/BAT?*; do + # If non-first battery, print a space separator. + [ -n "${capacity+x}" ] && printf " " + # Sets up the status and capacity + case "$(cat "$battery/status" 2>&1)" in + "Full") status="󰁹" ;; + "Discharging") status="󰂌" ;; + "Charging") status="󰂄" ;; + "Not charging") status="󰂃" ;; + "Unknown") status="󰂑" ;; + *) exit 1 ;; + esac + capacity="$(cat "$battery/capacity" 2>&1)" + # Will make a warn variable if discharging and low + [ "$status" = "󰂌" ] && [ "$capacity" -le 25 ] && warn=" " + # Prints the info + printf "%s%s%d%%" "$status" "$warn" "$capacity"; unset warn +done && printf "\\n" diff --git a/dotfiles/.local/bin/sb-cpu b/dotfiles/.local/bin/sb-cpu new file mode 100755 index 00000000..590ea990 --- /dev/null +++ b/dotfiles/.local/bin/sb-cpu @@ -0,0 +1,26 @@ +#!/bin/sh + +# Module showing overall CPU usage as a percentage. +# Cache in tmpfs to improve speed and reduce SSD load +cache=/tmp/cpubarscache + +# Extract CPU stats (total time and idle time) +cpu_stats=$(awk '/^cpu / {print $2 + $3 + $4 + $5, $5}' /proc/stat) + +# Check if cache exists, if not, initialize it +[ ! -f $cache ] && echo "$cpu_stats" > "$cache" + +# Read previous CPU stats from cache +prev_stats=$(cat "$cache") + +# Calculate CPU usage percentage and exit immediately +echo "$cpu_stats $prev_stats" | awk '{ + total_diff = $1 - $3 + idle_diff = $2 - $4 + usage = 100 * (1 - idle_diff / total_diff) + printf " %.1f%%\n", usage + exit # Terminate script after printing the first line +}' + +# Update cache with current stats +echo "$cpu_stats" > "$cache" diff --git a/dotfiles/.local/bin/sb-memory b/dotfiles/.local/bin/sb-memory new file mode 100755 index 00000000..a29cf24c --- /dev/null +++ b/dotfiles/.local/bin/sb-memory @@ -0,0 +1,3 @@ +#!/bin/sh + +free --mebi | sed -n '2{p;q}' | awk '{printf (" %2.2fGB/%2.2fGB\n", ( $3 / 1024), ($2 / 1024))}' diff --git a/dotfiles/.local/bin/sb-network b/dotfiles/.local/bin/sb-network new file mode 100755 index 00000000..28b6b5d5 --- /dev/null +++ b/dotfiles/.local/bin/sb-network @@ -0,0 +1,17 @@ +#!/bin/sh + +# Show wifi 📶 and percent strength or 📡 if none. +# Show 🌐 if connected to ethernet or ❎ if none. +# Show 🔒 if a vpn connection is active + +# Wifi +if [ "$(cat /sys/class/net/w*/operstate 2>/dev/null)" = 'up' ] ; then + wifiicon="$(awk '/^[[:space:]]*w/ { gsub(/[[:space:]]+/, " "); print " ", int($3 * 100 / 70) "% " }' /proc/net/wireless)" +elif [ "$(cat /sys/class/net/w*/operstate 2>/dev/null)" = 'down' ] ; then + [ "$(cat /sys/class/net/w*/flags 2>/dev/null)" = '0x1003' ] && wifiicon=" " || wifiicon="" +fi + +# Ethernet +[ "$(cat /sys/class/net/e*/operstate 2>/dev/null)" = 'up' ] && ethericon="󰛳 " || ethericon="󰅛 " + +printf "%s%s\n" "$wifiicon" "$ethericon" diff --git a/dotfiles/.local/bin/sb-volume b/dotfiles/.local/bin/sb-volume new file mode 100755 index 00000000..cca68bc1 --- /dev/null +++ b/dotfiles/.local/bin/sb-volume @@ -0,0 +1,28 @@ +#!/bin/sh + +# Prints the current volume or  if muted. + +vol="$(wpctl get-volume @DEFAULT_AUDIO_SINK@)" + +# If muted, print  and exit. +[ "$vol" != "${vol%\[MUTED\]}" ] && echo " " && exit + +vol="${vol#Volume: }" + +split() { + # For ommiting the . without calling and external program. + IFS=$2 + set -- $1 + printf '%s' "$@" +} + +vol="$(printf "%.0f" "$(split "$vol" ".")")" + +case 1 in + $((vol >= 70)) ) icon=" " ;; + $((vol >= 30)) ) icon=" " ;; + $((vol >= 1)) ) icon=" " ;; + * ) echo " " && exit ;; +esac + +echo "$icon$vol%" diff --git a/dotfiles/.xinitrc b/dotfiles/.xinitrc index 5a2347cd..84125628 100644 --- a/dotfiles/.xinitrc +++ b/dotfiles/.xinitrc @@ -1,4 +1,4 @@ -slstatus & +dwmblocks & feh --bg-scale "/home/trude/dotfiles/bg2.png" & xrdb ~/.Xresources dunst & diff --git a/install.sh b/install.sh index 9f268bd7..70057104 100755 --- a/install.sh +++ b/install.sh @@ -195,7 +195,7 @@ for selection in $main_menu; do dialogDotfiles 85 5 5 5 5 5 5 5 7 4 # Compile - for program in "dwm" "dmenu" "slock" "slstatus" "st" "tabbed" "surf"; do + for program in "dwm" "dmenu" "slock" "st" "tabbed" "dwmblocks"; do compile $program done dialogDotfiles 95 5 5 5 5 5 5 5 5 7 diff --git a/programs/VERSIONS b/programs/VERSIONS index c3544417..7659d3d4 100644 --- a/programs/VERSIONS +++ b/programs/VERSIONS @@ -1,6 +1,5 @@ dmenu - 5.3 dwm - 6.5 st - 0.9.2 -slstatus - 1.0 slock - 1.5 tabbed - 0.8 diff --git a/programs/dmenu/dmenu b/programs/dmenu/dmenu index cf5f26fff91a0b97d913688aaedd6e722d82c461..23535b22e915d186466ca24375a99a4eebab898b 100755 GIT binary patch literal 43304 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
X9$1!a$@h0N?82=RUNyPUs{tv{{ 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 YuO^E-YiBIKXuB#wfB8axB(TE&0P!1JaR2}S literal 77592 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
  • m|4@uF$cYeSgH` zSWUY~bN)bf6*V>6WGAxiLt_P|-_1~@rd?H>b*xU2?ny`4%_mlZu9~X=NLGwL- z0=Yd}=7Zf@=69GK>!@clZ{_;{qixNdxx#5cY45kua(vO2x=(nFx6|Ioi8Y+lJ?^%( z;*ti((|IUcc0W)KX-NKWi9h&{;l81D*UoA ziI$WVltQN*qo$|5Uyv4yF88=sHaezgDM@=*vAgwB*gMy$WuI{$7u2pd^Iwxr9mm|{ zbISb`U{(Jaa=QfZ+$r?UIYeCB*5lsic;vSjwQ2902%9jLL9~|wDn;2hr08WST3%K~ zj5o)z7p3s~But`pPfIQL+%+%II!bkEG8=fI@J*T*>3iKB!tuzow8}_j*{~MJ)M1I; zCq1oAdnYL)=eyDV0y;-Jd;X*O6#->X-%=S*O4xX%un9i4HEo5du_oi{B$2v=Og`7v3!v2f?3tuUI?<`abA+Q2q_V zcJy{(n{?W)UEJJq+}7+QoPOkd2zF~gIaSve!VLw|??U<5Tj0xk=Z@C4uQ(PRZb^w- zR^9Z4O>XIi?0ZO#dX@jKfY)zv5B_ba*9|21w>sB>OyGYxu+P%lF|Y^iJ*{o&hOe~d z>n49|$Ab%cTD#KC zUu`|>YIx7q+6Bnpx(+Jct!*&rCSUbbk3c;F^$64>P>(=80`&;gBT$b(Jp%Ozlt+Ni zo$)y{`X-*zv`OaAI?=`kX^BZhgbsEhtu#sLJR6;Jq{Q2gRVFL=TpR7JD6#y5E5#V` zGwP5UpY@tm89w86R>}EH*2iRogrAmVYE!i0%o#9cCi3bW8*Qm54XB3lK9GJert}$; zh%Qw@#x<4Udds~bbouNUmyh37WP2czs`%+c@-509Kk`VPZ<%MfWN?qUa$-A5`=)MgK+7XB9oI=uZ`WOVP`UF0dSSoAjAA*|~lD zjjnY)p`maf>gwF++34wL@7%mzWv#WH=PBNe;@8D_#LQ9u(FxCcRlr?JfzCQs)2H!m z$H~3*YT(?U^#4TR0}7Y>d|;o)zYXVaUEQYQm`MbF&HIePK@W{-R!}n7iGDQ(mkd%N=yf1NI&JP)V~Y(G8*Si(;y_%A0J+}*eXa8;8{(k+o9XodS4(fyc?*3j~UXAeaWd(UH!FnO0B;B<658hdz z3l}9_@+9wJR3LgN7%&2SX`)g@K~T3VDg=DFqXOh>92KCv{ZT@2@dEvU;>=qVe4nEv zH``iy%|Z_*V)|Gh8l)>2eYe39H%as)ZjA7Sk4kgg{Xii@iG(Uc-X96XM-O$V3n3Ni z=4F%$NZmrI!04Vz1)%G=8^Rq-mqx1I1gX5IQt5z34Rr_ZwNwa%Cvjxl2n>N5ag&a5 z4i{=d@d@FH#*C0>G@A5G#BtdrZX79thLU029t#H*(F#U~EFOvk$Ux;LB8KqDntPD-jK;tkp-Ftoq2h_h{g$I*$9CNT@9rOi{&TP;7nlLbGGTZb1j4AKOpdu6b zC{JGpLwg^#=lu>-90HSx>(6>j{{m9lOEJ&;DW*QtT=r3U{S_>-$WTn#p7(Q1FDXSX z-`f6fD*JAw$NNL3yq_d{ika2^Nnlhj_FsCws^={4JE0+Rqzz-B-HB%{_Wb<;Q{G3jfwlcVQ1;w^!lg77 zy-Tr7toElMp!l(Ut$W0^>|e9k|Gmr9WZFi~%M!V54n*Ws8j{EVuz(|Gd`QBlUHmpeN zOj7z}d#1mKq}-mrkI5_hhf0=ahV7UxfN{A!?=vPkOnt5=yJ0)#7sHq^u7ApBN>Xgk z149|O6lJnhm9Nwp7Hq$|gqRtsE2VO3DMHF;l*0)%f35>sZT+D6!F890>cdG7CZvTH XA(v}P>D|4${VLjkBdxL+SXlA@yGO~d literal 71384 zcmeI0e{fXSb;r;C0As))K!9u$v&eQrI%drefx#x>=?4fp0{mm+IKlDbY4=Imvf7n) zSGH_A6PdU!{*f4saiETIuqV?Z&7^fE*by_GMmC-)(_|Xgu3g&LjzsGpopc%q#;^u? z`@QeoBfWjvbv>QVw11qdc{=ZY?>Xn5_j&i--F@HQ*s>`Y2oSdr{fwO66|Q3FfrGOr zd<#A(Y zy&C7gsmUmHVGqU|q*U_Pha+*7?WEFQp$DPn|Y)5oqZ29_B8g;~UUcYU^m}+d5 zuWGlxmrtnk3sp{cl5KHiV#{&2Ax_o#d7Dm8x9j;TaoMcvXR9xlZcHUxZ%ieYrIP8M z-es1Rjd!f6i{>)X74CIcqY!nEo40+9mb`k+SLXfEy1!~Y6MOH`3vbWv*_C-()van! z`IL`p%KtLw%+=Kx&!^?jWkNKAmR>&DHAD+(AL$Fy!(W2cOQs~?D;0FL9?SXvHS`D$ zf4c`ltzSg{k8zaCvmN@JGX9D~IsfSu^n3+fF)x?@h6?^Cp+|7|+YAWh>Upe!{!j&d zK?Qwv1zoW$H*aSJ{R8L`9R7AEgmQT(m+s0Y)A=?^dZa`{9uO zS=%PNH<_n+DwDGl$t<x5T!Z zn9puc=JIwnwzV;pN!u~2HKj^x@64oiX{PI1)=`5B;%N-x=?m(=u(kp0YOE=%JX8z7 zzaN(Om7n&1AKOuwexS9ZPCrC{uKNd^evp2GzG}P=hxCS4HOtk9^?u9xu>M>+SyWF1 z_6+Ucryc~fgSsBpx&MOp55V8MPY!u>-g{J@VUO3?&WZ+N9Q%70`BtY-hFAONB2Ib9Ugt2Go$;j%cHB$9&WuJeLjn@eI8xy zLEQFw^cogn7e_*Gj_v;Wz?fR*0op&d`{g6UA@i-%&`uMbp7UvQq3YCz{z!1~TgsP@ zssQbq6Eq4{L2|~N{#5j9J^ktEH+cH9&~Nqh=c2#I(_eu8^Pc`y=)dCWUxWTBPrnxZ zU|?eYFQQ-T>Hh)x4W51!{Z>zZCHi|j{Wa)6@9E!+{wtpTSJ6M^={KMs3{K3y3H@5P zKeKAj>&5sDzZlz14%@SL1P0EA0)y3Iy6t>CG_Vl-a35YM>y3gIo!h+-)}B_^sj;bv&RGd&m+%hsCsZDG;i>4i^T(riO&3T zI>knAF$$`G9<`|2$95Y7BiZ_6XYZ&VfKT_i9Ss8`3x9ak`FP_%VOJAs+c<#hdrYmB zbI64)vA>4;ZeNdMXOIdnVV;+R#=3gccMylF=clOa?~BESKM&6P?SsW)EHV_h?UsiE zw=E7+_g>ULJk?m&N3{AStfM=F^x}S^{claB{tZKc?po9yIUee-r@p60LJJ1>y0v$! znv7rHGNgE{#oUK6ud3xRYWNN2QuDrud4Gp<757cVeXP!JG73-NeB@H`=-r6_J+v!v zKQ7|>*I}Lo)c3k|lW}b41NUBdE=+YX_+ALnpb@5{pM-+_BcYnX9nd1EQ=Q+9b5-jP zg9~=me_D+FCGw4eDQfwL+K!!T&85^07O@Q-k+n)6!CL6R^*sZ>IOdq&LjC_1nm>3d zbS3W1Rf7TA^ZG5wx%kqC?jx6qu~CdEeFtJj5n~}n<@h@Kr_kr;(rdqfYq$o-d#HOf zWE4(ejlGZOd<1KP{-e1N!dMu`9L%#8hogVkTrh}^-hiCy-f}+d4g07s*pHu7`SsRq*pf^2PreNQQ;2Oi-CSsO zVuRzcYR<9Uf8#zkGpH~RbMD;Ju+9k3YNy7xn+tu2apq_-3jh9T@xV#cA5m*>PjKDY z8Af4j_bbjm#`V9A>rwlhiV5I8tNkt*GYaZjoSY-g1tOy`3waFWIf0yGyMH|X?0y7> zs*ZE>@ND8bM~_qg2k=2nbp-z$)=ld@#xav<*T`&&?fgUISY)<4_9FatVw|QK$58j` z!+0(h4^g*)b>iqVjbn%LjEpoI$7p8t+{HCUw>756s(fS9jP3`q9-O#p-&mE={oF-8 zR%09+xr|mjev5p55#;|w`$e$E_1wdSudi|ZuY>__g{;CY?5$v0=%=zjTQJ=S6z8xHH*ZgrT{jjS>X*k{iC_?-5+YoabXXS#Lm zL{98)PK^m%UkJ>wmn{MR$H5r!&VFzR_gd)z=nq35IbW&jJ>Mk9z)AIxA}?U(1~ zsrC29`1<3|SN?2O-z|G`R=a(3$1bue2Lb13Ai+$RqVljdKU9i1MhkYFO z1ngnhnz3T>RoF$aCt+J)@!9V*{!SBk;C2f4UK6-_=3?i&Fh0BJnTy3D7C%w_W!ES_ z^;_#CwB<@eQ<{O}BWUYkRg2(=DT}!`!&3dM$f5AFp@t`e+unWW4d*MDic@vAz=yvp zR->7MaKn?|3-AAKxbeWF;e(Ha8~LyU%&m&|ME{K-+W8utM`7LL^5eYKnMr{As_^VfDjM@LO=)z z0U;m+gn$qb0zyCt2mv7=1cZPP5CTF#2nYcoAOwVf5D)@FKnMr{As_^VfDjM@LO=)z z0U;m+gn$qb0zyCt2mv7=1cZPP5CTF#2nYcoAOwVf5D)@FKnMr{As_^VfDjM@LO=)z z0U;m+gn$qb0zyCt2mv7=1cZPP5CTF#2nYcoAOwVf5D)@FKnMr{As_^VfDjM@LO=)z z0U;m+gn$qb0zyCt2mv7=1cZPP5CTF#2nYcoAOwVf5D)@FKnMr{As_^VfDjM@LO=)z z0U;m+gn$qb0zyCt2mv7=1cZPP5CTF#2nYcoAOwVf5D)@FKnMr{As_^VfDjM@LO=)z z0U;m+gn$qb0zyCt2mv7=1cZPP5CTF#2nYcoAOwVf5D)@FKnMr{As_^VfDjM@LO=)z z0U;m+gn$qb0zyCt2mv7=1cZPP5CTF#2nYcoAOwVf5D)@FKnMr{As_^VfDjM@{}%+R zX1TKtU*Xz-E}~!Cnc6PB+&$55w71IbU#Z83#@xuOb$^<+S7|$}#~1m=&wX0VDCuC( z9hjoWtMtiK-5=89({(?f3!S0+HQLVCmQ6^Xd{}e?bQ*d=$5-p|%d}mnZLbzs->VDZ z>pHFdG#29dFBaYF!LZ}{sqSyq@kQO&)6;3)pR30Ux*yj0|F_KveIGt=-aZEY-vk&M z#Qzt|qC`40;*LSHtmH0U*)h{DnFQxi4;&oQ4UrxM!OZDl*>%3H-LHxXz>NAP& zZ>fF-m0Kqvnl-*pl={!6XY~G2s#np4vicm_Jjd(lo`+~I@xJ374beQ}{ial}rgG~) zMDyv0-XBW+7ZC3orTRkJr`J`fUPFh=>by%%c&q0>OlOJ{ihJfhMw8c%+J^&JDZH*C zI>wu`Bb&taUff9J<@b&DAIKR~444hx6C@@<-qw#H6hAKI-~UUO%orc|9!q%z0rL9fNk7NT!N1Pk@@nXa@4h!9 zPXM0^FKE3(=Wo$^O~6gur}bO4e$c1K*gxp{^XCHJ-`9Ni_nYwlEDpE&?xPKV#lf$) zYrW6s@6NlBcwdE^(;mQom1o%JzYn_Na9DHT&pkKKJxS9^i+u_=Sj?EPuKpZGw&So>uR*zeYxcLpDFtHr6~@m$@^gq z^Z@n^|9<7J&&m696#l*vRVnn<3i^%;dMEUV6IuH2%UG5Xn!F!A0{<${ednkH&}+Hl zu|I)cuFhAX`)-vJbwTHk=;wk{z2)c&$JZO{?^MWtM(M%H`_lOe`9rwga&=Z$(7yz| zstlhx=;f|!V}(55fF9wC@z`(${|=QuIQcp4so?*x@~4T<1>R?#s^I?@74)A~(Ekp) zS`YsF^{Wd0%N!k>iQZ4t{;t|@D&+Y<>%7mn-b80B(`rqcd8?hS>m|rZ z$Z;!`GVimkU1nQaX=!M=yq(KOJ2naF3dIn(OFw3*JXl%2N|(dFem%(i4YXIF^L~VQdL}&cC9bBq>Gt}q8_kW|noN_-rf+Pk-@2s{QO(=F zW^UZ9M>jX!PG)n<_J;ZvbNi-EcWjKAvHFIVjV9T>$-L3rvZbNXTp3+)69QAo*0`C= zTiLwXX(iL+gRAPO%g$yq*>Od=Z;5R+Ct$?3HYyY`t2JdKRckJ%Godsy-fO8#wNl9k zY;TTCmz_=|OVZ}@$XTM8cEZYAluLJIlj(e$H{Ri=XG11nNTK|Rt6H^+vbL4*O@W(* zgl>7b{|V2P;<|80bM~Z&_RdV&b3ut*#_X`t30$kyn#oSg=z!S{Ph>TFkcg~!+|K2^ zRd@B|OZx40K9x+DfWc}=U@h3CqEgkZo}i2Jv+<4+TF&E4Obw_0KIS=V;(8SaFg?V@NpleeSo>7Hn7PcoHQmP}}=zG2HU_3$}k z9agS`qKW&{$miO8)*ZRm&gPPtbVN_8w_S^ldWWL7*YV%W{JZ%&uQSg1bBEZaptGvND-|vg(?+a|FabY^n(3Z{9IPuQU?@ifOv!k~D`VZ@P=Fjg<*s9+r z-sX=#fEBmd4iq2ot%{d^mFUS0>Ih*2&)KmYDJqTk#Y81puc zXZt<|z481$=|dfV#2burj$`{fUp&8e+UI0d->FL*$FX`2Crab`59^h1SjYG2>t}y| z{3jStF3Z_LTaI7s(>a~j^4jyd4)gr_{j&NT*@A=T=jU4e&gR;^@x}~yhV8yVo|k>q UZ!DjSGxWqP*E8e`@OA0G09K}qD*ylh diff --git a/programs/dwm/config.def.h b/programs/dwm/config.def.h index c063a85a..6e4d9c58 100644 --- a/programs/dwm/config.def.h +++ b/programs/dwm/config.def.h @@ -57,11 +57,6 @@ static const Layout layouts[] = { /* helper for spawning shell commands in the pre dwm-5.0 fashion */ #define SHCMD(cmd) { .v = (const char*[]){ "/bin/sh", "-c", cmd, NULL } } -/* volume commands */ -static const char *upvol[] = { "/usr/bin/wpctl", "set-volume", "@DEFAULT_AUDIO_SINK@", "5%+", NULL }; -static const char *downvol[] = { "/usr/bin/wpctl", "set-volume", "@DEFAULT_AUDIO_SINK@", "5%-", NULL }; -static const char *mutevol[] = { "/usr/bin/wpctl", "set-mute", "@DEFAULT_AUDIO_SINK@", "toggle", NULL }; - /* commands */ static char dmenumon[2] = "0"; /* component of dmenucmd, manipulated in spawn() */ static const char *dmenucmd[] = { "dmenu_run", "-m", dmenumon, NULL }; @@ -72,9 +67,9 @@ static const char *webcmd[] = { "firefox", "--new-window", "/home/trude/. static const Key keys[] = { /* Volume keys support */ - { 0, XF86XK_AudioLowerVolume, spawn, {.v = downvol } }, - { 0, XF86XK_AudioMute, spawn, {.v = mutevol } }, - { 0, XF86XK_AudioRaiseVolume, spawn, {.v = upvol } }, + { 0, XF86XK_AudioLowerVolume, spawn, SHCMD("/usr/bin/wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-; pkill -RTMIN+10 dwmblocks") }, + { 0, XF86XK_AudioMute, spawn, SHCMD("/usr/bin/wpctl set-volume @DEFAULT_AUDIO_SINK@ toggle; pkill -RTMIN+10 dwmblocks") }, + { 0, XF86XK_AudioRaiseVolume, spawn, SHCMD("/usr/bin/wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+; pkill -RTMIN+10 dwmblocks") }, /* modifier key function argument */ { MODKEY, XK_p, spawn, {.v = dmenucmd } }, diff --git a/programs/dwm/config.h b/programs/dwm/config.h index c063a85a..6e4d9c58 100644 --- a/programs/dwm/config.h +++ b/programs/dwm/config.h @@ -57,11 +57,6 @@ static const Layout layouts[] = { /* helper for spawning shell commands in the pre dwm-5.0 fashion */ #define SHCMD(cmd) { .v = (const char*[]){ "/bin/sh", "-c", cmd, NULL } } -/* volume commands */ -static const char *upvol[] = { "/usr/bin/wpctl", "set-volume", "@DEFAULT_AUDIO_SINK@", "5%+", NULL }; -static const char *downvol[] = { "/usr/bin/wpctl", "set-volume", "@DEFAULT_AUDIO_SINK@", "5%-", NULL }; -static const char *mutevol[] = { "/usr/bin/wpctl", "set-mute", "@DEFAULT_AUDIO_SINK@", "toggle", NULL }; - /* commands */ static char dmenumon[2] = "0"; /* component of dmenucmd, manipulated in spawn() */ static const char *dmenucmd[] = { "dmenu_run", "-m", dmenumon, NULL }; @@ -72,9 +67,9 @@ static const char *webcmd[] = { "firefox", "--new-window", "/home/trude/. static const Key keys[] = { /* Volume keys support */ - { 0, XF86XK_AudioLowerVolume, spawn, {.v = downvol } }, - { 0, XF86XK_AudioMute, spawn, {.v = mutevol } }, - { 0, XF86XK_AudioRaiseVolume, spawn, {.v = upvol } }, + { 0, XF86XK_AudioLowerVolume, spawn, SHCMD("/usr/bin/wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-; pkill -RTMIN+10 dwmblocks") }, + { 0, XF86XK_AudioMute, spawn, SHCMD("/usr/bin/wpctl set-volume @DEFAULT_AUDIO_SINK@ toggle; pkill -RTMIN+10 dwmblocks") }, + { 0, XF86XK_AudioRaiseVolume, spawn, SHCMD("/usr/bin/wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+; pkill -RTMIN+10 dwmblocks") }, /* modifier key function argument */ { MODKEY, XK_p, spawn, {.v = dmenucmd } }, diff --git a/programs/dwm/dwm b/programs/dwm/dwm index 1c54df209232edd4a681a38d75b10237eea79d9c..4b3c2aabd94b8acdc8e6373ca96ff980186a5676 100755 GIT binary patch literal 73008 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 -)wijqmv=v*jlqzBr{NZ9K_!`1q{ zX&tVwY!lv7KLAs&v=1^5o`o0XX% zDB2U-#&)z%Bnj$CZ`wI;!q-BQ2OGp}ZyJfS#fpp4o}Nz{qK9*F=L~V@bQLlW_AXJX zliCt-;xYPm2tCQNEKD7!t~k6k2sKGc!71AidFUydz0c=3><5vPO1lg(TG&!Qq*ISm zwwWKF|^Crg8w-D|CxDS8ZK_9?hM`Q~+ewPG(XhL4jJoQ|j`VEZv z5-I@9)#}HN?n^itWq9OZtG%$sMAP{F%-_Z(WE*|aF1y^Xff4I{*gMWj$)?w%Mrhb8 z&?dd0EGwU^`QnS!!2#QjQ#Q*(Bppn>WLIIGf*pBIupRs0!>kn?GHv=Sm7IkyQ|?{^ zg`nj2*)7`SesI{q9aiVnCSbMRyM$}aJssSU5?D8S%6DXt7;#pnvQ;EbyMy|St)Yda zs4Y2XcG;DSG*6Do?LN{DSX)cGh{l6-%4|8c3P7C~uBvnOXb9}bt&**A8Ku^?P*JpM z2ZSUjmuq1@2!;8`;Ah65;?6AaxH%%prE3iE-;Gt!%YWey>TO;Y-3VKGkgLCKS? zauQKiisFM)m=8{#(PAtY{MzKy#)Do>qpUr)2V0tw(>w{=Jgx&PhUYeXtPBwr=-J#2 zWrqbm;yHWXqi$38(1W_oo3^(pDNU49n>@ z=3>56x21gtuTny1WfGN(a_W!u5-W`(v>(>OywNoGYtSLwjhc6@JSbd%GApT?Mmo^$ zry9uGi)#^}K73FXRb&r+3`3c=JFFlI|4Z$8WE`~7ZXbh|ld)N&;aJu@GR+v61Ez2% zqeJt+SZSRN)K16ZKf$nFC<541S?~~*%$)`rqxRfSK!tZ?V|Nl>>4$e`W+F6-p$#q! zv-da^Nxr5XgscAt6u|Jba%-p(rt)vlI8wH*A~=KH%zY;AZG>Wfz7_5ku0F43*@QeH z=V?T#yEMzwAZb<7=W#rwZTB|GKY5#!5#8XnAh&|2z^i`aO*_NVvA-b479X0U>_>EA ztnamPg_u6<)Pn|Se1qEq)eUbfCS56so*o|TdVNbb2Bhi~pDz~-6i!vOAp7QASz zejfPeEcb&01A0GbK;6bNpw5}MH�BijS5zuKqKS&P!u|=rSmwm=w?(F@x5VVWBf@ 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

    Y~my1B}A#dAwe zLyy9%aJ@e|boY|QtqM9$PMJJ1ETd4~wo2=p7k*zBnZg*NBsU*V=e#4+w%DtEul91X zv8^t&!3A%0^sQ31!WCe>!p%9niRBPCRyyiImzHw;GCRasP z>-evYf+zCKxCc`ay{C$TJlfzbSVhcW^q|PCp{5hxSUD=%EJFI8!R&zANqFp>bcZ?S zJVMboil*)HC47ujCQ zXDNE7`?P~hLd6)Pe+9uqJ+#KG?@qm_dvFf|*8Aa*!{&CI9qan}y zm!d6>@E}L27Az4rHh|R4n{-%mI-JR=7TldUEkl`N%Rn)iO5Bl5Fw_=WeFxnQY1(iM zw+tEDn^W)%cWe^LUFTd(ayYu!fnv9dV*V=VGgi| z6R0aCQ^Q2sO4pD))glpSKzApWPR7v%+|SUT7A?)R45zDbtD43Q67=z>U-bMoeFP_; zj?nkH>5^2Q?>4C6l{}?4<3B#qF4dRk!X%aRa^j_{(Iln6cO&PmKg#kY4U{-d#$Uf3 z@UQU5}K_B$emxsXjex@2~$+VAL<_A6;_ZD5=OX z)amx~Hz0WH%X4~?_J}}k0LPIP*EmYv`f?5`>A8Ulb``8Fs=dDY=MEYMNf-L~{q{@j zBwzF|--nR&AyEvs;~S28##djSBb4+g8Lj8?%l{H+UitF8p``a+>8XsYU;Z&*INH~1 z14-$*#I9dZX*$2umz2)Aaimxas_%78Clze z$@kT^|G{tscw%H4q`uhEPr>GuFW-YZ%uh0|G|iO$N_|Ox>8mf#SDxkit-cA9dXirB z)tBcmn;WTDc+ZAObe{f5Jpt&sGr~lF^10378K&Y%i+rg+6KupOenxPqf1?1LnpRC6 zf~Z`wedeL$B+DONYQV)vzK{RXfAI^mfJxsCr}^7;yOH!(nJ6ZTeBq_ +#include +#include +#include +#include +#ifndef NO_X +#include +#endif +#ifdef __OpenBSD__ +#define SIGPLUS SIGUSR1+1 +#define SIGMINUS SIGUSR1-1 +#else +#define SIGPLUS SIGRTMIN +#define SIGMINUS SIGRTMIN +#endif +#define LENGTH(X) (sizeof(X) / sizeof (X[0])) +#define CMDLENGTH 50 +#define MIN( a, b ) ( ( a < b) ? a : b ) +#define STATUSLENGTH (LENGTH(blocks) * CMDLENGTH + 1) + +typedef struct { + char* icon; + char* command; + unsigned int interval; + unsigned int signal; +} Block; +#ifndef __OpenBSD__ +void dummysighandler(int num); +#endif +void sighandler(int num); +void getcmds(int time); +void getsigcmds(unsigned int signal); +void setupsignals(); +void sighandler(int signum); +int getstatus(char *str, char *last); +void statusloop(); +void termhandler(); +void pstdout(); +#ifndef NO_X +void setroot(); +static void (*writestatus) () = setroot; +static int setupX(); +static Display *dpy; +static int screen; +static Window root; +#else +static void (*writestatus) () = pstdout; +#endif + + +#include "blocks.h" + +static char statusbar[LENGTH(blocks)][CMDLENGTH] = {0}; +static char statusstr[2][STATUSLENGTH]; +static int statusContinue = 1; +// static int returnStatus = 0; + +//opens process *cmd and stores output in *output +void getcmd(const Block *block, char *output) +{ + strcpy(output, block->icon); + FILE *cmdf = popen(block->command, "r"); + if (!cmdf) + return; + int i = strlen(block->icon); + fgets(output+i, CMDLENGTH-i-delimLen, cmdf); + i = strlen(output); + if (i == 0) { + //return if block and command output are both empty + pclose(cmdf); + return; + } + //only chop off newline if one is present at the end + i = output[i-1] == '\n' ? i-1 : i; + if (delim[0] != '\0') { + strncpy(output+i, delim, delimLen); + } + else + output[i++] = '\0'; + pclose(cmdf); +} + +void getcmds(int time) +{ + const Block* current; + for (unsigned int i = 0; i < LENGTH(blocks); i++) { + current = blocks + i; + if ((current->interval != 0 && time % current->interval == 0) || time == -1) + getcmd(current,statusbar[i]); + } +} + +void getsigcmds(unsigned int signal) +{ + const Block *current; + for (unsigned int i = 0; i < LENGTH(blocks); i++) { + current = blocks + i; + if (current->signal == signal) + getcmd(current,statusbar[i]); + } +} + +void setupsignals() +{ +#ifndef __OpenBSD__ + /* initialize all real time signals with dummy handler */ + for (int i = SIGRTMIN; i <= SIGRTMAX; i++) + signal(i, dummysighandler); +#endif + + for (unsigned int i = 0; i < LENGTH(blocks); i++) { + if (blocks[i].signal > 0) + signal(SIGMINUS+blocks[i].signal, sighandler); + } + +} + +int getstatus(char *str, char *last) +{ + strcpy(last, str); + str[0] = '\0'; + for (unsigned int i = 0; i < LENGTH(blocks); i++) + strcat(str, statusbar[i]); + str[strlen(str)-strlen(delim)] = '\0'; + return strcmp(str, last);//0 if they are the same +} + +#ifndef NO_X +void setroot() +{ + if (!getstatus(statusstr[0], statusstr[1]))//Only set root if text has changed. + return; + XStoreName(dpy, root, statusstr[0]); + XFlush(dpy); +} + +int setupX() +{ + dpy = XOpenDisplay(NULL); + if (!dpy) { + fprintf(stderr, "dwmblocks: Failed to open display\n"); + return 0; + } + screen = DefaultScreen(dpy); + root = RootWindow(dpy, screen); + return 1; +} +#endif + +void pstdout() +{ + if (!getstatus(statusstr[0], statusstr[1]))//Only write out if text has changed. + return; + printf("%s\n",statusstr[0]); + fflush(stdout); +} + + +void statusloop() +{ + setupsignals(); + int i = 0; + getcmds(-1); + while (1) { + getcmds(i++); + writestatus(); + if (!statusContinue) + break; + sleep(1.0); + } +} + +#ifndef __OpenBSD__ +/* this signal handler should do nothing */ +void dummysighandler(int signum) +{ + return; +} +#endif + +void sighandler(int signum) +{ + getsigcmds(signum-SIGPLUS); + writestatus(); +} + +void termhandler() +{ + statusContinue = 0; +} + +int main(int argc, char** argv) +{ + for (int i = 0; i < argc; i++) {//Handle command line arguments + if (!strcmp("-d",argv[i])) + strncpy(delim, argv[++i], delimLen); + else if (!strcmp("-p",argv[i])) + writestatus = pstdout; + } +#ifndef NO_X + if (!setupX()) + return 1; +#endif + delimLen = MIN(delimLen, strlen(delim)); + delim[delimLen++] = '\0'; + signal(SIGTERM, termhandler); + signal(SIGINT, termhandler); + statusloop(); +#ifndef NO_X + XCloseDisplay(dpy); +#endif + return 0; +} diff --git a/programs/slock/slock b/programs/slock/slock index 8014b230c0d3558f0649219de7f4ef8e8c337cb0..205c964fc51716d98fa5b8fd5597b9af15a5b39f 100755 GIT binary patch literal 23192 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

    kr^Vd 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 - -Copyright 2016 Roy Freytag -Copyright 2016 Vincent Loupmon -Copyright 2016 Daniel Walter -Copyright 2016-2018 Ali H. Fardan -Copyright 2016 Jody Leonard -Copyright 2016-2018 Quentin Rameau -Copyright 2016 Mike Coddington -Copyright 2016-2018 Ivan J. -Copyright 2017 Tobias Stoeckmann -Copyright 2017-2018 Laslo Hunhold -Copyright 2018 Darron Anderson -Copyright 2018 Josuah Demangeon -Copyright 2018 Tobias Tschinkowitz -Copyright 2018 David Demelier -Copyright 2018-2012 Michael Buch -Copyright 2018 Ian Remmler -Copyright 2016-2019 Joerg Jung -Copyright 2019 Ryan Kes -Copyright 2019 Cem Keylan -Copyright 2019 Dimitris Papastamos -Copyright 2019-2022 Ingo Feinerer -Copyright 2020 Alexandre Ratchov -Copyright 2020 Mart Lubbers -Copyright 2020 Daniel Moch -Copyright 2022 Nickolas Raymond Kaczynski -Copyright 2022 Patrick Iacob -Copyright 2021-2022 Steven Ward - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF -OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/programs/slstatus/Makefile b/programs/slstatus/Makefile deleted file mode 100644 index 7a18274a..00000000 --- a/programs/slstatus/Makefile +++ /dev/null @@ -1,69 +0,0 @@ -# See LICENSE file for copyright and license details -# slstatus - suckless status monitor -.POSIX: - -include config.mk - -REQ = util -COM =\ - components/battery\ - components/cat\ - components/cpu\ - components/datetime\ - components/disk\ - components/entropy\ - components/hostname\ - components/ip\ - components/kernel_release\ - components/keyboard_indicators\ - components/keymap\ - components/load_avg\ - components/netspeeds\ - components/num_files\ - components/ram\ - components/run_command\ - components/swap\ - components/temperature\ - components/uptime\ - components/user\ - components/volume\ - components/wifi - -all: slstatus - -$(COM:=.o): config.mk $(REQ:=.h) slstatus.h -slstatus.o: slstatus.c slstatus.h arg.h config.h config.mk $(REQ:=.h) - -.c.o: - $(CC) -o $@ -c $(CPPFLAGS) $(CFLAGS) $< - -config.h: - cp config.def.h $@ - -slstatus: slstatus.o $(COM:=.o) $(REQ:=.o) - $(CC) -o $@ $(LDFLAGS) $(COM:=.o) $(REQ:=.o) slstatus.o $(LDLIBS) - -clean: - rm -f slstatus slstatus.o $(COM:=.o) $(REQ:=.o) slstatus-${VERSION}.tar.gz - -dist: - rm -rf "slstatus-$(VERSION)" - mkdir -p "slstatus-$(VERSION)/components" - cp -R LICENSE Makefile README config.mk config.def.h \ - arg.h slstatus.h slstatus.c $(REQ:=.c) $(REQ:=.h) \ - slstatus.1 "slstatus-$(VERSION)" - cp -R $(COM:=.c) "slstatus-$(VERSION)/components" - tar -cf - "slstatus-$(VERSION)" | gzip -c > "slstatus-$(VERSION).tar.gz" - rm -rf "slstatus-$(VERSION)" - -install: all - mkdir -p "$(DESTDIR)$(PREFIX)/bin" - cp -f slstatus "$(DESTDIR)$(PREFIX)/bin" - chmod 755 "$(DESTDIR)$(PREFIX)/bin/slstatus" - mkdir -p "$(DESTDIR)$(MANPREFIX)/man1" - cp -f slstatus.1 "$(DESTDIR)$(MANPREFIX)/man1" - chmod 644 "$(DESTDIR)$(MANPREFIX)/man1/slstatus.1" - -uninstall: - rm -f "$(DESTDIR)$(PREFIX)/bin/slstatus" - rm -f "$(DESTDIR)$(MANPREFIX)/man1/slstatus.1" diff --git a/programs/slstatus/README b/programs/slstatus/README deleted file mode 100644 index 12d38bf7..00000000 --- a/programs/slstatus/README +++ /dev/null @@ -1,65 +0,0 @@ -slstatus - suckless status -========================== -slstatus is a small tool for providing system status information to other -programs over the EWMH property of the root window (used by dwm(1)) or -standard input/output. It is designed to be as efficient as possible by -only issuing the minimum of system calls required. - - -Features --------- -- Battery percentage/state/time left -- Cat (read file) -- CPU usage -- CPU frequency -- Custom shell commands -- Date and time -- Disk status (free storage, percentage, total storage and used storage) -- Available entropy -- Username/GID/UID -- Hostname -- IP address (IPv4 and IPv6) -- Kernel version -- Keyboard indicators -- Keymap -- Load average -- Network speeds (RX and TX) -- Number of files in a directory (hint: Maildir) -- Memory status (free memory, percentage, total memory and used memory) -- Swap status (free swap, percentage, total swap and used swap) -- Temperature -- Uptime -- Volume percentage -- WiFi signal percentage and ESSID - - -Requirements ------------- -Currently slstatus works on FreeBSD, Linux and OpenBSD. -In order to build slstatus you need the Xlib header files. - -- For volume percentage on Linux the kernel module `snd-mixer-oss` must be - loaded. -- For volume percentage on FreeBSD, `sndio` must be installed. - - -Installation ------------- -Edit config.mk to match your local setup (slstatus is installed into the -/usr/local namespace by default). - -Afterwards enter the following command to build and install slstatus (if -necessary as root): - - make clean install - - -Running slstatus ----------------- -See the man page for details. - - -Configuration -------------- -slstatus can be customized by creating a custom config.h and (re)compiling the -source code. This keeps it fast, secure and simple. diff --git a/programs/slstatus/arg.h b/programs/slstatus/arg.h deleted file mode 100644 index 5f1f408f..00000000 --- a/programs/slstatus/arg.h +++ /dev/null @@ -1,33 +0,0 @@ -/* See LICENSE file for copyright and license details. */ -#ifndef ARG_H -#define ARG_H - -extern char *argv0; - -/* int main(int argc, char *argv[]) */ -#define ARGBEGIN for (argv0 = *argv, *argv ? (argc--, argv++) : ((void *)0); \ - *argv && (*argv)[0] == '-' && (*argv)[1]; argc--, argv++) { \ - int i_, argused_; \ - if ((*argv)[1] == '-' && !(*argv)[2]) { \ - argc--, argv++; \ - break; \ - } \ - for (i_ = 1, argused_ = 0; (*argv)[i_]; i_++) { \ - switch ((*argv)[i_]) -#define ARGEND if (argused_) { \ - if ((*argv)[i_ + 1]) { \ - break; \ - } else { \ - argc--, argv++; \ - break; \ - } \ - } \ - } \ - } -#define ARGC() ((*argv)[i_]) -#define ARGF_(x) (((*argv)[i_ + 1]) ? (argused_ = 1, &((*argv)[i_ + 1])) : \ - (*(argv + 1)) ? (argused_ = 1, *(argv + 1)) : (x)) -#define EARGF(x) ARGF_(((x), exit(1), (char *)0)) -#define ARGF() ARGF_((char *)0) - -#endif diff --git a/programs/slstatus/components/battery.c b/programs/slstatus/components/battery.c deleted file mode 100644 index 1c753f90..00000000 --- a/programs/slstatus/components/battery.c +++ /dev/null @@ -1,247 +0,0 @@ -/* See LICENSE file for copyright and license details. */ -#include -#include - -#include "../slstatus.h" -#include "../util.h" - -#if defined(__linux__) -/* - * https://www.kernel.org/doc/html/latest/power/power_supply_class.html - */ - #include - #include - #include - - #define POWER_SUPPLY_CAPACITY "/sys/class/power_supply/%s/capacity" - #define POWER_SUPPLY_STATUS "/sys/class/power_supply/%s/status" - #define POWER_SUPPLY_CHARGE "/sys/class/power_supply/%s/charge_now" - #define POWER_SUPPLY_ENERGY "/sys/class/power_supply/%s/energy_now" - #define POWER_SUPPLY_CURRENT "/sys/class/power_supply/%s/current_now" - #define POWER_SUPPLY_POWER "/sys/class/power_supply/%s/power_now" - - static const char * - pick(const char *bat, const char *f1, const char *f2, char *path, - size_t length) - { - if (esnprintf(path, length, f1, bat) > 0 && - access(path, R_OK) == 0) - return f1; - - if (esnprintf(path, length, f2, bat) > 0 && - access(path, R_OK) == 0) - return f2; - - return NULL; - } - - const char * - battery_perc(const char *bat) - { - int cap_perc; - char path[PATH_MAX]; - - if (esnprintf(path, sizeof(path), POWER_SUPPLY_CAPACITY, bat) < 0) - return NULL; - if (pscanf(path, "%d", &cap_perc) != 1) - return NULL; - - return bprintf("%d", cap_perc); - } - - const char * - battery_state(const char *bat) - { - static struct { - char *state; - char *symbol; - } map[] = { - { "Charging", "+" }, - { "Discharging", "-" }, - { "Full", "o" }, - { "Not charging", "o" }, - }; - size_t i; - char path[PATH_MAX], state[12]; - - if (esnprintf(path, sizeof(path), POWER_SUPPLY_STATUS, bat) < 0) - return NULL; - if (pscanf(path, "%12[a-zA-Z ]", state) != 1) - return NULL; - - for (i = 0; i < LEN(map); i++) - if (!strcmp(map[i].state, state)) - break; - - return (i == LEN(map)) ? "?" : map[i].symbol; - } - - const char * - battery_remaining(const char *bat) - { - uintmax_t charge_now, current_now, m, h; - double timeleft; - char path[PATH_MAX], state[12]; - - if (esnprintf(path, sizeof(path), POWER_SUPPLY_STATUS, bat) < 0) - return NULL; - if (pscanf(path, "%12[a-zA-Z ]", state) != 1) - return NULL; - - if (!pick(bat, POWER_SUPPLY_CHARGE, POWER_SUPPLY_ENERGY, path, - sizeof(path)) || - pscanf(path, "%ju", &charge_now) < 0) - return NULL; - - if (!strcmp(state, "Discharging")) { - if (!pick(bat, POWER_SUPPLY_CURRENT, POWER_SUPPLY_POWER, path, - sizeof(path)) || - pscanf(path, "%ju", ¤t_now) < 0) - return NULL; - - if (current_now == 0) - return NULL; - - timeleft = (double)charge_now / (double)current_now; - h = timeleft; - m = (timeleft - (double)h) * 60; - - return bprintf("%juh %jum", h, m); - } - - return ""; - } -#elif defined(__OpenBSD__) - #include - #include - #include - #include - - static int - load_apm_power_info(struct apm_power_info *apm_info) - { - int fd; - - fd = open("/dev/apm", O_RDONLY); - if (fd < 0) { - warn("open '/dev/apm':"); - return 0; - } - - memset(apm_info, 0, sizeof(struct apm_power_info)); - if (ioctl(fd, APM_IOC_GETPOWER, apm_info) < 0) { - warn("ioctl 'APM_IOC_GETPOWER':"); - close(fd); - return 0; - } - return close(fd), 1; - } - - const char * - battery_perc(const char *unused) - { - struct apm_power_info apm_info; - - if (load_apm_power_info(&apm_info)) - return bprintf("%d", apm_info.battery_life); - - return NULL; - } - - const char * - battery_state(const char *unused) - { - struct { - unsigned int state; - char *symbol; - } map[] = { - { APM_AC_ON, "+" }, - { APM_AC_OFF, "-" }, - }; - struct apm_power_info apm_info; - size_t i; - - if (load_apm_power_info(&apm_info)) { - for (i = 0; i < LEN(map); i++) - if (map[i].state == apm_info.ac_state) - break; - - return (i == LEN(map)) ? "?" : map[i].symbol; - } - - return NULL; - } - - const char * - battery_remaining(const char *unused) - { - struct apm_power_info apm_info; - unsigned int h, m; - - if (load_apm_power_info(&apm_info)) { - if (apm_info.ac_state != APM_AC_ON) { - h = apm_info.minutes_left / 60; - m = apm_info.minutes_left % 60; - return bprintf("%uh %02um", h, m); - } else { - return ""; - } - } - - return NULL; - } -#elif defined(__FreeBSD__) - #include - - #define BATTERY_LIFE "hw.acpi.battery.life" - #define BATTERY_STATE "hw.acpi.battery.state" - #define BATTERY_TIME "hw.acpi.battery.time" - - const char * - battery_perc(const char *unused) - { - int cap_perc; - size_t len; - - len = sizeof(cap_perc); - if (sysctlbyname(BATTERY_LIFE, &cap_perc, &len, NULL, 0) < 0 || !len) - return NULL; - - return bprintf("%d", cap_perc); - } - - const char * - battery_state(const char *unused) - { - int state; - size_t len; - - len = sizeof(state); - if (sysctlbyname(BATTERY_STATE, &state, &len, NULL, 0) < 0 || !len) - return NULL; - - switch (state) { - case 0: /* FALLTHROUGH */ - case 2: - return "+"; - case 1: - return "-"; - default: - return "?"; - } - } - - const char * - battery_remaining(const char *unused) - { - int rem; - size_t len; - - len = sizeof(rem); - if (sysctlbyname(BATTERY_TIME, &rem, &len, NULL, 0) < 0 || !len - || rem < 0) - return NULL; - - return bprintf("%uh %02um", rem / 60, rem % 60); - } -#endif diff --git a/programs/slstatus/components/cat.c b/programs/slstatus/components/cat.c deleted file mode 100644 index 07944cc9..00000000 --- a/programs/slstatus/components/cat.c +++ /dev/null @@ -1,32 +0,0 @@ -/* See LICENSE file for copyright and license details. */ -#include -#include - -#include "../slstatus.h" -#include "../util.h" - -const char * -cat(const char *path) -{ - char *f; - FILE *fp; - - if (!(fp = fopen(path, "r"))) { - warn("fopen '%s':", path); - return NULL; - } - - f = fgets(buf, sizeof(buf) - 1, fp); - if (fclose(fp) < 0) { - warn("fclose '%s':", path); - return NULL; - } - if (!f) - return NULL; - - if ((f = strrchr(buf, '\n'))) - f[0] = '\0'; - - return buf[0] ? buf : NULL; -} - diff --git a/programs/slstatus/components/cpu.c b/programs/slstatus/components/cpu.c deleted file mode 100644 index d0d03c71..00000000 --- a/programs/slstatus/components/cpu.c +++ /dev/null @@ -1,157 +0,0 @@ -/* See LICENSE file for copyright and license details. */ -#include -#include -#include - -#include "../slstatus.h" -#include "../util.h" - -#if defined(__linux__) - #define CPU_FREQ "/sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq" - - const char * - cpu_freq(const char *unused) - { - uintmax_t freq; - - /* in kHz */ - if (pscanf(CPU_FREQ, "%ju", &freq) != 1) - return NULL; - - return fmt_human(freq * 1000, 1000); - } - - const char * - cpu_perc(const char *unused) - { - static long double a[7]; - long double b[7], sum; - - memcpy(b, a, sizeof(b)); - /* cpu user nice system idle iowait irq softirq */ - if (pscanf("/proc/stat", "%*s %Lf %Lf %Lf %Lf %Lf %Lf %Lf", - &a[0], &a[1], &a[2], &a[3], &a[4], &a[5], &a[6]) - != 7) - return NULL; - - if (b[0] == 0) - return NULL; - - sum = (b[0] + b[1] + b[2] + b[3] + b[4] + b[5] + b[6]) - - (a[0] + a[1] + a[2] + a[3] + a[4] + a[5] + a[6]); - - if (sum == 0) - return NULL; - - return bprintf("%d", (int)(100 * - ((b[0] + b[1] + b[2] + b[5] + b[6]) - - (a[0] + a[1] + a[2] + a[5] + a[6])) / sum)); - } -#elif defined(__OpenBSD__) - #include - #include - #include - - const char * - cpu_freq(const char *unused) - { - int freq, mib[2]; - size_t size; - - mib[0] = CTL_HW; - mib[1] = HW_CPUSPEED; - - size = sizeof(freq); - - /* in MHz */ - if (sysctl(mib, 2, &freq, &size, NULL, 0) < 0) { - warn("sysctl 'HW_CPUSPEED':"); - return NULL; - } - - return fmt_human(freq * 1E6, 1000); - } - - const char * - cpu_perc(const char *unused) - { - int mib[2]; - static uintmax_t a[CPUSTATES]; - uintmax_t b[CPUSTATES], sum; - size_t size; - - mib[0] = CTL_KERN; - mib[1] = KERN_CPTIME; - - size = sizeof(a); - - memcpy(b, a, sizeof(b)); - if (sysctl(mib, 2, &a, &size, NULL, 0) < 0) { - warn("sysctl 'KERN_CPTIME':"); - return NULL; - } - if (b[0] == 0) - return NULL; - - sum = (a[CP_USER] + a[CP_NICE] + a[CP_SYS] + a[CP_INTR] + a[CP_IDLE]) - - (b[CP_USER] + b[CP_NICE] + b[CP_SYS] + b[CP_INTR] + b[CP_IDLE]); - - if (sum == 0) - return NULL; - - return bprintf("%d", 100 * - ((a[CP_USER] + a[CP_NICE] + a[CP_SYS] + - a[CP_INTR]) - - (b[CP_USER] + b[CP_NICE] + b[CP_SYS] + - b[CP_INTR])) / sum); - } -#elif defined(__FreeBSD__) - #include - #include - #include - - const char * - cpu_freq(const char *unused) - { - int freq; - size_t size; - - size = sizeof(freq); - /* in MHz */ - if (sysctlbyname("hw.clockrate", &freq, &size, NULL, 0) < 0 || !size) { - warn("sysctlbyname 'hw.clockrate':"); - return NULL; - } - - return fmt_human(freq * 1E6, 1000); - } - - const char * - cpu_perc(const char *unused) - { - size_t size; - static long a[CPUSTATES]; - long b[CPUSTATES], sum; - - size = sizeof(a); - memcpy(b, a, sizeof(b)); - if (sysctlbyname("kern.cp_time", &a, &size, NULL, 0) < 0 || !size) { - warn("sysctlbyname 'kern.cp_time':"); - return NULL; - } - if (b[0] == 0) - return NULL; - - sum = (a[CP_USER] + a[CP_NICE] + a[CP_SYS] + a[CP_INTR] + a[CP_IDLE]) - - (b[CP_USER] + b[CP_NICE] + b[CP_SYS] + b[CP_INTR] + b[CP_IDLE]); - - if (sum == 0) - return NULL; - - return bprintf("%d", 100 * - ((a[CP_USER] + a[CP_NICE] + a[CP_SYS] + - a[CP_INTR]) - - (b[CP_USER] + b[CP_NICE] + b[CP_SYS] + - b[CP_INTR])) / sum); - } -#endif diff --git a/programs/slstatus/components/datetime.c b/programs/slstatus/components/datetime.c deleted file mode 100644 index 5b10dafb..00000000 --- a/programs/slstatus/components/datetime.c +++ /dev/null @@ -1,20 +0,0 @@ -/* See LICENSE file for copyright and license details. */ -#include -#include - -#include "../slstatus.h" -#include "../util.h" - -const char * -datetime(const char *fmt) -{ - time_t t; - - t = time(NULL); - if (!strftime(buf, sizeof(buf), fmt, localtime(&t))) { - warn("strftime: Result string exceeds buffer size"); - return NULL; - } - - return buf; -} diff --git a/programs/slstatus/components/disk.c b/programs/slstatus/components/disk.c deleted file mode 100644 index e19a6935..00000000 --- a/programs/slstatus/components/disk.c +++ /dev/null @@ -1,59 +0,0 @@ -/* See LICENSE file for copyright and license details. */ -#include -#include - -#include "../slstatus.h" -#include "../util.h" - -const char * -disk_free(const char *path) -{ - struct statvfs fs; - - if (statvfs(path, &fs) < 0) { - warn("statvfs '%s':", path); - return NULL; - } - - return fmt_human(fs.f_frsize * fs.f_bavail, 1024); -} - -const char * -disk_perc(const char *path) -{ - struct statvfs fs; - - if (statvfs(path, &fs) < 0) { - warn("statvfs '%s':", path); - return NULL; - } - - return bprintf("%d", (int)(100 * - (1 - ((double)fs.f_bavail / (double)fs.f_blocks)))); -} - -const char * -disk_total(const char *path) -{ - struct statvfs fs; - - if (statvfs(path, &fs) < 0) { - warn("statvfs '%s':", path); - return NULL; - } - - return fmt_human(fs.f_frsize * fs.f_blocks, 1024); -} - -const char * -disk_used(const char *path) -{ - struct statvfs fs; - - if (statvfs(path, &fs) < 0) { - warn("statvfs '%s':", path); - return NULL; - } - - return fmt_human(fs.f_frsize * (fs.f_blocks - fs.f_bfree), 1024); -} diff --git a/programs/slstatus/components/entropy.c b/programs/slstatus/components/entropy.c deleted file mode 100644 index 65010b02..00000000 --- a/programs/slstatus/components/entropy.c +++ /dev/null @@ -1,29 +0,0 @@ -/* See LICENSE file for copyright and license details. */ -#include "../slstatus.h" -#if defined(__linux__) - #include - #include - - #include "../util.h" - - #define ENTROPY_AVAIL "/proc/sys/kernel/random/entropy_avail" - - const char * - entropy(const char *unused) - { - uintmax_t num; - - if (pscanf(ENTROPY_AVAIL, "%ju", &num) != 1) - return NULL; - - return bprintf("%ju", num); - } -#elif defined(__OpenBSD__) | defined(__FreeBSD__) - const char * - entropy(const char *unused) - { - // https://www.unicode.org/charts/PDF/U2200.pdf - /* Unicode Character 'INFINITY' (U+221E) */ - return "\u221E"; - } -#endif diff --git a/programs/slstatus/components/hostname.c b/programs/slstatus/components/hostname.c deleted file mode 100644 index dab8b632..00000000 --- a/programs/slstatus/components/hostname.c +++ /dev/null @@ -1,17 +0,0 @@ -/* See LICENSE file for copyright and license details. */ -#include -#include - -#include "../slstatus.h" -#include "../util.h" - -const char * -hostname(const char *unused) -{ - if (gethostname(buf, sizeof(buf)) < 0) { - warn("gethostbyname:"); - return NULL; - } - - return buf; -} diff --git a/programs/slstatus/components/ip.c b/programs/slstatus/components/ip.c deleted file mode 100644 index 94765494..00000000 --- a/programs/slstatus/components/ip.c +++ /dev/null @@ -1,61 +0,0 @@ -/* See LICENSE file for copyright and license details. */ -#include -#include -#include -#include -#if defined(__OpenBSD__) - #include - #include -#elif defined(__FreeBSD__) - #include - #include -#endif - -#include "../slstatus.h" -#include "../util.h" - -static const char * -ip(const char *interface, unsigned short sa_family) -{ - struct ifaddrs *ifaddr, *ifa; - int s; - char host[NI_MAXHOST]; - - if (getifaddrs(&ifaddr) < 0) { - warn("getifaddrs:"); - return NULL; - } - - for (ifa = ifaddr; ifa != NULL; ifa = ifa->ifa_next) { - if (!ifa->ifa_addr) - continue; - - s = getnameinfo(ifa->ifa_addr, sizeof(struct sockaddr_in6), - host, NI_MAXHOST, NULL, 0, NI_NUMERICHOST); - if (!strcmp(ifa->ifa_name, interface) && - (ifa->ifa_addr->sa_family == sa_family)) { - freeifaddrs(ifaddr); - if (s != 0) { - warn("getnameinfo: %s", gai_strerror(s)); - return NULL; - } - return bprintf("%s", host); - } - } - - freeifaddrs(ifaddr); - - return NULL; -} - -const char * -ipv4(const char *interface) -{ - return ip(interface, AF_INET); -} - -const char * -ipv6(const char *interface) -{ - return ip(interface, AF_INET6); -} diff --git a/programs/slstatus/components/kernel_release.c b/programs/slstatus/components/kernel_release.c deleted file mode 100644 index 36a6a443..00000000 --- a/programs/slstatus/components/kernel_release.c +++ /dev/null @@ -1,19 +0,0 @@ -/* See LICENSE file for copyright and license details. */ -#include -#include - -#include "../slstatus.h" -#include "../util.h" - -const char * -kernel_release(const char *unused) -{ - struct utsname udata; - - if (uname(&udata) < 0) { - warn("uname:"); - return NULL; - } - - return bprintf("%s", udata.release); -} diff --git a/programs/slstatus/components/keyboard_indicators.c b/programs/slstatus/components/keyboard_indicators.c deleted file mode 100644 index 5f62bb75..00000000 --- a/programs/slstatus/components/keyboard_indicators.c +++ /dev/null @@ -1,50 +0,0 @@ -/* See LICENSE file for copyright and license details. */ -#include -#include -#include -#include - -#include "../slstatus.h" -#include "../util.h" - -/* - * fmt consists of uppercase or lowercase 'c' for caps lock and/or 'n' for num - * lock, each optionally followed by '?', in the order of indicators desired. - * If followed by '?', the letter with case preserved is included in the output - * if the corresponding indicator is on. Otherwise, the letter is always - * included, lowercase when off and uppercase when on. - */ -const char * -keyboard_indicators(const char *fmt) -{ - Display *dpy; - XKeyboardState state; - size_t fmtlen, i, n; - int togglecase, isset; - char key; - - if (!(dpy = XOpenDisplay(NULL))) { - warn("XOpenDisplay: Failed to open display"); - return NULL; - } - XGetKeyboardControl(dpy, &state); - XCloseDisplay(dpy); - - fmtlen = strnlen(fmt, 4); - for (i = n = 0; i < fmtlen; i++) { - key = tolower(fmt[i]); - if (key != 'c' && key != 'n') - continue; - - togglecase = (i + 1 >= fmtlen || fmt[i + 1] != '?'); - isset = (state.led_mask & (1 << (key == 'n'))); - - if (togglecase) - buf[n++] = isset ? toupper(key) : key; - else if (isset) - buf[n++] = fmt[i]; - } - - buf[n] = 0; - return buf; -} diff --git a/programs/slstatus/components/keymap.c b/programs/slstatus/components/keymap.c deleted file mode 100644 index f8a2a476..00000000 --- a/programs/slstatus/components/keymap.c +++ /dev/null @@ -1,86 +0,0 @@ -/* See LICENSE file for copyright and license details. */ -#include -#include -#include -#include -#include - -#include "../slstatus.h" -#include "../util.h" - -static int -valid_layout_or_variant(char *sym) -{ - size_t i; - /* invalid symbols from xkb rules config */ - static const char *invalid[] = { "evdev", "inet", "pc", "base" }; - - for (i = 0; i < LEN(invalid); i++) - if (!strncmp(sym, invalid[i], strlen(invalid[i]))) - return 0; - - return 1; -} - -static char * -get_layout(char *syms, int grp_num) -{ - char *tok, *layout; - int grp; - - layout = NULL; - tok = strtok(syms, "+:"); - for (grp = 0; tok && grp <= grp_num; tok = strtok(NULL, "+:")) { - if (!valid_layout_or_variant(tok)) { - continue; - } else if (strlen(tok) == 1 && isdigit(tok[0])) { - /* ignore :2, :3, :4 (additional layout groups) */ - continue; - } - layout = tok; - grp++; - } - - return layout; -} - -const char * -keymap(const char *unused) -{ - Display *dpy; - XkbDescRec *desc; - XkbStateRec state; - char *symbols; - const char *layout; - - layout = NULL; - - if (!(dpy = XOpenDisplay(NULL))) { - warn("XOpenDisplay: Failed to open display"); - return NULL; - } - if (!(desc = XkbAllocKeyboard())) { - warn("XkbAllocKeyboard: Failed to allocate keyboard"); - goto end; - } - if (XkbGetNames(dpy, XkbSymbolsNameMask, desc)) { - warn("XkbGetNames: Failed to retrieve key symbols"); - goto end; - } - if (XkbGetState(dpy, XkbUseCoreKbd, &state)) { - warn("XkbGetState: Failed to retrieve keyboard state"); - goto end; - } - if (!(symbols = XGetAtomName(dpy, desc->names->symbols))) { - warn("XGetAtomName: Failed to get atom name"); - goto end; - } - layout = bprintf("%s", get_layout(symbols, state.group)); - XFree(symbols); -end: - XkbFreeKeyboard(desc, XkbSymbolsNameMask, 1); - if (XCloseDisplay(dpy)) - warn("XCloseDisplay: Failed to close display"); - - return layout; -} diff --git a/programs/slstatus/components/load_avg.c b/programs/slstatus/components/load_avg.c deleted file mode 100644 index f278a405..00000000 --- a/programs/slstatus/components/load_avg.c +++ /dev/null @@ -1,19 +0,0 @@ -/* See LICENSE file for copyright and license details. */ -#include -#include - -#include "../slstatus.h" -#include "../util.h" - -const char * -load_avg(const char *unused) -{ - double avgs[3]; - - if (getloadavg(avgs, 3) < 0) { - warn("getloadavg: Failed to obtain load average"); - return NULL; - } - - return bprintf("%.2f %.2f %.2f", avgs[0], avgs[1], avgs[2]); -} diff --git a/programs/slstatus/components/netspeeds.c b/programs/slstatus/components/netspeeds.c deleted file mode 100644 index cde6fa93..00000000 --- a/programs/slstatus/components/netspeeds.c +++ /dev/null @@ -1,129 +0,0 @@ -/* See LICENSE file for copyright and license details. */ -#include -#include - -#include "../slstatus.h" -#include "../util.h" - -#if defined(__linux__) - #include - - #define NET_RX_BYTES "/sys/class/net/%s/statistics/rx_bytes" - #define NET_TX_BYTES "/sys/class/net/%s/statistics/tx_bytes" - - const char * - netspeed_rx(const char *interface) - { - uintmax_t oldrxbytes; - static uintmax_t rxbytes; - extern const unsigned int interval; - char path[PATH_MAX]; - - oldrxbytes = rxbytes; - - if (esnprintf(path, sizeof(path), NET_RX_BYTES, interface) < 0) - return NULL; - if (pscanf(path, "%ju", &rxbytes) != 1) - return NULL; - if (oldrxbytes == 0) - return NULL; - - return fmt_human((rxbytes - oldrxbytes) * 1000 / interval, - 1024); - } - - const char * - netspeed_tx(const char *interface) - { - uintmax_t oldtxbytes; - static uintmax_t txbytes; - extern const unsigned int interval; - char path[PATH_MAX]; - - oldtxbytes = txbytes; - - if (esnprintf(path, sizeof(path), NET_TX_BYTES, interface) < 0) - return NULL; - if (pscanf(path, "%ju", &txbytes) != 1) - return NULL; - if (oldtxbytes == 0) - return NULL; - - return fmt_human((txbytes - oldtxbytes) * 1000 / interval, - 1024); - } -#elif defined(__OpenBSD__) | defined(__FreeBSD__) - #include - #include - #include - #include - #include - - const char * - netspeed_rx(const char *interface) - { - struct ifaddrs *ifal, *ifa; - struct if_data *ifd; - uintmax_t oldrxbytes; - static uintmax_t rxbytes; - extern const unsigned int interval; - int if_ok = 0; - - oldrxbytes = rxbytes; - - if (getifaddrs(&ifal) < 0) { - warn("getifaddrs failed"); - return NULL; - } - rxbytes = 0; - for (ifa = ifal; ifa; ifa = ifa->ifa_next) - if (!strcmp(ifa->ifa_name, interface) && - (ifd = (struct if_data *)ifa->ifa_data)) - rxbytes += ifd->ifi_ibytes, if_ok = 1; - - freeifaddrs(ifal); - if (!if_ok) { - warn("reading 'if_data' failed"); - return NULL; - } - if (oldrxbytes == 0) - return NULL; - - return fmt_human((rxbytes - oldrxbytes) * 1000 / interval, - 1024); - } - - const char * - netspeed_tx(const char *interface) - { - struct ifaddrs *ifal, *ifa; - struct if_data *ifd; - uintmax_t oldtxbytes; - static uintmax_t txbytes; - extern const unsigned int interval; - int if_ok = 0; - - oldtxbytes = txbytes; - - if (getifaddrs(&ifal) < 0) { - warn("getifaddrs failed"); - return NULL; - } - txbytes = 0; - for (ifa = ifal; ifa; ifa = ifa->ifa_next) - if (!strcmp(ifa->ifa_name, interface) && - (ifd = (struct if_data *)ifa->ifa_data)) - txbytes += ifd->ifi_obytes, if_ok = 1; - - freeifaddrs(ifal); - if (!if_ok) { - warn("reading 'if_data' failed"); - return NULL; - } - if (oldtxbytes == 0) - return NULL; - - return fmt_human((txbytes - oldtxbytes) * 1000 / interval, - 1024); - } -#endif diff --git a/programs/slstatus/components/num_files.c b/programs/slstatus/components/num_files.c deleted file mode 100644 index df0acd1f..00000000 --- a/programs/slstatus/components/num_files.c +++ /dev/null @@ -1,32 +0,0 @@ -/* See LICENSE file for copyright and license details. */ -#include -#include -#include - -#include "../slstatus.h" -#include "../util.h" - -const char * -num_files(const char *path) -{ - struct dirent *dp; - DIR *dir; - int num; - - if (!(dir = opendir(path))) { - warn("opendir '%s':", path); - return NULL; - } - - num = 0; - while ((dp = readdir(dir))) { - if (!strcmp(dp->d_name, ".") || !strcmp(dp->d_name, "..")) - continue; /* skip self and parent */ - - num++; - } - - closedir(dir); - - return bprintf("%d", num); -} diff --git a/programs/slstatus/components/ram.c b/programs/slstatus/components/ram.c deleted file mode 100644 index 15c4b74f..00000000 --- a/programs/slstatus/components/ram.c +++ /dev/null @@ -1,212 +0,0 @@ -/* See LICENSE file for copyright and license details. */ -#include - -#include "../slstatus.h" -#include "../util.h" - -#if defined(__linux__) - #include - - const char * - ram_free(const char *unused) - { - uintmax_t free; - - if (pscanf("/proc/meminfo", - "MemTotal: %ju kB\n" - "MemFree: %ju kB\n" - "MemAvailable: %ju kB\n", - &free, &free, &free) != 3) - return NULL; - - return fmt_human(free * 1024, 1024); - } - - const char * - ram_perc(const char *unused) - { - uintmax_t total, free, buffers, cached; - int percent; - - if (pscanf("/proc/meminfo", - "MemTotal: %ju kB\n" - "MemFree: %ju kB\n" - "MemAvailable: %ju kB\n" - "Buffers: %ju kB\n" - "Cached: %ju kB\n", - &total, &free, &buffers, &buffers, &cached) != 5) - return NULL; - - if (total == 0) - return NULL; - - percent = 100 * ((total - free) - (buffers + cached)) / total; - return bprintf("%d", percent); - } - - const char * - ram_total(const char *unused) - { - uintmax_t total; - - if (pscanf("/proc/meminfo", "MemTotal: %ju kB\n", &total) - != 1) - return NULL; - - return fmt_human(total * 1024, 1024); - } - - const char * - ram_used(const char *unused) - { - uintmax_t total, free, buffers, cached, used; - - if (pscanf("/proc/meminfo", - "MemTotal: %ju kB\n" - "MemFree: %ju kB\n" - "MemAvailable: %ju kB\n" - "Buffers: %ju kB\n" - "Cached: %ju kB\n", - &total, &free, &buffers, &buffers, &cached) != 5) - return NULL; - - used = (total - free - buffers - cached); - return fmt_human(used * 1024, 1024); - } -#elif defined(__OpenBSD__) - #include - #include - #include - #include - - #define LOG1024 10 - #define pagetok(size, pageshift) (size_t)(size << (pageshift - LOG1024)) - - inline int - load_uvmexp(struct uvmexp *uvmexp) - { - int uvmexp_mib[] = {CTL_VM, VM_UVMEXP}; - size_t size; - - size = sizeof(*uvmexp); - - if (sysctl(uvmexp_mib, 2, uvmexp, &size, NULL, 0) >= 0) - return 1; - - return 0; - } - - const char * - ram_free(const char *unused) - { - struct uvmexp uvmexp; - int free_pages; - - if (!load_uvmexp(&uvmexp)) - return NULL; - - free_pages = uvmexp.npages - uvmexp.active; - return fmt_human(pagetok(free_pages, uvmexp.pageshift) * - 1024, 1024); - } - - const char * - ram_perc(const char *unused) - { - struct uvmexp uvmexp; - int percent; - - if (!load_uvmexp(&uvmexp)) - return NULL; - - percent = uvmexp.active * 100 / uvmexp.npages; - return bprintf("%d", percent); - } - - const char * - ram_total(const char *unused) - { - struct uvmexp uvmexp; - - if (!load_uvmexp(&uvmexp)) - return NULL; - - return fmt_human(pagetok(uvmexp.npages, - uvmexp.pageshift) * 1024, 1024); - } - - const char * - ram_used(const char *unused) - { - struct uvmexp uvmexp; - - if (!load_uvmexp(&uvmexp)) - return NULL; - - return fmt_human(pagetok(uvmexp.active, - uvmexp.pageshift) * 1024, 1024); - } -#elif defined(__FreeBSD__) - #include - #include - #include - #include - - const char * - ram_free(const char *unused) { - struct vmtotal vm_stats; - int mib[] = {CTL_VM, VM_TOTAL}; - size_t len; - - len = sizeof(struct vmtotal); - if (sysctl(mib, 2, &vm_stats, &len, NULL, 0) < 0 - || !len) - return NULL; - - return fmt_human(vm_stats.t_free * getpagesize(), 1024); - } - - const char * - ram_total(const char *unused) { - unsigned int npages; - size_t len; - - len = sizeof(npages); - if (sysctlbyname("vm.stats.vm.v_page_count", - &npages, &len, NULL, 0) < 0 || !len) - return NULL; - - return fmt_human(npages * getpagesize(), 1024); - } - - const char * - ram_perc(const char *unused) { - unsigned int npages; - unsigned int active; - size_t len; - - len = sizeof(npages); - if (sysctlbyname("vm.stats.vm.v_page_count", - &npages, &len, NULL, 0) < 0 || !len) - return NULL; - - if (sysctlbyname("vm.stats.vm.v_active_count", - &active, &len, NULL, 0) < 0 || !len) - return NULL; - - return bprintf("%d", active * 100 / npages); - } - - const char * - ram_used(const char *unused) { - unsigned int active; - size_t len; - - len = sizeof(active); - if (sysctlbyname("vm.stats.vm.v_active_count", - &active, &len, NULL, 0) < 0 || !len) - return NULL; - - return fmt_human(active * getpagesize(), 1024); - } -#endif diff --git a/programs/slstatus/components/run_command.c b/programs/slstatus/components/run_command.c deleted file mode 100644 index 93bf6da7..00000000 --- a/programs/slstatus/components/run_command.c +++ /dev/null @@ -1,31 +0,0 @@ -/* See LICENSE file for copyright and license details. */ -#include -#include - -#include "../slstatus.h" -#include "../util.h" - -const char * -run_command(const char *cmd) -{ - char *p; - FILE *fp; - - if (!(fp = popen(cmd, "r"))) { - warn("popen '%s':", cmd); - return NULL; - } - - p = fgets(buf, sizeof(buf) - 1, fp); - if (pclose(fp) < 0) { - warn("pclose '%s':", cmd); - return NULL; - } - if (!p) - return NULL; - - if ((p = strrchr(buf, '\n'))) - p[0] = '\0'; - - return buf[0] ? buf : NULL; -} diff --git a/programs/slstatus/components/swap.c b/programs/slstatus/components/swap.c deleted file mode 100644 index f270d930..00000000 --- a/programs/slstatus/components/swap.c +++ /dev/null @@ -1,274 +0,0 @@ -/* See LICENSE file for copyright and license details. */ -#include -#include -#include -#include - -#include "../slstatus.h" -#include "../util.h" - -#if defined(__linux__) - static int - get_swap_info(long *s_total, long *s_free, long *s_cached) - { - FILE *fp; - struct { - const char *name; - const size_t len; - long *var; - } ent[] = { - { "SwapTotal", sizeof("SwapTotal") - 1, s_total }, - { "SwapFree", sizeof("SwapFree") - 1, s_free }, - { "SwapCached", sizeof("SwapCached") - 1, s_cached }, - }; - size_t line_len = 0, i, left; - char *line = NULL; - - /* get number of fields we want to extract */ - for (i = 0, left = 0; i < LEN(ent); i++) - if (ent[i].var) - left++; - - if (!(fp = fopen("/proc/meminfo", "r"))) { - warn("fopen '/proc/meminfo':"); - return 1; - } - - /* read file line by line and extract field information */ - while (left > 0 && getline(&line, &line_len, fp) >= 0) { - for (i = 0; i < LEN(ent); i++) { - if (ent[i].var && - !strncmp(line, ent[i].name, ent[i].len)) { - sscanf(line + ent[i].len + 1, - "%ld kB\n", ent[i].var); - left--; - break; - } - } - } - free(line); - if (ferror(fp)) { - warn("getline '/proc/meminfo':"); - return 1; - } - - fclose(fp); - return 0; - } - - const char * - swap_free(const char *unused) - { - long free; - - if (get_swap_info(NULL, &free, NULL)) - return NULL; - - return fmt_human(free * 1024, 1024); - } - - const char * - swap_perc(const char *unused) - { - long total, free, cached; - - if (get_swap_info(&total, &free, &cached) || total == 0) - return NULL; - - return bprintf("%d", 100 * (total - free - cached) / total); - } - - const char * - swap_total(const char *unused) - { - long total; - - if (get_swap_info(&total, NULL, NULL)) - return NULL; - - return fmt_human(total * 1024, 1024); - } - - const char * - swap_used(const char *unused) - { - long total, free, cached; - - if (get_swap_info(&total, &free, &cached)) - return NULL; - - return fmt_human((total - free - cached) * 1024, 1024); - } -#elif defined(__OpenBSD__) - #include - #include - #include - #include - - static int - getstats(int *total, int *used) - { - struct swapent *sep, *fsep; - int rnswap, nswap, i; - - if ((nswap = swapctl(SWAP_NSWAP, 0, 0)) < 1) { - warn("swaptctl 'SWAP_NSWAP':"); - return 1; - } - if (!(fsep = sep = calloc(nswap, sizeof(*sep)))) { - warn("calloc 'nswap':"); - return 1; - } - if ((rnswap = swapctl(SWAP_STATS, (void *)sep, nswap)) < 0) { - warn("swapctl 'SWAP_STATA':"); - return 1; - } - if (nswap != rnswap) { - warn("getstats: SWAP_STATS != SWAP_NSWAP"); - return 1; - } - - *total = 0; - *used = 0; - - for (i = 0; i < rnswap; i++) { - *total += sep->se_nblks >> 1; - *used += sep->se_inuse >> 1; - } - - free(fsep); - - return 0; - } - - const char * - swap_free(const char *unused) - { - int total, used; - - if (getstats(&total, &used)) - return NULL; - - return fmt_human((total - used) * 1024, 1024); - } - - const char * - swap_perc(const char *unused) - { - int total, used; - - if (getstats(&total, &used)) - return NULL; - - if (total == 0) - return NULL; - - return bprintf("%d", 100 * used / total); - } - - const char * - swap_total(const char *unused) - { - int total, used; - - if (getstats(&total, &used)) - return NULL; - - return fmt_human(total * 1024, 1024); - } - - const char * - swap_used(const char *unused) - { - int total, used; - - if (getstats(&total, &used)) - return NULL; - - return fmt_human(used * 1024, 1024); - } -#elif defined(__FreeBSD__) - #include - #include - #include - #include - #include - - static int getswapinfo(struct kvm_swap *swap_info, size_t size) - { - kvm_t *kd; - - kd = kvm_openfiles(NULL, "/dev/null", NULL, 0, NULL); - if (kd == NULL) { - warn("kvm_openfiles '/dev/null':"); - return 0; - } - - if (kvm_getswapinfo(kd, swap_info, size, 0 /* Unused flags */) < 0) { - warn("kvm_getswapinfo:"); - kvm_close(kd); - return 0; - } - - kvm_close(kd); - return 1; - } - - const char * - swap_free(const char *unused) - { - struct kvm_swap swap_info[1]; - long used, total; - - if (!getswapinfo(swap_info, 1)) - return NULL; - - total = swap_info[0].ksw_total; - used = swap_info[0].ksw_used; - - return fmt_human((total - used) * getpagesize(), 1024); - } - - const char * - swap_perc(const char *unused) - { - struct kvm_swap swap_info[1]; - long used, total; - - if (!getswapinfo(swap_info, 1)) - return NULL; - - total = swap_info[0].ksw_total; - used = swap_info[0].ksw_used; - - return bprintf("%d", used * 100 / total); - } - - const char * - swap_total(const char *unused) - { - struct kvm_swap swap_info[1]; - long total; - - if (!getswapinfo(swap_info, 1)) - return NULL; - - total = swap_info[0].ksw_total; - - return fmt_human(total * getpagesize(), 1024); - } - - const char * - swap_used(const char *unused) - { - struct kvm_swap swap_info[1]; - long used; - - if (!getswapinfo(swap_info, 1)) - return NULL; - - used = swap_info[0].ksw_used; - - return fmt_human(used * getpagesize(), 1024); - } -#endif diff --git a/programs/slstatus/components/temperature.c b/programs/slstatus/components/temperature.c deleted file mode 100644 index 7cf13944..00000000 --- a/programs/slstatus/components/temperature.c +++ /dev/null @@ -1,73 +0,0 @@ -/* See LICENSE file for copyright and license details. */ -#include - -#include "../slstatus.h" -#include "../util.h" - - -#if defined(__linux__) - #include - - const char * - temp(const char *file) - { - uintmax_t temp; - - if (pscanf(file, "%ju", &temp) != 1) - return NULL; - - return bprintf("%ju", temp / 1000); - } -#elif defined(__OpenBSD__) - #include - #include /* before for struct timeval */ - #include - #include - - const char * - temp(const char *unused) - { - int mib[5]; - size_t size; - struct sensor temp; - - mib[0] = CTL_HW; - mib[1] = HW_SENSORS; - mib[2] = 0; /* cpu0 */ - mib[3] = SENSOR_TEMP; - mib[4] = 0; /* temp0 */ - - size = sizeof(temp); - - if (sysctl(mib, 5, &temp, &size, NULL, 0) < 0) { - warn("sysctl 'SENSOR_TEMP':"); - return NULL; - } - - /* kelvin to celsius */ - return bprintf("%d", (int)((float)(temp.value-273150000) / 1E6)); - } -#elif defined(__FreeBSD__) - #include - #include - #include - - #define ACPI_TEMP "hw.acpi.thermal.%s.temperature" - - const char * - temp(const char *zone) - { - char buf[256]; - int temp; - size_t len; - - len = sizeof(temp); - snprintf(buf, sizeof(buf), ACPI_TEMP, zone); - if (sysctlbyname(buf, &temp, &len, NULL, 0) < 0 - || !len) - return NULL; - - /* kelvin to decimal celcius */ - return bprintf("%d.%d", (temp - 2731) / 10, abs((temp - 2731) % 10)); - } -#endif diff --git a/programs/slstatus/components/uptime.c b/programs/slstatus/components/uptime.c deleted file mode 100644 index 6227f731..00000000 --- a/programs/slstatus/components/uptime.c +++ /dev/null @@ -1,34 +0,0 @@ -/* See LICENSE file for copyright and license details. */ -#include -#include -#include - -#include "../slstatus.h" -#include "../util.h" - -#if defined(CLOCK_BOOTTIME) - #define UPTIME_FLAG CLOCK_BOOTTIME -#elif defined(CLOCK_UPTIME) - #define UPTIME_FLAG CLOCK_UPTIME -#else - #define UPTIME_FLAG CLOCK_MONOTONIC -#endif - -const char * -uptime(const char *unused) -{ - char warn_buf[256]; - uintmax_t h, m; - struct timespec uptime; - - if (clock_gettime(UPTIME_FLAG, &uptime) < 0) { - snprintf(warn_buf, sizeof(warn_buf), "clock_gettime %d", UPTIME_FLAG); - warn(warn_buf); - return NULL; - } - - h = uptime.tv_sec / 3600; - m = uptime.tv_sec % 3600 / 60; - - return bprintf("%juh %jum", h, m); -} diff --git a/programs/slstatus/components/user.c b/programs/slstatus/components/user.c deleted file mode 100644 index 35174953..00000000 --- a/programs/slstatus/components/user.c +++ /dev/null @@ -1,33 +0,0 @@ -/* See LICENSE file for copyright and license details. */ -#include -#include -#include -#include - -#include "../slstatus.h" -#include "../util.h" - -const char * -gid(const char *unused) -{ - return bprintf("%d", getgid()); -} - -const char * -username(const char *unused) -{ - struct passwd *pw; - - if (!(pw = getpwuid(geteuid()))) { - warn("getpwuid '%d':", geteuid()); - return NULL; - } - - return bprintf("%s", pw->pw_name); -} - -const char * -uid(const char *unused) -{ - return bprintf("%d", geteuid()); -} diff --git a/programs/slstatus/components/volume.c b/programs/slstatus/components/volume.c deleted file mode 100644 index 6cec5565..00000000 --- a/programs/slstatus/components/volume.c +++ /dev/null @@ -1,219 +0,0 @@ -/* See LICENSE file for copyright and license details. */ -#include -#include -#include -#include -#include - -#include "../slstatus.h" -#include "../util.h" - -#if defined(__OpenBSD__) | defined(__FreeBSD__) - #include - #include - #include - #include - - struct control { - LIST_ENTRY(control) next; - unsigned int addr; - #define CTRL_NONE 0 - #define CTRL_LEVEL 1 - #define CTRL_MUTE 2 - unsigned int type; - unsigned int maxval; - unsigned int val; - }; - - static LIST_HEAD(, control) controls = LIST_HEAD_INITIALIZER(controls); - static struct pollfd *pfds; - static struct sioctl_hdl *hdl; - static int initialized; - - /* - * Call-back to obtain the description of all audio controls. - */ - static void - ondesc(void *unused, struct sioctl_desc *desc, int val) - { - struct control *c, *ctmp; - unsigned int type = CTRL_NONE; - - if (desc == NULL) - return; - - /* Delete existing audio control with the same address. */ - LIST_FOREACH_SAFE(c, &controls, next, ctmp) { - if (desc->addr == c->addr) { - LIST_REMOVE(c, next); - free(c); - break; - } - } - - /* Only match output.level and output.mute audio controls. */ - if (desc->group[0] != 0 || - strcmp(desc->node0.name, "output") != 0) - return; - if (desc->type == SIOCTL_NUM && - strcmp(desc->func, "level") == 0) - type = CTRL_LEVEL; - else if (desc->type == SIOCTL_SW && - strcmp(desc->func, "mute") == 0) - type = CTRL_MUTE; - else - return; - - c = malloc(sizeof(struct control)); - if (c == NULL) { - warn("sndio: failed to allocate audio control\n"); - return; - } - - c->addr = desc->addr; - c->type = type; - c->maxval = desc->maxval; - c->val = val; - LIST_INSERT_HEAD(&controls, c, next); - } - - /* - * Call-back invoked whenever an audio control changes. - */ - static void - onval(void *unused, unsigned int addr, unsigned int val) - { - struct control *c; - - LIST_FOREACH(c, &controls, next) { - if (c->addr == addr) - break; - } - c->val = val; - } - - static void - cleanup(void) - { - struct control *c; - - if (hdl) { - sioctl_close(hdl); - hdl = NULL; - } - - free(pfds); - pfds = NULL; - - while (!LIST_EMPTY(&controls)) { - c = LIST_FIRST(&controls); - LIST_REMOVE(c, next); - free(c); - } - } - - static int - init(void) - { - hdl = sioctl_open(SIO_DEVANY, SIOCTL_READ, 0); - if (hdl == NULL) { - warn("sndio: cannot open device"); - goto failed; - } - - if (!sioctl_ondesc(hdl, ondesc, NULL)) { - warn("sndio: cannot set control description call-back"); - goto failed; - } - - if (!sioctl_onval(hdl, onval, NULL)) { - warn("sndio: cannot set control values call-back"); - goto failed; - } - - pfds = calloc(sioctl_nfds(hdl), sizeof(struct pollfd)); - if (pfds == NULL) { - warn("sndio: cannot allocate pollfd structures"); - goto failed; - } - - return 1; - failed: - cleanup(); - return 0; - } - - const char * - vol_perc(const char *unused) - { - struct control *c; - int n, v, value; - - if (!initialized) - initialized = init(); - - if (hdl == NULL) - return NULL; - - n = sioctl_pollfd(hdl, pfds, POLLIN); - if (n > 0) { - n = poll(pfds, n, 0); - if (n > 0) { - if (sioctl_revents(hdl, pfds) & POLLHUP) { - warn("sndio: disconnected"); - cleanup(); - initialized = 0; - return NULL; - } - } - } - - value = 100; - LIST_FOREACH(c, &controls, next) { - if (c->type == CTRL_MUTE && c->val == 1) - value = 0; - else if (c->type == CTRL_LEVEL) { - v = (c->val * 100 + c->maxval / 2) / c->maxval; - /* For multiple channels return the minimum. */ - if (v < value) - value = v; - } - } - - return bprintf("%d", value); - } -#else - #include - - const char * - vol_perc(const char *card) - { - size_t i; - int v, afd, devmask; - char *vnames[] = SOUND_DEVICE_NAMES; - - if ((afd = open(card, O_RDONLY | O_NONBLOCK)) < 0) { - warn("open '%s':", card); - return NULL; - } - - if (ioctl(afd, (int)SOUND_MIXER_READ_DEVMASK, &devmask) < 0) { - warn("ioctl 'SOUND_MIXER_READ_DEVMASK':"); - close(afd); - return NULL; - } - for (i = 0; i < LEN(vnames); i++) { - if (devmask & (1 << i) && !strcmp("vol", vnames[i])) { - if (ioctl(afd, MIXER_READ(i), &v) < 0) { - warn("ioctl 'MIXER_READ(%ld)':", i); - close(afd); - return NULL; - } - } - } - - close(afd); - - return bprintf("%d", v & 0xff); - } -#endif diff --git a/programs/slstatus/components/wifi.c b/programs/slstatus/components/wifi.c deleted file mode 100644 index 4543d322..00000000 --- a/programs/slstatus/components/wifi.c +++ /dev/null @@ -1,267 +0,0 @@ -/* See LICENSE file for copyright and license details. */ -#include -#include -#include -#include -#include -#include - -#include "../slstatus.h" -#include "../util.h" - -#define RSSI_TO_PERC(rssi) \ - rssi >= -50 ? 100 : \ - (rssi <= -100 ? 0 : \ - (2 * (rssi + 100))) - -#if defined(__linux__) - #include - #include - - #define NET_OPERSTATE "/sys/class/net/%s/operstate" - - const char * - wifi_perc(const char *interface) - { - int cur; - size_t i; - char *p, *datastart; - char path[PATH_MAX]; - char status[5]; - FILE *fp; - - if (esnprintf(path, sizeof(path), NET_OPERSTATE, interface) < 0) - return NULL; - if (!(fp = fopen(path, "r"))) { - warn("fopen '%s':", path); - return NULL; - } - p = fgets(status, 5, fp); - fclose(fp); - if (!p || strcmp(status, "up\n") != 0) - return NULL; - - if (!(fp = fopen("/proc/net/wireless", "r"))) { - warn("fopen '/proc/net/wireless':"); - return NULL; - } - - for (i = 0; i < 3; i++) - if (!(p = fgets(buf, sizeof(buf) - 1, fp))) - break; - - fclose(fp); - if (i < 2 || !p) - return NULL; - - if (!(datastart = strstr(buf, interface))) - return NULL; - - datastart = (datastart+(strlen(interface)+1)); - sscanf(datastart + 1, " %*d %d %*d %*d\t\t %*d\t " - "%*d\t\t%*d\t\t %*d\t %*d\t\t %*d", &cur); - - /* 70 is the max of /proc/net/wireless */ - return bprintf("%d", (int)((float)cur / 70 * 100)); - } - - const char * - wifi_essid(const char *interface) - { - static char id[IW_ESSID_MAX_SIZE+1]; - int sockfd; - struct iwreq wreq; - - memset(&wreq, 0, sizeof(struct iwreq)); - wreq.u.essid.length = IW_ESSID_MAX_SIZE+1; - if (esnprintf(wreq.ifr_name, sizeof(wreq.ifr_name), "%s", - interface) < 0) - return NULL; - - if ((sockfd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) { - warn("socket 'AF_INET':"); - return NULL; - } - wreq.u.essid.pointer = id; - if (ioctl(sockfd,SIOCGIWESSID, &wreq) < 0) { - warn("ioctl 'SIOCGIWESSID':"); - close(sockfd); - return NULL; - } - - close(sockfd); - - if (!strcmp(id, "")) - return NULL; - - return id; - } -#elif defined(__OpenBSD__) - #include - #include - #include - #include /* before for NBBY */ - #include - #include - #include - - static int - load_ieee80211_nodereq(const char *interface, struct ieee80211_nodereq *nr) - { - struct ieee80211_bssid bssid; - int sockfd; - uint8_t zero_bssid[IEEE80211_ADDR_LEN]; - - memset(&bssid, 0, sizeof(bssid)); - memset(nr, 0, sizeof(struct ieee80211_nodereq)); - if ((sockfd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) { - warn("socket 'AF_INET':"); - return 0; - } - strlcpy(bssid.i_name, interface, sizeof(bssid.i_name)); - if ((ioctl(sockfd, SIOCG80211BSSID, &bssid)) < 0) { - warn("ioctl 'SIOCG80211BSSID':"); - close(sockfd); - return 0; - } - memset(&zero_bssid, 0, sizeof(zero_bssid)); - if (memcmp(bssid.i_bssid, zero_bssid, - IEEE80211_ADDR_LEN) == 0) { - close(sockfd); - return 0; - } - strlcpy(nr->nr_ifname, interface, sizeof(nr->nr_ifname)); - memcpy(&nr->nr_macaddr, bssid.i_bssid, sizeof(nr->nr_macaddr)); - if ((ioctl(sockfd, SIOCG80211NODE, nr)) < 0 && nr->nr_rssi) { - warn("ioctl 'SIOCG80211NODE':"); - close(sockfd); - return 0; - } - - return close(sockfd), 1; - } - - const char * - wifi_perc(const char *interface) - { - struct ieee80211_nodereq nr; - int q; - - if (load_ieee80211_nodereq(interface, &nr)) { - if (nr.nr_max_rssi) - q = IEEE80211_NODEREQ_RSSI(&nr); - else - q = RSSI_TO_PERC(nr.nr_rssi); - - return bprintf("%d", q); - } - - return NULL; - } - - const char * - wifi_essid(const char *interface) - { - struct ieee80211_nodereq nr; - - if (load_ieee80211_nodereq(interface, &nr)) - return bprintf("%s", nr.nr_nwid); - - return NULL; - } -#elif defined(__FreeBSD__) - #include - #include - - int - load_ieee80211req(int sock, const char *interface, void *data, int type, size_t *len) - { - char warn_buf[256]; - struct ieee80211req ireq; - memset(&ireq, 0, sizeof(ireq)); - ireq.i_type = type; - ireq.i_data = (caddr_t) data; - ireq.i_len = *len; - - strlcpy(ireq.i_name, interface, sizeof(ireq.i_name)); - if (ioctl(sock, SIOCG80211, &ireq) < 0) { - snprintf(warn_buf, sizeof(warn_buf), - "ioctl: 'SIOCG80211': %d", type); - warn(warn_buf); - return 0; - } - - *len = ireq.i_len; - return 1; - } - - const char * - wifi_perc(const char *interface) - { - union { - struct ieee80211req_sta_req sta; - uint8_t buf[24 * 1024]; - } info; - uint8_t bssid[IEEE80211_ADDR_LEN]; - int rssi_dbm; - int sockfd; - size_t len; - const char *fmt; - - if ((sockfd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) { - warn("socket 'AF_INET':"); - return NULL; - } - - /* Retreive MAC address of interface */ - len = IEEE80211_ADDR_LEN; - fmt = NULL; - if (load_ieee80211req(sockfd, interface, &bssid, IEEE80211_IOC_BSSID, &len)) - { - /* Retrieve info on station with above BSSID */ - memset(&info, 0, sizeof(info)); - memcpy(info.sta.is_u.macaddr, bssid, sizeof(bssid)); - - len = sizeof(info); - if (load_ieee80211req(sockfd, interface, &info, IEEE80211_IOC_STA_INFO, &len)) { - rssi_dbm = info.sta.info[0].isi_noise + - info.sta.info[0].isi_rssi / 2; - - fmt = bprintf("%d", RSSI_TO_PERC(rssi_dbm)); - } - } - - close(sockfd); - return fmt; - } - - const char * - wifi_essid(const char *interface) - { - char ssid[IEEE80211_NWID_LEN + 1]; - size_t len; - int sockfd; - const char *fmt; - - if ((sockfd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) { - warn("socket 'AF_INET':"); - return NULL; - } - - fmt = NULL; - len = sizeof(ssid); - memset(&ssid, 0, len); - if (load_ieee80211req(sockfd, interface, &ssid, IEEE80211_IOC_SSID, &len)) { - if (len < sizeof(ssid)) - len += 1; - else - len = sizeof(ssid); - - ssid[len - 1] = '\0'; - fmt = bprintf("%s", ssid); - } - - close(sockfd); - return fmt; - } -#endif diff --git a/programs/slstatus/config.def.h b/programs/slstatus/config.def.h deleted file mode 100644 index d4efb1e3..00000000 --- a/programs/slstatus/config.def.h +++ /dev/null @@ -1,84 +0,0 @@ -/* See LICENSE file for copyright and license details. */ - -/* interval between updates (in ms) */ -const unsigned int interval = 1000; - -/* text to show if no value can be retrieved */ -static const char unknown_str[] = ""; - -/* maximum output string length */ -#define MAXLEN 2048 - -/* - * function description argument (example) - * - * battery_perc battery percentage battery name (BAT0) - * NULL on OpenBSD/FreeBSD - * battery_remaining battery remaining HH:MM battery name (BAT0) - * NULL on OpenBSD/FreeBSD - * battery_state battery charging state battery name (BAT0) - * NULL on OpenBSD/FreeBSD - * cat read arbitrary file path - * cpu_freq cpu frequency in MHz NULL - * cpu_perc cpu usage in percent NULL - * datetime date and time format string (%F %T) - * disk_free free disk space in GB mountpoint path (/) - * disk_perc disk usage in percent mountpoint path (/) - * disk_total total disk space in GB mountpoint path (/) - * disk_used used disk space in GB mountpoint path (/) - * entropy available entropy NULL - * gid GID of current user NULL - * hostname hostname NULL - * ipv4 IPv4 address interface name (eth0) - * ipv6 IPv6 address interface name (eth0) - * kernel_release `uname -r` NULL - * keyboard_indicators caps/num lock indicators format string (c?n?) - * see keyboard_indicators.c - * keymap layout (variant) of current NULL - * keymap - * load_avg load average NULL - * netspeed_rx receive network speed interface name (wlan0) - * netspeed_tx transfer network speed interface name (wlan0) - * num_files number of files in a directory path - * (/home/foo/Inbox/cur) - * ram_free free memory in GB NULL - * ram_perc memory usage in percent NULL - * ram_total total memory size in GB NULL - * ram_used used memory in GB NULL - * run_command custom shell command command (echo foo) - * swap_free free swap in GB NULL - * swap_perc swap usage in percent NULL - * swap_total total swap size in GB NULL - * swap_used used swap in GB NULL - * temp temperature in degree celsius sensor file - * (/sys/class/thermal/...) - * NULL on OpenBSD - * thermal zone on FreeBSD - * (tz0, tz1, etc.) - * uid UID of current user NULL - * uptime system uptime NULL - * username username of current user NULL - * vol_perc OSS/ALSA volume in percent mixer file (/dev/mixer) - * NULL on OpenBSD/FreeBSD - * wifi_essid WiFi ESSID interface name (wlan0) - * wifi_perc WiFi signal in percent interface name (wlan0) - */ - - - -static const struct arg args[] = { - /* function format argument */ - - { wifi_essid, "[ %s", "wlan0" }, - { wifi_essid, "%s", "wlo1" }, - { wifi_perc, " %s", "wlan0" }, - { wifi_perc, "%s%%] ", "wlo1" }, - { battery_perc, "[󰂉 %s", "BAT0" }, - { battery_perc, "%s%%] ", "cw2015-battery" }, - { run_command, "[ %s%%] ", "wpctl get-volume @DEFAULT_AUDIO_SINK@ | cut -c 11-" }, - { cpu_perc, "[ %s%%", NULL }, - { temp, " %sC] ", "/sys/class/thermal/thermal_zone0/temp" }, - { ram_used, "[ %s", NULL }, - { ram_perc, " %s%%] ", NULL }, - { datetime, "[ %s]", "%d/%m/%y %l:%M %p" }, -}; diff --git a/programs/slstatus/config.h b/programs/slstatus/config.h deleted file mode 100644 index d4efb1e3..00000000 --- a/programs/slstatus/config.h +++ /dev/null @@ -1,84 +0,0 @@ -/* See LICENSE file for copyright and license details. */ - -/* interval between updates (in ms) */ -const unsigned int interval = 1000; - -/* text to show if no value can be retrieved */ -static const char unknown_str[] = ""; - -/* maximum output string length */ -#define MAXLEN 2048 - -/* - * function description argument (example) - * - * battery_perc battery percentage battery name (BAT0) - * NULL on OpenBSD/FreeBSD - * battery_remaining battery remaining HH:MM battery name (BAT0) - * NULL on OpenBSD/FreeBSD - * battery_state battery charging state battery name (BAT0) - * NULL on OpenBSD/FreeBSD - * cat read arbitrary file path - * cpu_freq cpu frequency in MHz NULL - * cpu_perc cpu usage in percent NULL - * datetime date and time format string (%F %T) - * disk_free free disk space in GB mountpoint path (/) - * disk_perc disk usage in percent mountpoint path (/) - * disk_total total disk space in GB mountpoint path (/) - * disk_used used disk space in GB mountpoint path (/) - * entropy available entropy NULL - * gid GID of current user NULL - * hostname hostname NULL - * ipv4 IPv4 address interface name (eth0) - * ipv6 IPv6 address interface name (eth0) - * kernel_release `uname -r` NULL - * keyboard_indicators caps/num lock indicators format string (c?n?) - * see keyboard_indicators.c - * keymap layout (variant) of current NULL - * keymap - * load_avg load average NULL - * netspeed_rx receive network speed interface name (wlan0) - * netspeed_tx transfer network speed interface name (wlan0) - * num_files number of files in a directory path - * (/home/foo/Inbox/cur) - * ram_free free memory in GB NULL - * ram_perc memory usage in percent NULL - * ram_total total memory size in GB NULL - * ram_used used memory in GB NULL - * run_command custom shell command command (echo foo) - * swap_free free swap in GB NULL - * swap_perc swap usage in percent NULL - * swap_total total swap size in GB NULL - * swap_used used swap in GB NULL - * temp temperature in degree celsius sensor file - * (/sys/class/thermal/...) - * NULL on OpenBSD - * thermal zone on FreeBSD - * (tz0, tz1, etc.) - * uid UID of current user NULL - * uptime system uptime NULL - * username username of current user NULL - * vol_perc OSS/ALSA volume in percent mixer file (/dev/mixer) - * NULL on OpenBSD/FreeBSD - * wifi_essid WiFi ESSID interface name (wlan0) - * wifi_perc WiFi signal in percent interface name (wlan0) - */ - - - -static const struct arg args[] = { - /* function format argument */ - - { wifi_essid, "[ %s", "wlan0" }, - { wifi_essid, "%s", "wlo1" }, - { wifi_perc, " %s", "wlan0" }, - { wifi_perc, "%s%%] ", "wlo1" }, - { battery_perc, "[󰂉 %s", "BAT0" }, - { battery_perc, "%s%%] ", "cw2015-battery" }, - { run_command, "[ %s%%] ", "wpctl get-volume @DEFAULT_AUDIO_SINK@ | cut -c 11-" }, - { cpu_perc, "[ %s%%", NULL }, - { temp, " %sC] ", "/sys/class/thermal/thermal_zone0/temp" }, - { ram_used, "[ %s", NULL }, - { ram_perc, " %s%%] ", NULL }, - { datetime, "[ %s]", "%d/%m/%y %l:%M %p" }, -}; diff --git a/programs/slstatus/config.mk b/programs/slstatus/config.mk deleted file mode 100644 index 07af883a..00000000 --- a/programs/slstatus/config.mk +++ /dev/null @@ -1,22 +0,0 @@ -# slstatus version -VERSION = 1.0 - -# customize below to fit your system - -# paths -PREFIX = /usr/local -MANPREFIX = $(PREFIX)/share/man - -X11INC = /usr/X11R6/include -X11LIB = /usr/X11R6/lib - -# flags -CPPFLAGS = -I$(X11INC) -D_DEFAULT_SOURCE -DVERSION=\"${VERSION}\" -CFLAGS = -std=c99 -pedantic -Wall -Wextra -Wno-unused-parameter -Os -LDFLAGS = -L$(X11LIB) -s -# OpenBSD: add -lsndio -# FreeBSD: add -lkvm -lsndio -LDLIBS = -lX11 - -# compiler and linker -CC = cc diff --git a/programs/slstatus/slstatus b/programs/slstatus/slstatus deleted file mode 100755 index 75ebd6c2932a241f6f85f7f0f10216a4ab151d4e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 68544 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 -#include -#include -#include -#include -#include -#include - -#include "arg.h" -#include "slstatus.h" -#include "util.h" - -struct arg { - const char *(*func)(const char *); - const char *fmt; - const char *args; -}; - -char buf[1024]; -static volatile sig_atomic_t done; -static Display *dpy; - -#include "config.h" - -static void -terminate(const int signo) -{ - if (signo != SIGUSR1) - done = 1; -} - -static void -difftimespec(struct timespec *res, struct timespec *a, struct timespec *b) -{ - res->tv_sec = a->tv_sec - b->tv_sec - (a->tv_nsec < b->tv_nsec); - res->tv_nsec = a->tv_nsec - b->tv_nsec + - (a->tv_nsec < b->tv_nsec) * 1E9; -} - -static void -usage(void) -{ - die("usage: %s [-v] [-s] [-1]", argv0); -} - -int -main(int argc, char *argv[]) -{ - struct sigaction act; - struct timespec start, current, diff, intspec, wait; - size_t i, len; - int sflag, ret; - char status[MAXLEN]; - const char *res; - - sflag = 0; - ARGBEGIN { - case 'v': - die("slstatus-"VERSION); - case '1': - done = 1; - /* FALLTHROUGH */ - case 's': - sflag = 1; - break; - default: - usage(); - } ARGEND - - if (argc) - usage(); - - memset(&act, 0, sizeof(act)); - act.sa_handler = terminate; - sigaction(SIGINT, &act, NULL); - sigaction(SIGTERM, &act, NULL); - act.sa_flags |= SA_RESTART; - sigaction(SIGUSR1, &act, NULL); - - if (!sflag && !(dpy = XOpenDisplay(NULL))) - die("XOpenDisplay: Failed to open display"); - - do { - if (clock_gettime(CLOCK_MONOTONIC, &start) < 0) - die("clock_gettime:"); - - status[0] = '\0'; - for (i = len = 0; i < LEN(args); i++) { - if (!(res = args[i].func(args[i].args))) - res = unknown_str; - - if ((ret = esnprintf(status + len, sizeof(status) - len, - args[i].fmt, res)) < 0) - break; - - len += ret; - } - - if (sflag) { - puts(status); - fflush(stdout); - if (ferror(stdout)) - die("puts:"); - } else { - if (XStoreName(dpy, DefaultRootWindow(dpy), status) < 0) - die("XStoreName: Allocation failed"); - XFlush(dpy); - } - - if (!done) { - if (clock_gettime(CLOCK_MONOTONIC, ¤t) < 0) - die("clock_gettime:"); - difftimespec(&diff, ¤t, &start); - - intspec.tv_sec = interval / 1000; - intspec.tv_nsec = (interval % 1000) * 1E6; - difftimespec(&wait, &intspec, &diff); - - if (wait.tv_sec >= 0 && - nanosleep(&wait, NULL) < 0 && - errno != EINTR) - die("nanosleep:"); - } - } while (!done); - - if (!sflag) { - XStoreName(dpy, DefaultRootWindow(dpy), NULL); - if (XCloseDisplay(dpy) < 0) - die("XCloseDisplay: Failed to close display"); - } - - return 0; -} diff --git a/programs/slstatus/slstatus.h b/programs/slstatus/slstatus.h deleted file mode 100644 index 8ef5874c..00000000 --- a/programs/slstatus/slstatus.h +++ /dev/null @@ -1,84 +0,0 @@ -/* See LICENSE file for copyright and license details. */ - -/* battery */ -const char *battery_perc(const char *); -const char *battery_remaining(const char *); -const char *battery_state(const char *); - -/* cat */ -const char *cat(const char *path); - -/* cpu */ -const char *cpu_freq(const char *unused); -const char *cpu_perc(const char *unused); - -/* datetime */ -const char *datetime(const char *fmt); - -/* disk */ -const char *disk_free(const char *path); -const char *disk_perc(const char *path); -const char *disk_total(const char *path); -const char *disk_used(const char *path); - -/* entropy */ -const char *entropy(const char *unused); - -/* hostname */ -const char *hostname(const char *unused); - -/* ip */ -const char *ipv4(const char *interface); -const char *ipv6(const char *interface); - -/* kernel_release */ -const char *kernel_release(const char *unused); - -/* keyboard_indicators */ -const char *keyboard_indicators(const char *fmt); - -/* keymap */ -const char *keymap(const char *unused); - -/* load_avg */ -const char *load_avg(const char *unused); - -/* netspeeds */ -const char *netspeed_rx(const char *interface); -const char *netspeed_tx(const char *interface); - -/* num_files */ -const char *num_files(const char *path); - -/* ram */ -const char *ram_free(const char *unused); -const char *ram_perc(const char *unused); -const char *ram_total(const char *unused); -const char *ram_used(const char *unused); - -/* run_command */ -const char *run_command(const char *cmd); - -/* swap */ -const char *swap_free(const char *unused); -const char *swap_perc(const char *unused); -const char *swap_total(const char *unused); -const char *swap_used(const char *unused); - -/* temperature */ -const char *temp(const char *); - -/* uptime */ -const char *uptime(const char *unused); - -/* user */ -const char *gid(const char *unused); -const char *uid(const char *unused); -const char *username(const char *unused); - -/* volume */ -const char *vol_perc(const char *card); - -/* wifi */ -const char *wifi_essid(const char *interface); -const char *wifi_perc(const char *interface); diff --git a/programs/slstatus/util.c b/programs/slstatus/util.c deleted file mode 100644 index bca9b2ea..00000000 --- a/programs/slstatus/util.c +++ /dev/null @@ -1,141 +0,0 @@ -/* See LICENSE file for copyright and license details. */ -#include -#include -#include -#include -#include -#include - -#include "util.h" - -char *argv0; - -static void -verr(const char *fmt, va_list ap) -{ - vfprintf(stderr, fmt, ap); - - if (fmt[0] && fmt[strlen(fmt) - 1] == ':') { - fputc(' ', stderr); - perror(NULL); - } else { - fputc('\n', stderr); - } -} - -void -warn(const char *fmt, ...) -{ - va_list ap; - - va_start(ap, fmt); - verr(fmt, ap); - va_end(ap); -} - -void -die(const char *fmt, ...) -{ - va_list ap; - - va_start(ap, fmt); - verr(fmt, ap); - va_end(ap); - - exit(1); -} - -static int -evsnprintf(char *str, size_t size, const char *fmt, va_list ap) -{ - int ret; - - ret = vsnprintf(str, size, fmt, ap); - - if (ret < 0) { - warn("vsnprintf:"); - return -1; - } else if ((size_t)ret >= size) { - warn("vsnprintf: Output truncated"); - return -1; - } - - return ret; -} - -int -esnprintf(char *str, size_t size, const char *fmt, ...) -{ - va_list ap; - int ret; - - va_start(ap, fmt); - ret = evsnprintf(str, size, fmt, ap); - va_end(ap); - - return ret; -} - -const char * -bprintf(const char *fmt, ...) -{ - va_list ap; - int ret; - - va_start(ap, fmt); - ret = evsnprintf(buf, sizeof(buf), fmt, ap); - va_end(ap); - - return (ret < 0) ? NULL : buf; -} - -const char * -fmt_human(uintmax_t num, int base) -{ - double scaled; - size_t i, prefixlen; - const char **prefix; - const char *prefix_1000[] = { "", "k", "M", "G", "T", "P", "E", "Z", - "Y" }; - const char *prefix_1024[] = { "", "Ki", "Mi", "Gi", "Ti", "Pi", "Ei", - "Zi", "Yi" }; - - switch (base) { - case 1000: - prefix = prefix_1000; - prefixlen = LEN(prefix_1000); - break; - case 1024: - prefix = prefix_1024; - prefixlen = LEN(prefix_1024); - break; - default: - warn("fmt_human: Invalid base"); - return NULL; - } - - scaled = num; - for (i = 0; i < prefixlen && scaled >= base; i++) - scaled /= base; - - return bprintf("%.1f %s", scaled, prefix[i]); -} - -int -pscanf(const char *path, const char *fmt, ...) -{ - FILE *fp; - va_list ap; - int n; - - if (!(fp = fopen(path, "r"))) { - warn("fopen '%s':", path); - return -1; - } - va_start(ap, fmt); - n = vfscanf(fp, fmt, ap); - va_end(ap); - fclose(fp); - - return (n == EOF) ? -1 : n; -} diff --git a/programs/slstatus/util.h b/programs/slstatus/util.h deleted file mode 100644 index cf4b0273..00000000 --- a/programs/slstatus/util.h +++ /dev/null @@ -1,16 +0,0 @@ -/* See LICENSE file for copyright and license details. */ -#include - -extern char buf[1024]; - -#define LEN(x) (sizeof(x) / sizeof((x)[0])) - -extern char *argv0; - -void warn(const char *, ...); -void die(const char *, ...); - -int esnprintf(char *str, size_t size, const char *fmt, ...); -const char *bprintf(const char *fmt, ...); -const char *fmt_human(uintmax_t num, int base); -int pscanf(const char *path, const char *fmt, ...); diff --git a/programs/st/st b/programs/st/st index f90c5163a1fe5ec34c6a0bb8a8cb0d6f6b62f198..6d367783e157ebbb0f188734d7ed14028719b81f 100755 GIT binary patch literal 102360 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%0D3!y7JE-Oz6r#x0=wEf7Y4M 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

    9>EIu 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 JUZzL!{{SDwy;T4J diff --git a/programs/tabbed/tabbed b/programs/tabbed/tabbed index 6cac290456732615541b2f4ccbfd1abcf78d46c6..b24c3826c84488635e6528ce59957b0f237a1d85 100755 GIT binary patch literal 43424 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 literal 77600 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 literal 70816 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