2018年6月29日 星期五

在 Arch Linux 下使用 Android USB 網路共用

最近因故沒有有線網路可用了,因此學了一下 Android USB 網路共用,順便做個紀錄。

用 USB 連接到電腦,並開啟數據共用

連接到電腦後,進入「設定」→「更多」→「網路共用與可攜式無線基地台」,並開啟「USB 網路共用」

如果 「USB 網路共用」有可能有幾個問題:
  • 誤開啟了 「USB 偵錯模式」或不是使用 「MTP 協定」與電腦連結。
  • 使用充電用而非能傳輸數據用的 USB
第二點是今天遇到的問題,據說原廠線大多沒有問題。如果想要使用非原廠的線,可能要多準備幾條測試。
  

設定網路連線

前面沒有問題之後,就可以按照原本使用的網路連線方式連線,使用的連線方式為 dhcp。
 
 ArchLInux 常用的 netctl-ifplugd 沒辦法熱拔插手機,只能利用 systemd-networkd.service 設定。

利用 udev 和 systemd-networkd 自動連線

可以在開啟「 USB 網路共用」後自動設定連線,並在關閉後取消。

編寫 udev 網路共用規則

/etc/udev/rules.d/90-android-tethering.rules
# Execute pairing program when appropriate
ACTION=="add|remove", SUBSYSTEM=="net", ATTR{idVendor}=="18d1" ENV{ID_USB_DRIVER}=="rndis_host", SYMLINK+="android", RUN+="/usr/bin/systemctl restart systemd-networkd.service"

其中的 idVendor 可藉由下列指令確定(假設手機的網卡為 enp0s26u1u2):
$ udevadm info /sys/class/net/enp0s26u1u2
 
會看到一行如  E: ID_VENDOR_ID=18d1 的資訊

接著設定相對應的 systemd-networkd 檔案:
 
/etc/systemd/network/50-enp0s26u1u2.network
[Match]
Name=enp0s26u1u2

[Network]
DHCP=ipv4

詳細資料可見:Android tethering - ArchWiki
 -- 
越來越想換到 github 上了…這次只是暫時記錄…

2017年8月4日 星期五

Elecom DEFT 功能鍵

最近買了 ELECOM DEFT 軌跡球,但是預設功能鍵不能用,所以要做一些額外處理

有人寫了 patch安裝起來也很方便,不過要注意要額外安裝 header
#pacman -Syu linux-header
後重開機再安裝, 不然可能會像我一樣搞半天。

額外的按鍵定義為 Button 10 ~ 12。

2012年8月31日 星期五

ArchLinux 下使用羅技 Unifying 進行一對多配對

本來想打在自己的 Blog 上,不過考慮到是從 ArchWiki 上看來的,而且該文不長,所以直接在 Archwiki 上進行了翻譯(再怎麼說也是 Archwiki 的觀看人數比較多),相關內容可見Logitech Unifying Receiver

2012年8月29日 星期三

vim 化 w3m

W3M 是所知最好的文字瀏覽器, 然而即使有著類似 vim 的上下移動鍵,他是一款 emacs-like 而非 vim-like 的瀏覽器。較明顯的分別法從 C-f/C-b是做為游標移動到下/上一個位置而非 vi 系的下/上一頁就可略知一二,更別提滿滿的 Meta- 組合鍵了。所以很早就有將其 Vim 化的想法。但那時只找尋過相關文章,並直接套用其設定了事。

直到最近凍仁翔分享了 w3m 自訂快捷鍵的相關知識及個人自定義按鍵後,才想要重新設定過 w3m 的快捷鍵。


Vim 化中有幾個難點:一、他的命令都是大寫的要使用命令列輸入不好打;二、在命令列中沒有自動補完的功能;三、快捷鍵的明稱沒有統一性,要記起來頗有難度;四、沒有別名功能;五、快捷鍵只辨識前兩個序列,也就是說快捷鍵 :buffer(歷史記錄)和 :bmarks(書籤),w3m 都會判定成 :b,容易造成大量衝突。

