✅Org-modeをGTDにつかうには?
このメモではOrg-modeをつかってGTDをするためのノウハウを収集/検討する.
さらにはorg-modeを利用することでGitHub Issueのようなイシュー管理の方法も模索する. なぜこの方法に可能性をかんじるかというと, org-modeをつかってJupyter Notebookのようなことができないかという可能性を模索したい.
📝org-agenda
org-super-agenda
好きなカテゴリでタスクをグルーピングして表示. たとえばGTDのnext/waitnig/somedayなど.
https://github.com/alphapapa/org-super-agenda
📝org-journal
org-modeで日誌を書くことに特化した拡張.
ref. bastibe/org-journal: A simple org-mode based journaling mode
link your history
過去のorg-journalを閲覧するとそれだけでエモい. 🎓ConnectingDots
- org-journal-search: 指定した期間の日記からキーワード検索.
- org-search-forever: 過去の日記からキーワード検索.
1年前の今日を見る
- M-x calendarでcalendar-modeを起動.
- 365 C-xで365日前のカレンダーの日付へ移動.
- j rでread-onlyで開く👍
org-journal/org-agenda連携
journalのディレクトリをorg-agenda-filesにすべて適用すると, ディレクトリ内のファイルが多すぎる時, agenda表示のときにとても時間がかかる.
org-journal-enable-agenda-integrationをtにすると, org-journal管理の本日のjournalのみをorg-agenda-filesに含めるように, ファイル保存時にcustom.elがupdateされる.
(add-to-list 'org-agenda-files org-journal-dir)
(setq org-journal-enable-agenda-integration t)
journalファイル生成時にメタ情報付与
どこで拾ったのか忘れたが一応メモしとく. 編集すく関数を作成してhookする.
(defun org-journal-file-header-func (time)
"Custom function to create journal header."
(concat
(pcase org-journal-file-type
(`daily "#+STARTUP: showeverything"))))
;; (`weekly "#+TITLE: Weekly Journal\n#+STARTUP: folded")
;;(`monthly "#+TITLE: Monthly Journal\n#+STARTUP: folded")
;; (`yearly "#+TITLE: Yearly Journal\n#+STARTUP: folded"))))
(setq org-journal-file-header 'org-journal-file-header-func)
(defun org-create-new-id-journal ()
(goto-char (point-min))
(org-id-get-create)
(goto-char (point-max)))
(add-hook 'org-journal-after-header-create-hook
'org-create-new-id-journal)
📝org-clock
org-modeでタイムトラッキング.
org-clock Basics
https://orgmode.org/manual/Clocking-commands.html
- C-c C-x C-i(org-clock-in): 計測開始
- C-c C-x C-o(org-clock-out): 計測終了
- C-c C-x C-j(org-clock-goto): 計測中のタスクにJump
- C-c C-x C-d(org-clock-display): 現在の計測をモードラインに表示.
- org-clock-in-last: 最後の計測から再開.
- org-clock-cancel: 計測キャンセル.
org-clockレポート
M-x org-clock-report: レポート出力
いろいろオプションがあるようだ.
https://orgmode.org/manual/The-clock-table.html
org-estimate
effort見積もり機能. effortとは努力の意だが, 実際は作業量転じて時間見積もりになっている.
PropertyにEFFORTが追加されて, この情報で管理される.
- C-c C-x e(org-set-effort): エフォート設定.
- C-c C-x C-e(org-clock-modify-effor-estimat)
- 現在動作しているorg-clockのエフォートを修正.
- C-c C-x C-c(org-columns): 見積もりと計測時間の表による表示.
- Effort Estimates (The Org Manual)
- Calculating effort estimates and scheduled times in org-mode
- https://github.com/Fuco1/org-timeline
more
Org Column View
C-c C-x C-cでorg bulletに設定したOrg Propertiesを任意の形式でテーブル表示する機能.
#+COLUMNS:
のヘッダで設定を行う. デフォルトの設定は以下.
#+COLUMNS: %25ITEM %TODO %3PRIORITY %TAGS
- ITEM: 25charの文字列幅でtitleを表示.
- TODO: TODOステータス表示
- PROPERTIES: 属性表示
- TAGS: タグ表示
Topics
org-modeのタイムスタンプ(timestamp)の []と<>の違いは?
基本的には<>. []はInactive timestampという.
org-agenda-include-inactive-timestamps がnilのときにorg-agendaに表示されなくなる.
Org-captureでは %Uで[], %Tで<>の形式でtimestampが作成される.
https://orgmode.org/manual/Timestamps.html
defaultではdateのみの挿入なので, timeまでの挿入は工夫が必要.
(after! org
(defun my/insert-timestamp ()
(interactive)
(org-insert-time-stamp (current-time) t))
(defun my/insert-timestamp-inactive ()
(interactive)
(org-time-stamp-inactive (current-time)))
(map! :map org-mode-map "C-u C-c C-." #'my/insert-timestamp-inactive)
(map! :map org-mode-map "C-c C-." #'my/insert-timestamp))
DeadlineとScheduledの違いは?
org-agendaの表示で差がある.
deadlineは期限がすぎると表示される. scheduleは期限前に表示される.
ref. Deadlines and Scheduling (The Org Manual)
Org-mode with ポモドーロテクニック
逆引きHOWTO
✅現在のファイルのTODOをリスト表示するには?
org-show-todo-tree(C-c / t)をつかうと, org-treeのTODOがついた見出しのみを表示して他をたたむことができる.
org-agenda的に解決するには, 独自関数を定義する.
(defun org-todo-list-current-file (&optional arg)
"Like `org-todo-list', but using only the current buffer's file."
(interactive "P")
(let ((org-agenda-files (list (buffer-file-name (current-buffer)))))
(if (null (car org-agenda-files))
(error "%s is not visiting a file" (buffer-name (current-buffer)))
(org-todo-list arg))))
✅見出しにタグを設定したい
C-c C-qで org-tags-set-command を発動して設定.
Org-roamならば org-roam-tag-[add/remove] が使える.
Templates
タスク管理用のテンプレメモ.
#+STARTUP: content
#+TODO: TODO(t) WAIT(w) | DONE(d)
#+TODO: ISSUE(i) BUG(b) | OK(o) NG(n)