「変更の保存」モーダルダイアログボックスの「保存せずに閉じる」を使用することに起因する、不足しているキーボードアクセラレータ、およびこれらのダイアログボックスと対話する方法

「変更の保存」モーダルダイアログボックスの「保存せずに閉じる」を使用することに起因する、不足しているキーボードアクセラレータ、およびこれらのダイアログボックスと対話する方法

Windowsから来たので、私は「はい/いいえ/キャンセル」オプションと「Y」と「N」をキーボードアクセラレータ(ショートカット)として提供する非常に一般的な「変更の保存」モーダルダイアログボックスに慣れています。

Linuxでは、保存されていない文書を閉じてから「N」と入力してダイアログボックスを閉じようとすることがよくあります。しかし、うまくいきません。モードが異なるだけでなく(「保存せずに閉じる」と「いいえ」)、アクセラレータがまったくないようです。

私はSublime Textでこれを試しました。

ここに画像の説明を入力してください。

プラムボソーム:

ここに画像の説明を入力してください。

編集する:

ここに画像の説明を入力してください。

LibreOffice 作成者:

ここに画像の説明を入力してください。

これは、Linuxでのこの種の会話の一般的なパラダイムですか?その起源は何ですか? GTKが提供するダイアログボックスですか?

非常に一般的なダイアログでは、非常に非友好的であることがわかりました。どのボタンにフォーカスがあるかを確認するには、タブを使用する必要があります。使用されるテーマによっては、これが必ずしも明確ではありません。

なぜ加速器がないのですか?モーダルダイアログではサポートされていませんか?

私はそれについて考える必要なく、キーボードを介して自分の作業全体をキューに入れることができるように、一般的なモーダルパラダイム(少なくともGTKの場合)に慣れるように努めています。この例のセットでは、「タブ、エンター」として保存せずに閉じて閉じるようです。


Sublime Text が Windows では予想される Yes/No/Cancel ダイアログボックスを使用し、Linux では保存/キャンセル/保存なしで閉じるダイアログボックスを使用することが興味深いです (他のアプリと同様)。私はこれが必ずしも肯定的な決定だったかどうか疑問です。

答え1

このダイアログは実際にGtkによって提供されます。

アクセラレータはデフォルトでは表示されませんが、Alt押し続けると表示されます。 Geditでは、それぞれw「保存せずに閉じる」、c「キャンセル」、s「別名で保存...」に使用されます。Escキャンセルと保存を使用することもできますEnter

答え2

私はGTK / GNOMEがApple macOSとその祖先からかなり多くのヒューマンインターフェースデザインガイドラインを借りたと信じています。

私の考えでは、Macのダイアログには非常に厳しいデザインルールがあります。

  • Enterこれは常に「デフォルト/安全なタスクを実行する」(「保存」または「別名で保存」)のアクセラレータです。あなたの例では、「普遍的な例」​​と少し似ています。保存/別名で保存ボタンの枠線が太くなると、これが本当であることを示します。
  • Escこれは常に「停止、最終的にはこれをしたくない」ボタンです。あなたの例では、「キャンセル」に対応するボタンです。つまり、「ユニバーサルネガティブ(Universal Negative)」アクセラレータです。
  • ..そして「保存せずに閉じる」は破壊的なオプション(データ損失を招く)なので実際にはしなければならない他よりも選ぶのは難しいです。したがって、単一の汎用アクセラレータを得ることはできません。

読みたいかもしれませんクラシックマッキントッシュヒューマンインターフェースガイド文書または少なくともダイアログに関連する部分(フィードバックと会話PDFは33ページから始まり、6章フルダイアログは199ページから始まります。 )GTKがわずかに修正されたにもかかわらず、この古い文書はUIデザイナーが追求できるデザイン哲学を非常に明確に説明しています。

GNOMEには、独自のヒューマンインターフェースのガイドラインもあります。特に、アクセラレータ(と呼ばれる)を明確に定義します。アクセスキーAlt用語で)押しているときにのみ表示されます。

答え3

~について起源私は古典的なUNIXエディタ「vi」(および「vim」)のいくつかの例を紹介しました。

vimで "quit"コマンド "q"の後:

   E37: No write since last change (add ! to override)

これは赤(!)の下の行に表示されます。これで、q!(名前のない「バッファ」を実際にシャットダウン - まだファイルがありません)またはw my file(「マイファイル」ファイルとして書き込む(w! my file上書き))、必要なものを決定する必要がありますq。または続けてください。モーダルではなく、消えてしまうだけです。

(既存ファイルの場合は、wq次の場所に保存されます。既存のファイル作成後に終了)

より古典的な「vi」(1976年(!)ウィキペディアによると):

No write since last change (:quit! overrides) 

qはここに表示されません方法辞職する。で見つけることができますman ex

quit abbr: q
         Causes ex to terminate.  No automatic write of the editor buffer
         to a file is performed.  However, ex issues a warning message [...]

またはvimでh[elp] quit

:q[uit]      Quit the current window.  Quit Vim if this is the last
             window.  This fails when changes have been made [...]

Control-Cは以下を提供します(vimで再び):

Type  :qa!  and press <Enter> to abandon all changes and exit Vim

この記事を初めて読むと、間違った形の侮辱のように感じます。「qa」と入力してこの馬鹿。実際には、セミコロンはコマンドモードを表し、qaはすべてのファイル/ウィンドウ終了を表し、「!」は強制終了を意味します。

編集者を離れることは決して容易ではなく、可能ではありません。あなたの例もこれを証明します。

Alt最初の答え(表示されたキー)が主な問題を解決することを嬉しく思います。

「save(as)(...)」ボタン自体も非常に一貫性がありません。 sublimeとlibreofficeは、「New」ファイルまたは「Untitled 1」ドキュメントに直接書き込むようです。 Plumaには水玉模様はありません!ああ、わかりました。 「保存されていない文書1」と呼ばれます。したがって、「名前を付けて保存」とは、「名前を付けて保存」ではなく、「名前を付けて保存...」を意味します。誰が彼のフォルダにそのようなパラドックスをしたいですか?

私は言いたい:あなたは本当にそれを「Linux」と呼ぶことはできません有害。誰もが役に立つものを作ろうとしています。デスクトップ環境GUIから実行対象Linux。

キーボードで、私のタスク全体をキューに入れます。

うーん、端末でvimを使うのがいいと思います;)

それでは、vimをもっと作ることができるかどうか見てみましょう。おなじみ。赤の背景エラー行にはなりません...

関連情報