✅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

過去のorg-journalを閲覧するとそれだけでエモい. 🎓ConnectingDots

  • org-journal-search: 指定した期間の日記からキーワード検索.
  • org-search-forever: 過去の日記からキーワード検索.

1年前の今日を見る

  1. M-x calendarでcalendar-modeを起動.
  2. 365 C-xで365日前のカレンダーの日付へ移動.
  3. 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): 見積もりと計測時間の表による表示.

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)

References