adbird(広告鳥) 備忘録

twicliの設定・使い方

僕が愛用している、ブラウザ上で動くツイッター・クライエント twicli の紹介です。

広告は表示されないし、昔のツイッターのようにシンプルな時系列順で表示されます。自分が作成したリストも常時、タブで表示できて、すぐにリストのツイートを見ることができます。


ブラウザで twicli を起動

twicliはアプリをダウンロードする必要はない。

ブラウザで twicli へいって、「twicliを起動」をクリック。

初回の起動の時だけ認証・ログイン(ふた通りの方法があるけど、どちらもでいい)が必要。

設定

個人的、主要な設定変更。

「+」タブをクリック>「▼設定」をクリック。

  • 「自動更新間隔」をお好みに。
    • あまりに更新間隔が短いとAPI制限(350回/1時間)に引っかかるし、自動更新されるとスクロールして見ていたツイートを見失う(たいがい、見ていたツイートは上の方へ移動してしまっている)ので。
    • 特にスマホの場合は思い切り長い時間に設定して、手動で更新する(投稿欄に何も書かずに「ツイート」ボタンを押す)つもりの方がいいと思う。
  • リツイートを"RT:〜"形式で表示」のチェックを外す。
  • 「ctrl+enter/shift+enterで発言」にチェックを入れる。
    • 改行するつもりでEnterキーを押してしまい、ツイートが投稿されてしまうのを防ぐ。
    • 投稿する時は、Ctrl+Enterか、投稿欄の右側にある「ツイート」ボタンを押す。
  • 「タブを閉じる前に確認」「ツイート削除の前に確認」「リツイートする前に確認」はそれぞれお好みでチェックを外す。
    • Vivaldiブラウザなど一部のブラウザでサイドバーにtwicliを表示している場合、これらのチェックを外しておかないと、これらの機能が効かない場合がある。
  • プラグイン」に以下を追加(書き加える)。お好みで。その他のプラグインについては、twicliの公式サイトを参照に。
    • insert_hashtag.js: ハッシュタグ(#〜)のタブを開いた状態でtweetすると、末尾にそのハッシュタグが自動追加される。
    • tweets_around_tw.js: 指定した前後のツイートをポップアップ表示

ここまでで一旦「保存」ボタンを押す。

同じ「+」タブ「▼サムネイル」で、以下のように選択。

  • 「サムネイルの位置」
    • 「下」
  • Twitterの写真のリンク先
    • 「オリジナル画像」

デザインを変える

twicli は以下のAまたはBの方法で自由にデザインを変えることができる。

A:テーマを選ぶ

「+」タブの「テーマ」で、気に入ったテーマをを選択。

B:ユーザースタイルシートCSS)を適用させる。

上記の「テーマ」は「default」に戻しておく。

そして、

 「+」タブ > ▼設計 > ユーザースタイルシート

の欄でCSSを書いていく。

といっても、いきなりは難しいと思うので、ネットで「twicli CSS」とか「twicli スタイルシート」とかで検索かけると先人たちがCSSを公開しているので、それを使ってみるといい。

手前味噌だけど、僕の作った以下の公式Twittertwicliユーザースタイルシートを、「+」タブ > ▼設計 > ユーザースタイルシート の欄に貼り付けると、今まで公式Twitterアプリを使っていた人にも少しは違和感なく、twicliを使ってもらえるのではないかと思う。

ブラウザのサイドバーで twicli を表示する

一部のブラウザではサイバーにtwicliを表示させることで、ながらブラウジングができますw。

Firefox の Side View で表示

Side View アドオンを使って、twicliをサイドに表示させる。

f:id:adbird:20190111115749p:plain
Firefox Side View twicli

Vivaldi ブラウザの Web Panel で表示

Vivaldi ブラウザのサイドバーの「+」(ウェブパネルを追加)ボタンを押して、

https://twicli.neocat.jp/twicli.html

のURLを入力。

使い方

ツイートを投稿

デフォルトではEnter(エンターキー)を押しただけで投稿されるので、書きかけで投稿してしまう恐れがある。

そこで設定で「ctrl+enter/shift+enterで発言」にチェックを入れた方がいい。

その場合は、ツイートを書き込んで、Ctrl+Enterか、「公式Twitter風 twicliユーザースタイルシート(デフォルト)」を適用している場合は、投稿欄の右側にある「ツイート」ボタンを押す。

「いいね」(fav)する

右上の星マーク(公式Twitter風 twicliユーザースタイルシート(デフォルト) などではハートマーク)を押す。

リツイートする

右下の「▽」 > 「リツイート」をクリック。

返信

返信したい相手のツイートの右下の緑の矢印「↰」をクリックすると、投稿欄に「@相手のユーザー名 」が挿入されるので、その後に続いて返信を書き、投稿する。

公式Twitter風 twicliユーザースタイルシート(デフォルト)」を適用している場合は、「返信↰」。

自分のツイートに「別のツイートを追加する」(スレッドを作成)

他人への返信と同様、自分のツイートの右下にある緑の矢印「↰」をクリックし(そのまま返信してもよいが、自分に@が飛んでくるので)、自分のユーザー名(@〇〇)を削除した後に送信。

自分のユーザー名(@〇〇)を削除しても、緑の矢印「↰」の周囲が黄色で色付けされてはずなので、その状態で送信すればよい。

他人のプロフィール、タイムラインを見る

その人のユーザー名(@〇〇)をクリックするか、「+」タブ > 「ユーザ情報を表示 」に表示したい人のユーザー名を入れると、「@」タブの隣にその人のプロフィールとタイムラインが表示される。

タブを自分のプロフィール・タイムラインに戻したい場合は、「+」タブ > 「ユーザ情報を表示 」に自分のアカウント名が入っているので、それを押す。または、「@」タブで自分に飛んできたリプ内にある自分のユーザー名をクリック。

ハッシュタグをつけてツイートを投稿

方法1:普通に#(ハッシュタグ)をつけてツイート。ハッシュタグの前に半角スペースが必要。

