リンクを開くアプリの制御

リンクを開くアプリの制御

私の状況は簡単です。個人用と仕事用の2つのブラウザプロファイルがあります。これでURLを取得できる2つのソースがあります。

私の目標は、個人プロファイルを使用してあるソース(Slackなど)でURLを開き、職場プロファイルを使用して別のソース(Teamsなど)からURLを開く方法を持つことです。 /usr/share/applicationsに正しいエントリを作成し、binディレクトリでスクリプトを実行すると正常に動作しますが、ofcは同じプロファイルを持つすべてのリンクを開きます。この問題を解決するには3つの方法があります。

  1. 過去のどこかでShift-Click / Ctrl-Clickを使用でき、クリックや他のアプリケーションで動作しますが、内部的に何が起こっているのか、どのように使用するのかについての情報が見つかりませんでした。
  2. 一部のグローバル変数を使用すると、いくつかのショートカットで変更でき、ブラウザを開くスクリプトで使用できます。スクリプトでechoを使っていくつかのファイルに書き込んでrofiを使って実行できますが、それがエレガントであるかどうかはわかりません。
  3. リンクをクリックしたコンテキストをOSに通知するには、Slackからインポートした場合はアプリAを使用し、TeamsでアプリBを使用する場合はアプリAを使用します。

私はX11でbspwmとsxhkdを使用しています。

あなたが国ならどんな方向に行くのか案内してくれ、どこをもっと掘り下げるべきかを詳しく教えていただけますか?

答え1

よくわかりませんが、qutebrowserこのブラウザラッパーでどのプロファイルを使用しているかを確認するには、次の手順を実行します。

#!/usr/bin/env bash

profileInUse=$(
    {
        lsof ~/.config/qutebrowser/*/* \
        ~/.mozilla/firefox/*/.parentlock \
        ~/.config/chromium/Profile*/Cookies 2>/dev/null
    } | grep -oPm1 '(qutebrowser|chromium|firefox)/[^/+]+'
)

case "$profileInUse" in
    qutebrowser/work*)
        qutebrowser --profile work "$@"
    ;;  
    qutebrowser/home*)
        qutebrowser --profile home "$@"
    ;;
    chromium/z*)
        chromium --user-data-dir=z "$@"
    ;;  
    firefox/x*)
        firefox -P x "$@"
    ;;
    *)
        echo >&2 "NOT implemented browser error ${profileInUse%/*}"
        exit 1
    ;; 
esac

browserパスに保存し、システムをデフォルトのブラウザに設定します。例:

xdg-settings set default-web-browser browser.desktop

(ファイルを作成する必要がありますbrowser.desktop。)

関連情報