调教三星 DeX 的输入法

不知道有多少人是被 DeX 吸引到三星 Galaxy S 系列中的,DeX 可是其中一个很大的卖点(至少在欧洲和北美市场, DeX 是重点宣传的功能)。连上显示器(现在支援无线 DeX 了),或者平板切换开启 DeX 模式,马上生产力上升了好几倍!

然后马上你就会发现输入法被锁死在三星键盘上了。无论你本来喜爱的是谷歌的 GBoard 还是搜狗拼音,都被三星键盘替代了(退出 DeX 后输入法会变回去)。

三星键盘的中文录入是勉强能用级别,明显的卡顿和超过10个候选词的界面让你觉得这软件就没有 QA 的。搜索了一大圈网络教程,亲测使用 adb 可以修改 DeX 的输入法(Android 11, One UI 3.1)。

比如更改成谷歌 GBoard :

adb shell ime set com.google.android.inputmethod.latin/com.android.inputmethod.latin.LatinIME

当然如果你的设备已经外接到显示器和键鼠了,又怎么通过 PC 或 Mac 来执行 adb 指令呢?好消息是 Android 开发者选项现在打开 WiFi adb debugging 了!更好的消息是你可以安装 Termux 然后下载为 Termux 预编译好的 adb 二进制程序,直接从手机/平板运行 adb 来改输入法。

另一个反人类的默认设置就是键盘候选框会显示在手机(或者平板电脑)上,这在打字的时候要去侧头看另一边来输入汉字简直莫名其妙。好在解决这个问题有个很简单的设置项(埋在了Samsung DeX里)。

设置 -> Samsung DeX -> 键盘 -> 屏幕键盘位置, 改成“电视或显示器”

写到这里, DeX 的中文输入依然不好用(稍微能用一点了),在普通 Android 界面下能够追随光标的 GBoard 在 DeX 下也不能跟随光标了。而且输入习惯和 PC 或 Mac 上的输入法有所区别,也还是只能算勉强能用级别了。

Fedora Linux with MATE Desktop on Android

I know some of you geeks have already done something like that, running a GNU/Linux distribution on top of an Android device. It’s an interesting time, with projects like proot we don’t need root privilege on our Android devices to run a containerized Linux environment. Here in this post, I’ve written down the steps that I’ve taken to have a usable desktop environment up running on my Galaxy Tab S5e (this blog post has been written up purely within such environment).

Continue reading “Fedora Linux with MATE Desktop on Android”

来份Brunch笔电瞬间变身Chromebook

自从几年前卖掉华硕的一台小Chromebook后,看到Android和Linux应用程式的支持增加,又开始有点馋涎Chromebook……不过因为今年疫情全球大爆发,电子产品(尤其是适合居家办公和学习的)价格一路上扬(或者缺货)。Chromebook今年出货量增长更是迅猛(Windows PC, MacBook, Chromebook分类中增长幅度最大)。问我这台2015年买的老笔电尚能饭否?答曰:Brunch

出厂预装的Windows 10早被我卸载干净了,单Linux系统(OpenSUSE)用了有一年多了,看到Brunch这个项目能在自己笔电上体验Chrome OS变身Chromebook,赶紧试验了一把,没想到效果出奇地好!这里特意用中文记载一下Linux下安装Chrome OS和后续升级的办法以供中文网络世界的朋友参考。

Continue reading “来份Brunch笔电瞬间变身Chromebook”

Building Linux Kernel on Odroid-U3

This is the year 2020, Odroid-U3 is far from a powerful ARM development board in today’s standard, but it is still more than capable! Quad-core ARMv7 CPU and 2GB RAM, which means I can still run some light services and test my toy projects without paying any fees to AWS or Azure. The year 2020 also means that this little device can be powered by the mainline Linux kernel without many troubles (if any)! Better than that, the process is ridiculously straightforward!

In this post, I put together the steps I did to build the Linux kernel using upstream mainline source code natively on Odroid-U3. If you’re interested in cross-building from your x86 machines, you can find plenty of tutorials on that on the Internet.

Continue reading “Building Linux Kernel on Odroid-U3”

Virtual Linux Desktop Experience in Azure

I wouldn’t believe that I will be writing this 10 years ago. It’s 2020 though. Microsoft has improved a lot of services for Linux, ranging from developer tools like Visual Studio Code, to the protagonist today: Azure (cloud computing). Azure has steadfastly become a real credible alternative to Amazon EC2 (or AWS in general). Today, I want to share my experience of using a virtual machine on Microsoft Azure cloud. To be more specific, it is a Linux desktop virtual machine (SLES 15).

Continue reading “Virtual Linux Desktop Experience in Azure”

Visual Studio Code Server on Android

