お知らせ

  • 利用規約を守って投稿してください。また、よくある質問および投稿の手引きも参照してください。
  • メッセージの投稿にはアカウントが必要です。未登録の方は、ユーザ登録ページからアカウントを作成することができます。

#1 2012-03-19 10:39:37

Linux7
メンバ
登録日: 2009-05-18

/etc/gdm/Init/defaulutの設定が反映されない?

ディスプレイを2台つなげていると毎回デュアルディスプレイで起動してしまいます。
そのためシングルにしたい場合毎回「モニタの設定」で片方を切っています。

これを逆に普段シングルで、必要なときにデュアルというようにしたいので、/etc/gdm/Init/defaulutの
/sbin/initctl -q emit login-session-start DISPLAY_MANAGER

exit 0
の直前などに
xrandr --output CRT1 --off
を書いてみたのですが、反映されません。
なぜでしょうか?

オフライン

 

#2 2012-03-19 13:11:18

hmatsue
アドバイザ
登録日: 2009-03-10

Re: /etc/gdm/Init/defaulutの設定が反映されない?

このあたりに記載の手順を試されているのでしょうか。
https://wiki.ubuntulinux.jp/UbuntuTips/Hardware/HowToChangeMonitorResolution

Ubuntuのバージョンはいくつでしょうか。11.10以降では標準のディスプレマネージャがgdmからlightdmに変更されていますので、場合によってはgdmが動作していないということも考えられます。

また、xrandrのコマンドは通常の状態で意図したとおりに動作することは確認されていますでしょうか。

オフライン

 

#3 2012-03-19 21:40:49

Linux7
メンバ
登録日: 2009-05-18

Re: /etc/gdm/Init/defaulutの設定が反映されない?

はい。リンク先を参考にしました。
Ubuntuのバージョンは10.04です。
また、上記コマンドを起動中に試すと確かに片方のディスプレイがOFFになり、シングルディスプレイとなります。

オフライン

 

#4 2012-03-20 00:16:35

hmatsue
アドバイザ
登録日: 2009-03-10

Re: /etc/gdm/Init/defaulutの設定が反映されない?

あら。勘が外れましたね。。
念のため、

コード:

service --status-all 2>&1 | grep dm

などとして起動している.*dmの類を表示させてみて下さい。
さらに、例えば、gdmとkdmが表示されたとすると、

コード:

service gdm status
servide kdm status

などとして、実行状態を確認してみて下さい。

gdmが実行されているのに、設定が有効にならないという場合は、
/etc/gdm/Init/Default
の内容を投稿してみて頂けますでしょうか。

以上の確認でおかしなところがみつからない場合、あとはタイミングの問題などが考えられますが、私はモニタを一台しか持っておらず、検証ができません。。
PCの電源投入からの各モニタの状態の変化など、詳細な状況を投稿願えますでしょうか。

オフライン

 

#5 2012-03-20 01:10:47

Linux7
メンバ
登録日: 2009-05-18

Re: /etc/gdm/Init/defaulutの設定が反映されない?

$ service --status-all 2>&1 | grep dm
[ ? ]  dmesg
[ ? ]  gdm

上記の通りになりました。
/etc/gdm/Init/Defaultの内容は以下の通りです。

#!/bin/sh
# Stolen from the debian kdm setup, aren't I sneaky
# Plus a lot of fun stuff added
#  -George

PATH="/usr/bin:$PATH"
OLD_IFS=$IFS

#if [ -x '/usr/bin/xsplash' ];
#then
#        /usr/bin/xsplash --gdm-session --daemon
#fi

/sbin/initctl -q emit login-session-start DISPLAY_MANAGER=gdm

gdmwhich () {
  COMMAND="$1"
  OUTPUT=
  IFS=:
  for dir in $PATH
  do
    if test -x "$dir/$COMMAND" ; then
      if test "x$OUTPUT" = "x" ; then
        OUTPUT="$dir/$COMMAND"
      fi
    fi
  done
  IFS=$OLD_IFS
  echo "$OUTPUT"
}

sysresources=/etc/X11/Xresources

# merge in defaults
if [ -f "$sysresources" ]; then
    xrdb -merge "$sysresources"
fi

sysmodmap=/etc/X11/Xmodmap

XMODMAP=`gdmwhich xmodmap`
if [ "x$XMODMAP" != "x" ] ; then
  if [ "x$GDM_PARENT_DISPLAY" = "x" ]; then
    if [ -f $sysmodmap ]; then
      $XMODMAP $sysmodmap
    fi
  else
    ( DISPLAY=$GDM_PARENT_DISPLAY XAUTHORITY=$GDM_PARENT_XAUTHORITY $XMODMAP -pke ) | $XMODMAP -
  fi

  #
  # Switch Sun's Alt and Meta mod mappings
  #

  UNAME=`gdmwhich uname`
  PROCESSOR=`$UNAME -p`
  if [ "x$PROCESSOR" = "xsparc" ]; then
    if $XMODMAP | /usr/bin/grep mod4 | /usr/bin/grep Alt > /dev/null 2>/dev/null
    then
      $XMODMAP -e "clear Mod1" \
               -e "clear Mod4" \
               -e "add Mod1 = Alt_L" \
               -e "add Mod1 = Alt_R" \
               -e "add Mod4 = Meta_L" \
               -e "add Mod4 = Meta_R"
    fi
  fi
