Awtk memo

Download node-v16.14.0-x64.msi from
https://nodejs.org/en/
or for win7 is
https://nodejs.org/download/release/v13.6.0
install it in Adminstrator cmd console.

Official repository:
https://github.com/zlgopen/awtk

1
2
3
4
5
6
python -m pip install pywin32
python -m pip install scons
 
cd awtk-master
scons
bin\demoui

Debug after attach demoui.exe,

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
awtk-master\demos\demo_ui_app.c
 application_init
  WIDGET_FOR_EACH_CHILD_BEGIN(window_manager(), root, i)
   init_children_widget(root, (void*)win)
    widget_foreach(widget, init_widget, ctx)
     widget_on(widget, EVT_CLICK, on_menu_bar_open, win)
      on_menu_bar_open
       open_menu_bar
 
label_paint_text
 widget_draw_text_in_rect
 
window_create
 edit_create
 button_create
 label_create
  widget_set_text
window_close
dialog_create_simple
 dialog_set_title

Ui and style,

1
2
3
4
5
6
7
8
9
#doc/theme.md
bin/themegen input.xml output.bin -
 
#doc/ui_desc.md
bin/preview_ui demos/assets/raw/ui/main.xml
bin/xml_to_ui window1.xml window1.data
#include "res/ui/window1.data"
assets_manager_add((const asset_info_t*)ui_window1);
widget_t* win = window_open(name);

Message box,

Read more

Musicians memo

古典

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
1770-1827	贝多芬/乔安娜/卡尔
1810-1849	肖邦
 
		肖斯塔科维奇
			第二圆舞曲
 
		德沃夏克
			From the new world 第九交响曲,第四章
			幽默曲
 
		勃拉姆斯
			作品44号 第四首
 
		柴可夫斯基
			六月船歌
		维托里奥_蒙蒂
			查尔达什舞曲
 
		李斯特
			Six Consolations, S.172 安慰曲 No.3
 
		Erik Satie 萨蒂
			3 Gymnopedies, No.1
		维瓦尔第
			四季-冬

中文

1
2
		田一名
			给我一首歌的时间

欧美

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
		ABBA
			I have a dream
			Gimme Gimme Gimme
		Richard Marx
			Right here waiting
		Bryan Adams
			Here I am
			Everything I do
		Billy Joel
		David Bowie
			Moonage Daydream
			Heros
			Ashes to Ashes
			Cat People
			Fashion
			Let's Dance
			I'm Afraid Americans
			Valentine's Day
		Lady Gaga, Bradley Cooper
			Shallow
			Always Remember Us This Way
		Taylor Swift
			Clean
		P!nk
			Try
		Kelly Clarkson
			Because of You
		The Police
			Every Breath You Take
		Dan Fogelberg
			Sutter's Mill
		Joel Hanson & Sara Groves
			Traveling light
		Mariah Carey
			We Belong Together
		Eric Clapton
			Tears In Heaven
			Wonderful Tonight
		Yoni Schlesinger - Pink Floyd
			Shine On You Crazy Diamond
		Alan Walker
			Fade
			The Spectre
			All Falls Down
		Bruno Mars
			Talking to the moon
		Ava Max
			Salt
		PBH & Jack
			Funk You
		SIA
			Move Your Body
		梦龙乐队
			Believer
		萌德&卡妹
			Señorita
			Havana
		Alice Merton
			No Roots
		Darin Zanyar
			Be What You Wanna Be
		Groove Coverage
			Far Away From Home
		雷纳德·席尔瓦
			The Way I Still Love You
		Joel Hanson & Sara Groves
			Traveling Light
		Austin Mahone & Rich Homie Quan
			Send It
		Glenn Frey
			The One You Love
		Haley Reinhart
			I Put A Spell On You
		Patrice Rushen
			Forget Me Nots
		Post Malone
			Circles
		Hayd
			Head in the clouds
		Christina Aguilera
			Fighter
		待查
			summer train

日本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
		石川小百合
		伍代夏子
			舟
		坂本冬美 / 猪俣公章
		冰川清志
		多岐川舞子
		酒井法子
			微笑みを見つけた
 
		原广志
			摘星的晚上
		S.E.N.S
			風のように
		来生孝夫
			Goodbye Day
		谷村新司
			浪漫铁道
		德永英明
			Rainy Blue (25th Anniversary Track)
		当山ひとみ
			Cathy
		THE虎舞竜
			ロード

