Fork me on GitHub

PS. Sailfish OS Cheat Sheet

источник: https://sailfishos.org/wiki/Sailfish_OS_Cheat_Sheet

Sailfish Cheat Sheet

Development Commands

  • Connect to the device over usb (add "192.168.2.14 device" to /etc/hosts)
 sudo ifconfig usb0 up device
  • Log into the device. Define password in "Settings -> System settings -> Developer mode -> Set password".
 ssh nemo@device
  • Change user to root
 su       # if on SDK, or
 devel-su # if on device
  • Remove changed IP from known_hosts
 ssh-keygen -R device
  • Chroot to development environment
 /srv/mer/sdks/sdk/mer-sdk-chroot
  • Update development environment
 sb2 -t <target> -m sdk-install -R zypper ref
 sb2 -t <target> -m sdk-install -R zypper update
  • Build project
 mb2 -t <target> build # finds the spec under rpm
 mb2 -t <target> -s rpm/<package>.spec build # specify spec yourself    
  • Copy packages to the device
 scp /RPMS/<package>.rpm nemo@device:
  • Listen to system logs
 journalctl -fa
  • Search log for keyword 'account' ignoring the case
 devel-su journalctl | grep -i account
  • Open file (apk, media file, vcard, call number, etc.) with appropriate app.
 xdg-open file # e.g. xdg-open image.jpg
  • List shared library dependencies
 ldd /usr/lib/qt5/qml/modulepath/libmodule.so
  • List exported symbols
 zypper in binutils && nm -D /usr/lib/library.so.0
  • Set DConf value
 dconf write /desktop/meego/background/portrait/picture_filename \'/pathto/wallpaper.jpg\'
  • Print DConf value
 dconf read /desktop/meego/background/portrait/picture_filename
  • List incoming hardware input events
 evdev_trace -t
  • Find folders that take more than 100MB of space
 du --all --one-file-system / | awk '{if($1 > 102400) print int($1/1024) "MB" " " $2 }' # root partition
 du --all --one-file-system /home | awk '{if($1 > 102400) print int($1/1024) "MB" " " $2 }' # home partition
  • List RPM packages that take the most space in the system
 rpm -qa --queryformat '%{size} %{name}\n' | sort -rn | more
  • Execute QML document.
 pkcon install qt5-qtdeclarative-qmlscene # install qmlscene
 ln -s /usr/lib/qt5/bin/qmlscene /usr/bin/qmlscene # add symbolic link to path
 qmlscene app.qml # run

Diagnostics

  • Saving logs is always good
 devel-su journalctl -a > ~/saved.journal
  • Add -f to contiously listen to the log output:
 devel-su journalctl -fa
  • The systemd journal is persistent over reboots in devel branch - otherwise edit /etc/systemd/journald.conf and set
 Storage=persistent
  • Preventing journald from throttling logging from a verbose process - edit /etc/systemd/journald.conf and set
 RateLimitBurst=9999
 RateLimitInterval=5s
  • Various processes can be made more verbose by setting certain environment variables:
 QT_LOGGING_RULES="*.debug=true"   # any application or service using Qt Categorized Logging
 MSYNCD_LOGGING_LEVEL=8   # any Buteo sync plugin
 SSO_LOGGING_LEVEL=3 SSOUI_LOGGING_LEVEL=3  # Accounts&SSO services
 CONTACTSD_DEBUG=1  # contactsd instant messaging roster synchronisation daemon
 QTCONTACTS_SQLITE_TWCSA_TRACE=1 QTCONTACTS_SQLITE_TRACE=1  # qtcontacts-sqlite backend debug output
 KCALDEBUG=1  # calendar application and plugins, mkcal and KCal debug output
 LIPSTICK_COMPOSITOR_DEBUG=1  # homescreen debug output
  • Various processes can be made more verbose by editing certain configuration files and rebooting:
 /home/nemo/.config/QtProject/Messageserver.conf  # email, QtMessagingFramework configuration file
 /home/nemo/.config/eas-sailfish.conf  # Exchange ActiveSync plugin configuration file
  • For example, to make the Exchange ActiveSync plugin fully verbose, first ensure that journald won't throttle logging output (see the notes on editing /etc/systemd/journald.conf above) and then ensure that the /home/nemo/.config/eas-sailfish.conf file contains the following:
 [logging]
 Sailfish.eas.debug=dwc
 Sailfish.eas.warning=dwc
 Sailfish.eas.error=dwc
 Sailfish.easwbxml=dwc
 Sailfish.easnetwork=dwc
 Sailfish.easverbose=dwc
  • Some processes can be made more verbose by installing specific "tracing" packages which configure the service to be more verbose when installed (via devel-su pkcon install <pkgname>). Some examples include:
 connman-tracing
 bluez5-tracing
 connectionagent-qt5-tracing

