小技チョコレート

ちょっとした小技を紹介するだけのブログです。

GNOME系デスクトップ環境で画面の明るさが維持されない問題の対処法

GNOMEや、GNOMEから派生したデスクトップ環境を用いるLinuxUbuntu、Manjaro GNOME Edition、Ubntu Budgieなど)において、ログイン後に端末で

$ xrandr --output VGA1 --brightness 0.7

などと入力すると、画面の明るさ(輝度)を変えることができますが、その操作を実行した後で、別のアクション(アプリケーションのウィンドウを開いたり、テキストエディタに文字を入力したり)をすると、画面の明るさが勝手に元に戻ってしまう(100%の明るさに戻る)という不具合が起こることがあります。

筆者は、この不具合を下記の4つのOSで経験しています。いずれも、GNOMEまたはGNOMEから派生したデスクトップ環境です。*1

  • Ubuntu 18.04 LTS
  • Manjaro GNOME Edition 17.1.10
  • Ubuntu Budgie 18.04 LTS
  • Zorin OS 12.3 Core

この不具合の対処法が、AdamKane41氏によりGitHubに発表されていたので、ここに和訳しておきます。*2 Ubuntu 18.04 LTSとManjaro GNOME Edition 17.1.10とUbuntu Budgie 18.04 LTSでこの対処法を実行してみたところ、成功しました(ログイン中には、明るさが勝手に100%に戻ることはなくなった)。


(ここからは翻訳)

※原文はこちら:Sometimes when I open a window (especially chromium) brightness controller resets brightness settings to default (not on app ui) · Issue #102 · LordAmit/Brightness · GitHubにおけるAdamKane41氏の回答

