gdm3とlightdmでログイン時にユーザを表示しないようにする

gdm3

先ずはgdm3から.
環境は,Debian stretch testing gdm3 3.18.0-2です.

/etc/gdm3/greeter.dconf-defaultsを編集して,[org/gnome/login-screen]セクションのdisable-user-list=trueのコメントを外して有効にする.

[org/gnome/login-screen]
disable-user-list=true

その後gdm3を再起動.

$ sudo systemctl stop gdm
$ sudo systemctl start gdm

#初め/etc/gdm3/greeter.dconf-defaultsはテンプレートなのかと思って/etc/gdm3/greeter.dconfにコピーして編集して反映されないなーとやっていましたorz

LightDM

LightDMの場合.
環境は,Debian stretch testing lightdm 1.16.6-1です.

/etc/lightdm/lightdm.conf[LightDM]セクションのgreeter-hide-users=trueのコメントを外して有効にする.

greeter-hide-users=true

--show-configオプションで設定が確認できます.

$ /usr/sbin/lightdm --show-config
   [Seat:*]
A  greeter-session=lightdm-greeter
A  greeter-hide-users=true
A  session-wrapper=/etc/X11/Xsession
B  user-session=kde-plasma-kf5

   [LightDM]
C  greeter-hide-users=True
C  allow-guest=False

   [XDMCPServer]
C  enabled=true

Sources:
A  /usr/share/lightdm/lightdm.conf.d/01_debian.conf
B  /usr/share/lightdm/lightdm.conf.d/40-kde-plasma-kf5.conf
C  /etc/lightdm/lightdm.conf

その後LightDMの再起動.

$ sudo systemctl stop lightdm
$ sudo systemctl start lightdm

ディスプレイマネージャの切り替え

dpkg-reconfigureに導入済みのディスプレイマネージャのパッケージ名(どれでも)を付けて起動すると,導入済みのディプレイマネージャから選択できます.

$ sudo dpkg-reconfigure gdm3
 ┌─────────────────────────────────────────────────────────────────────┤ gdm3 を設定しています ├─────────────────────────────────────────────────────────────────────┐  
 │ ディスプレイマネージャとは、X Window System 上でのグラフィカルなログイン機能を提供するものです。                                                                  │  
 │                                                                                                                                                                   │  
 │ ひとつの X サーバを管理できるのはひとつのディスプレイマネージャだけですが、ディスプレイマネージャパッケージが複数インストールされています。どのディスプレイマネ   │  
 │ ージャをデフォルトで起動させるか選択して下さい。                                                                                                                  │  
 │                                                                                                                                                                   │  
 │ 異なるサーバを担当するように設定すれば、複数のディスプレイサーバは同時に動作できます。そのようにするには、/etc/init.d にある各ディスプレイマネージャの初期化スク  │  
 │ リプトを編集し、デフォルトディスプレイマネージャのチェックを無効にして下さい。                                                                                    │  
 │                                                                                                                                                                   │  
 │ デフォルトのディスプレイマネージャ:                                                                                                                               │  
 │                                                                                                                                                                   │  
 │                                                                              gdm3                                                                                 │  
 │                                                                              lightdm                                                                              │  
 │                                                                              sddm                                                                                 │  
 │                                                                                                                                                                   │  
 │                                                                                                                                                                   │  
 │                                                                              <了解>                                                                               │  
 │                                                                                                                                                                   │  
 └───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘  

GNU coreutilsのmktempを試す

あるscriptを見ていたらmktempというコマンドを見かけました.GNU coreutilsの中の1つのようです.ユニークなテンポラリファイルやディレクトリが作成できるようです.

同じようなことをやるのにこれまではこんな感じで年月日やエポックにPIDを付けたりしてました><

$ TMP_FILE=`date +hoge-%F_%T-$$`
$ touch $TMP_FILE
$ ls -l $TMP_FILE
-rw-r--r-- 1 mk mk 0  2月 14 18:37 hoge-2016-02-14_18:36:59-13299
$ TMP_FILE=`date +hoge-%s-$$`
$ touch $TMP_FILE
$ ls -l $TMP_FILE
-rw-r--r-- 1 mk mk 0  2月 14 18:50 hoge-1455443448-13299

