basyura's blog

あしたになったらほんきだす。

Inkdrop - 空白調整

先に結果

before after

狭くしたい

特に Distraction Free 表示 (サイドバーとノート一覧を非表示) にして使う場合などにタイトル部やメタ情報の領域の空白が気になってしまう。でかいモニターを使えば気になくなりそうではあるけど、でかいモニターを使うと目がしんどいので 21.5 inch にとどめている。そろそろもう少し大きくしても大丈夫ではと思っているけど、検証が難しい。買って無駄になるのも辛いし。

Styles.less

いじればいけるとは思うのだけどうまくいかない。右上 X の下にある の位置がうまくいかない。単純に .editor-meta-tags の位置を上げると X と被る上に絶妙に押せない。うまく押せないと X でウインドウが閉じてしまう。いっそのこと X を消して調整も試みたけどしっくりこない。

init.js

css でうまくいかないので js で。ボタンを取り出して .note-tags-bar-input にぶち込む。

inkdrop.onEditorLoad((_) => {
  const more = document.querySelector(".editor-header-more button");
  more.style.position = "absolute";
  more.style.marginLeft = "-25px";
  more.style.background = "none";
  more.style.border = "none";
  more.style.cursor = "pointer";

  const g = more.querySelector("g");
  g.setAttribute("stroke", "darkgray");

  const tags = document.querySelector(".note-tags-bar-input");
  tags.appendChild(more);
});

まとめ

まんぞく。

ChatGpt : Enter で送信したくない - 20240523

また変わった。fruitjuice とは。

- let ele = document.querySelector("button[data-testid='send-button']")
+ let ele = document.querySelector("button[data-testid='fruitjuice-send-button']")

全体

// ==UserScript==
// @name         ChatGPT
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  try to take over the world!
// @author       You
// @match        https://chat.openai.com/*
// @match        https://chatgpt.com/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=chatgpt.com
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    document.body.addEventListener('keydown', function(e) {

        // Enter キー以外は何もしない
        // Mac の vivaldi でのアドレスバー等での予測変換の考慮を karabiner-elements を設定しているため。
        if (e.key != 'Enter' && e.key != ']') {
            return;
        }

        // 送信 (ctrl + enter) じゃない、または変換中はイベント中断
        if (!e.ctrlKey || e.isComposing) {
            e.stopPropagation();
            return;
        }

        // イベント発生元がテキストボックスじゃない場合
        if (e.srcElement.id != "prompt-textarea") {
            return;
        }

        // 送信ボタンをクリック
        let ele = document.querySelector("button[data-testid='fruitjuice-send-button']")
        ele.click();

    }, { capture: true });
})();

ChatGpt : Enter で送信したくない - 2024/05/15

※ レイアウトがころころ変わりそうなのでシリーズ化しそう。

ChatGPT-4o がリリースされてレイアウトが変わった。今回は送信ボタンであることが明示的に判断できるような属性がないけど、それっぽいのを使って特定するように変更。

-  let ele = document.querySelector("button[data-testid='send-button']")
+  let ele = document.querySelector("button.mb-1")

全体

// ==UserScript==
// @name         ChatGPT
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  try to take over the world!
// @author       You
// @match        https://chat.openai.com/*
// @match        https://chatgpt.com/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=chatgpt.com
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    document.body.addEventListener('keydown', function(e) {

        // Enter キー以外は何もしない
        // Mac の vivaldi でのアドレスバー等での予測変換の考慮を karabiner-elements を設定しているため。
        if (e.key != 'Enter' && e.key != ']') {
            return;
        }

        // 送信 (ctrl + enter) じゃない、または変換中はイベント中断
        if (!e.ctrlKey || e.isComposing) {
            e.stopPropagation();
            return;
        }

        // イベント発生元がテキストボックスじゃない場合
        if (e.srcElement.id != "prompt-textarea") {
            return;
        }

        // 送信ボタンをクリック
        let ele = document.querySelector("button.mb-1")
        ele.click();

    }, { capture: true });
})();

ChatGpt : Enter で送信したくない

Ctrl + Enter で送信したいんだー。

要件

  • Enter で改行する。
  • Ctrl + Enter で送信する。
  • Ctrl + Enter は Google IME の予測変換確定にしているので送信しない。
  • Mac の vivaldi はアドレスバーで予測変換確定 (Ctrl + Enter) するとナビゲーション(検索等)してしまうため、karabiner-elements を使って vivaldi だけ Ctrl + EnterCtrl + ] に置き換えている。

ChatGPT Ctrl+Enter Sender を使ったりもしたけど添付ができるようになったあたりから送信が微妙 (添付アイコンにフォーカスがあたる) になったりしたので自作して今に至る。

上記を満たすロジックを自分でコントロールできるように Tampermonkey で埋め込むことにした。

// ==UserScript==
// @name         ChatGPT
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  try to take over the world!
// @author       You
// @match        https://chat.openai.com/*
// @match        https://chatgpt.com/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=chatgpt.com
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    document.body.addEventListener('keydown', function(e) {
      
        // Enter キー以外は何もしない
        // Mac の vivaldi でのアドレスバー等での予測変換の考慮を karabiner-elements を設定しているため。
        if (e.key != 'Enter' && e.key != ']') {
            return;
        }

        // 送信 (ctrl + enter) じゃない、または変換中はイベント中断
        if (!e.ctrlKey || e.isComposing) {
            e.stopPropagation();
            return;
        }

        // イベント発生元がテキストボックスじゃない場合
        if (e.srcElement.id != "prompt-textarea") {
            return;
        }

        // 送信ボタンをクリック
        let ele = document.querySelector("button[data-testid='send-button']")
        ele.click();

    }, { capture: true });
})();