不過也 w3m 定義 keybinding 很靈活:一、可做為快捷鍵的按鍵很多, /:?., 等符號都可使用;二、能以兩個按鍵做為一個動作的快捷,雖然只有兩個而不能以快捷捷模擬別名(alias),但除此之外的 Vim 一個動作也很少超過兩個鍵,因此設定起來相當充足;三、w3m 有 menu 的設定,可以利用 menu 做為命令列的代替之一。

以下是自己w3m 的快捷鍵設定,相較於 Vim,也使用了不少 pentadactyl 的概念在裡面。因此,Buffer 和 tab(分頁) 同義,而使用 history 來指稱歷史記錄。在 vim 中,buffer 指的是所有開啓過檔案的暫存,包含分頁開啓的。


$HOME/.w3m/keymap

# A sample of ~/.w3m/keymap (vim)
#
# Ctrl  : C-, ^
# Escape: ESC-, M-, ^[
# Space : SPC, ' '
# Tab   : TAB, ^i, ^I
# Delete: DEL, ^?
# Up    : UP, ^[[A
# Down  : DOWN, ^[[B
# Right : RIGHT, ^[[C
# Left  : LEFT, ^[[D
# vim :set fdm=marker noet
# invalidate defaults {{{
# 取消預設 keybinding。
keymap C-@  NULL
keymap C-a  NULL
keymap C-b  NULL
keymap C-e  NULL
keymap C-f  NULL
keymap C-g  NULL
keymap C-h  NULL
keymap TAB  NULL
keymap C-j  NULL
keymap C-k  NULL
keymap C-l  NULL
keymap C-m  NULL
keymap C-n  NULL
keymap C-p  NULL
keymap C-q  NULL
keymap C-r  NULL
keymap C-s  NULL
keymap C-t  NULL
keymap C-u  NULL
keymap C-v  NULL
keymap C-w  NULL
keymap C-z  NULL

keymap SPC  NULL
keymap !  NULL
keymap \"  NULL
keymap #  NULL
keymap $  NULL
keymap (  NULL
keymap )  NULL
keymap +  NULL
keymap ,  NULL
keymap -  NULL
keymap .  NULL
keymap /  NULL
keymap :  NULL
keymap ";"  NULL
keymap <  NULL
keymap =  NULL
keymap >  NULL
keymap ?  NULL
keymap @  NULL
keymap B  NULL
keymap D  NULL
keymap E  NULL
keymap F  NULL
keymap G  NULL
keymap H  NULL
keymap I  NULL
keymap J  NULL
keymap K  NULL
keymap L  NULL
keymap M  NULL
keymap N  NULL
keymap Q  NULL
keymap R  NULL
keymap S  NULL
keymap T  NULL
keymap U  NULL
keymap V  NULL
keymap W  NULL
keymap Z  NULL
keymap [  NULL
keymap ]  NULL
keymap \^  NULL
keymap a  NULL
keymap b  NULL
keymap c  NULL
keymap g  NULL
keymap h  NULL
keymap i  NULL
keymap j  NULL
keymap k  NULL
keymap l  NULL
keymap m  NULL
keymap n  NULL
keymap o  NULL
keymap q  NULL
keymap r  NULL
keymap s  NULL
keymap u  NULL
keymap v  NULL
keymap w  NULL
keymap z  NULL
keymap {  NULL
keymap |  NULL
keymap }  NULL

keymap M-TAB  NULL
keymap M-C-j  NULL
keymap M-C-m  NULL

keymap M-:  NULL
keymap M-<  NULL
keymap M->  NULL
keymap M-I  NULL
keymap M-M  NULL
keymap M-W  NULL
keymap M-a  NULL
keymap M-b  NULL
keymap M-c  NULL
keymap M-e  NULL
keymap M-g  NULL
keymap M-k  NULL
keymap M-l  NULL
keymap M-m  NULL
keymap M-n  NULL
keymap M-o  NULL
keymap M-p  NULL
keymap M-s  NULL
keymap M-t  NULL
keymap M-u  NULL
keymap M-v  NULL
keymap M-w  NULL

keymap UP  NULL
keymap DOWN  NULL
keymap RIGHT  NULL
keymap LEFT  NULL

