Posts

2022-11-20 | ox-hugoを使うようにする ox hugo

ox-hugoとは emacsのorg-modeで書いた文章をhugoで扱えるmarkdownにexportするもの。 なんでox-hugo org-modeから離れられないとかそういう人向け。 orgファイルにすべてを集約しているのでそこからブログに切り出すというワークフローを使いたい。 org-modeのよさ emacsの標準ドキュメンテーション なんでも書ける なんにでも出せる emacs lisp以外でもプログラミングを埋め込むなどできる 表計算まで可能 TODOリストにもなる 大元はアウトラインプロセッサのはず org-modeのよくなさ 多分emacsなしではやってけない 普通はmarkdownでしょ? なんでもできすぎて移行が難しい ひとまず これでやっていく

2021-12-16 | swayでwayland sway wayland

pyspa Advent Calendar 2021 の16日目のエントリです。 15日目は@ymotongpooのGoのリリースプロセスとブランチ戦略でした。 waylandにしよう ある日X serverの調子が悪いのかディスプレイマネージャーからログイン後すぐにログアウトしてしまうようになった。 bspwmを使っていて発生したがopenboxに変えたりしても状況変わらず。 コンソールから立ち上げたりしてもエラーが出てるわけでもなく、原因がわからないままにふと試しに入れていたswayを起動したらちゃんと動いた。なぜかwaylandは動くのである。 そういうことならもうwaylandに移行してみるかと新たなヤックの群れに立ち向かうことにした。 (※debian sidにて作業した記録です。) sway お試しでいれてみたswayだがこれはwaylandコンポジターの1種でi3wmのようなタイル型のレイアウトでウィンドウを扱うもの。 というか設定ファイルはほとんどi3と同じでwayland向けの設定が追加されているくらいのものである。 キーボード設定とか ひとまずディスプレイマネージャーを切って、コンソールからの立ち上げでいろいろ設定していくことにする。 waylandはx serverの役割とウィンドウマネージャーの役割をコンポジターが受け持っているので、そこらへんの設定も必要になる。 システムの設定は /etc/sway/config にあった。 ユーザーの設定ファイルは ~/.config/sway/confing になるのでこっちにコピーして修正していくことにしよう。 $ mkdir ~/.config/sway $ cp /etc/sway/config ~/.config/sway ひとまずキーボードをjp106に設定しよう。あとCAPSをCTRLにしておく。 input * { xkb_layout "jp" xkb_options "ctrl:swapcaps" } あとトラックパッドでタップ設定とナチュラルスクロールの設定とかもしておく。 input type:touchpad { tap enabled natural_scroll enabled } タスクバーとかランチャーとか swayにはswaybarというタスクバーが標準でついてくるが、まあいろいろ追加できるwaybarというものがあるのでそっちに交換する。 waybarはwlrootsを使っているコンポジターと相性がいいらしいので採用。 ランチャーについてはbspwmにrofiを使っていたがwaylandにポーティングかなんかしたwofiというのがあったので採用。 通知についてはdunstからmakoに変更。 まとめるとこんな感じ タスクバー: waybar ランチャー: wofi デスクトップ通知: mako waybarについてはexecするのではなくbarの設定でコマンド指定する。 bar { swaybar_command waybar } wofiはキーバインドで実行できるようにしておく。

2021-07-22 | setuptoolsの未来 python packaging

setuptoolsはPythonにおけるライブラリ配布のためのツールとして長らく利用されています。 配布物の作成方法はPEP 517で標準化されpoetryやflitのようなツールが作成されています。 これらのツールはPEP 517に対して開発されてきたためpyproject.tomlでプロジェクトメタデータを記述しています。 しかしsetuptoolsはプロジェクトメタデータをsetup.py, setup.cfgに記述する方法をとっており、これらのファイルがまだ必要となっています。 これらのファイルが必要となる理由といつまで必要となるのか整理しました。 setup.cfg setuptoolsもPEP517に対応しているため以下のようなpyrproject.tomlを記述してwheelを作成できます。 (https://setuptools.readthedocs.io/en/latest/build_meta.html) [build-system] requires = ["wheel", "setuptools"] build-backend = "setuptools.build_meta" このときプロジェクトメタデータはsetup.cfgに記述することになるため、 setup.cfgとpyproject.tomlと設定ファイルが2つ必要になります。 しかしpoetryやflitといったパッケージングツールはpyproject.tomlにプロジェクトメタデータを記述するようになっています。 これらのツールもメタデータの記述方法はそれぞれ独自に決めているため細かな才があります。 とはいえ最終的には同じメタデータを生成するための情報なのでメタデータをpyroject.tomlに書くためのスキーマを定義するPEPが提案されています。 pyproject.tomlにプロジェクトメタデータを記述するためのPEP PEP 621 – Storing project metadata in pyproject.toml PEP 631 – Dependency specification in pyproject.toml based on PEP 508 setup.py wheelを作成するにはsetup.pyは必要ありません。 しかし、setuptoolsの単体で依存ライブラリをインストールする機能である develop コマンドや editable install には setup.py が必要になります。 この場合、ただ setup 関数を呼ぶだけの setup.py を作成することになります。 from setuptools import setup setup() pipのinstallコマンドで --editable (-e) オプションをつけるとeditableインストールとなります。