【Ubuntu】スクリーンショットのファイル名フォーマットを変更する方法

ブログの中でスクショを乗せることがあるんですが、Ubuntuの標準アプリで撮ったスクリーンショットのファイル名が、デフォルトだと空白文字を含んだ状態で保存されてしまいます。 これをブログに載せようと思ったら、空白文字をいちいちURLエンコードしないといけないことに気づいてしまいました。 そこで、あれこれやって空白文字をアンダースコアに置き換えて保存する方法を見つけたので共有します。 どうやったか まず標準アプリでフォーマットを指定できるか調べてみましたが、これはどうやらできないみたいです。 (設定項目に名前のフォーマットを指定するプロパティがありませんでした。) dconfエディターで確認した様子 そこで、しょうがないのでスクリーンショットが保存されるディレクトリを監視して、ファイルが作成されたらファイル名を空白文字からアンダースコアに書き換えるshを実装しました。 (ちなみに、shの実装は全部ChatGPTにおまかせしちゃいました。) 監視のためのサービスはsystemdに登録し、再起動してもちゃんと動いてくれるようにしました。 実装手順 まずはディレクトリ監視に必要なライブラリをインストールしておきます。 sudo apt install inotify-tools インストールできたら、スクリーンショットの保存先ディレクトリを監視してファイル名を置き換えるshを実装します。 以下が作成したshファイルです。 #!/bin/bash ### BEGIN INIT INFO # Provides: screenshot_monitor # Required-Start: $remote_fs $syslog # Required-Stop: $remote_fs $syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Screenshot Monitor # Description: Monitors directory for new screenshots and performs actions ### END INIT INFO # スクリーンショットの保存先ディレクトリ screenshot_dir="/home/[username]/Pictures/スクリーンショット" # 監視対象のイベントを指定してinotifywaitを実行し、新しいファイルが追加された場合にスクリプトを実行する inotifywait -m -e create -e moved_to "$screenshot_dir" | while read -r directory event filename; do # スペースをアンダースコアに置換 new_filename=${filename// /_} new_filepath="$screenshot_dir/$new_filename" # ファイル名の変更 mv "$directory$filename" "$new_filepath" done ([username]の部分は自身のユーザー名に置き換えてください) ...

7月 8, 2023 · にあえん

aptからVSCodeを更新する

普通にやってればsudo apt install codeで更新できるみたいなんですが、僕の環境ではうまくできなかったので更新した際の備忘録として書いときます。 結論として、以下のコマンドで公式からダウンロードしてaptでインストールできます。 wget --trust-server-names=on "https://code.visualstudio.com/sha/download?build=stable&os=linux-deb-x64" && \ ls -d ./* | grep "code_" | xargs sudo apt install ダウンロード先のURLは、debianに対応したバージョンのVSCodeになっています。 (もしも違うOSを使用している場合はこのURLの部分を変えてください。) wgetの--trust-server-namesオプションを使用してあげると、リダイレクト先のファイル名を使用してダウンロードしてくれます。 ダウンロードしたファイル名はcode_から始まっているため、その名前でgrepしてapt installに渡してあげています。 これでインストールできます。 参考 VSCodeの公式ページ LinuxにVisual Studio Codeをインストールする SourceForgeからwgetする時正しいファイル名で保存する

7月 8, 2023 · にあえん

apt updateが「以下の署名が無効です」で失敗した

aptでVSCodeをアップデートしようとしたら以下のようなエラーが出力されました。 % sudo apt update ヒット:1 http://ftp.jaist.ac.jp/pub/Linux/ubuntu jammy InRelease ヒット:2 http://ftp.jaist.ac.jp/pub/Linux/ubuntu jammy-updates InRelease ヒット:3 http://ftp.jaist.ac.jp/pub/Linux/ubuntu jammy-backports InRelease ヒット:4 https://cli.github.com/packages stable InRelease ヒット:5 http://ftp.jaist.ac.jp/pub/Linux/ubuntu jammy-security InRelease 取得:6 https://apt.releases.hashicorp.com jammy InRelease [12.9 kB] ヒット:7 https://brave-browser-apt-release.s3.brave.com stable InRelease 取得:8 https://dl.k6.io/deb stable InRelease [4,149 B] エラー:6 https://apt.releases.hashicorp.com jammy InRelease 公開鍵を利用できないため、以下の署名は検証できませんでした: NO_PUBKEY AA16FCBCA621E701 エラー:8 https://dl.k6.io/deb stable InRelease 以下の署名が無効です: EXPKEYSIG C780D0BDB1A69C86 k6.io (key for signing binaries) <security@k6.io> ヒット:9 https://ppa.launchpadcontent.net/cartes/drawing/ubuntu jammy InRelease ヒット:10 https://ppa.launchpadcontent.net/jonmagon/kdiskmark/ubuntu jammy InRelease 17.0 kB を 3秒 で取得しました (6,203 B/s) パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています... 完了 状態情報を読み取っています... 完了 アップグレードできるパッケージが 4 個あります。表示するには 'apt list --upgradable' を実行してください。 W: 署名照合中にエラーが発生しました。リポジトリは更新されず、過去のインデックスファイルが使われます。GPG エラー: https://apt.releases.hashicorp.com jammy InRelease: 公開鍵を利用できないため、以下の署名は検証できませんでした: NO_PUBKEY AA16FCBCA621E701 W: 署名照合中にエラーが発生しました。リポジトリは更新されず、過去のインデックスファイルが使われます。GPG エラー: https://dl.k6.io/deb stable InRelease: 以下の署名が無効です: EXPKEYSIG C780D0BDB1A69C86 k6.io (key for signing binaries) <security@k6.io> W: https://apt.releases.hashicorp.com/dists/jammy/InRelease の取得に失敗しました 公開鍵を利用できないため、以下の署名は検証できませんでした: NO_PUBKEY AA16FCBCA621E701 W: https://dl.k6.io/deb/dists/stable/InRelease の取得に失敗しました 以下の署名が無効です: EXPKEYSIG C780D0BDB1A69C86 k6.io (key for signing binaries) <security@k6.io> W: いくつかのインデックスファイルのダウンロードに失敗しました。これらは無視されるか、古いものが代わりに使われます。 インストールしているK6とTerraformに関連したリポジトリの更新に失敗しています。 ...

7月 8, 2023 · にあえん