2014年05月24日

KRunnerのプラグインを作ってみる

私がWindows使ってて非常によく使うショートカットが「Win+R」です。
何が便利かって、主に以下の理由です。

1.「c:」や「e:」でドライブルートを即開ける(キーを5回押すだけ!)
2.「cmd」や「calc」等、パスが通ってるexeを即開ける
3.あらゆるWindowsで動作する

頻繁に使うものは自前で作ったランチャーで開くんですが、
そうでもないものは大体これで開く癖がついています。
(なので、スタートメニューから起動ってほとんどしません)

KDEにしてみた時、KRunnerがそれっぽかったんで
キー割り当てて使ってたんですが、やっぱりWin+Rみたいにはいかない。

一応Linuxルートは「/」だけで開けるんですが、
ドライブのルートを開くには「/media/USER/C」まで打たないといけない。
端末は「konsole」と7文字も必要。c:とかcmdとか使わせて欲しい。

なので、作ってみました。KRunnerのプラグイン。

で、まず困ったのは、日本語の情報少なすぎィ!
2大デスクトップの1機能のプラグインですよ?Windowsだったら
掃いて捨てるほど出てくるでしょうに、もう全然ない。皆無。空虚。

まあいい。仕方ない。英語大嫌いな私が頑張りました。
※ これ見たLinux好きでPGではなくて翻訳できる人、頑張ってください。

本家はこっち。英語出来る人ならすぐ分かります。
http://techbase.kde.org/Development/Tutorials/Plasma/PythonRunner
私はNifty翻訳先生に聞きながら。半分はソースなんで楽ではありました。

続きを見る

タグ:python KRunner
posted by Nick at 15:10| Comment(0) | TrackBack(0) | Linux

2014年05月20日

Linuxでゲーム

ああ、まあ、うん、無理なんでしょうね。 
結構色んな所で「それは諦めろ」的なことが書いてたので。 
 
とはいえ私はゲーマーですし、(爆音ゲームPCにする程ではないですが) 
そう言われてもなーってことでWinゲームを動かすために色々やってみたんですよ。 
 
wine 
 グラボの性能が50%ほどダウン。2Dは80%ダウン。これはひどい。
 加えて動かないのはよくある話。
 
VirtualBox 
 wine様助けて〜と言いたくなるレベルで遅い。
 そして想定外だったのが、動かないのが結構ある。
 ホストXPゲストXPで完全動作確認済みなのに、
 ホストLinuxゲストXPだと動かない。
 現象的にVBoxのグラボのせいっぽいんですが、これ直るんだろうか…?
 
VMWare 
 VirtualBoxとwineのいいとこ取り…かな。
 グラボ性能はwine並、動作するのはVirtualBox並。
 でもこれ使うの怖い。だってlinux使ってて初めてフリーズしたんですよ?
 
XPをサブマシンで動かしてRDC 
 RDCはゲームでやるもんじゃないってのを心底痛感しましたので論外で。
 
XPをサブマシンで動かしてデスクトップチェンジャー 
 うわ懐かしい単語。10年前ぐらいだと結構流行ってました。
 ケーブル関連はどうとでもなるのでまあ大体問題無いんですが、
 メインPCが宝の持ち腐れになってますねぇ…
 
結論は「wine/vbox/vmwで動かなければ素直にwindowsを使え」です。 
うーん、やはり先人は偉大ですなぁ。 
 
とはいえ収穫もありました。 
 
PCSX2です。これは凄いですよ。ほぼ完璧な動作と日本語。 
フルスクリーンにするともはや実機と変わらない。 
昔触った時は全然ダメで、まだまだ時間かかるんだろうなーと思ったんですが、 
ここまで来ているとは思いませんでした。しかもLinuxで実感するとは。 
※ ただし、スピードハックが出来ません。本当に実機と変わりませんね。 
posted by Nick at 20:40| Comment(0) | TrackBack(0) | Linux

2014年05月03日

はじめてのg++

フゥゥーー……
初めて…………g++でコンパイルしちまったァ〜〜〜〜〜♬
でも想像してたより、なんて事はないな。

smplayerをソフトウェアの管理から入れてみたんですが、英語のまま。
管理経由で入れると結構英語のままになることが多いので、
たぶんLinuxMintKDEのどっかの設定ファイルがEnglishかDefaultのままだと
思うんですが、どこかがわからないので、とうとうやってしまいました。

なんなんでしょうね、これ。
なんて事はないどころか簡単すぎて愕然。

