git: c8097885c460 - main - editors/remarkable: new port had been added (+)

From: Alexey Dokuchaev <danfe_at_FreeBSD.org>
Date: Fri, 26 Dec 2025 01:30:46 UTC
The branch main has been updated by danfe:

URL: https://cgit.FreeBSD.org/ports/commit/?id=c8097885c460c4c8eac1f36abe3dac8838ab64b2

commit c8097885c460c4c8eac1f36abe3dac8838ab64b2
Author:     Alexey Dokuchaev <danfe@FreeBSD.org>
AuthorDate: 2025-12-26 01:29:40 +0000
Commit:     Alexey Dokuchaev <danfe@FreeBSD.org>
CommitDate: 2025-12-26 01:29:40 +0000

    editors/remarkable: new port had been added (+)
    
    Fully featured markdown editor written in Python.
    
    WWW: https://remarkableapp.github.io/linux.html
---
 editors/Makefile                                   |  1 +
 editors/remarkable/Makefile                        | 54 +++++++++++++++++++++
 editors/remarkable/distinfo                        |  3 ++
 .../files/patch-remarkable_RemarkableWindow.py     | 15 ++++++
 editors/remarkable/pkg-descr                       |  6 +++
 editors/remarkable/pkg-plist                       | 55 ++++++++++++++++++++++
 6 files changed, 134 insertions(+)

diff --git a/editors/Makefile b/editors/Makefile
index bbbbf2a96a4c..116dd89a6a4b 100644
--- a/editors/Makefile
+++ b/editors/Makefile
@@ -250,6 +250,7 @@
     SUBDIR += py-pynvim
     SUBDIR += py-vim-bridge
     SUBDIR += rehex
+    SUBDIR += remarkable
     SUBDIR += retext
     SUBDIR += rubygem-neovim
     SUBDIR += sam