方法2:ある#(ハッシュタグ)のツイートの流れを追いながら、#(ハッシュタグ)を自動でつけてツイートする方法。※プラグインに「insert_hashtag.js」を追加しておくこと(「+」タブ>設定>「プラグイン」の欄に insert_hashtag.js を書き加える)。

  • 「+」タブ > 「Twitter検索」で、流れを追いたいハッシュタグ付きキーワード(#〇〇)を入力して検索すると、「#〇〇」のタブが新しく作られる。
  • または、TL(タイムライン)で出てきたハッシュタグ付きキーワード(#〇〇)があれば、それをクリックするだけで「#〇〇」のタブが新しく作られる。
  • その「#〇〇」のタブを開いたまま、ツイートすれば、自動でハッシュタグがついて投稿される。

ダイレクトメッセージ

投稿欄に「d ユーザー名(@は要らない) メッセージの内容」で送信。

リストをタブに表示する

すでに公式Twitterで自分のリストを作成している場合、

 自分のユーザー名が表示されているタブ > Lists

で自分のリストが表示されるので、購読にチェックを入れる。

「購読」にすれば、常時そのリストが上部のタブに表示される。

同じ要領で他人が作ったリストも購読できる。

※ただし、リストは英数字しか表示されないので、日本語のみでリストを作成していると「list1」とか「list2」などで表示されてしまうので、あらかじめ公式Twitterの方で、リストを英数字のみにするか、日本語の後に英数字をつけるかして見分けられるようにしておいたほうが良い。

写真の表示・動画の再生

以下のAかBかの方法で表示・再生。

※サムネイル画像のリンク先が、写真なのか、動画なのかは、URLの最後が /photo/1 なのか、/video/1 なのかで、見分けること。

A:サムネイル画像やURLをクリックして、ブラウザの別タブや公式Twitterのツイートページで表示

①写真の場合、

設定(「+」 > 「▼サムネイル」 > 「Twitterの写真のリンク先」 )で、「ツイートページ」か「オリジナル画像」を選んでおく。

「ツイートページ」を選んだ場合、サムネイル画像やURLをクリックした場合、公式Twitterのツイートページに飛ぶ、またはTwitterアプリが起動する。

「オリジナル画像」を選んだ場合には、ブラウザの別タブや別ウィンドウで写真が開く。

②動画の場合、

 ①の設定(「ツイートページ」か「オリジナル画像」)は写真についてのみの適用されるので、動画の場合は、必ず公式Twitterのページに飛ぶか、Twitterアプリが起動する。

B:URLの後にある緑の「>」をクリックして、twicli内でオーバーレイ表示

パソコンで、しかもサイドバーで表示しているのであれば、上記の方法でもとくに煩わしいことはない。

しかし、スマホtwicliを使っている場合、いちいち新しいタブで表示されたり、公式Twitterアプリが立ち上がったりすると、twicliに戻るための手間が増えるので、ちょっと面倒くさい。

そこで、twicli内だけで写真・動画を表示・再生したい場合(別タブやTwitterアプリに遷移したくない場合)は、写真や動画のURL(https://〜/photo/1 や https://〜/video/1)のあとにある緑の「>」をクリックすると、写真や動画がオーバーレイ表示・再生される。

公式Twitter風 twicliユーザースタイルシート(デフォルト) では、分かりやすいように、かつ、スマホで押しやすいように「Popup View >」としてる。

画像を投稿する

画像は1枚のみ投稿可能。

パソコンなら画像を投稿欄よりちょっと下あたりにドラッグ・アンド・ドロップする。

または、

「+」タブ > 「画像をアップロード」 > 投稿欄の下に「ファイルを選択」が出てくるので、それをクリック、画像を選択して投稿。

ページの一番上に戻る

スクロールして下の方を見ていて、ページの一番上に戻りたい場合は、見ているタブをクリック。

会話を遡る

「@ユーザー名 会話の内容」で行われている会話の流れを見たい時は、右下の赤の「>」を押すと会話が遡れる。

公式Twitterでは一般的な会話のスレッド表示は、

 古いツイート
   ↓
 新しいツイート

という流れだけど、twicliの赤の「>」で表示されるのは、

 新しいツイート
   ↑
 古いツイート

という流れなので、注意する。

また、1度「>」を押しただけでは、会話の流れが全部表示されないこともあるので、ポップアップされたものの一番下のツイートの右下に赤の「>」がある場合は、会話がさらに遡れるので、その「>」を押す。

公式Twitter風 twicliユーザースタイルシート(デフォルト) では、分かりやすいように、かつ、スマホで押しやすいように「前の発言 >」とした。

ツイート前後のツイートを探す

プラグインに「tweets_around_tw.js」を追加する必要がある。

TL(タイムライン)で

 Aさんのツイート⑳
    ︙
 Bさんのツイート
    ︙
 Aさんのツイート②
 Bさんのツイート 
 Cさんのツイート 
    ︙
 Aさんのツイート①
    ︙

となっており、Aさんのツイート②は、どうやらAさんのその直前のツイート(Aさんのツイート①)からの続きの発言らしいけれど、Aさんのツイート①と②の間はたくさんの人のツイートで埋まっていて、TL上からAさんのツイート①を探し出すのは困難という場合。

新しい投稿であれば、Aさんのユーザー名(@□□□)をクリックすれば、AさんのTLが見られるので、それで確認できる。

しかし、上記のように、すでにAさんはその後もツイートをして、ツイート⑳までしてしまっていて、AさんのTLで遡るのも面倒ということもある。

そこで、右下の「▽」から「ツイート前後のツイートを探す」をクリックをすると、Aさんのツイート②の前後のツイートがポップアップされて、ツイート①が探しやすくなる。

NGワードを含むツイートや特定のユーザーのツイートを非表示にする

ユーザースタイルシート

a#pickup-NG{display:none;}

を書き(前述の僕が作成したCSSにはすでに書いてある)、

 「+」>「抽出条件 (タブ名:ユーザID:ツイート:非表示)」

の欄に次のように書く。(以下の例は、僕 @adbirdbrain のツイートを全て非表示にする場合。)

NG:adbirdbrain::4

上記の数字の4は、1〜4のいずれかで設定が異なってくる。

  • 1:TLタブで非表示
  • 2:@タブで非表示
  • 3:TLと@タブで非表示
  • 4:抽出タブ、Dタブ以外の全タブで非表示

理屈としては、特定の言葉や特定のユーザーを抽出して、非表示にするっていう感じ。

詳しくは、twicliの抽出タブを拡張を参照のこと。

ツイートを公式Twitterのツイートページで見る

右下の投稿日時をクリック

その他

twicli公式サイト で追加プラグインなどが紹介されていて、他にもいろんなことができるので、試してみてください。

twicliでできないこと

  • 複数画像の投稿。
  • スレッド全体表示。(※前述の「会話を遡る」や「ツイート前後のツイートを探す」でそれに近いことができなくはないけど…。)
    • あるツイートにぶら下がっているツイート(コメント)全てを見たい場合は、投稿日時をクリックして、Twitterのツイートページに飛ぶしかない。

公式Twitter風 twicliユーザースタイルシート(ブラック)

の表示色違いです。以下、説明は同じです。


twicli起動後、下記のユーザースタイルシートを、

「+」タブ > ▼設計 > ユーザースタイルシート

の欄に貼り付けてください。
※間違っても「プラグイン」や「抽出条件」の欄に貼り付けないように(一度やってしまった経験がある…w)。

動作環境はUbuntuvivaldiFirefoxスマホandroidvivaldiFirefoxで確認してます。OSやブラウザ、使用フォント等によって表示が崩れる恐れがあるので、その時は適宜スタイルシートを調整してください。

とくにスマホの場合、長いアカウント・ユーザー名が適切な位置から下方向へズレる恐れがあるので、

/*長いアカウント名・ユーザー名が適切な位置よりもズレていたら、ここを小さい値にする。*/

のところで調節してください。

また、最低限やっておいた方がいいと思う設定は、以下の通り。

  • 「自動更新間隔」をお好みに。
    • あまりに更新間隔が短いとAPI制限に引っかかるし、自動更新されるとスクロールして見ていたツイートを見失う(たいがい、見ていたツイートは上の方へ移動してしまっている)ので、特にスマホの場合は思い切り長い時間に設定して、手動で更新する(投稿欄に何も書かずに「ツイート」ボタンを押す)つもりの方がいいと思う。
  • 「ctrl+enter/shift+enterで発言」にチェックを入れる。
    • 改行するつもりでEnterキーを押してしまい、ツイートが投稿されてしまうのを防ぐ。
    • 投稿する時は、Ctrl+Enterか、投稿欄の右側にある「ツイート」ボタンを押す。
  • 「▼サムネイル」で「サムネイルの位置」を「下」に。

さらに、操作方法について。

  • twicli内だけで写真・動画を表示・再生したい場合(別タブやTwitterアプリに遷移したくない場合)は、写真や動画のURL(https://〜/photo/1 や https://〜/video/1)のあとにある「Popup View >」をクリックすると、写真や動画がポップアップ表示される。
    • サムネイル画像のリンク先が、写真なのか、動画なのかは、URLの最後が /photo/1 なのか、/video/1 なのかで、見分ける。

ユーザースタイルシート

/*ツイート本文(ステータス)のフォントサイズ・色など*/
#tw .status,#tw2 .status,#re .status{
    font-size: 1rem; /*フォントサイズ*/
    color:rgba(217,217,217,1.00); /*フォント色*/
    background-color:black;
    margin:7px 10px 5px 60px;
    display:block;
    text-align:justify;
}

/*行間*/
#tw,#tw2,#re,#reps .status{line-height:1.3125;}

/* 引用 */
.quoted {
    border: solid 1px rgb(87, 93, 97);
    margin: 13px 0 0 0;
    background-color:rgba(0,0,0,0);
    border-radius: 10px;
}
/*引用リツイート内の文章*/
#tw .quoted .status,#tw2 .quoted .status,#re .quoted .status,#reps .quoted .status{
    margin:7px 10px 5px 5px;
    display:block;
    padding-left:0;
    text-align:justify;
}
/*選択されたツイート中の引用*/
#tw .selected .quoted,#tw2 .selected .quoted,#re .selected .quoted {
    border: solid 1px rgb(87, 93, 97);
    margin: 13px 0 0 0;
    color:rgba(217,217,217,1.00);
    background-color:#212225;
}

/* 「リツイート直後のツイートを探す」「ツイート前後のツイートを探す」 */
#rep {
    font-size: 1rem;
    display: none;
    background-color: black;
    position: absolute;
    width: 85%;
    left: 7%;
    border: 2px solid #649cff;
    border-radius: 10px;
    z-index: 2;
    padding: 2px;
    overflow: hidden;
    color:black;
}
#rep hr{border-bottom:none; margin: 5px 0;}
/*「リツイート直後のツイートを探す」「ツイート前後のツイートを探す」内の本文*/
#reps .status{
    margin:7px 10px 5px 60px;
    display:block;
    padding-left:0;
    text-align:justify;
    color:rgba(217,217,217,1.00);
}