Microsoft has been steadily enhancing Visual Studio Code Remote Development. One of the components is VS Code Server, which is also open-source and hosted at GitHub. With VS Code Server, you can use Visual Studio Code in a browser. The usual setup involves a server (a VPS perhaps) that hosts the code server. It turns out that it’s also possible to run them locally on your Android device! Here is how.

Continue reading “Visual Studio Code Server on Android”

Announcing YapStocks 2.0

Over the last few weeks, I’ve been working on a new plasmoid (KDE Plasma Applet) that provides a simple interface to monitor stocks. The first version was rather basic, being able to show the current market price only. Now it’s time to announce the availability of the second iteration of YapStocks (Yet Another Plasma Stocks Applet). I’ve recorded a short video clip showcasing all the features it has, ranging from the information summary to the historical price chart.

Continue reading “Announcing YapStocks 2.0”

Hands-on Sailfish OS on Redmi Note 7

Not sure if this is related to the COVID-19 lockdown, but we’ve seen a lot of geeky hobby projects coming up recently. A lot of community ports have been done over the last few months for niche mobile operating systems such as Sailfish OS. That’s exactly the one I played with briefly after purchasing a second-hand Redmi Note 7 on eBay (don’t ask me if I think it’s a waste of money now LOL).

If you come here hoping to find the resources, head to the GitHub repo directly where you can find the ROMs to download.

Make sure that you’ve unlocked the bootloader already! If not, you need to register a MI account and apply for unlocking here. You must log in to your MI account on both the unlocking tool and your phone (MI, POCO, RedMi). If you don’t have a Windows PC, I recommend using XiaoMiTool V2 which works on macOS, Linux, as well as Windows. Though I couldn’t find this on the official FAQ, you have to have a working SIM card inserted. You have to use the mobile data instead of WiFi when unlocking the bootloader on your phone because XiaoMi is doing some verification.

Another problem I encountered was that in fastboot mode, RedMi Note 7 would just say “Press any key to reboot” when any commands are sent from my laptop. After googling on this, there seems to be a driver bug that makes RedMi Note 7 fastboot USB3 unfriendly. Using a USB-Hub worked for most people, including me 🤷.

I wish you all a successful attempt to flash Sailfish OS into your RedMi Note 7. Here are some screenshots I took.

Continue reading “Hands-on Sailfish OS on Redmi Note 7”

讓你的WordPress小站搭上WebP的快車

Google家開源的WebP圖形編碼格式出來已經好幾年了,瀏覽器支援率現在也是非常高的了(現代瀏覽器就Safari不支持)。相比於常用的JPEG和PNG,使用WebP可以節省高達80%的空間(在今天行動網路的時代,這意味着更快的載入)。

當然了,還是不想拋棄堅守Internet Explorer和蘋果家Safari的用戶,所以我們需要一個聰明的外掛程式,在支援WebP的瀏覽器上使用WebP圖形,不支援的話則提供JPEG或者PNG檔案。隨便Google到的一個頗爲流行的免費開源程式WebP Express就是這輛帶我們上路的快車。

在WordPress後臺Plugins頁面搜尋下載好WebP Express並啓用。如果你使用的是Apache,它開箱即可用。如果你使用的是nginx,則需要按照說明稍微配置一下。這裏用的是nginx,而我選的是簡單的CDN Friendly選項,然後批量將全部圖形檔案轉換成了WebP(原始檔案是不會動的)。Alter HTML那個選項一定要開啓不然什麼也不會發生……

用此前的日本兩京遊記做了一下對比,未啓用掛件的時候頁面大小爲1.8MB,加載用時4.32秒。啓用掛件後頁面大小減少到了1.4MB,加載用時3.52秒。對比提升效果還算明顯,當然了,那篇文章裏面照片很多,一般的文章頁面效果估計甚微。

Use npm packages in QML

I’ve been trying to code up some nice GUI for a hobby project which was done in JavaScript (Node.JS). I’ve looked at a few options that I have

  1. Use the not-yet-stable NodeGUI
  2. Go Web and use Electron
  3. Rewrite the core in Python or C++ to use Qt
  4. Use QML which has limited support for JavaScript

I’ve explored the option 1, however, I soon ran into the problems with the Model/View/Delegate architecture which means I would have to implement native plugins/add-ons in order to use ListView. Not to mention the framework itself is still heavily under development.

As for option 2, I’m not a web frontend engineer and personally I much prefer something that is native (or looks and feels native at least). For the third option, it feels a bit overkill but it is a possible way out.

Luckily I don’t have to do the re-implementation, because I’ve managed to get the core functionality bundled into a single JS file which works flawlessly in the QML environment. Before I start diving into the details on how you can make your npm packages work in QML, I have to emphasise that there are many limitations in the QML environment and it’s very likely that only a small subset of the npm package that you’re interested in is going to work.

Continue reading “Use npm packages in QML”