以下のメッセージがapt upgradeで表示される。肝心の必要な情報は見づらい。
以下のファイルをコメントアウトすると消える。
Get more security updates through Ubuntu Pro with 'esm-apps' enabled: python2.7-minimal imagemagick libjs-jquery-ui libopenexr25 libpostproc55 libmagickcore-6.q16-6-extra libavcodec58 libmagickwand-6.q16-6 libavutil56 imagemagick-6.q16 libswscale5 libmagickcore-6.q16-6 libswresample3 imagemagick-6-common libavformat58 python2.7 libpython2.7-minimal libpython2.7-stdlib libavfilter7
sudo vi /etc/apt/apt.conf.d/20apt-esm-hook.conf
#APT::Update::Pre-Invoke {
# "[ ! -e /run/systemd/system ] || [ $(id -u) -ne 0 ] || systemctl start --no-block apt-news.service esm-cache.service || true";
#};
#APT::Update::Post-Invoke-Stats {
# "[ ! -f /usr/lib/ubuntu-advantage/apt-esm-hook ] || /usr/lib/ubuntu-advantage/apt-esm-hook || true";
#};
#binary::apt::AptCli::Hooks::Upgrade {
# "[ ! -f /usr/lib/ubuntu-advantage/apt-esm-json-hook ] || /usr/lib/ubuntu-advantage/apt-esm-json-hook || true";
#};
ipynbのファイルをtxtに変換する。で、特定語を含むファイルを検索する。
Jupyterlabのipynbファイルの内容を検索したい。その為にtxtだけのファイルに変換する。
入出力リダイレクトを使うので、新しくディレクトリを作り、そこに対象のipynbファイルをコピーする。
安全の為にそのディレクトリで操作を行う。
#!/usr/bin/bash
###
### ipynb to txt化
###
find ./ -name "*.ipynb" >list_ipynb
while read LINE
do
echo "$LINE"
LINE2=${LINE/ipynb/txt}
echo "$LINE2 に変換する"
jq -j '.cells | map( select(.cell_type == "code") | .source + ["\n\n"] ) | .[][]' < $LINE > $LINE2
done < list_ipynb
#!/usr/bin/bash
txt化したファイルができたら、検索語をxargs grepでファイルごとに検索する。
find ./ -name "*.txt" | xargs grep $1
xrandrでモニターの操作
$xrandr --current
xrandr --output HDMI-A-0 --mode 1920x1200 --pos 0x0 --output DisplayPort-2 --mode 1920x1080 --pos 1920x0
xrandr --output HDMI-A-0 --off
Fvwm3-1.0.5 来る
https://github.com/fvwmorg/fvwm3/releases/tag/1.0.5
https://github.com/fvwmorg/fvwm3
1年ぶりのアップデートがリリースされました。
いくつかの変更とバグフィックスがずらっとありますね。
Debianが先行し、Ubuntuにfvwm3が追加された具合である。
Ubuntu 22.10(kinetic)にパッケージ: fvwm3 (1.0.4+ds-1build1) [universe]
Debianはtestingとsidにパーケージが追加された。
bookworm (testing) (x11): F(?) Virtual Window Manager
1.0.5+ds-1: amd64 arm64 armel armhf i386 mips64el mipsel ppc64el s390x
sid (unstable) (x11): F(?) Virtual Window Manager
1.0.5+ds-1: alpha amd64 arm64 armel armhf hppa i386 m68k mips64el mipsel ppc64 ppc64el riscv64 s390x sh4 sparc64 x32
自分はUbuntu 22.04 LTS “Jammy Jellyfish”を使っている。パッケージはなく、いつものようにコンパイルしてインストールをする。
必要なパッケージはインストール
$sudo apt install libevent-dev libx11-dev libxrandr-dev libxrender-dev libxt-dev libxft-dev asciidoctor libfontconfig-dev libfreetype6-dev libfribidi-dev libncurses5-dev libpng-dev libreadline-dev librsvg2-dev libsm-dev libxcursor-dev libxext-dev libxi-dev libxpm-dev sharutils
gitからインストールを行う
$git clone https://github.com/fvwmorg/fvwm3.git
fvwm3ディレクトリーに移動し
$./autogen.sh $./configure --enable-mandoc --enable-golang
Makefileの、’CPPFLAGS’を、CPPFLAGS = -march=nativeにして
$make clean && make -j10
sudoでインストールする
sudo make install
過去の記事
Ubuntu21.10にSwapファイルでのHibernateを設定する
インストール後、swapファイルは2047M使用してファイルでのswapを行うようになっている。メモリー5536Mあり、ハイバネートするにはメモリー半分以下なので、余裕を持たせてswapファイルを拡大する。
sudo swapoff /swapfile
sudo fallocate -l 8G /swapfile
sudo chmod 600 /swapfile
sudo swapon /swapfile
sudo swapon -s
swapファイルができたら、/etc/default/grubの編集を行う。GRUB_CMDLINE_LINUX_DEFAULTにresume=UUID= resume_offset= の値を付けて追記する。UUIDの方はblkidでswapファイルのあるパーティションのUUIDを、resume_offsetは
sudo filefrag -v /swapfile
を行って表示される0:の行のphysical_offsetの開始の数値である。..が付いてる方で、..は開始を意味するもので、offsetの数値ではない。
sudo filefrag -v /swapfile |grep " 0:"| awk '{print $4}'|sed -e 's/\..//'
上記のコマンドで表示される数値である。
sudo update-grub
で、再起動を行う。
sudo systemctl hibernate
これでハイバネートできる。
https://codepre.com/how-to-enable-hibernation-on-ubuntu-when-using-swap-file.html
小さなコマンド
.bashrc に追加する。メモリーを解放するよ。
alias memfree='VAR=`mem`&&sudo sh -c "echo 3 >/proc/sys/vm/drop_caches"&&VAR2=`mem`&&echo freememory $VAR to $VAR2'
日本語に対応したフォント一覧
fc-list :lang=ja file
どんなアプリがインストールされているか知ることができるランチャーである。検索、ブックマーク、履歴、アクセサリー、インターネット、オフィス、グラフィック、ゲーム、システム、マルチメディア、設定のカテゴリーが左枠に出現させられる。XDGMenuより多機能で見やすい。FVWMにはこれだね、メニューとショートカットに入れるべき。ポップアップでコマンドも表示されるので、気に入ったコマンドは、FVWMのメニューに追加できるので、xfce4-appfinderをイチオシ。
sudo apt install xfce4-appfinder
fvwm3のインストール
「FVWM version 3 — the successor to fvwm2」が公開されているが、現在UbuntuにはFvwm3のパッケージは存在しない。https://packages.ubuntu.com/
待っていても、パッケージでは提供されないのだろうか。と言う訳でコンパイルしインストールを行う。
https://github.com/fvwmorg/fvwm3/blob/master/dev-docs/INSTALL.md ここを参考に、Core dependenciesとOptional dependenciesをインストールしておく。
librsvg-devがなくてlibrsvg2-devがあったので、これをインストールしてみた。大丈夫?
#!/bin/bash while read line do echo -e "\e[32;1m$line\e[m" sudo apt install $line -y done << EOF libevent-dev libx11-dev libxrandr-dev libxrender-dev libxt-dev asciidoctor libfontconfig-dev libfreetype6-dev libfribidi-dev libncurses5-dev libpng-dev libreadline-dev librsvg2-dev libsm-dev libxcursor-dev libxext-dev libxft-dev libxi-dev libxpm-dev sharutils EOF
準備ができたらgitからダウロード
git clone https://github.com/fvwmorg/fvwm3.git
あとはInstalling From Gitの手順で
./autogen.sh ./configure --enable-mandoc make
configureでWith Golang support? noになったが、まぁいいか。
じゃないわ! FvwmPrompt
— a new module written in golang
: ./configure --enable-golang
needed at compile time だとさ。
で、以下のconfigureでyesになった。
./configure --enable-mandoc --enable-golang
つまりこういう事である。
/autogen.sh && ./configure --enable-mandoc --enable-golang && make -j4
さらに改良。Makefileに、CPPFLAGS = -march=amdfam10 追加。k10なのよ。
でmake clean && make -j4
sudo make install
インストールできたら、 .xinitrcのfvwm2の部分をfvwm3に書き換えて。startxする。
何が変わったのかはここを読むといい。https://github.com/fvwmorg/fvwm3/releases
fvwm3では、Strokeコマンドがなくなった。libstroke
support has been removed.だと。
あまり使わないので、まぁ影響はないけど。キーとマウスクリックで対応できるでしょうから。Strokeは設定ファイルからコメントアウト。あとEdgeResistance 30 30でエラー、引数は1つのみが正解。何か2つ目の引数って効果あるの?ってずっと思ってた。EdgeResistance 30が正しいと、-vオプションのエラーログで分かった。
logを取るには.xinitrcで起動時に fvwm3 -v と -vのオプションを付けると、$HOME/.fvwm/fvwm3-output.log が作られる。起動中では pkill -USR2 fvwm3 ができる。
Fvwm3のモジュールは以下のとおり
FvwmAnimate FvwmAuto FvwmBacker FvwmButtons FvwmCommandS FvwmConsole FvwmConsoleC FvwmEvent FvwmForm FvwmIconMan FvwmIdent FvwmMFL FvwmPager FvwmPerl FvwmRearrange FvwmScript FvwmTalk
fvwm2.6.8のモジュールは以下の通り。○は存続、×は消滅したもの。
FvwmAnimate ○ FvwmAuto ○ FvwmBacker ○ FvwmBanner × FvwmButtons ○ FvwmCascade × FvwmCommandS ○ FvwmConsole ○ FvwmConsoleC ○ FvwmConsoleC.pl × FvwmCpp × FvwmEvent(FvwmAudio) ○ FvwmForm ○ FvwmIconMan ○ FvwmIdent ○ FvwmM4 × FvwmPager ○ FvwmPerl ○ FvwmProxy × FvwmRearrange ○ FvwmScript ○ FvwmTalk ○ FvwmTile ×
fvwm2.6.8はfvwm2.6の最終安定版ですね。
こちらでも絶版があるわけですが。FvwmTaskBarが無くなったのが大きかったかな。
- Some fvwm modules have been removed: - FvwmDragWell (no replacement) - FvwmGTK (no replacement) - FvwmSave (no replacement) - FvwmSaveDesk (no replacement) - FvwmScroll (no replacement) - FvwmTabs (no replacement, never worked anyway) - FvwmTaskBar (use FvwmButtons) - FvwmTheme (in core of fvwm as colorsets) - FvwmWharf (use FvwmButtons) - FvwmWinList (use WindowList command) - FvwmWindowMenu (use WindowList command) - FvwmIconBox (use the IconBox style instead)
Ubuntu BIOS or EFI/UEFI
$ [ -d /sys/firmware/efi ] && echo UEFI || echo BIOS
GTK+でファイルを選ぶ、gtk_file_chooser_dialog_new
GUIでファイルを探す処理に、GTK+を利用してみよう。
プログラムでファイルを選ぶ場合、あらかじめシェルかファイラーを用い、ファイル名を正確に代入する必要になる。選んだファイル名を返す、単純なGUIのプログラムがあれば汎用できるので、便利である。今回は、GTK+というツールボックスを使用して、GUIでファイルを探すプログラムの制作を行ってみよう。
設定として、簡単で単純なプログラム。汎用性が高いこと。カスタマイズ可能。GTK+の学習を目的とする。
filechooser.c
#include <gtk/gtk.h> int main(int argc, char *argv[]){ GtkWidget *dialog; gtk_init(&argc, &argv); GtkFileChooserAction action = GTK_FILE_CHOOSER_ACTION_OPEN; gint res; dialog = gtk_file_chooser_dialog_new ("Open File", NULL, action, ("Cancelする"), GTK_RESPONSE_CANCEL, ("Openする"), GTK_RESPONSE_ACCEPT, NULL); res = gtk_dialog_run (GTK_DIALOG (dialog)); if (res == GTK_RESPONSE_ACCEPT) { char *filename; GtkFileChooser *chooser = GTK_FILE_CHOOSER (dialog); filename = gtk_file_chooser_get_filename (chooser); g_print("%s\n",filename); //open_file (filename); g_free (filename); } gtk_widget_destroy (dialog); return 0; }
コンパイルは以下で。
gcc filechooser.c -o filechooser `pkg-config --cflags --libs gtk+-3.0`
エラーが出る
Gtk-Message: GtkDialog mapped without a transient parent. This is discouraged.
gtk_dialog_run (GTK_DIALOG (dialog)); このエラーはで生じてる。
gtk_file_chooser_dialog_new の二番目の引数、NULLだと生じるのか?
そのようだった。main関数から、呼び出すと消えた。
#include <gtk/gtk.h> int file_selection_dialog(GtkWidget *window ,gchar *str){ GtkWidget *dialog; GtkFileChooserAction action = GTK_FILE_CHOOSER_ACTION_OPEN; gint res;; dialog = gtk_file_chooser_dialog_new ("Open File", GTK_WINDOW (window), //NULL, action, ("Cancel"), GTK_RESPONSE_CANCEL, ("Open"), GTK_RESPONSE_ACCEPT, NULL); GtkFileChooser *chooser = GTK_FILE_CHOOSER (dialog); gtk_file_chooser_set_current_folder (chooser,str); res = gtk_dialog_run (GTK_DIALOG (dialog)); if (res == GTK_RESPONSE_ACCEPT) { char *filename; filename = gtk_file_chooser_get_filename (chooser); g_print("%s\n",filename); g_free (filename); } gtk_widget_destroy (dialog); } int main(int argc, char** argv){ GtkWidget *window; gtk_init(&argc,&argv); window = gtk_window_new(GTK_WINDOW_TOPLEVEL); g_signal_connect(window, "destroy",G_CALLBACK(gtk_main_quit), NULL); file_selection_dialog(window, argv[1]); return 0; }
main関数とは、別に関数を作り、mainから呼び出すと、GtkDialog mapped without a transient parentのエラーは消えた。mainの中でgtk_file_chooser_dialog_newウィジェットを実行してもエラーがでない方法がありそうだが。組み合わせをいじってみて、mainの中でも動くようになった。改めてみると、単純な表現であるが、初心者が戸惑うツボが垣間見れる。
#include <gtk/gtk.h> int main(int argc, char *argv[]){ GtkWidget *dialog; GtkWidget *window; gtk_init(&argc, &argv); window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gint res; dialog = gtk_file_chooser_dialog_new ("Open File", GTK_WINDOW (window), GTK_FILE_CHOOSER_ACTION_OPEN, ("Cancelする"), GTK_RESPONSE_CANCEL, ("Openする"), GTK_RESPONSE_ACCEPT, NULL); GtkFileChooser *chooser = GTK_FILE_CHOOSER (dialog); if (argv[1]) gtk_file_chooser_set_current_folder (chooser,argv[1]); res = gtk_dialog_run (GTK_DIALOG (dialog)); if (res == GTK_RESPONSE_ACCEPT) { char *filename; filename = gtk_file_chooser_get_filename (chooser); g_print("%s\n",filename); g_free (filename); } return 0; }
実行すると、引数のディレクトリーを指定できるので、そのところで開く。
ファイルを選ぶと、標準出力にファイル名を出すようしにした。
シェルスクリプトから呼び出すと、応用できる範囲は広い。
set filePath [exec /home/user/gtk/filechooser /home/user/Archives/Photos/Image]
このように、tclでfilePathにファイル名を代入することができる。Tkで使ってた、tk_getOpenFile をこちらに変えたのである。Tkではプレビューがないので画像ファイルは、呼び出して表示と手間がかかっていた。この方法だとプレビューと言うか、アイコンが見えるのあるが……。小さい。まったく小さい。大きさ変えられないし。もっと大きなアイコン表示ができる?プレビューが同じ窓でできない?
You can add a custom preview widget to a file chooser and then get notification about when the preview needs to be updated. To install a preview widget, use Gtk.FileChooser.set_preview_widget(). Then, connect to the Gtk.FileChooser ::update-preview signal to get notified when you need to update the contents of the preview.
gtk_file_chooser_set_preview_widget()を使ってみた。
#include <gtk/gtk.h> static void update_preview_cb (GtkFileChooser *file_chooser, gpointer data) { GtkWidget *preview; char *filename; GdkPixbuf *pixbuf; gboolean have_preview; preview = GTK_WIDGET (data); if (filename = gtk_file_chooser_get_preview_filename (file_chooser)) { pixbuf = gdk_pixbuf_new_from_file_at_size (filename, 256, 256, NULL); have_preview = (pixbuf != NULL); g_free (filename); gtk_image_set_from_pixbuf (GTK_IMAGE (preview), pixbuf); if (pixbuf) g_object_unref (pixbuf); gtk_file_chooser_set_preview_widget_active (file_chooser, have_preview); } } int main(int argc, char *argv[]) { GtkWidget *dialog; GtkWidget *window; GtkWidget *preview; gtk_init(&argc, &argv); window = gtk_window_new (GTK_WINDOW_TOPLEVEL); dialog = gtk_file_chooser_dialog_new ("Open File", GTK_WINDOW (window), GTK_FILE_CHOOSER_ACTION_OPEN, ("Cancelする"), GTK_RESPONSE_CANCEL, ("Openする"), GTK_RESPONSE_ACCEPT, NULL); preview = gtk_image_new (); GtkFileChooser *chooser = GTK_FILE_CHOOSER (dialog); gtk_file_chooser_set_preview_widget (chooser, preview); g_signal_connect (chooser, "update-preview", G_CALLBACK (update_preview_cb), preview); if (argv[1]) gtk_file_chooser_set_current_folder (chooser,argv[1]); if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT) { char *filename; filename = gtk_file_chooser_get_filename (chooser); g_print("%s\n",filename); g_free (filename); } gtk_widget_destroy (dialog); return 0; }
これだと画像を選択すれば、右にプレビューが表示されるので便利だ。
https://developer.gnome.org/gtk3/stable/GtkFileChooserDialog.html#gtk-file-chooser-dialog-new
https://developer.gnome.org/gtk3/stable/GtkFileChooser.html
https://lazka.github.io/pgi-docs/Gtk-3.0/interfaces/FileChooser.html
追加
Couldn’t connect to accessibility bus: Failed to connect to socket /tmp/dbus
が出現するのを消すには、
export NO_AT_BRIDGE=1
を実行しておく、bashrcに記載しておく。fvwmのメニューの中で実行して、エラーが出るので、wish中に
set ::env(NO_AT_BRIDGE) 1
を追加するとエラーが出なくなった。dbusのバグのようだが。
FvwmButtons Swallowを使う
xwininfoで名前を調べられる