/*ツイート内のリンク(URL)*/
.status a.link::before{
    content: "\A" ; /*URLの前で改行*/
}
.status a.link {
    text-decoration: none;
    border: none;
    background-color: transparent;
    color:rgb(27, 149, 224); /*フォント色*/
    font-size: 9pt; /*フォントサイズ*/
}

/*リンク文字*/
a{
    font-size:1rem;
    color:rgb(136, 153, 166);
    text-decoration: none;
}

/*ハッシュタグ*/
.hashtag {color:rgb(27, 149, 224);}

/*投稿欄*/
#fst {
    position: absolute;
    left: 1px;
    top: 1px;
    width: 85%;
    font-size: 1rem;
    overflow: hidden;
    border-radius: 4px;
}

/*投稿ボタンの変更*/
#go img{display:none;}
#go { 
  position: absolute; 
  left: 86%; 
  top: 4px; /*領域の上部からの位置*/
  height: 25px; /*領域の高さ*/
  width: 13%; /*領域の幅*/
  color: black; 
  float: left; 
  overflow: hidden; 
  text-align: center; 
}
#go:before {
  content: "ツイート"; /*投稿ボタン*/
  display: block; 
  width:auto;
  /*投稿ボタンの上下の広さを調整するのはpadding-topとpadding-bottom*/
  padding-top: 6px; /*投稿ボタン内の上部*/
  padding-bottom:6px; /*投稿ボタン内の下部*/
  font-size:9px;  /*フォントの大きさ*/
  font-weight: bold; 
  font-family: sans-serif;
  color:white;
  background-color:rgb(29,161,242);
  border-radius: 15px;
}
#go:hover {
  color: #666; 
  text-shadow: 1px 1px 0px #fff; 
}
/*投稿欄入力リセットボタンの非表示*/
#rst {
  display: none; 
}

/* ツイート内のアイコン(プロフィール画像) */
.uicon {
    float: left;
    width: 48px;
    height: 48px;
    margin:4px 7px 0 4px;
    border-radius: 50%;
}
/*プロフィール情報におけるアイコン(プロフィール画像)*/
.uicona {border-radius: 50%;}
.uicon2 {border-radius: 50%;}

/*アカウント名とユーザー名を入れ替える*/
a.user{
    display: inline-flex;
    flex-wrap: nowrap;
    max-width:73%; /*長いアカウント・ユーザー名が適切な位置よりもズレていたら、ここを小さい値にする。*/
    overflow:hidden;
}
/*「リツイート直後のツイートを探す」「ツイート前後のツイートを探す」内のアカウント・ユーザー名*/
#rep a.user{
    display: inline-flex;
    flex-wrap: nowrap;
    max-width:70%; /*長いアカウント・ユーザー名が適切な位置よりもズレていたら、ここを小さい値にする。*/
    overflow:hidden;
}
/*アカウント名*/
.uid,.quoted.uid,#reps .uid{
    margin-top:8px;
    order:2;
}
/*ユーザー名*/
.uname{
    margin-top:8px;
    margin-right:3px;
    color: rgba(217,217,217,1.00);
    order:1;
    font-weight: bold;
    flex-shrink:0;
}
.uname_paren{display:none;}
.uname_paren2{display:none;}


/* リツイート数*/
.rtinfo{
    display: inline-block;
    color: #999;
    font-size: 9pt;
    line-height: 1;
    float:right;
}

/* いいね(fav)数 */
.favinfo {
    display: inline-block;
    color: #999;
    font-size: 9pt;
    line-height: 1;
    float:right;
}

/*投稿時間*/
.utils{
    display:block;
    text-align:right;
    clear:both;
}
.prop{ font-size: 9pt;}

/*fav(いいねアイコンの位置)*/
.fav {
    float: right;
    cursor: pointer;
    margin:13px 10px 0 8px;
}

/*fav(いいね)アイコンを星からハートに替える*/
.fav > img { opacity: 0; z-index: 9; position: absolute; }
.fav > span:before {
 background-image: url("images/icon_like_empty.png"); background-size: contain; 
 width: 12px; 
 height: 12px; 
 display: inline-block; 
 content: "."; 
 color: transparent; 
 line-height: 0; }
.fav > img[src*="loading"] + span:before { background-image: url("images/icon_like_loading.png"); }
.fav > img[src*="full"] + span:before { background-image: url("images/icon_like_full.png"); }



/*画像*/
/*マウスオーバーで動かないようにするには、thumbnail-imageとthumbnail-image:hoverのmax-width・min-widthの値を同じにする。*/
.thumbnail-image {
    border: none;
    max-width:130px!important;
    min-width:130px;
    border-radius: 6px;
    display: block;
    float: left;
}
.thumbnail-image:hover { 
    border: none;
    max-width:130px;
    border-radius: 6px;
    display: block;
    float: left;
}
.thumbnail-link {
    border: none;
    display: block;
    float: left;
    margin-left:60px;
}


/*投稿欄・メニュー*/
#control {
    border-bottom: 1px solid white;
}

/*上部メニュー全体*/
#menu {
    background-color:black;
}
/*上部メニューのタブ*/
#menu2 a{
    font-size: 13pt;
    background-color:black;
    color:rgba(217,217,217,1.00); 
    border:solid 1px grey;
    box-shadow: 0 0 5px grey inset;
}
/*新着タブの色*/
#menu a.new {
    background-color: rgb(157, 167, 174);
}
/*選択したタブ*/
#menu a.sel {
    height: 20px;
    margin-bottom: 0;
    background-color: #67c5ff;
    color: #002;
    border-bottom-color: #fff;
}

/*@タブで「返信先:〜さん」*/
#re.tw.tw-parent a.mention::before {
    content: "返信先:";
    margin-right: 3px;
    font-size: 0.9rem;
}
#re.tw.tw-parent a.mention::after {
    content: "さん\A";
}

/*ユーザー情報*/
#user_info_b {
    margin: 0px;
    text-align: center;
    position: relative;
    border:none;
}
/*「@」タブ隣の自分のタイムライン内のツイート*/
#tw2c .fromme .status {
    margin-right: 28px;
}

