13
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Org-modeとnotify-sendで、一歩進んだスケジュール管理をしよう

Last updated at Posted at 2015-02-01

スケジュールの管理には、作成と参照があります。
Org-modeでのスケジュールの作成は、前回紹介した「Org-modeで、ライフログを録ろう」とさして違いはありません。ヘッドラインに、タイムスタンプを付けるだけです。
そして、スケジュールの参照には、Agenda viewを使う方法が一般的かと思います。

私も、これまで、Org-modeでスケジュールを管理してきました。しかし、日々の作業量に忙殺されて、スケジュールを忘れてしまうこともしばしばでした。
改善策を模索していたところ、「これだ!」と思えるものがありましたので、紹介します。

参考

この記事の作成にあたり、以下を参考とさせていただきました。

  1. EMACS-FU showing-popups

前提

「Org-modeで、ライフログを録ろう」に従って、Org-modeの環境が導入されていることを前提としています。

スケジュールの作成

まず、Org-modeでスケジュールを作成方法を紹介します。

1. スケジュールの作成

C-c c jとタイプして、スケジュールの作成を開始します。
ヘッドラインにスケジュールの内容を作成します。

setScheduleTime.png

2. タイムスタンプの作成

**C-u C-c .**とタイプして、タイムスタンプの作成モードに入ります。
以下に示すキー操作で、Calendarバッファの指定日付を移動させることができます。

key 移動
S- < left > 日付を1日前に移動する。
S- < right > 日付を1日後に移動する。
S- < up > 日付を1週間前に移動する。
S- < down > 日付を1週間前に移動する。

calendarbufferSmall.png

スケジュールの日付に移動したら、リターンキーを押下して、日付を確定させます。
次に、ヘッドラインに挿入された日付の時間部分にカーソールを移動させて、時間を上書きします。
また、終了時間が決まっているのであれば、以下の例を参考にして、レンジ指定します。

<2015-02-01 日 15:00-16:00>

setTimeSmall.png

後は、必要に応じて、スケジュールの補足情報を記事の部分に記載してください。

スケジュールの参照

Org-modeでは、C-c a aとタイプすることで、スケジュールを確認することができます。

viewAgendaSmall.png

一歩進んだスケジュール管理

1日のスケジュールを1度確認したら忘れない人は、上記だけで問題ないのですが、私は物忘れが激しいので、そうも行きません。
そんな私でも、スケジュールの直前に画面通知の気づきを与えてもらえれば、少しは改善が期待できそうです。

それでは、Org-modeのスケジュールを画面通知できるようにしてみましょう。

準備

1. パッケージの追加

画面通知には、notify-sendコマンドを使用します。
notify-sendコマンドがインストールされていない場合は、以下のコマンドを実行してください。

$ sudo apt-get install libnotify-bin

2. $HOME/.emacs

$HOME/.emacsに以下のコードを追加してください。
コードの詳細は、コメントを参照してください。

;; The setting for appointment
; Org-modeのスケジュール管理に、カレンダーのアポイントメントを使用する。
; カレンダーのアポイントメントを使用することで、ユーザは、スケジュール
; の開始前に、通知を受けることが出来るようになる。
; 

; アポイントメントを動作させるための各種設定
(setq
 appt-display-format 'window
 appt-display-mode-line t
 )
(appt-activate 1)
(display-time)

; notify-sendコマンドのラッパ関数
(defun notify-wrapper (min-to-app new-time msg)
  "notify-sendコマンドのラッパ関数。
画面上にスケジュールの通知を行なう。
もし、ユーザがXウインドシステムを使用していない場合、
スケジュールは、Emacsのミニバッファ内に表示する。"
  (interactive)
  (let 
      ((title (format "予定まで%s分" min-to-app))
       (notify-icon "/usr/share/icons/gnome/32x32/status/appointment-soon.png"))
    (if (eq window-system 'x)
        (shell-command (concat "notify-send"
                               " -i " notify-icon
                               " '" title "'"
                               " '"  msg "'"))
      (message (concat title ": " msg)))))
  
; appointmentの表示に、notify-wrapperを使用する
(setq appt-disp-window-function (function notify-wrapper))

; Agenda viewを参照する都度、Org-modeのスケジュールをアポ
; イントメントに変換する。
(add-hook 'org-finalize-agenda-hook 'org-agenda-to-appt)

使用方法

以下の手順を実行することで、Org-modeのスケジュールの画面通知を有効となります。

  1. Emacsを起動

  2. 新規スケジュールの追加

    追加するスケジュールがなければ、スキップしてください。

  3. スケジュールの参照

    C-c a aをタイプし、Agenda viewバッファを参照する。

ex.画面通知の例
以下の例では、Agenda viewを参照していますが、一度、Agenda viewを参照した後は、どのバッファで作業していても、画面通知されるようになります。
notifySmall.png

使用上の注意事項

  • 新規スケジュールを追加する場合は、"使用方法"の手順2と3を繰り返してください。

    Agenda viewによるスケジュールの参照が、カレンダーのアポイントメントの変換のキックになっています。

  • Emacsは終了しないでください。

    画面通知は、スケジュール参照を実行したEmacsが起動している間のみ有効です。

次回は、上記課題の解決方法を検討したいと思います。

13
15
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?