mktempの場合は規定値で10桁のランダムな文字が付くようです.更にファイル存在チェックもしているので衝突も起こらないという感じみたいです.

$ mktemp
/tmp/tmp.E66dzdpxMa
$ ls -l /tmp/tmp.E66dzdpxMa
-rw------- 1 mk mk 0  2月 14 18:25 /tmp/tmp.E66dzdpxMa

-dオプションでディレクトリが作成できます.

$ mktemp -d
/tmp/tmp.EFmqt7L0nY
$ ls -la /tmp/tmp.EFmqt7L0nY
合計 0
drwx------ 1 mk   mk      0  2月 14 18:27 .
drwxrwxrwt 1 root root 2920  2月 14 18:27 ..

ファイル名のテンプレートもカスタマイズできます.Xがランダム部になります.3文字以上無いと怒られます.
ランダム部のX部分が複数あると最後尾がランダムになるようです

$ mktemp XXX
zfG
$ mktemp XX
mktemp: テンプレート `hoge-XX' に含まれている X の数が少なすぎます
$ mktemp hoge-XXX
hoge-60h
$ mktemp hoge-XXXXXXXXXXXXXXXXXXXXXXXXXXXX
hoge-26CXkffROkyzwuUhej3Lza4KcdbC
$ mktemp XXX-XXX
XXX-m01
$ mktemp XXX-XXX-XXX
XXX-XXX-wqd

拡張子の指定は--suffixかテンプレートで指定できます.

$ mktemp --suffix=.log hoge-XXXX
hoge-LqWm.log
$ mktemp hoge-XXXX.log
hoge-lxtg.log

-uオプションでドライランです.でも存在チェックのタイミングがずれるのでこのファイル名を使うのは安全ではありません.

$ mktemp -u
/tmp/tmp.hdiPeJef1s
$ ls -l /tmp/tmp.hdiPeJef1s
ls: /tmp/tmp.hdiPeJef1s にアクセスできません: そのようなファイルやディレクトリはありません

-pオプションで作成されるディレクトリの変更が出来ます.(規定値は/tmp)
存在しないディレクトリを指定すると怒られるようです.

$ mktemp -p $HOME/tmp
/home/mk/tmp/tmp.dlx75Z6Wyn
$ mktemp -p `mktemp -u -d -p $HOME/tmp`
mktemp: テンプレート `/home/mk/tmp/tmp.jhGdkmp5SG/tmp.XXXXXXXXXX' からファイルを作成できません: そのようなファイルやディレクトリはありません

mktemp(3)もあるよう.

詳細はman mktemp, info mktempを.

しかしGNU coreutilsみたいな基本的なコマンドでさえ知らない使い方のわからないコマンドが結構あるのでダメですねorz
調べなければ……