/*メインタイムラインほかの背景色*/
#tw,#tw2c.tw-parent,#re,#tw2h,tw2.tw,#control,#option{
    background-color:black;
    color:rgba(217,217,217,1.00);; /*フォント色*/
}
table {
    color: rgba(217,217,217,1.00);
}

/* 自分宛のツイートの背景色 */
.tome { background-color:black; }

/* 自分のツイートの背景色 */
.fromme {background-color:black;}

/* 選択されたツイートの背景 */
.selected,#tw .selected .status,#tw2 .selected .status,#re .selected .status{
    background-color: #212225;
    color:rgba(217,217,217,1.00);
}

/*ツイートの枠*/
.tw-parent > div > div {
    margin: 2px 5px 3px 5px;
    border-bottom: 1px solid #636363;
}
#tw > div {
    border-bottom: none;
}

/*投稿アプリの非表示*/
.separator,.source {
  display: none; 
}

/*返信(リプライ)*/
a.button.reply::before {
  content: "返信";
  font-size:0.8rem;
  margin-left:15px;
}

/*前の発言*/
a.button.inrep::before{
  content: "前の発言";
  font-size:0.8rem;
  margin-left:12px;
}

/*引用ツイート内のジャンプ*/
a.button.inrep.overlay::before{
    content: "";
    font-size:;
    margin-left: 3px;
}

/* 右下の▼マーク */
.popup {
    padding: 0px 8.7px 0px 6px;
    color: #888;
}
small {
    font-size: 0.9rem; /*▼の大きさ*/
}
/*右下▼マークからのポップアップメニュー*/
.popup_menu {
    display: none;
    position: absolute;
    left: 0;
    top: 200px;
    z-index: 6;
    width: 220px;
    font-size: smaller;
    padding: 1px;
    border: none;
    background-color:rgba(0,0,0,0);
}
.popup_menu a {
    background-color: #ffffff;
    color: #000000;
    text-decoration: none;
    padding: 6px 5px 6px 10px;
    font-size: 0.8rem;
    border-radius: 8px;
    border-bottom: black 1px solid;
    box-shadow: 2px 2px 2px 1px #383c65;
}
a.button.popup::before {
    content: none;
}
#popup hr{display:none;}
/*ポップアップ時の画面全体を隠す影*/
}
#popup_hide {
    background-color: #258dff;
}
/*以下、ポップアップメニューの非表示*/
/*「このユーザを抽出」を非表示*/
#regexp_add_ID{display:none;}
/*「1時間ツイートを隔離」を非表示*/
#isolate_menu{display:none;}
/*「RT:を付けて引用」を非表示*/
#popup_status_quote{display:none !important;}
/*「Twitter / ユーザ」を非表示*/
#popup_link_user{display:none;}
/*「Twitter / ツイート」を非表示*/
#popup_link_status{display:none;}

/* NGワードを有効にする */
a#pickup-NG{display:none;}

/*写真・動画拡大画面へのジャンプ*/
a.button::before {
    content: "Popup View";
    font-size: 0.7rem;
    margin-left: 3px;
}

/*写真・動画拡大画面の「⇔」の非表示*/
#rep a.close.both{display:none;}

/*写真・動画拡大画面の「☓」ボタンの左寄せ。スマホの場合、いいねマークの誤タップを防ぐためにこちらのほうがよい*/
#reps {
    margin-bottom: 10px;
    color: rgba(217,217,217,1.00);
    } 
#reps img {
    max-width: 94%!important;
}
#reps video {
    max-width: 94%!important;
}

/*写真・動画拡大画面の「☓」ボタンの右寄せ。ただし、スマホだと、いいねを誤タップする恐れが高くなる。*/
/* #reps {
    margin-top: 26px;
    margin-bottom: 10px;
    color: rgba(217,217,217,1.00);
    }
#reps img {
    max-width: 94%!important;
}
#reps video {
    max-width: 94%!important;
}
#rep a.close.cl{float:right;}
*/

公式Twitter風 twicliユーザースタイルシート(ダークブルー)

前回の 公式Twitter風 twicliユーザースタイルシート(デフォルト) の表示色違いです。

公式Twitter風 twicliユーザースタイルシート(ブラック) もあります。

以下、説明は同じです。


twicli起動後、下記のユーザースタイルシートを、

「+」タブ > ▼設計 > ユーザースタイルシート

の欄に貼り付けてください。
※間違っても「プラグイン」や「抽出条件」の欄に貼り付けないように(一度やってしまった経験がある…w)。

動作環境はUbuntuvivaldiFirefoxスマホandroidvivaldiFirefoxで確認してます。OSやブラウザ、使用フォント等によって表示が崩れる恐れがあるので、その時は適宜スタイルシートを調整してください。

とくにスマホの場合、長いアカウント・ユーザー名が適切な位置から下方向へズレる恐れがあるので、

/*長いアカウント名・ユーザー名が適切な位置よりもズレていたら、ここを小さい値にする。*/

のところで調節してください。

また、最低限やっておいた方がいいと思う設定は、以下の通り。

  • 「自動更新間隔」をお好みに。
    • あまりに更新間隔が短いとAPI制限に引っかかるし、自動更新されるとスクロールして見ていたツイートを見失う(たいがい、見ていたツイートは上の方へ移動してしまっている)ので、特にスマホの場合は思い切り長い時間に設定して、手動で更新する(投稿欄に何も書かずに「ツイート」ボタンを押す)つもりの方がいいと思う。
  • 「ctrl+enter/shift+enterで発言」にチェックを入れる。
    • 改行するつもりでEnterキーを押してしまい、ツイートが投稿されてしまうのを防ぐ。
    • 投稿する時は、Ctrl+Enterか、投稿欄の右側にある「ツイート」ボタンを押す。
  • 「▼サムネイル」で「サムネイルの位置」を「下」に。

さらに、操作方法について。

  • twicli内だけで写真・動画を表示・再生したい場合(別タブやTwitterアプリに遷移したくない場合)は、写真や動画のURL(https://〜/photo/1 や https://〜/video/1)のあとにある「Popup View >」をクリックすると、写真や動画がポップアップ表示される。
    • サムネイル画像のリンク先が、写真なのか、動画なのかは、URLの最後が /photo/1 なのか、/video/1 なのかで、見分ける。

ユーザースタイルシート

/*ツイート本文(ステータス)のフォントサイズ・色など*/
#tw .status,#tw2 .status,#re .status{
    font-size: 1rem; /*フォントサイズ*/
    color:rgb(255, 255, 255); /*フォント色*/
    background-color:rgb(21, 32, 43);
    margin:7px 10px 5px 60px;
    display:block;
    text-align:justify;
}

/*行間*/
#tw,#tw2,#re,#reps .status{line-height:1.3125;}

/* 引用 */
.quoted {
    border: solid 1px rgb(87, 93, 97);
    margin: 13px 0 0 0;
    background-color:rgba(0,0,0,0);
    border-radius: 10px;
}
/*引用リツイート内の文章*/
#tw .quoted .status,#tw2 .quoted .status,#re .quoted .status,#reps .quoted .status{
    margin:7px 10px 5px 5px;
    display:block;
    padding-left:0;
    text-align:justify;
}
/*選択されたツイート中の引用*/
#tw .selected .quoted,#tw2 .selected .quoted,#re .selected .quoted {
    border: solid 1px rgb(87, 93, 97);
    margin: 13px 0 0 0;
    color:rgb(255, 255, 255);
    background-color:rgb(25, 39, 52);
}

