PCで遊んだ日々の備忘録

Making PC and Customization PC

Ubuntu Firefox で Markdownファイルを表示する

Firefoxアドオン Markdown Viewer Webext はマークアップ言語の Markdown で記述されたテキストファイルをウェブブラウザ上に表示するドキュメント ビューアです。

下の画像は Ubuntu 18 Xfce のホームディレクトリに置いた Markdownファイルを Firefoxで開いた時のスクリーンショットです。

ご覧のようにウェブページ作成に用いるマークアップ言語の HTML タグを使うことなく単純な記号だけでホームページかのように表示されています。

しかし実はこのアドオン、Windows OS上では正常に動作するのですが Ubuntuや他の Linux OS上では正しく動作しません。

具体的にはウェブ上の Markdownドキュメントは閲覧できますが、ローカルにダウンロードした Readme.mdなどの Markdownファイルは何故か Firefoxで開けません。

そのため Gedit や Mousepad などのテキストエディタで記述したり編集した Markdownドキュメントの確認ができません。

従って、専用の Markdownエディタを導入することになりますが、ちょっとした How toメモを残す程度に使用する管理人には大袈裟すぎます。

そこで今回、開けない原因と Windowsのように Ubuntuでもこのアドオンを有効にする方法が分かったので紹介します。(2019/10)

現象 と 原因

Ubuntu 18.04LTS のローカル(ホームディレクトリ)に置いた Markdownファイル(.md)が Firefox Quantum 69 で次のようなダイアログが表示され開けない。

次のファイルを開こうとしています:

ファイル名.md
ファイルの種類:Markdown(1.2KB)
ファイルの場所:/home/fuukemn

このファイルをどのように処理するか選んでください
 ●プログラムで開く(O): Firefox ウェブ・ブラウザ(既定) 
 

ここで OK ボタンを押しても何も表示されません。

このダイアログから察すると Firefoxは .mdファイル を未知の不明なファイルと認識している模様です。

Markdownファイルの MIME(Multipurpose Internet Mail Extension)タイプのデータベースがユーザーディレクトリに存在しないので Firefoxが拡張子 .mdを Markdownドキュメントと認識できないためです。

MIMEタイプはウェブ上で文書やファイルを扱うための識別子で、ローカルで文書やファイルを識別する拡張子のようなものです。

例えば 下表の

ファイル名 .拡張子 MIMEタイプ
マークダウン.md プレーンテキスト.txt など text/plain
HTMLファイル.html や .htm など text/html
動画.mp4 video/mp4
ミュージック.mp3 audio/mpeg
画像.jpg image/jpg

のように各々対応しています。

Ubuntuなど Linux版の Firefoxは Windows版のように拡張子ではなく MIMEタイプで読み込んだファイルの処理を決定しています。

ちなみに、システムの MIMEデータベースは / usr / share / mime / packages /にあり MarkdownのMIMEタイプは freedesktop.org.xmlファイルに次のような記述があります。

	⋮
	前略
<mime-type type="text/markdown">
    <comment>Markdown document</comment>
    <comment xml:lang="ast">Documentu Markdown</comment> 
	中略
    <sub-class-of type="text/plain"/>
    <glob pattern="*.md"/>
    <glob pattern="*.mkd"/>
    <glob pattern="*.markdown"/>
    <alias type="text/x-markdown"/>
  </mime-type>
	後略
	⋮
 

このような .xmlファイルをユーザーのホームディレクトリに作成する必要があります。

補足|MIMEタイプの概要

下記は MIMEタイプの概要について ORACLE Documentation からの引用です。

MIME (Multipurpose Internet Mail Extension) タイプは、ファイルの書式を特定します。アプリケーションは、MIME タイプによってファイルを読み取ることができます。

Web ブラウザや電子メールなどのアプリケーションは、MIME タイプを使用して異なるタイプのファイルを扱います。

中略

ファイルマネージャは MIME タイプを使用してファイルの種類を識別します。ファイルマネージャは、以下のタスクを実行するために MIME タイプを知る必要があります。

  • 正しいアプリケーションでファイルを開く
  • ファイルのタイプを説明する文字列を表示する
  • ファイルを表す適切なアイコンを表示する
  • そのファイルを開くことが可能な別のアプリケーションのリストを表示する

新しいアプリケーションをデスクトップに追加する場合は、そのアプリケーションに関連付けられるファイルを、ほかのアプリケーションが認識できる必要があります。

新しいアプリケーションが新しい MIME タイプを必要としているかどうかを確認し、新しいアプリケーションによって新しい MIME タイプが確実にインストールされるようにする必要があります。

後略

引用文中の「ファイルマネージャ」の部分を Firefoxに置き換えてみてください。参考まで。

▲ 目次へ

対処方法 1: deb版

対処方法は Firefoxアドオン Markdown Viewer Webext のホームページですぐに見つかりました。

このページの最下段にあるソースコードを、所定の場所に置いて MIMEデータベースにアップデートするだけです。実機 の Ubuntu 18 Xfce で検証しました。

MIMEタイプを追加(アップデート)する

以下、リンク先ホームページからの引用です。