$ dpkg -L coreutils | grep bin/
/usr/sbin/chroot
/usr/bin/hostid
/usr/bin/link
/usr/bin/printf
/usr/bin/truncate
/usr/bin/pr
/usr/bin/sha1sum
/usr/bin/nice
/usr/bin/tee
/usr/bin/realpath
/usr/bin/tac
/usr/bin/printenv
/usr/bin/arch
/usr/bin/logname
/usr/bin/sha384sum
/usr/bin/fold
/usr/bin/users
/usr/bin/yes
/usr/bin/paste
/usr/bin/factor
/usr/bin/pathchk
/usr/bin/basename
/usr/bin/dircolors
/usr/bin/du
/usr/bin/shuf
/usr/bin/sha224sum
/usr/bin/head
/usr/bin/tty
/usr/bin/join
/usr/bin/test
/usr/bin/runcon
/usr/bin/base64
/usr/bin/sha512sum
/usr/bin/id
/usr/bin/dirname
/usr/bin/numfmt
/usr/bin/nl
/usr/bin/install
/usr/bin/split
/usr/bin/od
/usr/bin/groups
/usr/bin/env
/usr/bin/tr
/usr/bin/comm
/usr/bin/md5sum
/usr/bin/nproc
/usr/bin/pinky
/usr/bin/uniq
/usr/bin/ptx
/usr/bin/sha256sum
/usr/bin/cksum
/usr/bin/who
/usr/bin/cut
/usr/bin/[
/usr/bin/csplit
/usr/bin/expand
/usr/bin/unexpand
/usr/bin/seq
/usr/bin/stdbuf
/usr/bin/unlink
/usr/bin/chcon
/usr/bin/timeout
/usr/bin/tsort
/usr/bin/expr
/usr/bin/stat
/usr/bin/tail
/usr/bin/mkfifo
/usr/bin/sort
/usr/bin/nohup
/usr/bin/fmt
/usr/bin/whoami
/usr/bin/sum
/usr/bin/wc
/usr/bin/shred
/bin/cp
/bin/dd
/bin/false
/bin/readlink
/bin/echo
/bin/vdir
/bin/mknod
/bin/rm
/bin/df
/bin/rmdir
/bin/sleep
/bin/true
/bin/date
/bin/stty
/bin/ln
/bin/mktemp
/bin/cat
/bin/ls
/bin/uname
/bin/chmod
/bin/touch
/bin/mv
/bin/sync
/bin/mkdir
/bin/dir
/bin/chgrp
/bin/chown
/bin/pwd
/usr/bin/md5sum.textutils

翻訳メモリのために.moから.poを作ったメモ

20160216_06:02:28-15473

久々に翻訳をしようと思い立ちました.そこで翻訳メモリを作ると楽が出来るはずと既存の翻訳ファイルを突っ込んだメモです.

Debianパッケージで導入された.moを一括で.poに変換

ここでは/usr/share/locale/ja/LC_MESSAGES/*.moを利用しています.Debian/Ubuntu系なら同じでしょう.

$ export TMP=$(mktemp -d)
$ echo $TMP
/tmp/tmp.3ARspdBIMI
$ ls -1 /usr/share/locale/ja/LC_MESSAGES/ | egrep \.mo$ | xargs -n1 -I{} msgunfmt /usr/share/locale/ja/LC_MESSAGES/{} -o $TMP/{}.po

色々なソースを置いてあるディレクトリ以下からja.poをコピー

これは私がここに置いてるからというだけです.やらなくていいです.

$ find ~/src -iname "ja.po" | xargs -n1 -I{} cp {} $TMP

Poeditを起動して読み込む

  • 「編集(E)」->「設定(P)」
  • 「翻訳メモリ」タブ
  • 「ファイルから学習…」ボタンを押して用意した.poを読み込む.

20160216_06:02:02-14632

20160216_06:02:30-14314

20160216_06:02:38-14388

20160216_06:02:51-13986

翻訳メモリを使う

Poeditで翻訳対象の.poを読み込んで

  • 「カタログ(A)」->「翻訳メモリを使って未翻訳項目を埋める…(T)」

20160216_06:02:48-22901

20160216_06:02:53-22974

20160216_02:02:16-28154

20160216_06:02:12-25100

翻訳の提案も出てきます.

大助かりです :)
#でもきっともっといい方法がある気がする.

ひょうたん書店閉店

※この「沢山の写真」は以下のページにまとめられている.

来週は鹿児島に行くのでひょうたん書店でバニー坂とかを買おうとか4月辺りのオフ会でレンタルスペースを借りてみようとか思っていたところでした.閉店の昨日も行きたかったのですがちょうど家人が家を空けていて家を離れられなかったのですorz

ひょうたん書店には鹿児島市在住の20年ほど前に出会いました.当時は1階が普通の品揃えで2階がコミックやラノベ専門な感じでした.一時期は毎日のように通ってました.アルバイトを始めると閉店に間に合わなくて毎日は無理になりましたがそれでも週に何度か通ったものでした.
その後関東に引っ越しましたが,関東にいても深夜アニメのスポンサーの件なんかでたまに噂を聞いたり,帰省の際にはなるべく寄って帰省時に読む本を買ったりおさんぽ大王で天文館店の存在を知って行ってみたりしていました.
#国分店には行けずじまいだったのが心残り.

一般コミックやラノベについては天文館の丸善(ここはここで頑張っている.担当者がコミックに力を入れているのがわかる.ジュンク堂との合併で専門書などは全部ジュンク堂扱いになったけどコミックだけは増床している)でどうにかなりそうですが,それ以外の本やゲームなどは鹿児島では入手できなくなりそうです.これはかなり辛いものがあります.通販があるじゃないかという声もありそうですが,やはり手にとって見比べられる,セレクトされているというのは大きいです.
#アニメイト鹿児島店は自分の買う物はあまり置いてない…….

通販業務は続けられるそうです.こちらが伸びればまた店舗再開ということもあるのかな?

ひょうたん書店の通信販売は利用したことがないのですが,楽天とYahoo!を利用しているようです.品揃えは新刊のセットのみのよう.続き物は買いづらいですね.薄利だし送料無料が一般的になっているのでこういう形態でないと利益が出ないんでしょうね.個人的には送料が掛ってもいいので新刊も扱って欲しいですが…….
新刊セットが欲しい時はなるべく利用していこうと思います.

<追記>Amazonも見つけました.送料はかかるけどセット以外もあるみたい</追記>


第46話「おさんぽ大王warp!」(第4巻)にひょうたん書店でのサイン会の様子が載っている.

文庫版では3巻に掲載.

来週これとか買おうと思っていた…….最後の買い物はコミケカタログでした.


old-old-stableのDebian squeeze-LTSのサポートがもうすぐ終了


splash-squeeze

The Debian Long Term Support (LTS) Team hereby announces that Debian 6.0 (squeeze) support will reach its end-of-life on February 29, 2016, five years after its initial release on February 6, 2011.

There will be no further security support for Debian 6.0.

Debian 6 “Squeeze” until February 2016
Debian 7 “Wheezy” from February 2016 to May 2018
Debian 8 “Jessie“ from May 2018 to April/May 2020

LTS開始時のアナウンスなど

ということでDebian old-old-stableの長期サポート版squeeze-LTSが今月いっぱいでEOLです.当初は2/6までとなっていましたが1月近く伸びたようですね.
old-stableのwheezyかstableのjessieに移行しましょう.(国際宇宙ステーションのsqueezeはアップグレードされたのかな?)
Debianのアップグレードは簡単ですけど動作しているアプリケーションはバージョンが上がるので要設定だったりとちょっと面倒ですが必要な作業です.

今動いているバージョンがわからないよという方は以下のようなコマンドを実行して6若しくはそれより前のバージョンであればアップグレード対象です.

$ cat /etc/debian_version
6.0.10
$ lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description:    Debian GNU/Linux 6.0.10 (squeeze)
Release:        6.0.10
Codename:       squeeze

アップグレードの具体的な手順はリリースノートの第4章が参考になるでしょう.

万が一の時のためにバックアップを取得してから作業を行いましょう!
#作業依頼もお待ちしています.

cd(change directory)コマンドの-(hyphen)オプションを今頃知る

以下の記事を読んで知ったのですが,

「さっきいた場所に戻る」の呪文を覚えておきたい。それは「cd -」だ。
画面のように、cdコマンドに引数として「-」のみを指定すると、直前にいたディレクトリに戻ることができる。

毎日何十回も叩いているであろうコマンドなのに知らなかったですorz

mk@x220:~$ cd usr/local/bin
mk@x220:~/usr/local/bin$ cd
mk@x220:~$ cd -
/home/mk/usr/local/bin
mk@x220:~/usr/local/bin$

なるほど確かに.
これは便利ですね.ちなみに同じようなことをするのにpushd/popdを使っていました.組み合わせて使っても大丈夫みたいですね.

mk@x220:~/usr/local/bin$ pushd /tmp
/tmp ~/usr/local/bin
mk@x220:/tmp$ cd
mk@x220:~$ cd -
/tmp
mk@x220:/tmp$ cd /
mk@x220:/$ popd
~/usr/local/bin
mk@x220:~/usr/local/bin$ cd

手元の環境でGNU bash 4.3.42, Zsh 5.2, DASH 0.5.8, BusyBox v1.22.1built-in shell (ash)で動作するのを確認しました.
#そしてpushd/popdDASH, ashに無いのを確認orz

しかしこういうの未だいっぱいあるんだろうなーorz




色温度を自動的に変更して健康に気を使う(ブルーライトカット)

backspace.fmでドリキンさんがf.luxがいいと言っているのを聞いて以前Linux環境でブルーライトカット系のアプリを少し試したのを思い出しました.

その時はdebianでf.luxは自分でリポジトリを登録するのが面倒でパッケージの用意されているgnome-shell-extension-redshiftredshiftを試してみたのでした.f.luxインスパイアらしいし.
これらはf.luxと同じようにネットワーク情報から位置情報を取得し,端末の場所の太陽の位置により色温度を変化させるアプリケーションです.夜は色温度を低くしてブルーライトを軽減させます.これによりブルーライトを睡眠前に受ける量が減って寝つきやすくなったり睡眠の質が良くなるかもという効果を期待しています.
しかし,gnome-shell-extension-redshiftはうまく有効にならず,redshiftは位置情報の取得に失敗して手動で動作させていたのでした.

今回もdebian環境でredshift-gtkを試してみました.これは実体はredshiftでタスクトレイに常駐するものです.一時的にon/offすることも簡単に出来るので便利です.

実行するとタスクトレイに電球と月のアイコンが表示されます.クリックすると以下のようなメーニューが.
20160211_06:02:18-13459

画像編集などで一時的に機能を切りたい場合などサスペンドする機能もあります.
20160211_06:02:31-13554

インフォメーションの表示.朝6時頃なので色温度がだんだん高くなっていくところです.
20160211_06:02:28-4511

設定ファイルの作成

規定値で動作させてもだいたい問題ないのですが,カスタマイズしたかったり位置情報が誤った場所のものになっている場合など設定を変更したくなることがあります.
redshiftをコマンドで実行する場合はオプションが指定できますが,redshift-gtkの場合は設定ファイルで指定可能です.
場所は~/.config/redshift.confです.;以降はコメントとして扱われるようです.

メインとなる[redshift]セクションの説明です.

  • temp-day : 昼間の色温度,規定値は5500
  • temp-night : 夜間の色温度,規定値は3700
  • transition : スムーズな遷移の無効有効の設定(0 or 1)
  • brightness-day : 昼間のブライトネス設定(0.1~1.0)
  • brightness-night : 夜間のブライトネス設定(0.1~1.0)
  • gamma : ガンマ値の設定(0.1~10.0)
  • adjustment-method : 調整方法の選択
$ redshift -m list
Available adjustment methods:
  drm
  randr
  vidmode
  dummy
 
Specify colon-separated options with `-m METHOD:OPTIONS'.
Try `-m METHOD:help' for help.
  • location-provider : ロケーションプロバイダの指定.listオプションで確認できます.現在はgeoclue2とmanualが選べるようです.
$ redshift -l list
Available location providers:
  geoclue2
  manual
 
Specify colon-separated options with`-l PROVIDER:OPTIONS'.
Try `-l PROVIDER:help' for help.

adjustment-methodを指定した場合それぞれのセクションでオプションを指定可能です.
内容は$ redshift -m randr:helpのようにメソッド名:helpで確認できます.

[redshift]
 :
adjustment-method=randr
 :
[randr]
screen=1

location-providermanualにした場合[manual]セクションで緯度経度を指定します.度.分のみで秒まで指定するとエラーとなります.
以下は鹿児島県の場合です.

[manual]
lat=31.33
lon=130.33

ということで今こんな感じで使っています.

; Global settings for redshift
[redshift]
; Set the day and night screen temperatures
temp-day=5700
temp-night=3600
; Enable/Disable a smooth transition between day and night
; 0 will cause a direct change from day to night screen temperature.
; 1 will gradually increase or decrease the screen temperature
transition=1
; Set the screen brightness. Default is 1.0
;brightness=0.9
; It is also possible to use different settings for day and night since version 1.8.
brightness-day=0.9
brightness-night=0.7
; Set the screen gamma (for all colors, or each color channel individually)
gamma=0.8
;gamma=0.8:0.7:0.8
; Set the location-provider: 'geoclue2', 'manual'
; type 'redshift -l list' to see possible values
; The location provider settings are in a different section.
location-provider=manual
 
; Set the adjustment-method: 'drm', 'randr', 'vidmode', 'dummy'
; type 'redshift -m list' to see all possible values
; The adjustment method settings are in a different section.
adjustment-method=randr
 
; Configuration of the adjustment-method
; type 'redshift -m METHOD:help' to see the settings
; ex: 'redshift -m randr:help'
; In this example, randr is configured to adjust screen 0.
; Note that the numbering starts from 0, so this is actually the second screen.
[randr]
screen=0
 
; Configuration of the location-provider:
; type 'redshift -l PROVIDER:help' to see the settings
; e.g. 'redshift -l manual:help'
[manual]
; kagoshima, japan
lat=31.33
lon=130.33

問題点?

redshiftを動かしているとブライトネスもこれで管理されます.手動で設定してもすぐにredshiftの設定に戻ります.バッテリー駆動中でブライトネスを下げてバッテリーの持ちを良くしようというような場合は困ります.とりあえずredshiftもブライトネスも手動設定して回避しています.

redshift-gtkを終了した状態で手動設定

$ redshift -O 3500
$ xrandr --output LVDS1 --brightness 0.3

それと夜ふかしさんのためにブルーライトカットの時間をずらす機能はないかなと思ったのですが見当たりませんでした.これは位置情報をmanualで設定して時差のある場所を設定するようにしたら実現できそうです.

Linuxで一部のパーティションの自動マウントを無効にする

Linuxで外付けHDDやUSBストレージなどを接続した時に一部のパーティションの自動マウントを無効にする方法です.

Gnomeで全てのメディアの自動マウントの切り替えをしたい場合は以下を参照して下さい.

対象パーティションの確認

対象のメディアをマウントした状態でblkidコマンドや/etc/mtabなどを参考に対象のUUIDを調べる

$ cat /etc/mtab
    :
/dev/mmcblk0p1 /media/mk/boot vfat rw,nosuid,nodev,relatime,uid=1000,gid=1000,fmask=0022,dmask=0022,codepage=437,iocharset=utf8,shortname=mixed,showexec,utf8,flush,errors=remount-ro 0 0
/dev/mmcblk0p2 /media/mk/ec2aa3d2-eee7-454e-8260-d145df5ddcba ext4 rw,nosuid,nodev,relatime,data=ordered 0 0
$ sudo /sbin/blkid /dev/mmcblk0*
/dev/mmcblk0: PTUUID="ba2edfb9" PTTYPE="dos"
/dev/mmcblk0p1: SEC_TYPE="msdos" LABEL="boot" UUID="74BD-74CF" TYPE="vfat" PARTUUID="ba2edfb9-01"
/dev/mmcblk0p2: UUID="ec2aa3d2-eee7-454e-8260-d145df5ddcba" TYPE="ext4" PARTUUID="ba2edfb9-02"

ここでは

/dev/mmcblk0p1 -> 74BD-74CF
/dev/mmcblk0p2 -> ec2aa3d2-eee7-454e-8260-d145df5ddcba

GPartedなどを使うのもいいかもしれません.

20160211_05:02:10-12031

fatabの編集

/etc/fstabにnoautoオプション付きで記述します.対象パーティションをマウントした状態の/etc/mtabが参考になるでしょう.

UUID=74BD-74CF  /media/mk/pi-boot       vfat    noauto,rw,nosuid,nodev,relatime,uid=1000,gid=1000,fmask=0022,dmask=0022,codepage=437,iocharset=utf8,shortname=mixed,show
exec,utf8,flush,errors=remount-ro       0       0
UUID=ec2aa3d2-eee7-454e-8260-d145df5ddcba       /media/mk/pi-root       ext4    noauto,rw,nosuid,nodev,relatime,data=ordered   0       0

マウントしたい場合

手動でmountコマンドを実行したり,

$ sudo mount /media/mk/pi-root

Nautilus等で該当パーティションのアイコンをクリックしてマウントできます.

20160211_05:02:05-8216

ちょっと大げさですね.
root権の要らないもっとお手軽な方法がありそうな気がします.

Gnomeのメディア自動マウント切り替え

Gnome環境でUSBメモリなどのメディアを接続した際自動的にマウントしてほしくない場合の手順です.設定はdconfに書かれているので直接編集は出来ません.以下に説明するコマンドなどを利用して書き換えます.

書き換え対象は,
org.gnome.desktop.media-handlingの下のautomountです.
ここの値がtrueの場合自動マウントする, falseの場合自動マウントしないとなります.

dconfコマンド利用

現在の状況確認

$ dconf read /org/gnome/desktop/media-handling/automount
true

無効に設定する場合

$ dconf write /org/gnome/desktop/media-handling/automount false
$ dconf read /org/gnome/desktop/media-handling/automount
false

有効に設定する場合

$ dconf write /org/gnome/desktop/media-handling/automount true
$ dconf read /org/gnome/desktop/media-handling/automount
true

gsettingsコマンド利用

現在の状況確認(true->自動マウントする, false->自動マウントしない)

$ gsettings get org.gnome.desktop.media-handling automount
true

無効に設定する場合

$ gsettings set org.gnome.desktop.media-handling automount false
$ gsettings get org.gnome.desktop.media-handling automount
false

有効に設定する場合

$ gsettings set org.gnome.desktop.media-handling automount true
$ gsettings get org.gnome.desktop.media-handling automount
true

dconf-editor利用(GUI)

コマンドが面倒な場合はdconf-editorなどでGUIを使って変更も出来ます.

20160211_04:02:59-19728

コマンドで添付ファイル付きメールを送る2つの方法

Google+でmailコマンドで添付ファイル付きメールを送ろうとしている方の投稿のコメントにbase64でデコードして送るscriptを使ってますとか書いたのですが,これperl4でcgi全盛な大昔からやってる手法なので楽なものがあるのではと思い探してみました.

Debian stretch testingのs-nailを使う

Debian stretch testing/sid ではmailコマンドがbsd-mailxからs-nailに変わって添付ファイルオプションがあるようです.

 -a file     Attach the given file to the message.  The same filename conventions as described in the section COMMANDS apply: shell word expansion is
             restricted to the tilde ‘~’ and variables.  Shall file not be accessible but contain a ‘=’ character, then anything after the ‘=’ is assumed to
             specify the input character set and anything before ‘=’ the filename: this is the only option to specify the input character set (and don't per‐
             form any character set conversion) for text attachments from the command line, not using the ~@ tilde escape command.

こんな感じで使えました.

$ echo 'attach test(binary)' | mail -s "attach test mail" -a ./text.xz matoken@gmail.com

#はじめ.zipを送ろうとしてgmailサーバに弾かれました.そういえばそうだった……
##sendmail: 552 5.7.0 content and attachment content guidelines. xu1sm1469539pab.31 - gsmtp

普通にメール送るのに加えて-aオプションでファイルを指定する感じです.
オプションでSMTPサーバの指定も出来るようなのでMTAの設定をしていないような場合でも単体で使えそうです.

Debian jessieでbiabamを使う

s-nailはstretch testingからでjessieには入っていないようです.代わりに入っているのはbsd-mailxです.manをちょっと見た感じでは添付ファイルの扱いは載っていなさそう.でもきっと便利な何かがあるのでは?とapt-cache search mail attachとかして探してみるとbiabamというbash script製のものを発見.小さいし良さそうと試してみました.

biabam – bash attachment mailer

こんな感じで使えました.

$ sudo apt install biabam
$ echo 'attach test' | biabam ./test.xz -s "attach test from jessie" matoken@gmail.com

ちなみにmailコマンドで添付ファイルの方法を検索すると大抵mutt使う例が出てきますが,muttを既に設定済みの人でないと敷居が高いと思います.そういう場合に今回の方法はいいのではないかと思います.

しかし恐らく多国言語対応はして居なさそうなので日本語をSubjectやBODYに使う場合は素直にScriptを書いたほうがいいかもしれません…….
定形なら適当なMUAでメールのテンプレートファイルを作っておいて流し込んでmailコマンドに投げるようにしてもいいですね.