Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • ste74/pamac
  • codesardine/pamac
  • LordTermor/pamac
  • matthias-vogt/pamac
4 results
Show changes
Commits on Source (635)
Showing
with 314 additions and 654 deletions
......@@ -6,3 +6,4 @@ file_filter = po/<lang>.po
source_file = po/pamac.pot
source_lang = en
type = PO
Pamac is a Package Manager based on libalpm with AUR and Appstream support
Pamac is a Gtk and CLI front ends of [libpamac](https://gitlab.manjaro.org/applications/libpamac)
#### Features
- libpamac: Library to access package infos and run transactions
- Python bindings for libpamac
- pamac: a CLI
- pamac-manager: a Gtk3 GUI
- pamac: an easy [CLI](https://gitlab.manjaro.org/applications/pamac-cli)
- pamac-manager: a Gtk4 GUI
- pamac-tray: a Gtk3 tray icon with updates notifications
- pamac-tray-appindicator: a AppIndicator tray icon with updates notifications
- pamac updates indicator: a gnome-shell extension with updates notifications
#### Installing from source
......@@ -17,11 +14,11 @@ In the source directory run:
`mkdir builddir && cd builddir`
`meson --prefix=/usr --sysconfdir=/etc`
`meson setup --prefix=/usr --sysconfdir=/etc --buildtype=release`
`ninja`
`meson compile`
`sudo ninja install`
`sudo meson install`
#### Translation
......
install_data('pamac-installer.desktop', install_dir: join_paths(get_option('datadir'), 'applications'))
install_data('pamac-updater.desktop', install_dir: join_paths(get_option('datadir'), 'applications'))
install_data('pamac-manager.desktop', install_dir: join_paths(get_option('datadir'), 'applications'))
install_data('org.manjaro.pamac.manager.desktop', install_dir: join_paths(get_option('datadir'), 'applications'))
install_data('pamac-tray.desktop', install_dir: join_paths(get_option('sysconfdir'), 'xdg', 'autostart'))
if get_option('enable-appindicator')
install_data('pamac-tray-appindicator.desktop', install_dir: join_paths(get_option('sysconfdir'), 'xdg', 'autostart'))
if get_option('enable-fake-gnome-software')
install_data('org.gnome.Software.desktop', install_dir: join_paths(get_option('datadir'), 'applications'))
endif
install_data('pamac-tray.desktop', install_dir: join_paths(get_option('sysconfdir'), 'xdg', 'autostart'))
install_data('pamac-tray-budgie.desktop', install_dir: join_paths(get_option('sysconfdir'), 'xdg', 'autostart'))
[Desktop Entry]
Exec=gnome-software %U
Terminal=false
Type=Application
StartupNotify=true
DBusActivatable=true
NoDisplay=true
......@@ -130,11 +130,140 @@ Comment[vi]=Thêm hoặc gỡ phần mềm cài đặt trên hệ thống
Comment[zh_CN]=添加或删除系统中安装的软件
Comment[zh_HK]=加入或移除系統上安裝的軟件
Comment[zh_TW]=加入或移除系統上安裝的軟體
# Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon!
Keywords[af]=bywerkings;opgradeer;bronne;lêerstoor;voorkeure;installeer;verwyder;program;sagteware;toep;winkel;
Keywords[ar]=تحديثات;ترقيات;مصادر;مستودعات;تفضيلات;تنصيب;إزالة;برنامج;برمجية;تطبيق;سوق;تحديث;ترقية;مصدر;مستودع;
Keywords[as]=আপডেইটসমূহ;উন্নয়ন;উৎসসমূহ;ভঁৰালসমূহ;পছন্দসমূহ;ইনস্টল;আনইনস্টল;প্ৰগ্ৰাম;চফ্টৱেৰ;এপ;সংৰক্ষণ;
Keywords[bg]=updates;upgrade;sources;repositories;preferences;install;uninstall;program;software;app;store;обновления;надграждане;източници;хранилища;предпочитания;настройки;инсталиране;деинсталиране;програма;софтуер;приложение;магазин;
Keywords[bn]=আপডেট;আপগ্রেড;উৎস;ভান্ডার;পছন্দ;সংস্থাপন;অসংস্থাপন;প্রোগ্রাম;সফটওয়্যার;এ্যাপ;দোকান;
Keywords[bs]=Ažuriranje;Nadogradnja;Izvor;Repozicija;Postavke;Instalacija;Deinstalacija;Program;Sofver;App;Radnja;
Keywords[ca]=Actualitzacions;Actualització;Fonts;Dipòsits;Preferències;Instal·lació;Desinstal·lació;Aplicació;Programa;Apli;Botiga;
Keywords[ca@valencia]=Actualitzacions;Actualització;Fonts;Dipòsits;Preferències;Instal·lació;Desinstal·lació;Aplicació;Programa;Apli;Botiga;
Keywords[cs]=aktualizace;povýšení;zdroje;repozitáře;předvolby;nastavení;instalace;odinstalace;odebrání;program;software;aplikace;obchod;
Keywords[da]=Opdateringer;Opgrader;Kilder;Pakkearkiver;Indstillinger;Installer;Afinstaller;Program;Software;App;Butik;
Keywords[de]=Aktualisierungen;Systemaktualisierung;Quellen;Einstellungen;Installieren;Entfernen;Programm;Software;App;Store;Anwendung;Update;
Keywords[el]=Ενημερώσεις;Αναβαθμίσεις;Πηγές;Αποθετήρια;Προτιμήσεις;Εγκατάσταση;Απεγκατάσταση;Πρόγραμμα;Λογισμικό;Εφαρμογή;Αποθήκευση;Updates;Upgrade;Sources;Repositories;Preferences;Install;Uninstall;Program;Software;App;Store;
Keywords[en_GB]=Updates;Upgrade;Sources;Repositories;Preferences;Install;Uninstall;Program;Software;App;Store;
Keywords[eo]=Ĝisdatigoj;Altgradigo;Fontoj;Deponejoj;Agordoj;Instali;Malinstali;Programo;Programaro;Aplikaĵo;Butiko;
Keywords[es]=Actualizaciones;Actualizar;Fuentes;Repositorios:Preferencias;Instalar;Desinstalar;Programa;Software;App;Almacén;
Keywords[eu]=Eguneraketak;Bertsio-berritzeak;Iturburuak;Biltegiak;Hobespenak;Instalatu;Desinstalatu;Programa;Softwarea;Aplikazioa;Denda;App;
Keywords[fa]=Updates;Upgrade;Sources;Repositories;Preferences;Install;Uninstall;Program;Software;App;Store;به‌روز رسانی‌ها;ارتقا;منابع;مخازن;مخزن;ترجیحات;نصب;حذف;برنامه;نرم‌افزار;اپ;استور;
Keywords[fi]=Updates;Upgrade;Sources;Repositories;Preferences;Install;Uninstall;Program;Software;App;Store;Päivitys;Päivitykset;Lähteet;Ohjelmistolähteet;Ohjelmistovarastot;Asenna;Poista;Ohjelma;Sovellus;Kauppa;
Keywords[fr]=mises à jour;mise à niveau;sources;dépôts;préférences;installer;désinstaller;programmes;logiciels;applications;magasin;boutique;
Keywords[fur]=Inzornaments;Avanzament;Sorzints;Repositories;Preferencis;Instalâ;Disinstalâ;Program;Software;Aplicazion;Negozi;
Keywords[gd]=Updates;Upgrade;Sources;Repositories;Preferences;Install;Uninstall;Program;Software;App;Store;ùrachadh;ùrachaidhean;ùraich;àrdachadh;àrdaich;tùsan;ionad-tasgaidh;ionadan-tasgaidh;stàlaidh;stàladh;dì-stàlaich;dì-stàladh;prògram;bathar-bog;aplacaid;bùth;
Keywords[gl]=Actualizacións;Anovar;Orixes;Repositorios;Preferenzas;Instalar;Desinstalar;Programa;Software;Aplicación;Tenda;
Keywords[he]=עדכונים;שדרוג;מקורות;מאגרים;העדפות;התקנה;הסרה;מחיקה;תכנית;תכנה;יישום;חנות;
Keywords[hi]=अपडेट;नवीनीकरण;स्रोत;भंडार;प्राथमिकताएँ;स्थापित करें;स्थापना रद्द करें;प्रोग्राम;सॉफ़्टवेयर;ऐप;स्टोर;
Keywords[hr]=Nadopune;Nadogradnja;Izvori;Repozitoriji;Osobitosti;Instaliraj;Deinstaliraj;Program;Softver;Aplikacija;Trgovina;
Keywords[hu]=Frissítések;Frissítés;Források;Tárolók;Beállítások;Telepítés;Eltávolítás;Program;Szoftver;Alkalmazás;Bolt;
Keywords[id]=Pemutakhiran;Peningkatan;Sumber;Repositori;Preferensi;Pasang;Copot;Program;Perangkat Lunak;App;Toko;
Keywords[it]=Aggiornamenti;Avanzamento;Sorgenti;Repository;Preferenze;Installare;Disinstallare;Programma;Software;Applicazione;Negozio;
Keywords[ja]=Updates;Upgrade;Sources;Repositories;Preferences;Install;Uninstall;Program;Software;App;Store;更新;アップデート;アップグレード;ソース;リポジトリ;レポジトリ;設定;インストール;アンインストール;プログラム;ソフトウェア;アプリケーション;ストア;
Keywords[kk]=Жаңарту;Қайнар көздер;Репозиторийлер;Баптаулар;Орнату;Өшіру;Бағдарлама;БҚ;Қолданба;Дүкен;
Keywords[ko]=Updates;업데이트;Upgrade;업그레이드;Sources;공급원;Repositories;저장소;Preferences;기본 설정;Install;설치;Uninstall;설치 제거;Program;프로그램;Software;소프트웨어;App;앱;Store;스토어;
Keywords[lt]=Atnaujinimai;Šaltiniai;Saugyklos;Nuostatos;Įdiegti;Išdiegti;Programa;Programinė;Įranga;
Keywords[lv]=Atjauninājumi;Uzlabojumi;Avoti;Krātuves;Repozitoriji;Iestatījumi;Instalēt;Uzstādīt;Atinstalēt;Noņemt;Programmatūra;Lietotne;Veikals;
Keywords[mjw]=Updates;Upgrade;Sources;Repositories;Preferences;Install;Uninstall;Program;Software;App;Store;
Keywords[ml]=പുതുക്കലുകൾ;നവീകരണങ്ങൾ;ഉറവിടങ്ങൾ;റിപ്പോസിറ്ററികൾ;മുൻഗണനകൾ;ഇൻസ്റ്റാൾ ചെയ്യുക;അൺഇൻസ്റ്റാൾ ചെയ്യുക;പ്രോഗ്രാം;സോഫ്റ്റ്‌വെയർ;ആപ്പ്;കലവറ;
Keywords[ms]=Kemas kini;Tatar;Sumber;Repositori;Keutamaan;Pasang;Nyahpasang;Program;Perisian;Apl;Kedai;
Keywords[nb]=Oppdateringer;Oppgrader;Kilder;Repo;Brukervalg;Installer;Avinstaller;Program;Programvare;App;Butikk;
Keywords[nl]=Updates;Upgrade;Sources;Bronnen;Repositories;Preferences;Voorkeuren;Install;Installeren;Uninstall;Verwijderen;Program;Programma;Software;App;Toepassing;Applicatie;Store;Winkel;
Keywords[oc]=mesas a jorn;mesa a nivèl;fonts;depauses;preferéncias;installar;desinstallar;programa;aplicacion;logicial;magazin;
Keywords[pa]=ਅੱਪਡੇਟ;ਸਰੋਤ;ਰਿਪੋਜ਼ਟਰੀ;ਪਸੰਦ,ਇੰਸਟਾਲ;ਸਟੋਰ;ਅੱਪਗਰੇਡ;Updates;Upgrade;Sources;Repositories;Preferences;Install;Store;ਅਣਇੰਸਟਾਲ;ਅਣ-ਇੰਸਟਾਲ;ਪ੍ਰੋਗਰਾਮ;ਸਾਫਟਵੇਅਰ;ਐਪ;
Keywords[pl]=Aktualizacje;Aktualizuj;Zaktualizuj;Uaktualnienia;Uaktualnij;Update;Upgrade;Źródła;Źródło;Repozytoria;Repozytorium,Preferencje;Opcje;Ustawienia;Instalacja;Zainstaluj;Odinstaluj;Deinstalacja;Deinstaluj;Program;Oprogramowanie;Software;Aplikacja;Aplikacje;App;Apps;Sklep;Store;
Keywords[pt]=Atualizações;Fontes;Origens;Repositórios;Preferências;Instalar;Desinstalar;Programa;Software;App;Loja;
Keywords[pt_BR]=Atualizações;Upgrade;Atualização;Fontes;Repositórios;Preferências;Instalação;Instalar;Desinstalar;Programa;Software;Aplicativo;App;Loja;Store;
Keywords[ro]=Updates;Upgrade;Sources;Repositories;Preferences;Install;Uninstall;Program;Software;App;Store;Surse;Instalează;Aplicații;Depozite,Preferințe;Instalare;Dezinstalare;Actualizare;Actualizări;
Keywords[ru]=Обновления;Источники;Репозитории;Параметры;Установить;Удалить;Программа;Приложение;Магазин;
Keywords[sk]=Aktualizácie;Inovácia;Zdroje;Repozitáre;Nastavenia;Inštalácia;Inštalovanie;Odinštalovanie;Program;Softvér;Aplikácia;Obchod;
Keywords[sl]=Posodobitve;Posodobitev;Viri;Skladišča;Programi;Namestitev;Lastnosti;Odnamestitev;App;Trgovina;
Keywords[sr]=ажурирања;освежења;доградње;надоградње;извори;ризнице;складишта;поставке;инсталација;уклањање;програм;софтвер;апликација;радња;исправке;апдејтови;Updates;Upgrade;Sources;Repositories;Preferences;Install;Uninstall;Program;Software;App;Store;ažuriranja;osveženja;dogradnje;nadogradnje;izvori;riznice;skladišta;postavke;instalacija;uklanjanje;program;softver;aplikacija;radnja;ispravke;apdejtovi;
Keywords[sr@latin]=ažuriranja;osveženja;dogradnje;nadogradnje;izvori;riznice;skladišta;postavke;instalacija;uklanjanje;program;softver;aplikacija;radnja;ispravke;apdejtovi;Updates;Upgrade;Sources;Repositories;Preferences;Install;Uninstall;Program;Software;App;Store;ažuriranja;osveženja;dogradnje;nadogradnje;izvori;riznice;skladišta;postavke;instalacija;uklanjanje;program;softver;aplikacija;radnja;ispravke;apdejtovi;
Keywords[sv]=Uppdateringar;Uppgradera;Källor;Programvarukällor;Inställningar;Installera;Avinstallera;Program;Programvara;Mjukvara;Butik;App;Store;
Keywords[th]=ปรับรุ่น;แหล่งซอฟต์แวร์;คลังแพกเกจ;ปรับแต่ง;ติดตั้ง;ถอดถอน;โปรแกรม;ซอฟต์แวร์;แอ็ป;ร้าน;
Keywords[tr]=Güncellemeler;Güncelleştirmeler;Yükseltme;Depolar;Sürüm Depoları;Tercihler;Yükle;Kur;Kaldır;Program;Yazılım;Uygulama;Mağaza;
Keywords[uk]=Оновлення;Джерело;Сховище;Параметри;Налаштування;Встановити;Вилучити;Програма;Магазин;
Keywords[vi]=Bản cập nhật;Nâng cấp;Mã nguồn;Kho chứa mã;Ưu tiên;Cài đặt;Hủy cài đặt;Chương trình;Phần mềm;Ứng dụng;Cửa hàng;
Keywords[zh_CN]=Updates;Upgrade;Sources;Repositories;Preferences;Install;Uninstall;Program;Software;App;Store;更新;升级;源;仓库;首选项;安装;卸载;程序;软件;应用;商店;
Keywords[zh_HK]=Updates;Upgrade;Sources;Repositories;Preferences;Install;Uninstall;Program;Software;App;Store;;更新;升級;來源;套件庫;軟件庫;倉庫;偏好設定;安裝;解除安裝;程式;軟件;應用;商店;
Keywords[zh_TW]=Updates;Upgrade;Sources;Repositories;Preferences;Install;Uninstall;Program;Software;App;St
Icon=system-software-install
Exec=pamac-manager
Exec=pamac-manager %U
Terminal=false
Type=Application
Categories=GNOME;GTK;System;Settings;X-XFCE-SettingsDialog;X-XFCE-SystemSettings;
Categories=GNOME;GTK;System;PackageManager;Settings;X-XFCE-SettingsDialog;X-XFCE-SystemSettings;
StartupNotify=true
MimeType=x-scheme-handler/appstream;x-scheme-handler/snap;application/vnd.flatpak;application/vnd.flatpak.repo;application/vnd.flatpak.ref;application/vnd.snap;
X-GNOME-UsesNotifications=true
X-Purism-FormFactor=Workstation;Mobile;
StartupWMClass=pamac-manager
DBusActivatable=true
NoDisplay=true
Actions=updates;
[Desktop Action updates]
Name=Software Update
Name[af]=Sagtewarebywerking
Name[ar]=تحديث البرمجيات
Name[as]=চালনাজ্ঞান উন্নয়ন ব্যৱস্থা
Name[ast]=Anovamientu de software
Name[be]=Абнаўленне апраграмавання
Name[bg]=Обновление на софтуера
Name[bn]=সফ্টওয়্যার হালনাগাদ
Name[bn_IN]=সফ্টওয়্যার আপডেট ব্যবস্থা
Name[ca]=Actualització de programari
Name[ca@valencia]=Actualització de programari
Name[cs]=Aktualizace softwaru
Name[da]=Softwareopdatering
Name[de]=Software-Aktualisierungen
Name[el]=Ενημέρωση λογισμικού
Name[en@shaw]=𐑕𐑪𐑓𐑑𐑢𐑺 𐑳𐑐𐑛𐑱𐑑
Name[en_GB]=Software Update
Name[eo]=Programar-ĝistatigo
Name[es]=Actualización de software
Name[et]=Tarkvarauuendus
Name[eu]=Softwarearen eguneraketa
Name[fa]=بروزرسانی نرم‌افزار
Name[fi]=Ohjelmistopäivitykset
Name[fr]=Mise à jour des logiciels
Name[gl]=Actualización de software
Name[gu]=સોફ્ટવેર સુધારા
Name[he]=עדכון תכנה
Name[hi]=सॉफ्टवेयर अद्यतन
Name[hu]=Szoftverfrissítés
Name[id]=Pembaruan Perangkat Lunak
Name[it]=Aggiornamento software
Name[ja]=ソフトウェアの更新
Name[kn]=ತಂತ್ರಾಂಶ ಅಪ್‌ಡೇಟ್‌
Name[ko]=소프트웨어 업데이트
Name[lt]=Programinės įrangos atnaujinimas
Name[lv]=Programmatūras atjaunināšana
Name[mk]=Ажурирање на софтвер
Name[ml]=സോഫ്റ്റ്‌വെയര്‍ പരിഷ്കാരം
Name[mr]=सॉफ्टवेअर अद्ययावत
Name[nb]=Programvareoppdatering
Name[nl]=Software bijwerken
Name[nn]=Programvareoppdatering
Name[or]=ସଫ୍ଟୱେର ଅଦ୍ୟତନ
Name[pa]=ਸਾਫਟਵੇਅਰ ਅੱਪਡੇਟ
Name[pl]=Aktualizacja oprogramowania
Name[pt]=Actualização de Software
Name[pt_BR]=Atualizações de programas
Name[ro]=Actualizări de programe
Name[ru]=Обновление программ
Name[sk]=Aktualizácia softvéru
Name[sl]=Posodobitev programske opreme
Name[sr]=Ажурирање програма
Name[sr@latin]=Ažuriranje programa
Name[sv]=Programuppdatering
Name[ta]=மென்பொருள் மேம்படுத்தல்
Name[te]=సాప్ట్‍వేర్ నవీకరణ
Name[th]=ปรับรุ่นซอฟต์แวร์
Name[tr]=Yazılım Güncelleme
Name[ug]=يۇمشاق دېتال يېڭىلاش
Name[uk]=Оновлення програм
Name[vi]=Bản cập nhật phần mềm
Name[zh_CN]=软件更新
Name[zh_HK]=軟件更新
Name[zh_TW]=軟體更新
Exec=pamac-manager --updates
[Desktop Entry]
Name=Add/Remove Software
Name[af]=Voeg by/verwyder sagteware
Name[ar]=إضافة وإزالة البرمجيات
Name[as]=চালনাজ্ঞান যোগ কৰক/আঁতৰাই দিয়ক
Name[ast]=Amestar/Quitar software
Name[be]=Дадаць/выдаліць апраграмаванне
Name[bg]=Инсталиране/деинсталиране на софтуер
Name[bn]=সফ্টওয়্যার যোগ/অপসারণ
Name[bn_IN]=সফ্টওয়্যার যোগ/অপসারণ করুন
Name[ca]=Afegeix/Suprimeix programari
Name[ca@valencia]=Afig/Suprimeix programari
Name[cs]=Přidat/odebrat software
Name[da]=Tilføj/fjern software
Name[de]=Software hinzufügen/entfernen
Name[el]=Προσθαφαίρεση λογισμικού
Name[en@shaw]=𐑨𐑛/𐑮𐑦𐑥𐑵𐑝 𐑕𐑪𐑓𐑑𐑢𐑺
Name[en_GB]=Add/Remove Software
Name[eo]=Aldoni/forigi instalitan pogramaron
Name[es]=Añadir/Quitar software
Name[et]=Tarkvara lisamine ja eemaldamine
Name[eu]=Gehitu/Kendu softwarea
Name[fa]=افزودن/حذف نرم‌افزار
Name[fi]=Lisää tai poista ohjelmistoja
Name[fr]=Ajouter/supprimer des logiciels
Name[ga]=Cuir Leis/Bain Bogearraí
Name[gl]=Engadir ou eliminar programas
Name[gu]=સોફ્ટવેરને ઉમેરો/દૂર કરો
Name[he]=הוספת/הסרת תכנה
Name[hi]=सॉफ्टवेयर जोड़ें/हटायें
Name[hu]=Szoftver telepítése/eltávolítása
Name[id]=Tambah/Hapus Piranti Lunak
Name[it]=Aggiungi/Rimuovi software
Name[ja]=ソフトウェアの追加と削除
Name[kn]=ತಂತ್ರಾಂಶವನ್ನು ಸೇರಿಸು ಅಥವ ತೆಗೆ
Name[ko]=소프트웨어 추가/제거
Name[lt]=Įdiegti ar šalinti programinę įrangą
Name[lv]=Pievienot/Izņemt programmatūru
Name[mk]=Инсталирај/избриши софтвер
Name[ml]=സോഫ്റ്റ്‌വെയര്‍ ചേര്‍ക്കുക/നീക്കം ചെയ്യുക
Name[mr]=सॉफ्टवेअर जोडा/काढून टाका
Name[ms]=Menambah/Memadam perisian
Name[nb]=Legg til/fjern programvare
Name[nl]=Software installeren/verwijderen
Name[nn]=Legg til/fjern programvare
Name[or]=ସଫ୍ଟୱେର ଯୋଗ/ଅପସାରଣ କରନ୍ତୁ
Name[pa]=ਸਾਫਟਵੇਅਰ ਸ਼ਾਮਲ/ਹਟਾਓ
Name[pl]=Dodanie/usuwanie oprogramowania
Name[pt]=Adicionar/Remover Software
Name[pt_BR]=Adicionar/remover programas
Name[ro]=Adăugare sau ștergere programe
Name[ru]=Установка и удаление программ
Name[sk]=Pridanie alebo odstránenie softvéru
Name[sl]=Upravljanje programske opreme
Name[sr]=Додај-уклони програме
Name[sr@latin]=Dodaj-ukloni programe
Name[sv]=Lägg till/Ta bort programvara
Name[ta]=மென்பொருளை சேர்த்தல்/நீக்குதல்
Name[te]=సాఫ్ట్‍వేర్ జతచేయి/తీసివేయి
Name[th]=เพิ่ม/ลบซอฟต์แวร์
Name[tr]=Yazılım Ekle/Kaldır
Name[ug]=يۇمشاق دېتالنى قوش/ئۆچۈر
Name[uk]=Встановлення та вилучення програм
Name[vi]=Thêm/Gỡ phần mềm
Name[zh_CN]=添加/删除软件
Name[zh_HK]=加入或移除軟件
Name[zh_TW]=加入或移除軟體
Comment=Add or remove software installed on the system
Comment[af]=Voeg by of verwyder sagteware geïnstalleer op die stelsel
Comment[ar]=أضف أو أزل البرمجيات المثبتة على النظام
Comment[as]=ব্যৱস্থাপ্ৰণালীত সংস্থাপিত চালনাজ্ঞান উন্নয়ন কৰক
Comment[ast]=Amestar o quitar software instaláu nel sistema
Comment[be]=Дадаць ці выдаліць апраграмаванне, усталяванае ў сістэме
Comment[bg]=Инсталиране и деинсталиране на софтуер към системата
Comment[bn]=সিস্টেমে সফ্টওয়্যার যোগ করুন অথবা ইনস্টল করা সফ্টওয়্যার অপসারণ
Comment[bn_IN]=সিস্টেমে সফ্টওয়্যার যোগ করুন অথবা ইনস্টল করা সফ্টওয়্যার সরিয়ে ফেলুন
Comment[ca]=Afegeix o suprimeix programari instal·lat en el sistema
Comment[ca@valencia]=Afig o suprimeix programari instal·lat en el sistema
Comment[cs]=Přidat nebo odebrat software instalovaný v systému
Comment[da]=Tilføj eller fjern software installeret på systemet
Comment[de]=Auf dem System installierte Software aktualisieren oder neue Software hinzufügen
Comment[el]=Προσθαφαίρεση λογισμικού στο σύστημα
Comment[en@shaw]=𐑨𐑛 𐑹 𐑮𐑦𐑥𐑵𐑝 𐑕𐑪𐑓𐑑𐑢𐑺 𐑦𐑯𐑕𐑑𐑷𐑤𐑛 𐑪𐑯 𐑞 𐑕𐑦𐑕𐑑𐑩𐑥
Comment[en_GB]=Add or remove software installed on the system
Comment[eo]=Aldoni aŭ forigi instalitan pogramaron sur via sistemo
Comment[es]=Añadir o quitar software instalado en el sistema
Comment[et]=Arvutisse paigaldatud tarkvara lisamine ja eemaldamine
Comment[eu]=Gehitu edo kendu sisteman instalatutako softwarea
Comment[fa]=حذف یا افزودن نرم‌افزارهای نصب شده بر روی این سیستم
Comment[fi]=Lisää tai poista järjestelmään asennettuja ohjelmistoja
Comment[fr]=Ajouter ou supprimer des logiciels installés sur le système
Comment[gl]=Engadir e eliminar o software instalado no sistema
Comment[gu]=સિસ્ટમ પર સ્થાપિત થયેલ સોફ્ટવેરને ઉમેરો અથવા દૂર કરો
Comment[he]=הוספה או הסרה של יישומי המערכת
Comment[hi]=सिस्टम पर संस्थापित सॉफ्टवेयर जोड़ें या हटाएँ
Comment[hu]=Szoftverek rendszerre telepítése vagy eltávolítása
Comment[id]=Tambah atau hapus perangkat lunak yang terpasang pada sistem
Comment[it]=Aggiunge o rimuove software installato sul sistema
Comment[ja]=システムにインストールされたパッケージの追加と削除
Comment[kn]=ಗಣಕಕ್ಕೆ ತಂತ್ರಾಂಶವನ್ನು ಸೇರಿಸು ಅಥವ ಅನುಸ್ಥಾಪಿತಗೊಂಡಿರುವುದನ್ನು ತೆಗೆದು ಹಾಕು
Comment[ko]=시스템에 설치하는 소프트웨어를 추가하거나 제거합니다
Comment[lt]=Įdiegti ar šalinti sistemoje įdiegtą programinę įrangą
Comment[lv]=Pievienot vai izņemt programmatūru sistēmā
Comment[mk]=Инсталирајте или избришете софтвер на системот
Comment[ml]=സിസ്റ്റത്തില്‍ ഇന്‍സ്റ്റോള്‍ ചെയ്തിരിക്കുന്ന സോഫ്റ്റ്‌വെയര്‍ ചേര്‍ക്കുക അല്ലെങ്കില്‍ നീക്കം ചെയ്യുക
Comment[mr]=प्रणालीवर प्रतिष्ठापीत सॉफ्टवेअर समावेष करा किंवा काढूण टाका
Comment[ms]=Menambah atau memadam perisian yang dipasang pada sistem
Comment[nb]=Legg til eller fjern programvare på systemet
Comment[nl]=Software installeren op, of verwijderen van het systeem
Comment[nn]=Legg til eller fjern programvare som er installert på systemet
Comment[or]=ତନ୍ତ୍ରରେ ସ୍ଥାପିତ ସଫ୍ଟୱେରରେ ଯୋଗକରନ୍ତୁ କିମ୍ବା କାଢ଼ି ଦିଅନ୍ତୁ
Comment[pa]=ਸਿਸਟਮ ਉੱਤੇ ਸਾਫਟਵੇਅਰ ਇੰਸਟਾਲ ਕਰੋ ਜਾਂ ਇੰਸਟਾਲ ਕੀਤੇ ਹਟਾਓ
Comment[pl]=Instalowanie lub usuwanie oprogramowania zainstalowanego w systemie
Comment[pt]=Adicionar ou remover software instalado no sistema
Comment[pt_BR]=Adicione ou remova programas instalados no sistema
Comment[ro]=Adăugați sau ștergeți programe instalate pe sistem
Comment[ru]=Установка и удаление программ, установленных в системе
Comment[sk]=Pridáva alebo odstraňuje softvér nainštalovaný v počítači
Comment[sl]=Nameščanje in odstranjevanje programske opreme sistema
Comment[sr]=Додајте или уклоните програме инсталиране на овом систему
Comment[sr@latin]=Dodajte ili uklonite programe instalirane na ovom sistemu
Comment[sv]=Lägg till eller ta bort programvara installerad på systemet
Comment[ta]=கணினியில் நிறுவப்பட்ட மென்பொருளை சேர்க்கவும் அல்லது நீக்கவும்
Comment[te]=ఈ వ్యవస్థ నందు స్థాపించిన సాఫ్ట్‍వేర్‌ను జతచేయి లేదా తీసివేయి
Comment[th]=เพิ่มหรือลบซอฟต์แวร์ที่ติดตั้งในระบบ
Comment[tr]=Sisteminizde yüklü yazılımları ekleyin veya kaldırın
Comment[ug]=سىستېمىڭىزغا ئورنىتىلغان يۇمشاق دېتاللارنى قوشىدۇ ياكى ئۆچۈرىدۇ
Comment[uk]=Встановлення та вилучення програм у системі
Comment[vi]=Thêm hoặc gỡ phần mềm cài đặt trên hệ thống
Comment[zh_CN]=添加或删除系统中安装的软件
Comment[zh_HK]=加入或移除系統上安裝的軟件
Comment[zh_TW]=加入或移除系統上安裝的軟體
Icon=system-software-install
Exec=pamac-manager
Terminal=false
Type=Application
Categories=GNOME;GTK;System;Settings;X-XFCE-SettingsDialog;X-XFCE-SystemSettings;
StartupNotify=true
[Desktop Entry]
Name=Update Notifier Appindicator
Name=Update Notifier
Icon=update-notifier
Exec=pamac-tray-appindicator
Exec=sh -c "GDK_BACKEND=x11 pamac-tray"
Terminal=false
Type=Application
StartupNotify=true
OnlyShowIn=KDE;
StartupNotify=false
OnlyShowIn=Budgie;
[Desktop Entry]
Name=Software Update
Name[af]=Sagtewarebywerking
Name[ar]=تحديث البرمجيات
Name[as]=চালনাজ্ঞান উন্নয়ন ব্যৱস্থা
Name[ast]=Anovamientu de software
Name[be]=Абнаўленне апраграмавання
Name[bg]=Обновление на софтуера
Name[bn]=সফ্টওয়্যার হালনাগাদ
Name[bn_IN]=সফ্টওয়্যার আপডেট ব্যবস্থা
Name[ca]=Actualització de programari
Name[ca@valencia]=Actualització de programari
Name[cs]=Aktualizace softwaru
Name[da]=Softwareopdatering
Name[de]=Software-Aktualisierungen
Name[el]=Ενημέρωση λογισμικού
Name[en@shaw]=𐑕𐑪𐑓𐑑𐑢𐑺 𐑳𐑐𐑛𐑱𐑑
Name[en_GB]=Software Update
Name[eo]=Programar-ĝistatigo
Name[es]=Actualización de software
Name[et]=Tarkvarauuendus
Name[eu]=Softwarearen eguneraketa
Name[fa]=بروزرسانی نرم‌افزار
Name[fi]=Ohjelmistopäivitykset
Name[fr]=Mise à jour des logiciels
Name[gl]=Actualización de software
Name[gu]=સોફ્ટવેર સુધારા
Name[he]=עדכון תכנה
Name[hi]=सॉफ्टवेयर अद्यतन
Name[hu]=Szoftverfrissítés
Name[id]=Pembaruan Perangkat Lunak
Name[it]=Aggiornamento software
Name[ja]=ソフトウェアの更新
Name[kn]=ತಂತ್ರಾಂಶ ಅಪ್‌ಡೇಟ್‌
Name[ko]=소프트웨어 업데이트
Name[lt]=Programinės įrangos atnaujinimas
Name[lv]=Programmatūras atjaunināšana
Name[mk]=Ажурирање на софтвер
Name[ml]=സോഫ്റ്റ്‌വെയര്‍ പരിഷ്കാരം
Name[mr]=सॉफ्टवेअर अद्ययावत
Name[nb]=Programvareoppdatering
Name[nl]=Software bijwerken
Name[nn]=Programvareoppdatering
Name[or]=ସଫ୍ଟୱେର ଅଦ୍ୟତନ
Name[pa]=ਸਾਫਟਵੇਅਰ ਅੱਪਡੇਟ
Name[pl]=Aktualizacja oprogramowania
Name[pt]=Actualização de Software
Name[pt_BR]=Atualizações de programas
Name[ro]=Actualizări de programe
Name[ru]=Обновление программ
Name[sk]=Aktualizácia softvéru
Name[sl]=Posodobitev programske opreme
Name[sr]=Ажурирање програма
Name[sr@latin]=Ažuriranje programa
Name[sv]=Programuppdatering
Name[ta]=மென்பொருள் மேம்படுத்தல்
Name[te]=సాప్ట్‍వేర్ నవీకరణ
Name[th]=ปรับรุ่นซอฟต์แวร์
Name[tr]=Yazılım Güncelleme
Name[ug]=يۇمشاق دېتال يېڭىلاش
Name[uk]=Оновлення програм
Name[vi]=Bản cập nhật phần mềm
Name[zh_CN]=软件更新
Name[zh_HK]=軟件更新
Name[zh_TW]=軟體更新
Comment=Update software installed on the system
Comment[af]=Werk geïnstalleer sagteware op die stelsel by
Comment[ar]=حدّث الحزم المُثبّتة على النظام
Comment[as]=ব্যৱস্থাপ্ৰণালীত সংস্থাপিত চালনাজ্ঞান উন্নয়ন কৰক
Comment[ast]=Anovar el software instaláu nel sistema
Comment[be]=Абнаўленне апраграмавання, усталяванага ў сістэме
Comment[bg]=Обновяване на софтуера инсталиран върху системата
Comment[bn]=সিস্টেমে ইনস্টলকৃত সফ্টওয়্যার হালনাগাদ
Comment[bn_IN]=সিস্টেমে ইনস্টল থাকা সফ্টওয়্যার আপডেট করুন
Comment[ca]=Actualitza el programari instal·lat en el sistema
Comment[ca@valencia]=Actualitza el programari instal·lat en el sistema
Comment[cs]=Aktualizovat software instalovaný v tomto systému
Comment[da]=Opdatér software installeret på systemet
Comment[de]=Auf dem System installierte Software aktualisieren
Comment[el]=Ενημέρωση εγκατεστημένου λογισμικού
Comment[en@shaw]=𐑳𐑐𐑛𐑱𐑑 𐑕𐑪𐑓𐑑𐑢𐑺 𐑦𐑯𐑕𐑑𐑷𐑤𐑛 𐑪𐑯 𐑞 𐑕𐑦𐑕𐑑𐑩𐑥
Comment[en_GB]=Update software installed on the system
Comment[es]=Actualizar el software instalado en el sistema
Comment[et]=Süsteemi paigaldatud tarkvara uuendamine
Comment[eu]=Eguneratu sisteman instalatutako softwarea
Comment[fa]=بروزرسانی نرم‌افزار نصب شده بر روی سیستم
Comment[fi]=Päivitä järjestelmään asennettuja ohjelmistoja
Comment[fr]=Met à jour les logiciels installés sur le système
Comment[gl]=Actualizar o software instalado no sistema
Comment[gu]=સિસ્ટમ પર સ્થાપિત થયેલ સોફ્ટવેરને સુધારો
Comment[he]=עדכון תוכנות המותקנות על המערכת
Comment[hi]=सिस्टम पर संस्थापित सॉफ्टवेयर अद्यतन करें
Comment[hu]=A rendszerre telepített szoftverek frissítése
Comment[id]=Mutakhirkan perangkat lunak yang terpasang pada sistem
Comment[it]=Aggiorna il software installato sul sistema
Comment[ja]=システムにインストールされたパッケージの更新
Comment[kn]=ಗಣಕದಲ್ಲಿ ಅನುಸ್ಥಾಪಿತಗೊಂಡಿರುವ ತಂತ್ರಾಂಶವನ್ನು ಅಪ್ಡೇಟ್ ಮಾಡು
Comment[ko]=시스템에 설치한 소프트웨어를 업데이트합니다
Comment[lt]=Atnaujinti sistemoje įdiegtą programinę įrangą
Comment[lv]=Atjaunināt sistēmā instalēto programmatūru
Comment[mk]=Ажурирај го софтверот инсталирај на системот
Comment[ml]=സിസ്റ്റമില്‍ ഇന്‍സ്റ്റോള്‍ ചെയ്തിരിക്കുന്ന സോഫ്റ്റ്‌വെയറുകള്‍ പരിഷ്കരിക്കുക
Comment[mr]=प्रणालीवर प्रतिष्ठापीत सॉफ्टवेअर अद्ययावत करा
Comment[nb]=Oppdater programvare som er installert på systemet
Comment[nl]=Werk de op uw systeem geïnstalleerde software bij
Comment[nn]=Oppdater programvare installert på systemet
Comment[or]=ତନ୍ତ୍ରରେ ସ୍ଥାପନ କରାଯାଇଥିବା ସଫ୍ଟୱେରକୁ ଅଦ୍ୟତନ କରନ୍ତୁ
Comment[pa]=ਸਿਸਟਮ ਉੱਤੇ ਇੰਸਟਾਲ ਸਾਫਟਵੇਅਰ ਅੱਪਡੇਟ ਕਰੋ
Comment[pl]=Aktualizacja oprogramowania zainstalowanego w systemie
Comment[pt]=Actualizar software instalado no sistema
Comment[pt_BR]=Atualize os programas instalados no sistema
Comment[ro]=Actualizați programele instalate pe sistem
Comment[ru]=Обновление программ, установленных в системе
Comment[sk]=Aktualizuje softvér nainštalovaný v tomto počítači
Comment[sl]=Posodobitev programske opreme nameščene na sistemu
Comment[sr]=Ажурирајте програме инсталиране на овом систему
Comment[sr@latin]=Ažurirajte programe instalirane na ovom sistemu
Comment[sv]=Uppdatera programvara installerade på systemet
Comment[ta]=கணினியில் நிறுவப்பட்ட மென்பொருளை புதுப்பிக்கவும்
Comment[te]=వ్యవస్థ నందు స్థాపించిన సాఫ్ట్‍వేర్‌ను నవీకరించు
Comment[th]=ปรับรุ่นซอฟต์แวร์ที่ติดตั้งอยู่ในระบบ
Comment[tr]=Sisteminizde yüklü yazılımı güncelleyin
Comment[ug]=يېڭىلاش يۇمشاق دېتال بۇ سىستېمىغا ئورنىتىلدى
Comment[uk]=Оновлення програм, встановлених у системі
Comment[vi]=Cập nhật phần mềm đã cài đặt trên hệ thống
Comment[zh_CN]=更新本系统中安装的软件
Comment[zh_HK]=更新系統中已安裝的軟件
Comment[zh_TW]=更新系統中已安裝的軟體
Icon=system-software-update
Exec=pamac-manager --updates
Terminal=false
Type=Application
Categories=GNOME;GTK;System;Settings;X-XFCE-SettingsDialog;X-XFCE-SystemSettings;
StartupNotify=true
install_data('pamac.conf', install_dir: get_option('sysconfdir'))
### Pamac configuration file
## When removing a package, also remove those dependencies
## that are not required by other packages (recurse option):
#RemoveUnrequiredDeps
## How often to check for updates, value in hours (0 to disable):
RefreshPeriod = 6
## When there are no updates available, hide the tray icon:
#NoUpdateHideIcon
## When applying updates, enable packages downgrade:
#EnableDowngrade
## Allow Pamac to search and install packages from AUR:
#EnableAUR
## When AUR support is enabled check for updates from AUR:
#CheckAURUpdates
## When check updates from AUR support is enabled check for vcs updates:
#CheckAURVCSUpdates
## AUR build directory:
BuildDirectory = /var/tmp
## Number of versions of each package to keep in the cache:
KeepNumPackages = 3
## Remove only the versions of uninstalled packages when clean cache:
#OnlyRmUninstalled
## Download updates in background
#DownloadUpdates
## Maximum Parallel Downloads
MaxParallelDownloads = 4
dbusconf = configuration_data()
dbusconf.set('bindir', join_paths(get_option('prefix'), get_option('bindir')))
configure_file(
input: 'org.manjaro.pamac.manager.service.in',
output: 'org.manjaro.pamac.manager.service',
configuration: dbusconf,
install: true,
install_dir: join_paths(get_option('datadir'), 'dbus-1', 'services'),
input: 'org.manjaro.pamac.manager.service.in',
output: 'org.manjaro.pamac.manager.service',
configuration: conf,
install: true,
install_dir: join_paths(get_option('datadir'), 'dbus-1', 'services'),
)
configure_file(
input: 'org.manjaro.pamac.daemon.service.in',
output: 'org.manjaro.pamac.daemon.service',
configuration: dbusconf,
install: true,
install_dir: join_paths(get_option('datadir'), 'dbus-1', 'system-services'),
)
install_data('org.manjaro.pamac.daemon.conf', install_dir: join_paths(get_option('sysconfdir'), 'dbus-1', 'system.d'))
if get_option('enable-fake-gnome-software')
configure_file(
input: 'org.gnome.Software.service.in',
output: 'org.gnome.Software.service',
configuration: conf,
install: true,
install_dir: join_paths(get_option('datadir'), 'dbus-1', 'services'),
)
endif
[D-BUS Service]
Name=org.gnome.Software
Exec=@bindir@/gnome-software --gapplication-service
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE busconfig PUBLIC "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
"http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
<busconfig>
<!-- Only root can own the service -->
<policy user="root">
<allow own="org.manjaro.pamac.daemon"/>
</policy>
<!-- Allow anyone to invoke methods on the interfaces -->
<policy context="default">
<allow send_destination="org.manjaro.pamac.daemon"
send_interface="org.manjaro.pamac.daemon"/>
<allow send_destination="org.manjaro.pamac.daemon"
send_interface="org.freedesktop.DBus.Introspectable"/>
<allow send_destination="org.manjaro.pamac.daemon"
send_interface="org.freedesktop.DBus.Peer"/>
<allow send_destination="org.manjaro.pamac.daemon"
send_interface="org.freedesktop.DBus.Properties"/>
</policy>
</busconfig>
[D-BUS Service]
Name=org.manjaro.pamac.daemon
Exec=@bindir@/pamac-daemon
User=root
SystemdService=pamac-daemon.service
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE busconfig PUBLIC "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
"http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
<busconfig>
<!-- Only root can own the service -->
<policy user="root">
<allow own="org.manjaro.pamac.system"/>
</policy>
<!-- Allow anyone to invoke methods on the interfaces -->
<policy context="default">
<allow send_destination="org.manjaro.pamac.system"
send_interface="org.manjaro.pamac.system"/>
<allow send_destination="org.manjaro.pamac.system"
send_interface="org.freedesktop.DBus.Introspectable"/>
<allow send_destination="org.manjaro.pamac.system"
send_interface="org.freedesktop.DBus.Peer"/>
<allow send_destination="org.manjaro.pamac.system"
send_interface="org.freedesktop.DBus.Properties"/>
</policy>
</busconfig>
[D-BUS Service]
Name=org.manjaro.pamac.system
Exec=/usr/bin/pamac-system-daemon
User=root
SystemdService=pamac-system.service
[D-BUS Service]
Name=org.manjaro.pamac.system
Exec=@bindir@/pamac-system-daemon
User=root
SystemdService=pamac-system.service
# pamac-updates
GNOME Shell Updates indicator for Pamac
## Features
- Optional update count display on panel
- Optional notification on new updates
## Credits
This is only a rebranded and customized extension, original extension can be found here
This is a rebranded and customized extension, original extension can be found here
https://github.com/RaphaelRochet/arch-update
Any credit at the original author Raphaël Rochet
......
/*
* pamac-vala
*
* Copyright 2016 Raphaël Rochet
* Copyright (C) 2018 Guillaume Benoit <guillaume@manjaro.org>
* Copyright 2016-2023 Raphaël Rochet
* Copyright (C) 2018-2024 Guillaume Benoit <guillaume@manjaro.org>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
......@@ -18,91 +18,76 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
const Clutter = imports.gi.Clutter;
const Lang = imports.lang;
import Clutter from 'gi://Clutter';
import St from 'gi://St';
import GObject from 'gi://GObject';
import Gio from 'gi://Gio';
import GLib from 'gi://GLib';
const St = imports.gi.St;
const GObject = imports.gi.GObject;
const GLib = imports.gi.GLib;
const Gtk = imports.gi.Gtk;
const Gio = imports.gi.Gio;
import * as Main from 'resource:///org/gnome/shell/ui/main.js';
import {Button} from 'resource:///org/gnome/shell/ui/panelMenu.js';
const Main = imports.ui.main;
const Panel = imports.ui.panel;
const PanelMenu = imports.ui.panelMenu;
const PopupMenu = imports.ui.popupMenu;
const MessageTray = imports.ui.messageTray;
import * as PopupMenu from 'resource:///org/gnome/shell/ui/popupMenu.js';
import * as MessageTray from 'resource:///org/gnome/shell/ui/messageTray.js';
import * as Util from 'resource:///org/gnome/shell/misc/util.js';
import {Extension, gettext as _, ngettext as __} from 'resource:///org/gnome/shell/extensions/extension.js';
const Util = imports.misc.util;
const ExtensionUtils = imports.misc.extensionUtils;
const Me = ExtensionUtils.getCurrentExtension();
const Gettext = imports.gettext.domain("pamac");
const _ = Gettext.gettext;
const Pamac = imports.gi.Pamac;
import Pamac from 'gi://Pamac';
/* Options */
let HIDE_NO_UPDATE = false;
let SHOW_COUNT = true;
let BOOT_WAIT = 30; // 30s
let CHECK_INTERVAL = 6; // 6h
let CHECK_INTERVAL = 1; // 1h
let NOTIFY = true;
let TRANSIENT = false;
let CHECK_CMD = ["pamac", "checkupdates", "-q", "--refresh-tmp-files-dbs"];
let UPDATER_CMD = "pamac-manager --updates";
let MANAGER_CMD = "pamac-manager";
let PACMAN_LOCK = "/var/lib/pacman/db.lck";
let STRIP_VERSIONS = false;
/* Variables we want to keep when extension is disabled (eg during screen lock) */
let FIRST_BOOT = 1;
let UPDATES_PENDING = 0;
let UPDATES_LIST = [];
function init() {
export default class PamacUpdateIndicatorExtension extends Extension {
constructor(metadata) {
super(metadata);
}
init() {
String.prototype.format = Format.format;
}
enable() {
this.pamacupdateindicator = new PamacUpdateIndicator(this);
Main.panel.addToStatusArea('PamacUpdateIndicator', this.pamacupdateindicator);
}
disable() {
this.pamacupdateindicator.destroy();
this.pamacupdateindicator = null;
}
}
const PamacUpdateIndicator = new Lang.Class({
Name: 'PamacUpdateIndicator',
Extends: PanelMenu.Button,
_TimeoutId: null,
_FirstTimeoutId: null,
_updateProcess_sourceId: null,
_updateProcess_stream: null,
_updateProcess_pid: null,
_updateList: [],
_config: null,
_pacman_lock: null,
_icon_theme: null,
const PamacUpdateIndicator = GObject.registerClass(
{
_TimeoutId: null,
_FirstTimeoutId: null,
_updateProcess_sourceId: null,
_updateProcess_stream: null,
_updateProcess_pid: null,
_updateList: [],
},
class PamacUpdateIndicator extends Button {
_init: function() {
this.parent(0.0, "PamacUpdateIndicator");
// Set icon theme
let that = this;
this._icon_theme = Gtk.IconTheme.get_default();
this._icon_theme.connect('changed', function () {
that._icon_theme = Gtk.IconTheme.get_default();
});
_init(ext) {
super._init(0.5);
this.updateIcon = new St.Icon({icon_name: "pamac-tray-no-update", icon_size: 24, style_class: 'system-status-icon'});
this.updateIcon = new St.Icon({icon_name: "pamac-tray-no-update", style_class: 'system-status-icon'});
let box = new St.BoxLayout({ vertical: false, style_class: 'panel-status-menu-box' });
this.label = new St.Label({ text: '',
y_expand: true,
y_align: Clutter.ActorAlign.CENTER });
box.add_child(this.updateIcon);
box.add_child(this.label);
this.actor.add_child(box);
this.add_child(box);
// Prepare the special menu : a submenu for updates list that will look like a regular menu item when disabled
// Scrollability will also be taken care of by the popupmenu
this.menuExpander = new PopupMenu.PopupSubMenuMenuItem('');
this.updatesListMenuLabel = new St.Label();
this.menuExpander.menu.box.add(this.updatesListMenuLabel);
this.menuExpander.menu.box.style_class = 'pamac-updates-list';
// Other standard menu items
......@@ -114,71 +99,56 @@ const PamacUpdateIndicator = new Lang.Class({
this.menu.addMenuItem(this.managerMenuItem);
// Bind some events
this.menu.connect('open-state-changed', Lang.bind(this, this._onMenuOpened));
this.managerMenuItem.connect('activate', Lang.bind(this, this._openManager));
this.menu.connect('open-state-changed', this._onMenuOpened.bind(this));
this.managerMenuItem.connect('activate', this._openManager.bind(this));
// Load config
this._config = new Pamac.Config({conf_path: "/etc/pamac.conf"});
this._applyConfig();
this._updateMenuExpander(false, _("Your system is up-to-date"));
// Restore previous updates list if any
this._updateList = UPDATES_LIST;
this._updateStatus(false);
if (FIRST_BOOT && CHECK_INTERVAL > 0) {
// Schedule first check only if this is the first extension load
// This won't be run again if extension is disabled/enabled (like when screen is locked)
this._updatesChecker = new Pamac.UpdatesChecker();
this._updatesChecker.connect('updates-available', this._onUpdatesAvailable.bind(this));
this._applyConfig();
this._updateMenuExpander(false, _("Your system is up to date"));
let that = this;
this._FirstTimeoutId = GLib.timeout_add_seconds(GLib.PRIORITY_DEFAULT, BOOT_WAIT, function () {
that._checkUpdates();
that._FirstTimeoutId = null;
FIRST_BOOT = 0;
that._startLockMonitor();
return false; // Run once
});
} else {
// Restore previous state
this._updateList = UPDATES_LIST;
this._updateStatus(UPDATES_PENDING);
this._startLockMonitor();
}
},
}
_openManager: function () {
_openManager() {
if (UPDATES_PENDING > 0) {
Util.spawnCommandLine(UPDATER_CMD);
} else {
Util.spawnCommandLine(MANAGER_CMD);
}
},
}
_applyConfig: function() {
HIDE_NO_UPDATE = this._config.no_update_hide_icon;
CHECK_INTERVAL = this._config.refresh_period;
_applyConfig() {
HIDE_NO_UPDATE = this._updatesChecker.no_update_hide_icon;
this._checkShowHide();
let that = this;
if (this._TimeoutId) GLib.source_remove(this._TimeoutId);
if (CHECK_INTERVAL > 0) {
if (this._updatesChecker.refresh_period > 0) {
// check every hour if refresh_timestamp is older than config.refresh_period
this._TimeoutId = GLib.timeout_add_seconds(GLib.PRIORITY_DEFAULT, 3600 * CHECK_INTERVAL, function () {
that._checkUpdates();
return true;
});
}
},
}
destroy: function() {
destroy() {
if (this._notifSource) {
// Delete the notification source, which lay still have a notification shown
this._notifSource.destroy();
this._notifSource = null;
};
if (this.monitor) {
// Stop spying on pacman local dir
this.monitor.cancel();
this.monitor = null;
}
if (this._updateProcess_sourceId) {
// We leave the checkupdate process end by itself but undef handles to avoid zombies
GLib.source_remove(this._updateProcess_sourceId);
this._updateProcess_sourceId = null;
this._updateProcess_stream = null;
}
if (this._FirstTimeoutId) {
GLib.source_remove(this._FirstTimeoutId);
......@@ -188,187 +158,107 @@ const PamacUpdateIndicator = new Lang.Class({
GLib.source_remove(this._TimeoutId);
this._TimeoutId = null;
}
this.parent();
},
super.destroy();
}
_checkShowHide: function() {
_checkShowHide() {
if (HIDE_NO_UPDATE && UPDATES_PENDING < 1) {
this.actor.visible = false;
this.visible = false;
} else {
this.actor.visible = true;
this.visible = true;
}
this.label.visible = SHOW_COUNT && UPDATES_PENDING > 0;
},
}
_onMenuOpened: function() {
_onMenuOpened() {
// This event is fired when menu is shown or hidden
// Close the submenu
this.menuExpander.setSubmenuShown(false);
},
_startLockMonitor: function() {
this._pacman_lock = Gio.file_new_for_path(PACMAN_LOCK);
this.monitor = this._pacman_lock.monitor(0, null);
this.monitor.connect('changed', Lang.bind(this, this._onLockChanged));
},
}
_onLockChanged: function(object, file, other_file, event_type) {
if (event_type == Gio.FileMonitorEvent.DELETED) {
let that = this;
if (this._FirstTimeoutId) GLib.source_remove(this._FirstTimeoutId);
this._FirstTimeoutId = GLib.timeout_add(GLib.PRIORITY_DEFAULT, 500, function () {
if (!that._pacman_lock.query_exists(null)) {
that._checkUpdates();
that._FirstTimeoutId = null;
return false;
}
});
}
},
_updateStatus: function(updatesCount) {
updatesCount = typeof updatesCount === 'number' ? updatesCount : UPDATES_PENDING;
if (updatesCount > 0) {
_updateStatus(notify) {
if (UPDATES_PENDING > 0) {
// Updates pending
this.updateIcon.set_icon_name("pamac-tray-update");
this._updateMenuExpander(true, Gettext.ngettext( "%u available update", "%u available updates", updatesCount ).replace("%u", updatesCount.toString()));
this.updatesListMenuLabel.set_text( this._updateList.join("\n") );
this.label.set_text(updatesCount.toString());
if (NOTIFY && UPDATES_PENDING < updatesCount) {
this._updateMenuExpander(true, __( "%u available update", "%u available updates", UPDATES_PENDING ).replace("%u", UPDATES_PENDING.toString()));
if (notify) {
this._showNotification(
Gettext.ngettext( "%u available update", "%u available updates", updatesCount ).replace("%u", updatesCount.toString())
_("Updates Available")
);
}
// Store the new list
UPDATES_LIST = this._updateList;
} else {
this.updatesListMenuLabel.set_text("");
this.label.set_text("");
// Up to date
this.updateIcon.set_icon_name("pamac-tray-no-update");
this._updateMenuExpander(false, _("Your system is up-to-date"));
UPDATES_LIST = []; // Reset stored list
this._updateMenuExpander(false, _("Your system is up to date"));
}
UPDATES_PENDING = updatesCount;
this._checkShowHide();
},
}
_updateMenuExpander: function(enabled, label) {
_updateMenuExpander(enabled, label) {
this.menuExpander.menu.box.destroy_all_children();
if (label == "") {
// No text, hide the menuitem
this.menuExpander.actor.visible = false;
this.menuExpander.visible = false;
} else {
// We make our expander look like a regular menu label if disabled
this.menuExpander.actor.reactive = enabled;
this.menuExpander.reactive = enabled;
this.menuExpander._triangle.visible = enabled;
this.menuExpander.label.set_text(label);
this.menuExpander.actor.visible = true;
}
},
_checkUpdates: function() {
if(this._updateProcess_sourceId) {
// A check is already running ! Maybe we should kill it and run another one ?
return;
}
// Run asynchronously, to avoid shell freeze - even for a 1s check
try {
if (this._config.download_updates) {
CHECK_CMD.push ("--download-updates");
this.menuExpander.visible = true;
if (enabled && this._updateList.length > 0) {
this._updateList.forEach( item => {
this.menuExpander.menu.box.add_child( this._createPackageLabel(item) );
} );
}
let [res, pid, in_fd, out_fd, err_fd] = GLib.spawn_async_with_pipes(null, CHECK_CMD, null, GLib.SpawnFlags.DO_NOT_REAP_CHILD | GLib.SpawnFlags.SEARCH_PATH, null);
// Let's buffer the command's output - that's a input for us !
this._updateProcess_stream = new Gio.DataInputStream({
base_stream: new Gio.UnixInputStream({fd: out_fd})
});
// We will process the output at once when it's done
this._updateProcess_sourceId = GLib.child_watch_add(0, pid, Lang.bind(this, function() {this._checkUpdatesRead()}));
this._updateProcess_pid = pid;
} catch (err) {
this._updateMenuExpander(false, _("Your system is up-to-date"));
this._updateStatus(0);
}
},
}
_cancelCheck: function() {
if (this._updateProcess_pid == null) { return; };
Util.spawnCommandLine( "kill " + this._updateProcess_pid );
this._updateProcess_pid = null; // Prevent double kill
this._checkUpdatesEnd();
},
_checkUpdatesRead: function() {
// Read the buffered output
let updateList = [];
let out, size;
do {
[out, size] = this._updateProcess_stream.read_line_utf8(null);
if (out) updateList.push(out);
} while (out);
// If version numbers should be stripped, do it
if (STRIP_VERSIONS == true) {
updateList = updateList.map(function(p) {
// Try to keep only what's before the first space
var chunks = p.split(" ",2);
return chunks[0];
});
}
this._updateList = updateList;
this._checkUpdatesEnd();
},
_checkUpdatesEnd: function() {
// Free resources
this._updateProcess_stream.close(null);
this._updateProcess_stream = null;
GLib.source_remove(this._updateProcess_sourceId);
this._updateProcess_sourceId = null;
this._updateProcess_pid = null;
// Update indicator
this._updateStatus(this._updateList.length);
if (UPDATES_PENDING > 0) {
// Refresh files dbs in tmp
let database = new Pamac.Database({config: this._config});
database.start_refresh_tmp_files_dbs ();
_createPackageLabel(name) {
return new St.Label({
text: name,
x_expand: true,
style_class: 'pamac-updates-update-name'
});
}
_checkUpdates() {
this._updatesChecker.check_updates();
}
_onUpdatesAvailable(obj, updatesCount) {
this._updateList = this._updatesChecker.updates_list;
// Store the new list
UPDATES_LIST = this._updateList;
UPDATES_PENDING = this._updateList.length;
this._updateStatus(NOTIFY);
}
_showNotification(message) {
// Destroy previous notification if still there
if (this._notification) {
this._notification.destroy(MessageTray.NotificationDestroyedReason.REPLACED);
}
},
_showNotification: function(message) {
// Prepare a notification Source with our name and icon
// It looks like notification Sources are destroyed when empty so we check every time
if (this._notifSource == null) {
// We have to prepare this only once
this._notifSource = new MessageTray.SystemNotificationSource();
this._notifSource.createIcon = function() {
return new St.Icon({ icon_name: "system-software-install-symbolic" });
};
// Take care of note leaving unneeded sources
this._notifSource.connect('destroy', Lang.bind(this, function() {this._notifSource = null;}));
this._notifSource = new MessageTray.Source({
title: _("Package Manager"),
icon: Gio.icon_new_for_string("system-software-install-symbolic"),
});
// Take care of not leaving unneeded sources
this._notifSource.connect('destroy', ()=>{this._notifSource = null;});
Main.messageTray.add(this._notifSource);
}
let notification = null;
// We do not want to have multiple notifications stacked
// instead we will update previous
if (this._notifSource.notifications.length == 0) {
notification = new MessageTray.Notification(this._notifSource, _("Package Manager"), message);
notification.addAction( _("Details") , Lang.bind(this, function() {this._openManager()}) );
} else {
notification = this._notifSource.notifications[0];
notification.update(_("Package Manager"), message, { clear: true });
}
notification.setTransient(TRANSIENT);
this._notifSource.notify(notification);
},
// Creates a new notification
this._notification = new MessageTray.Notification({
source: this._notifSource,
//title: _("Package Manager"),
body: message
});
this._notification.gicon = Gio.icon_new_for_string("pamac-tray-update");
this._notification.addAction( _("Details") , ()=>{this._openManager();} );
this._notification.connect('destroy', ()=>{this._notification = null;});
this._notifSource.addNotification(this._notification);
}
});
let pamacupdateindicator;
function enable() {
pamacupdateindicator = new PamacUpdateIndicator();
Main.panel.addToStatusArea('PamacUpdateIndicator', pamacupdateindicator);
}
function disable() {
pamacupdateindicator.destroy();
}
{
"description": "GNOME Shell Updates indicator for Pamac.",
"name": "Pamac Updates Indicator",
"shell-version": [
"3.28",
"3.30"
],
"shell-version": ["45", "46"],
"url": "https://gitlab.manjaro.org/applications/pamac",
"uuid": "pamac-updates@manjaro.org",
"version": 1
"gettext-domain": "pamac",
"version": 11
}