Özet

Geliştiricilerin derin hakkında daha fazla bilgi sahibi olmalarını sağlamak için bu makale, derinlerin mimari tasarımını ve temel modüllerin işleyişini açıklamak için resimlerle birlikte açıklamaları sağlayacaktır. Bu, geliştiricilerin tasarım fikri ve yönergeleri hakkında genel bir bakış açısı kazanmalarına yardımcı olacaktır. Ayrıntılı uygulama kodu ve modülleri burada, kodla ilgili daha fazla bilgi için atlanacaktır; lütfen bkz. https://github.com/linuxdeepin.

Mimariye Genel Bakış

Tam bir masaüstü çalışma sistemi aşağıdaki katmanlara bölünebilir:

Çekirdek/Sürücü CPU, bellek ve disk gibi donanımlar için ve farklı netcard, ekran kartı, ses kartı ve GÇ cihazları vb. Ile uyumlu olması gerekir..
Ekran Sunucusu Çekirdekten başlattığımızda, plymouth’u (ayrıca sistemin açılış ekranı) görebiliriz ve oturum açma ekranını gördüğünüzde ve Şifre’yi girmenizi isterse ekran sürücüsü ve X Server da yeni başlatılmıştır. Linux sisteminin grafik arabirimi için temeldir. Tüm boyama talebi işlemek için X Server’a gönderilecek. Ayrıca, giriş ve ekran için soyut katmandır, geliştiriciler sürücülerin ayrıntılı bilgilerine bakmadan X11 / XCB API’lerini kullanabilir. Ancak şimdi çoğu kullanıcı, uygulamalarını yazmak için daha yüksek GTK + / Qt kitaplığını kullanıyor olacak.
Görüntü Yöneticisi Basitçe şifreyi girebileceğiniz arayüz, oturum açma ekranı
Kaynak Yöneticisi Donanım durumunu izlemek için bir dizi süreç işlemi ve masaüstü ortamına ve ağ, güç, disk, bluetooth, ses, klavye ve yazıcı gibi uygulamalara bilgi sağlayacak.
Masaüstü Ortamı Deepin Masaüstü Ortamına gelince, arkaplan hizmetleri ve süreç işlemleri içerir. Tam bir masaüstü ortamı, grafiksel geliştirme tookit, ikili araçlar ve DBus API’leri sağlayacaktır. Bu parçaları daha sonra açıklayacağız.
App Store Yazılımın kurulumu, kaldırılması ve yükseltilmesi vb. Işlemler yapar ve kullanıcıya yazılımı düzgün bir şekilde yönetmesini sağlar ve yazılımı yorumlayabilir ve derecelendirebilir..
Uygulamalar Esas olarak Deepin Orijinal Uygulamaları, işbirliği yapılan uygulamalar, Android, Windows ve hatta Web uygulamaları

Görüntü Yöneticisi

Önce ekran yöneticisini tanıtacağız. Ekran yöneticisi, X Sunucusu başarıyla başlatıldıktan sonra başlatılacaktır.

Deepin, Ubuntu tarafından geliştirilen LightDM’i kullanıyor. Diğer büyük ekran yöneticileri GNOME’dan GDM, KDE’den KDM’dir. LightDM’i kullanmak çok hafif ve herhangi bir masaüstü ortamını bağlamaz ve GTK+, Qt ve HTML5 için özel bir arabirim sağlar, vb. Bu çok uygundur.

Ekran yöneticisi, esasen sisteme yapılandırılmış kullanıcı izinlerine göre oturum açma kullanıcıları için kimlik doğrulama ve kullanıcı değiştirme işlevleri sağlar. Kullanıcı doğrulamayı geçtikten sonra, masaüstü ortamını göstermek için greeter’ten (LightDM için yapılandırma arabirimi) sonraki başlatma programını (genelde masaüstü ortamı için başlatma programı) yürütür.

Deepin, Qt5’e dayanan, derin açılı olarak adlandırılan bir ön uç arayüzü geliştirdi:

