web-dev-qa-db-ja.com

X WindowsをWindows 10 BashのEmacsで使用する方法は?

WindowsプログラムのUbuntuでBashを使用して、Emacs for C++を使用しています。現在、キーボードショートカットを使用してすべてをコーディングできますが、常にキーボードを使用する代わりに、マウスでテキストを選択するか、マウスでマークを設定します。

X Windowsシステムを取得するために、すでにSudo apt-get install xserver -xorgしかし、emacsは引き続きターミナルエディタで実行されます。

他にどのコマンドを使用するか、X Windowsを実行する方法を知りません。

18
novice

Windows bashはXサーバーをサポートしていません。ただし、MobaXTerm、XMing、vcXsrvなどのWindows X ServerポートをWindows bashと組み合わせて使用​​することはできます。いくつかのことは箱から出して動作します(gvimは動作しました)、emacsはより多くの努力を必要とします。

これがどのように機能するかを示します。

  • MobaXterm をインストールします。ほとんどの場合、XMingでも動作させることができますが、私はMobaXtermでのみテストしました。 更新:vcXsrv および XMing でテスト(有料版)基本的に同じ動作をします。おそらく、MobaXTermを使い続けるでしょう。

  • Emacs 25.1スナップショットをインストールします。理由:Ubuntu 14.04にはemacs 24.3が付属していますが、これはWindows bashおよびMobaXTerm Xサーバーでは動作しません(理由はわかりませんが、とにかく古すぎます)。

次のコマンドを使用してスナップショットをインストールします。

Sudo add-apt-repository ppa:ubuntu-elisp/ppa
Sudo apt-get update
Sudo apt-get install emacs-snapshot

次に実行する

Sudo update-alternatives --config emacs

emacs-snapshotを選択します

必ずDISPLAYを設定してください

export DISPLAY=localhost:0.0

MobaXTermを実行します(実行する必要はありません。起動するだけです。必要に応じてXサーバーを起動します)。

Bashでemacsを実行してお楽しみください。

1つの問題が残っており、テストした3つのすべてのパッケージ(MobaXTerm、XMing、およびvcXsrv)で問題が解決しません。 Emacsは初期のフレームサイズに固執し、ウィンドウのサイズが変更されてもフレームのサイズを変更しません。メニューバーに関する同じ問題-メニューバーが無効になっている場合、emacsはそのスペースを再利用せず、灰色の長方形のままになります。この問題は、Windows bashのemacsに固有のようです-gvimおよびその他のGUIプログラムは正常に動作するようです。また、Windows上の任意のXサーバーを使用してLinuxでemacs 25.1を実行しても正常に機能します。異なるGUI設定(GTK 2.0など)でemacsを構築しようとしましたが、Windows bashでemacs makeがスタックします。これの回避策を見つけた場合、更新を投稿します。

2017年9月24日更新Jarett によると、init.el内の以下はフレームサイズ変更の問題を修正するはずです:

(setq frame-resize-pixelwise t)

BashをアクティブにしたWindowsはもうないので、テストすることはできません。

32

@Yuriの素敵な答えをありがとう、うまくいきます!さらに試行錯誤を重ねた結果、白い境界線の問題を解決する方法を見つけました。 Emacs v24.5ソースコードから再構築する必要があります(gitリポジトリでv25バージョンをいくつか試しましたが、すべて失敗しました。gitリポジトリを使用している場合は、チェックアウトタグ "emacs-24.5-rc3")。 構成段階では、現在の「gtk3」の代わりに「lucid」(または「athena」、同じこと)x-toolkitを選択する必要があります。「モチーフ」にも同じ問題があることに注意してください。

最初に、Emacsソースコードをダウンロードし、「libxaw7-dev」パッケージをインストールします。 「libncurses5-dev」は、念のためです。ディレクトリ〜/ build-emacs24ですべてを行うと仮定します。

mkdir ~/build-emacs24
cd ~/build-emacs24
wget https://ftp.gnu.org/gnu/emacs/emacs-24.5.tar.xz
Sudo apt-get install libxaw7-dev libncurses5-dev
tar xvf emacs-24.5.tar.xz