diff --git a/editors/remarkable/Makefile b/editors/remarkable/Makefile
new file mode 100644
index 000000000000..4c97f5067b4d
--- /dev/null
+++ b/editors/remarkable/Makefile
@@ -0,0 +1,54 @@
+PORTNAME=	${GH_PROJECT:tl}
+PORTVERSION=	1.95
+DISTVERSIONPREFIX=	v
+CATEGORIES=	editors python
+
+MAINTAINER=	danfe@FreeBSD.org
+COMMENT=	Free fully featured markdown editor
+WWW=		https://github.com/jamiemcg/Remarkable \
+		https://remarkableapp.github.io/linux.html
+
+LICENSE=	MIT
+LICENSE_FILE=	${WRKSRC}/LICENSE
+
+RUN_DEPENDS=	${PYTHON_PKGNAMEPREFIX}beautifulsoup>=0:www/py-beautifulsoup@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}markdown>=0:textproc/py-markdown@${PY_FLAVOR} \
+		webkit2-gtk_40>=0:www/webkit2-gtk@40
+# Note to `www/webkit2-gtk' maintainers: feel free to change flavor as needed
+
+USES=		gnome python:run shebangfix
+USE_GNOME=	pygobject3 gtk30 gtksourceview3
+SHEBANG_FILES=	bin/${PORTNAME}
+
+USE_GITHUB=	yes
+GH_ACCOUNT=	jamiemcg
+GH_PROJECT=	Remarkable
+
+NO_ARCH=	yes
+NO_BUILD=	yes
+
+# XXX: uncomment once ``install-desktop-entries.sh'' can handle %f in Exec
+#DESKTOP_ENTRIES=	"${GH_PROJECT}" "" "${PORTNAME}" "${PORTNAME} %f" \
+			"GNOME;Utility;" false
+
+post-patch:
+# Inhibit silly linuxish ``sys.path'' dances (unneeded on FreeBSD)
+	@${REINPLACE_CMD} -e '30,+33s,^,#,' ${WRKSRC}/bin/remarkable
+# Automagically adjust WebKit2 version to match RUN_DEPENDS above
+	@${REINPLACE_CMD} -e "/^gi\.require_version('WebKit2'/ \
+	    s,4\.[0-9],${_GET_WEBKIT_API_VERSION:sh}," \
+		${WRKSRC}/remarkable/RemarkableWindow.py
+# Where to look for resources on FreeBSD (respect ${DATADIR})
+	@${REINPLACE_CMD} -e "/^__remarkable_data_directories__ = / \
+	    s,'.*','${DATADIR}'," \
+		${WRKSRC}/remarkable_lib/remarkableconfig.py
+
+do-install:
+	${INSTALL_SCRIPT} ${WRKSRC}/bin/${PORTNAME} ${STAGEDIR}${PREFIX}/bin
+	cd ${WRKSRC} && ${COPYTREE_SHARE} "pdfkit remarkable remarkable_lib" \
+		${STAGEDIR}${PYTHON_SITELIBDIR}
+	cd ${WRKSRC}/data && ${COPYTREE_SHARE} "media ui" ${STAGEDIR}${DATADIR}
+
+_GET_WEBKIT_API_VERSION=	${MAKE} -C ${RUN_DEPENDS:Mwebkit2-gtk*:C,.*:,${PORTSDIR}/,:S,@, FLAVOR=,} -V API_VERSION
+
+.include <bsd.port.mk>
diff --git a/editors/remarkable/distinfo b/editors/remarkable/distinfo
new file mode 100644
index 000000000000..d59e1fbd474b
--- /dev/null
+++ b/editors/remarkable/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1727002073
+SHA256 (jamiemcg-Remarkable-v1.95_GH0.tar.gz) = 55f40ff0bc5b9269807e248e0fa849ee4aaf92d32f9b1350ed17bc85ccd3b030
+SIZE (jamiemcg-Remarkable-v1.95_GH0.tar.gz) = 132430
diff --git a/editors/remarkable/files/patch-remarkable_RemarkableWindow.py b/editors/remarkable/files/patch-remarkable_RemarkableWindow.py
new file mode 100644
index 000000000000..f42efca1a30e
--- /dev/null
+++ b/editors/remarkable/files/patch-remarkable_RemarkableWindow.py
@@ -0,0 +1,15 @@
+--- remarkable/RemarkableWindow.py.orig	2024-09-22 10:47:53 UTC
++++ remarkable/RemarkableWindow.py
+@@ -36,10 +36,10 @@ import pdfkit
+ import re, subprocess, datetime, os, webbrowser, _thread, sys, locale
+ import tempfile
+ import traceback
+-import styles
++from remarkable import styles
+ import unicodedata
+ import warnings
+-from findBar import FindBar
++from remarkable.findBar import FindBar
+ 
+ # Check if gtkspellcheck is installed
+ try:
diff --git a/editors/remarkable/pkg-descr b/editors/remarkable/pkg-descr
new file mode 100644
index 000000000000..c17ff80dae29
--- /dev/null
+++ b/editors/remarkable/pkg-descr
@@ -0,0 +1,6 @@
+Remarkable is a free fully featured markdown editor.  It has a syntax
+like Github flavored markdown.  With it you can write markdown and view
+the changes as you make them in the live preview window.  You can export
+your files to a variety of formats.  There are multiple styles available
+along with extensive configuration options so you can set it up exactly
+how you like.
diff --git a/editors/remarkable/pkg-plist b/editors/remarkable/pkg-plist
new file mode 100644
index 000000000000..7d9fa30c960a
--- /dev/null
+++ b/editors/remarkable/pkg-plist
@@ -0,0 +1,55 @@
+bin/remarkable
+%%PYTHON_SITELIBDIR%%/pdfkit/LICENSE
+%%PYTHON_SITELIBDIR%%/pdfkit/__init__.py
+%%PYTHON_SITELIBDIR%%/pdfkit/api.py
+%%PYTHON_SITELIBDIR%%/pdfkit/configuration.py
+%%PYTHON_SITELIBDIR%%/pdfkit/pdfkit.py
+%%PYTHON_SITELIBDIR%%/pdfkit/source.py
+%%PYTHON_SITELIBDIR%%/remarkable/AboutRemarkableDialog.py
+%%PYTHON_SITELIBDIR%%/remarkable/RemarkableWindow.py
+%%PYTHON_SITELIBDIR%%/remarkable/__init__.py
+%%PYTHON_SITELIBDIR%%/remarkable/configuration.py
+%%PYTHON_SITELIBDIR%%/remarkable/findBar.py
+%%PYTHON_SITELIBDIR%%/remarkable/markdown/extensions/AutoLink.py
+%%PYTHON_SITELIBDIR%%/remarkable/markdown/extensions/Checklist.py
+%%PYTHON_SITELIBDIR%%/remarkable/markdown/extensions/Highlighting.py
+%%PYTHON_SITELIBDIR%%/remarkable/markdown/extensions/MathJax.py
+%%PYTHON_SITELIBDIR%%/remarkable/markdown/extensions/Strikethrough.py
+%%PYTHON_SITELIBDIR%%/remarkable/markdown/extensions/Subscript.py
+%%PYTHON_SITELIBDIR%%/remarkable/markdown/extensions/Superscript.py
+%%PYTHON_SITELIBDIR%%/remarkable/markdown/extensions/__init__.py
+%%PYTHON_SITELIBDIR%%/remarkable/styles.py
+%%PYTHON_SITELIBDIR%%/remarkable/undobuffer.py
+%%PYTHON_SITELIBDIR%%/remarkable_lib/AboutDialog.py
+%%PYTHON_SITELIBDIR%%/remarkable_lib/Builder.py
+%%PYTHON_SITELIBDIR%%/remarkable_lib/Window.py
+%%PYTHON_SITELIBDIR%%/remarkable_lib/__init__.py
+%%PYTHON_SITELIBDIR%%/remarkable_lib/helpers.py
+%%PYTHON_SITELIBDIR%%/remarkable_lib/remarkableconfig.py
+%%DATADIR%%/media/MarkdownTutorial.md
+%%DATADIR%%/media/highlight.min.js
+%%DATADIR%%/media/highlightjs.default.min.css
+%%DATADIR%%/media/remarkable.png
+%%DATADIR%%/media/remarkable.svg
+%%DATADIR%%/ui/AboutRemarkableDialog.ui
+%%DATADIR%%/ui/PreferencesRemarkableDialog.ui
+%%DATADIR%%/ui/RemarkableWindow.ui
+%%DATADIR%%/ui/about_remarkable_dialog.xml
+%%DATADIR%%/ui/bold.png
+%%DATADIR%%/ui/image.png
+%%DATADIR%%/ui/italic.png
+%%DATADIR%%/ui/link.png
+%%DATADIR%%/ui/live_preview.png
+%%DATADIR%%/ui/new.png
+%%DATADIR%%/ui/open.png
+%%DATADIR%%/ui/preferences_remarkable_dialog.xml
+%%DATADIR%%/ui/redo.png
+%%DATADIR%%/ui/remarkable.png
+%%DATADIR%%/ui/remarkable_window.xml
+%%DATADIR%%/ui/save.png
+%%DATADIR%%/ui/strikethrough.png
+%%DATADIR%%/ui/support.png
+%%DATADIR%%/ui/timestamp.png
+%%DATADIR%%/ui/undo.png
+%%DATADIR%%/ui/zoom-in.png
+%%DATADIR%%/ui/zoom-out.png