/* 「リツイート直後のツイートを探す」「ツイート前後のツイートを探す」 */
#rep {
    font-size: 1rem;
    display: none;
    background-color: rgb(21, 32, 43);
    position: absolute;
    width: 85%;
    left: 7%;
    border: 2px solid #649cff;
    border-radius: 10px;
    z-index: 2;
    padding: 2px;
    overflow: hidden;
    color:black;
}
#rep hr{border-bottom:none; margin: 5px 0;}
/*「リツイート直後のツイートを探す」「ツイート前後のツイートを探す」内の本文*/
#reps .status{
    margin:7px 10px 5px 60px;
    display:block;
    padding-left:0;
    text-align:justify;
    color:rgb(255, 255, 255);
}

/*ツイート内のリンク(URL)*/
.status a.link::before{
    content: "\A" ; /*URLの前で改行*/
}
.status a.link {
    text-decoration: none;
    border: none;
    background-color: transparent;
    color:rgb(27, 149, 224); /*フォント色*/
    font-size: 9pt; /*フォントサイズ*/
}

/*リンク文字*/
a{
    font-size:1rem;
    color:rgb(136, 153, 166);
    text-decoration: none;
}

/*ハッシュタグ*/
.hashtag {color:rgb(27, 149, 224);}

/*投稿欄*/
#fst {
    position: absolute;
    left: 1px;
    top: 1px;
    width: 85%;
    font-size: 1rem;
    overflow: hidden;
    border-radius: 4px;
}

/*投稿ボタンの変更*/
#go img{display:none;}
#go { 
  position: absolute; 
  left: 86%; 
  top: 4px; /*領域の上部からの位置*/
  height: 25px; /*領域の高さ*/
  width: 13%; /*領域の幅*/
  color: black; 
  float: left; 
  overflow: hidden; 
  text-align: center; 
}
#go:before {
  content: "ツイート"; /*投稿ボタン*/
  display: block; 
  width:auto;
  /*投稿ボタンの上下の広さを調整するのはpadding-topとpadding-bottom*/
  padding-top: 6px; /*投稿ボタン内の上部*/
  padding-bottom:6px; /*投稿ボタン内の下部*/
  font-size:9px;  /*フォントの大きさ*/
  font-weight: bold; 
  font-family: sans-serif;
  color:white;
  background-color:rgb(29,161,242);
  border-radius: 15px;
}
#go:hover {
  color: #666; 
  text-shadow: 1px 1px 0px #fff; 
}
/*投稿欄入力リセットボタンの非表示*/
#rst {
  display: none; 
}

/* ツイート内のアイコン(プロフィール画像) */
.uicon {
    float: left;
    width: 48px;
    height: 48px;
    margin:4px 7px 0 4px;
    border-radius: 50%;
}
/*プロフィール情報におけるアイコン(プロフィール画像)*/
.uicona {border-radius: 50%;}
.uicon2 {border-radius: 50%;}

/*アカウント名とユーザー名を入れ替える*/
a.user{
    display: inline-flex;
    flex-wrap: nowrap;
    max-width:73%; /*長いアカウント・ユーザー名が適切な位置よりもズレていたら、ここを小さい値にする。*/
    overflow:hidden;
}
/*「リツイート直後のツイートを探す」「ツイート前後のツイートを探す」内のアカウント・ユーザー名*/
#rep a.user{
    display: inline-flex;
    flex-wrap: nowrap;
    max-width:70%; /*長いアカウント・ユーザー名が適切な位置よりもズレていたら、ここを小さい値にする。*/
    overflow:hidden;
}
/*アカウント名*/
.uid,.quoted.uid,#reps .uid{
    margin-top:8px;
    order:2;
}
/*ユーザー名*/
.uname{
    margin-top:8px;
    margin-right:3px;
    color: rgb(255, 255, 255);
    order:1;
    font-weight: bold;
    flex-shrink:0;
}
.uname_paren{display:none;}
.uname_paren2{display:none;}


/* リツイート数*/
.rtinfo{
    display: inline-block;
    color: #999;
    font-size: 9pt;
    line-height: 1;
    float:right;
}

/* いいね(fav)数 */
.favinfo {
    display: inline-block;
    color: #999;
    font-size: 9pt;
    line-height: 1;
    float:right;
}

/*投稿時間*/
.utils{
    display:block;
    text-align:right;
    clear:both;
}
.prop{ font-size: 9pt;}

/*fav(いいねアイコンの位置)*/
.fav {
    float: right;
    cursor: pointer;
    margin:13px 10px 0 8px;
}

/*fav(いいね)アイコンを星からハートに替える*/
.fav > img { opacity: 0; z-index: 9; position: absolute; }
.fav > span:before {
 background-image: url("images/icon_like_empty.png"); background-size: contain; 
 width: 12px; 
 height: 12px; 
 display: inline-block; 
 content: "."; 
 color: transparent; 
 line-height: 0; }
.fav > img[src*="loading"] + span:before { background-image: url("images/icon_like_loading.png"); }
.fav > img[src*="full"] + span:before { background-image: url("images/icon_like_full.png"); }



/*画像*/
/*マウスオーバーで動かないようにするには、thumbnail-imageとthumbnail-image:hoverのmax-width・min-widthの値を同じにする。*/
.thumbnail-image {
    border: none;
    max-width:130px!important;
    min-width:130px;
    border-radius: 6px;
    display: block;
    float: left;
}
.thumbnail-image:hover { 
    border: none;
    max-width:130px;
    border-radius: 6px;
    display: block;
    float: left;
}
.thumbnail-link {
    border: none;
    display: block;
    float: left;
    margin-left:60px;
}


/*投稿欄・メニュー*/
#control {
    border-bottom: 1px solid white;
}

/*上部メニュー全体*/
#menu {
    background-color:rgb(21, 32, 43);
}
/*上部メニューのタブ*/
#menu2 a{
    font-size: 13pt;
    background-color:rgb(21, 32, 43);
    color:rgb(255, 255, 255); 
    border:solid 1px grey;
    box-shadow: 0 0 5px grey inset;
}
/*新着タブの色*/
#menu a.new {
    background-color: rgb(157, 167, 174);
}
/*選択したタブ*/
#menu a.sel {
    height: 20px;
    margin-bottom: 0;
    background-color: #67c5ff;
    color: #002;
    border-bottom-color: #fff;
}

/*@タブで「返信先:〜さん」*/
#re.tw.tw-parent a.mention::before {
    content: "返信先:";
    margin-right: 3px;
    font-size: 0.9rem;
}
#re.tw.tw-parent a.mention::after {
    content: "さん\A";
}

/*ユーザー情報*/
#user_info_b {
    margin: 0px;
    text-align: center;
    position: relative;
    border:none;
}
/*「@」タブ隣の自分のタイムライン内のツイート*/
#tw2c .fromme .status{
    margin-right: 28px;
}

/*メインタイムラインほかの背景色*/
#tw,#tw2c.tw-parent,#re,#tw2h,tw2.tw,#control,#option{
    background-color:rgb(21, 32, 43);
    color:rgb(255, 255, 255);; /*フォント色*/
}
table {
    color: rgb(255, 255, 255);
}

/* 自分宛のツイートの背景色 */
.tome { background-color:rgb(21, 32, 43); }

/* 自分のツイートの背景色 */
.fromme {background-color:rgb(21, 32, 43);}

/* 選択されたツイートの背景 */
.selected,#tw .selected .status,#tw2 .selected .status,#re .selected .status{
    background-color: rgb(25, 39, 52);
    color:rgb(255, 255, 255);
}

/*ツイートの枠*/
.tw-parent > div > div {
    margin: 2px 5px 3px 5px;
    border-bottom: 1px solid #636363;
}
#tw > div {
    border-bottom: none;
}

/*投稿アプリの非表示*/
.separator,.source {
  display: none; 
}

