2010年4月3日土曜日

nautilusのゴミ箱表示に削除した日と元の場所を追加する

 nautilusのゴミ箱を一覧表示した時に「元の場所」と「ゴミ箱に入れた日」という項目を表示するパッチを当てたものをPPAに置きました。
 よろしかったらどうぞ。

PPAの追加の仕方

sudo add-apt-repository ppa:yama-natuki/ppa

インストール

sudo apt-get update
sudo apt-get upgrade


こんな感じ。


 ubuntu 9.10 用です。

2010年3月1日月曜日

Emacs でファイルをsudoで開き直す

 tramp の最初の一回目の認証で待たされる感覚が嫌いなので、私はよくsudo をやらずにそのままファイルを開いてしまいます。そうして「ああ、やっぱり編集したい」となり、sudo で開きなおします。
 作業の流れ的に美しくありませんし、毎回引っかかるのでストレスにもなります。
 vim ですと「:e sudo:%」でカレントファイルを sudo で開きなおしてくれるようです。いいなあ。

 ということで 自動的に sudo で開きなおしてくれる機能を作ろうかと思ったら、すでにあったのでそれを導入します。
 元のlispは、書き込み不可なファイルすべてをsudoで開きなおすか聞いてくるのでうっとおしいので、少し修正しました。
 root所有なファイルを開いた時だけ、sudoで開き直すか聞いてくるようにしました。

 以下を ~/.emacs にコピペしします。

(defun file-root-p (filename)
"Return t if file FILENAME created by root."
(eq 0 (nth 2 (file-attributes filename))))