やったことと言えば解凍してsh流してdeb右クリックしただけ。
ヘッダが足りないとかlibが足りないとかDEFINEされてないとか
そんな関数はありませんとかセキュリティ上廃止されましたとか言われずに
平然と全コンパイル通った上にdebまで作ってくれてる。なにこれ怖い。

これがオープンソースの文化ってやつですか。
恐ろしいにもほどがある。

Windowsでもたまにソース置いてくれてたりするんですよ。
libzipとかフリー作者とか親切な人もいるもので。
でも、解凍したのをそのままコンパイルできたことがほとんど無い。
上記みたいなことを散々言われたあげく、ようやく通ったと思ったらクラッシュ。
libzipの時は諦めてコンパイル済みのlib使ってました。

これがLinuxの世界なんですねぇ。とうとう入門してしまいました。
タグ:Linux g++
posted by Nick at 18:48| Comment(0) | TrackBack(0) | Linux

2014年05月01日

失われしVBA

いやね、昔からオープンオフィス系はいろいろ期待してましてね。
でもまあどれもまず間違いなく無理だったのがVBAなんです。
(COMエディタ+言語みたいなものなので、無理なのは当たり前なんですが)

個人的な希望で言えばWin32APIやVarPtr、さらにCOMなんかを全サポートしてくれれば
最高なんですが、それはさすがに高望み。それはWindowsしか出来ないこと。

でもねぇ。

Msgbox "Hello?"

この程度すら、2、3年前のオープンオフィスは出来ませんでした。
LibreかOpenか、どちらかが落ちて、どちらかが関数が存在しませんエラー。

だからもう端から期待してなかったんですが、
LibreOfficeの設定に、「Excelのマクロを実行する」みたいなのがあって。

これ、つまりですね、「俺はそれぐらい動かせる」って自信でしょ?…本気?

で、やってみたら・・・

test0.png

おお!動いた!
これは…もしかしてやってみる価値はある?

じゃあ次だ。これは出来るかな?

Sub test()
 dim wb as workbook
 set wb = thisworkbook
 msgbox wb.worksheets.count
End Sub

実に簡単ですが、少なくともExcelのCOMはサポートしないと動きません。
さあどうだ?

test.png

おお、ちゃんと返した!まさかここまで進化してるとは!

ならWin32API抜きかつCOM抜きのVB6でどうだ?
Sub test2()
 ' ブートフォルダ直下にある全ファイル検索
 dim fnm$,ret$
 fnm = dir("/boot/",31)
 do
  if fnm= "" then exit do
  if fnm = "." then goto nd
  if fnm = ".." then goto nd
 
  ret = ret & fnm & vbcrlf
 
  nd:
  fnm = dir()
 loop

 msgbox ret
End Sub

test2.png

うおお!ここまで!ラピュタは本当にあったんだ!

じゃあ本番。適当にLibreOfficeの情報を書き出して保存。
Sub test3()
 dim xl as excel.application
 dim wb as workbook
 dim ws as worksheet
 set xl = application
 set wb = xl.workbooks.add()
 set ws = wb.worksheets(1)
 
 ws.range("A1").value = "情報"
 ws.range("A2").value = "ブック数":ws.range("B2").value = xl.workbooks.count
 ws.range("A3").value = "シート数":ws.range("B3").value = wb.worksheets.count
 ws.range("A4").value = "アプリケーション名":ws.range("B4").value = xl.name
 
 wb.saveas "~/test.xls"
 wb.close
End Sub

test3.png

おおー、でけたでええええ

なるほど、その自信のほどはよく分かった。よく頑張った。
でもアプリケーション名「Microsoft Excel」はワロタ。偽装すんなw

と、それなりに興奮したんですが、案の定制約が結構ある。

APIコール系はアウト。VarPtrも不可。
 これは仕方ない。
 
他COMは呼べない。作れない。
 dim xl as New Excel.Application
 こんなのも不可。どうも自プロセス限定ぽい。
 CreateObjectも当然不可。

インテリセンスが使えない
 これが正直一番痛い。サポートしてない関数結構あるっぽいのに
 使えるかどうかも分からない。

Debug不可
 ブレークポイントは可能。ウォッチも可能。
 でもイミディエイトウィンドウが無い。変なの。

結論として、当たり前ですが、COMではなく、
エクセルマクロエミュレーターってのが一番近そう。
でも、「もしかしたら2、3年前に落ちてたのは
Windowsで動かしてたから?」って思うぐらいには良くできてる。

インテリセンス使えるようになったら、
これだけでもLinuxにする価値はあるかもしれません。
(そんな評価するのは私ぐらいでしょうが)
posted by Nick at 06:38| Comment(0) | TrackBack(0) | Linux