モザイクのダークサイド(III):XMonad

たくさんお祈りをしてきたようですが、今日まで何ミリも設定していません。 私が約束してきたように しばらく 今日は、この機会に特別に用意したxmonad.hsを分解します。 この構成ファイルと他の構成ファイルは、特に貼り付けにあります コンソールの色, ウィンドウ設定 y トップバー.

そこからダウンロードして、お気に入りのテキストエディタで開くことができます。

ご参考までに、私のデスクトップはDebian安定版の小さなOpenboxでした。 今のところ配布インストールプロセスをスキップして、必要なパッケージがリポジトリにあることを確認する必要があります。 これをやってみましょう(私がDebianを使用していることを思い出してください):

sudo aptitude install ghc xmonad xmobar gmrun dmenu

そして準備ができました。 外観順にインストールしました。 Haskellのコンパイルと解釈を担当するGlasgowHaskellコンパイラ。 XMonad、ウィンドウマネージャー、XMobarは、システムといくつかのプログラムランチャー、dmenuおよびgmrunに関する情報を表示するバーです。 XMonadがMod + PおよびMod + Shift + Pでそれらを起動するように構成されています。

そして、これは私のデスクトップがどのように見えたかです。 比較のポイントがあり、よりミニマリストな環境ですでに構成したもののいくつかをエミュレートするように配置しました。

特にない

しかし、驚き。 XMonadはこのように私たちを歓迎します。 キャプチャでは、すでにgmrunを開いているので、壊れていないことがわかります。

壮観なものはありません

そして、私たちはそれをこのように見せたいと思っています。

そうそう

スクリーンショットは、端末のMPDクライアントであるncmpcppを実行している端末を示しています。 とGVimセッション、両方ともパレットの色 ソラリゼーションライト。 これを取得することはそれほど難しくはなく、Vimとurxvtでさえ私のシステムですでに準備ができていました。

xmonad.hs、なんて怖い!

どういたしまして。 これから説明する構成は、非常に単純で基本的なものです。 0.9.1がすでに利用可能であっても、XMonad0.10を備えたすべてのシステムで動作するはずです。 まあ、恐れて、非常に恐れてください:

-Xmonad構成-ご覧のとおり、非常に簡単です。importXMonad import XMonad.Util.EZConfig import XMonad.Util.Run wrk = ["A"、 "C"、 "G"、 "T"] main = do xmproc <-spawnPipe "xmobar" spawn "nitrogen --restore" spawn "urxvtd" spawn "mpd" spawn "xfce4-volumed" xmonad $ defaultConfig {modMask = mod4Mask、terminal = "urxvtc"、borderWidth = 2、normalBorderColor = "#fdf6e3 "、focusedBorderColor ="#002b26 "、workspaces = wrk}` additionalKeys` [((mod4Mask、xK_v)、spawn "gvim")、((mod4Mask、xK_c)、spawn "mpc token")、((mod4Mask、xK_a) 、spawn "mpc prev")、((mod4Mask、xK_s)、spawn "mpc next")]-構成の終了。 シンプル、簡単、そしてクリーン。

ここで何が起こったのですか?

すでに恐怖から回復している場合は、構成が30行のコードにほとんど達していないことがわかります。 これをコピーして貼り付けると、XMonadが今書いたプログラムをコンパイルする理由を少しずつ説明します。 準備はいいですか?

依存関係セクション

ファイルの先頭近くに、キーワードで始まるXNUMX行があります import。 他のプログラミング言語と同様に、必要なモジュールを見つけるためにコンパイラーを送信し、ラッキーモジュールの機能を提供します。 もう一度見てみましょう:

XMonadのインポートXMonad.Util.EZConfigのインポートXMonad.Util.Runのインポート

私たちのプログラムはXNUMXつの依存関係を使用しています。 XNUMXつ目はXMonad独自の機能を提供し、XNUMXつ目とXNUMXつ目は後でキーボードショートカットを定義してプログラムを実行するのに役立ちます。 続けましょう。