(defun th-rename-tramp-buffer ()
(when (file-remote-p (buffer-file-name))
(rename-buffer
(format "%s:%s"
(file-remote-p (buffer-file-name) 'method)
(buffer-name)))))

(add-hook 'find-file-hook
'th-rename-tramp-buffer)

(defadvice find-file (around th-find-file activate)
"Open FILENAME using tramp's sudo method if it's read-only."
(if (and (file-root-p (ad-get-arg 0))
(not (file-writable-p (ad-get-arg 0)))
(y-or-n-p (concat "File "
(ad-get-arg 0)
" is read-only. Open it as root? ")))
(th-find-file-sudo (ad-get-arg 0))
ad-do-it))

(defun th-find-file-sudo (file)
"Opens FILE with root privileges."
(interactive "F")
(set-buffer (find-file (concat "/sudo::" file))))



 これで dired や C-x C-f で普通にファイルを開いても、それがroot所有なファイルならば自動的にsudoで開きなおすか聞いてくれます。おかげでtrampを意識しなくて済むのでとても楽になりました。

2010年2月23日火曜日

Ubuntu のdvipdfmx でB5でPDFにしたら用紙サイズが変

 前回 TeX を導入し、いろいろ弄くって PDF に変換したりして遊んでいたんですが、
dvipdfmx -p b5 test.dvi
とかして 用紙を B5 指定にしてPDFに変換しても、どうもレイアウトがずれる。あれーおかしいなあとかなり悩んだんですけど、どうも用紙サイズがB系列がISO規格になっていて、国内のJIS規格に対応していないのが原因だった。

 とりあえず linpaper にB系列の用紙サイズを追加したものを PPA にアップしておきましたのでどうぞ。

dvipdfmx -p b5j test.dvi
というように j を付ければJIS規格のサイズで出力されます。
ついでにはがきサイズも追加しておきました。 hagaki でいけます。

2010年2月18日木曜日

Ubuntu 9.10 に TeX を入れてみた

 Ubuntu に TeX を入れてみましたので、メモ。
基本的に ubuntu wiki のとおり。
sudo apt-get install latex-env-ja
sudo apt-get install latex-extra-ja
sudo jisftconfig add


でインストールが完了します。簡単ですねー昔の事を考えたら素晴しい進化です。

●dvipdfmx が jsarticle で動かない

 jarticle では問題なく動きます。新しい jsarticle ではエラーが出て動きませんでした。
 うちの環境では、/etc/texmf/dvipdfm/dvipdfmx.cfg の最下行に、
f jis-cjk.map

を追記し、 sudo update-vfontmap する事で動きました。

  • 出来たdviファイルを確認する時は→
       xdvi を使う。
  • PDFに変換するには→
       dvipdfmx を使う。
  • 文字コードは→
       当座はeuc-jpにする


 こんなとこかな?
 TeXなんて使ったのは遥か昔の事なので、完全に忘れています。使う機会もないんですが、テキストのメモなんかプリントアウトする際にちょちょいと整形するのに便利なので、今後使っていこうかな。かな。かなあ?

2010年2月10日水曜日

darkroom.el をちょこっと修正

 事前にcolor-themeを設定しなくても済むようにしました。自動で保存・復元します。
 こちらから落としなおして下さい。

バグ
 DDSKK を起動すると背景色が復元しない><
 追記:ddskk をcvs先端にしたら直った。ということでオールクリアー。

2010年2月8日月曜日

Emacs で DarkRoom

 DarkRoom とはフルスクリーンでただ文章を書くことのみに集中させるというシンプルなエディタです。
 しかしこれが言うのとやるのとでは全然違います。最近のPCは画面も大きくなり、横長になり、様々なウィジットをデスクトップにちりばめ、タスクトレイにいろんアイコンが並んでいる。気がつくと情報過多なデスクトップになっているのです。その事に気づかされました。


でまあ、当然これをEmacsでもできないかとなと思い、やってみました。



 以下の Emacs lisp を darkroom.el という名前で load path の通った場所に保存してください。
 次に ~/.emacs に、
(require 'darkroom)
(global-set-key [f11] 'darkroom-mode)
と追記すればOKです。
 後は F11 キーを押せばフルスクリーンでDarkRoomモードになります。
;;; darkroom.el --- 
;; Copyright (C) 2010  yama
;; Author: yama ;; Keywords: 
;;  $Id: darkroom.el,v 1.10 2010/02/25 10:22:02 yama Exp $ 
;; This program is free software; you can redistribute it and/or modify;; it under the terms of the GNU General Public License as published by;; the Free Software Foundation, either version 3 of the License, or;; (at your option) any later version.
;; This program is distributed in the hope that it will be useful,;; but WITHOUT ANY WARRANTY; without even the implied warranty of;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the;; GNU General Public License for more details.
;; You should have received a copy of the GNU General Public License;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
;;; Commentary:
;; use color-theme
;;; Usage
;;; (require 'darkroom);;; M-x darkroom
;;; Code:(require 'color-theme)


;;; Config ---------------------------------------------------------(defvar darkroom-left-margin  30
  "left margin")

(defvar darkroom-right-margin 30
  "right margin")

(defvar dark-mode-on nil
  "Non-nil if DarkRoom mode is enabled.
Don't change this variable directly, you must change it by one of the
functions that enable or disable Dark Room mode.")

;;; -------------------------------------------------------------------

(defun fullscreen (&optional f)
  "Chenge FullScreen. for Emacs23"
      (interactive)
      (set-frame-parameter f 'fullscreen
                           (if (frame-parameter f 'fullscreen) nil 'fullboth)))

(defun darkroom-mode ()
  "simple writing environment."
  (interactive)
  (if (equal dark-mode-on t) (darkroom-mode-disable)
    (darkroom-mode-enable)))

(defun darkroom-mode-enable ()
  (setq dark-mode-on t)
  (setq darkroom-default-background-color
        (cdr (assoc 'background-color default-frame-alist)))
  (fset 'color-theme-snapshot (color-theme-make-snapshot))
  (sleep-for 0.05)
  (color-theme-simple-1)
  (fullscreen )
  (set-cursor-color "yellow") ;; cursor color  (tool-bar-mode 0)
  (menu-bar-mode 0)
  (display-time-mode 1)
  (scroll-bar-mode)
  (set-face-foreground 'mode-line "gray25")
  (set-face-background 'mode-line "gray1")
  (if (equal (intern-soft "elscreen-version") nil) nil
    (elscreen-toggle-display-tab))
  (auto-fill-mode 1))

(defun darkroom-mode-disable ()
  (setq dark-mode-on nil)
  (add-to-list 'default-frame-alist
               '(background-color . darkroom-default-background-color))
  (color-theme-snapshot)
  (scroll-bar-mode)
    (if (equal (intern-soft "elscreen-version") nil) nil
    (elscreen-toggle-display-tab))
  (display-time-mode 0)
  (sleep-for 0.05)
  (fullscreen ))
    
(defun window-count ()
  (length (window-list (selected-frame) 1)))

(defun set-margin ()
  (set-window-margins (selected-window)
                      darkroom-left-margin
                      darkroom-right-margin))

(defun dark-window-update ()
  (if (equal dark-mode-on t)
      (if (> (window-count) 1)
          (progn
            (set-window-margins (selected-window) 0 0)
            (set-window-margins (previous-window) 0 0))
        (set-margin))
  (set-window-margins (selected-window) 0 0)))

(add-hook 'window-configuration-change-hook 'dark-window-update)


(provide 'darkroom)
;;; darkroom.el ends here




 低機能です。フルスクリーンにする部分がEmacs23からの機能を使っているので、emacs23以上で使用してください。そこを書き換えればemacs22とかでも動作するはず。
 あらためて こうして全画面で作業をしていると、twitter や ウェブブラウズとかしなくなり、気が散らずに作業できるんだなあと。というか今までどんだけ注意力散漫だったんだろうと思いましたw


 さあ皆さんも思う存分執筆に集中して下さいw


ps.
# 端末で起動してフルスクリーンにすればいいじゃんという突っ込みはなしで;;



●追記:
 color-theme の設定書いただけで反映するの忘れてた(^_^;) 修正しましたので落とした方は再度落とし直して下さい。

●2012/08/30 追記:
 続き→ http://ubulog.blogspot.jp/2012/08/darkroomel.html

2010年1月26日火曜日

ubuntuで壁紙をランダムに切り替える。

 起動時にランダムに壁紙を変更していきます。
 毎回同じ壁紙だと飽きてくるし、かといって手動でいちいち切り替えるのも億劫になってきまして(^_^;)


 まず、ランダムに変える壁紙を入れたディレクトリを決めておきます。壁紙となる画像ファイルはあらかじめ gimp などのフォトレタッチソフトを使ってサイズを統一しておきましょう。その方がいろいろと面倒じゃなくなるので。

● icewm の場合

 以下を random-wallpaper-icewm.sh という名前で ~/bin あたりに保存します。保存したら、chmod +x random-wallpaper-icewm.sh として実行属性を付けるのを忘れずに。
 pref は ~/.icewm/preferences の場所です。
 WALLPAPERS は壁紙のあるディレクトリを指定します。
 それぞれ御自分の環境に合わせて修正してください。

#!/bin/bash
# last updated : 2010/01/21 21:13:37 JST
#
# icewm用ランダム壁紙チェンジャー
#

pref='/home/ユーザー名/.icewm/preferences'
WALLPAPERS="$HOME/MyPictures/Wallpapers"
ALIST=( `ls -w1 $WALLPAPERS` )
RANGE=${#ALIST[*]}
SHOW=$(( $RANDOM % $RANGE ))

sed --in-place=.bak -e \
's:^DesktopBackgroundImage=.*$:DesktopBackgroundImage="'"${WALLPAPERS}/${ALIST[$SHOW]}"'":' $pref
icewmbg -r
 修正して保存し終えたら、~/.icewm/startup の最後の方に追記します。
 以上で次回以降、icewmにログインする度に壁紙がランダムで変更されます。


● GNOME の場合

 以下を random-wallpaper-gnome.sh という名前で ~/bin あたりに保存します。保存したら、chmod +x random-wallpaper-gnome.sh として実行属性を付けるのを忘れずに。
 WALLPAPERS は壁紙のあるディレクトリを指定します。
 自分の環境に合わせて修正してください。

#!/bin/bash
# last updated : 2010/01/26 15:13:17 JST
# Set Random Wallpapers for GNOME.
#

WALLPAPERS="$HOME/MyPictures/Wallpapers"
ALIST=( `ls -w1 $WALLPAPERS` )
RANGE=${#ALIST[*]}
SHOW=$(( $RANDOM % $RANGE ))

gconftool-2 --type string --set "/desktop/gnome/background/picture_filename" $WALLPAPERS/${ALIST[$SHOW]}
gconftool-2 --type string --set "/desktop/gnome/background/picture_options" "centered"
 保存し終えたら、メインメニューのシステム→設定→自動起動するアプリ を起動します。

 起動したら追加ボタンを押して追加メニューを出し、登録していきます。


 これで次回以降ログインする度に壁紙がランダムに設定されて表示されます。

● openbox の場合

 以下を random-wallpaper.sh という名前で ~/bin あたりに保存します。保存したら、chmod +x random-wallpaper.sh として実行属性を付けるのを忘れずに。
 WALLPAPERS は壁紙のあるディレクトリを指定します。
 自分の環境に合わせて修正してください。
 feh というコマンドを使いますので、あらかじめ
sudo apt-get install feh
として入れておいて下さい。

#!/bin/bash
# last updated : 2010/01/05 15:12:05 JST
#
# SET random Wallpapers for background.
#

WALLPAPERS="$HOME/MyPictures/Wallpapers"
ALIST=( `ls -w1 $WALLPAPERS` )
RANGE=${#ALIST[*]}
SHOW=$(( $RANDOM % $RANGE ))

feh --bg-scale $WALLPAPERS/${ALIST[$SHOW]}
 修正して保存し終えたら、~/.config/openbox/autostart.sh の最後の方に追記します。
 以上で次回以降、openboxにログインする度に壁紙がランダムで変更されます。