{ "version": "https://jsonfeed.org/version/1.1", "user_comment": "This feed allows you to read the posts from this site in any feed reader that supports the JSON Feed format. To add this feed to your reader, copy the following URL -- https://matoken.org/blog/tag/mastodon/feed/json -- and add it your reader.", "home_page_url": "https://matoken.org/blog/tag/mastodon", "feed_url": "https://matoken.org/blog/tag/mastodon/feed/json", "language": "ja", "title": "mastodon – matoken's blog", "description": "Is there no plan B?", "icon": "https://matoken.org/blog/wp-content/uploads/2025/03/cropped-1865f695c4eecc844385acef2f078255036adccd42c254580ea3844543ab56d9.jpeg", "items": [ { "id": "https://matoken.org/blog/?p=4557", "url": "https://matoken.org/blog/2025/05/15/i-want-to-get-trends-for-a-specific-language-with-mastodon/", "title": "Mastodon\u3067\u4efb\u610f\u306e\u8a00\u8a9e\u306e\u30c8\u30ec\u30f3\u30c9\u3092\u53d6\u5f97\u3057\u305f\u3044", "content_html": "

\n
\n

\u30bb\u30eb\u30d5\u30db\u30b9\u30c8\u30c0\u30c3\u30b7\u30e5\u30dc\u30fc\u30c9\u30a2\u30d7\u30ea\u306eGlance\u304c\u5148\u65e5v0.8.0\u304c\u30ea\u30ea\u30fc\u30b9\uff0e\u5927\u578b\u30a2\u30c3\u30d7\u30c7\u30fc\u30c8\u3055\u308c\u307e\u3057\u305f\uff0e

\n
\n
\n\n
\n

\n
\n

\u65b0\u6a5f\u80fd\u306e\u4e00\u3064\u306bCommunity widgets\u304c\u3042\u308a\u307e\u3059\uff0e\u3053\u308c\u306b\u3088\u308a\u5404\u7a2e\u306eJSON\u3067\u5e30\u3063\u3066\u304f\u308b\u30b3\u30f3\u30c6\u30f3\u30c4\u3092\u30ab\u30b9\u30bf\u30e0\u30a6\u30a3\u30b8\u30c3\u30c8\u3068\u3057\u3066\u8868\u793a\u3067\u304d\u305d\u3046\u3067\u3059\uff0ev0.8.0\u30ea\u30ea\u30fc\u30b9\u6642\u70b9\u3067\u3059\u3067\u306b40\u4ee5\u4e0a\u516c\u958b\u3055\u308c\u3066\u3044\u307e\u3059\uff0e
\n\u8a2d\u5b9a\u306fglance\u306eyaml\u306b\u66f8\u304f\u3060\u3051\u3067\u3059\uff0e

\n
\n
\n\n
\n
\n

\u3053\u306e\u4e2d\u306eMastodon\u306e\u30c8\u30ec\u30f3\u30c9\u3092\u8868\u793a\u3059\u308b\u3082\u306e\u304c\u3042\u308a\u307e\u3057\u305f\uff0e

\n
\n
\n\n
\n
\n

\u624b\u5143\u306e\u30a6\u30a7\u30d6\u30d6\u30e9\u30a6\u30b6\u3060\u3068\u65e5\u672c\u8a9e\u306e\u30b3\u30f3\u30c6\u30f3\u30c4\u304c\u8868\u793a\u3055\u308c\u308b\u306e\u306b\u3053\u306e\u30a6\u30a3\u30b8\u30c3\u30c8\u3060\u3068\u82f1\u8a9e\u306e\u3082\u306e\u306b\u306a\u308a\u307e\u3059\uff0e
\n\u6b21\u306eAPI\u3092\u5229\u7528\u3057\u3066\u3044\u308b\u3088\u3046\u3067\u3059\uff0eget\u306a\u3093\u304b\u3067lang=ja\u306e\u3088\u3046\u306b\u6307\u5b9a\u3067\u304d\u308b\u3068\u4fbf\u5229\u305d\u3046\u3067\u3059\u304c\u8a00\u8a9e\u9078\u629e\u306f\u306a\u3055\u305d\u3046\u3067\u3059\uff0e

\n
\n
\n\n
\n
\n

curl\u3067\u53e9\u304f\u3068\u82f1\u8a9e\u306b\uff0e

\n
\n
\n
\n
$ curl -s https://mastodon.social/api/v1/trends/links | jq . | head\n[\n  {\n    \"url\": \"https://arstechnica.com/tech-policy/2025/05/meta-is-making-users-who-opted-out-of-ai-training-opt-out-again-watchdog-says/\",\n    \"title\": \"Meta is making users who opted out of AI training opt out again, watchdog says\",\n    \"description\": \"EU users have less than two weeks to opt out of Meta\u2019s AI training.\",\n    \"language\": \"en\",\n    \"type\": \"link\",\n    \"author_name\": \"Ashley Belanger\",\n    \"author_url\": \"https://arstechnica.com/author/ashleybelanger/\",\n    \"provider_name\": \"Ars Technica\",
\n
\n
\n
\n

Accept-Language \u3067 ja \u3092\u6307\u5b9a\u3059\u308b\u3068\u65e5\u672c\u8a9e\u306b

\n
\n
\n
\n
$ curl -s -H 'Accept-Language: ja' https://mastodon.social/api/v1/trends/links | jq . | head\n[\n  {\n    \"url\": \"https://www.cnn.co.jp/fringe/35232941.html\",\n    \"title\": \"\u9577\u6642\u9593\u52e4\u52d9\u3067\u8133\u306e\u69cb\u9020\u304c\u5909\u5316\u3001\u8a8d\u77e5\u3084\u611f\u60c5\u5236\u5fa1\u306b\u5f71\u97ff\u3082\u3000\u97d3\u56fd\u8abf\u67fb\",\n    \"description\": \"\u9577\u6642\u9593\u52e4\u52d9\u304c\u7d9a\u304f\u3068\u8133\u306e\u69cb\u9020\u304c\u5909\u5316\u3057\u3066\u3001\u8a8d\u77e5\u6a5f\u80fd\u3084\u611f\u60c5\u5236\u5fa1\u306b\u5f71\u97ff\u3092\u53ca\u307c\u3059\u6050\u308c\u304c\u3042\u308b\u3068\u3044\u3046\u7814\u7a76\u7d50\u679c\u304c\u3001\uff11\uff13\u65e5\u306e\u533b\u5b66\u8a8c\u306b\u767a\u8868\u3055\u308c\u305f\u3002\u50cd\u304d\u904e\u304e\u308b\u3068\u8eab\u4f53\u7684\u3001\u7cbe\u795e\u7684\u306a\u7121\u7406\u304c\u91cd\u306a\u308a\u3001\u4f11\u990a\u4e0d\u8db3\u3082\u52a0\u308f\u3063\u3066\u8133\u306b\n  \u91cd\u5927\u306a\u5909\u5316\u300d\u304c\u8d77\u304d\u308b\u3068\u6307\u6458\u3057\u3066\u3044\u308b\u3002\",\n    \"language\": \"ja\",\n    \"type\": \"link\",\n    \"author_name\": \"\u7ffb\u8a33\uff1aCNN.co.jp\u7de8\u96c6\u90e8\",\n    \"author_url\": \"\",\n    \"provider_name\": \"CNN.co.jp\",
\n
\n
\n
\n

Accept-Language \u3067 fr \u3092\u6307\u5b9a\u3059\u308b\u3068\u30d5\u30e9\u30f3\u30b9\u8a9e\u306b\u306a\u308a\u307e\u3057\u305f\uff0e

\n
\n
\n
\n
$ curl -s -H 'Accept-Language: fr' https://mastodon.social/api/v1/trends/links | jq . | head\n[\n  {\n    \"url\": \"https://www.huffingtonpost.fr/justice/article/la-justice-prend-une-decision-inedite-pour-une-personne-trans-en-france_250035.html\",\n    \"title\": \"La justice prend une d\u00e9cision \u00ab\u00a0in\u00e9dite\u00a0\u00bb pour une personne trans en France\",\n    \"description\": \"Un homme trans, qui contestait en\u00a0justice\u00a0le refus de CPAM du Bas-Rhin\u00a0de prendre en\u00a0charge\u00a0sa mastectomie, a obtenu gain de cause au\u00a0tribunal\u00a0de Strasbourg.\",\n    \"language\": \"fr\",\n    \"type\": \"link\",\n    \"author_name\": \"\u00c9va Craine\",\n    \"author_url\": \"https://www.huffingtonpost.fr/author/eva-craine\",\n    \"provider_name\": \"Le HuffPost\",
\n
\n
\n
\n

\u3068\u3044\u3046\u3053\u3068\u3067\u3053\u306e\u3042\u305f\u308a\u3092\u898b\u3066\u5224\u65ad\u3057\u3066\u3044\u305d\u3046\u3067\u3059\uff0eGlance\u5074\u3067\u65e5\u672c\u8a9e\u3092\u8868\u793a\u3059\u308b\u306b\u306f\u672c\u4f53\u306esource\u3092\u4fee\u6b63\u3057\u306a\u3044\u3068\u3044\u3051\u306a\u3055\u305d\u3046\u3067\u3059\uff0e

\n
\n", "content_text": "\u30bb\u30eb\u30d5\u30db\u30b9\u30c8\u30c0\u30c3\u30b7\u30e5\u30dc\u30fc\u30c9\u30a2\u30d7\u30ea\u306eGlance\u304c\u5148\u65e5v0.8.0\u304c\u30ea\u30ea\u30fc\u30b9\uff0e\u5927\u578b\u30a2\u30c3\u30d7\u30c7\u30fc\u30c8\u3055\u308c\u307e\u3057\u305f\uff0e\n\n\n\n\nglanceapp/glance: A self-hosted dashboard that puts all your feeds in one place\n\n\nRelease v0.8.0 \u00b7 glanceapp/glance\n\n\n\n\n\n\u65b0\u6a5f\u80fd\u306e\u4e00\u3064\u306bCommunity widgets\u304c\u3042\u308a\u307e\u3059\uff0e\u3053\u308c\u306b\u3088\u308a\u5404\u7a2e\u306eJSON\u3067\u5e30\u3063\u3066\u304f\u308b\u30b3\u30f3\u30c6\u30f3\u30c4\u3092\u30ab\u30b9\u30bf\u30e0\u30a6\u30a3\u30b8\u30c3\u30c8\u3068\u3057\u3066\u8868\u793a\u3067\u304d\u305d\u3046\u3067\u3059\uff0ev0.8.0\u30ea\u30ea\u30fc\u30b9\u6642\u70b9\u3067\u3059\u3067\u306b40\u4ee5\u4e0a\u516c\u958b\u3055\u308c\u3066\u3044\u307e\u3059\uff0e\n\u8a2d\u5b9a\u306fglance\u306eyaml\u306b\u66f8\u304f\u3060\u3051\u3067\u3059\uff0e\n\n\n\n\nglanceapp/community-widgets: A collection of custom widgets for Glance made by the community\n\n\n\n\n\u3053\u306e\u4e2d\u306eMastodon\u306e\u30c8\u30ec\u30f3\u30c9\u3092\u8868\u793a\u3059\u308b\u3082\u306e\u304c\u3042\u308a\u307e\u3057\u305f\uff0e\n\n\n\n\nglanceapp/community-widgets: A collection of custom widgets for Glance made by the community\n\n\n\n\n\u624b\u5143\u306e\u30a6\u30a7\u30d6\u30d6\u30e9\u30a6\u30b6\u3060\u3068\u65e5\u672c\u8a9e\u306e\u30b3\u30f3\u30c6\u30f3\u30c4\u304c\u8868\u793a\u3055\u308c\u308b\u306e\u306b\u3053\u306e\u30a6\u30a3\u30b8\u30c3\u30c8\u3060\u3068\u82f1\u8a9e\u306e\u3082\u306e\u306b\u306a\u308a\u307e\u3059\uff0e\n\u6b21\u306eAPI\u3092\u5229\u7528\u3057\u3066\u3044\u308b\u3088\u3046\u3067\u3059\uff0eget\u306a\u3093\u304b\u3067lang=ja\u306e\u3088\u3046\u306b\u6307\u5b9a\u3067\u304d\u308b\u3068\u4fbf\u5229\u305d\u3046\u3067\u3059\u304c\u8a00\u8a9e\u9078\u629e\u306f\u306a\u3055\u305d\u3046\u3067\u3059\uff0e\n\n\n\n\ntrends API methods – Mastodon documentation\n\n\n\n\ncurl\u3067\u53e9\u304f\u3068\u82f1\u8a9e\u306b\uff0e\n\n\n\n$ curl -s https://mastodon.social/api/v1/trends/links | jq . | head\n[\n {\n \"url\": \"https://arstechnica.com/tech-policy/2025/05/meta-is-making-users-who-opted-out-of-ai-training-opt-out-again-watchdog-says/\",\n \"title\": \"Meta is making users who opted out of AI training opt out again, watchdog says\",\n \"description\": \"EU users have less than two weeks to opt out of Meta\u2019s AI training.\",\n \"language\": \"en\",\n \"type\": \"link\",\n \"author_name\": \"Ashley Belanger\",\n \"author_url\": \"https://arstechnica.com/author/ashleybelanger/\",\n \"provider_name\": \"Ars Technica\",\n\n\n\nAccept-Language \u3067 ja \u3092\u6307\u5b9a\u3059\u308b\u3068\u65e5\u672c\u8a9e\u306b\n\n\n\n$ curl -s -H 'Accept-Language: ja' https://mastodon.social/api/v1/trends/links | jq . | head\n[\n {\n \"url\": \"https://www.cnn.co.jp/fringe/35232941.html\",\n \"title\": \"\u9577\u6642\u9593\u52e4\u52d9\u3067\u8133\u306e\u69cb\u9020\u304c\u5909\u5316\u3001\u8a8d\u77e5\u3084\u611f\u60c5\u5236\u5fa1\u306b\u5f71\u97ff\u3082\u3000\u97d3\u56fd\u8abf\u67fb\",\n \"description\": \"\u9577\u6642\u9593\u52e4\u52d9\u304c\u7d9a\u304f\u3068\u8133\u306e\u69cb\u9020\u304c\u5909\u5316\u3057\u3066\u3001\u8a8d\u77e5\u6a5f\u80fd\u3084\u611f\u60c5\u5236\u5fa1\u306b\u5f71\u97ff\u3092\u53ca\u307c\u3059\u6050\u308c\u304c\u3042\u308b\u3068\u3044\u3046\u7814\u7a76\u7d50\u679c\u304c\u3001\uff11\uff13\u65e5\u306e\u533b\u5b66\u8a8c\u306b\u767a\u8868\u3055\u308c\u305f\u3002\u50cd\u304d\u904e\u304e\u308b\u3068\u8eab\u4f53\u7684\u3001\u7cbe\u795e\u7684\u306a\u7121\u7406\u304c\u91cd\u306a\u308a\u3001\u4f11\u990a\u4e0d\u8db3\u3082\u52a0\u308f\u3063\u3066\u8133\u306b\n \u91cd\u5927\u306a\u5909\u5316\u300d\u304c\u8d77\u304d\u308b\u3068\u6307\u6458\u3057\u3066\u3044\u308b\u3002\",\n \"language\": \"ja\",\n \"type\": \"link\",\n \"author_name\": \"\u7ffb\u8a33\uff1aCNN.co.jp\u7de8\u96c6\u90e8\",\n \"author_url\": \"\",\n \"provider_name\": \"CNN.co.jp\",\n\n\n\nAccept-Language \u3067 fr \u3092\u6307\u5b9a\u3059\u308b\u3068\u30d5\u30e9\u30f3\u30b9\u8a9e\u306b\u306a\u308a\u307e\u3057\u305f\uff0e\n\n\n\n$ curl -s -H 'Accept-Language: fr' https://mastodon.social/api/v1/trends/links | jq . | head\n[\n {\n \"url\": \"https://www.huffingtonpost.fr/justice/article/la-justice-prend-une-decision-inedite-pour-une-personne-trans-en-france_250035.html\",\n \"title\": \"La justice prend une d\u00e9cision \u00ab\u00a0in\u00e9dite\u00a0\u00bb pour une personne trans en France\",\n \"description\": \"Un homme trans, qui contestait en\u00a0justice\u00a0le refus de CPAM du Bas-Rhin\u00a0de prendre en\u00a0charge\u00a0sa mastectomie, a obtenu gain de cause au\u00a0tribunal\u00a0de Strasbourg.\",\n \"language\": \"fr\",\n \"type\": \"link\",\n \"author_name\": \"\u00c9va Craine\",\n \"author_url\": \"https://www.huffingtonpost.fr/author/eva-craine\",\n \"provider_name\": \"Le HuffPost\",\n\n\n\n\u3068\u3044\u3046\u3053\u3068\u3067\u3053\u306e\u3042\u305f\u308a\u3092\u898b\u3066\u5224\u65ad\u3057\u3066\u3044\u305d\u3046\u3067\u3059\uff0eGlance\u5074\u3067\u65e5\u672c\u8a9e\u3092\u8868\u793a\u3059\u308b\u306b\u306f\u672c\u4f53\u306esource\u3092\u4fee\u6b63\u3057\u306a\u3044\u3068\u3044\u3051\u306a\u3055\u305d\u3046\u3067\u3059\uff0e", "date_published": "2025-05-15T20:47:06+09:00", "date_modified": "2025-05-15T20:47:08+09:00", "authors": [ { "name": "matoken", "url": "https://matoken.org/blog/author/matoken/", "avatar": "https://secure.gravatar.com/avatar/1865f695c4eecc844385acef2f078255036adccd42c254580ea3844543ab56d9?s=512&d=mm&r=g" } ], "author": { "name": "matoken", "url": "https://matoken.org/blog/author/matoken/", "avatar": "https://secure.gravatar.com/avatar/1865f695c4eecc844385acef2f078255036adccd42c254580ea3844543ab56d9?s=512&d=mm&r=g" }, "tags": [ "Glance", "langage", "mastodon", "bookworm", "Linux", "Raspberry Pi OS" ] }, { "id": "https://matoken.org/blog/?p=4365", "url": "https://matoken.org/blog/2025/01/12/nanotodon-0-5-0/", "title": "nanotodon 0.5.0\u3067Sixel", "content_html": "
\n

CLI Mastodon client\u306enanotodon 0.5.0\u304c\u30ea\u30ea\u30fc\u30b9\u3055\u308c\u307e\u3057\u305f\uff0e
\nSixel\u5bfe\u5fdc\u306e\u3088\u3046\u3067\u3059\uff0e

\n
\n
\n
\n
\n
    \n
  • Sixel\u304c\u3042\u308b\u7a0b\u5ea6\u52d5\u304f\u3088\u3046\u306b\u306a\u3063\u305f
  • \n
\n

Sixel\u306e\u3064\u304b\u3044\u304b\u305f

\n

Makefile\u3092\u898b\u3066\u306d\uff01

\n
\n
\n\n
\n— Release 0.5.0 \u00b7 taka-tuos/nanotodon\n
\n\n

\n
\n

\u3068\u3044\u3046\u3053\u3068\u3067Release\u304b\u3089source archive\u3092\u5165\u624b\u3057\u305f\u308a\uff0cgit clone\u3057\u3066Makefile\u3092\u898b\u3066\u307f\u307e\u3059\uff0e

\n
\n
\n
\n
$ wget2 -c -v https://github.com/taka-tuos/nanotodon/archive/refs/tags/0.5.0.tar.gz\n$ tar tvf 0.5.0.tar.gz\n$ cd nanotodon-0.5.0
\n
\n
\n
\n

or

\n
\n
\n
\n
$ git clone https://github.com/taka-tuos/nanotodon\n$ cd nanotodon\n$ git checkout -b 0.5.0
\n
\n
\n
\n

Sixel\u5bfe\u5fdc\u306e\u305f\u3081\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u7de8\u96c6\u3057\u307e\u3057\u305f\uff0e(Webp\u306f\u30aa\u30d7\u30b7\u30e7\u30f3)

\n
\n
\n
\n
$ git diff Makefile\ndiff --git a/Makefile b/Makefile\nindex 6332820..238c2ed 100644\n--- a/Makefile\n+++ b/Makefile\n@@ -10,11 +10,11 @@ LDLIBS += -lcurl -lpthread -lm\n CFLAGS += -DSUPPORT_XDG_BASE_DIR\n\n # EXPERIMENTAL: sixel support\n-#CFLAGS += -DUSE_SIXEL\n+CFLAGS += -DUSE_SIXEL\n\n # EXPERIMENTAL: webp support\n-#CFLAGS += -DUSE_WEBP\n-#LDLIBS += -lwebp\n+CFLAGS += -DUSE_WEBP\n+LDLIBS += -lwebp\n\n # for pkgsrc\n #CFLAGS += -I/usr/pkg/include
\n
\n
\n
\n\n\n\n\n\n
\n
Note
\n
\n
\n

webp\u3092\u7121\u52b9\u306b\u3059\u308b\u3068webp\u5f62\u5f0f\u306e\u753b\u50cf\u306e\u8868\u793a\u306b\u5931\u6557\u3057\u307e\u3059\uff0e\u753b\u50cf\u306f\u4ee5\u4e0b\u306e\u3082\u306e\u306b\u5dee\u3057\u66ff\u3048\u3089\u308c\u307e\u3057\u305f\uff0e\u7d50\u69cbwebp\u306f\u591a\u3044\u306e\u3067\u6709\u52b9\u306b\u3057\u305f\u307b\u3046\u304c\u826f\u3055\u305d\u3046\u3067\u3059\uff0e

\n
\n
\n

\"err\"

\n
\n

\n\n
View on Mastodon
\n

\n

\n

\n
\n
\n

build\u3057\u307e\u3059\uff0e

\n
\n
\n
\n
$ make
\n
\n
\n
\n

\u305d\u3057\u3066nanotodon\u3092\u5b9f\u884c\uff0e

\n
\n
\n
\n
$ ./nanotodon
\n
\n
\n
\n

\u30a2\u30a4\u30b3\u30f3\u3084\u6dfb\u4ed8\u753b\u50cf\u304cSixel\u3067\u8868\u793a\u3055\u308c\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3057\u305f :)

\n
\n
\n

\"nanotodon

\n
\n
\n

Sixel\u5bfe\u5fdc\u7aef\u672b\u306b\u3064\u3044\u3066\u306f\u4ee5\u4e0b\u306e\u30da\u30fc\u30b8\u304c\u53c2\u8003\u306b\u306a\u308a\u307e\u3059\uff0e

\n
\n
\n\n
\n
\n

\u4eca\u56de\u306fmlterm\u306e\u4e0a\u3067tmux\u3092\u52d5\u304b\u3057\uff0c\u305d\u306e\u4e0a\u3067nanotodon\u3092\u52d5\u304b\u3057\u307e\u3057\u305f\uff0e
\n\u4ee5\u4e0b\u306ftmux\u306e\u4e0a\u306e\u7a93\u3067nanotodon\uff0c\u4e0b\u306e\u7a93\u3067sayaka\u3067Misskey\u3092\u8868\u793a\u3057\u3066\u3044\u307e\u3059\uff0e

\n
\n
\n

\"nanotodonsayaka\"

\n
\n
\n

\u697d\u3057\u3044\u3067\u3059 :)

\n
\n
\n
\u74b0\u5883
\n
\n
$ dpkg-query -W make gcc libcurl4t64 libblis64-4-pthread\ngcc     4:14.2.0-1\nlibblis64-4-pthread:amd64       1.0-1+b1\nlibcurl4t64:amd64       8.11.1-1\nmake    4.4.1-1\n$ lsb_release -dr\nDescription:    Debian GNU/Linux trixie/sid\nRelease:        n/a\n$ arch\nx86_64
\n
\n
\n", "content_text": "CLI Mastodon client\u306enanotodon 0.5.0\u304c\u30ea\u30ea\u30fc\u30b9\u3055\u308c\u307e\u3057\u305f\uff0e\nSixel\u5bfe\u5fdc\u306e\u3088\u3046\u3067\u3059\uff0e\n\n\n\n\n\nSixel\u304c\u3042\u308b\u7a0b\u5ea6\u52d5\u304f\u3088\u3046\u306b\u306a\u3063\u305f\n\nSixel\u306e\u3064\u304b\u3044\u304b\u305f\nMakefile\u3092\u898b\u3066\u306d\uff01\n\n\n\n\n— Release 0.5.0 \u00b7 taka-tuos/nanotodon\n\n\n\n\n\u3068\u3044\u3046\u3053\u3068\u3067Release\u304b\u3089source archive\u3092\u5165\u624b\u3057\u305f\u308a\uff0cgit clone\u3057\u3066Makefile\u3092\u898b\u3066\u307f\u307e\u3059\uff0e\n\n\n\n$ wget2 -c -v https://github.com/taka-tuos/nanotodon/archive/refs/tags/0.5.0.tar.gz\n$ tar tvf 0.5.0.tar.gz\n$ cd nanotodon-0.5.0\n\n\n\nor\n\n\n\n$ git clone https://github.com/taka-tuos/nanotodon\n$ cd nanotodon\n$ git checkout -b 0.5.0\n\n\n\nSixel\u5bfe\u5fdc\u306e\u305f\u3081\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u7de8\u96c6\u3057\u307e\u3057\u305f\uff0e(Webp\u306f\u30aa\u30d7\u30b7\u30e7\u30f3)\n\n\n\n$ git diff Makefile\ndiff --git a/Makefile b/Makefile\nindex 6332820..238c2ed 100644\n--- a/Makefile\n+++ b/Makefile\n@@ -10,11 +10,11 @@ LDLIBS += -lcurl -lpthread -lm\n CFLAGS += -DSUPPORT_XDG_BASE_DIR\n\n # EXPERIMENTAL: sixel support\n-#CFLAGS += -DUSE_SIXEL\n+CFLAGS += -DUSE_SIXEL\n\n # EXPERIMENTAL: webp support\n-#CFLAGS += -DUSE_WEBP\n-#LDLIBS += -lwebp\n+CFLAGS += -DUSE_WEBP\n+LDLIBS += -lwebp\n\n # for pkgsrc\n #CFLAGS += -I/usr/pkg/include\n\n\n\n\n\n\nNote\n\n\n\nwebp\u3092\u7121\u52b9\u306b\u3059\u308b\u3068webp\u5f62\u5f0f\u306e\u753b\u50cf\u306e\u8868\u793a\u306b\u5931\u6557\u3057\u307e\u3059\uff0e\u753b\u50cf\u306f\u4ee5\u4e0b\u306e\u3082\u306e\u306b\u5dee\u3057\u66ff\u3048\u3089\u308c\u307e\u3057\u305f\uff0e\u7d50\u69cbwebp\u306f\u591a\u3044\u306e\u3067\u6709\u52b9\u306b\u3057\u305f\u307b\u3046\u304c\u826f\u3055\u305d\u3046\u3067\u3059\uff0e\n\n\n\n\n \nPost by @matoken\nView on Mastodon\n \n \n\n\n\n\n\nbuild\u3057\u307e\u3059\uff0e\n\n\n\n$ make\n\n\n\n\u305d\u3057\u3066nanotodon\u3092\u5b9f\u884c\uff0e\n\n\n\n$ ./nanotodon\n\n\n\n\u30a2\u30a4\u30b3\u30f3\u3084\u6dfb\u4ed8\u753b\u50cf\u304cSixel\u3067\u8868\u793a\u3055\u308c\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3057\u305f :)\n\n\n\n\n\nSixel\u5bfe\u5fdc\u7aef\u672b\u306b\u3064\u3044\u3066\u306f\u4ee5\u4e0b\u306e\u30da\u30fc\u30b8\u304c\u53c2\u8003\u306b\u306a\u308a\u307e\u3059\uff0e\n\n\n\n\nAre We Sixel Yet?\n\n\n\n\n\u4eca\u56de\u306fmlterm\u306e\u4e0a\u3067tmux\u3092\u52d5\u304b\u3057\uff0c\u305d\u306e\u4e0a\u3067nanotodon\u3092\u52d5\u304b\u3057\u307e\u3057\u305f\uff0e\n\u4ee5\u4e0b\u306ftmux\u306e\u4e0a\u306e\u7a93\u3067nanotodon\uff0c\u4e0b\u306e\u7a93\u3067sayaka\u3067Misskey\u3092\u8868\u793a\u3057\u3066\u3044\u307e\u3059\uff0e\n\n\n\n\n\n\u697d\u3057\u3044\u3067\u3059 :)\n\n\n\u74b0\u5883\n\n$ dpkg-query -W make gcc libcurl4t64 libblis64-4-pthread\ngcc 4:14.2.0-1\nlibblis64-4-pthread:amd64 1.0-1+b1\nlibcurl4t64:amd64 8.11.1-1\nmake 4.4.1-1\n$ lsb_release -dr\nDescription: Debian GNU/Linux trixie/sid\nRelease: n/a\n$ arch\nx86_64", "date_published": "2025-01-12T07:03:50+09:00", "date_modified": "2025-01-15T05:01:00+09:00", "authors": [ { "name": "matoken", "url": "https://matoken.org/blog/author/matoken/", "avatar": "https://secure.gravatar.com/avatar/1865f695c4eecc844385acef2f078255036adccd42c254580ea3844543ab56d9?s=512&d=mm&r=g" } ], "author": { "name": "matoken", "url": "https://matoken.org/blog/author/matoken/", "avatar": "https://secure.gravatar.com/avatar/1865f695c4eecc844385acef2f078255036adccd42c254580ea3844543ab56d9?s=512&d=mm&r=g" }, "tags": [ "1C1A25", "787588", "C9C4DA", "CFLAGS", "CLI", "FCF8FF", "mastodon", "nanotodon", "Debian", "Linux", "sid" ] }, { "id": "http://matoken.org/blog/?p=1891", "url": "https://matoken.org/blog/2018/05/21/try-terminal-base-masodon-client-nanotodon/", "title": "terminal\u3067\u52d5\u4f5c\u3059\u308bMastodon client\u306enanotodon\u3092\u8a66\u3057\u3066\u307f\u305f", "content_html": "

mikutodon\u3092Debian jessie armhf\u306b\u5165\u308c\u3066\u307f\u305f\uff0eMakefile\u3092\u4fee\u6b63\u3057\u305f\u3089\u52d5\u3044\u305f\u3051\u3069\u6587\u5b57\u5316\u3051\u3059\u308b\uff0e\u3061\u306a\u307f\u306bDebian sid amd64\u3067\u306f\u554f\u984c\u306a\u304f\u52d5\u4f5c\u3057\u305f\uff0e

\n\n
$ cat /etc/debian_version \r\n8.10\r\n$ uname -m\r\narmv7l\r\n
\n

\u30e9\u30a4\u30d6\u30e9\u30ea\u7b49\u5c0e\u5165

\n
$ sudo apt install build-essential libcurl4-openssl-dev libjson-c-dev libncurses-dev libncursesw5\r\n$ dpkg-query -W build-essential libcurl4-openssl-dev libjson-c-dev libncurses-dev libncursesw5\r\nbuild-essential 11.7\r\nlibcurl4-openssl-dev:armhf      7.38.0-4+deb8u11\r\nlibjson-c-dev:armhf     0.11-4\r\nlibncurses-dev  \r\nlibncursesw5:armhf      5.9+20140913-1+deb8u2\r\n
\n

\uff1c\u8ffd\u8a18\uff1e
\n\u5165\u3063\u3066\u306a\u3044\u5834\u5408git\u3082\u5fc5\u8981\u3067\u3059\u306d $ sudo apt install git
\n\uff1c\uff0f\u8ffd\u8a18\uff1e

\n

source\u5165\u624b

\n
$ git clone https://github.com/taka-tuos/nanotodon\r\n
\n

make

\n

\u30b3\u30b1\u305f

\n
$ cd nanotodon\r\n$ make\r\nmake -r nanotodon\r\nmake[1]: Entering directory '/home/chip/src/nanotodon'\r\ngcc -c -g -o nanotodon.o nanotodon.c\r\nnanotodon.c: In function 'stream_event_notify':\r\nnanotodon.c:110:12: warning: initialization discards 'const' qualifier from pointer target type\r\n  char *t = json_object_get_string(notify_type);\r\n            ^\r\nnanotodon.c: At top level:\r\nnanotodon.c:138:6: warning: conflicting types for 'stream_event_update'\r\n void stream_event_update(struct json_object *jobj_from_string)\r\n      ^\r\nnanotodon.c:128:3: note: previous implicit declaration of 'stream_event_update' was here\r\n   stream_event_update(status);\r\n   ^\r\nnanotodon.c: In function 'stream_event_update':\r\nnanotodon.c:180:14: warning: initialization discards 'const' qualifier from pointer target type\r\n  char *src = json_object_get_string(content);\r\n              ^\r\nnanotodon.c:226:3: error: 'for' loop initial declarations are only allowed in C99 or C11 mode\r\n   for (int i = 0; i < json_object_array_length(media_attachments); ++i) {\r\n   ^\r\nnanotodon.c:226:3: note: use option -std=c99, -std=gnu99, -std=c11 or -std=gnu11 to compile your code\r\nnanotodon.c:245:3: error: 'for' loop initial declarations are only allowed in C99 or C11 mode\r\n   for(int i = 0; i < term_w - (l + 4); i++) waddstr(scr, " ");\r\n   ^\r\nnanotodon.c: At top level:\r\nnanotodon.c:589:6: warning: conflicting types for 'do_htl'\r\n void do_htl()\r\n      ^\r\nnanotodon.c:303:2: note: previous implicit declaration of 'do_htl' was here\r\n  do_htl();\r\n  ^\r\nnanotodon.c: In function 'do_htl':\r\nnanotodon.c:618:3: error: 'for' loop initial declarations are only allowed in C99 or C11 mode\r\n   for (int i = json_object_array_length(jobj_from_string) - 1; i >= 0; i--) {\r\n   ^\r\nnanotodon.c: In function 'main':\r\nnanotodon.c:751:2: error: 'for' loop initial declarations are only allowed in C99 or C11 mode\r\n  for(int i = 0; i < term_w; i++) mvaddch(5, i, '-');\r\n  ^\r\nnanotodon.c:777:4: error: 'for' loop initial declarations are only allowed in C99 or C11 mode\r\n    for(int i = 0; i < term_w; i++) mvaddch(5, i, '-');\r\n    ^\r\nnanotodon.c:802:3: error: 'for' loop initial declarations are only allowed in C99 or C11 mode\r\n   for(int i = 0; i < txt.stringlen; i++) {\r\n   ^\r\nMakefile.in:21: recipe for target 'nanotodon.o' failed\r\nmake[1]: *** [nanotodon.o] Error 1\r\nmake[1]: Leaving directory '/home/chip/src/nanotodon'\r\nMakefile.in:11: recipe for target 'default' failed\r\nmake: *** [default] Error 2\r\n
\n

Makefile\u3092\u4fee\u6b63\u3057\u305f\u3089\u901a\u3063\u305f

\n
diff --git a/Makefile b/Makefile\r\nindex ac1828f..a35ee6a 100644\r\n--- a/Makefile\r\n+++ b/Makefile\r\n@@ -1,7 +1,7 @@\r\n TARGET         = nanotodon\r\n OBJS_TARGET    = nanotodon.o\r\n \r\n-CFLAGS = -g\r\n+CFLAGS = -g -std=gnu99\r\n LDFLAGS = \r\n LIBS = -lc -lm -lcurl -ljson-c -lncursesw -lpthread\r\n \r\n
\n

\u6587\u5b57\u5316\u3051><

\n

\"20180521_20:05:50-30304\"/

\n

Debian sid amd64\u3067\u306fMakefile\u306e\u66f8\u304d\u63db\u3048\u3082\u5fc5\u8981\u306a\u304f\u6587\u5b57\u5316\u3051\u3082\u3057\u306a\u3044\uff0e

\n

\"20180521_20:05:01-31796\"/

\n
$ cat /etc/debian_version \r\nbuster/sid\r\n$ uname -m\r\nx86_64\r\n$ dpkg-query -W build-essential libcurl4-openssl-dev libjson-c-dev libncurses-dev libncursesw5\r\nbuild-essential 12.5\r\nlibcurl4-openssl-dev:amd64      7.60.0-1\r\nlibjson-c-dev:amd64     0.12.1-1.3\r\nlibncurses-dev:amd64    6.1+20180210-3\r\nlibncursesw5:amd64      6.1+20180210-3\r\n
\n", "content_text": "mikutodon\u3092Debian jessie armhf\u306b\u5165\u308c\u3066\u307f\u305f\uff0eMakefile\u3092\u4fee\u6b63\u3057\u305f\u3089\u52d5\u3044\u305f\u3051\u3069\u6587\u5b57\u5316\u3051\u3059\u308b\uff0e\u3061\u306a\u307f\u306bDebian sid amd64\u3067\u306f\u554f\u984c\u306a\u304f\u52d5\u4f5c\u3057\u305f\uff0e\n\ntaka-tuos/nanotodon: CUI/C99 mastodon\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u3000\u203b\u30b3\u30fc\u30c9\u304c\u30ab\u30aa\u30b9\u3067\u3059\n\n$ cat /etc/debian_version \r\n8.10\r\n$ uname -m\r\narmv7l\r\n\n\u30e9\u30a4\u30d6\u30e9\u30ea\u7b49\u5c0e\u5165\n$ sudo apt install build-essential libcurl4-openssl-dev libjson-c-dev libncurses-dev libncursesw5\r\n$ dpkg-query -W build-essential libcurl4-openssl-dev libjson-c-dev libncurses-dev libncursesw5\r\nbuild-essential 11.7\r\nlibcurl4-openssl-dev:armhf 7.38.0-4+deb8u11\r\nlibjson-c-dev:armhf 0.11-4\r\nlibncurses-dev \r\nlibncursesw5:armhf 5.9+20140913-1+deb8u2\r\n\n\uff1c\u8ffd\u8a18\uff1e\n\u5165\u3063\u3066\u306a\u3044\u5834\u5408git\u3082\u5fc5\u8981\u3067\u3059\u306d $ sudo apt install git\n\uff1c\uff0f\u8ffd\u8a18\uff1e\nsource\u5165\u624b\n$ git clone https://github.com/taka-tuos/nanotodon\r\n\nmake\n\u30b3\u30b1\u305f\n$ cd nanotodon\r\n$ make\r\nmake -r nanotodon\r\nmake[1]: Entering directory '/home/chip/src/nanotodon'\r\ngcc -c -g -o nanotodon.o nanotodon.c\r\nnanotodon.c: In function 'stream_event_notify':\r\nnanotodon.c:110:12: warning: initialization discards 'const' qualifier from pointer target type\r\n char *t = json_object_get_string(notify_type);\r\n ^\r\nnanotodon.c: At top level:\r\nnanotodon.c:138:6: warning: conflicting types for 'stream_event_update'\r\n void stream_event_update(struct json_object *jobj_from_string)\r\n ^\r\nnanotodon.c:128:3: note: previous implicit declaration of 'stream_event_update' was here\r\n stream_event_update(status);\r\n ^\r\nnanotodon.c: In function 'stream_event_update':\r\nnanotodon.c:180:14: warning: initialization discards 'const' qualifier from pointer target type\r\n char *src = json_object_get_string(content);\r\n ^\r\nnanotodon.c:226:3: error: 'for' loop initial declarations are only allowed in C99 or C11 mode\r\n for (int i = 0; i < json_object_array_length(media_attachments); ++i) {\r\n ^\r\nnanotodon.c:226:3: note: use option -std=c99, -std=gnu99, -std=c11 or -std=gnu11 to compile your code\r\nnanotodon.c:245:3: error: 'for' loop initial declarations are only allowed in C99 or C11 mode\r\n for(int i = 0; i < term_w - (l + 4); i++) waddstr(scr, " ");\r\n ^\r\nnanotodon.c: At top level:\r\nnanotodon.c:589:6: warning: conflicting types for 'do_htl'\r\n void do_htl()\r\n ^\r\nnanotodon.c:303:2: note: previous implicit declaration of 'do_htl' was here\r\n do_htl();\r\n ^\r\nnanotodon.c: In function 'do_htl':\r\nnanotodon.c:618:3: error: 'for' loop initial declarations are only allowed in C99 or C11 mode\r\n for (int i = json_object_array_length(jobj_from_string) - 1; i >= 0; i--) {\r\n ^\r\nnanotodon.c: In function 'main':\r\nnanotodon.c:751:2: error: 'for' loop initial declarations are only allowed in C99 or C11 mode\r\n for(int i = 0; i < term_w; i++) mvaddch(5, i, '-');\r\n ^\r\nnanotodon.c:777:4: error: 'for' loop initial declarations are only allowed in C99 or C11 mode\r\n for(int i = 0; i < term_w; i++) mvaddch(5, i, '-');\r\n ^\r\nnanotodon.c:802:3: error: 'for' loop initial declarations are only allowed in C99 or C11 mode\r\n for(int i = 0; i < txt.stringlen; i++) {\r\n ^\r\nMakefile.in:21: recipe for target 'nanotodon.o' failed\r\nmake[1]: *** [nanotodon.o] Error 1\r\nmake[1]: Leaving directory '/home/chip/src/nanotodon'\r\nMakefile.in:11: recipe for target 'default' failed\r\nmake: *** [default] Error 2\r\n\nMakefile\u3092\u4fee\u6b63\u3057\u305f\u3089\u901a\u3063\u305f\ndiff --git a/Makefile b/Makefile\r\nindex ac1828f..a35ee6a 100644\r\n--- a/Makefile\r\n+++ b/Makefile\r\n@@ -1,7 +1,7 @@\r\n TARGET = nanotodon\r\n OBJS_TARGET = nanotodon.o\r\n \r\n-CFLAGS = -g\r\n+CFLAGS = -g -std=gnu99\r\n LDFLAGS = \r\n LIBS = -lc -lm -lcurl -ljson-c -lncursesw -lpthread\r\n \r\n\n\u6587\u5b57\u5316\u3051><\n\nDebian sid amd64\u3067\u306fMakefile\u306e\u66f8\u304d\u63db\u3048\u3082\u5fc5\u8981\u306a\u304f\u6587\u5b57\u5316\u3051\u3082\u3057\u306a\u3044\uff0e\n\n$ cat /etc/debian_version \r\nbuster/sid\r\n$ uname -m\r\nx86_64\r\n$ dpkg-query -W build-essential libcurl4-openssl-dev libjson-c-dev libncurses-dev libncursesw5\r\nbuild-essential 12.5\r\nlibcurl4-openssl-dev:amd64 7.60.0-1\r\nlibjson-c-dev:amd64 0.12.1-1.3\r\nlibncurses-dev:amd64 6.1+20180210-3\r\nlibncursesw5:amd64 6.1+20180210-3", "date_published": "2018-05-21T20:15:51+09:00", "date_modified": "2018-05-22T00:11:57+09:00", "authors": [ { "name": "matoken", "url": "https://matoken.org/blog/author/matoken/", "avatar": "https://secure.gravatar.com/avatar/1865f695c4eecc844385acef2f078255036adccd42c254580ea3844543ab56d9?s=512&d=mm&r=g" } ], "author": { "name": "matoken", "url": "https://matoken.org/blog/author/matoken/", "avatar": "https://secure.gravatar.com/avatar/1865f695c4eecc844385acef2f078255036adccd42c254580ea3844543ab56d9?s=512&d=mm&r=g" }, "tags": [ "armhf", "mastodon", "nanotodon", "Debian", "jessie", "Linux", "sid" ] } ] }