Home Screen and Compositor diagnostics

Lipstick debugs can be enabled by adding LIPSTICK_COMPOSITOR_DEBUG=1 to /var/lib/environment/compositor/*.conf.

Now restart lipstick and you have a small box at the bottom of the screen for debugging the top most window. "Dump" button outputs data of the top most window to thejournal. "Expose" button shows current windows.

In case screen is locked or/and touch is not responding but you have an access tothe device. Top most window can be dumped like:

dbus-send --type=method_call --print-reply --dest=org.nemomobile.compositor.debug /debug org.nemomobile.compositor.debug.dump

Power Diagnostics

Go to your device command line. Download Power issues reporting script on your device

curl -o power-diagnostics.sh https://git.merproject.org/mer-core/statefs-providers/blob/master/tools/power-diagnostics.sh && chmod a+x power-diagnostics.sh

and run it

devel-su ./power-diagnostics.sh > /home/nemo/power-state-report.txt

Attach resulting /home/nemo/power-state-report.txt file and journal to your bug report.

Backup Diagnostics

curl -o the-vault-storage-report.sh https://git.merproject.org/mer-core/the-vault/blob/master/tools/the-vault-storage-report.sh && chmod a+x the-vault-storage-report.sh
  • Execute the command in privileged mode.
 devel-su -p ./the-vault-storage-report.sh > /home/nemo/backup-status-report.txt
  • Attach resulting /home/nemo/backup-status-report.txt file to your bug report.

Restart System Services

  • Restart user session
 systemctl restart user@100000
  • Restart networking. Warning! Disconnects your SSH connection.
 systemctl restart connman.service
  • Restart home screen
 systemctl --user restart lipstick
  • Restart keyboard
 systemctl --user restart maliit-server
  • Restart Phone application
 systemctl --user restart voicecall-ui-prestart
  • Restart Phone middleware
 systemctl restart ofono
 systemctl-user restart voicecall-manager

Package Handling

  • Root rights required
devel-su
  • Show SW version
 version
  • Update software
 version --dup

Pkcon commands

 pkcon refresh   # Update repositories

 pkcon search name [PACKAGE_NAME]
 pkcon install [PACKAGE_NAME]
 pkcon get-details [PACKAGE_NAME]
 pkcon remove [PACKAGE_NAME]
 pkcon update [PACKAGE_NAME]

 pkcon install-local [FILE_NAME]

 pkcon repo-list
 pkcon repo-enable [REPO_ID]
 pkcon repo-disable [REPO_ID]

 pkcon       # Lists the full command syntax and options.

Zypper commands for SDK (pkcon is preferred on device)

 zypper lr # list repositories
 zypper ref # update repositories
 zypper update # update packages
 zypper se packagename # search packages
 zypper in packagename # install packages
 zypper info packagename # check package information
 zypper info -t pattern patternname # check pattern information
 zypper verify # check dependencies

RPM commands

 rpm -e <package> # remove package
 rpm -ql <package-name> # list files in package
 rpm -qlP <file> # list files in package
 rpm -qf <file> # find out what package file belongs to
 rpm -qpR <rpm-file> # find out package dependencies
 rpm -qR <package-name> # find out package dependencies
 rpm -q --whatrequires <package> # find out reverse dependencies
 rpm -qa | xargs rpm -qR | grep -b5 <package> # query all packages, check whether they depend on package
 rpm -U --oldpackage --replacepkgs  --replacefiles <package> # reinstall rpm package

Clear corrupted rpm database (as root):

 rm -rf /var/lib/rpm/__db* ; rpm --rebuilddb

Clearing, Importing and Exporting User Data

Phone

  • Install commhistory-tool if not already installed.
 pkcon install  libcommhistory-qt5-tools
  • Clear call logs, run as nemo
 commhistory-tool deleteall -calls
  • Add call logs data, run as nemo
 commhistory-tool import-json calllogs.json
  • Restart Phone application to see changes in effect.
 pkill voicecall-ui

Messages

  • Remove all message conversations, run as nemo
 commhistory-tool deleteall -groups
  • Import message data, run as nemo
 commhistory-tool import-json messages.json
  • Restart Messages application to see changes in effect.
 pkill jolla-messages

People

  • Install vcardconverter if not already installed.
 pkcon install nemo-qml-plugin-contacts-qt5-tools
  • Import contacts from vCard
 devel-su -p vcardconverter contacts.vcf
  • Export local contacts to vCard
 devel-su -p vcardconverter --export contacts.vcf

Calendar

  • Install icalconverter if not already installed
 pkcon install nemo-qml-plugin-calendar-qt5-tools
  • Import events from iCal
 devel-su -p icalconverter import calendar.ics
  • Import events using Calendar import page
 dbus-send --print-reply --type=method_call --dest=com.jolla.calendar.ui /com/jolla/calendar/ui com.jolla.calendar.ui.importFile string:/home/nemo/calendar.ics
  • Export local calendar events to iCal
 devel-su -p icalconverter export calendar.ics

Browser

  • Set the home page.
 dconf write /apps/sailfish-browser/settings/home_page "'http://jolla.com'"

Media

Transfer content to the device

 scp *.jpg nemo@device:Pictures
 scp *.mp4 nemo@device:Videos
 scp *.pdf nemo@device:Documents
 scp *.ogg nemo@device:Music

Homescreen

  • Reset order of apps in Homescreen launcher.
 rm /home/nemo/.config/lipstick/applications.menu

Weather

  • Remove weather locations
 rm /home/nemo/.local/share/sailfish-weather/weather.json

Blocking Device Suspend

  • Install mcetool
 zypper in mce-tools
  • Disable late suspend
 mcetool -searly
  • Disable early suspend
 mcetool -sdisabled
  • Restore normal suspend policy
 mcetool -senabled

Screen Brightness

  • Install mcetool
 zypper in mce-tools
  • Set brightness setting to maximum value
 mcetool -b5
  • Disable screen dimming when home screen or applications are open
 mcetool -Don
  • Disable screen dimming when the lock screen is open
 mcetool -tdisabled
  • Go back to normal behavior
 mcetool -Doff -tenabled
  • For problem with unusually dark display, try disabling als-based display brightness filtering
 mcetool -gdisabled
  • Reset all mce values to their defaults
 systemctl stop mce.service
 rm /var/lib/mce/builtin-gconf.values
 systemctl start mce.service

Show Dialogs

Alarm Dialog

  • Show timer alarm in 3 seconds (ticker=3).
 timedclient-qt5 -b'TITLE=button0' -e'APPLICATION=nemoalarms;TITLE=Timer;type=countdown;timeOfDay=1;triggerTime=1395217218;ticker=3'
  • Show clock alarm in 3 seconds (ticker=3).
 timedclient-qt5 -b'TITLE=button0' -e'APPLICATION=nemoalarms;TITLE=Clock;type=event;timeOfDay=772;ticker=3'

Connection Dialog

 dbus-send --print-reply --type=method_call --dest=com.jolla.lipstick.ConnectionSelector /  com.jolla.lipstick.ConnectionSelectorIf.openConnection string:

USB Dialog

Connect cable. Make sure "Settings -> USB -> Default USB mode" is set to "Always ask".

Unresponsive App Dialog

  • Make app unresponsive by stopping it's execution.
 kill -SIGSTOP `pgrep appname` # e.g. jolla-messages
  • Continue execution by calling
 kill -SIGCONT `pgrep appname` # e.g. jolla-messages

Side Loading Dialog

xdg-open package.rpm

Call Request Dialog

 xdg-open "tel://0123456789"

Supplementary Service Dialog

TypeUSSD codewith Phone dialer, for example "*#31#" shows the status of caller line restriction.

Audio Warning Dialog

Change headset audio warning timeout by adding following lines to /etc/pulse/mainvolume-listening-time-notifier.conf.

"timeout = 1
sink-list = sink.primary
mode-list = lineout"
systemctl --user restart pulseaudio.service

Now play a song over 1 minute with normal headset in Media Player to see a warning dialog. Reset too-loud volume warning.

 /usr/bin/dconf write /desktop/nemo/audiowarning true

Now play a song over headset and turn the volume to maximum to see a warning dialog.

The Other Half Installation Dialog

Sign in to Jolla store. Attach new TOH back cover.

social