西语

1
2
3
4
		皮亚佐拉
			遗忘
		待查
			Despacito

Piano

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
		Bryan Adams
			Everything I Do
		Richard Clayderman
			星空
			秋日私语
		张信哲
			爱如潮水
		周传雄
			黄昏
		Audio Machine
			Breath and Life
		Peter Roe
			Last Reunion
		地狱咫尺
			star sky
		shirfine
			幻昼
		羽肿
			windy hill
		三亩地
			城南花已开
		高至豪
			you离开的事实
		文武贝
			繁华的寂静
		CMJ
			所念皆星河
		赵海洋
			夜空的寂静
			瞬间的永恒
		欧阳朵
			失去才懂
 
		待查
			穿越时空的思念
			夜的钢琴曲五
			Collapsing World
			Nevada

手风琴

1
2
		Venturi Carlo - 帕萨瑞尼
			怀念_华尔兹

Violin

1
2
3
4
5
6
7
8
9
10
11
		巴赫
			G弦上的咏叹调
		待查
			告白之夜
			五夜雨
			Experience
			下雨的时候
		Michel Colombier
			Emmanuel
		Era
			The mass

Guitar

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
		Albeniz
		Granados
		Falla
		Turina
		Joaquin Rodrigo
			Concierto De Aranjuez
		Nicolas de Angelis
			悲伤的西班牙
		Yves Montand
			Bella ciao 啊,朋友再见
		Paul Mauriat
			El Bimbo - 橄榄项链
		泰雷加
			鸽子
		周杰伦
			龙巻风
		Beyond
			喜欢you
		周传雄
			黄昏
		赵雷
			成都
		彭佳慧
			相见恨晚

Electric guitar

1
2
3
4
5
6
7
8
9
		Igor Paspalj
			Improvisation
			Away from You
		Paul Gilbert
 
		John Mayer
			Slow Dancing in a Burning Room
		MJ
			You Are Not Alone

Saxophone

1
2
3
4
5
6
7
8
9
		矢野立美
			Love Theme From Tiga
		待查
			Time
			Champagne Ocean
			Careless Whisper
			Dance Monkey
			New Thang
			Epic Sax Guy

未知

1
2
3
4
5
6
		ViceTone
			TuoZhao
		Mix Music
			Don't Cha
		糖爷
			Le Le Le Le La

网络

1
2
3
4
5
6
7
8
9
trouble im in - twinbed
love is gone - slander
past lives - b rns
melancholy - white cherry
numb - xxxtentacion
lullaby - rauf & faik
rather be - feat.jess glynne
Just to be in love
move your body - 希雅

refer to:
https://zhuanlan.zhihu.com/p/43272461
典藏音乐 x99700
罗兰之音4949
全球音乐榜单

Disable features in cmake command line

Identical to "./configure --help", when a project uses cmake, we get building instructions like below,

1
2
3
4
mkdir bld
cd bld
cmake ..
cmake . -L

wait a while we will see all the variables cmake defined in cache.

Or directly look into CMakeCache.txt.

If we want to modify a variable to off, or say, disable some functionality,

1
FEATURE_test_name:BOOL=ON

we run cmake once again like this,

1
cmake -DFEATURE_test_name:BOOL=OFF ..

refer to:
https://www.oschina.net/question/231677_45266

Build qt source in Fedora35

Extract qt-everywhere-src-6.2.2.zip to directory named qt,

sudo dnf install libxcb libxcb-devel xcb-util xcb-util-devel xcb-util-*-devel libX11-devel libXrender-devel libxkbcommon-devel libxkbcommon-x11-devel libXi-devel libdrm-devel libXcursor-devel libXcomposite-devel

cd qt
mkdir bld
cd bld
cmake -G Ninja -DCMAKE_INSTALL_PREFIX:PATH=`pwd`/installed -DCMAKE_BUILD_TYPE="Debug" ..
cmake --build . --parallel
cmake --install . --prefix=`pwd`/installed

Can't locate English.pm in @INC

sudo dnf install perl-English

This application failed to start because no Qt platform plugin could be init...