これで、「emacs-24.5」ディレクトリが抽出されました。他で報告されたD-BUSの問題を防ぐために、それなしで設定し、/ usr/local/binにインストールしましょう(デフォルト):

cd emacs-24.5
./configure --without-dbus --without-gconf --without-gsettings --with-x-toolkit=athena 

これで、Emacsを構築する準備がほぼ整いました。しかし、その前に、カーネルを少し調整する必要があります。そうしないと、ビルドがすぐに失敗します。 (興味がある場合は、emacsソースコードの「etc/PROBLEMS」で説明されています。詳細は省略します。)これはビルド段階でのみ必要です。新しいemacsがインストールされたら、これを再度行う必要はありません。

Sudo sh -c "echo 0 > /proc/sys/kernel/randomize_va_space"

長いビルドプロセスに進みましょう。ビルド中にシステム全体の速度が低下する場合があります。ビルドで使用するスレッドの数を減らすことができます(ここでは、2コアの4スレッドIntel CPUに「4」を使用します。 tサポートされているスレッド(cat/proc/cpuinfo)よりも大きい数を使用すると、さらに遅くなります。)

time Nice make -j 4

数分しかかかりませんか?まだまだありますので、インストールしてください(ここの「Sudo」を思い出してください):

Sudo make install 

ビルドとインストール全体は私のマシンで10分未満で完了し、それほど悪くはありません。これで、「/ usr/local/bin/emacs」に動作するEmacs 24.5ができました。すべてが@Yuriの答えとして設定されている場合、今すぐ起動できるはずです。

/usr/local/bin/emacs &

今、あなたはそれを最大化し、あなたが望むことをすることができます。以下はスクリーンショットで、右上隅に注目して、最大化されています:

enter image description here

色を気にしないでください、それは私自身のテーマの選択です。

もう1つ問題があります。再度回避策を取りましょう。メニュー項目を選択すると、「白い境界線」が再び攻撃することがあります!

enter image description here

小さくなりましたが、いらいらします。

enter image description here

幸いなことに、今回はそれを手放すことができます。ウィンドウを最大化/復元すると、消えます。数ラウンド後、それは再び起こることを時々停止しますが、常にではありません。これはまだ迷惑です。ウィンドウのサイズを変更するとこの問題を解決できるので、なぜ自動化しないのですか?たぶん悪くない回避策ですか?

「〜/ .emacs」ファイルを編集し、次のコードを追加します(もちろん、新しいEmacsを使用してください;):

(defvar fix-frame-white-border-last-check 0)

(defun current-sec ()
  (let ((currtime (current-time)))
    (logior (lsh (car currtime) 16) (cadr currtime))))

(defun fix-frame-white-border-uow (&optional frame)
  (when (> (- (current-sec) fix-frame-white-border-last-check) 2)
    (setf frame (or frame (selected-frame)))
    (let ((width  (frame-width frame))
          (height (frame-height frame)))
      (set-frame-size frame (1- width) height)
      (set-frame-size frame width height))
    (setq fix-frame-white-border-last-check (current-sec))))

(advice-add 'menu-bar-open :after #'fix-frame-white-border-uow)
(add-hook 'menu-bar-update-hook #'fix-frame-white-border-uow)

コードは完璧ではありませんが、機能します。メニューを使用すると、フレームのサイズが少し変更され、すぐに復元されます。また、頻繁にサイズ変更されることを防ぎます。

6
Luke Lee

デフォルトのemacsは、Xmingおよびその他のオプションで機能します。問題は、デフォルトの代替がemacs24-noxコマンドを指していることです。代わりに、emacs24-noxを削除する「emacs24」をインストールする必要があります。

$ Sudo update-alternatives --query emacs
Name: emacs
Link: /usr/bin/emacs
....
Status: auto
Best: /usr/bin/emacs24-nox
Value: /usr/bin/emacs24-nox

$ Sudo apt install emacs24

$ Sudo update-alternatives --query emacs
Name: emacs
Link: /usr/bin/emacs
...
Status: auto
Best: /usr/bin/emacs24-x
Value: /usr/bin/emacs24-x

$ DISPLAYが正しく設定されていることを確認してください。

export DISPLAY=localhost:0.0
1
Brian Whitehead