タイトルバーに「「書き込み禁止」表示がほしい

  1. ウインドウ上部のファイル名を表示するタイトルバーに「書き込み禁止」の表示があった方が便利だと思いました。

    F:\TEXT\01\ネットワーク.txt[読み取り専用]-TeraPad

    F:\TEXT\01\ネットワーク.txt(上書き禁止)-秀丸
    ---
    Mery: 3.8.3 (x64)
    Onigmo: 6.2.0
    C/Migemo: 1.3
    Tidy: 5.8.0
    Hunspell: 1.7.1
    uchardet: 0.0.8
    QuickJS: 0.13.0
    アウトライン: 3.2.5 (Outline.dll)
    お気に入り: 2.4.0 (Favorites.dll)
    EditorConfig: 1.0.4 (EditorConfig.dll)
    半角/全角変換: 2.4.0 (Conversion.dll)
    OS: Windows 10 (Version 22H2, OS Build 19045.4780, 64-bit Edition)

     |  Peggy  |  返信
  2. ご意見ありがとうございます。

    タイトルバーの表示内容については、これまでにも何度か検討しています。

    秀丸エディタさんなどでタイトルバーにそのような表記が付く仕様は認識していますが、個人的にはタイトルバーが少し賑やかになりすぎてしまうのがあまり好みではなく、Mery では [書き換え禁止] はタイトルバーには表示せず、タブのアイコンやステータスバーで分かるようにしています。

    すでにタブやステータスバーに書き換え禁止モードが表示されているので、さらにタイトルバーにも追加すると、少し情報が多くなりすぎるかな…というのが今のところの考えです。(一目でファイル名が把握しづらくなる可能性もあり)

    > ウインドウ上部のファイル名を表示するタイトルバーに「書き込み禁止」の表示があった方が便利だと思いました。
    >
    > F:\TEXT\01\ネットワーク.txt[読み取り専用]-TeraPad
    >
    > F:\TEXT\01\ネットワーク.txt(上書き禁止)-秀丸

    確認してみたところ、TeraPad さんの「読み取り専用」は「書き換え禁止」とは少し意味が異なるようです。

    ※「読み取り専用」はファイル属性、「書き換え禁止」はエディター側の機能です。

    タイトルバーに「読み取り専用」と表示されるのは、読み取り専用属性が付いたファイルを開いたときのみで、[編集] メニューから [書き換え禁止] を実行した場合はタイトルバーの表示は変わりませんでした。

    一方、秀丸エディタさんでは、読み取り専用属性と上書き禁止モードのどちらの場合でも、タイトルバーに「上書き禁止」が表示されるようです。

    参考までに、他のエディターの挙動はこんな感じです。

    読み取り専用の表示あり

    • 秀丸エディタさん
      ファイル名 (上書き禁止) - 秀丸
    • サクラエディタさん
      ファイル名 - サクラエディタ (上書き禁止)
      ファイル名 - サクラエディタ (ビューモード)
      ※ 読み取り専用ファイルと書き換え禁止で表記が異なります
    • TeraPad さん
      ファイル名 [読み取り専用] - TeraPad
      ※ [書き換え禁止] は表示なし
    • WZ Editor さん
      ファイル名(閲覧) -WZ10
    • MIFES さん
      MIFES 11 - [ファイル名(読み取り専用)]
    • Vim
      ファイル名 = (フォルダー名) - GVIM
      ※ 読み取り専用時は「=」が付く?
    • Visual Studio 2022/2026
      ファイル名 [読み取り専用] - Microsoft Visual Studio
      ※ タイトルが重複表示される場合あり (不具合かも?)

    読み取り専用の表示なし

    • EmEditor さん
    • TEditorMX さん
    • Notepad++
    • Sublime Text
    • Visual Studio Code
    • 新しいメモ帳
    • メモ帳

    ご要望が多ければ対応も検討してみたいと思っていますので、ぜひみなさんのご意見をお聞かせください。

    [書き換え禁止] の表示方法としては、たとえばこんなパターンが考えられます。

    • 表示しない
      → 見た目がすっきり
      → タイトルが長くならない

    • ファイル名 [書き換え禁止] - Mery
      → 分かりやすさ重視

    • ファイル名 [書禁] - Mery
      → 文字数を抑えた簡易表示

    また、変更ありを示すダーティインジケーター * との組み合わせも悩ましいところです。

    • ファイル名 * [書禁] - Mery
    • ファイル名 [書禁] * - Mery

    ちなみに、Visual Studio 2022/2026 では

    • ファイル名 [読み取り専用]* - Microsoft Visual Studio

    のように、読み取り専用の後ろに * が付く形式になっています。

    ファイル名、ファイルパス、ダーティインジケーター、アプリ名に加えて、さらに書き換え禁止の表示を入れると、少し情報が多くなりすぎる気もしていて、そのあたりのバランスは悩ましいところです。

    このあたりも含めて、みなさんのご意見を今後の参考にさせていただければと思います。

     |  Kuro  |  返信
  3. > ご意見ありがとうございます。
    > - 表示しない
    > → 見た目がすっきり
    > → タイトルが長くならない
    >
    > - `ファイル名 [書き換え禁止] - Mery`
    > → 分かりやすさ重視
    >
    > - `ファイル名 [書禁] - Mery`
    > → 文字数を抑えた簡易表示

    カッコと漢字だと少し圧が強いので、リードオンリーは-RO-、ライトプロテクトは-WP-、はどうでしょう?
    これなら見た目のすっきりさは、表示しないのとほぼ同等と思います。

     |  enaka  |  返信
  4. >ご要望が多ければ対応も検討してみたいと思っていますので、ぜひみなさんのご意見をお聞かせください。
    ファイル名&フォルダ名が長くなりがちで更に深いパスも多く
    モバイルノートパソコン方だとウインドウも最小限にしていてこれ以上広げたくないので
    >表示しない
    >→ 見た目がすっきり
    >→ タイトルが長くならない
    に一票
    もしくはオプション選択
    よろしくお願いします

     |  kiyohiro  |  返信
  5. >> enaka さん、kiyohiro さん

    ご意見ありがとうございます。

    > カッコと漢字だと少し圧が強いので、リードオンリーは-RO-、ライトプロテクトは-WP-、はどうでしょう?

    「-RO-」「-WP-」のような短い表記は、見た目がすっきりしていてタイトルバーにもなじみやすく、良い案だと思います。

    一方で、略語になる分、ぱっと見で意味が伝わりにくい可能性もあり (特に初見の方など)、分かりやすさとのバランスは悩ましいところですね。また、ファイル名の一部と誤認される可能性もありそうです。

    ちなみに現時点では、Mery ではリードオンリー (書き換え禁止) とライトプロテクト (読み取り専用) を区別しておらず、「書き換え禁止」モードのみとなっています。

    読み取り専用属性のファイルを開いた場合も、自動的に「書き換え禁止」モードになるだけで、内部的には同じ扱いです。

    > - ファイル名 [書禁] - Mery
    > → 文字数を抑えた簡易表示

    これは自分で案に挙げておいてなんですが、実際に [書禁] を付けて試してみると、「とある魔術の禁書目録」っぽく見えてしまい、どうも気になってしまいますね…^^;

    > - ファイル名 [書き換え禁止] - Mery
    > → 分かりやすさ重視

    こちらは分かりやすい反面、やはり長く、やや圧が強い印象です。

    > ファイル名&フォルダ名が長くなりがちで更に深いパスも多く
    > モバイルノートパソコン方だとウインドウも最小限にしていてこれ以上広げたくないので
    > >表示しない
    > >→ 見た目がすっきり
    > >→ タイトルが長くならない
    > に一票

    私も開発者としてではなく、いちユーザーとしては、現状の「表示なし」に一票です。

    > もしくはオプション選択
    > よろしくお願いします

    たしかに、需要が少なそうであれば隠しオプションにするのもよさそうですね。


    さらに調べてみたところ、秀丸エディタさんの仕様について新しい発見がありました。

    タイトルバーに「上書き禁止」とは別に、「読み取り専用」を表示するオプションがあるようです。

    ※ 用語の整理:

    • 「書き換え禁止」「上書き禁止」: エディター側の編集禁止機能
    • 「読み取り専用」: ファイル属性としての読み取り専用

    この場合、読み取り専用属性のファイルを開くと、

    ファイル名 (上書き禁止)(読み取り専用属性) - 秀丸
    

    のように表示されます。v8.89 以降で両者を区別できるようになったようです。

    【参考】https://log.maruo.co.jp/hidesoft/hidesoft_2/x2340256.html

    また、サクラエディタさんでも「上書き禁止」と「読み取り専用」は区別されているようですが、文言については賛否があるようで、Mery としては慎重に考えたほうがよさそうだと感じました。

    【参考】https://sakura-editor.sourceforge.net/cgi-bin/cyclamen/cyclamen.cgi?log=dev&tree=r5266

    一方で、TeraPad さんのように

    • 「書き換え禁止」は表示しない
    • 「読み取り専用」は表示する

    という割り切りも、ひとつの案としてはありかもしれません。

    書き換え禁止はタブやステータスバーで確認できますが、読み取り専用属性はタイトルバーに出さないと気づきにくい、という点もあります。

    Microsoft 製品でも、Visual Studio や Word ではタイトルバーに「読み取り専用」が表示されており、

    • 「書き換え禁止」(編集の制限) は表示しない
    • 「読み取り専用」は表示する

    という仕様になっていました。

    ただし、ファイルを開いている状態でエクスプローラーから読み取り専用属性を変更した場合、それをタイトルバーへリアルタイムに反映するのは難しそうです。

    (秀丸エディタさん、サクラエディタさん、TeraPad さん、Word でも反映されないようです。Visual Studio は反映されるようですが、ファイルを監視しているのかもしれません)

    というわけで、調べれば調べるほど、なかなか悩ましい問題ですね…

     |  Kuro  |  返信
  6. > - 表示しない
    > → 見た目がすっきり
    > → タイトルが長くならない

    [書き換え禁止] はタブのアイコンやステータスバーで分かるため、タイトルバーに表示する必要はないと思います。

    また、タイトルバーのファイル名をフルパスで表示している場合、[書き換え禁止] を表示することで情報量が多くなり過ぎて分かりづらくなると思います。

     |  MSY-07  |  返信
  7. >> MSY-07 さん

    ご意見ありがとうございます。

    > [書き換え禁止] はタブのアイコンやステータスバーで分かるため、タイトルバーに表示する必要はないと思います。

    おっしゃるとおりですね。さすがに 3 箇所に表示するほど重要な情報でもない気もしますし…。

    対応するとしたら、現時点では以下のような方向が無難かなと考えています。

    • エディター機能としての「書き換え禁止」は、タイトルバーには表示しない
      (ビューワー用途で頻繁に切り替えるケースもあり、表示が煩わしくなる可能性があるため)
    • 読み取り専用属性のファイルを開いた場合のみ、タイトルバーに [読み取り専用] を表示する隠しオプションを用意
      (「書き換え禁止」とは連動しません / Visual Studio や Microsoft Word に準拠。TeraPad さんに近い挙動のため、Peggy さんのご要望にも沿えるかと思います)
    • 併せて、「管理者として実行」の場合にタイトルバーに (管理者) を表示する隠しオプションも用意
      (おまけ的な位置付けです / Visual Studio や秀丸エディタさんに近い挙動)

    ひとまずはこのあたりで検討しています。

     |  Kuro  |  返信
  8. その後、さらに検討を進め、VSCode のように

    $(FileName)$(Dirty)$(FileAttr)$(Separator)$(AppName)$(Elevated)
    

    といったかたちでタイトルバーの書式を自由に指定できる仕組みも考えてみたのですが…。

    $(Dirty)*$(FileAttr)[読み取り専用] のように置換するところまでは問題なかったものの、表示の有無によって前後の半角スペース (自動で挿入するのかどうかも含めて) をどう扱うかが非常に厄介で、不要なスペースが残ったり逆に消えすぎたりするなど、どう整理しても安定した表示を保てず、現状ではうまく実現できそうにありません。

    隠しオプションとして実装するにしても、仕様をしっかり決めておかないと後から面倒なことになりそうで、やはりこの案件は少し根が深すぎると感じています。

     |  Kuro  |  返信
  9. Mery.ini を編集する隠し機能でかまいませんので、ファイルの属性を表示出来る機能を是非、実装してもらいたいと思います。
    0:表示なし
    1:(上書き禁止)
    2:[読み取り専用]
    3:[書禁]

     |  Peggy  |  返信
  10. >$(FileName)$(Dirty)$(FileAttr)$(Separator)$(AppName)$(Elevated)

    $(Year)、$(Month)、$(Day)、$(Week)、$(Hour)、$(Minute)、$(Second)、なども追加で(笑)
    スペース等が欲しい人は、" "、"("、")"、":"、のようにダブルクォーテーションで囲って任意の文字を定義することで、スペースは挿入も削除もしない、という仕様はどうでしょうか。
    サニタイズやエスケープが大変なので、表示文字としてダブルクォーテーションは使用不可で。

     |  enaka  |  返信
  11. 任意に設定できるようにすると実装には悩みますよね。拙作のMeryRowCol のプロパティの設定の表示文字を設定する方法なら比較的簡単にできます。表示ありの場合は文字を設定して最後に空白を追加していきます。最後まで設定したら最後の空白は削除します。
    この方法のネックはコンボボックスを複数設ける必要がある事です。

    今回なら、コンボボックスを6個用意して各コンボボックスの内容は以下とします。
    $(FileName)
    $(Dirty)
    $(FileAttr)
    $(Separator)
    $(AppName)
    $(Elevated)
    表示なし

    1個目が$(FileName)でそれ以外は表示なしの場合は[C:\123.txt]が表示されます。
    1個目が$(FileAttr)で2個目が$(FileName)でそれ以外は表示なしの場合は[読み取り専用] [C:¥123.txt]が表示されます。

    よろしくお願いします。

     |  大石剛司  |  返信
  12. 隠しオプションで設定するなら以下が簡単にいきそうな感じです。
    Mery.iniは最後の空白も設定できるので半角空白もユーザに設定してもらいます。また、必要な記号もユーザに設定してもらいます。
    プログラム的には順番に読み込んで変数を置き換えた後に、先頭から結合して行きます。

    [TitleBar]
    1=$(FileName)
    2=
    3=
    4=
    5=
    6=
    C:\123.txt

    [TitleBar]
    1=[$(FileName)]
    2=
    3=
    4=
    5=
    6=
    [C:\123.txt]

    [TitleBar]
    1=$(FileAttr)<半角空白>
    2=$(FileName)
    3=
    4=
    5=
    6=
    読み取り専用<半角空白>C:¥123.txt

    よろしくお願いします。

     |  大石剛司  |  返信
  13. 追加です。
    ファイル属性ですがファイラー的には「RHSA」になりますが「書込禁止(Protect)」を追加して「RHSAP」の表示が考えられます。「読込専用」なら「R---P」となります。参考にして下さい。
    よろしくお願いします。

     |  大石剛司  |  返信
  14. みなさんご意見ありがとうございます。

    > Mery.ini を編集する隠し機能でかまいませんので、ファイルの属性を表示出来る機能を是非、実装してもらいたいと思います。
    > 0:表示なし
    > 1:(上書き禁止)
    > 2:[読み取り専用]
    > 3:[書禁]

    なるほど。[上書き禁止]、[書禁]、[書き換え禁止] といった表示名についても、やはり好みが分かれる点が新たな課題として見えてきましたね。

    ただ、表示名のカスタマイズに対応しようとすると、実装の難易度は一気に上がりそうです。

    > スペース等が欲しい人は、" “、”(“、”)“、”:"、のようにダブルクォーテーションで囲って任意の文字を定義することで、スペースは挿入も削除もしない、という仕様はどうでしょうか。

    スペースを固定表示にしてしまうと、各項目が非表示の場合にスペースだけが残ってしまう問題があり、この点は少し気になっています。(気にしない方もいらっしゃるとは思いますが…)

    > Mery.iniは最後の空白も設定できるので半角空白もユーザに設定してもらいます。また、必要な記号もユーザに設定してもらいます。
    > プログラム的には順番に読み込んで変数を置き換えた後に、先頭から結合して行きます。

    なるほど。この方法ならスペースも含めてユーザー側で制御できるので、無駄なスペースが残る問題は解決できそうですね。

    > この方法のネックはコンボボックスを複数設ける必要がある事です。

    たしかにおっしゃるとおり、隠しオプションとしてであれば問題なさそうですが、標準機能として提供することになった場合は設定画面の UI で悩みそうですね。

    本件については、サクラエディタさんの事例と同様に賛否が分かれるテーマであり、きれいな落としどころを見つけるのはなかなか難しそう、というのが現段階での印象です。

    ちなみに、サクラエディタさんは本件に未対応だと思っていたのですが、調べてみると以下のような設定が用意されていました。

    • [共通設定] → [ウィンドウ] → [タイトルバー]
    ${w?$h$:アウトプット$:${I?$f$n$:$N$n$}$}${U?(更新)$} - $A $V ${R?(ビューモード)$:(上書き禁止)$}${M?  【キーマクロの記録中】$} $<profile>
    

    このように独自構文で柔軟に設定できる仕組みになっていました。

    これならスペースの問題や表示名の好みが分かれる問題も解決でき、UI も 1 行のテキストで済みますね。

    独自構文を学ぶ必要があるという点では、ややユーザー側の負担は増えますが、その分、柔軟性は非常に高い方式だと感じました。

    ${条件?文字列1$:文字列2$}
    

    といった形式で条件分岐も可能とのことで、非常に強力な仕組みです。

    ただ、現時点の私の技術力では、同様の仕組みを用意するのは難しそうです…。


    というわけで、ここで一度、これまでのご意見を踏まえて論点を整理してみます。

    • タイトルバーに「書き換え禁止」の状態を表示するかどうか
      → すでにタブやステータスバーで確認できるため、「表示しない」で良いという意見が比較的多い
    • 表示する場合の内容
      → 「書き換え禁止」「上書き禁止」「書禁」「RO/WP」「RHSAP」など、表記ゆれや好みの違いが大きい
    • 「書き換え禁止」と「読み取り専用」の扱い
      → 両者を区別して表示するか、あるいは「読み取り専用」のみ表示するか
    • カスタマイズ性の範囲
      → シンプルな固定仕様にするか、ある程度ユーザーさんに委ねるか (ただし柔軟にしすぎると実装や UI が複雑になる)

    このように整理してみると、

    • シンプルさを優先するなら「表示しない」
    • 必要最小限の情報として「読み取り専用のみ表示」
    • すべてに対応しようとするとカスタマイズ機能が必要になる

    といった方向性で検討することになりそうです。

    みなさんのご意見は今後の開発の参考にさせていただきたいと思います。

    とはいえ、現時点では決定的な仕様が見えていないため、本件についてはひとまず保留とし、対応する場合でも必要最小限の隠しオプションから検討することになりそうです。

    何かの拍子に妙案が浮かべば、実験的な機能として試してみるかもしれませんが、現状、ひとまずの区切りとしてはこのような状況です。

     |  Kuro  |  返信
スポンサーリンク