keymap M-[E  NULL
keymap M-[L  NULL
keymap M-[Z  NULL

keymap M-[1~  NULL
keymap M-[2~  NULL
keymap M-[4~  NULL
keymap M-[5~  NULL
keymap M-[6~  NULL
keymap M-[28~  NULL

# }}}

# Page/Cursor motion {{{
keymap C-f NEXT_PAGE
# pentadactyl-like
keymap SPC NEXT_PAGE
keymap C-b PREV_PAGE
keymap l MOVE_RIGHT
keymap h MOVE_LEFT
keymap C-d MOVE_DOWN
keymap C-u MOVE_UP
#keymap  MOVE_RIGHT1
#keymap  MOVE_LEFT1
keymap j MOVE_DOWN1
keymap k MOVE_UP1
keymap C-y DOWN
keymap C-e UP
keymap zH SHIFT_LEFT
keymap zL SHIFT_RIGHT
keymap zh LEFT
keymap zl RIGHT
keymap 0 LINE_BEGIN
keymap \^ LINE_BEGIN
keymap $ LINE_END
keymap zz CENTER_H
# self add
keymap zZ CENTER_V
#keymap M-g GOTO_LINE
keymap gg BEGIN
keymap G END
keymap w NEXT_WORD
keymap b PREV_WORD
# emacs-like
keymap C-a LINK_BEGIN
keymap C-e LINK_END
keymap TAB NEXT_LINK
# pentadactyl-like, maybe change to ]l
keymap ] NEXT_LINK
keymap M-TAB NEXT_LINK
# pentadactyl-like, maybe change to [l
keymap [ PREV_LINK
# pentadactyl-like
keymap f MOVE_LIST_MENU
#keymap  NEXT_RIGHT
#keymap  NEXT_LEFT
#keymap  NEXT_DOWN
#keymap  NEXT_UP
#keymap  NEXT_RIGHT_DOWN
#keymap  NEXT_LEFT_UP
keymap C-o UNDO
keymap C-i REDO
#}}}

# Hyperlink operation {{{
keymap C-m GOTO_LINK
keymap C-j GOTO_LINK
# original-setting
keymap C-t TAB_LINK
#keymap M-C-j SAVE_LINK
#keymap M-C-m SAVE_LINK
# original-setting
keymap I VIEW_IMAGE
#keymap M-I SAVE_IMAGE
#keymap  SUBMIT
# peek curl url
keymap c PEEK 
#keymap u PEEK_LINK
# original-setting
keymap i PEEK_IMG 
keymap gC-g INFO
keymap C-g LINE_INFO
# automark url use w3m setting
#keymap : MARK_URL
#keymap ";" MARK_WORD
#keymap M-: MARK_MID
#keymap F FRAME
#keymap M EXTERN
#keymap M-M EXTERN_LINK
#keymap L LIST
# pentadactyl-like
keymap F LIST_MENU
# }}}

# File/Stream operation {{{
#keymap :o GOTO
keymap o GOTO
keymap O GOTO_RELATIVE
#keymap :t TAB_GOTO
keymap t TAB_GOTO
keymap T TAB_GOTO_RELATIVE
#keymap :r LOAD
keymap @ READ_SHELL
keymap # PIPE_SHELL
keymap | PIPE_BUF
# }}}

# Buffer operation {{{
#keymap B BACK
keymap L NEXT
keymap H PREV
#keymap :his SELECT_MENU
keymap ,be SELECT
keymap gf VIEW
#keymap :w SAVE
#keymap :W PRINT
# self add: edit mode, or use i/I?
keymap e EDIT
#keymap S SAVE_SCREEN
keymap E EDIT_SCREEN
keymap r RELOAD
#keymap  RESHAPE
keymap C-l REDRAW
#keymap  DISPLAY_IMAGE
#keymap  STOP_IMAGE
# }}}

# Tab operation {{{
# TODO may change to C-tC-t
#keymap C-t NEW_TAB
#keymap C-w CLOSE_TAB
keymap d CLOSE_TAB
keymap D CLOSE_TAB
keymap gt NEXT_TAB
keymap gT PREV_TAB
#keymap b TAB_MENU
#keymap :buffer TAB_MENU
# TODO may change to C-tl
keymap C-wl TAB_RIGHT
keymap C-wC-l TAB_RIGHT
keymap C-wh TAB_LEFT
keymap C-wC-h TAB_LEFT
# }}}

# Boookmark operation {{{
# confilct to TAB_MENU
#keymap :bmarks VIEW_BOOKMARK
keymap a ADD_BOOKMARK
keymap A ADD_BOOKMARK
#keymap M-b BOOKMARK
# }}}

# Search {{{
keymap / SEARCH
keymap ? SEARCH_BACK
keymap n SEARCH_NEXT
keymap N SEARCH_PREV
keymap C-r ISEARCH_BACK
keymap C-s ISEARCH
# }}}

# Dcitionary look-up {{{
# TODO see README.dict
#keymap M-w DICT_WORD
#keymap M-W DICT_WORD_AT
# }}}

# Mark operation {{{
# TODO knowing how to use this feature
# FIXME confilct with menu
keymap m MARK
# self add
keymap C-n NEXT_MARK
keymap C-p PREV_MARK
# self add
keymap \" REG_MARK
# }}}

# Miscellany {{{
# self add
# ranger-like: gx to go other position
keymap : MENU
# self add
#keymap :map ? HELP
# self add
#keymap :pref OPTIONS
#keymap C-k COOKIE
#keymap :ver VERSION
#keymap C-h HISTORY
# plugin-like
#keymap ,be HISTORY
#keymap :dl DOWNLOAD_LIST
#keymap  CHARSET
#keymap  DEFAULT_CHARSET
# pentadactyl-like: :dia console
#keymap :mes MSGS
#keymap m MOUSE_TOGGLE
#keymap C-w WRAP_TOGGLE
#keymap :: COMMAND
# self configured i3-like: open dmenu
keymap M-c COMMAND
#keymap  ALARM
#keymap M-o SET_OPTION
#keymap  SETENV
#keymap :map DEFINE_KEY
# pentadactyl-like :rehash
#keymap :source REINIT
keymap ! SHELL
keymap C-c INTERRUPT
#keymap :q QUIT
keymap ZZ QUIT
keymap ZQ EXIT
keymap C-z SUSPEND
# }}}

# User defined keymaps {{{
# goto homepage
keymap gh GOTO https://www.google.com/
keymap gH TAB_GOTO https://www.google.com/
# }}}

$HOME/.w3m/menu

# A sample of ~/.w3m/menu  (submenu type)
#
# menu MENU_ID
#  func  LABEL FUNCTION KEYS
#  popup LABEL MENU_ID  KEYS
#  nop   LABEL
# end
#
# MENU_ID
#  Main:   Main Menu
#  Select: Buffer selection menu

menu Main
 func ":            (:)" COMMAND  ":"
 nop "----------------"
 func ":open        (o)" GOTO  "oO"
 func ":tabopen     (t)" TAB_GOTO "tT"
 func ":read        (r)" LOAD  "rR"
 nop "----------------"
 func ":w           (w)" SAVE  "w"
 func ":W           (W)" PRINT  "W"
 nop "----------------"
 func ":history     (h)" SELECT_MENU  "hH"
 popup ":b-         >(b)" Bxxx      "bB"
 func ":dl          (d)" DOWNLOAD_LIST "dD"
 nop "----------------"
 func ":source      (s)" REINIT  "sS"
 popup ":m-         >(m)" Mxxx  "mM"
 func ":preferences (p)" OPTIONS  "pP"
 func ":version     (v)" VERSION  "vV"
 nop "----------------"
 func ":quit         (q)" QUIT  "qQ"
end

menu Bxxx
 func ":buffers     (u)" TAB_MENU "uU"
 func ":bmarks      (m)" VIEW_BOOKMARK "mM"
end

menu Mxxx
 func ":map         (?)" HELP  "?"
 func ":messages    (e)" MSGS  "eE"
 func "map keys     (m)" DEFINE_KEY "mM"
end


另外,如果有更新版本會同步到lycsjm/homeconfig 下的 .w3m 中。

2012年8月12日 星期日

使用 github.com 同步管理個人資料設定檔

#老實說這幾天堆了一大堆沒寫的資料在 blog 中,但是都不是很想動筆,剛好現在想動手指而又找不到遊戲可以玩,就轉成寫文章的動力好了。

之前在 Github.com 上找資料時曾經看過有人在上面管理 .vim/.vimrc 甚至是整個 $HOME directory 上的多個 dotfile 的管理,只是一直都沒有付諸實行,直到這次硬碟壞掉才真正付諸實行。


目前選用的是 Sursolid 的方法,自己用 alias 設定一個新的命令,如此一來既不用創一堆連結,也不會讓 $HOME 資料夾變成一個 git 的 repo。


首次設定

# 創 git repo 的資料在 $HOME 下 $ cd ~ $ mkdir .homeconfig.git # homeconfig 之簡寫,因為太長不好打 $ echo "alias hc='git --git-dir=$HOME/.homeconfig.git/ --work-tree=$HOME'" >> .zshrc $ source .zshrc # 初始化 git repo $ hc init $ hc add .zshrc $ hc commit -m 'Initial commit' # 上傳到 github $ hc remote add origin git@github.com:GITHUB_USERNAME/homeconfig.git $ hc push origin master 
同步設定:
$ cd ~
# 備份
$ mv .zshrc .zshrc.bakup
$ git clone git@github.com:GITHUB_USERNAME/homeconfig.git homeconfig.git
$ mv homeconfig.git/.git .homeconfig.git
# 連 dotfile 也一起複製到 .
$ setopt -s dotglob
$ mv -i homeconfig.git/* .
$ rmdir homeconfig.git

另外由於 repo 本身就位於 $HOME 下,創建 $HOME/.gitignore 等於對所有的 git repo 生效,若只有本 project 要單獨忽略的檔案要改寫在 $HOME/.homeconfig.git/info/exclude中


題外: blog 的 syntax highlighter  果然還是件麻煩的事,最想要 Python 的那種 code block ,可移除 >>> 和 return value 只留下可輸入的程式碼。

另外針對設定檔不在 $HOME 下而要使用 sudo 修改的此篇也不適用,不過在知道 patch 和 git patch 可用的情況下應該可多少做個備份。

參考:
Managing home .dotfiles with git and GitHub - Sursolid
c9s: 使用 Git 管理自己的 dotfiles
GitHub does dotfiles - dotfiles.github.com

2012年7月6日 星期五

Arch Linux 下將 FTP 掛載為虛擬硬碟

昨天在聽到學長說 Win 7 可以將 ftp 的連線做為虛擬硬碟連線,所以也想查查在 Arch Linux 的用法。

要掛載 ftp  需要安裝 curlftpfs, 在 Arch Linux 中放在 Community Repo 中:
$ sudo pacman -S curlftpfs
安裝後下此命令掛載

$ sudo curlftpfs -o user=<user>:<password>[,<option>] ftp://<url>[:<port>] /<mount path>

即可,其他自己使用到到的選項在以下列出:
allow_other: 讓一般使用者也可存取(而不只是 root)
ssl_try:  嘗試使用 SSL/TLS ,但若 FTP Server 不支援的話則不使用。
no_verify_peer: 當連上使用 SSL 的 FTP 的 Server 時,不驗證 CA。
codepage=<encode>: 設定 Server 的編碼

另外,自動掛載以可將下列命令寫入 /etc/fstab
curlftpfs#<user>:<password>@<url>[:<port>] /<mount path> fuse auto,user,uid=1000[,<option>] 0 0
另外,記得修改 /etc/fstab 的權限為 640 或 600,否則密碼就被其他人知道了。


reference:
Mount FTP - ArchWiki:掛載 FTP 的範例
curlftpfs(1): mount ftp host as local directory - Linux man page : curlftpfs 的指令選項

2012年6月14日 星期四

zsh 筆記(LaTeX 同步版)

zsh 筆記

lycsjm
June 15, 2012
最近比較偏好用 TeX 把文章打完再貼上來的模式了,不過因為 Blogger 還沒有微調過所 以看起來很醜 Orz。這篇文章會在我更新 LaTeX 時更新。
按鍵綁定:
在 bash 中的 bind 在 zsh 改用 bindkey,如果寫了
bind ’"
C-o":"ranger-cd
C-m"’
在 zsh 中則要寫成
bindkey -s "
C-o" ranger-cd"
C-m"
其中 -s 代表將其後的內部字串轉輸出成外部字串,當成手動輸入的命令來使用。
Last modified: Friday, June 15th, 2012 12:04:13am