web-dev-qa-db-ja.com

BASHはアプリケーションインジケータとしてシステムトレイに表示できますか?

設定した時間が経過すると画面をロックするbashスクリプトがあります( buntuで設定した時間が経過すると画面をロックするアプリケーション )。 Ubuntuのシステムトレイ/アプリケーションインジケータバーに残り時間を表示したいと思います。

2

私が見つけた最良の方法は、この記事のSystem Monitor Indicatorです。 webupd8.org-bashを表示するUbuntuアプリケーションインジケーター 。 Unityシステムトレイ/アプリケーションインジケータバーに、bashスクリプトが「echos」であることを示すテキストを表示します。

上記の記事は、Unityを使用したUbuntu 16.04を対象としています。 Xubuntu、Gnome-Shell + app-indicator extension、およびBudgieの詳細については、Developers Webサイトにアクセスしてください: fossfreedom/indicator-sysmonitor 。さらに詳細なインストールおよび構成の手順については、サイトをご覧ください。

indicator-sysmonitorのインストールと構成

System Monitor Indicatorをインストールするには、最初にindicator-sysmonitorが見つかるPPAを指定する必要があります。

Sudo add-apt-repository ppa:fossfreedom/indicator-sysmonitor
Sudo apt-get update
Sudo apt-get install indicator-sysmonitor

次に、Dashから「indicator-sysmonitor」GUIを実行します(Alt+F2)。

  • 「cpu:99%mem:99%」と表示されるシステムトレイ領域をクリックします
  • 「設定」を選択します
  • 「一般」タブは最初はアクティブで、「起動時に実行」ボックスをクリックします
  • 「詳細」タブを選択します
  • クリック New 新しいコントロールを追加するボタン
  • [センサー]フィールドにcustomと入力します
  • [説明]フィールドにBash Indicator _と入力します。[コマンド]フィールドにbashスクリプトの名前、つまり/mnt/e/bin/indicator-sysmonitor-displayと入力します
  • 新しいカスタムインジケーターを保存する
  • custom行を強調表示して、 Add それをアクティブにするボタン。
  • 「CPU」と「Mem」のデフォルト変数は削除できますが、これらは役に立たない可能性があります。
  • 更新間隔を2秒から.3秒に変更しました。 「ピザの回転」をサポートするには、以下で説明します。
  • 今すぐクリック Save ボタン。

動作中のSysmonitorインジケーター

この.gifは、UbuntuのUnityシステムトレイが更新されたときの外観を示しています。

multi-timer sysmonitor indicator.gif

  • アニメーションの開始時には、システムトレイの出力に「Brightness:3000」が含まれています。
  • その後、multi-timer(以下のリンク)が開始され、複数のタイマーをステップスルーします。
  • 回転ピザが残り時間のカウントダウンとともに表示されます。

注:システムモニターインジケータにも「明るさ:3000」と表示されます。これは、Intelバックライトハードウェアの輝度レベルの昼間の設定です(以下のリンク)。

SysmonitorインジケーターBASHスクリプト

次のようなスクリプトを作成し、Sysmonitor Indicatorの変数{Custom}に割り当てます。

#!/bin/bash

# UPDT: May 30 2018 - Cohesion with new multi-timer and old lock-screen-timer.

if [ -f ~/.lock-screen-timer-remaining ]; then
    text-spinner
    Spinner=$(cat ~/.last-text-spinner) # read last text spinner used
    String=$(cat ~/.lock-screen-timer-remaining)
    systray="$Spinner  $String"
else
    systray=""
fi

if [ -f /tmp/display-current-brightness ]; then
    Brightness=$(cat /tmp/display-current-brightness)
    systray="$systray  Brightness: $Brightness"
else
    systray="$systray  Brightness: OFF"
fi

# Below for AU answer: https://askubuntu.com/questions/1024866/is-it-possible-to-show-ip-address-on-top-bar-near-the-time
# default_interface=$(route -n | awk '$1 == "0.0.0.0" {print $8; exit}')
# ip_address=$(ifconfig "$default_interface" | awk 'sub(/.* inet addr:/, "") {print $1}')
# systray="$systray  $ip_address"

echo "$systray" # sysmon-indidicator will put echo string into systray for us.

exit 0

Sysmonitor Indicator{Custom}変数を設定してbashスクリプトの名前を通知した後、更新間隔ごとに実行されます。 echoコマンドを介してbashスクリプトが出力するものはすべて、Ubuntuのシステムトレイに表示されます。

注:スクリプトは、残り時間およびディスプレイ輝度レベル値。これらの値は、Ubuntuに記載されているスクリプトによって設定されます: buntuの設定時間後に画面をロックするアプリケーション異なるアラームを同時に設定するためのタイマー および 日の出と日の入りに基づいてディスプレイの輝度を自動的に調整

スピニングピザ--text-spinner BASHスクリプト

text-spinner bashスクリプトは、文字|/、および\を循環させることにより、回転するピザ効果を作成します。この効果は、何かが「働いている」または「考えている」という事実を強調しています。 「スピニング効果」を得るには、Sysmonitor Indicator更新間隔をデフォルトの2秒から約0.30秒に変更します。

text-spinner bashスクリプトは次のとおりです。

#!/bin/bash

# return '|', '/', '─', '\' sequentially with each call to this script.
# Use ~/.last-text-spinner to store last used

FILE=~/.last-text-spinner

if ! [ -f $FILE ]; then
    echo '|' > $FILE
    exit 124 # ASCII equivalent for '|'. Bash doesn't allow character return codes
fi

LAST=$(cat $FILE) # read last character used

if [[ $LAST == '|' ]]; then
    echo '/' > $FILE
    exit 47 # ASCII equivalent of "/"
Elif [[ $LAST == '/' ]]; then  # NOTE: you must have spaces around " == " else code breaks
    echo '─' > $FILE
    exit 9472 # ASCII equivalent
Elif [[ $LAST == '─' ]]; then
    echo '\' > $FILE # NOTE: must use single quote because double quote BASH reinterprets
    exit 92 # ASCII
else
    echo '|' > $FILE
    exit 124 # ASCII
fi
6