/*返信(リプライ)*/
a.button.reply::before {
  content: "返信";
  font-size:0.8rem;
  margin-left:15px;
}

/*前の発言*/
a.button.inrep::before{
  content: "前の発言";
  font-size:0.8rem;
  margin-left:12px;
}

/*引用ツイート内のジャンプ*/
a.button.inrep.overlay::before{
  content: "";
  font-size:0;
  margin-left:0;
}

/* 右下の▼マーク */
.popup {
    padding: 0px 8.7px 0px 6px;
    color: #888;
}
small {
    font-size: 0.9rem; /*▼の大きさ*/
}
/*右下▼マークからのポップアップメニュー*/
.popup_menu {
    display: none;
    position: absolute;
    left: 0;
    top: 200px;
    z-index: 6;
    width: 220px;
    font-size: smaller;
    padding: 1px;
    border: none;
    background-color:rgba(0,0,0,0);
}
.popup_menu a {
    background-color: #ffffff;
    color: #000000;
    text-decoration: none;
    padding: 6px 5px 6px 10px;
    font-size: 0.8rem;
    border-radius: 8px;
    border-bottom: black 1px solid;
    box-shadow: 2px 2px 2px 1px #383c65;
}
a.button.popup::before {
    content: none;
}
#popup hr{display:none;}
/*ポップアップ時の画面全体を隠す影*/
}
#popup_hide {
    background-color: #258dff;
}
/*以下、ポップアップメニューの非表示*/
/*「このユーザを抽出」を非表示*/
#regexp_add_ID{display:none;}
/*「1時間ツイートを隔離」を非表示*/
#isolate_menu{display:none;}
/*「RT:を付けて引用」を非表示*/
#popup_status_quote{display:none !important;}
/*「Twitter / ユーザ」を非表示*/
#popup_link_user{display:none;}
/*「Twitter / ツイート」を非表示*/
#popup_link_status{display:none;}

/* NGワードを有効にする */
a#pickup-NG{display:none;}

/*写真・動画拡大画面へのジャンプ*/
a.button::before {
    content: "Popup View";
    font-size: 0.7rem;
    margin-left: 3px;
}

/*写真・動画拡大画面の「⇔」の非表示*/
#rep a.close.both{display:none;}

/*写真・動画拡大画面の「☓」ボタンの左寄せ。スマホの場合、いいねマークの誤タップを防ぐためにこちらのほうがよい*/
#reps {
    margin-bottom: 10px;
    color:rgb(255, 255, 255);
    } 
#reps img {
    max-width: 94%!important;
}
#reps video {
    max-width: 94%!important;
}

/*写真・動画拡大画面の「☓」ボタンの右寄せ。ただし、スマホだと、いいねを誤タップする恐れが高くなる。*/
/* #reps {
    margin-top: 26px;
    margin-bottom: 10px;
    color:rgb(255, 255, 255);
    }
#reps img {
    max-width: 94%!important;
}
#reps video {
    max-width: 94%!important;
}
#rep a.close.cl{float:right;}
*/

公式Twitter風 twicliユーザースタイルシート(デフォルト)

他人に twicli を勧めようと思った時に、今まで使ってきた公式Twitterアプリと見た目がガラリと変わるのは、とっつきにくいだろうなぁ…と思って、できるだけ公式のデザインに近づけるべく、CSSを作った。

f:id:adbird:20200130130259p:plain
公式Twittertwicli

これを作るに当たって、twicli製作者の @NeoCat さんに、htmlの要素にclassをいくつか追加していただいた。本当にありがとうございました。

twicli起動後、下記のユーザースタイルシートを、

「+」タブ > ▼設計 > ユーザースタイルシート

の欄に貼り付けてください。
※間違っても「プラグイン」や「抽出条件」の欄に貼り付けないように(一度やってしまった経験がある…w)。

動作環境はUbuntuvivaldiFirefoxスマホandroidvivaldiFirefoxで確認してます。OSやブラウザ、使用フォント等によって表示が崩れる恐れがあるので、その時は適宜スタイルシートを調整してください。

とくにスマホの場合、長いアカウント・ユーザー名が適切な位置から下方向へズレる恐れがあるので、

/*長いアカウント名・ユーザー名が適切な位置よりもズレていたら、ここを小さい値にする。*/

のところで調節してください。

f:id:adbird:20200130131956p:plain

また、最低限やっておいた方がいいと思う設定は、以下の通り。

  • 「自動更新間隔」をお好みに。
    • あまりに更新間隔が短いとAPI制限に引っかかるし、自動更新されるとスクロールして見ていたツイートを見失う(たいがい、見ていたツイートは上の方へ移動してしまっている)ので、特にスマホの場合は思い切り長い時間に設定して、手動で更新する(投稿欄に何も書かずに「ツイート」ボタンを押す)つもりの方がいいと思う。
  • 「ctrl+enter/shift+enterで発言」にチェックを入れる。
    • 改行するつもりでEnterキーを押してしまい、ツイートが投稿されてしまうのを防ぐ。
    • 投稿する時は、Ctrl+Enterか、投稿欄の右側にある「ツイート」ボタンを押す。
  • 「▼サムネイル」で「サムネイルの位置」を「下」に。

さらに、操作方法について。

  • twicli内だけで写真・動画を表示・再生したい場合(別タブやTwitterアプリに遷移したくない場合)は、写真や動画のURL(https://〜/photo/1 や https://〜/video/1)のあとにある緑の「>」マークスマホだと押しにくいので修正した)「Popup View >」をクリックすると、写真や動画がポップアップ表示される。
    • サムネイル画像のリンク先が、写真なのか、動画なのかは、URLの最後が /photo/1 なのか、/video/1 なのかで、見分ける。

※追記:表示色違いも作りました。

ユーザースタイルシート

/*ツイート本文(ステータス)のフォントサイズ・色など*/
#tw .status,#tw2 .status,#re .status{
    font-size: 1rem; /*フォントサイズ*/
    color:black; /*フォント色*/
    background-color:white;
    margin:7px 10px 5px 60px;
    display:block;
    text-align:justify;
}

/*行間*/
#tw,#tw2,#re,#reps .status{line-height:1.3125;}

/* 引用 */
.quoted {
    border: solid 1px rgb(204, 214, 221);
    margin: 13px 0 0 0;
    background-color:rgba(0,0,0,0);
    border-radius: 10px;
}
/*引用リツイート内の文章*/
#tw .quoted .status,#tw2 .quoted .status,#re .quoted .status,#reps .quoted .status{
    margin:7px 10px 5px 5px;
    display:block;
    padding-left:0;
    text-align:justify;
}
/*選択されたツイート中の引用*/
#tw .selected .quoted,#tw2 .selected .quoted,#re .selected .quoted {
    border: solid 1px rgb(179, 179, 179);
    margin: 13px 0 0 0;
    background-color:#efefef;
}

/* 「リツイート直後のツイートを探す」「ツイート前後のツイートを探す」 */
#rep {
    font-size: 1rem;
    display: none;
    background-color: white;
    position: absolute;
    width: 85%;
    left: 7%;
    border: 2px solid #649cff;
    border-radius: 10px;
    z-index: 2;
    padding: 2px;
    overflow: hidden;
    color:black;
}
#rep hr{border-bottom:none; margin: 5px 0;}
/*「リツイート直後のツイートを探す」「ツイート前後のツイートを探す」内の本文*/
#reps .status{
    margin:7px 10px 5px 60px;
    display:block;
    padding-left:0;
    text-align:justify;
}

/*ツイート内のリンク(URL)*/
.status a.link::before{
    content: "\A" ; /*URLの前で改行*/
}
.status a.link {
    text-decoration: none;
    border: none;
    background-color: transparent;
    color:rgb(27, 149, 224); /*フォント色*/
    font-size: 9pt; /*フォントサイズ*/
}

