20200528のMacに関する記事は7件です。

ビデオチャット中に左シフトキーを押している間だけミュート解除し会話できるアプリをつくった

Google MeetやZOOMでビデオチャットをしているとき、マイクに雑音が入らないよう自分の発言中以外は基本的にミュートしているのですが、
ミュート解除を切り忘れたり、別画面を開いているとすぐにミュート解除できなかったりで、面倒だったのでキーボードの特定のキーを押している間だけミュートを解除してくれるアプリ「Cough Switch」を作成しました。

トランシーバーやレコーディングスタジオのトークバック機能のようなイメージです。

output2.gif

AppleScriptでマイクの音量を操作する

Macの場合、 システム環境設定 > サウンド > 入力 でマイク設定を操作することができます。
この入力音量を0にするとミュートされます。

スクリーンショット 2020-05-28 11.51.38.png

applescript
tell application "System Events" to set volume input volume 100

このスクリプトをjsから実行するにはこんな感じ

javascript
const applescript = require('applescript');
applescript.execString('tell application "System Events" to set volume input volume 100', function);

iohookですべてのキーボードイベントを取得する

さくっと作りたいのでまたElectronで簡単にアプリ化していきます。

Webのいつも通りにキーボード操作を取得しようと、
document.addEventListener("keydown", function)
としてしまうと、Windowがアクティブになっていないとキーボードイベントを取得できません。

electron.globalShortcutではkeyupイベントを取得できないので却下。

他に探してみたところiohookってやつで取得できるみたいです。
(特定のバージョンのNodeとElectronしかサポートしていないらしくちょっとはまった)

javascript
const iohook = require('iohook');

const KEYCODE = 42; // left shift key

iohook.on('keydown', (msg) => {
  if (msg.keycode === KEYCODE) {
    talk();
  }
});

iohook.on('keyup', (msg) => {
  if (msg.keycode === KEYCODE) {
    mute();
  }
});

どのキーに割り当てるか悩みましたが2つあるので、左シフトキーにしました。

Electronの最前面の触れない透明なWindowを作成

ミュート解除中のアイコンを表示させるために、最前面に触れないWindowを作成します。
さらに邪魔にならないよう背景を透明にします。

javascript
const appWindow = new BrowserWindow({
  transparent: true,
  frame: false,
  resizable: false,
  alwaysOnTop: true,
});

appWindow.setIgnoreMouseEvents(true);

appWindow.loadURL(`file://${__dirname}/index.html`);

これで最前面にHTMLが表示されます。
あとはキーボードイベントに応じて、Windowへ状態を送り、CSSでアイコンを表示させます。

javascript
appWindow.webContents.send('talk');

おわり

あとは前にやった MacBook Proの充電器の情報をメニューバーに表示するElectronアプリをつくった と同様にアプリケーション化して完成です。

icon_512x512.png