If "xcb" things missing, we should "dnf install libxcb..." like above, and an annoying step we can't image is after we install required packages, we must delete CMakeCache.txt first and then to invoke cmake, if not, some modules like xcb-sm are always displayed not to be built.

Feature accessibility_atspi_bridge is already defined to be "OFF" and should now be set to "ON" when importing features from Qt6::Gui.

We only need to not let the message interrupt building progress,

/mnt/SDC2/qt/bld/installed/lib/cmake/Qt6/QtFeature.cmake:1136

	message(STATUS "Feature ${feature} is already defined to be \"${QT_FEATURE_${feature}}\" and should now be set to \"${value}\" when importing features from ${target}.")

refer to:
https://download.qt.io/official_releases/qtcreator/6.0/6.0.1/qt-creator-opensource-linux-x86_64-6.0.1.run
https://wiki.qt.io/Building_Qt_5_from_Git#Linux.2FX11
https://forum.qt.io/topic/121386/built-qt6-from-sources-problem-with-xcb-plugin/15
https://forum.qt.io/topic/128887/build-qt6-from-source-xcb-issue/3
https://forum.qt.io/topic/92834/configure-errors-disabling-x11-accessibility-bridge-d-bus-or-at-spi-is-missing/7

Debug ue4 in Fedora35

After running Setup.sh and GenerateProjectFiles.sh, we found UE4.pro created. It's like a fresh breeze coming from the roof window, we are free now, no more need to fear the once unbearable torment in Visual Studio IDE.

Qt source is not necessary to ue4, qtcreator is only a visual debugger to ue4.

Build Steps:

1
make UE4Editor-Linux-Debug ShaderCompileWorker-Linux-Debug -j8

Clean Steps:

1
make UE4Editor-Linux-Debug ShaderCompileWorker-Linux-Debug ARGS=-clean -j8

refer to:
https://docs.unrealengine.com/4.27/en-US/SharingAndReleasing/Linux/BeginnerLinuxDeveloper/SettingUpQtCreator/

Build qemu in Fedora35

Build,

sudo dnf install ninja-build pixman-devel

cd qemu-6.2.0
mkdir bld
cd bld
../configure --enable-kvm --target-list=x86_64-softmmu --prefix=`pwd`/installed
make

Inspect through vnc,

dnf install vinagre

cd x86_64-softmmu
./qemu-system-x86_64 -m 3500 -smp 4 --enable-kvm -boot d -hda /mnt/DATA/vmimg/win7/win7.vmdk

Open vinagre, input "127.0.0.1:5900" in VNC host box, then connect, after a while we will see win7 running up.

Run in local gui,

sudo dnf install libepoxy-devel gtk3-devel

cd bld
../configure --enable-kvm --enable-gtk --enable-opengl --target-list=x86_64-softmmu --prefix=`pwd`/installed

cd x86_64-softmmu
./qemu-system-x86_64 -m 3500 -smp 4 --enable-kvm -display gtk,gl=on -vga vmware -usb -device usb-kbd -device usb-audio -boot c -netdev user,id=mynet0 -device e1000-82545em,netdev=mynet0 -boot d -hda /mnt/DATA/vmimg/win7/win7.vmdk

Frankly, qemu gui is not user friendly, and I have not found the way to setup 3d presentation in guest win7 yet.

refer to:
https://blog.csdn.net/haifeng_gu/article/details/108055083
https://blog.csdn.net/wanghuiyao/article/details/65627198

Build virtualbox in Ubuntu

Similar to in Fedora35, total difference is in from apt or from yum.

1
2
3
4
5
6
7
8
sudo apt-get install acpica-tools chrpath doxygen g++-multilib libasound2-dev libcap-dev \
        libcurl4-openssl-dev libdevmapper-dev libidl-dev libopus-dev libpam0g-dev \
        libpulse-dev libqt5opengl5-dev libqt5x11extras5-dev qttools5-dev libsdl1.2-dev libsdl-ttf2.0-dev \
        libssl-dev libvpx-dev libxcursor-dev libxinerama-dev libxml2-dev libxml2-utils \
        libxmu-dev libxrandr-dev make nasm python3-dev qttools5-dev-tools \
        unzip xsltproc glslang-dev glslang-tools \
        libstdc++5 libxslt1-dev linux-kernel-headers makeself \
        mesa-common-dev subversion yasm zlib1g-dev