変数

それは WRK そしてそれは何のためですか? コードを詳しく見てみましょう。

wrk = ["A"、 "C"、 "G"、 "T"]

WRK は変数であり、すべて文字列のXNUMXつの要素のリストに相当します。 HaskellリストはXNUMXつのアイテムタイプしか受け入れないからです。 デスクトップにこれらのXNUMX文字を選んだ理由がわからない場合は、 XNUMXつの核塩基 DNAの。
名前は単なる省略形であり、小文字で始まり、次のセクションで指定する限り、myWorkspaces、pepitoRojoなどの名前を付けることができます。
変数からウィンドウの色を定義できるので、ここから完全なプログラミング言語を自由に使えるようにすることの良いところが始まります。

windowColor = "#FFFFFF"

または、気分に応じて色を返す関数を作成することもできます。

moodColor m | m == "Sad" = "#b0c4f6"-青のようなもの| m == "Angry" = "#ba3f3f"-赤のようなもの| m == "Happy" = "#8bff7e"-緑のようなもの| それ以外の場合= "#FFFFFF"-白、ニュートラルな日

そして、はるかに。 あなたはすでにあなたの指に力を感じていますか? ひとこと。 何が起こったのかわからない場合は、これがハスケル独自の構造であると考えてください。 グアルダ 基本的にはif-then-elseツリーのようなものですが、より整理されてきれいです。 そして心配しないでください、コードは私によって書かれました、そしてそれはうまく働きます。

メインセクション

言う行から main = do XMonadの動作を指定し始めました。 落ち着いて見てみましょう。

最初に物事を開始します

これは多くの方法で実現できますが、依存関係を避けてコードをよりクリーンにするために、明らかにもっと洞窟人ですが、私はこれを選びました:

xmproc <-spawnPipe "xmobar" spawn "nitrogen --restore" spawn "urxvtd" spawn "mpd" spawn "xfce4-volumed"

最初の行はXMobarを開始し、その構成ファイルは後で表示されます。
それから私たちは私にとっていくつかの重要なことを始めました、素敵な壁紙(最初のスクリーンショットのものと同じ)、urxvtを風のように走らせる悪魔、mpdの悪魔-最初から私の音楽を再生し、私は決して閉じません-そしてボリュームコントロール。 ええ、それだけです。 必要なものを開始したい場合、構文は同じです。

最終調整

ここでは、通常は個人的な好みであるいくつかのことを定義します。 たとえば、Altの代わりに通常は役に立たないスーパーキー(事実上Windowsのキー)を使用するのが好きですが、それが私の好みです。 スーパーに戻りたい場合は、最初の行を削除してください。

-... xmonad $ defaultConfig {modMask = mod4Mask、terminal = "urxvtc"、borderWidth = 2、normalBorderColor = "#fdf6e3"、focusedBorderColor = "#002b26"、workspaces = wrk}-.. ..

次に、ターミナルを定義します。 urxvtc、それは私たちが以前に実行した悪魔のクライアントと呼んでいるものだからです。 ワークスペースのリストのように、次のようなものを入れることができた他のもの。

、workspaces = ["H"、 "O"、 "L"、 "A"]、workspaces = ["A"、 "R"、 "C"、 "H"、 "L"、 "I"、 "N "、" U "、" X "]、workspaces = [" 1:web "、" 2:music "、" 3:未使用スペース "、" 4:Ufff "]

そして、Haskellの文字列リスト処理が私たちにできる他のこと。
境界線の太さは整数であり、関数によってフォーカスされたウィンドウの色を変更したい場合 ムードカラー 変数を次のように残すため、作成したばかりです。

--...、focusedBorderColor = moodColor "Happy"-..。

行の$ xmonad..。 これは、正しい連想関数のアプリケーションにすぎません。つまり、いくつかの括弧を保存します。 😀

キーボードショートカット