Temel kimlik doğrulama, kullanıcı anahtarı, tarih saati ve kapatma işlevlerinin yanı sıra şunları da sağlar:

  • Kullanıcılar ekran kilitliyken veya kullanıcıyı değiştirirken müzik değiştirmesine veya duraklatmasına olanak tanıyan multimedya kontrol arabirimi (sağ alt kısımda).
  • Başlangıç sırasında veya birden çok ekranla kilidini açtığınızda, ana kilitleme arayüzünü imlece göre değiştirecektir.
  • Güç, hesap ve parlak gibi parolayı yazarken bazı sistem hizmetleri doğrudan başlayacaktır. Kullanıcı şifreyi girdikten sonra bu servisler önceden yüklenebilir. Bu, diğer masaüstü ortamlarına kıyasla başlangıç süresinin % 30’unu kısaltır.

DDE Daemon servisleri

Görüntü yöneticisi tarafından başarılı bir şekilde otomatikleştirildikten sonra, sistem greeter’ın exec bağımsız değişkenlerini çağırır. Derinlik için bu argüman başlangıç olacak. Startdde, Deepin Masaüstü Ortamı’nı başlatan bir uygulamadır. Bu komut, masaüstü ortamını başlatmak ve görüntülemek için aşağıdaki işlemleri yapar:

  • Oturum kapatma ve yeniden başlatma işlemleri gibi temel masaüstü oturum yönetimini gerçekleştirin;
  • Masaüstündeki ortamın ve GTK + ve Qt uygulamalarının kullanıcı temasını başarıyla yükleyebilmesine izin vermek için xsettings’e göre tüm sistem temasını ayarlayın. Ekranın DPI’sı da bu aşamada yüklenir;
  • Uygulamaların başlangıç yöntemini, * .desktop dosyalarını çalıştırmak ve alarm olayları yapmak da dahil olmak üzere freedesktop tarafından sağlanan teknik özelliklerle çaliştırın;
  • Ana ekranda normal olarak rıhtım ve masaüstünü gösterebilen birden fazla ekranı yönetin;
  • Uygulamaların başlangıç sırasını yönetin. Örneğin, bazı sistem hizmetleri yüklenmediği için, diğer uygulamaların aynı anda çalışmasını önlemek için önce dde çekirdek bileşenlerini ve daha sonra diğer uygulamayı başlatır; bu durum yarış koşullarına neden olabilir. Ve startdde programı, bir programın yüklenip yüklenemeyeceğini, başlatma sürecini iyi bir sıraya koymak için karar verebilir;

Başlatılan program yüklendiğinde, rıhtım ve başlatıcı için aşağıdakileri içeren bir arka uç hizmeti sağlamak için dde-session-initializer işlemini çalıştırır:

  • Rıhtım ve rampanın yerleşik programlarını yönetin;
  • Uygulamaların başlangıç durumunu koruyun;
  • Uygulamalar için çalışma alanının ve konumunun durumunu koruyun;
  • Yüklü uygulamaların durumunu ve simgelerini koru;

Dde-session-initializer, rıhtım ve başlatıcı için bir arka plan programı işlemidir ve bunlar için temel işlev sağlar. Uygulama simgelerini tıklayıp programların pencerelerini bu işlem olmadan değiştiremiyoruz.

Dde-session-initializer daha önce dde-session-daemon’un bir parçasıydı, bu işlemi rıhtım ve başlatıcıyı artırmak için ikiye bölmüştük.

Dde-session-daemon ve dde-system-daemon, tüm sistem için iki ana süreç süreçidir. Ağ kartı, güç, disk, Bluetooth, ses, yazıcı, kimlik doğrulama, paylaşım, klavye ve fare, vb. Dahil olmak üzere donanımın tüm durumunu muhafaza ederek tüm süreç sürecini kapsüller ve kullanıcıya tasarım odaklı arayüz sağlarlar.