/*リンク文字*/
a{
    font-size:1rem;
    color:rgb(94, 98, 100);
    text-decoration: none;
}

/*ハッシュタグ*/
.hashtag {color:rgb(27, 149, 224);}

/*投稿欄*/
#fst {
    position: absolute;
    left: 1px;
    top: 1px;
    width: 85%;
    font-size: 1rem;
    overflow: hidden;
    border-radius: 4px;
}

/*投稿ボタンの変更*/
#go img{display:none;}
#go { 
  position: absolute; 
  left: 86%; 
  top: 4px; /*領域の上部からの位置*/
  height: 25px; /*領域の高さ*/
  width: 13%; /*領域の幅*/
  color: black; 
  float: left; 
  overflow: hidden; 
  text-align: center; 
}
#go:before {
  content: "ツイート"; /*投稿ボタン*/
  display: block; 
  width:auto;
  /*投稿ボタンの上下の広さを調整するのはpadding-topとpadding-bottom*/
  padding-top: 6px; /*投稿ボタン内の上部*/
  padding-bottom:6px; /*投稿ボタン内の下部*/
  font-size:9px;  /*フォントの大きさ*/
  font-weight: bold; 
  font-family: sans-serif;
  color:white;
  background-color:rgb(29,161,242);
  border-radius: 15px;
}
#go:hover {
  color: #666; 
  text-shadow: 1px 1px 0px #fff; 
}
/*投稿欄入力リセットボタンの非表示*/
#rst {
  display: none; 
}

/* ツイート内のアイコン(プロフィール画像) */
.uicon {
    float: left;
    width: 48px;
    height: 48px;
    margin:4px 7px 0 4px;
    border-radius: 50%;
}
/*プロフィール情報におけるアイコン(プロフィール画像)*/
.uicona {border-radius: 50%;}
.uicon2 {border-radius: 50%;}

/*アカウント名とユーザー名を入れ替える*/
a.user{
    display: inline-flex;
    flex-wrap: nowrap;
    max-width:73%; /*長いアカウント・ユーザー名が適切な位置よりもズレていたら、ここを小さい値にする。*/
    overflow:hidden;
}
/*「リツイート直後のツイートを探す」「ツイート前後のツイートを探す」内のアカウント・ユーザー名*/
#rep a.user{
    display: inline-flex;
    flex-wrap: nowrap;
    max-width:70%; /*長いアカウント・ユーザー名が適切な位置よりもズレていたら、ここを小さい値にする。*/
    overflow:hidden;
}
/*アカウント名*/
.uid,.quoted.uid,#reps .uid{
    margin-top:8px;
    order:2;
}
/*ユーザー名*/
.uname{
    margin-top:8px;
    margin-right:3px;
    color: #2d353c;
    order:1;
    font-weight: bold;
    flex-shrink:0;
}
.uname_paren{display:none;}
.uname_paren2{display:none;}


/* リツイート数*/
.rtinfo{
    display: inline-block;
    color: #999;
    font-size: 9pt;
    line-height: 1;
    float:right;
}

/* いいね(fav)数 */
.favinfo {
    display: inline-block;
    color: #999;
    font-size: 9pt;
    line-height: 1;
    float:right;
}

/*投稿時間*/
.utils{
    display:block;
    text-align:right;
    clear:both;
}
.prop{ font-size: 9pt;}

/*fav(いいねアイコンの位置)*/
.fav {
    float: right;
    cursor: pointer;
    margin:13px 10px 0 8px;
}

/*fav(いいね)アイコンを星からハートに替える*/
.fav > img { opacity: 0; z-index: 9; position: absolute; }
.fav > span:before {
 background-image: url("images/icon_like_empty.png"); background-size: contain; 
 width: 12px; 
 height: 12px; 
 display: inline-block; 
 content: "."; 
 color: transparent; 
 line-height: 0; }
.fav > img[src*="loading"] + span:before { background-image: url("images/icon_like_loading.png"); }
.fav > img[src*="full"] + span:before { background-image: url("images/icon_like_full.png"); }



/*画像*/
/*マウスオーバーで動かないようにするには、thumbnail-imageとthumbnail-image:hoverのmax-width・min-widthの値を同じにする。*/
.thumbnail-image {
    border: none;
    max-width:130px!important;
    min-width:130px;
    border-radius: 6px;
    display: block;
    float: left;
}
.thumbnail-image:hover { 
    border: none;
    max-width:130px;
    border-radius: 6px;
    display: block;
    float: left;
}
.thumbnail-link {
    border: none;
    display: block;
    float: left;
    margin-left:60px;
}


/*投稿欄・メニュー*/
#control {
    border-bottom: 1px solid white;
    background-color: white;
}

/*上部メニュー全体*/
#menu {
    background-color:white;
}
/*上部メニューのタブ*/
#menu2 a{
    font-size: 13pt;
    background-color:white;
    color:#575757;
    border:solid 1px grey;
    box-shadow: 0 0 5px grey inset;
}
/*新着タブの色*/
#menu a.new {
    background-color: rgb(220, 241, 254);
}
/*選択したタブ*/
#menu a.sel {
    height: 20px;
    margin-bottom: 0;
    background-color: #67c5ff;
    color: #002;
    border-bottom-color: #fff;
}

/*@タブで「返信先:〜さん」*/
#re.tw.tw-parent a.mention::before {
    content: "返信先:";
    margin-right: 3px;
    font-size: 0.9rem;
}
#re.tw.tw-parent a.mention::after {
    content: "さん\A";
}

/*ユーザー情報*/
#user_info_b {
    margin: 0px;
    text-align: center;
    position: relative;
    border:none;
}
/*「@」タブ隣の自分のタイムライン内のツイート*/
#tw2c .fromme .status {
    margin-right: 28px;
}

/*メインタイムラインほかの背景色*/
#tw,#tw2c.tw-parent,#re{
    background-color:white;
}

/* 自分宛のツイートの背景色 */
.tome { background-color:white; }

/* 自分のツイートの背景色 */
.fromme {background-color: white;}

/* 選択されたツイートの背景 */
.selected,#tw .selected .status,#tw2 .selected .status,#re .selected .status{
    background-color: #efefef;
}

/*ツイートの枠*/
.tw-parent > div > div {
    margin: 2px 5px 3px 5px;
    border-bottom: 1px solid silver;
}
#tw > div {
    border-bottom: none;
}

/*投稿アプリの非表示*/
.separator,.source {
  display: none; 
}

/*返信(リプライ)*/
a.button.reply::before {
  content: "返信";
  font-size:0.8rem;
  margin-left:15px;
}

/*前の発言*/
a.button.inrep::before{
  content: "前の発言";
  font-size:0.8rem;
  margin-left:12px;
}

/*引用ツイート内のジャンプ*/
a.button.inrep.overlay::before{
  content: "";
  font-size:0;
  margin-left:0;
}