ファイルの最後に、いくつかのショートカットを含むタプルのリストがあります。この場合、それらはGVimを起動し、音楽を一時停止または再生し、それを進めたり遅らせたりします。 それでおしまい。 追加キー関数は、インポートする1番目のモジュールに含まれ、バックアクセントにより、div 2 1ではなく2/XNUMXのようなdiv(/)関数のスタイルで実行されるため、読みやすくなります。 つまり、次のとおりです。

--...} `additionalKeys` [((mod4Mask、xK_v)、spawn" gvim ")、((mod4Mask、xK_c)、spawn" mpc token ")、((mod4Mask、xK_a)、spawn" mpc prev ")、 ((mod4Mask、xK_s)、 "mpc next"を生成します)]

.xmobarrc

Config {font = "-* --monospace-9-*-*-*-*-*-*-*-*-*-*"、bgColor = "#fdf6e3"、fgColor = "#657b83"、position = Top 、lowerOnStart = False、commands = [Run Com "echo" ["$ USER"] "username" 864000、Run Com "hostname" ["-s"] "hostname" 864000、Run Com "mpc current" [""] "mpd" 10、実行日 "%a%b%d" "日付" 36000、実行日 "%H:%M" "時間" 10、実行StdinReader]、sepChar = "'"、alignSep = "} {" 、template = "'username' @ 'hostname'} {'mpd' | 'date'-'time'"

これは機能するはずですが、実際には機能します。 構文はもう少し複雑なので、自分で分析して理解することをお勧めします。 したがって、XMobarに表示されるコマンド、それらのオプション、およびいくつかの追加設定について説明していることだけを説明します。
テンプレートラインにはすべてのアクションがあり、私は自分が聴いている曲を表示するためのトリックを思いつきました。 このトリックとキーボードショートカットの曲を変更するトリックには、ターミナルから実行可能なmpdクライアントであるmpcが必要です。

結論

それだけだと思います。 私たちはすでにメインのXMonadファイルを確認し、それが好きかどうかにかかわらずHaskellの学習を開始しました。 続行したい場合は、最初に非常に優れたガイドがあります。
次回の記事では、プログラム不可能なマネージャー、特にSpectrwm / Scrotwmについて説明します。 またね。


22コメント、あなたのコメントを残してください

コメントを残す

あなたのメールアドレスが公開されることはありません。 必須フィールドには付いています *

*

*

  1. データの責任者:MiguelÁngelGatón
  2. データの目的:SPAMの制御、コメント管理。
  3. 正当化:あなたの同意
  4. データの伝達:法的義務がある場合を除き、データが第三者に伝達されることはありません。
  5. データストレージ:Occentus Networks(EU)がホストするデータベース
  6. 権利:いつでも情報を制限、回復、削除できます。

  1.   イヴァノフネグロ

    !素晴らしい!

    次回はSpectrwm? !かしこまりました!

  2.   サンドマン86

    非常に優れたガイドです。非常に面白そうです。Openboxに慣れているにもかかわらず、見てみたいと思います。

  3.  

    おっと、これらのファイルの行き先を指定できませんでしたが、投稿を編集すると、エラーメッセージが表示されます。
    致命的なエラー:オンラインの/home/desdelin/public_html/blog/wp-content/themes/dlinux/index.phpにある未定義の関数get_header()を呼び出す
    誰かがそれを編集できる場合、彼らは次のようになります:

    メイン構成ファイル: 〜/ .xmonad / xmonad.hs
    Xmobarrcファイル: 〜/ .xmobarrc
    コンソール構成ファイル: 〜/ .Xdefaults
    ????

    1.   

      自分の投稿を編集できないようです。 デスクトップのどこにもオプションが見つかりません。 私にはいくつかのバグがあります、それはすべて、最小限の修正です。

  4.   ナノ

    プログラミングに関しては生産性が高いので、とても興味深いと思います。 私は本当にLUAを学びたいので、Awesomeをいじりたいです。

    Python Qtileでプログラミングする私たちのために存在しますが、実際には実行できません。Ubuntuを使用しており、PPA経由およびソースからインストールしましたが、残念ながらxDは機能しません。

    とにかく、LUAは私が学ばなければならないことであり、このタイプのタイルであなたの顔を見るよりも良いことは何もありません。

    Sigue así anti, vas en camino a convertirte en Autor dentro de DesdeLinux

    1.    ナノ

      そして、はい、私は大学にいます、そしてこのたわごとで彼らはLinuxxDを持っていません

      1.   

        ナノありがとう。 しかし、公開後に記事を編集するのを手伝ってもらえますか? 私はできない。

        1.    ドワーフ

          はい、落ち着いて、私が修正するよりもフィットするのでそのままにしておきます

  5.   キシキーズ

    アンチのおかげで、私は間違いなくXMonadを試してみます。 ガード、アプリケーションオペレーター、そして明らかにリストの使用など、多くの複雑さを必要とせずに、基本的なHaskellのものを使用していることがわかります(そうでなければ、Haskell xDではありません)。

    それがどのように見えるか見てみましょう! 🙂

  6.   フェルナンド

    私は長い間タイル型ウィンドウマネージャーを使用してきました、素晴らしい。 時間があるときに、素晴らしいインストールから一連の軽量プログラムの構成、独自のテーマの作成まで、プロセス全体を説明できるようにしたいと考えているチュートリアルを行います。

    よろしければ、こちらで公開できるようにお知らせします。

    ちなみに、あなたの許可を得て、私は私の小さなウェブサイトで少し宣伝します。あなたが望むなら、あなたが何かの出版物に興味がある場合に備えて、あなたが見てみることができます:

    http://niferniware.sytes.net

    挨拶!

    1.    MSX

      それが素晴らしい3なら、私は間違いなくそれに興味があります。

  7.   フェルナンド

    詳細のXNUMXつとして、私がブログをホストしているWebのセクションは次のとおりです。
    http://niferniware.sytes.net/blog/

    間違いでごめんなさい。

    乾杯!

    1.    エラヴ

      私はあなたのブログが本当に好きでした…^^

      1.    フェルナンド

        どうもありがとうElav、私たちは連絡しています!

        La verdad es que en cierto modo DesdeLinux me incitó a crear mi propio blog. Tanto tiempo usando Linux hace que uno se plantee aportar algo a cambio ^^

        挨拶!

  8.   MSX

    「なぜ私が机にこれらのXNUMX文字を選んだのか疑問に思っているのなら、私はDNAのXNUMXつの核塩基を思い出しました。」
    甘い、+ 1

    1.   

      まあ、私は自分の机にDNAを置くというアイデアが本当に好きです。

  9.   ハロンソフ

    素晴らしいガイド、彼女のおかげで私はxmonadを試しているだけです、そしてそれについてXNUMXつだけ言うことができます、私はxmonadに恋をしました、私はまだそれに手を置いていません、そしてそれでもそれは素晴らしいようです、どうもありがとう

    1.    MSX

      すばらしいです。あなたの進歩が投稿に変わることを願っています! =)

  10.   ビクターサルメロン

    講師へのちょっとした観察です。現時点では、Debian安定版(Squeeze)を使用しており、dmenuをインストールするために、aptitude install dmenuではなく、suckless-toolsパッケージを使用しています。それ以外の場合は優れたチュートリアルです。

    1.   

      同じ適性がそれを修正します。 また、このように順序がよくわかります。

  11.   タラントニオ

    このガイドは、xがインストールされていることを前提としています。
    私の場合、xorgをインストールする必要があるdebianコンソールからのみ開始します。 私たちが探しているのは、グラフィカル環境のないdebianから始めて、xmonadをシンプルモードでインストールし、mutt、irssiなどのツールやコンソールプログラムを追加する、最小限の環境であるため、問題ありません。

    1.   

      はい、Xはすでにオンになっています。 投稿自体は、私がすでにOpenboxで作成された最小限のDebianから始めたと説明しています。