Dde-session-daemon, ses, klavye ve fare ve tarih saati gibi root ayrıcalıklarına gerek duymayan işlemleri içerir. Dde-system-daemon güç, hesap, dosya işlemleri ve parlak gibi kök ayrıcalıklarına ihtiyaç duyan diğer kısmı içerir. Kum havuzu işleminin bu tasarımı, izinleri sınırlayabilir ve bir çok güvenlik sorunundan kaçınabilir.

Dde-session-daemon ve dde-system-daemon aşağıdaki parçaları yapar:

  • Hesap oluşturma, silme ve yönetme işlevini gerçekleştirme;
  • Birden fazla ekran için konum, yön, çözünürlük ve parlak vb. Dahil olmak üzere farklı durumu yönetin.;
  • Varsayılan dosya ilişkilendirmeleri ve tema ayarlarını yönetme;
  • Kablolu ve kablosuz ağ, VPN ve DSL için ağ ayarlarını yönetme;
  • Bluetooth, ses, tarih saati ve saat dilimi vb. Ayarlarını yönetin;
  • Güç, klavye ve fare ayarlarını yönetme;
  • Sistem yükseltme ve önyükleme işlemlerini yönetme;
  • Çoklu dokunmatik yüzey için hizmetler sağlayın.

Dde-session-initalizer, dde-session-daemon ve dde-system-daemon GNOME’da yaptığı gibi gnome-session-daemon işlevini yerine getirirken, Deepin Team golang’ı kullanarak daemon işlem kodunu kullanıcı ihtiyaçları için yeniden yazıp daha iyi bir performans elde etmeye çalışmaktadır. Masaüstü ortamı ve uygulamaları için soyut ve gelişmiş hizmetler sunmak için DDE sadece GNOME ve KDE gibi altyapı kitaplığını (ağ yöneticisi, kurulum, udisk, bluez, pluseaudio, fincan, polkitd, gvfsd) aramak için kullanılır.

DDE API

Masaüstü ortamı, masaüstü ortamı ve uygulamalarının sıfırdan uygulamadan doğrudan çağrı için grafik geliştirme araç seti, ikili araçlar ve DBus API arayüzü içeren Deepin Masaüstü Ortamının daemon sürecinin üzerinde bir API katmanı sağlayacaktır. DBus API parçası dinamik olarak DBus hizmetleri tarafından çağrılır (ve bellekte kalmaz), arayüzü herhangi bir programlama dili ile arayabilirsiniz. Soldan sağa resim göstereceğiz:

DTK

DTK (Deepin Toolkit), Deepin Desktop ve Deepin Original Application’ı yazmak ve birleştirmek için Qt5’e dayanan bir UI araç seti setidir, ana işlevleri şunlardır:

  • Sıfırdan yazmaktan kaçınmak için tekli arayüz sağlayın.
  • XCB kütüphanesi ile hareket ettirmek ve yakınlaştırmak için bir dizi işlev sunun, sınırlandırılmamış bir pencere oluşturmak için X11/XCB işlevlerine başvurmaya gerek yoktur.
  • Daha düşük Qt kütüphanesi tarafından oluşturulmadan güzel özel denetimler paketi sağlayın, çalışmaya hazır.

İlgilendiyseniz kaynak kodunu şu adresten isteyebilirsiniz: https://github.com/ Linuxdeepin / deepin-tool-kit ile Qt5 kütüphanesi yerine doğrudan DTK kitaplığınızla şık bir ürün geliştirebilirsiniz. Ve yorum yapabilir ve onun için yamalar gönderebilirsiniz.

dde-api ikili kullanımlar