refer to:
build virtualbox in fedora35

Fedora kernel: bad shim signature

One easy method is disabling Secure Boot option in machine EFI BIOS.

In other way, we can't sign vmlinuz using MOK, because MOK is only a gate keeper for kernel after vmlinuz booting up, and if we want EFI firmware to admit vmlinuz as descendant, we must require the machine manufacturer to sign the vmlinuz we built.

MOK: Machine Owner Key
UEFI: Unified Extensible Firmware Interface

refer to:
https://www.rodsbooks.com/efi-bootloaders/secureboot.html

Re-compress all Mame zip roms to 7z format

In advance,

trans_to_7z.sh

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#!/bin/bash
 
PARENTDIR=$1
TMPDIR=`pwd`/tmp
 
PATH="/d/cext/Program Files/7-Zip:$PATH"
 
ISERR="no"
 
if [ "x$1" = x ] ; then
	echo "Please input dir to transform."
	exit
fi
 
if [ -e "$TMPDIR" ] ; then
	echo "Please rmdir [$TMPDIR] first."
	exit
fi
 
get_win_path()
{
	local win_path="$1"
	win_path="${win_path#/}"
	win_path="${win_path//\//\\}"
	win_path="${win_path/\\/\:\\}"
	echo $win_path
}
 
format_transform()
{
	local file_7z=$1
	local file_zip=$2
	local tmp_dir=$TMPDIR
	mkdir "$tmp_dir"
 
	7z x ${file_7z} -o"`get_win_path \"$tmp_dir\"`"
	(
		cd "$tmp_dir"
		ls
 
		7z a -mx9 "`get_win_path \"${file_zip}\"`" || ( echo "Creating 7z file failed." && ISERR="yes" )
	)
 
	rm -Rf "$tmp_dir"
}
 
cd "$PARENTDIR"
 
for fn in `ls *.zip`; do
 
	echo "$fn"
 
	format_transform $fn "`pwd`/${fn%.zip}.7z"
 
	if [ $ISERR = "yes" ]; then
		exit
	fi
done
 
echo "Transforming done."

How to use?

Copy trans_to_7z.sh to Mame root folder which contains roms sub-directory, right click at blank place of this Mame root window in Explorer, select "Git Bash Here" which prompts bash console, input below and return,

1
./trans_to_7z.sh roms

refer to:
https://www.cnblogs.com/wq242424/p/15564203.html

Switch between GPUs in Fedora35

Install Nvidia driver from rpmfusion,

yum install --nogpgcheck https://mirrors.tuna.tsinghua.edu.cn/rpmfusion/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm https://mirrors.tuna.tsinghua.edu.cn/rpmfusion/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm
dnf install akmod-nvidia

Before rebooting, must sign nividia driver using MOK.der, if not, we will receive at boot, "nvidia kernel module missing. falling back to nouveau".

Or install Nvidia driver from official site,

Clean up akmod-nvidia,

dnf remove akmod-nvidia
dnf remove xorg-x11-drv-nvidia

To blacklist the nouveau drivers,

dracut -v /boot/initramfs-`uname -r`.img `uname -r` --force

/etc/default/grub

GRUB_CMDLINE_LINUX="rhgb quiet rd.driver.blacklist=nouveau modprobe.blacklist=nouveau nvidia-drm.modeset=1"
grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg

After rebooting, download NVIDIA-Linux-x86_64-XXX.XX.XX.run from official site, install it using /root/signed-modules/MOK.* and reboot,
https://www.nvidia.com/download/index.aspx?lang=en-us

Check current GPU vendor,

1
glxinfo | egrep "OpenGL vendor|OpenGL renderer"

How to dynamically switch GPUs?

I found ue4 selecting /dev/nvidia0 by itself, we needn't care about if switch.

https://pellegrino.link/2015/11/29/signing-nvidia-proprietary-driver-on-fedora.html
https://www.cnblogs.com/Mingxx/p/3192483.html
https://docs.fedoraproject.org/en-US/quick-docs/how-to-set-nvidia-as-primary-gpu-on-optimus-based-laptops/