ソースコードはこちら(https://github.com/narikei/cough-switch)

おわりのおわり

デフォルトだとスピーカーの設定しかできないけど、
こういうときこそタッチバーの出番なのではないかな?
バックグラウンドのアプリでタッチバーを使えないのどうにかしてほしい。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Mac OS (Catalina) にHomebrewでgnuplot5をインストール

はじめに

Mac OS (Catalina) でgnuplotを使うためのメモ。

環境

MacOS 10.15.4
Xcode インストール済み

Homebrewのインストール

ターミナルで以下を実行。

$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"

参考:https://brew.sh/index_ja

brewでのエラーについては以下「エラーが出る場合」を参照。

gnuplotのインストール

ターミナルで、

$ brew upgrade
$ brew install gnuplot

を実行。

$ which gnuplot
/usr/local/bin/gnuplot

となれば成功。

$ gnuplot

で起動する。

エラーが出る場合

Catalinaではrootディレクトリが書き込み不可になり、Homebrewが死んだり、色々な問題が発生する。installかupgradeで以下のエラーが出ることがある。

$ brew install gnuplot
Updating Homebrew...
Error: The following directories are not writable by your user:
/usr/local/bin
/usr/local/include
/usr/local/lib
/usr/local/share
/usr/local/share/locale

You should change the ownership of these directories to your user.
  sudo chown -R $(whoami) /usr/local/bin /usr/local/include /usr/local/lib /usr/local/share /usr/local/share/locale

And make sure that your user has write permission.
  chmod u+w /usr/local/bin /usr/local/include /usr/local/lib /usr/local/share /usr/local/share/locale

この場合は、言われるがままに、sudo chownとchmodコマンドを実行する。
ついでに、

$ brew cleanup
$ brew doctor

すると、Xcodeが古いと言われたので、App StoreでXcodeを最新版(11.5)にアップデート。まだbrew doctorでWarningがいくつも出てるが、とりあえず無視する。

出力ターミナルについて

gnuplotといえば、--with-x11や--with-aquaterm、それと--with-pdfオプションをつけてインストールするのがお決まりだが、

$ brew info gnuplot

すると分かるように、HEADオプションしか存在しないので、今回はオプション無しでインストールした。するとデフォルトの出力はqtになる。

gnuplot> set terminal

で出力ターミナル一覧をみてもaquatermやx11は存在しない。
一瞬マジかよと思うが、実はqt出力は優秀である。下図がグラフ出力ウィンドウ。左上のアイコンをクリックすると、PDF、画像(PNG)での保存やクリップボードやプリンタへの出力ができるので問題ない。また、sin^2{/symbol q}のように指定するとギリシャ文字や上付き文字も指定できる。lで対数目盛、rでルーラーなどのウィンドウコマンドも健在。

image.png

epsファイルについては、以下のようにpostscript出力を使って直接生成できる。

gnuplot> set terminal postscript color eps
gnuplot> set out "aaa.eps" 
gnuplot> replot
gnuplot> set out #これをしておかないとplotのたびにaaa.epsに出力され続ける。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

bashrc改修備忘録

.bashrc
alias ll='ls -la'

# 出力の後に改行を入れる
function add_line {
  if [[ -z "${PS1_NEWLINE_LOGIN}" ]]; then
    PS1_NEWLINE_LOGIN=true
  else
    printf '\n'
  fi
}
PROMPT_COMMAND='add_line'

source ~/.git-prompt.sh

export PS1='\t \[\e[36m\]\u\[\e[0m\] \[\e[33m\] \W\[\e[0m\]\[\e[1;32m $(__git_ps1 "(%s)") \[\e[0m\] \n\$'
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Macのターミナル表示をいじったら幸せになった(.bashrc改修備忘録)


以下備忘録


  • 色とかつけたかったら以下の感じ
.bashrc
# 出力の後に改行を入れる
function add_line {
  if [[ -z "${PS1_NEWLINE_LOGIN}" ]]; then
    PS1_NEWLINE_LOGIN=true
  else
    printf '\n'
  fi
}
PROMPT_COMMAND='add_line'

source ~/.git-prompt.sh

export PS1='\t \[\e[36m\]\u\[\e[0m\] \[\e[33m\] \W\[\e[0m\]\[\e[1;32m $(__git_ps1 "(%s)") \[\e[0m\] \n\$'

こんな感じで色がつく。改行も。嬉しい。
スクリーンショット 2020-05-28 1.59.21.png

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Macのターミナル表示をいじったらモノクロだった私の人生に色がつきました。(.bashrc改修備忘録)

Macで開発しているとターミナルはよく利用しますよね?
デフォルトで表示されている文字列はなんか長いし見づらい!
そんな方は.bashrcを編集して好きな表示にしてしまいましょう!
(編集後はsource .bashrcを忘れずに!)

スクリーンショット 2020-05-28 1.59.21.png
↑こんな感じ


こちらのページ( https://qiita.com/hmmrjn/items/60d2a64c9e5bf7c0fe60 )を参考にさせていただきました!
詳しくはそちらを見てください。
このページではわたしが利用したものをご紹介します。


書式

sample
export PS1='Hello Prompt! \# \t \w \$ '

表示する内容を選ぶ

記号 意味
\h ホスト名 ka2ya's Macbook 
\u ユーザ名 ka2ya
\w ディレクトリ(フルパス) ~/Documents/GitHub
\W ディレクトリ GitHub
\t 時間 (24形式) 23:29:38
\T 時間 (12形式) 11:29:38
\@ AM / PM PM
\d 日付 Wed Jun 20
\D 日時 18/06/20 23:29:38
# コマンドの番号 (1, 2, 3...) 1
\n 改行
\$ 一般ユーザーの時 $、rootの時 # を表示 $

エスケープシーケンスで囲んで色の指定も可能

export PS1='装飾なし \[\e[32m\] ここは緑色 \[\e[0m\] 装飾なし \$ '
文字色 背景色
30m 40m 背景黒
31m 41m 背景赤
32m 42m 背景緑
33m 43m 背景黄
34m 44m 背景青
35m 45m 背景紫
36m 46m 背景水
37m 47m 背景灰

設定例(私のやつ)

.bashrc
# 出力の後に改行を入れる
function add_line {
  if [[ -z "${PS1_NEWLINE_LOGIN}" ]]; then
    PS1_NEWLINE_LOGIN=true
  else
    printf '\n'
  fi
}
PROMPT_COMMAND='add_line'

source ~/.git-prompt.sh

export PS1='\t \[\e[36m\]\u\[\e[0m\] \[\e[33m\] \W\[\e[0m\]\[\e[1;32m $(__git_ps1 "(%s)") \[\e[0m\] \n\$'

※ Gitフォルダだった場合にいい感じにする為に
~/.git-prompt.shを作成して以下のソースを入れとく

https://github.com/git/git/edit/master/contrib/completion/git-prompt.sh

スクリーンショット 2020-05-28 1.59.21.png

感想

「カラーがあれば、まいにちたのしい。」 by.GameboyColor

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Macのターミナル表示をいじったらモノクロだった私の人生に色がつきました。

Macで開発しているとターミナルはよく利用しますよね?
デフォルトで表示されている文字列はなんか長いし見づらい!
そんな方は.bashrcを編集して好きな表示にしてしまいましょう!
(編集後はsource .bashrcを忘れずに!)

スクリーンショット 2020-05-28 1.59.21.png

こちらのページ( https://qiita.com/hmmrjn/items/60d2a64c9e5bf7c0fe60 )を参考にさせていただきました!
このページではわたしが利用したものをご紹介します。

書式

sample
export PS1='Hello Prompt! \# \t \w \$ '
記号 意味
\h ホスト名 ka2ya's Macbook 
\u ユーザ名 ka2ya
\w ディレクトリ(フルパス) ~/Documents/GitHub
\W ディレクトリ GitHub
\t 時間 (24形式) 23:29:38
\T 時間 (12形式) 11:29:38
\@ AM / PM PM
\d 日付 Wed Jun 20
\D 日時 18/06/20 23:29:38
# コマンドの番号 (1, 2, 3...) 1
\n 改行
\$ 一般ユーザーの時 $、rootの時 # を表示 $

エスケープシーケンスで囲んで色の指定も可能

export PS1='装飾なし \[\e[32m\] ここは緑色 \[\e[0m\] 装飾なし \$ '
文字色 背景色
30m 40m 背景黒
31m 41m 背景赤
32m 42m 背景緑
33m 43m 背景黄
34m 44m 背景青
35m 45m 背景紫
36m 46m 背景水
37m 47m 背景灰

設定例(私のやつ)

.bashrc
# 出力の後に改行を入れる
function add_line {
  if [[ -z "${PS1_NEWLINE_LOGIN}" ]]; then
    PS1_NEWLINE_LOGIN=true
  else
    printf '\n'
  fi
}
PROMPT_COMMAND='add_line'

source ~/.git-prompt.sh

export PS1='\t \[\e[36m\]\u\[\e[0m\] \[\e[33m\] \W\[\e[0m\]\[\e[1;32m $(__git_ps1 "(%s)") \[\e[0m\] \n\$'

※ Gitフォルダだった場合にいい感じにする為に
~/.git-prompt.shを作成して以下のソースを入れとく

https://github.com/git/git/edit/master/contrib/completion/git-prompt.sh

スクリーンショット 2020-05-28 1.59.21.png

感想

「カラーがあれば、まいにちたのしい。」 by.GAMEBOY COLOR

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Macのターミナル表示をいじってモノクロな人生に色をつけよう

Macで開発しているとターミナルはよく利用しますよね?
デフォルトで表示されている文字列はなんか長いし見づらい!
そんな方は.bashrcを編集して好きな表示にしてしまいましょう!
(編集後はsource .bashrcを忘れずに!)

スクリーンショット 2020-05-28 1.59.21.png

こちらのページ( https://qiita.com/hmmrjn/items/60d2a64c9e5bf7c0fe60 )を参考にさせていただきました!
このページではわたしが利用したものをご紹介します。

書式

sample
export PS1='Hello Prompt! \# \t \w \$ '
記号 意味
\h ホスト名 ka2ya's Macbook 
\u ユーザ名 ka2ya
\w ディレクトリ(フルパス) ~/Documents/GitHub
\W ディレクトリ GitHub
\t 時間 (24形式) 23:29:38
\T 時間 (12形式) 11:29:38
\@ AM / PM PM
\d 日付 Wed Jun 20
\D 日時 18/06/20 23:29:38
# コマンドの番号 (1, 2, 3...) 1
\n 改行
\$ 一般ユーザーの時 $、rootの時 # を表示 $

エスケープシーケンスで囲んで色の指定も可能

export PS1='装飾なし \[\e[32m\] ここは緑色 \[\e[0m\] 装飾なし \$ '
文字色 背景色
30m 40m 背景黒
31m 41m 背景赤
32m 42m 背景緑
33m 43m 背景黄
34m 44m 背景青
35m 45m 背景紫
36m 46m 背景水
37m 47m 背景灰

設定例(私のやつ)

.bashrc
# 出力の後に改行を入れる
function add_line {
  if [[ -z "${PS1_NEWLINE_LOGIN}" ]]; then
    PS1_NEWLINE_LOGIN=true
  else
    printf '\n'
  fi
}
PROMPT_COMMAND='add_line'

source ~/.git-prompt.sh

export PS1='\t \[\e[36m\]\u\[\e[0m\] \[\e[33m\] \W\[\e[0m\]\[\e[1;32m $(__git_ps1 "(%s)") \[\e[0m\] \n\$'

※ Gitフォルダだった場合にいい感じにする為に
~/.git-prompt.shを作成して以下のソースを入れとく

https://github.com/git/git/edit/master/contrib/completion/git-prompt.sh

スクリーンショット 2020-05-28 1.59.21.png

まとめ

「カラーがあれば、まいにちたのしい。」 by.GAMEBOY COLOR

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む