⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gdf.bash

📁 gtk_server的源代码
💻 BASH
字号:
#!/bin/bash## Graphical Disk Fill with HUG.#   Using AWK for floatnumbers.## May 2008 - Peter van Eerten - GPL.##---------------------------------------------------------# Name of PIPE filedeclare PIPE=/tmp/bash.gtk.$$# Communication function; assignment functionfunction gtk() { echo $1 > $PIPE; read GTK < $PIPE; }function define() { $2 "$3"; eval $1="$GTK"; }# Get all sizes of partitionsINFO=`df | awk '/\// {print $2,$3,$6}'`AMOUNT=0COUNT=0# Put info in arraysfor i in $INFOdo    if [[ $AMOUNT -eq 0 ]]; then	SIZES[$COUNT]=$i    fi    if [[ $AMOUNT -eq 1 ]]; then	USED[$COUNT]=$i    fi    if [[ $AMOUNT -eq 2 ]]; then	NAMES[$COUNT]=$i	((AMOUNT-=3))	((COUNT+=1))    fi    ((AMOUNT+=1))doneIDX=0MAXSIZE=0# Find maximum sizewhile [[ $IDX -lt ${#SIZES[@]} ]]do    if [[ ${SIZES[$IDX]} -ge $MAXSIZE ]]; then	MAXSIZE=${SIZES[$IDX]}    fi    ((IDX+=1))done# Space between columnsMARGE=10# Start of first columnXPOS=20# Width of the columnslet WIDTH1=90let WIDTH2=80# Calculate widths depending on amount of mountslet SCREENW=$WIDTH1*${#SIZES[@]}+$MARGE*${#SIZES[@]}+50let FRAMEW=$SCREENW-10let CANVASW=$SCREENW-30let LINEW=$SCREENW-50# Start gtk-server in FIFO modegtk-server -fifo=$PIPE &while [ ! -p $PIPE ]; do continue; done# Define GUI - mainwindowdefine WIN gtk "u_window \"'Graphical Disk Fill'\" $SCREENW 400"gtk "u_bgcolor $WIN #FFFFFF"# Attach framedefine FRAME gtk "u_frame $FRAMEW 390"gtk "u_bgcolor $FRAME #FFFFFF"gtk "u_frame_text $FRAME \"' Disk Usage Graph '\""gtk "u_attach $WIN $FRAME 5 5"# Setup the drawing canvas, draw stuffdefine CANVAS gtk "u_canvas $CANVASW 365"gtk "u_attach $WIN $CANVAS 10 25"# Draw axisgtk "u_line #000000 20 340 $LINEW 340"IDX=0while [[ $IDX -lt ${#SIZES[@]} ]]do    # Draw columns    HEIGHT=`awk -v M=$MAXSIZE -v S=${SIZES[$IDX]} 'BEGIN{print int(S/M*310)}'`    let YPOS=340-$HEIGHT    gtk "u_square #00FF11 $XPOS $YPOS $WIDTH1 $HEIGHT 1"    gtk "u_square #000000 $XPOS $YPOS $WIDTH1 $HEIGHT 0"    # Draw amount    ((YPOS-=15))    gtk "u_out ${SIZES[$IDX]} #007700 #FFFFFF $XPOS $YPOS"    # Draw usage    ((XPOS+=5))    HEIGHT=`awk -v M=$MAXSIZE -v S=${USED[$IDX]} 'BEGIN{print int(S/M*310)}'`    let YPOS=340-$HEIGHT    gtk "u_square #FF1100 $XPOS $YPOS $WIDTH2 $HEIGHT 1"    gtk "u_square #000000 $XPOS $YPOS $WIDTH2 $HEIGHT 0"    # Draw text    let YPOS=345    gtk "u_out \"'${NAMES[$IDX]}'\" #0000FF #FFFFFF $XPOS $YPOS"    let XPOS=$XPOS+$WIDTH1+$MARGE-5    # Next column    ((IDX+=1))done# Mainloopuntil [[ $EVENT = $WIN ]]do    define EVENT gtk "u_event"donegtk "u_end"

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -