dwmblocks Bluetoothモジュール。接続されたデバイス名を表示するには?

dwmblocks Bluetoothモジュール。接続されたデバイス名を表示するには?

私はそれを使用しています密な波管理ステータスバーには、dwmblocksデバイスが接続されたときにいくつかの情報やステータスを表示するBluetoothスクリプトを含む、ステータスに対して実行される複数のモジュール/スクリプトがあります。

 #!/bin/bash
  
  case $BLOCK_BUTTON in
          1) setsid -f blueman-manager ;;
          2) notify-send "$icon Device Connected" "$(if [[ "$(bluetoothctl info)" != "Missing device address argument" ]]; then 
                                                  echo= "$(bluetoothctl info | grep "Name" | awk '{print $2}')"
else
                                                  echo= "No Device Connected" )" ;;
          3) notify-send "$icon  Bluetooth" "\- Show Bluetooth Status.
  - Click to open Bluetooth Manager.
  - Middle click to show Connected Devices." ;;
  
  esac
  
    if [[ "$(bluetoothctl info)" != "Missing device address argument" ]]; then
      icon="  "
    else
      icon="  "
    fi
  
  printf "%s%s\\n" "$icon"

スクリプトはうまく機能しますが、中間クリック操作

2) notify-send "$icon Device Connected" "$(if [[ "$(bluetoothctl info)" != "Missing device address argument" ]]; then 
                                                  echo= "$(bluetoothctl info | grep "Name" | awk '{print $2}')"
else
                                                  echo= "No Device Connected" )" ;;

何も表示されません。デバイスを接続すると、「デバイス接続 - (デバイス名)」が表示されます。それ以外の場合は、「接続されていないデバイス」が表示されますが、クリック操作が機能しないようです。空の通知も表示されません。

答え1

問題のある人のために

 #!/bin/sh
  case $BLOCK_BUTTON in
          1) setsid -f blueman-manager ;;
          2) notify-send "$icon Device Connected" "$(if [ "$(bluetoothctl info)" != "Missing device address argument" ]; then
                                                  echo= bluetoothctl info | grep "Name" | awk '{print $2}'
        else
            echo 'No Device Connected'
                          fi )" ;;
          3) notify-send "$icon  Bluetooth" "\- Show Bluetooth Status.
  - Click to open Bluetooth Manager.
  - Middle click to show Connected Devices." ;;

  esac

    if [ "$(bluetoothctl info)" != "Missing device address argument" ]; then
      icon="  "
    else
      icon="  "
    fi

  printf "%s\\n" "$icon"

これが私が変えたものです。

2) notify-send "$icon Device Connected" "$(if [ "$(bluetoothctl info)" != "Missing device address argument" ]; then
                                                      echo= bluetoothctl info | grep "Name" | awk '{print $2}'
            else
                echo 'No Device Connected'
                              fi )" ;;
  1. IF文が閉じられていない場合は閉じました。
  2. echoはコマンドの代わりに実行され、最初の引数が「欠落しているデバイスアドレスパラメータ」と等しくないという要件を満たすと失敗します。
  3. 接続されているデバイスがない場合、echoはコマンドの代わりに実行され、失敗します。接続されているデバイスがないというメッセージのみを表示したいです。

詳細については、このリソース(https://github.com/koalaman/shellcheck/wiki/SC2091)

    printf "%s\\n" "$icon"

元のスクリプトは2つの文字列を提供しますが、渡すだけです。

関連情報