/* 右下の▼マーク */
.popup {
    padding: 0px 8.7px 0px 6px;
    color: #888;
}
small {
    font-size: 0.9rem; /*▼の大きさ*/
}
/*右下▼マークからのポップアップメニュー*/
.popup_menu {
    display: none;
    position: absolute;
    left: 0;
    top: 200px;
    z-index: 6;
    width: 220px;
    font-size: smaller;
    padding: 1px;
    border: none;
    background-color:rgba(0,0,0,0);
}
.popup_menu a {
    background-color: #ffffff;
    color: #000000;
    text-decoration: none;
    padding: 6px 5px 6px 10px;
    font-size: 0.8rem;
    border-radius: 8px;
    border-bottom: black 1px solid;
    box-shadow: 2px 2px 2px 1px #383c65;
}
a.button.popup::before {
    content: none;
}
#popup hr{display:none;}
/*ポップアップ時の画面全体を隠す影*/
}
#popup_hide {
    background-color: #258dff;
}
/*以下、ポップアップメニューの非表示*/
/*「このユーザを抽出」を非表示*/
#regexp_add_ID{display:none;}
/*「1時間ツイートを隔離」を非表示*/
#isolate_menu{display:none;}
/*「RT:を付けて引用」を非表示*/
#popup_status_quote{display:none !important;}
/*「Twitter / ユーザ」を非表示*/
#popup_link_user{display:none;}
/*「Twitter / ツイート」を非表示*/
#popup_link_status{display:none;}

/* NGワードを有効にする */
a#pickup-NG{display:none;}

/*写真・動画拡大画面へのジャンプ*/
a.button::before {
    content: "Popup View";
    font-size: 0.7rem;
    margin-left: 3px;
}

/*写真・動画拡大画面の「⇔」の非表示*/
#rep a.close.both{display:none;}

/*写真・動画拡大画面の「☓」ボタンの左寄せ。スマホの場合、いいねマークの誤タップを防ぐためにこちらのほうがよい*/
#reps {
    margin-bottom: 10px;
    } 
#reps img {
    max-width: 94%!important;
}
#reps video {
    max-width: 94%!important;
}

/*写真・動画拡大画面の「☓」ボタンの右寄せ。ただし、スマホだと、いいねを誤タップする恐れが高くなる。*/
/* #reps {
    margin-top: 26px;
    margin-bottom: 10px;
    }
#reps img {
    max-width: 94%!important;
}
#reps video {
    max-width: 94%!important;
}
#rep a.close.cl{float:right;}
*/

LaTeXの細かい設定(再定義)

元のclsファイルなどを検索

使用している、元となるclsファイルなどがどこにあるかを $ kpsewhich 〜.cls で探す。例えば、Lualatex(LuaTeX-ja)で ltjsarticle.cls の場合。

$ kpsewhich ltjsarticle.cls
/usr/local/texlive/2018/texmf-dist/tex/luatex/luatexja/ltjsarticle.cls

自分のstyファイルを作成する。

原稿.texのプリアンブルで再定義してもいいのだけど、できるだけ内容と装飾は分離して、原稿.texのほうはすっきりさせたいので、自分のstyファイルを作成する。

1.前述の ltjsarticle.cls ファイルをテキストエディタ(僕の場合、geany)で開く。

$ geany /usr/local/texlive/2018/texmf-dist/tex/luatex/luatexja/ltjsarticle.cls

2.変えたい設定の定義のところっぽいところを見つけて、コピー。

3.コピーした箇所を、新規ファイルにペーストして、任意のスタイルファイル(例:adbird.sty など)にして保存。保存先はコンパイルする原稿.texと同じフォルダ内でOK。

変更したい箇所が

\def\@〜{
…
…
}

のように@を含む場合、直前に makeatletter を直後に makeatother を書く。

makeatletter
\def\@〜{
…
…
}
makeatother

LaTeX文書のプリアンブルなどで「@」を含むようなコマンドが現れるような定義・再定義を行う場合には、その定義・再定義の部分に \makeatletter を置く必要があり、定義・再定義が済んだら、\makeatother を用いて \makeatletter の効果を取り消すことになるという点に注意してください。(吉永 徹美『LaTeX2e辞典~用法・用例逆引きリファレンス』翔泳社、2009)

\newcommand{\〜}{〜}

の箇所は

\renewcommand{\〜}{〜}

にする。

あとは根気よくトライ・アンド・エラーを繰り返しながら、スタイルファイルをいじっていく。

原稿.tex

\documentclass[11pt,a4paper]{ltjsarticle}

\usepackage{adbird}%作成したstyファイル名を書く(拡張子は必要ない)

\title{}
\date{}
\author{}

\begin{document}

\end{document}

PDFに簡単な文字入力

ある既存の単一ページのPDFデータに、ちょっとしたタイトルめいたテキストをページの上部に入れたいときに。

Pandoc、wkhtmltopdf、pdftkが必要。

スクリプト(textinpdf.sh)

テキストエディタで、以下の内容をtextinpdf.sh として保存。

#挿入したい文字列をtextinpdf.mdに保存
touch textinpdf.md
echo %mdtitle >> textinpdf.md
echo "$1" >> textinpdf.md

#pandocでmdをhtmlに変換、調整。フォントサイズ等の変更はこちら。
pandoc textinpdf.md -s -o textinpdf.html
sed -i '/header/d' textinpdf.html
sed -i '/h1 class/d' textinpdf.html
sed -i -e 's/<p>/<p style="font-family:'IPAexゴシック';font-size:15pt;">/g' textinpdf.html

#wkhtmltopdfでpdfに変換。
wkhtmltopdf --disable-smart-shrinking --margin-top $2 --margin-left $3 textinpdf.html textinpdf.pdf

#textinpdf.pdfを背景として重ねる。
pdftk $4.pdf background textinpdf.pdf output $4_`date +%Y%m%d`.pdf

#不必要なファイルを削除。
rm -f textinpdf.md
rm -f textinpdf.html
rm -f textinpdf.pdf

実行

上記 textinpdf.sh を、文字を入れたいPDFデータ(ここでは Test.pdf )と同じフォルダ内に入れて、

 $ sh textinpdf.sh "ここにテキスト" 13 20 Test

を実行。

  • "ここにテキスト" :ダブルクォート(" ")の中にテキストを書く。
  • 13       :ページ上からの位置。
  • 20       :ページ左からの位置。
  • Test      :文字列を入れたいPDFデータの名前。拡張子はいらない。

お年玉付き年賀【切手】

あけましておめでとうございます。

年が明けて、返信のための無地の年賀ハガキを求めて、近所の郵便局を2軒まわったけど、インクジェット用の無地はあっても普通紙の無地が完売していた…。

カラー印刷なんてどうせ年賀状印刷(印刷枚数も少ない)のときだけだし…ということで、僕の家にあるのはモノクロのプリンタしかない。

年賀状は年賀ハガキ(普通紙の年賀ハガキ)をセブンイレブンに持ち込んで、通信面をカラー印刷(GIMPなどでデザインして、PDFかJPGデータにしてUSBメモリに入れていく)して、宛名面だけを自宅のモノクロプリンタで印刷している。

セブンイレブンでのハガキプリントではインクジェット用ハガキは使えないので、普通紙・無地の年賀ハガキがないのは困った…。

郵便局には、くまモンのイラストの入っている普通紙の年賀ハガキは残っていたのだけど、すでに無地を想定して年賀状デザインを作っているし、鹿児島県人の僕が熊本のくまモンのデザインを使うのはどうなのよ…ということで却下。

どうしようと考えて、ふと「年賀ハガキではなく、もしかしたら、年賀切手というのがあるんじゃないのか?」とスマホで検索したら、やはりあった!

しかも、寄付金3円分だけ高くなるけど、「寄附金付お年玉付年賀郵便切手」というのがある!

寄附金付お年玉付年賀郵便切手を買って(寄付金付きが付いていない年賀切手は売り切れていた)、印刷面をセブンイレブンで印刷(切手の貼っていないハガキは自分で用意する必要なく、セブンイレブンのマルチコピー機にすでに「備え付けはがき」がセットされている)。
自宅で宛名を印刷して、貼った年賀切手の下に赤で「年賀」と書いてポスト投函。

レーザープリンタセブンイレブンでの年賀状印刷を想定しているのに、無地の普通紙の年賀ハガキがなかった場合、年賀切手という手がありますよ、というお話でした。