●擬似Deck俺メモ Ver1.8.01011600 ------------------------60------------------80-----------------100 アナウンス用アカウント(このテキスト同様に独り言・戯れ言が多めになると思う) https://twitter.com/PseudoTwDk 配布WEBページ http://coltpythonkingcobra.g1.xrea.com/pseudoTweetdeck/ 個々のテキスト http://coltpythonkingcobra.g1.xrea.com/pseudoTweetdeck/history.txt [Shift-JIS] http://coltpythonkingcobra.g1.xrea.com/pseudoTweetdeck/pseudoTweetdeck.txt [Shift-JIS] ←これ http://coltpythonkingcobra.g1.xrea.com/pseudoTweetdeck/pseudoHelp.txt [Shift-JIS] http://coltpythonkingcobra.g1.xrea.com/pseudoTweetdeck/CustomCSS.txt [Shift-JIS] http://coltpythonkingcobra.g1.xrea.com/pseudoTweetdeck/UserScript.txt [Shift-JIS] http://coltpythonkingcobra.g1.xrea.com/pseudoTweetdeck/CommandChain.txt [Shift-JIS] 初投下スレ https://egg.5ch.net/test/read.cgi/software/1691866735/104 ※このメモは古い記述も残して、更新されたものを注釈として追記しているため非常に読みにくいと思い ます。動作仕様・前提条件の設定・制限事項などについては pseudoHelp.txt に再編集しましたのでそちら をお読み下さい。 ※このメモ自体は書き殴り+言い訳のようなものを垂れ流す場として残します。 ------------------20------------------40------------------60------------------80-----------------100 ★はじめに Tips的なものや色々やってて解ったことも雑多に書き連ねておく。 口調とかも統一されてないけど気にせんでおいてくださいな。 独自に書き換えてる人はテキストやスクリプトが更新された時は何が変わったのか各自で差分を確認して。 手順・説明よりも戯れ言を垂れ流すのがメインのテキストになりつつあるけど。 何でこうなってるのか、突っ込まれそうなところを予め全部言い訳並べてある感じ。 X(旧Twitte)を指す単語は従来どおりのTwitter・ツイートなど前の用語で表記する。解りにくいからな。 基本的に自分用だから要望とかあっても全部は対応しきれないし、TwitterWEBの内部階層やクラス名など が変更になってすぐに動かなくなる事も考えられ、いつまでも対応っていうのがだいぶ現実的ではない。 自分が擬似Deckベースで運用してる限りはアップデートしていくとは思うけど。その程度のものだと 考えてください。 ここ間違ってんじゃね?とか、こういう場合に動作がおかしいってのを見つけたら何らかの手段で教え てくれ。環境や設定に激しく依存するから明らかにカスタムCSSやユーザースクリプトが原因と特定する のがそもそも難しいと思うけど。そこまで出来る人は自分で書けるという話もある。 正直なところTweetDeckスレも、カスタムCSSスレも、UserScriptスレも、Vivaldiスレも、Chrome拡張 スレも、どれもこれもスレ違いな気がするので何処を本拠地にすれば良いやら。 サードパーティアプリがお亡くなりになって旧Deckにどうにか順応したところでイーロンがやらかし やがったので色々調べるために10年ぶりとかに2ch(5ch)見るようになったのでスレ建てとかルールが 昔と結構変わっててよくわからんのだ。とりあえず公開開始はVivaldiスレにさせてもらったが専用の スレとか建てた方が良いと思ったら誰か任せた。 →結局のところ、どのスレもやっぱりスレ違いだなと思うので何か致命的な問題が起きた時なんか連絡 の手段は用意しとくべきかなということでTwitterアカウントを新設した。基本的にはアナウンス専用。 https://twitter.com/PseudoTwDk 丁寧に手順を書かれているこちらをまず参考に。そこからの魔改造カスタマイズとでも思ってください。 ナポリタン寿司さんの記事を紹介 ・Vivaldiブラウザを使って、TweetDeck風画面を構築してみよう! https://www.naporitansushi.com/vivaldi-tweetdeck-recreate/ ・【Tampermonkey】ウェブサイトにJavaScriptを適用できる拡張機能 https://www.naporitansushi.com/tampermonkey/ ・【Vivaldi】TweetDeck風環境をコマンドチェインで即構築方法 https://www.naporitansushi.com/vivaldi-tweetdeck-command-chain/ ・【Vivaldi】休止タブをより分かりやすく薄くするCSS https://www.naporitansushi.com/vivaldi-hibernation-tab-thin-css/ 自分は細かく丁寧に手順を説明みたいのがとても苦手なので、まずは上記4つの記事を熟読願います。 ---------------------------------------- ※23/09/19 12:00 大前提を書いてなかったので明示しておきます。 ここで使用しているカスタムCSSおよびユーザースクリプトではCSSセレクタに:has()という擬似クラス を使っていますので、現時点でのFirefoxではデフォルトで使えません。 https://developer.mozilla.org/ja/docs/Web/CSS/:has 一応設定を変更したら効くようですが https://at.sachi-web.com/firefox_enable-css-has.html 各種拡張機能がChrome版とFirefox版で異なる動作をする事もあるだろうし、そもそもがVivaldiを使った タブタイリングを前提にしているためFirefox環境での動作は全くといっていいほど確認していません。 ------------------20------------------40------------------60------------------80-----------------100 ★Vivaldi ・諸々の前提とプロファイル間の連携など: Vivaldiのタブタイリングを使って擬似的なTweetDeck環境をでっちあげる。 複数のアカウントで使いたい場合はVivaldiのプロファイルを新規に起こして同時起動出来るようにし、 1プロファイル=1Twitterアカウントとして別ウィンドウで起動する。プロファイルごとにアイコンも 変わる親切設計。タスクバーにも別々にピン留め出来る。 同じウィンドウ内でマルチアカウントできるような拡張は昔は色々動くものがあったらしいが、現時点では まともに動作するものにまだ巡り会っていない。 Firefox用のMulti-Account Containerですら思ったほど使い勝手が良くなくて結局いまのところ起動する Vaivaldiを複数プロファイルで使い分けている。Firefox系というかVivaldi以外のタブタイリングについて そもそも使い物になるのが無いからね。旧DeckみたいにどのアカウントでRTするか、みたいなのが選べない わけなのでそれが出来ないなら同一ウィンドウに複数アカウントが並んで居ても実はあんまりメリットが 無いと思ってたりする。そう言いつつ、出来るようになったら並んだデッキも組んでみると思うけど。 [リンク先を別プロファイルで開く]というのがVivaldi標準で組み込まれているのでアカウントをまたがっ たRTとかしたい場合は1クッション置く形になるけどURLコピペしてこっちで開くみたいなことはしなくて 済む。 Open In Firefoxを使ったり、GitHubで公開されているOpenWithをソース一部改変して組み込んだりすると そのへんが色々やりやすくなる。うちではVivaldi4匹に対してFirefoxもリビジョン違いを4匹割り当て てアカウント間でのやりとりに使っている。(実際には擬似Deck用途以外のためのVivaldiプロファイルが もう1つと、FirefoxはESR,Release,Beta,Aurora(DeveloperEdition),Nightlyの5種類居るけど。Firefox もプロファイル別起動同居というのは一応は可能だけどVivaldiほど強力ではなく、どちらのプロファイル で動いてるFirefoxにリンクを送るとか指定が出来ず、タスクバーのピン留めでは一緒にされたりして別物 として扱うのにだいぶ難がある。従って種類の違う奴を同居させている。VivaldiはAppIDというアプリ固有 のキーをプロファイル違いで別々になるように複雑なことをしているらしい。そうしないと複数ピン留めっ て出来ないのですわ) Firefox異種同居はESRとBetaのインストール時にインストール先フォルダを変える事とショートカットを作 らない事だけ守ればプロファイルを手動でどうこうとかしなくても今のバージョンはすんなり同居が出来る。 ショートカットは既にあるRelease版のリンケージがおかしい事になって結局新旧どちらも消して手動で作 り直しすることになります。インストール時に作らないを選んでおけば新しく入れたほうのショートカット を手動で作るだけで済みます。一応説明しておくと何でVivaldiだけで運用してないのかっていうと、何か あってブラウザがクラッシュ落ちする時にVivaldiがお亡くなりになる場合には全員一斉にお亡くなりにな るんですね。その点、Firefoxは完全に別プロセスなわけで互いには影響しないわけ。 Vivaldiは弄ることが出来る設定が豊富なのでタブを左に表示するやら次回起動時に前回のタブを復元する 設定やらステータスバー非表示とか諸々良い具合に設定して。 うちはアドレスバーとかまで非表示にしてタブが並ぶところの面積を最大化、必要に応じてALT+Aとかでア ドレスバーのON/OFFが表示切り替えされるようにメニューとかショートカットキーをカスタマイズしてある。 ここまで好き勝手にいじくれるブラウザは無いので普段使いにも良いよ。 今更だけど補足しておくとVivaldiはChrome系のコアを使っていてChrome用の拡張機能がほぼ使える。希に 動かない例外はあるだろうけど。 →複数プロファイルでなく、スタンドアロンインストールを複数して使うように変更 ---------------------------- ・タブタイリングのバグ:→6.2.3105.43 (Stable channel) (64-bit) にて解消              個別に調整したタブ幅も復元されるようになった( 2023/08/30 17:30 )              幅調整でブランクページ入れるのは有用だと思うので本記事は残します。              →タブ幅は何故か保存されないケースもある模様、セッションを手動で               保存して読み込んだ場合も復元されない( 2023/09/20 13:45 )             →Ver6.4以降でタイリングの呼称が変わりました。              以前は縦長のタブを横に並べる意味で「左右に並べる」だったものが              「縦に並べる」という表現に変わってしまっています。この項目の説明は              以前の表現のまま残していますが、意味は通じるかと思います。 横に並べてないタブ(単一のタブや縦にタイリングしたものなど)も同一ウィンドウ内に同居する場合に、 次回起動時の立ち上がり順番によって、横並びだったタブタイリングが別のスタイルで並んで起動されて しまう事がある不具合あり(Vivaldiサポートに報告済み、現象を確認して貰えたので対処待ち) 何組あっても良いが全組のタブが横並びにタイリングされていれば次回も必ず横に並んで起動する。 一時的に開いた単体のタブなんかは閉じてからVivaldiを終了するように気をつけるべし。 うちはList,Home,通知など5枚横に並んだものが1組、自Userと設定ページを横に並べたものが1組、 StylebotとTampermonkeyの管理ページを横に並べたものが1組でタイリングして使っている。 全部のペアが横に並んでれば次に起動した時にタイリングしなおす手間が省ける。 個々のタブ幅も調整したり出来るけどこれは次回起動時に復元されない仕様のようだから(要望は上がって いる)対応を気長に待ちましょう。 タブ幅が記憶されないため、Vivaldiを起動するたびに調整しなおすの面倒なので基本的に等幅のままで使う 事になると思うが、そうするとページによってタブ数が5の倍数とかに揃ってないと見栄えが良くないから ダミーページを挟んで調整。 http://coltpythonkingcobra.g1.xrea.com/blank/ うちの環境では3アカウント目が1つ表示するタブが少ないのでこれを設定してある。 ローカルに置くなら http://coltpythonkingcobra.g1.xrea.com/arc/BlankPage.zip を展開し任意の場所に置いてindex.htmlのフルパスをタブのアドレス入力に指定を。 ---------------------------- ・内部動作の停止を仮想デスクトップで解決: 表示更新に関して、TwitterWEB自体のスクリプト内部でAPIを叩き新着の獲得とかやってるんだろうが、 ユーザースクリプトが動いていてもTwitterページが他のウィンドウに隠れてしまっていたりVivaldi上で 他のタブに隠れていたりすると新着があがってこない動作をする。該当のタブの一部だけでも表示されて いれば動作する模様。なので表示されている部分が出来るようにウィンドウをずらして重ねてやったりする と内部動作が行われる。これは他のブラウザでも同じだと思われる。各ブラウザともに常に全力で動かすの ではなく省電力や余計なパケットをやりとりさせずネットインフラを無駄に消費させないという思想かと思 うが、フォアグラウンドでフォーカスを持ったウィンドウ(タブ)と、表示されているがバックグラウンド に居るウィンドウと、隠れているウィンドウで動作のプライオリティがだいぶ違うらしい。従ってタイマー 動作は1000msで回っていても実際はそれより長い周期で動作している。whileループでぶんまわして経過時間 の判定で処理したら多少は正確になるんだろうけどクソ重くなるのでやってません。 ページの可視性について https://hakuhin.jp/js/page_visibility.html 通常のウィンドウで常にどこか見えている状態にしておくのは非常に使いにくいため、Windows自体のデスク トップ機能であるタスクビュー(タスクバー左端のスタートボタンのすぐ右に居るやつ)にて仮想デスクト ップを追加してやり、増やしたデスクトップ1枚ごとにVivaldiのウィンドウを1匹ずつ配置してやって他の ウィンドウに隠されないようにしてやると解決。 但し、全員が内部のスクリプト動作が停止せず生きていることになるから処理は重くなる。 FirefoxだろうがChromeだろうがWaterfoxだろうがVivaldiだろうがどのブラウザを使おうと多数開けば全部重 いのでそもそもがTwitterWEBのせい。 沢山開けばそりゃあ重くなる。常時表示しなくて良いページは裏で休止させておくとか割り切った運用が必要。 旧Deckはそんな事考えずに数十枚開いておいても軽かったのにね。ほんと、イーロン恨むぜ。 仮想デスクトップはWIN+CTRL+カーソル左右で行き来が出来るがフリーウェアで色々切り替え機能を拡張をする ものが出ている。マウスを画面端に持ってくるだけで切り替わるやつを最初使ってたけど自分のクセで、何も 操作をしない時に画面端にカーソルを置き去るんだがそれで切り替わって煩わしかったので画面端でホイール を動かす事で切り替わるタイプに乗り換えた。 VDSwitcher 仮想デスクトップ切り替えツール http://hp.vector.co.jp/authors/VA001028/vdswitcher/install/ ざっと動作を調査した結果、下記のようになっている。 ------- 1) 長時間放置された結果、フォーカスの瞬間にTwitterWEB自身の   スクリプトによりリロードが掛かる 2) 表示中のウィンドウ 2-1) 表示中のデスクトップ 表示中のウィンドウ フォーカスのあるタブ →最上位プライオリティで動作しきちんと更新される 2-2) 表示中のデスクトップ 表示中のウィンドウ フォーカスのないタブ →プライオリティは下がるはずだが最上位プライオリティと  区別出来ない動作をしきちんと更新される ※フォーカスの有無は状態取得が出来るのでカウントダウンを表示 しないようにしている(設定で変更は可能だが) 2-3) 表示中ではないデスクトップ 表示中(であろう状態)のウィンドウ フォーカスは常にない →だいぶプライオリティは下がるが動作し概ねきちんと更新される  一応Twitterの内部動作で更新があがっている模様 3) 裏に隠れていたり最小化されているウィンドウ 3-1) 表示中のデスクトップ 非表示のウィンドウ フォーカスは常にない →ブラウザに特殊な設定をしてバックグラウンドでも停止させない  ようにでもしていないとスクリプト停止され、もちろんTwitter  自身の内部動作も停止される 3-2) 表示中ではないデスクトップ 非表示のウィンドウ フォーカスは常にない →ブラウザに特殊な設定をしてバックグラウンドでも停止させない  ようにでもしていないとスクリプト停止され、もちろんTwitter  自身の内部動作も停止される ※表示状態ではないウィンドウではスクリプトの動作有無に関わらず Twitterの内部動作が停止しているためスクリプトを無理に動かして おく意味がない。 → --disable-features=CalculateNativeWinOcclusion 起動オプションで無理に動かすことは可能 ------- まわりくどいけど 2-3) の状況を作るためにタスクビューを用いて仮想デスクトップ環境で使っているという 話でした。長時間放置でTwitterの内部動作が止まるのはどうやら接続自体を切っている模様。 ---------------------------- ・起動オプション: Vivaldiの起動オプションでキャッシュの設定やらプロセス数の設定やらいじくって調整すべし。 うちのTwitter用になってる手許PCは一昔ほど前の古いノートなのでCPU(i5-5300U)も遅いしメモリは最大8GB までしか乗らないんだけど限られたスペックでもあまりストレスなく使えるのを目指して調整している。 具体的にはメモリ涸渇せず、CPU使用率が殆ど100%まで到達せず平均すると50%を下回る程度に収まるのが 理想。もっと快適にするにはPC買い替えるしかない。 ユーザー別のアバターアイコン画像だけは再利用されると良いんだろうけど、基本的にツイートに貼られる 画像やら、1回だけ読み込んだらキャッシュとして再利用されることが殆ど無いデータばかり流れてくるわけ だからキャッシュさせない運用で良いんじゃないかということで最小サイズに設定。旧世代のSSDやHDDを使っ ているとファイルアクセスが強大なボトルネックになるのでI/Oを減らすべき。 →メディアキャッシュについてはそこそこのサイズを指定したほうが再利用される?100MB=104857600を指定中 外部のリンクなんかは沢山流れてくるけれど、そいつら全部先読みとかされても遷移しないリンク先が殆ど なのでプリフェッチは要らなさそう。ネット回線として満足な速度があったとしてもDNS参照のパケットが多 ければ多いだけもちろん重くなる。 キャッシュやプリフェッチについては流量やフォロー数なんかでどっちが良いか変わってきそうなので各自 で試行錯誤してみて。何度かON/OFFして試した結果うちではこうなった。 Windowsのショートカット設定は文字数に上限があるので、起動オプションが長くなりすぎたら環境変数に 追い出すと良い。もしくはショートカットを使わずにバッチファイルで起動でもいいけど。ピン留めして 使いたい場合はどうしてもショートカットになるから長い時は環境変数を使うしかないね。 環境変数はWindows設定のシステムの詳細とかその辺にあると思う。見つからなかったらgoogleに訊いて。 例) 環境変数 VivaldiOptions = --no-default-browser-check --disk-cache-size=1 --media-cache-size=104857600 --enable-low-end-device-mode --dns-prefetch-disable --disable-content-prefetch --disable-preconnect --renderer-process-limit=60 ショートカットのリンク先欄 "C:\Program Files\Vivaldi\Application\vivaldi.exe" --profile-directory="Profile 2" %VivaldiOptions% 両端を%で囲まれた環境変数はOSの内部処理で展開されて 「"C:\Program Files\Vivaldi\Application\vivaldi.exe" --profile-directory="Profile 2" --no-default-browser-check --disk-cache-size=1 --media-cache-size=104857600 --enable-low-end-device-mode --dns-prefetch-disable --disable-content-prefetch --disable-preconnect --renderer-process-limit=60」 と書かれている事と同じ意味になる。ここまで長いのは直接書けない。 プロセス上限60とかにしてるけど、この値って少数タブなら2〜3程度にしてやって結果的に省メモリに出来る らしいんだが、1プロファイルごとに9枚のタブ×4プロファイルとか同時に起動してると、小さい値にして たらVivaldiのタブが死んだ鳥表示になって続行不能になる(メモリにGB単位で空きがあっても起きるのでプロ セス数設定の問題) いきなりサイレントに落ちて居なくなることもあるけど大抵のクラッシュは死んだ鳥。そうなると死んだタブ をリロードしても復活しないのでVivaldiを再起動するしかなくなる。(最近のバージョンはリロードで一応は 続行が出来てそう) 表示してないタブを休止して5枚×4プロファイルにしてると起動されてるプロセス数が42前後くらい。 休止させず9枚×4プロファイルだと起動されてるプロセス数が46前後になる。あんまりタブ数には比例し ない。この時に --renderer-process-limit が20〜30程度だと4枚起動の途中でほぼ死亡。 30〜40にしてるとだいたい動くけどたまに数枚のタブが死ぬので60にしてある。 この設定値、プロファイル毎ではなくどうやら起動してる各プロファイルのVivaldi全部の合計らしい。 →複数プロファイルでは実行モジュールが1つなので60にしていたけど、スタンドアロンインストールを複数  に分けて使用する場合は実行モジュールがそれぞれになるから20〜25程度に調整します。 この起動オプションを指定しない時のデフォルトって内部的にいくつなんだ??? 尚、無指定でもVivaldi鳥が死にます。4プロファイル同時に立ち上げとかは重過ぎで話にならないので1つ ずつ起動して落ち着いたら次ってやってます。 Firefoxのアドオンにも言える事だけど、拡張機能・アドオンは増やせば増やすだけ起動プロセスまで増えて いったりする傾向。もちろん動き続けるワーカースレッドなんかの挙動によるだろうから一概には言えないが。 要らない拡張は外す、開くタブを減らす、というのは結局のところ運用上必要となる。 --renderer-process-limitの設定など、新しいPCでは一瞬で処理が終わることでCPU使用率がまったく占有 状態にならずに全く問題がおきなくて設定する意味がない可能性も高いと思います。あくまでも旧スペックの PCを手許でTwitter表示用として未練がましく使っている自分が少しでも快適に使えるようにという悪あがき です。 バックグラウンドでも動作を止めない(処理プライオリティを下げない)方法として起動オプションに --disable-features=CalculateNativeWinOcclusion を指定する方法もあります。 処理が滅茶苦茶重くなるけどマシンパワーに余裕がある人は設定してみるのも良いかと思います。 ---------------------------- ・ブラウザ自身の色分け: うちはVivaldiを4つのプロファイルで3アカウントを運用しているが、誤爆とかしないようにテーマを変更 してパッと見て解るようにタブヘッダなどの色替えしている。対応するアカウントでログインしている FirefoxもESR,Release,Beta,Aurora(Developer Editon)といった感じに複数のリビジョンを同居させてるので Firefox Colorというアドオンで盛大に色を変えてある。 Twitter表示設定の色替えやTwitter UI CustomizerでXアイコンも違う色にしておくといい。任意のアイコン を読み込ませる事ができるのでフォトショとかで色違いを作っておく。ツイ鳥アイコンでもいい。 ちなみに、ここで紹介してるカスタムCSSやユーザースクリプトはブラウザ及びTwitterの設定でブラックの テーマやダークテーマが設定されている前提の表示色変更になっているのでライト系テーマ使ってる場合見に くいのが出てくるかと思うので適宜色の設定は書き換えてね。なるべくソース中に直接色指定を書かないで ソース冒頭の定義に追い出すようにしています(漏れがあったらごめん) →システムコンフィグからライトカラー設定が出来るようにしました。普段ダークカラーでしか運用していな  いのでバグ残ってたらごめん。 ---------------------------- ・コマンドチェイン: バッチ処理的なものをブラウザの各操作を組み合わせて保存しておける。 主にタブを5つ開いて運用しているが、スクリプトを更新したあとなど5枚をリロードしたい事がしばしば ある。拡張機能によってピン留めしているタブを一気にリロード出来るようにしてあるが一斉に5枚リロード されると重くなるので、1枚ずつリロードをする事が多かったりする。そこでコマンドチェインにて 「1つ目のタブに切り替え」「遅延1000ms」「ページを再読み込み」「遅延10000ms」「2つ目のタブに切り替え」 「遅延1000ms」といった感じに10秒置いて次のタブに移ってリロードといったものを保存しておくとメニュー にも組み込めるしショートカットキーも設定出来るので非常に便利。移動や切り替えなどの操作は必ず遅延を 挟むこと。完了復帰ではなく非同期でコマンドを叩いてるだけのようなのでこうしないと処理が間に合わずに 正しい動作をしない事があるため。 (実際には3枚目がHomeなのでそこがメインで、3→1→5→2→4の順にリロードして最後に3に戻している。配布 WEBページにコマンドチェインの定義例を画像追加) 難があるとしたら複数プロファイルにそれぞれ手動でコマンドチェインを登録しないといけないところ。 エクスポート・インポートが出来るようになったらいいのに。プロファイルフォルダにあるPreferencesが Vivaldiの設定画面で設定する項目を保存しているファイルなので丸ごと別のプロファイルにコピーしたら コピーは出来るけど個別に設定してるテーマ色とかは設定しなおしになるので面倒。せめて別ファイルになっ ていてくれたら良いのに。 →解析しました。面倒ですが一応これでエクスポート・インポート・複製が出来ました。 http://coltpythonkingcobra.g1.xrea.com/pseudoTweetdeck/CommandChain.txt [Shift-JIS] ---------------------------- ・タブの休止: メモリやCPUパワーが不足していると感じたら、見ていないタブは閉じるか休止するといった使い方になるか と思います。また、沢山のタブを開いた環境で運用していると起動時に一斉に開こうとしてしまいCPUが100% に貼り付くことがしばしばあります。非力なPCでは長時間BUSY状態となりOSからハングアップした(応答がな い)と判定されてタスクキルされひっそり不正終了となってしまう場合があります。 [設定]-[一般]-[起動]-[復元したタブの読み込みを遅延させる]をチェック、同-[ピン留めしたタブは遅延 させず読み込む]をチェックなしとしておくと次回起動時に全タブが休止状態となり、時間をおいて順に開く といったオペレーションが可能・・・なはずなんですが、タイリングされていると挙動がおかしいんですね。 Vivaldiフォーラムに障害報告としてあがっています。 なので、タイリングされたタブが起動直後すぐに開かないよう、別のタブを上位にした状態で終了しておく 必要があります。最後に開いたものが一番上になり、どんどん高さ方向(Z-Order)に積み上がっていくイメー ジです。最後に開いていたものから順に読み込まれるのでタイリングされたタブが最後に開かれるようタブを 順にクリックしていってZ-Orderを調整してから終了するコマンドチェインを作っておくと便利です。 ※現状のコマンドチェインは「終了」コマンドが、全Vivaldiの終了動作をしているので使わないように。 起動中の他のプロファイルまで巻き込んで終了します。 →複数プロファイルだと終了で全部閉じてしまいますが、スタンドアロンインストールを複数して運用する 場合は他のスタンドアロンには影響しませんので本体を沢山作るほうが良いかもしれません。 ---------------------------- ・スタンドアロンインストール: Vivaldiは複数のプロファイルを作成することでTwitterアカウントそれぞれでログインした状態で複数同時 に起動する事が出来るが、結局の所は本体の実行モジュールは1つである。プロセスは沢山起動するが、全体 を統制している親プロセスは1つであったり、ネットワークの同時接続上限とか、そういう事が原因なのでは ないかと想像する事しか出来ないが複数プロファイル合計で20タブとか開くと非常に重くなる。 主にCPUリソースを多量に消費する。 そこで試しに本体が複数あって別々に動くとどうなるか実験をしてみた。Vivaldiはスタンドアロンインス トールというのが可能で同じリビジョンであっても複数フォルダにインストールが可能。試しに4カ所に インストールしてそれぞれのデフォルトプロファイルに、元々使っていた複数プロファイルの内容を上書きし、 使っている拡張機能や設定など全て同条件になるようにしてみた。 結果、スタンドアロンインストールで別々に動かした方がプロセス数の合計は増えるが圧倒的にCPU占有率が 低いことが解った。1つだけ気付いた動作の違いとしてはOpenWith拡張でスタンドアローンVivaldiを指定 してリンクを開こうとすると既に動いているウィンドウではなく新規にウィンドウが開いてしまう点くらい で、それも滅多にしないオペレーションなので別に良いかなと。 複数プロファイル運用している人は試しにスタンドアロンインストールを複数のフォルダに分けてやって 試してみて欲しい。自分は当面、複数プロファイルではなく複数スタンドアローン環境で運用してみます。 スタンドアロンインストールで分けている場合、--renderer-process-limit 設定は合計ではなくそれぞれ になるので15くらいで良いかなと思ったけど動作を見ていると起動から落ち着くまでは18プロセスくらい 動いているので --renderer-process-limit=20 とした。10にしたり指定しないで起動したらしばらくして 鳥が死んだ。 ---------------------------- Vivaldi公式TwitterでもTweetDeck代替の使用例ということでポストされてました https://twitter.com/vivaldibrowser/status/1693630287815553139 ------------------20------------------40------------------60------------------80-----------------100 ★拡張機能 何でもかんでも自前でやるのは限界があるので公開されている拡張機能・アドオンも利用する。 併用が前提だが重複する項目もあったりして競合する事もあるので各自試行錯誤をする。 ---------------------------- ☆Control Panel for Twitter →Ver1.6から使わない運用に切り替えました。次に紹介するTUICで済む設定はそちらで、無いものはスクリ プトやカスタムCSSで自力実装しています。 ---------------------------- ☆Twitter UI Customizer https://chrome.google.com/webstore/detail/twitter-ui-customizer/hpmhdmlhnppmmipefebkhkbpdcjiidmh?hl=ja メニュー項目の順序やらON/OFFを主にこれで設定する。RTのメニューは出なくして、RTと引用RTのアイコン を並べておくと捗る。Reply, RT, 引用RT, Fav, Block を並べてある。 「リンクカードにリンク先を表示する」をチェックして下さい。 ---------------------------- ☆Twitter 原寸びゅー 所詮は細長いタブを並べただけなので画像を開く時はオーバーレイで全画面とかには出来ないため、1クリ ックで新しいタブに拡大表示させられる画像表示系の拡張を併用するべし。 ※23/09/18追記: https://memo.furyutei.com/entry/20230831/1693485250 公開終了しちゃいました。代替機能を探さないといけませんね。無ければ画像サムネイルの左クリックにて 別タブで開く機能を自力で作り込まないと。 →23/09/29対応しました。 ---------------------------- ☆Open in Firefox https://chromewebstore.google.com/detail/open-in-firefox/lmeddoobegbaiopohmpmmobpnpjifpii 表示中ページまたはリンクをFirefoxで開く拡張。 転送先のパスが編集できるので、Firefox ESR,Release,Beta,Aurora,Nightlyなんかが同居した環境ではどれ を起動するか1つ選べる。フルパスを書くところはダブルクオートで囲ってはダメ。 Shift+でFirefox直で開く設定にして使っている。 Ctrl+でVivaldiの別タブで開きShift+で設定したタイプのFirefoxで開く。設定したFirefox以外で開きたい 場合はOpenWithで選んで開く。 ---------------------------- ☆OpenWith 表示中ページまたはリンク先を任意のブラウザ(複数登録可能)から選んで起動出来る。 Firefox用はアドオンページに存在するが、Chrome用は拡張ページにはもう無い模様。でもソースは手に入る。 https://zenn.dev/udaken/articles/improved_open_with_browser_extension Chrome系で使うための手順が説明されてる。ありがたや。manifestV2なのでいつまで使えるか解らんが。 残念ながら自分はアドオン・拡張機能を新規作成したりするスキルまでは持ち合わせておりませぬ。 足りないファイルがあったりした場合、Firefox用のOpenWithのxpi(改名すればzip)から展開して補完してちょ うだい。Vivaldi起動オプションのプロファイル指定の部分までOpenWithの起動設定に書いておいたらきちんと 指定プロファイルで起動する。導入例ではCtrl+での動作も拡張してあるけど自分はコメントアウトした。 Ctrl+クリックでは普通にVivaldi内で別タブで開きたいので。 ---------------------------- ☆Stylebot https://chrome.google.com/webstore/detail/stylebot/oiaejidbmkiecgbjeifoejpgmdaleoha?hl=ja カスタムCSSを適用するためのもの。要素のプロパティを変更したりしてサイズを変えたり非表示にしたり諸々 の書式をいじる。この拡張は編集して保存した時に各タブにすぐ更新が適用される。念のためリロードしても いいけど。カスタムCSSの記述内容は後述。 ---------------------------- ☆Tampermonkey https://chrome.google.com/webstore/detail/tampermonkey/dhdgffkkebhmkfjojejmpbldmpobfkfo?hl=ja ユーザースクリプトを適用するためのもの。動的に書き換えたり、条件によって動作を変えたりする。 この拡張は編集して保存した時に更新されているが表示中のTwitterタブはリロードしないと適用されないの で注意。ピン留めしておいて、ピン留めされてるタブ全部一括リロードとかできる拡張を併用すると良い。 スクリプトの記述内容は後述。 ---------------------------- ☆Reload All Tabs カスタムCSSとかユーザースクリプトとかあれこれいじってると一括リロードしたい(アプリごと再起動まで するには時間がかかる)時に便利。ピン留めされてるタブ全部とか、どれをメニューに追加するか設定出来る。 コンテキストメニューに追加するもののチェックを1つだけにしておくとコンテキストメニューの階層が浅く なって選びやすくなる。 →コマンドチェインで間隔をあけながらリロードしたほうが良いのでアンインストールしました ---------------------------- ☆DoNotDiscard 勝手にタブ開放(休止と同じ状態?)されないようにTwitterのURLを指定。要らないかも。 →Chromeにはタブの自動開放機能が実装されていますがVivaldiでは特にそういう動作は無い?  アンインストールまでしていませんが現在無効にしてあります。有り無しで動作の違い無しかな? ---------------------------- ☆Tabs to Front https://chromewebstore.google.com/detail/tabs-to-front-v2/iiojfifkpjkhcdjfgekmfobhfdohlecg 新規に開いたタブにすぐ遷移。Chrome系はこれ必須ですね。見たいから開いたのに遷移しないなんて。 ---------------------------- ☆userChrome.css Vivaldiはタブタイトルになっている文字列をウィンドウ自体のタイトルに反映する挙動をする。 そんなわけで個別のツイートとか見てると文章がそのままタイトルに出るのが邪魔。 ブラウザ自身に適用するuserChrome.css導入の仕方はこちらを参考に。 https://www.naporitansushi.com/vivaldi-css/ うちでは C:\Users\ユーザー名\AppData\Local\Vivaldi\User Data\プロファイル別のフォルダ\Chrome に置いてる。Vivaldiの設定ページで置く場所を個別に定義できるわけだから全プロファイル共通のフォルダ を作ってそこに置いてもいいかも。 また、休止状態のタブを暗くする設定してあっても殆ど区別できないのでフィルタをかけて不透明度を下げる。 [設定]→[タブ]→[タブ表示]→[休止状態のときアイコンを暗くする] を設定しておく必要あり。 さらに、複数のプロファイルや複数のスタンドアロンインストールを同時に使っていると左に表示しているタブ ヘッダ部の幅を揃えておきたくなります。幅は「vivaldi://inspect/#apps」からwindow.htmlのinspectから 展開していくと「
div:nth-of-type(1)」とかで階層を掘り下げていくときは 注意。この階層構造がページごとにだいぶ違うので苦労すると思う。ここでは良くても他に影響とかしょっち ゅうなので。 ユーザースクリプト中で先頭 // でコメントアウトされてる console.log をコメント外して活かしてやると 処理を追えます。検証ツールのタブをコンソールにするとログが見られる。 書式やら諸々の文法については検索して調べてちょうだい。自分もまだ初心者なのでもっと良いデバッグ方法 とかあるかも。要素のプロパティが右側に出てると思うが、先頭のstyleに display: none; とか追加してやる とその場で消えるので動作を確認しながらカスタマイズができます。取り消し線表示になっている要素は他の CSSなどによってオーバーライドされて無効にされている元のプロパティ。 まずは既存のCSS適用前と適用後でどんな状態に変化してるのか確認するところがスタートかなと。 ------------------20------------------40------------------60------------------80-----------------100 ★カスタムCSS: Stylebot 拾いものと自分で調べて書いたもの混在。複雑なやつは表示するべきものまで消してしまったりする可能性 あり。左メニュー類を一括で全部消してしまうとデッキ構築するのに障害となるため、対象URLを個別に設定 している。だからHome用とList用に同じCSSが書かれてたりする。※新仕様ではひとまとめになりました。 Twitterは内部の作り上、例えばHomeからListに遷移したとしてHomeページ内容を破棄してからListページを 新規に読み込んでいるわけではなく内部の固定部を残して動的に書き換えを行い見かけ上のURLだけ更新して いる。従って内部のリンクから別のページに移ってもStylebotのカスタムCSS適用先URLマッチングにひっかか らない。移った先のページをそれ以降固定して表示したい場合は一旦手動でリロードしてやる必要がある。 ---------------------------- 仕様その他ざっくり説明: アバター(ユーザーアイコン)回り込み系は横幅を詰めてタブを並べているとアバターの下がまるまる死に空間 になるため本文がアバターの下あたりから始まるように位置をずらしている。微調整のための数字が入ってる けど表示環境の画面解像度やらOS指定の表示倍率なんかで変わってくると思うので値は各自好みになるように 悪戦苦闘してくれ。 [アバター アカウント表示名 アカウント名]の表示は横幅が狭いタブに表示すると殆どが省略表示にされて しまうのでアカウント表示名とアカウント名を2行になるようにしてアバターの横におさめてある。 ここで言うアカウント表示名は「NHKニュース」でアカウント名は「NHK_NEWS」。アカウントIDというのは長い 数字で普段は表には出てこないものを指すので敢えて別の表現にした。 全体的に縦長になってしまう表示の対策。画像サムネイル・動画サムネイル・外部リンク・引用元などの カードをコンパクトにするやつは縦横比を維持したまま縮小がうまくできないパターンが多くて完璧なものは 現状断念、妥協案として上下が欠けたサムネイルになってしまうので、これが嫌だったら該当箇所の記述を外 して。 ※メディアサムネイルのサイズを切り替えられるようにしました。おかしいなと思ったら一旦縮小なしに切り 替えてみて下さい。 メディアやカードの表示が要らないかというとそうでもなく、あったほうがいいけど邪魔にならない表示とい うことで落ち着いた形。:hover属性つけてカーソルを当てると縮小前に戻すような事も試したけどウザくてや めた。クラス名とか階層構造がもっと洗練されていれば目的の縮小が出来るんだが、引用先に更にぶらさがる 階層だったりそういうイレギュラーが多すぎてお手上げ。Twitterは糞ソースだわ。ちなみに旧Deckのソースは 綺麗だったのでCSS書くの楽だった。 ユーザースクリプトで各パターン網羅した分岐処理をゴリゴリ書いてやれば実現可能かと思うけど、CSS適用と 比べてだいぶ重い処理になるんじゃなかろうかと予想。面倒なのでいまのところ書く予定なし。 適用をやめたものなど、/* 〜〜〜 */ の形でコメントアウトしたまま残ってる残骸もあります。 だいぶ力技に相対位置を指定してるところがあったり:notの除外を並べてあったりスマートじゃ無い部分も 沢山あるけどご容赦を。 ---------------------------- ##### 旧仕様(〜Ver1.1.09042000) ##### ユーザーページはアカウント名がURLに入ってるだけ("user"とか"account"とかの固定文字列がURLにあれば楽 なのに……)なので全ユーザーを対象にしようとしたらHomeやListなど他のページでも動作してしまうため、 対象とするアカウント名を含んだURLを列挙定義するしかなさそう。ユーザー名の後ろにワイルドカード ** を忘れずに。* 1つでも動くけど慣習として ** とするらしいのをどこかで読んだので ** にしてある。 ボタン類の表示を色々削除しまくっていざ操作したい時に同アカウントでサインインしているFirefoxとかある 人はいいけどそうじゃないと不便なのでタブ幅に応じて有効・無効が切り替わる @media screen and (max-width: 400px) {} を付記。 終端の } を忘れずに個別URL用定義の全体を囲って下さい。max-width値は普段タブを並べている時のサイズを ちょっと越えると無効になる数値にしておくと良いでしょう。 上部をシンプルに、なるべくユーザー名やらリスト名が短縮表示にならないよう空間を稼ごうとゴリゴリ書い てますが、適用の要らない要素がありそうです。1つずつ(または複合で)外してテストすれば良いんだろう けど、現状とりあえず動いてるのでこれで勘弁下さい。可変部分の高さが揃えられるものは揃え、戻るボタン の見た感じもなるべく同じになるようにしてみました。ひとまず対応完了、様子を見ます。 「-------」と「--------」の間にある1行(URL)をStylebotで新規にエディタを立ち上げた時にEnter URLと 出るので上部に入力する。これが保存した以降にStylebotに登録されている定義の表示名を兼ねている。 「-------」から次の「--------」までがカスタムCSSとして入力するコード。対象となるURL毎のCSSコード を個別に保存していく感じなのでひとまとめのテキストそのまま全部をコピペじゃ動かないんで注意。 もちろん「-------」の行自体は含みませんのでコピペしないように。 ---------------------------- ##### 新仕様(Ver1.1.09051200〜) ##### 旧仕様ではユーザーページのURL(アカウント名を含む)を列挙しないと動作しませんでしたが、スクリプトで 消去法でユーザーページか否かを判定し、それを属性として記録することでカスタムCSSを1本化出来るように なりました。以降は「https://twitter.com/**」の定義のみとなります。 以降はユーザースクリプトとの併用が前提になります。旧仕様のように個別のURLを指定してそれぞれ用の定義 をする場合は、適用するコード行頭の「body[ptd_type="PSEUDOTWEETDECKxxxx"] 」を全て削除して下さい。 個別のURL用定義で動かす場合の例) body[ptd_type="PSEUDOTWEETDECKHOME"] div[data-testid="xxx"] { display: none; } ↓ div[data-testid="xxx"] { display: none; } ※但し、固定ツイート削除などのような一部のCSSはスクリプトとの併用が前提となる機能もあります。 ※旧仕様バージョンはCustomCSS2309042000.txtとして残しておきます。 新仕様では行頭の3行(罫線と「https://twitter.com/**」)を削除して残りを全部一括してコピペで動きます。 配布WEBページに「カスタムCSSの登録1」「カスタムCSSの登録2」として画面例を貼っておきました。 ---------------------------- 長くなりましたが: 1つずつ、要る要らないを判断しながら好みの表示になるように調整してちょうだい。 ※コメントからコメントの間に複数行あるやつはだいたい1セット。 試行錯誤してると元に戻したい事がしばしばあると思うのでStylebot-オプション-バックアップからエクス ポートしてこまめに保存しておくことをおすすめする。 クソ長いのでカスタムCSSの各種定義は別のテキストに分離した。 http://coltpythonkingcobra.g1.xrea.com/pseudoTweetdeck/CustomCSS.txt [Shift-JIS] ------------------20------------------40------------------60------------------80-----------------100 ★ユーザースクリプト: Tampermonkey https://qiita.com/libraplanet/items/0bdd7ef1a13e7af8f48f https://chrome.google.com/webstore/detail/twittertimelineloader/ipmgjpmedafkmmadinmeoannpofakpbh 上記のタイムスタンプを相対時間じゃなくて絶対時間表示にする機能と、Homeを自動更新する拡張のソースを 参考にして魔改造。他にもTampermonkeyのスクリプトが色々登録されてるところにあがってるのを参考にさせて 頂きました。 ---------------------------- おおまかな動作仕様とか設計思想とか: まず、ページ全体をリロードしちゃうと時間はかかるわ、既に読んだ記事までも毎回の読込によってAPIを消費 するため、現実的ではないのでVivaldiの機能として実装されているタブの自動リロードは使わない(別の理由 でリロードはたまにするが) Twitterにはキーボードショートカットとして「.」ピリオドを押すと新着を拾ってくる機能が用意されている ので手動の場合はピリオドを押すのが一番手っ取り早い。このキー押下をなんとかスクリプトからトリガ出来 ないものか色々実験したけど、どうやらセキュリティ上の制限として出来なくなっている模様。 使用例のページ沢山あるのにみんな出来そうな事を書いて終わりになってるんだぜガッデム。 外部アプリからキーを送出する手段はAutoHotKey使ったり自前でWindowsプログラムを書けば出来るわけだけど 残念ながら複数プロファイルで起動している複数のVivaldiの中のいくつも開いてる任意のタブに順番にキーを 送る手段というのが無いんだなこれが。スクロール位置を確認したりも困難そうだし。 なので別の手段をとる必要がある。 Homeに関しては参考にさせてもらった拡張のソースをみるとメニューのHOMEアイコンにあたる要素のclickを 実行してやると新着が更新される。ListやUserや検索ページについてはスクロールさせて遡って読んだあと 先頭に戻ったら更新がかかるのを利用した。 スクロール位置を1ページぶん下げてからトップに戻すことでトリガとしている。なのでちょっとプルっと 動く(描画が間に合わず見えないこともある) ---------------------------- 自動更新仕様: TweetDeck同様で、スクロール位置を下げてある状態では自動更新しない(遡って読んでる最中に書き換わると 普通キれる)。下カーソル1回押す程度に動いてれば更新OFFになり、スクロール位置を最上部に戻すとその 3秒後に(設定変更出来ます))新着確認をトリガ。Homeと検索ページではエディットコントールにフォーカス があって入力中には更新しない(書き込んでる途中でリロードされたらキれる) Homeは30秒間隔、Listは5分間隔、Userは10分間隔、Searchは3分での新着確認(更新トリガ)にしてある ので変えたい場合は //更新間隔定義(秒) 項目に定義があるので変更して。当然短くしすぎると重くなるわ API制限食らうわ酷い目に遭うので注意。→※ページごとに更新時間を変更・保存出来るよう拡張、後述 どのページにも言えることだけど、長時間経過すると(Twitterのタブ内でカーソルを動かしたり操作しない 時間が長いと)開きっぱなしにしててもバックグラウンドに居ても、どっちでも更新があがってこなくなる。 その状態になるとリロードしないとダメなので1時間くらい新着が無いとページをリロードさせる仕組みを 入れてある。意図的に1時間ジャストからは値をずらしてあるので複数タブで同時にリロードがかかりにく くしている。→※個別に設定できるように拡張した、後述 何かしてて、Twitter開いてたタブに戻った瞬間にTwitterが勝手にリロードを始める動作、経験無いですか? あれって上記の回避なんじゃなかろうかと思いますね、サーバを少しでも軽くさせるために無操作で時間が 経ったクライアントの停止みたいな。(通信は切っている模様でそういうメッセージが出ることがある) で、表示を切り替えたりちょっと触ると「あ、使います?」って感じにしれっとリロードしやがって再開。 前回読んでたところ吹っ飛びやがってガッデム。 そんなわけで自動更新ONであれば1時間±数分程度で強制リロードをかけてます。この機能はまだちょい 不完全でリロードが走って無さそうなケースが希にあります。随時直していきますがそれまでは変だなと 思ったら手動でリロードかけたりVivaldi自体を再起動して下さい。 ……Twitter側で勝手にリロードすることもあるだろうけども。 →タブ個別(URL個別)に強制リロードまでの時間を設定出来るようにしました。インターバル設定ボタンを 右クリック。設定した時間そのままが使われ、旧仕様のように±何分にはなりません。 現状では更新が来ないリストなんかで時間がかなり経った時にタイムスタンプ見ると2時間以上余裕で経過 したまま止まってるパターンに時々遭遇する。滅多にないんだが。時間経過でリロードされるはずなんだけ どな。その状態で何故か、数ページぶん大きくスクロールさせてから先頭に戻ったら更新が走ったので完全 に死んでいるわけではない模様。解らん。 止まっちゃってる事を確認するためのタイムスタンプ表示でもあるんでそういう変な状況になってたら手動 でタブのリロードをかけて運用して。なんとか直らないものか日々試行錯誤してるんだが、長時間経過が 現象発生の条件なので検証も大変で。 自分が作ったスクリプトに限らずだけど、利用者が多く長期間メンテされてバグなんかもう枯れてそうな 拡張機能でも書き換わるべきところが変わらないなんていう挙動が時々あるのでそれもリロードで誤魔化し 運用を。そもそもTwitter自身おかしい挙動してることがしばしばあるしな。Twitterに限らず処理の重い ページをずっと行き来してるとおかしくなってブラウザ自身再起動しないといけないこともあるわけで 切り分けは非常に困難。完璧な動作を望むのをまず諦めましょう。 通知ページは何もしなくても新着があがってくるが、こいつも長時間新着がないと動かなくなるため1時間 何も更新が来なければリロードするようにしてある。通知ページに関してはスクロール位置でどうこうとか は全く処理していない。勝手に来る。まあ普通はスクロール位置は最上にしておくでしょうけど。 フォーカスのあるタブでスクロール位置がトップに居る場合、自動更新トリガまでの時間をカウントダウン して表示しているがこれをフォーカスのないタブまで全部すると滅茶苦茶重くなって話にならないので フォーカスの無いタブは最後に更新があがってきたタイムスタンプを表示して 緑[ Auto / 12:34:56]表示。 フォーカスのある自動更新ONのタブには 緑[0030 / 12:34:46]のようにカウントダウン値と前回の更新時間 を表示。更新トリガが掛かる10秒以内で黄色になりトリガタイミングで赤に色替え。最後の更新はリロード した時間か、新着要素が増えてDOM更新イベントがあがってきたタイムスタンプとなる。自動更新がOFFに なっていると 青[Paused Refresh]表示。 (必要の無い機能だけどデバッグには必須なのよこの表示。時間が経つと止まったりしやがるから動作確認 と切り分けのために尚更) この表示エリアは既に固定表示となっている項目を流用することで高さが増えないようにしてある。Homeに 関しては「おすすめ」が非表示になっており、ピン留めされたListが1つ以下(1つも無いのが理想)の状態で ある前提なので表示が崩れる場合は良い具合に調整を。 更新サイクルになり、トリガをかけると新着があったら書き換わるわけだが何故か新着があるはずなのに更新 されない事がある。このスクリプトが不完全だからかもしれないしTwitter内部での処理落ちやAPI間引きなん かそういったものが原因かもしれない。次の周期で更新されたり、さらに次になってようやく更新されたりも する。逆にアーティクル数が減った(古いアーティクルの開放?)場合なんかも更新としてイベントがあがっ てくるがこの場合は見た目は変わっていない。現状この不完全な動作はどうしようもない。 短周期の処理ではタイムスタンプを絶対表示に置換するのと、ページタイトルの冗長な部分を置換してシンプ ルなリスト名やユーザー名だけになるようにしている。あとはHomeを遡って読んでる時に時々出てくる「さら に表示」だったり、「新着が何件ある」みたいのを勝手に押す(新着に関してはスクロール位置がちょっと下 がったところでは押されないようにしてある)従って、Homeをスクロールトップから少し外して置いておくと 新着件数の表示が出て、スクロールをトップに戻した直後に更新される動作もする。自動更新とは別経路のト リガパターンなので赤くなりません。→※拾える手動のトリガは赤くなるようにしました。 ※既読マーク用のチェックボックス設置はこの中の処理で行っている。 Homeで手動の未読管理みたいな読み方をしたい場合はこれですね。何件増えるか把握して一番上に出てるツイ ートのタイムスタンプを覚えておいてスクロールを最上部に戻して更新、件数とタイムスタンプを目安にそこ まで戻って新着を先頭まで読む、という感じ。数件だけ増える時は新着件数の表示部を絶妙な位置に絶妙なタ イミングでスクロールしてやると新着だけスクロールの上にニョキっと生えることがあるけど、残念ながら件 数に依存するのでこれをコントロールするのは現状不可能。 何か目印でも付くように改造しようと思ったけど遡る件数が多すぎると過去方向の「さらに表示」に遮られて しまって途中が消失したりするわけで、そうなると対処不能。戻って読み進んでを小刻みにやっていくしかな い。尚、新着の件数表示と実際に増える件数はだいたい一致しません。CSSで非表示にしてるプロモツイートが 相当な数あがってきてるんだなと思う。→既読マークがつくよう拡張しました、後述 検索結果の自動更新については、需要がありそうなので対応してみたけどまだまだテスト不足。自分では検索 ページって使わないんで、こいつの対応は優先度下げさせて。いまのところ元気に動いてそうだけど。 初期状態では「話題のツイート」にフォーカスがあるので、カスタムCSSで非表示にしている場合はスクリプト 冒頭の定義で「最新」にフォーカスを移す設定を有効にすること。→自動で最新にフォーカスするよう拡張 短周期(250ms)のタイマでずっと回り続けて絶対時間の置換やタブタイトルの短縮化や「さらに表示」などを 自動的に押してくれる処理は頻繁に更新されるTLやリストなどでは有用だが、殆ど更新のあがってこないタブ なんかでも同じく全力で延々回っている。これが無駄な処理じゃね?ということで大幅な改良をしてみた。 60秒(→10秒に変更)まわし続けたら停止。画面遷移が起きたら再開、DOM更新があがってきたら単発実施、フォ ーカスやスクロール位置が先頭に戻った時に遅延で単発実施、毎秒の更新サイクルでタブタイトルを確認して 置換前のものが表示されていたら単発実施、自動更新トリガをかけるついでに単発実施などなど、停止してい たことで目的の動作をしなくなってしまうパターンが沢山あって、必死に1つ1つ潰して対応中。だいぶ枯れ てきたけど。 情報表示部の隣(List,Userはリスト名,ユーザー表示名の隣)にある■をクリックすると更新間隔の秒数を入 力できるよう拡張。設定値は保存され次回そのURLを開いた時に読み込まれるようになった。また、右クリック で強制リロードまでの待機時間を設定できるようにした。不使用時は0に設定して下さい。 →Ver1.3からコンフィグ画面を新設し、そちらに移動しました  現バージョンは■の左クリックでコンフィグ、右クリックでシステムコンフィグが出るようになっています また、自動更新を強制的に一時停止出来る◆を設けた。停止中は青表示でカーソル位置が最上にあってもエ ディットコントロールにフォーカスがなくても自動更新が機能しなくなる。もう一度押すと解除となり通常の 判定で自動更新ON/OFFを行う。 更に短周期タイマの状態を表示する▲を新設、押すたびに切り替わる。短周期タイマ常時動作では暗色と、 時間経過で都度停止し必要に応じて単発での置換をしたり再開するモード明色にしてみた。 ◆で変更した自動更新の強制OFFと、▲を押すことで短周期タイマの動作モードが変更されるようになったが これを保存出来ないと、本機能による自動リロードや時々Twitterが勝手に実施する強制リロードによって 初期状態に戻ってしまうと知らないうちにデフォルト動作である自動更新ONで表示される事になる。それは 困るよなということで、自動更新OFFモードと短周期タイマの常時動作モードについては保存されるように しました。まだまだテストが足りないので、変な動作を見つけたら都度修正をかけていきますが。 ■だの◆だの▲が何だか解らないという問題は「?」をクリックするとダイアログが出るようにした。 → 情報表示部のクリックでダイアログを出していたが、ヘルプボタン「?」を新設してそちらに移動。代わり に情報表示部をクリックすることで更新トリガ発行、短周期タイマを1回動作させるように変更。今までは 即更新したい時は「.」を押すか一旦スクロールを下げて戻すという操作をしていたがクリックで出来るよう になったのでだいぶ操作性が良くなった。 自分の場合は流し読みで時々ちょっと戻って読む程度のニュース系リストや1日にいくつも更新が上がって こない頻度のリストは10分更新で自動更新、HomeTLなどは基本的に全部読むので自動更新OFFにして新着の 件数と一番上に出ているアーティクルのタイムスタンプを覚えておいて増えた分を漏らさず読むという運用 をしています。いずれの場合も手動で最新表示したい時に1クリックで良いのは楽です。 ---------------------------- 「ここまで読んだマーク」: 色替えするだけの機能ですが・・・ →既読マークまで遡って戻る機能を追加しています、後述 旧TweetDeckで便利だった機能と言えば表示されているペインをクリアするとそれ以降の新着のみ表示される ようになり、実質的に既読・未読の管理が可能だった。これはPCで見ていたところの続きをスマホでも見ら れたので非常に便利だったが流石にそこまで便利なものは出来ない。その代わりに、「ここまで読んだ」 マークをつけられるように拡張してみた。チェックボックスにチェックをつけるとマークして色替え。 リロードしてもチェックしたアーティクルを記録しているのでマークが付いた状態で表示される。チェック を外すと記録は破棄される。別のアーティクルにチェックをつけるとそちらに移って記録も更新されるとい った動作。各タブ(各URL)ごとに保存される。 理想としては前回読んだところまで自動的に戻って続きが読めるのが良いが、例えば削除された場合と件数 が多過ぎて遡りきれていないのかの判定が出来ないとか、読込件数によって途中が抜けるような挙動をする TwitterWEBでは正常動作が期待出来ない。良い手段が無いかまだ試行錯誤はしますが、現状ここまで。 前回読んだところの続きから読みたいだけなのに何でこんな苦労しないといけないのか。 情報表示部をクリックすることで一番上に表示されているアーティクルに既読マークをつけて手動更新を かけられる拡張を行いました。設定時間以内は手動更新がかかりませんので更新された直後など既読マーク だけつけられます。プロモツイートなど非表示になっているアーティクルが一番上に隠れていた場合の動作 が確認できない(もしかしたらプロモツイートは最上部には出ない仕様?)のでまだまだテスト中ですが。 →情報表示部の左クリック・右クリック時の動作は定義でどれを動かすか個別にON/OFF出来るようにしまし た。 スクロールが1ページぶん以上下がった状態ではトップに出ていたその時点での最新アーティクルがアン ロードされた状態になっている場合があるので、先頭付近(更新トリガされない、ちょっとだけ下がったと ころ)に戻すだけの動作にしてあります。更には手動操作と自動更新サイクルが重なった時に重複トリガに ならないよう各パターンのトリガから一定時間以内は自動トリガも抑制されるよう修正しています。 Home上部に新着件数が出ることがあるが、そこをクリックして更新をかけた場合にも更新した時間の記録を するようにした。他にも更新動作をするコントロールは沢山あるんだがどうしたもんか、普通触らないか? 新規にツイートをするとすぐにTLに出るが新着があるとその間に挟まるとか、リプライのツリー表記が次回 リロードしたら分離されたりして順序が変わったりとか、マークしていた記事が時間が経ってからRTされ たりすると離れたところが既読マークになってしまったりとか、マークしていた記事が削除されると消失 したりとか、思っていた以上のパターンで「マークが消失」します。これはもう無くなる事がある前提で 運用していくしかないので連続した複数の記事にマークをつける仕様としました。どれか1つくらいは本当 にここまで読んだマークとして役に立つ事でしょう。 背景色のパターンを5種類(非表示含む)から切り替えられるようにしてあります。チェックボックス右ク リックで順次切り替わり。マークする数は定義で変更できますし、背景色の定義を越えるマーク数になった ときにどういう配色にするかなども定義があります。 マーク数を増やした状態だとローカルに保存されるデータもその数分に増えますが、定義を減らした場合に ゴミが残るため、チェックをつけて一度外して下さい。外すときは記録情報を全て削除をしていますがマー ク数以上の記録情報まで一斉に消す仕組みにしてあります。 自分の普段の使い方ですが、既読マークと自動更新ON/OFFは3パターンに分かれます。 1.ニュースとか流し読みしつつ、ざっと遡って読むリスト類  インターバル5分〜10分 自動更新ON 既読マーク付け 2.ホームTLは基本的に全部時系列に読む  インターバル30秒 普段は自動更新OFF 既読マーク付け 3.雑多な流しっぱなしにする読み専ホームTLやリスト  インターバル5分〜10分 自動更新ON 既読マークなし スクリプト上部の定義にて 情報表示部左クリックでは自動更新ONの時は既読マーク更新のみとする設定 情報表示部右クリックでは自動更新ONの時は更新トリガと既読マーク更新 情報表示部左クリックでは自動更新OFFの時は更新トリガと既読マーク更新 情報表示部右クリックでは自動更新OFFの時は既読マーク更新のみとする設定 という感じで通常操作では左クリックが主に使う操作で普段と逆のことをしたいとき右クリックする運用。 もしくは、常に左クリックでは既読マーク更新のみにして右クリックで更新とする設定も良いかと思う。 →Ver1.4仕様変更 情報表示部のボタンを左右2つ生えるように拡張しました。更に定義項目としてシステムコンフィグの 全体設定からコンフィグのURL個別定義へ移しましたのですいませんが再設定して下さい。  →ボタン3つになりました Ver1.4初リリース時点ではデフォルトが ・左ボタン左クリックで既読マーク更新のみ ・左ボタン右クリックで既読マーク更新+手動更新+新着積み上げ ・右ボタン左クリックで手動更新のみ ・右ボタン右クリックで既読マーク更新+手動更新 になっています。 状態(自動更新中、自動更新一時停止中、自動更新OFF中)によって更新トリガを抑制する機能は廃止しま した。URLごとに設定が出来るので自動更新で運用するか手動で全部読んでいく運用にするかによって ボタンの機能を変えて使ってください。 →左ボタン(BTN1),中ボタン(BTN2),右ボタン(BTN3)への割り付け状態はデフォルトでポップアップ表示  されるようにしましたのでヘルプを開かなくても解るようにしました。不要ならシステムコンフィグで  非表示に出来ます。 →最新バージョンでの割り付け・動作仕様はヘルプテキストのほうを参照ください。 ---------------------------- 通知ページの新着表示 新しいRTやFAVやリプが来ると通知ページに自動的に更新され背景色が色替えされタイトルに(1)のような 新着数がつきます。通知ページを開いておくと勝手に背景色が元に戻り新着数がなくなるのが本来の動作 なのだがカスタムCSSで通知ページ上部のサイズを詰めていると何らかの判定(要素が表示されているかど うかを獲得する手段があります)によるトリガが掛からなくなってしまうようで、個別の通知に遷移して 戻ったりしないといつまでも消えないといった不具合があります。 見た目を優先するならCSSはそのままで運用したいわけですが、延々消えないのは嫌なので消す手段を実装 しました。情報表示部をクリックするとCSSで変更していた高さを一旦広くします。短いと2〜3秒なんだが 何故か長いと20秒近く消えなかったり動作がまちまちなので時間で待ち合わせではなく、横メニューに新着 の表示がついた状態を判定して消えたら元のサイズに戻すといった小細工をしています。それだけだとたま に背景色が黒に戻らない事があるので5秒後にスクロールを操作しています。これでも残るパターンがある と思いますがその時は手動でスクロールするか再度情報表示部をクリックするとか手動でリロードして下さ い。 新着表示がなくなったかどうかは繰り返し要素を検索してループさせていますが最大100秒ほどでタイムア ウトするようにしてあるので無限ループには陥りません。・・・多分。 通知ページは自動更新が必要ありませんが、新着表示のクリアを自動的に出来るようにしてみました。 ---------------------------- メディアサイズの変更 カスタムCSSにてメディアサムネイルのコンパクト化をしていますが、それのサイズ違いなど4タイプから 選択出来るよう拡張しました。タブごと(URLごと)に保存されます。これでまた少しだけTweetDeckに 近づけたでしょうか。 ---------------------------- ローカル保存データ: 設定値の保存データがローカルに保存される仕組みなんだけど、削除出来る仕組みを作っておいたので消す 必要が出てきたら(もう使わないとか)手順に従ってクリアして下さい。スクリプトの一番下に記載。 画面のどこかにボタンとか組み込むと、滅多に使わない機能のためにメモリ食うの勿体ないのでこんな形に しました。 →システムコンフィグの画面からボタン操作で実行出来るようにしました。既読マークだけ全部消す事も できます。 23/10/07 Ver1.3のバグで個別ツイートページのURLをキーにした不要データが保存されていました。旧仕様の非互換 データおよびこの余剰に出来たデータを削除するボタンをシステムコンフィグ画面下に用意しましたので クリアして下さい。 簡易的なエクスポート・インポートに対応しました。UTF8を扱えるテキストエディタ等にコピーペースト して保存してください。 ---------------------------- 新着の積み上げ更新: 裏技的なものを発見しました。手動更新のトリガをかけてちょっとだけ待ってから表示中の先頭記事に遷移、 遷移したらちょっと待って戻るボタンを押して戻ってくるとさっきまで読んでいた先頭記事の上に新着が 読み込まれ(積まれると表現しています)、続きから未読が読めるというちょっとタイミング依存してます が一連の操作を自動化する機能を追加しました。 トリガから遷移までの待機時間が肝になります。長すぎるとタイムラインが新着に置き換わってしまって、 さっきまで読んでいた先頭記事はスクロールの彼方へ(結果的に従来の動作)、短かすぎると戻ってきて から時間差でタイムラインが新着に置き換わってしまってスクロールの彼方へ(これも結果的に従来の動作) となりますので各自環境で頑張って最適な設定値を見つけて下さい。失敗するケースを考えると既読マーク を同時につける設定での運用が望ましいと思います。ま、失敗ケースでも従来と結果同じですから。 作者環境ではHomeは150ms〜250msくらいでほぼミスなし、List,User,Searchは500ms〜750msくらいで時々 ミスといった動作です。DOM更新イベントを待って遷移とかもっと最適なシーケンスがあるかもしれません ので引き続き調査実験して改良していきたいと思います。 ---------------------------- 既読マークまで戻る機能: あくまでもTwitterWEBの基本機能を使ってアーティクルの取得をしているので、任意の過去アーティクルを 表示なんていうのは残念ながら出来ません。そこで、順次遡っていくわけですが既読マークが出てくるまで 繰り返すのを自動化したというだけです。 上の裏技「新着の積み上げ更新」は負荷状態などによって失敗するので、全件読む運用をしている場合には 既読マーク(と、既読の時刻)を目安に遡っていく事になるかと思います。読み込みが完了するまでは既読 マークをした記事かどうかの判定が出来ないため、適宜ウェイトを挟みながら遡らないと行きすぎたりも します。一応タイムスタンプも保存されるようにして、それを目安に遡りますが古いアーティクルのRTなん かが並んでいたりコメントツリー形式での表記なども入り混じりますから既にその時点で時系列順ではない わけなんですね。なので既読マークをつけた付近の順序性と読み込まれた過去アーティクルの順序性につい ては不定であるため、どのへんまで遡ってきたのかの判断はユーザーがしないといけないパターンがありま す。その場合には「通り越してそうだけど続行するか?」というダイアログで中断・続行を選択します。 時系列が崩れている部分の判定はアルゴリズムの工夫で精度があがっていくかと思います。 しばらくこの機能については試行錯誤します。 ---------------------------- 長くなりましたが: 独自の処理に改造したり、任意の数値なんかも好きに出来るメリットがユーザースクリプトだと思ってるので、 これを拡張機能として独立させる気は一切ありません。いや、正確には拡張を作る知識と経験を持ち合わせて ないので現状出来ない。Firefox用なら頑張ったら出来そうだけどChrome用は更に色々厳しいらしいし。 頑張りません。 下記スクリプトはカスタムCSSみたいに一部だけ・1行だけで動くものじゃないので先頭からケツまでを全部 ひとまとめにコピペして。「//」で始まってるヘッダも必要です。 試行錯誤してると元に戻したい事がしばしばあると思うのでTampermonkey-ダッシュボード-ユーティリティー からファイルにエクスポートしてこまめに保存しておくことをおすすめする。 クソ長いのでスクリプトは別のテキストに分離した。 http://coltpythonkingcobra.g1.xrea.com/pseudoTweetdeck/UserScript.txt [Shift-JIS] ------------------20------------------40------------------60------------------80-----------------100 ★おわり [EOF]