fi

SETXKBMAP=`gdmwhich setxkbmap`
if [ "x$SETXKBMAP" != "x" ] ; then
  # FIXME: is this all right?  Is this completely on crack?
  # What this does is move the xkb configuration from the GDM_PARENT_DISPLAY
  # FIXME: This should be done in code.  Or there must be an easier way ...
  if [ -n "$GDM_PARENT_DISPLAY" ]; then
    XKBSETUP=`( DISPLAY=$GDM_PARENT_DISPLAY XAUTHORITY=$GDM_PARENT_XAUTHORITY $SETXKBMAP -v )`
    if [ -n "$XKBSETUP" ]; then
      XKBKEYMAP=`echo "$XKBSETUP" | grep '^keymap' | awk '{ print $2 }'`
      XKBTYPES=`echo "$XKBSETUP" | grep '^types' | awk '{ print $2 }'`
      XKBCOMPAT=`echo "$XKBSETUP" | grep '^compat' | awk '{ print $2 }'`
      XKBSYMBOLS=`echo "$XKBSETUP" | grep '^symbols' | awk '{ print $2 }'`
      XKBGEOMETRY=`echo "$XKBSETUP" | grep '^geometry' | awk '{ print $2 }'`
      if [ -n "$XKBKEYMAP" ]; then
        $SETXKBMAP -keymap "$XKBKEYMAP"
      elif [ -n "$XKBTYPES" -a -n "$XKBCOMPAT" -a -n "$XKBSYMBOLS" -a -n "$XKBGEOMETRY" ]; then
        $SETXKBMAP -types "$XKBTYPES" -compat "$XKBCOMPAT" -symbols "$XKBSYMBOLS" -geometry "$XKBGEOMETRY"
      elif [ -n "$XKBTYPES" -a -n "$XKBCOMPAT" -a -n "$XKBSYMBOLS" ]; then
        $SETXKBMAP -types "$XKBTYPES" -compat "$XKBCOMPAT" -symbols "$XKBSYMBOLS"
      elif [ -n "$XKBSYMBOLS" ]; then
        $SETXKBMAP -symbols "$XKBSYMBOLS"
      fi
    fi
  fi
fi

xrandr --output CRT1 --off

exit 0

オフライン

 

#6 2012-03-20 14:44:49

hmatsue
アドバイザ
登録日: 2009-03-10

Re: /etc/gdm/Init/defaulutの設定が反映されない?

記述方法自体には問題はなさそうなので、設定した通りに動くような気がします。
VirtualBoxがいつの頃からか、マルチモニタ環境をエミュレートできるようになっていたのを思い出したので、ちょっと試してみました。

それで気付いたのですが、設定自体と期待した動作がミスマッチとなっており、設定したとおりに動いていないと混乱しているということはないでしょうか。
(非常に混乱しやすいと、個人的には感じました)

まずは、前回書きましたように、PCの電源投入からの各モニタの状態の変化など、詳細な状況を投稿願えますでしょうか。



以下は現在推測している状況です。
PC(Ubuntu)起動時はモニタは片方したONしていないということは無いでしょうか。
そうであれば、それは期待通りの動作です。
設定を/etc/gdm/Init/Defaultでした場合、gdm起動時に、システム側で実行されることになります。

一方でユーザとしてログインしてしまったあとは、ユーザの設定が反映されます。
「モニタの設定」で設定を行った場合、設定が~/.config/monitors.xmlに残ります。
最後の設定状態を復元するため、モニタ設定で使わないほうのモニタを無効化していないと、ログイン時にモニタがONするかと思います。

対処としては、毎回、モニタをOFFしてからログアウトするようにするか、
設定を残さないようにするため、「モニタの設定」は片方のモニタを無効化した状態にしておき、
モニタの有効/無効化には、xrandrを使うようにする、などが考えられるかと思います。
例えば、

コード:

#!/bin/sh
xrandr --output CRT1 --mode 1024x768 --right-of CRT0

みたいなスクリプトを作っておいて、CRT1をOFFするスクリプトと組み合せて使うと比較的簡単に切り替えができるかと思います。
なお、上記は適当に書いたものなので、xrandrの出力に応じて適宜読み換えて下さい。

オフライン

 

#7 2012-03-20 21:37:18

Linux7
メンバ
登録日: 2009-05-18

Re: /etc/gdm/Init/defaulutの設定が反映されない?

解決いたしました。
hmatsueさんの言うように、ログアウト時はいつもモニタ2をOFFに設定してあるのに起動する度モニタ2がONになる状態でした。
つまり設定したのに起動するとまた元に戻ってしまっていました。

で、原因なのですが、設定ツールが問題だったようです。
私の環境では「設定」を開くと「モニタ」と「モニタの設定」という項目があります。起動する度「モニタの設定」からモニタ2をOFFにしてシングルにしていました。
この「モニタの設定」とはLXRandRのことで、ここでモニタ2をOFFに設定しても次回ログインに設定が引き継がれないようです。

「モニタ」という項目からモニタ2をOFFにすると次回ログイン時に設定が引き継がれて、ちゃんとシングルの状態で起動することができました。

このように無事解決いたしました。
相談に乗っていただきありがとうございました。

オフライン

 

Board footer

Powered by FluxBB