Temelde dde-session-daemon ve dde-system-daemon’u geliştirmek için ikili araçlar, aşağıdaki uygulamaları açarak diğer uygulamaları doğrudan çekirdek teknolojileri kullanmalarına izin verin ve tekerleği yeniden icat etmeyin:

  • Greeter-yardımcısı: Kilitleme ekranının dil ve klavye, vb. Için ayarları arayüzü sağlayın;
  • Görüntü-bulanıklık-yardımcısı: duvar kağıdı bulanıklık hizmeti sağlayın, kendi imajınızı yazmadan bir görüntüyü hızla bulanıklaştırabilirsiniz. Deepin Team’in bulanıklık algoritması, çalıştırmak için yalnızca 30ms harcıyor, topluluk uygulamalarının çoğundan daha hızlı;
  • Ay-takvim: Tarih ve saati sorgulamak için servis sağlayın;
  • Güç kaynağı: Güç bilgisi için, udev’i kullanarak güç durumu ve pil bilgisi edinmek için yüksek seviyeli bir arabirim sağlayın;
  • Soundutils: Masaüstü ses efektlerini çalmak için arabirim sağlayın;
  • validator: Bir çok regex sınamadan kullanıcı adı için bir doğrulayıcı sağlayın;
  • İmleç-yardımcı: İmleç teması için ayarları sağlayın;
  • Drandr: Monitör hakkında ayrıntılı bilgi edinmek için x11 randr api için yüksek düzeyde bir arabirim sağlayın;
  • dxinput: G/Ç aygıtlarını almak ve ayarlamak için x11 xi / xi2 api için yüksek düzeyde bir arabirim sağlayın;
  • Ve bu proje tarafından sağlanan birçok gelişmiş hizmetler: https://github.com/linuxdeepin/dde-api, Işlevini genişletmekten memnuniyet duyuyorsunuz

dde-daemon dbus API

Bu bölüm, Deepin Kontrol Merkezi için, dde-session-daemon ve dde-system-daemon tarafından sağlandı, başta bazı DBus arabirimleri. Diğer uygulamalar, bazı alt katman kodunu bilmeden veya yazmadan API’nin bu bölümünü de kullanabilir. Bazı işlevleri basitçe tanıtacağız, ilgileniyorsanız kontrol merkezinin kodunu buradan öğrenebilirsiniz: https://github.com/linuxdeepin/dde-control-center

  • Ana ekran olan ekranların numaralarını ve geçerli sistemin hangi çözünürlükleri olduğunu sorgular.
  • Mevcut sistemin dil, parlak ve hacim vb. Ayarlarını sorgulayın.
  • Kablolu veya kablosuz bağlantıyı kullanmak gibi ve açtıysanız mevcut sistemin VPN bağlantısını sorgulayın.
  • Geçerli sistemin tarih ve saatini, saat dilimini ve klavye ve fare, vb. sorgulayın.

Denetim merkezinin gösterdiği tüm donanım bilgileri, dde-api’nin DBus arabirimi tarafından sorgulanabilir, deepin geliştirici ekibi bu DBus API’sını uzun süre rafine etmişti, bunları alt düzey kütüphaneyi yazmadan kullanabilirsiniz (ağ yöneticisi, pulseaudio, bluez, upower ve udisk, vb.) Kodlamayı acı çekerek, gelişmiş işlevler yazmak için daha fazla zaman harcamak.

DDE UI

Deepin Masaüstü Ortamının son kısmı, aşağıdaki kısımları içeren UI katmanıdır:

