Linux Mint issue tracker
This repository is dedicated to tracking general issues in the Linux Mint system itself (not Cinnamon, Xapps, or any projects which have their own repository).
The Cinnamon session manager
License: GNU General Public License v2.0
* cinnamon-session version 4.4.2
* Distribution - Linux Mint 19.3
* AMD A12-9720P RADEON R7 driver: amdgpu,ati
* 64 bit
Issue
Zombie fcitx:
UID PID PPID C STIME TTY STAT TIME CMD
daniel 1981 1409 0 Feb01 ? Ssl 0:15 cinnamon-session --session cinnamon
daniel 2057 1981 0 Feb01 ? Z 0:00 [fcitx]
daniel 2059 1 0 Feb01 ? S 0:02 /usr/bin/fcitx
daniel 2072 1 0 Feb01 ? SN 0:00 /usr/bin/fcitx-dbus-watcher unix:abstract=/tmp/dbus-7xSFtjnCl2,guid=61653238aaa4d018572bc1c763dafa78 2065
Steps to reproduce
Just log in
Expected behaviour
Cinnamon should reap (or not start?) its child fcitx process.
Other information
The cinnamon session, most importantly the panel, does not seem to honor the proxy settings of the desktop.
When I try to add add an applet for example and go to find out what applets are available for download, it tries to go directly to the site and doesn't use the configured proxy.
Happens more often then not, although I couldn't find the exact cause. stopping the shutdown processes and running journalctl gave me the following entry:
I also occasionally have a message that at-spi-bus-launcher isn't shutting down, although I believe it might be unrelated
I'm running Antergos, however when using Arch Linux I had the same problem albeit without the at-spi-bus-launcher issue. I haven't tested other DE to confirm if the bus-launcher issue is a unrelated problem or not.
Should necessary I can provide more logs.
Additional info:
I use a pci-passthrough for gaming however the error manifested without ever starting the vm.
My sessions usually compromise of Steam, Discord, Vivaldi, Clementine, Synergy and Virt-Manager
Not launching any of those didn't make a difference
* Cinnamon 5.0.5
* Mint 20.2
* Intel UHD Graphics 630 with NVidia GeForce GTX 1650 Mobile, nvidia-driver-470 470.42.01
* 64 bit
Issue
I have an application /usr/bin/vk
, which sets a delay
systems inhibitor against suspension. For some reason, cinnamon-session
adds an additional (block
!) inhibitor for both suspension and shutdown and removes it as soon as I exit vk
.
Output of systemd-inhibit
when the application is not running:
WHO UID USER PID COMM WHAT WHY MODE
ModemManager 0 root 898 ModemManager sleep ModemManager needs to reset devices delay
NetworkManager 0 root 776 NetworkManager sleep NetworkManager needs to turn off networks delay
UPower 0 root 2882 upowerd sleep Pause device polling delay
nikolay 1000 nikolay 6866 csd-power handle-lid-switch Multiple displays attached block
nikolay 1000 nikolay 6887 csd-media-keys handle-power-key:handle-suspend-key:handle-hibernate-key Cinnamon handling keypresses block
nikolay 1000 nikolay 6866 csd-power sleep Cinnamon needs to lock the screen delay
6 inhibitors listed.
Output of systemd-inhibit
when the application is running:
WHO UID USER PID COMM WHAT WHY MODE
ModemManager 0 root 898 ModemManager sleep ModemManager needs to reset devices delay
NetworkManager 0 root 776 NetworkManager sleep NetworkManager needs to turn off networks delay
UPower 0 root 2882 upowerd sleep Pause device polling delay
nikolay 1000 nikolay 6866 csd-power handle-lid-switch Multiple displays attached block
nikolay 1000 nikolay 6887 csd-media-keys handle-power-key:handle-suspend-key:handle-hibernate-key Cinnamon handling keypresses block
nikolay 1000 nikolay 6752 cinnamon-sessio shutdown:sleep user session inhibited block
nikolay 1000 nikolay 6866 csd-power sleep Cinnamon needs to lock the screen delay
vk 1000 nikolay 24169 vk sleep Application cleanup before suspend delay
8 inhibitors listed.
This results in my laptop being unable to suspend when inactive. Also, I have tried doing systemctl suspend
. It works fine when vk
is closed, but gives the following error when it is running:
Operation inhibited by "nikolay" (PID 6752 "cinnamon-sessio", user nikolay), reason is "user session inhibited".
Steps to reproduce
delay
inhibitor for suspension (for example, /usr/bin/vk
. Something similar seems to happen with some component(s) of Steam), but creates no block
inhibitors and no shutdown inhibitorsExpected behaviour
Either no inhibitors are created by cinnamon-session
, or, in case it has something additional it needs to clean up, a delay
inhibitor of suspension is added
After installing Linux Mint 18.1 Serena my gnome-terminal will no longer open. From another terminal I get
bob$ gnome-terminal
(gnome-terminal.real:11827): Gtk-WARNING **: Theme parsing error: gtk.css:123:20: Missing name of pseudo-class
(gnome-terminal.real:11827): Gtk-WARNING **: Theme parsing error: gtk.css:156:16: Missing name of pseudo-class
(gnome-terminal.real:11827): Gtk-WARNING **: Theme parsing error: gtk.css:177:23: Missing name of pseudo-class
(gnome-terminal.real:11827): Gtk-WARNING **: Theme parsing error: gtk.css:199:22: Missing name of pseudo-class
Error constructing proxy for org.gnome.Terminal:/org/gnome/Terminal/Factory0: Error calling StartServiceByName for org.gnome.Terminal: GDBus.Error:org.freedesktop.DBus.Error.Spawn.ChildExited: Process org.gnome.Terminal exited with status 9
I've done some looking around and that leads me to believe that there is a locale problem. But, my user locale:
bob$ locale
LANG=en_US.UTF-8
LANGUAGE=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=en_US.UTF-8
Appears to be fine. I looked on a gnome site and they say that the problem is with the distro and it needs to fix the root locale or something. Beyond my pay grade!
There appears to be no way for an individual user to be able to set an environment variable in their cinnamon-session (i.e. such that all child processes inherit that variable).
Variables in /etc/environment are set into the users' cinnamon-session but users ought to be able to (a) do this without asking root to help and (b) set variables for only their own session and not every users' sessions.
* cinnamon-session version 4.4.0
* Distribution - Artix Linux (based on Arch Linux, systemd free) https://artixlinux.org/
I'm using Artix Linux with OpenRC and eLogind
Since update from version 4.2.1 to 4.4.0 Shutdown/Restart dialog doesn't work correctly, there is only cancel button.
If you leave unchanged line 742 in file cinnamon-session/csm-systemd.c and recompile the package it works again.
742 if (access("/run/systemd/seats/", F_OK) < 0)
https://gist.github.com/darealshinji/8934d0c1e37be28febc8
This should fix the following warnings:
debian-changelog-file-contains-invalid-email-address
copyright-without-copyright-notice
desktop-command-not-in-package
And it installs debian/cinnamon-wm.desktop in usr/share/xsessions.
The Mint Menu offers an icon for logging off. So does the users applet. However, when I press the shutdown button on my laptop, the resulting window does not offer logoff. Also, I'd like it not to offer hibernation, whilst retaining the option to hibernate in other ways. One-stop solution: a system setting GUI that allowed one to determine what appears in this menu.
PS: This request was originally filed - and gathered some support - here, on the Cinnamon bugtracker.
* cinnamon-session version: 3.4.2
* Distribution: Mint 18.2
* Graphics hardware *and* driver used: not sure then I'm providing all the details collected from the system information window
Card-1: Intel 4th Gen Core Processor Integrated Graphics Controller
bus-ID: 00:02.0 chip-ID: 8086:0416
Card-2: Advanced Micro Devices [AMD/ATI] Venus PRO [Radeon HD 8850M / R9 M265X]
bus-ID: 01:00.0 chip-ID: 1002:6823
Display Server: X.Org 1.18.4 drivers: ati,radeon,intel (unloaded: fbdev,vesa)
Resolution: [email protected]
GLX Renderer: Mesa DRI Intel Haswell Mobile GLX Version: 3.0 Mesa 11.2.0 Direct Rendering: Yes
* 64 bit
Issue
On my laptop, when the shutdown menu window is displayed, it doesn't have the focus.
Steps to reproduce
Press the shutdown button or click on the cinnamon menu button.
Expected behaviour
The shutdown menu window should have the focus as in the previous cinnamon releases.
Other information
I've been using cinnamon+Linux Mint for several years and shutting down or putting in standby was easier and quicker before this last release. Today I need a mouse click in the middle of the key press sequence in order to get the focus. This is maybe a minor or nice to have feature, but my user experience was better with the previous releases.
Nevertheless, I really want to thank and congratulate the Mint and cinnamon teams for the very good job performed during the last years.
* cinnamon-session 4.2.0
* Arch
* Intel
* 64 bit
Issue
#125 / 16371b4 breaks cinnamon-session-quit
when tring to logout i get the foolowing error (in terminal and .xsessionerrors)
(cinnamon-session-quit:16933): GLib-GIO-CRITICAL **: 02:07:12.181: g_dbus_proxy_call_sync_internal: assertion 'parameters == NULL || g_variant_is_of_type (parameters, G_VARIANT_TYPE_TUPLE)' failed
** (cinnamon-session-quit:16933): WARNING **: 02:07:12.181: Failed to call logout
(cinnamon-session-quit:16933): GLib-CRITICAL **: 02:07:12.181: g_variant_unref: assertion 'value != NULL' failed
Steps to reproduce
try the cntrl+alt+del sortcut or run cinnamon-session-quit and get the error.
Expected behaviour
the logout dialog
Other information
reported in cinnamon here: linuxmint/cinnamon#8680
i do not mind debugging this if givin instructions
The old upower dependency for non-systemd platforms can be removed since ConsoleKit handles suspend, hibernate, hybridsleep fine now. This is what MATE and XFCE do and it works fine on my platform (NetBSD).
* 4.0.0
* FreeBSD 13-CURRENT
* i915kms
* amd64
Issue
When the inhibitor is activated in any way, the session immediately crashes. This is due to a null pointer (see backtrace) in system
. Looking through the source, it appears that csm_consolekit_new()
is not correctly setting the pointer.
(e)logind backend is probably not susceptible to this.
Steps to reproduce
Easiest is to switch power management off in the inhibitor applet. But any program that "adds" the inhibitor during normal operation will also do.
Expected behaviour
Inhibit the screensaver or screen from turning off, without total session crashing.
Other information
Example backtrace, where Nemo spawns a delete confirmation dialog:
(lldb) bt
* thread #1, name = 'cinnamon-session', stop reason = signal SIGSEGV
* frame #0: 0x000000000023dcb7 cinnamon-session`csm_system_add_inhibitor(system=0x0000000000000000, id="/org/gnome/SessionManager/Inhibitor1", flag=CSM_INHIBITOR_FLAG_LOGOUT) at csm-system.c:145
frame #1: 0x00000000002364dc cinnamon-session`on_store_inhibitor_added(store=0x0000000804269a40, id="/org/gnome/SessionManager/Inhibitor1", manager=0x000000080422d2a0) at csm-manager.c:2583
frame #2: 0x000000080033ceb3 libgobject-2.0.so.0`g_cclosure_marshal_VOID__STRING(closure=0x00000008042324d0, return_value=0x0000000000000000, n_param_values=2, param_values=0x00007fffffffdac0, invocation_hint=0x00007fffffffda60, marshal_data=0x0000000000000000) at gmarshal.c:1754
frame #3: 0x0000000800337511 libgobject-2.0.so.0`g_closure_invoke(closure=0x00000008042324d0, return_value=0x0000000000000000, n_param_values=2, param_values=0x00007fffffffdac0, invocation_hint=0x00007fffffffda60) at gclosure.c:810
frame #4: 0x0000000800358ae3 libgobject-2.0.so.0`signal_emit_unlocked_R(node=0x000000080424bf80, detail=0, instance=0x0000000804269a40, emission_return=0x0000000000000000, instance_and_params=0x00007fffffffdac0) at gsignal.c:3635
frame #5: 0x000000080035a492 libgobject-2.0.so.0`g_signal_emit_valist(instance=0x0000000804269a40, signal_id=169, detail=0, var_args=0x00007fffffffe1f0) at gsignal.c:3391
frame #6: 0x000000080035acd7 libgobject-2.0.so.0`g_signal_emit(instance=0x0000000804269a40, signal_id=169, detail=0) at gsignal.c:3447
frame #7: 0x000000000023cdf5 cinnamon-session`csm_store_add(store=0x0000000804269a40, id="/org/gnome/SessionManager/Inhibitor1", object=0x00000008049ce7a0) at csm-store.c:248
frame #8: 0x00000000002315be cinnamon-session`csm_manager_inhibit(manager=0x000000080422d2a0, app_id="org.x.editor", toplevel_xid=109052149, reason="There are unsaved documents", flags=1, context=0x0000000804736be0) at csm-manager.c:3704
frame #9: 0x000000000022ee41 cinnamon-session`dbus_glib_marshal_csm_manager_VOID__STRING_UINT_STRING_UINT_POINTER(closure=0x00007fffffffe540, return_value=0x0000000000000000, n_param_values=6, param_values=0x0000000804875580, invocation_hint=0x0000000000000000, marshal_data=0x0000000000231230) at csm-manager-glue.h:399
frame #10: 0x00000008002a8214 libdbus-glib-1.so.2`object_registration_message + 3620
frame #11: 0x00000008002f6564 libdbus-1.so.3`_dbus_object_tree_dispatch_and_unlock + 276
frame #12: 0x00000008002e641f libdbus-1.so.3`dbus_connection_dispatch + 975
frame #13: 0x00000008002b7b3a libdbus-glib-1.so.2`message_queue_dispatch + 26
frame #14: 0x000000080045b5d3 libglib-2.0.so.0`g_main_dispatch(context=0x00000008024b1180) at gmain.c:3182
frame #15: 0x000000080045b420 libglib-2.0.so.0`g_main_context_dispatch(context=0x00000008024b1180) at gmain.c:3847
frame #16: 0x000000080045b96e libglib-2.0.so.0`g_main_context_iterate(context=0x00000008024b1180, block=1, dispatch=1, self=0x00000008042694a0) at gmain.c:3920
frame #17: 0x000000080045be2e libglib-2.0.so.0`g_main_loop_run(loop=0x00000008024aa6d0) at gmain.c:4116
frame #18: 0x0000000800d13e1b libgtk-3.so.0`gtk_main + 75
frame #19: 0x0000000000244cfa cinnamon-session`main(argc=1, argv=0x00007fffffffeab8) at main.c:381
frame #20: 0x000000000021b114 cinnamon-session`_start(ap=<unavailable>, cleanup=<unavailable>) at crt1.c:76
* cinnamon-session version (cinnamon-session --version)
* Distribution - (Mint 17.2, Arch, Fedora 25, etc...)
* Graphics hardware *and* driver used
* 32 or 64 bit
*
System information is here: https://termbin.com/9aom
Issue
After accepting the backports to LMDE6 there is now a login sound (the very old one that used to be used in Linux Mint) and it cannot be turned off in Sounds | Starting Cinnamon.
There is no setting for login sound in Login Window.
Steps to reproduce
Expected behaviour
Other information
Cinnamon-session 4.2.0 doesn't compile the schemas files on ninja install. cinnamon-session needs a install script the same as cinnamon-desktop has.
I like to use the program indicator-stickynotes instead of the Sticky Notes desklet. However, Cinnamon won't let me start indicator-stickynotes on startup for some reason; after looking on various forums and poring through source code of a couple different possibilities, I finally narrowed it down to a change in csm-manager.c dating back to mid-2014:
cinnamon-session (2.2.2) qiana; urgency=medium
- Make shutdown and failwhale dialogs use CENTER instead of CENTER_ALWAYS, to stop the small jump the dialogs usually make right after they pop up.
- Logout/Shutdown dialogs: Capture focus and keyboard input and block until dialog is closed.
- session-properties (startup programs): show 0 in the list when there is no startup delay defined, as well as a 0 in the spinner during item edit.
- Remove logging from previous commit
- Block ubuntu indicator-* services from starting.
-- Clement Lefebvre [email protected] Fri, 27 Jun 2014 14:33:56 +0100
So cinnamon-session was changed to intentionally block "ubuntu indicator-* services" from starting. But that means that any application with a desktop file whose name starts with indicator- is blocked. I don't fully understand what is referred to as an "ubuntu indicator-* service" -- is the effect that this has on indicator-stickynotes intentional, or is it an unintended effect? If it's unintended, is there a better way to do what Cinnamon is doing here without affecting apps like indicator-stickynotes? If it's intentional, why does Cinnamon not allow users to autostart programs like this one (running it manually doesn't seem to do any harm...)?
Cf. http://superuser.com/questions/803825/system-load-and-keylock-indicator-will-not-autostart-in-linux-mint-17, http://forums.linuxmint.com/viewtopic.php?f=47&t=176826
On Mint 21.3 64 bit with cinnamon-session 6.0.1
Issue
With any program inhibiting sleep running (like Rhythmbox playing a track), the "Sleep" button is now missing from the dialog.
This makes it hard to put a PC to sleep with an unknown program inhibiting sleep.
Steps to reproduce
Play a song with Rhythmbox, click on "Shutdown" in Cinnamon menu.
Expected behaviour
Mint 21.2 displayed a popup listing the apps preventing the PC from going to sleep, and offered options.
Other information
Please follow the freedesktop Desktop Entry Specification standard.
Cinnamon has been a registered Desktop Environment since desktop-file-utils 0.23 which was released over a year ago (and I personally backported this change to Ubuntu 14.04 LTS).
Cinnamon clearly is an independent desktop and it's time for it to respect the OnlyShowIn
and NotShowIn
.desktop keys. Please drop your autostart-blacklist
.
If an app incorrectly excludes Cinnamon, please file bugs for that. In the unlikely case that a patch would be rejected for that upstream, distros will accept your patches.
Install Cinnamon on top of GNOME and you'll end up with 2 Files apps in your menu. (Do it in Ubuntu and you'll have 3 because of a unique Ubuntu packaging situation). This is silly since Nautilus sets OnlyShowIn=GNOME;
(and the extra Ubuntu entry also should be hidden appropriately) and Cinnamon has its own file browser so this problem shouldn't exist.
Currently I am trying to figure out why my application crashes when the machine is rebooted from terminal (actually it just does exit(1) somewhere without cleanup). The latter will make systemd send SIGTERM to all processes. I am currently debugging my system by manually killing cinnamon-session and trying to figure out what exactly happens. By stracing my application I found out that the app writes
read(7, "", 8) = 0
write(2, "ICE default IO error handler doi"..., 68) = 68
and the does exit(1). I have no clue what csm is doing but somehow if I logout by button everything is fine. Is this an issue with the session manager?
After updating to Gnome 3.13 I noticed that cinnamon-session-properties doesn't work anymore - application is started but window is not shown.
Note that gnome developers dropped gnome-session-properties
* cinnamon-session 4.8.0
* Linux Mint 20.1 Ulyssa (clean install)
* VGA compatible controller: Intel Corporation UHD Graphics 605 (rev 06)
* 64 bit
* Linux pc 5.4.0-70-generic #78-Ubuntu SMP Fri Mar 19 13:29:52 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
Steps to reproduce
My PC used by two users. After user1 logout and user2 login I can see some processes from user1.
# execute in user2 session:
$> sudo loginctl list-sessions
SESSION UID USER SEAT TTY
c1 1001 user1 seat0
c3 1000 user2 seat0
$> sudo loginctl session-status c1
c1 - user1 (1001)
Since: Fri 2021-04-19:26:51 MSK; 1min 19s ago
Leader: 827
Seat: seat0; vc7
Display: :0
Service: lightdm-autologin; type x11; class user
Desktop: cinnamon
State: closing
Unit: session-c1.scope
└─1185 /usr/libexec/geoclue-2.0/demos/agent
19:26:51 pc systemd[1]: Started Session c1 of user user1.
19:26:52 pc gnome-keyring-daemon[964]: couldn't access control socket: /run/user/1001/keyring/control: Нет такого файла или каталога
19:26:52 pc gnome-keyring-daemon[965]: couldn't access control socket: /run/user/1001/keyring/control: Нет такого файла или каталога
19:26:52 pc gnome-keyring-daemon[970]: couldn't access control socket: /run/user/1001/keyring/control: Нет такого файла или каталога
19:26:54 pc /cinnamon-killer-daemon[1184]: Bound Cinnamon restart to <Control><Alt>Escape.
19:27:00 pc cinnamon-session[842]: WARNING: t+7,88705s: Detected that screensaver has appeared on the bus
19:27:07 pc cinnamon-session[842]: WARNING: t+15,00500s: Playing logout sound '/usr/share/mint-artwork/sounds/logout.ogg'
19:27:07 pc cinnamon-session[842]: WARNING: t+15,08185s: Finished playing logout sound
19:27:07 pc cinnamon-session[842]: WARNING: t+15,08201s: Resuming logout sequence...
19:27:08 pc lightdm[827]: pam_unix(lightdm-autologin:session): session closed for user user1
I see process 1185 /usr/libexec/geoclue-2.0/demos/agent:
$> sudo ps -aux |grep user1
user1 832 0.0 0.1 18680 10100 ? Ss 19:26 0:00 /lib/systemd/systemd --user
user1 833 0.0 0.0 171044 3640 ? S 19:26 0:00 (sd-pam)
user1 864 0.0 0.0 7948 5160 ? Ss 19:26 0:00 /usr/bin/dbus-daemon --session --address=systemd: --nofork --nopidfile --systemd-activation --syslog-only
user1 934 0.0 0.1 239956 8020 ? Ssl 19:26 0:00 /usr/libexec/gvfsd
user1 939 0.0 0.0 378336 5572 ? Sl 19:26 0:00 /usr/libexec/gvfsd-fuse /run/user/1001/gvfs -f -o big_writes
user1 1044 0.0 0.0 156224 5400 ? Sl 19:26 0:00 /usr/libexec/dconf-service
user1 1107 0.0 0.1 314488 9104 ? Ssl 19:26 0:00 /usr/libexec/gvfs-udisks2-volume-monitor
user1 1117 0.0 0.0 235912 5796 ? Ssl 19:26 0:00 /usr/libexec/gvfs-mtp-volume-monitor
user1 1121 0.0 0.0 238324 6612 ? Ssl 19:26 0:00 /usr/libexec/gvfs-gphoto2-volume-monitor
user1 1131 0.0 0.0 236116 6308 ? Ssl 19:26 0:00 /usr/libexec/gvfs-goa-volume-monitor
user1 1136 0.0 0.4 546684 36740 ? Sl 19:26 0:00 /usr/libexec/goa-daemon
user1 1146 0.0 0.1 315160 9244 ? Sl 19:26 0:00 /usr/libexec/goa-identity-service
user1 1148 0.0 0.1 316968 9028 ? Ssl 19:26 0:00 /usr/libexec/gvfs-afc-volume-monitor
user1 1185 0.0 0.0 237092 4860 ? Sl 19:26 0:00 /usr/libexec/geoclue-2.0/demos/agent
user1 1207 0.0 0.3 390904 25844 ? Ssl 19:26 0:00 /usr/libexec/evolution-source-registry
user1 1213 0.0 0.3 1298072 31456 ? Ssl 19:26 0:00 /usr/libexec/evolution-calendar-factory
user1 1224 0.0 0.3 673824 30276 ? Ssl 19:26 0:00 /usr/libexec/evolution-addressbook-factory
user1 1342 0.0 0.1 314128 8636 ? Sl 19:26 0:00 /usr/libexec/gvfsd-trash --spawner :1.8 /org/gtk/gvfs/exec_spaw/0
user1 1352 0.0 0.0 162492 6620 ? Ssl 19:26 0:00 /usr/libexec/gvfsd-metadata
but cant see it in tree:
$>sudo pstree -p -s user1
agent(1185)─┬─{agent}(1187)
└─{agent}(1190)
systemd(832)─┬─(sd-pam)(833)
├─dbus-daemon(864)
├─dconf-service(1044)─┬─{dconf-service}(1046)
│ └─{dconf-service}(1047)
├─evolution-addre(1224)─┬─{evolution-addre}(1232)
│ ├─{evolution-addre}(1234)
│ ├─{evolution-addre}(1236)
│ ├─{evolution-addre}(1237)
│ └─{evolution-addre}(1239)
├─evolution-calen(1213)─┬─{evolution-calen}(1214)
│ ├─{evolution-calen}(1215)
│ ├─{evolution-calen}(1216)
│ ├─{evolution-calen}(1217)
│ ├─{evolution-calen}(1222)
│ └─{evolution-calen}(1223)
├─evolution-sourc(1207)─┬─{evolution-sourc}(1208)
│ ├─{evolution-sourc}(1209)
│ └─{evolution-sourc}(1210)
├─goa-daemon(1136)─┬─{goa-daemon}(1140)
│ ├─{goa-daemon}(1142)
│ └─{goa-daemon}(1143)
├─goa-identity-se(1146)─┬─{goa-identity-se}(1149)
│ └─{goa-identity-se}(1151)
├─gvfs-afc-volume(1148)─┬─{gvfs-afc-volume}(1152)
│ ├─{gvfs-afc-volume}(1153)
│ └─{gvfs-afc-volume}(1155)
├─gvfs-goa-volume(1131)─┬─{gvfs-goa-volume}(1133)
│ └─{gvfs-goa-volume}(1134)
├─gvfs-gphoto2-vo(1121)─┬─{gvfs-gphoto2-vo}(1126)
│ └─{gvfs-gphoto2-vo}(1130)
├─gvfs-mtp-volume(1117)─┬─{gvfs-mtp-volume}(1118)
│ └─{gvfs-mtp-volume}(1120)
├─gvfs-udisks2-vo(1107)─┬─{gvfs-udisks2-vo}(1113)
│ ├─{gvfs-udisks2-vo}(1114)
│ └─{gvfs-udisks2-vo}(1115)
├─gvfsd(934)─┬─gvfsd-trash(1342)─┬─{gvfsd-trash}(1343)
│ │ └─{gvfsd-trash}(1344)
│ ├─{gvfsd}(935)
│ └─{gvfsd}(936)
├─gvfsd-fuse(939)─┬─{gvfsd-fuse}(941)
│ ├─{gvfsd-fuse}(942)
│ ├─{gvfsd-fuse}(943)
│ ├─{gvfsd-fuse}(944)
│ └─{gvfsd-fuse}(946)
└─gvfsd-metadata(1352)─┬─{gvfsd-metadata}(1353)
└─{gvfsd-metadata}(1354)
ok, I try to find parent:
# ppid as the 4th parameter of /proc/pid/stat
$> cat /proc/1185/stat
1185 (agent) S 1 842 842 0 -1 4194304 342 0 2 0 0 0 0 0 20 0 3 0 1001 242782208 1215 18446744073709551615 93863577436160 93863577470165 140730787656192 0 0 0 0 4096 0 0 0 0 17 2 0 0 0 0 0 93863577486800 93863577489536 93863591579648 140730787662226 140730787662263 140730787662263 140730787663827 0
#parentpid = 1
$> ps -p 1185 -o ppid=
1
But I cant understood why systemd run this process (can anyone help?).
After I kill process 1185 (kill -9 1185
) session for user1 and all other user1 processes (that listed above) gone away.
I not sure that this is bug in cinnamon-session.
Expected behaviour
Session for user must be closed when user logout.
Additinal info
** gdb 1185**
$> sudo gdb --pid=1185 /usr/libexec/geoclue-2.0/demos/agent
Reading symbols from /usr/libexec/geoclue-2.0/demos/agent...
(No debugging symbols found in /usr/libexec/geoclue-2.0/demos/agent)
Attaching to program: /usr/libexec/geoclue-2.0/demos/agent, process 1185
[New LWP 1187]
[New LWP 1190]
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
0x00007efd2839aaff in __GI___poll (fds=0x555e520a7ce0, nfds=1, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:29
29 ../sysdeps/unix/sysv/linux/poll.c: No such file or directory.
(gdb) thread apply all where
Thread 3 (Thread 0x7efd26910700 (LWP 1190)):
#0 0x00007efd2839aaff in __GI___poll (fds=0x7efd18011740, nfds=2, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:29
#1 0x00007efd2871536e in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#2 0x00007efd287156f3 in g_main_loop_run () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#3 0x00007efd28600f8a in ?? () from /lib/x86_64-linux-gnu/libgio-2.0.so.0
#4 0x00007efd2873ead1 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#5 0x00007efd281f6609 in start_thread (arg=<optimized out>) at pthread_create.c:477
#6 0x00007efd283a7293 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
Thread 2 (Thread 0x7efd2793b700 (LWP 1187)):
#0 0x00007efd2839aaff in __GI___poll (fds=0x555e52097130, nfds=1, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:29
#1 0x00007efd2871536e in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#2 0x00007efd287154a3 in g_main_context_iteration () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#3 0x00007efd287154f1 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#4 0x00007efd2873ead1 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#5 0x00007efd281f6609 in start_thread (arg=<optimized out>) at pthread_create.c:477
#6 0x00007efd283a7293 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
Thread 1 (Thread 0x7efd27eaef00 (LWP 1185)):
#0 0x00007efd2839aaff in __GI___poll (fds=0x555e520a7ce0, nfds=1, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:29
#1 0x00007efd2871536e in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#2 0x00007efd287156f3 in g_main_loop_run () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#3 0x0000555e51311579 in ?? ()
#4 0x00007efd282ac0b3 in __libc_start_main (main=0x555e51311470, argc=1, argv=0x7ffe709b7208, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7ffe709b71f8) at ../csu/libc-start.c:308
#5 0x0000555e5131162e in ?? ()
I install mint 18 Cinnamon edition on my ThinkPad. After login I constantly getting session shutdown dialogs.
/var/log/syslog has a lot of cinnamon-session: Gtk-CRITICAL assertions:
gdk_keyboard_grab: assertion 'GDK_IS_WINDOW (widget)' failed
gtk_widget_get_window: assertion 'GTK_IS_WIDGET (window)' failed
gtk_widget_get_window: assertion 'GTK_IS_WIDGET (window)' failed
gdk_keyboard_grab: assertion 'GDK_IS_WINDOW (widget)' failed
gtk_widget_get_window: assertion 'GTK_IS_WIDGET (window)' failed
gdk_keyboard_grab: assertion 'GDK_IS_WINDOW (widget)' failed
gtk_widget_get_window: assertion 'GTK_IS_WIDGET (window)' failed
gdk_keyboard_grab: assertion 'GDK_IS_WINDOW (widget)' failed
gtk_widget_get_window: assertion 'GTK_IS_WIDGET (window)' failed
gdk_keyboard_grab: assertion 'GDK_IS_WINDOW (widget)' failed
gtk_widget_get_window: assertion 'GTK_IS_WIDGET (window)' failed
gdk_keyboard_grab: assertion 'GDK_IS_WINDOW (widget)' failed
The first one: g_return_val_if_fail (GTK_IS_WIDGET (widget), NULL);
(gtkwidget.c:15855)
The second: g_return_val_if_fail (GDK_IS_WINDOW (window), 0);
(gdkwindow.c:7835)
Together they used at:
return gdk_keyboard_grab (gtk_widget_get_window (widget), FALSE, GDK_CURRENT_TIME) != GDK_GRAB_SUCCESS;
(csm-logout-dialog.c:344)
Now the question: is this correct signal connection? or on_show always get NULL instead GtkWidget pointer and this is the root cause of such behavior??
g_signal_connect (logout_dialog, "show", G_CALLBACK (on_show), NULL);
(csm-logout-dialog.c:485)
Thanks in advance,
Aleksey
Add wayland support for muffin.
Pretty much all Wayland stuff (including the .desktop stuff) is in GNOME/gnome-session.
Muffin needs some slight adjustments too-see muffin/573
Please back-port the fix from gnome-session into cinnamon-session in order to allow access to cinnamon in cloud or over remote sessions.
Details on repeating the problem using XRDP is detailed in Mint forum "viewtopic.php?f=208&t=118495"
The patch is located here: https://bug731173.bugzilla-attachments.gnome.org/attachment.cgi?id=290278
The long standing Gnome-session bug gnome-bugs #731173 was recently back-ported into Ubuntu 14.04, see https://bugs.launchpad.net/ubuntu/+source/gnome-session/+bug/1251281
When I use my laptop, pressing the power button causes the dialog, "Shut down this system now?" to appear.
Normally when I press the power button I would like the default to be Suspend, not Shut Down. In such a case, I would merely need to press the power button and then the enter button to suspend my computer.
Just moving this issue to the right place.
Qt 5.7 will change gtk style architecture.
New style override variable seems to be "gtk2"
Hardcoding env vars is always a bad idea. Drop that line and set the env var in /etc/profile.d or /etc/environment or whereever, but not in C code. (Where a user/sysadmin can change it without recompiling cinnamon)
This dialog suppose to have a list of applications that need my attention before restart/shutdown/logout from my system
this is the output of my .xsession-errors
(cinnamon:16881): St-WARNING **: Did not find color property '-panel-corner-inner-border-color'
(cinnamon:16881): St-WARNING **: Did not find color property '-panel-corner-outer-border-color'
(cinnamon:16881): St-WARNING **: Did not find color property '-panel-corner-inner-border-color'
(cinnamon:16881): St-WARNING **: Did not find color property '-panel-corner-outer-border-color'
(cinnamon:16881): St-WARNING **: Did not find color property '-gradient-start'
(cinnamon:16881): St-WARNING **: Did not find color property '-gradient-end'
(cinnamon:16881): St-WARNING **: Did not find color property '-gradient-start'
(cinnamon:16881): St-WARNING **: Did not find color property '-gradient-end'
(cinnamon:16881): St-WARNING **: Did not find color property '-gradient-start'
(cinnamon:16881): St-WARNING **: Did not find color property '-gradient-end'
(cinnamon:16881): St-WARNING **: Did not find color property '-panel-corner-inner-border-color'
(cinnamon:16881): St-WARNING **: Did not find color property '-panel-corner-outer-border-color'
(cinnamon:16881): St-WARNING **: Did not find color property '-gradient-start'
(cinnamon:16881): St-WARNING **: Did not find color property '-gradient-end'
(cinnamon:16881): St-WARNING **: Did not find color property '-gradient-start'
(cinnamon:16881): St-WARNING **: Did not find color property '-gradient-end'
(cinnamon:16881): St-WARNING **: Did not find color property '-gradient-start'
(cinnamon:16881): St-WARNING **: Did not find color property '-gradient-end'
cinnamon-session[2082]: Gtk-CRITICAL: t+18138.80012s: gtk_image_set_from_icon_name: assertion 'GTK_IS_IMAGE (image)' failed
cinnamon-session[2082]: WARNING: t+18140.35233s: Unable to find desktop file '[email protected]': Valid key file could not be found in search dirs
cinnamon-session[2082]: WARNING: t+18140.35246s: Unable to find desktop file '[email protected]': Valid key file could not be found in search dirs
cinnamon-session[2082]: Gtk-WARNING: t+18140.36052s: gtk_window_set_titlebar() called on a realized window
I want to code an application that is able to poweroff, reboot, logout, lock, suspend etc. without a prompt. Using system commands like systemctl, reboot or poweroff need either su rights or kill the session ungraciously leaving applications no time to save their state.
* Cinnamon version 4.8.6
* Distribution - Linux Mint 20.1 Ulyssa
cinnamon-session[1419]: WARNING: t+0,02123s: Could not read /home/myuser/.config/autostart/protonmail-bridge.desktop: Unrecognized desktop file Version '1.1'
Issue
When enabling the application in Startup Application it does not start and the error above is logged in syslog, no user feedback otherwise.
Steps to reproduce
Enable a application with "Version=1.1" in "/usr/share/applications/myapplication.desktop" to auto start in Startup Application
reboot
Expected behaviour
The application should start at login.
Other information
This issue was already reported for Mate and resolved.
XDG_SEAT_PATH is set and correct
$ env |grep XDG_SEAT_PATH
XDG_SEAT_PATH=/org/freedesktop/DisplayManager/Seat0
$ loginctl
SESSION UID USER SEAT
c4 996 lightdm seat0
56 1000 leigh seat0
2 sessions listed.
Requires: NetworkManager-gnome (which may be nm-applet on Mint or other distributions)
Requires: zeitgeist
Requires: colord
Requires: cinnamon-screensaver
Or you have to read gdm logs or /var/log/message to figure out why. It's hard for users.
* cinnamon-session version (cinnamon-session --version)
cinnamon-session 3.6.1
* Distribution - (Mint 17.2, Arch, Fedora 25, etc...)
Gentoo
For our non-systemd users we're using elogind to provide logind, the following crude patch works for cinnamon-session downstream but it would be nice if we could work on getting this upstreamed (note the libsystemd version check on line 45 is not from master, but used to disable automagic, but otherwise it should apply cleanly)
https://gitweb.gentoo.org/repo/gentoo.git/tree/gnome-extra/cinnamon-session/files/cinnamon-session-3.6.1-elogind.patch
#0 0x0000000000413392 in ?? ()
#1 0x000000000041bb54 in ?? ()
#2 0x00007f0ee5b0ef29 in g_cclosure_marshal_VOID__STRINGv (closure=0xb427a0, return_value=<optimized out>, instance=<optimized out>, args=<optimized out>, marshal_data=<optimized out>,
n_params=<optimized out>, param_types=0xb3c970) at /tmp/buildd/glib2.0-2.40.0/./gobject/gmarshal.c:1004
#3 0x00007f0ee5b0c5e7 in _g_closure_invoke_va (closure=0xb427a0, return_value=0x0, instance=0xb31a40, args=0x7fffda5018c8, n_params=1, param_types=0xb3c970)
at /tmp/buildd/glib2.0-2.40.0/./gobject/gclosure.c:831
#4 0x00007f0ee5b25088 in g_signal_emit_valist (instance=0xb31a40, signal_id=<optimized out>, detail=0, var_args=var_args@entry=0x7fffda5018c8) at /tmp/buildd/glib2.0-2.40.0/./gobject/gsignal.c:3215
#5 0x00007f0ee5b25ce2 in g_signal_emit (instance=<optimized out>, signal_id=<optimized out>, detail=<optimized out>) at /tmp/buildd/glib2.0-2.40.0/./gobject/gsignal.c:3363
#6 0x00000000004196e0 in ?? ()
#7 0x000000000041f9ad in ?? ()
#8 0x000000000041b9e5 in ?? ()
#9 0x00007f0ee6314829 in invoke_object_method (message=0xb0cc00, connection=0xb0c100, method=0x42daa0, object_info=<optimized out>, object=0xb490e0) at dbus-gobject.c:1899
#10 object_registration_message (connection=0xb0c100, message=0xb0cc00, user_data=<optimized out>) at dbus-gobject.c:2161
#11 0x00007f0ee60dd5ef in ?? () from /lib/x86_64-linux-gnu/libdbus-1.so.3
#12 0x00007f0ee60cfcc4 in dbus_connection_dispatch () from /lib/x86_64-linux-gnu/libdbus-1.so.3
#13 0x00007f0ee6311db5 in message_queue_dispatch (source=<optimized out>, callback=<optimized out>, user_data=<optimized out>) at dbus-gmain.c:90
#14 0x00007f0ee53fae04 in g_main_dispatch (context=0xb12530) at /tmp/buildd/glib2.0-2.40.0/./glib/gmain.c:3064
#15 g_main_context_dispatch (context=context@entry=0xb12530) at /tmp/buildd/glib2.0-2.40.0/./glib/gmain.c:3663
#16 0x00007f0ee53fb048 in g_main_context_iterate (context=0xb12530, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at /tmp/buildd/glib2.0-2.40.0/./glib/gmain.c:3734
#17 0x00007f0ee53fb30a in g_main_loop_run (loop=0xb80430) at /tmp/buildd/glib2.0-2.40.0/./glib/gmain.c:3928
#18 0x00007f0ee6ecc735 in gtk_main () at /build/gtk+3.0-lhk9E2/gtk+3.0-3.12.2/./gtk/gtkmain.c:1192
#19 0x000000000040b46e in ?? ()
#20 0x00007f0ee502ab45 in __libc_start_main () from /lib/x86_64-linux-gnu/libc.so.6
#21 0x000000000040b538 in ?? ()
This is rather obscure to me. Any ideas where to look for the source of the trouble? Happens on Debian testing:
]==> dpkg -l | grep dbus-glib
ii libdbus-glib-1-2:amd64 0.102-1 amd64 simple interprocess messaging system (GLib-based shared library)
ii libdbus-glib-1-2-dbg:amd64 0.102-1 amd64 simple interprocess messaging system (GLib library debug symbols)
ii libdbus-glib-1-dev 0.102-1 amd64 simple interprocess messaging system (GLib interface)
* Cinnamon version 5.0.7
- Not using the daily builds PPA
* Mint 20.2
* Geforce discrete graphics with nvidia drivers
* 64 bit
Issue
Hello! I'm running Mint 20.2 Cinnamon on a laptop that I share with the family. It's configured to automatically load one user account after boot. After closing said user session and logging in with a different user account, I realized by running htop
that several services remain running for that user.
This is a problem for example with services like blueberry-obex-agent
, where it breaks file receiving over Bluetooth: there are two bt-obex daemons running at the same time, and attempting to receive a file over Bluetooth produces an error regarding file permissions (0x43 Forbidden). I am currently working around this issue by disabling automatic user session login (although it persists when closing and logging in with another user).
I have not tested other duplicated daemons but this case is enough on its own.
Steps to reproduce
In a computer configured with at least two user accounts:
Expected behaviour
User services should stop running on closing a Cinnamon user session.
Other information
I love Cinnamon regardless, great work devs! 🤩
* Version 3.8.1
* Distribution - NetBSD 7.1.2
* i915drmkms
* amd64
Issue
My LS_COLORS environment variable is 6000+ chars long and g_regex_match causes a segfault in
cinnamon-session/csm-util.c line 591.
Steps to reproduce
I've extracted the code to reproduce the failure:
#include <stdio.h>
#include <string.h>
#include <err.h>
#include <glib.h>
int main(void) {
GRegex *regex;
regex = g_regex_new("^([[:blank:]]|[^[:cntrl:]])*$", G_REGEX_OPTIMIZE,
0, NULL);
if (regex == NULL)
err(EXIT_FAILURE, "failed g_regex_new value_regex");
const char *value = g_getenv("LS_COLORS");
if (g_utf8_validate(value, -1, NULL) == 0)
err(EXIT_FAILURE, "failed to validate utf8");
printf("validated.\n");
printf("%s\n\n", value);
if (g_regex_match(regex, value, 0, NULL))
err(EXIT_FAILURE, "failed to regex_match");
g_regex_unref(regex);
return EXIT_SUCCESS;
}
Using an LS_COLORS variable available here
Of course by removing LS_COLORS from the environment cinnamon-session does not crash.
For apps with no delay that the system includes, like mintWelcome
, or apps that have programatically installed themselves, like Dropbox
, the delay column is empty.
For apps with no delay that I've created manually, the delay field reads 0
. If I try to clear the text of the spinner in the dialog and save, it is reset to 0
.
I have "Automatically remember running applications when logging out" enabled in cinnamon-session-properties with cinnamon-session 2.0.6 on Fedora 20, however when I log out and then log in, it does not restart the applications that were running when I logged out.
Is there any chance you could add lightdm support so switch_user works.
mate-session-manager used this commit to add it
* cinnamon-session version 5.8.1 (but system info shows 5.8.4)
* Distribution - Mint 21.2
* Card: [AMD/ATI] Wani [Radeon R5/R6/R7 Graphics] (rev c8)
Driver: amdgpu
* 64 bit
Issue
After login, the screen goes green and gets horizontal lines dancing across it.
Steps to reproduce
Simply login to cinnamon
Expected behaviour
Should be the desktop
Other information
When I select Software Rendering on the login screen, cinnamon starts fine.
I can login from another box to collect any diagnostics that you need.
Same setup as this (Arch Linux, Cinnamon 3.0.1):
linuxmint/cinnamon#5284
Occurs when opening the dialog from the main menu > switch icon or by manually calling cinnamon-session-quit
.
Xorg, LightDM, Intel graphics drivers
After installing the latest releases of cinnamon packages, cinnamon-session
crashes every few minutes. Though I am not sure the issue is actually with cinnamon-session
because there haven't been any changes recently that could explain the crashes (AFAICT). But I could be wrong about that because the crashes do not occur after downgrading the cinnamon-session
package only.
I'm running Antergos (Arch) and actually discovered this while testing the packages before they are put into Arch's official repos. I will (hopefully) be co-maintaining Cinnamon for Arch going forward (provided that my Trusted User application is accepted). Anyway, I've included everything that I think could possibly be relevant to debugging this below. Please let me know if there is anything else I can do to help identify and resolve the issue. Thanks!
Distro | Antergos (Arch) |
---|---|
Kernel | 4.4.5-1-ARCH |
GFX Driver | NVIDIA 361.28-4 |
GCC | 5.3.0-5 |
GTK3 | 3.18.9-1 |
Clutter | 1.24.2-1 |
GTK2 | 2.24.30-1 |
Cinnamon Stack | Latest github releases |
Systemd Journal | http://paste2.org/ZZI5sG2M |
---|---|
.xsession-errors | http://paste2.org/bVmdF1WI |
.xsession-errors.old | http://paste2.org/n0CWUdJV |
Hi, from a fast look to cinnamon source I not found where it is used and about the graphic acceleration check seems use a different check from js/ui/main.js.
I'm wrong and I not found where is used or is cinnamon-session-check-accelerated not unsed anymore and should be removed?
what is needed for cinnamon to store what apps are open, their geometry and workspace placement?
THanks
Arch Linux
Cinnamon 5.8.4
Nvidia RTX 2070 Super
Always
After updating to Cinnamon version 5.8.4 the error occurred
Nov 21 06:23:30 I-NET cinnamon-session[844]: GLib-CRITICAL: t+1.96972s: g_child_watch_add_full: assertion 'pid > 0' failed
reboot
Unfortunately, I don't know how to fix the error...
No response
On Mint 21.3 64 bit with cinnamon-session 6.0.1
Issue
In Mint 21.2, rebooting from a terminal was as simple as typing "reboot" in any open terminal.
In Mint 21.3, it fails with the following message :
$ reboot
Operation inhibited by "pila" (PID 1844 "cinnamon-sessio", user pila), reason is "user session inhibited".
Please retry operation after closing inhibitors and logging out other users.
Alternatively, ignore inhibitors and users with 'systemctl reboot -i'.
Is it the expected behavior ?
I preferred the previous behavior, but I see how the new one could be seen as an improvement.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.