Firefox on Linux may not know how to handle markdown files by default (see #2). A workaround for this is to add a new MIME type for markdown file extensions. Add the following XML to ...

直訳すると

Linux上のFirefoxはデフォルトでMarkdownファイルの処理方法を認識していない場合があります(#2 を参照)。これを回避するにはマークダウンファイル拡張子に新しいMIMEタイプを追加します。次のXMLを追加します...

自動翻訳なので分かりにくい日本語ですがそこはご容赦。

それではまず XMLファイルを置くディレクトリ(≒フォルダ)を作成します。端末から

xfce4-terminal :

 $ mkdir -p ~/.local/share/mime/packages 

を実行すると / home /ユーザー名 / .local / share / ディレクトリの下に / mime / が、その下に / packages / が作成されます。

注意|既に mimeディレクトリに動画などの MIMEタイプが存在している場合があるのでコマンド実行の前に確認すること。下の画像はサブPCに導入している CentOSのスクリーンショットです。

CentOSのホーム mimeフォルダを開いた画像

CentOS 6.10 32-bit Desktop

ご覧のように既に動画の MIMEデータベースが存在していました。このような場合は次のコマンドから始めること。

続けて

 $ touch ~/.local/share/mime/packages/text-markdown.xml 

を実行すると空のファイル text-markdown.xml が作成されるので、このファイルをテキストエディタで開き下記を記述して保存します。

Mousepad :

<?xml version="1.0"?>
<mime-info xmlns='http://www.freedesktop.org/standards/shared-mime-info'> 
  <mime-type type="text/plain">
    <glob pattern="*.md"/>
    <glob pattern="*.mkd"/>
    <glob pattern="*.markdown"/>
  </mime-type>
</mime-info>
 

最後に次のコマンドを実行すれば MIMEタイプのアップデートの完了です。

 $ update-mime-database ~/.local/share/mime 

下の画像は上記一連のスクリーンショットです。

ここで行った作業を大雑把に言うと「 ワイルドカード付拡張子(glob:グロブ)を MIMEタイプのデータベースに登録した 」です。

これで Firefoxは Markdownドキュメントを認識し、HTMLの構文書式に変換してホームページのようにレンダリング (表示)します。

▲ 目次へ

対処方法 2: snap版

(2023年9月 追記)

snap版は OSから切り離されており、パッケージ単体で完結しているため deb版で作成したmimeファイルを参照できません。ホームディレクトリの snapフォルダ内にmimeファイルを作成し、Firefoxにそのパスを設定します。

まず、mimeファイルを作成します。端末から

 $ touch ~/snap/firefox/common/mime.types 

mime.typesファイルを開き下記を記述して保存します。

gedit :
type=text/plain exts=md,mkd,mkdn,mdwn,mdown,markdown, desc="Markdown document" 

次に、Firefoxを起動してアドレスバーに about:config と入力して高度な設定を開きます。検索窓に

helpers.private_mime_types_file

を入力するとデフォルトのパス ~/.mime.types が表示されるので

ペンのアイコンをクリックして、作成した mime.typesファイルのパスに書き換えます。

/home/ユーザー名/snap/firefox/common/mime.types 
 

右端の ✅ をクリックして編集を確定します。

ここで注意、 ~/snap/firefox/common/mime.types とホームディレクトリを ~ で省略型にしてしまうと有効になりません.。

Firefoxを再起動します。

これで Firefoxは Markdownドキュメントを認識し、HTMLの構文書式に変換してホームページのようにレンダリング (表示)します。

参考:Markdown in Firefox

▲ 目次へ

雑感

実は管理人が Markdownマークアップ言語を知り、使うようになったのは 2019年になってからのことでした。

それまでメモ帳代わりにテキストファイルに拡張子.txtを付けて使っていました。これは Windowsと共有するためです。(Linux OSでは Windows的な拡張子の概念はないので必要ありません)

この .txtファイルは、見出しやタイトル、本文のフォントタイプとフォントサイズが同じなので正直なところ見やすいとは言い難い代物です。

それに比べて拡張子 .mdの Markdownファイルは ウェブブラウザ表示を目的に作られているので見やすさ読みやすさに格段の差があります。

構文書式が単純で設計思想が HTMLと同じなので日常的に HTMLとCSSを手打ちでマークアップしてる管理人にはすんなり受け入れられ、重宝しています

下表は実機で開けるのを確認したその他の Linux OSです。

Ubuntu 20.04 LTS 64-bit Firefox Browser 77.0.1
Ubuntu 16.04 LTS 64-bit Firefox Quantum 69.0.2
Debian 9 Strech 64-bit Firefox Quantum 60.9.0 ESR
CentOS 6.10 32-bit Firefox Quantum 60.9.0 ESR

CentOSが文字化けしているのは Firefox日本語ランゲージパックをインストールしていないためです。

Markdownの基本的な構文書式や拡張構文などは Markdown Guide のサイト(下画像)で公開されています。

下の画像は上記サイトの構文書式 (Syntax)の詳細ページのスクリーンショットです。

ご覧のように英語のサイトですが HTMLの対比表や Cheat Sheet(クイックリファレンス)があるのでとても分かりやすいです。

下の画像は Firefoxアドオンマネージャーのスクリーンショットです。

下記は、GitHubとアドオンマネージャーからの引用です。

Markdown is a lightweight markup language which uses plain text to describe formatting information, such as # Heading, 1. numbered list, **bold**, etc.

This add-on identifies markdown documents by the extension in the URL (.md, .markdown, etc.).

When you navigate to a markdown document, if the content is plain text, this add-on formats it into HTML (with headings, bold text, etc.) as described in the document and displays it directly in your browser.

これを直訳すると

Markdownは、#見出し、1。番号付きリスト、**太字**などの書式情報を記述するためにプレーンテキストを使用する軽量のマークアップ言語です。

このアドオンは、URLの拡張子(.md、.markdownなど)によってマークダウンドキュメントを識別します。

マークダウンドキュメントに移動するとき、コンテンツがプレーンテキストの場合、このアドオンはドキュメントの説明に従ってHTMLにフォーマットし(見出し、太字など)、ブラウザーに直接表示します。

HTMLマークアップ言語を理解していないと意味が分からないですよね。

▲ 目次へ

クリエイティブ・コモンズ・ライセンス
Top of Pageの画像
sidemenuの画像