deepin-wm İki pencere yöneticisi vardır: deepin metacity ve deepin-wm, sistem otomatik olarak donanım performansına ve ekran sürücüsüne bağlı olarak seçim yapacaktır. Deepin metacity, düşük konfigürasyonlu bilgisayarlar için uygunluk temelli veya uygun ekran sürücüsünü yüklemeden 2D pencere yöneticisidir. Düşük kaynak tüketimi ve kötü animasyon efektleri vardır. Deepin-wm, mutter tabanlı bir 3D pencere yöneticisi ve aynı zamanda varsayılan pencere yöneticisi. Zarif animasyon efektleri ile uygun ekran sürücüsü ve yüksek yapılandırma bilgisayarı için uygundur.
dde-desktop Masaüstünün temel dosya ızgarasını ve temel dosya işlemlerini sağlar. Deepin Dosya Yöneticisi (dde-dosya yöneticisi) gibi aynı iletişim kutusunu korumak için libdde-file-manager kitaplığını kullanır
dde-dock Grafik rıhtım simgesi ve durum yönetimi sağlar, kullanıcı konumu ve stilini değiştirebilir
dde-launcher Yüklü uygulamaları göstermek, bunları arama ve çalıştırma işlevleri sağlar
dde-control-center Hesap, tema, ağ, bluetooth, ses, GÇ, varsayılan uygulamalar, tarih saati, güç ve sistem yükseltme gibi donanım kaynakları için bir ön uç arabirimi sağlar..
dde-osd Ses ve parlaklık için OSD arabirimi sağlar..
deepin-menu Birleştirilmiş bir bağlam menüsü UI’sı sağlar
deepin-notificaiton Farklı uygulamalar için farklı atlama düğmesini göstermek için sistem için bildirim hizmeti sağlar
deepin-policykit-agent Aynı iletişim kutusunu kullanarak hem GTK+ hem de Qt uygulamasını korumak için Deepin UI tasarım özelliklerine göre tüm uygulamalar için birleşik bir şifre ve kimlik doğrulama iletişim kutusu sağlar
deepin-icon-theme Deepin Store’daki binlerce uygulama da dahil olmak üzere dünyanın en uyumlu stil simgesi seti, buradan kontrol edebilirsiniz: https://github.com/linuxdeepin/deepin-icon-theme/tree/master/deepin
deepin-gtk-theme Deepin UI (GT + 2, GTK + 3, Qt4 ve Qt5) tasarım özelliklerine göre pencere temasıdır.
deepin-default-settings Duvar kağıdı ve simge teması gibi Deepin Masaüstü Ortamı için varsayılan ayarları sağlar..
qt5-entegrasyon GTK+ ve Qt kitaplıklarına yamalayarak GTK+ ve Qt uygulamaları için birleştirilmiş arayüzü ve temayı sağlar. Aynı arayüzü hem GTK+ hem de Qt uygulamalarında elde etmek için bir kere yazabilirsiniz

Deepin Store

Deepin Store, Linux’ta mükemmel ürün kalitesi ve mükemmel etkileşim deneyimi olan ilk App Store’dur.

Deepin Orijinal Uygulamalarının yanında, Intel ile işbirliği yapan deepin-xwalk tarafından dahili Android çalışma zamanı ve HTML5 uygulamaları (örneğin, Gliffy) tarafından deepin-wine projesi, 200’den fazla Android uygulaması (ör. Angry Birds ve bazı video istemcisi) tarafından 50 + Windows uygulamalarını destekliyoruz. HTML5 uygulaması penceresinin boyutunu da hatırlayabilir.

Deepin Mağazası, lastore-daemon, lastore-session-helper ve deepin-appstore olarak bölünebilir:

  • Lastore-daemon: Paket indirme, hash kontrolü, bağımlılık analizi, yerel önbellek yönetimi, yazılım yükleme, kaldırma ve yükseltme işlerini yapan uygulama mağazasının temel parçasıdır. Bu daemon işlemi uzak depoları ile iletişim kuracak ve tüm sistemin yükseltme ve güvenlik sürecini devam ettirecektir. Lastore-daemon, terminalin zarar görmesini önlemek için apt/dpkg programına bazı kancalar da ekleyecek.
  • Lastore-session-helper: Kullanıcıları bilgilendirmek, yazılım yüklerken güvenliği sağlamak gibi bazı kullanıcı oturum işlemleri yürütecek lastore-daemon’un yardımcıcısıdır, kodun bu kısmını lastore-session- helper.
  • Deepin-appstore: Uygulama mağazasının istemci ve arabirimi, yalnızca kullanıcının etkileşimini işlemek ve bir web sayfasını yerleştirmek için CEF’e dayanan bir uygulama kabuğu. Sunucu yeni bir yazılım yükselttikten sonra, web sitesini yenilemek için deepin-appstore’a söyleyecektir. Ayrıca, yorum ve oran işlemleri için arayüz de bulunmaktadır. Teknik açıdan deepin-appstore, yerli bir istemci gibi basit bir web tarayıcısıdır.