Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
ncurses/2021-05-12-llt21
Search
Satoshi SAKAO
May 12, 2021
Programming
0
200
ncurses/2021-05-12-llt21
社内のLTイベント「えるLT Vol.21 オンライン」で発表した資料です
Satoshi SAKAO
May 12, 2021
Tweet
Share
More Decks by Satoshi SAKAO
See All by Satoshi SAKAO
Testcontainers/2024-11-20-llt32
ottijp
0
46
Pkl/2024-04-17-llt31
ottijp
0
77
JavaScriptのデバッグ/2023-09-04-llt30
ottijp
0
150
CDK for TerraformでAzureリソースをデプロイする/2023-05-15-llt29
ottijp
1
250
TWELITEへの誘い/2022-12-27-llt28
ottijp
0
150
ビルドツールBazelを触ってみた/2022-09-28-llt27
ottijp
0
150
HashiCorp Vaultを使ったシークレットのセキュアな一元管理 〜Ansibleを添えて〜/2022-07-12-llt26
ottijp
0
140
AWSインフラのデプロイをCDKでカイゼンする/2022-03-23-llt25
ottijp
0
82
Amazon Timestreamでデータ補間/2021-12-27-llt24
ottijp
0
98
Other Decks in Programming
See All in Programming
TypeScript だけを書いて Tauri でデスクトップアプリを作ろう / Tauri with only TypeScript
tris5572
2
540
ワイがおすすめする新潟の食 / 20250530phpconf-niigata-eve
kasacchiful
0
260
抽象データ型について学んだ
ryounasso
0
210
TVer iOSチームの共通認識の作り方 - Findy Job LT iOSアプリ開発の裏側 開発組織が向き合う課題とこれから
techtver
PRO
0
720
DevDay2025-OracleDatabase-kernel-addressing-history
oracle4engineer
PRO
7
1.6k
インターフェース設計のコツとツボ
togishima
2
490
RubyKaigi Hack Space in Tokyo & 函館最速 "予習" 会 / RubyKaigi Hack Space in Tokyo & The Fastest Briefing of RubyKaigi 2026 in Hakodate
moznion
1
130
JVM の仕組みを理解して PHP で実装してみよう
m3m0r7
PRO
1
250
tsconfigのオプションで変わる型世界
keisukeikeda
1
130
人には人それぞれのサービス層がある
shimabox
3
470
Agent Rules as Domain Parser
yodakeisuke
1
350
eBPFを用いたAIネットワーク監視システム論文の実装 / eBPF Japan Meetup #4
yuukit
3
620
Featured
See All Featured
Docker and Python
trallard
44
3.4k
Stop Working from a Prison Cell
hatefulcrawdad
269
20k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
30
2.4k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
16k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
129
19k
The Language of Interfaces
destraynor
158
25k
Art, The Web, and Tiny UX
lynnandtonic
298
21k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
31
1.2k
Rebuilding a faster, lazier Slack
samanthasiow
81
9k
Embracing the Ebb and Flow
colly
85
4.7k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
137
34k
Become a Pro
speakerdeck
PRO
28
5.4k
Transcript
ncurses Satoshi SAKAO えるLT Vol.21 2021-05-12 1
話すひと 2 🏢 インフォコム株式会社 品質マネジメント推進室 👨🔧 ソフトウェアエンジニア 🛠 Node.js /
GCP / IoT / iOS (Swift) 💖 猫,テクテクライフ(ランク: 20) Satoshi SAKAO @ottijp
3 motivation
PR to ranger/ranger 4 https://github.com/ranger/ranger/pull/2030
NCURSES Programming HOWTO 5 https://tldp.org/HOWTO/NCURSES-Programming-HOWTO/
6 what’s curses
curses • is a library • realizes GUI like CUI
• provides terminal independent API 7
e.g. ranger (filer) 8
e.g. tig (git client) 9
ncurses • new curses • emulation of the original (System
V) curses • part of GNU project • https://invisible-island.net/ncurses/ 10
11 features
features • screen manipulation • print characters • change format
of characters • interface with the keyboard and the mouse • scrolling • windows 12
sisters • panel • menu • form • CDK (Curses
Development Kit) 13
14 demo https://github.com/ottijp/ncurses-demo-llt21
1. print characters • int mvaddch(int y, int x, const
chtype ch); 15
2. change format of characters • int start_color(void); • int
init_pair(short pair, short f, short b); • int attrset(int attrs); 16
3. interface with the keyboard and the mouse • int
getch(void); • mmask_t mousemask(mmask_t newmask, mmask_t *oldmask); • int getmouse(MEVENT *event); 17
18 in python, node.js and swift
python 19 https://docs.python.org/3/library/curses.html
node.js 20 https://github.com/fresc81/node-curses
node.js 21 https://github.com/chjj/blessed
swift 22 https://github.com/TheCoderMerlin/Curses
23 Appendix
refs • ncurses - Wikipedia https://en.wikipedia.org/wiki/Ncurses • NCURSES Programming HOWTO
https://tldp.org/HOWTO/NCURSES-Programming-HOWTO/ 24