この不具合は /usr/lib/gnome-settings-daemon/gsd-color (GNOME Settings Daemon's color plugin) によって起こります。これがログイン時に自動で実行されることを防ぐことにより、xrandrコマンドなどで設定した画面の明るさや色を維持することができます。

設定方法

(1) GNOME Settings Daemon's color plugin は「自動起動するアプリケーション」にデフォルトで登録されていますが、デフォルトでは「自動起動するアプリケーション」のウィンドウ内に表示されない設定になっているので、端末で下記のコマンドを実行して、同ウィンドウ内に表示させるようにします。

sudo sed -i "s/NoDisplay=true/NoDisplay=false/g" /etc/xdg/autostart/*.desktop ~/.config/autostart/*.desktop

(2) 「自動起動するアプリケーション」を開きます(端末で gnome-session-properties と実行すれば開く*3)。そのウィンドウの中で、"GNOME Settings Daemon's color plugin"というタイトルのものを見つけ、オン/オフのスイッチを動かして「オフ」にしてから、このウィンドウを閉じます。

自動起動するアプリケーション
(「自動起動するアプリケーション」ウィンドウ内の"GNOME Settings Daemon's color plugin"。画像はGithubから引用)

(3) その後でログオフして再びログインし、上述のようなxrandrコマンドやBrightness Controllerのようなソフトで明るさや色を設定すれば、ログイン中にそれが勝手に変更されることはなくなります。

(4) そのとおりになったら、 GNOME Settings Daemon's color plugin を「自動起動するアプリケーション」のウィンドウ内に表示させるようにした上述の設定(1)を元に戻すために、下記のコマンドを端末で実行しましょう。

echo NoDisplay=true | find /etc/xdg/autostart ~/.config/autostart -name \*.desktop -exec sudo tee -a {} + >/dev/null

すべてをデフォルトに戻す方法

上述の設定をすべて取り消して元に戻すには、再び上述の1〜4を実行します。ただし、2のところで"GNOME Settings Daemon's color plugin"を(オフにするのではなく)オンにします。

(翻訳終わり)


その他の設定方法

Ubuntuの場合、 /etc/xdg/autostart/ に org.gnome.SettingsDaemon.Color.desktop というファイルがあります。これが、上述の手順において自動起動をオフにする対象となっているファイルでしょう。このファイルの内容は、デフォルトでは下記のようになっていると思います。

[Desktop Entry]
Type=Application
Name=GNOME Settings Daemon's color plugin
Exec=/usr/lib/gnome-settings-daemon/gsd-color
OnlyShowIn=GNOME;
NoDisplay=true
X-GNOME-Autostart-Phase=Initialization
X-GNOME-Autostart-Notify=true
X-GNOME-AutoRestart=true
X-Ubuntu-Gettext-Domain=gnome-settings-daemon

このファイルの末尾に、

X-GNOME-Autostart-enabled=false

と付け加えるだけでも、上述の手順の実行結果と同じ状態にできると思います*4*5

なお、この org.gnome.SettingsDaemon.Color.desktop というファイルは、ホームディレクトリの下の .config/autostart/ にも存在しているかもしれないので、存在していればそちらも同様に編集すべきかもしれません。

関連記事

*1:デスクトップ環境がXfceやCinnamon、KDE、MATEであれば、この不具合は起こりませんでした。

*2:訳者による補足を適宜入れていますので、原文にない文言もあります。

*3:Manjaro GNOME Editionなどのように、「自動起動するアプリケーション(gnome-session-properties)」がデフォルトではインストールされていないディストリビューションもあります。その場合は、この記事の後半に載せている「その他の設定方法」を実行すればよいと思います。

*4:このファイルをそのように編集するには、例えばテキストエディタとしてgeditを使う場合なら、端末で sudo gedit /etc/xdg/autostart/org.gnome.SettingsDaemon.Color.desktop と実行する。

*5:NoDisplay=true のところを NoDisplay=false に変えれば、"GNOME Settings Daemon's color plugin"が、上述の画像のように「自動起動するアプリケーション」のウィンドウ内に表示されるようになると思います。

luckyBackupが意図しない時刻にも実行される場合の対処法

例えば、毎日の午前9:00に自動でバックアップをするようluckyBackupで設定してあるのに、その時刻以外にもluckyBackupが自動でバックアップを行う、という現象が起こることがあるようです。

それは、luckyBackupの"schedule"の画面で remove のボタンと cron IT!! のボタンを押して取り除いたはずのスケジュールが、crontabファイルからは正しく取り除かれずに残ってしまい、その残ったものが実行されているせいではないか、と思われます。

f:id:ichbin:20180513212413p:plain
(例えば、この画像に載っている15:00と21:00のスケジュールを remove ボタンで消してから cron IT!! を押しても、crontabファイルからはその2つのスケジュールが消えていない、というようなこと)

端末で

crontab -l

と入力すると、ログイン中のユーザーのcrontabファイルの内容が表示されます。その中で、

# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ luckybackup entries ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
0 9 * * *   /usr/bin/luckybackup -c --no-questions --skip-critical /home/〈ユーザー名〉/.luckyBackup/profiles/default.profile > /home/〈ユーザー名〉/.luckyBackup/logs/default-LastCronLog.log 2>&1
0 15 * * *  /usr/bin/luckybackup -c --no-questions --skip-critical /home/〈ユーザー名〉/.luckyBackup/profiles/default.profile > /home/〈ユーザー名〉/.luckyBackup/logs/default-LastCronLog.log 2>&1
0 21 * * *  /usr/bin/luckybackup -c --no-questions --skip-critical /home/〈ユーザー名〉/.luckyBackup/profiles/default.profile > /home/〈ユーザー名〉/.luckyBackup/logs/default-LastCronLog.log 2>&1
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ end of luckybackup entries ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

というように、"luckybackup entries"と"end of luckybackup entries"で挟まれた領域(行)が、luckyBackupのスケジュールを示しています。行頭が"0 9 * * *"などとなっているのが、個々のスケジュールに相当します。上述の例では3つのスケジュールが存在しています。

luckyBackupの画面で消したはずのスケジュールが、この挟まれた領域の中で消えずに残っていれば、それを消すことで、luckyBackupの不要な実行を止めることができます。*1

その手順を紹介します。

まず、crontabファイルを編集するエディタを指定します。ここでは例としてgeditを指定することにします。

端末を起動し、

$ EDITOR=gedit
$ export EDITOR

と入力。

次に、同じく端末で

crontab -e

と入力。

すると、geditが起動し、下記のようなテキストが表示されます。

# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ luckybackup entries ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
0 9 * * *    /usr/bin/luckybackup -c --no-questions --skip-critical /home/〈ユーザー名〉/.luckyBackup/profiles/default.profile > /home/〈ユーザー名〉/.luckyBackup/logs/default-LastCronLog.log 2>&1
0 15 * * *    /usr/bin/luckybackup -c --no-questions --skip-critical /home/〈ユーザー名〉/.luckyBackup/profiles/default.profile > /home/〈ユーザー名〉/.luckyBackup/logs/default-LastCronLog.log 2>&1
0 21 * * *    /usr/bin/luckybackup -c --no-questions --skip-critical /home/〈ユーザー名〉/.luckyBackup/profiles/default.profile > /home/〈ユーザー名〉/.luckyBackup/logs/default-LastCronLog.log 2>&1
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ end of luckybackup entries ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

消したい行があれば削除します。"luckybackup entries"と"end of luckybackup entries"で挟まれた領域以外は、編集しません。

編集し終わったら、geditで「保存」を実行。そしてgeditを閉じます。その時点で、端末にcrontab: installing new crontabというメッセージが表示されれば、これで完了です。*2

関連記事

*1:この挟まれた領域が、crontabファイルの中に、同一の内容で複数存在していることもあるかもしれません。その場合も、1つだけ残して他は消せます。

*2:その時点で端末に"crontab: no changes made to crontab"というメッセージが出ていたら、何らかの理由でcrontabファイルの変更ができていません。使用するエディタをviに変えるなどして再度実行するとよいかもしれません。

luckyBackupで自動バックアップができないときのチェックポイント

Linux用のバックアップソフト「luckyBackup」で自動バックアップができないときに、チェックするとよいと思われるところを紹介します。

(1) Task propertiesの画面で、SourceやDestinationの欄に半角英数字以外の文字が入っていないか(入れるべきではないみたい。フォルダ名に日本語が含まれていると、これに該当する)。

f:id:ichbin:20180511182742p:plain

(2) スケジュールを編集する画面で、

  • skip criticalの欄にチェックが入っていないか(チェックを入れると、"critical"というカテゴリに当てはまる処理は、スキップ=不実行となる)。
  • Console Modeの欄にチェックを入れたか(チェックを入れないといけない、という情報がある(参照12)。

f:id:ichbin:20180511182803p:plain

(3) scheduleの画面で、 cronIT!! のボタンを押し忘れていないか。

f:id:ichbin:20180513171922p:plain

(4)crondが起動していないのではないか。

Luckybackupに、バックアップを自動で実行させるためには、crondが起動していなければなりませんが、Linuxの起動時にcrondを自動で起動する状態になっていない場合もあるようです。

Linuxの起動時にcrondを自動で起動させるように設定する仕方はいくつかあるようで、たとえばArch Linux系であればこちらのようにするとできます。

関連記事

Spotifyで「お気に入りの曲」に追加した曲の曲名・アーティスト名・アルバム名などを自動でGoogleスプレッドシートに記録する方法

Spotifyで「お気に入りの曲」(お気に入りソング)に追加するというのは、こちらの画像のように、曲名の隣などにあるハート形のアイコンを押すことです。このアイコンを押された曲は、Spotifyの「お気に入りの曲」に追加されます。

f:id:ichbin:20181118221620p:plain

f:id:ichbin:20181118221636p:plain

このようにして「お気に入りの曲」に追加した曲の曲名/アーティスト名/アルバム名などを、自動でGoogleスプレッドシートに記録する方法を紹介します。


〈目次〉


機能

  • 「お気に入りの曲」に追加した各曲について、Googleスプレッドシートに自動で記録できる情報はこの6つです。
    • 「お気に入りの曲」に追加した日時
    • 曲名
    • アーティスト名
    • アルバム名
    • カバー画像(Web上の画像へのリンク)
    • SpotifyでのURL
  • Spotifyで「お気に入りの曲」に追加してから、Googleスプレッドシートへ記録されるまでのタイムラグは、数十分〜最大で2時間程度と思われます。
  • 利用は無料で広告もありません。
  • Spotifyの有料版を使う必要はありません。
スプレッドシートのサンプル

このようなスプレッドシートができます。

f:id:ichbin:20180513091803p:plain

必要なもの

  • IFTTTというサービスを使うので、IFTTTのアカウント(無料)が必要です。
  • Googleのアカウント

設定の手順

ここでは、Webブラウザを使った設定の手順を示します。IFTTTのモバイルアプリ(Android版 / iOS版)でも、概ね同じ手順で実行できます。

WebブラウザIFTTTSign in(ログイン)。IFTTTのアカウントを持っていない場合は、トップページの"Sign up"をクリックしてアカウント作成をします。*1

f:id:ichbin:20180513062842p:plain

次に、ブラウザで Automatically add your saved tracks in Spotify to a Google spreadsheet - IFTTT を開きます。

f:id:ichbin:20180513062925p:plain

その画面の下のほうにある、白字で“Turn On”と書いてあるところをクリック。

f:id:ichbin:20180513062935p:plain

すると、その左側にある緑色の丸が右へ動いて、"Turn On"の文字が"On"に変わります。これで設定は完了です。

※ただし、自分のSpotifyGoogleのアカウントがIFTTTに連携されていない状態であれば、それらのアカウントをIFTTTに連携させる手続きがここから始まります。その部分の説明は割愛しますが、IFTTTの画面の指示通りに操作すれば、最終的には、ブラウザの画面上部に Success! You turned on the Applet という表示が出ます。それで設定は完了です。

以降は、Spotifyで「お気に入りの曲に追加」の操作をするたびに、その曲の曲名・アーティスト名・アルバム名・カバー画像へのリンク・SpotifyでのURLがGoogleスプレッドシートに自動で記録されていきます。

記録のテスト

上述の手順を終えた後で、Spotifyで実際に「お気に入りの曲に追加」の操作をしてみます。

ここでは、例として、

の2曲を「お気に入りの曲」に追加してみました。

上述のとおり、「お気に入りの曲」へ追加後すぐにGoogleスプレッドシートへ記録されるわけではなく、記録の完了まで数十分〜2時間程度のタイムラグがあります。

待ちたくない場合は、 https://ifttt.com/my_applets を開きます。

f:id:ichbin:20180513084746p:plain

上述の手順で作成したIFTTTの設定が、緑色の四角形で表示されているので、それをクリック(この画像では左上のもの)。

次の画面を下のほうにスクロールし、

f:id:ichbin:20180513082250p:plain

緑色の領域の右下にある"Check now"をクリック。すると、"Applet checked"という文字がブラウザの上部に数秒間だけ表示されるはずです。

次に、Googleスプレッドシートのトップページ(https://docs.google.com/spreadsheets/u/0/)を開きます。

f:id:ichbin:20180513081817p:plain

Spotify Saved Tracks」というスプレッドシートができているはずです。これを開きます。

f:id:ichbin:20180513082507p:plain

「お気に入りの曲」に追加した曲の情報が、このように入力されているはずです。

左から順に、保存日時・曲名・アーティスト名・アルバム名・カバー画像へのリンク・SpotifyでのURLという順番です。*2

保存日時が新しいものほど、下の行に記入されていきます。

スプレッドシートの整形

1行目の上に行を挿入し、各列の内容を示すタイトルを付けると便利です。列の幅も広げたほうが読みやすいでしょう。

f:id:ichbin:20180513083213p:plain

記録を中止または再開する方法

IFTTTにログインしたうえで https://ifttt.com/my_applets を開きます。

f:id:ichbin:20180513084746p:plain

上述の手順で作成したIFTTTの設定が、緑色の四角形で表示されているので、それをクリック(この画像では左上のもの)。

次の画面を下へスクロールし、

f:id:ichbin:20180513082250p:plain

黒字で“On”と書いてあるところをクリックすると、緑色の丸が左に動き、画面内の緑色の部分が灰色に変わります。これで、スプレッドシートへの記録は停止します。

停止中は、この箇所には“Turn on”と表示されているはずです。スプレッドシートへの記録を再開したいときは、その“Turn on”をクリックします。すると、表示が再び“On”に変わり、記録が再開します。

スプレッドシートのファイル名・内容・保存されるフォルダ位置を変更する方法

IFTTTにログインしたうえで、 https://ifttt.com/my_applets を開きます。

f:id:ichbin:20180513084746p:plain

上述の手順で作成したIFTTTの設定が、緑色の四角形で表示されているので、それをクリック(この画像では左上のもの)。

次の画面で、緑色の四角形の右上にある歯車のアイコンをクリック。

f:id:ichbin:20180513073513p:plain

すると、設定画面が開きます。

f:id:ichbin:20180513073557p:plain

下にスクロールしていきます。*3

f:id:ichbin:20180513073617p:plain

"Spreadsheet name"という欄に入力されているのが、スプレッドシートのタイトル(ファイル名)です。スプレッドシートのタイトルを変えたい場合は、ここを編集します。

f:id:ichbin:20180513074311p:plain

"Formatted row"という欄は、スプレッドシートの各行に記入される内容と順番を決めるものです。黒字で書いてあるものは、それぞれ、

  • SavedAt:「お気に入りの曲」に追加した日時
  • TrackName:曲名
  • ArtistName:アーティスト名
  • AlbumName:アルバム名
  • AlbumCoverURL:カバー画像のURL*4
  • TrackURL:SpotifyでのURL

を意味しています。"Add ingredient"をクリックすると、これらをワンクリックで入力できます。また、|||という記号は、スプレッドシートでのセルの区切りを意味します。この欄内での改行は、スプレッドシートでの行替えを意味します。

この欄の中身はテキストなので、テキストエディタなどで編集できます。欄の中身を並べ替えれば、スプレッドシートの各行に記入される順番を変えることができます。不要なものを消すこともできます。

"Drive folder path (optional)"という欄は、Googleドライブ内でスプレッドシートが保存される場所を指定するものです。デフォルトでは IFTTT/Spotify と入力されています。これは、〈Googleドライブの『マイドライブ』の中の、IFTTTフォルダの中の、Spotifyフォルダ〉にスプレッドシートが保存されるということを意味しています。保存場所を変えたい場合は、この欄を編集します。

各欄への入力をすませたら、下の方にある"Save"をクリック。

SpotifyGoogleのアカウントを変える方法

Googleスプレッドシートに記録をとる対象とするSpotifyのアカウントを、別のアカウントに変えたい場合は、ブラウザでIFTTTにログインしたうえで、 https://ifttt.com/services/spotify/settings を開きます。

f:id:ichbin:20180513071000p:plain

"Edit connection"をクリックすると、アカウントを変える設定画面が開きます。

スプレッドシートを保存するGoogleアカウントを変えたい場合は、 https://ifttt.com/services/google_sheets/settings にアクセスして、Spotifyの場合と同様に操作します。

関連記事

IFTTTを使ってSpotifyを自動化すると、ほかにも色々なことができます。

Spotify以外のサービスに対しても、同じようなことができます。

*1:IFTTTのアカウントを新たに作った場合は、IFTTTから「Confirm your IFTTT account」といった件名のメールが届きます。メールの中の「Confirm your account」というリンクをクリックしておいてください。

*2:カバー画像をクリックすると、ブラウザで大きな画像が表示されます。

*3:この設定画面の先頭のほうにある、 Receive notification when this Applet runs という項目は、「Googleスプレッドシートへの記録が実行されるたびに、IFTTTのモバイルアプリで通知を出すかどうか」を決めるものです。IFTTTのモバイルアプリをスマートフォンなどにインストールしていない場合は、オン/オフのどちらを選んでも差はありません。

*4:スプレッドシート上にカバー画像を表示するのに時間がかかることがあるので、AlbumCoverURLは含めないほうが使いやすいかもしれない。