mirror of
https://github.com/harish2704/dotFiles.git
synced 2026-09-10 15:21:09 +00:00
Compare commits
30
Commits
b1bd687f83
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d9c69f9402 | ||
|
|
17180fd76a | ||
|
|
f039924a13 | ||
|
|
d5ac4f54a1 | ||
|
|
a82f0372be | ||
|
|
fab64cc52e | ||
|
|
c784a78f19 | ||
|
|
c23fcf3dda | ||
|
|
c4e2a6d8ff | ||
|
|
4f21a56a1f | ||
|
|
30868d74f9 | ||
|
|
0c85b15303 | ||
|
|
236e611f02 | ||
|
|
23d982d2ff | ||
|
|
060912b1e5 | ||
|
|
00bc959a9b | ||
|
|
42fa5a0426 | ||
|
|
3fae61dfb7 | ||
|
|
2a0690319a | ||
|
|
491d6a090e | ||
|
|
56598f5170 | ||
|
|
bb193b5d92 | ||
|
|
d393de9c85 | ||
|
|
62eb9ce9e9 | ||
|
|
e7c43758ce | ||
|
|
7d30e2268b | ||
|
|
a86b7a52b3 | ||
|
|
51e8684012 | ||
|
|
ca39e5bc8e | ||
|
|
ad40802680 |
@@ -1,4 +1,5 @@
|
||||
home/.local/Apps/neovim-distros/lunarvim/cache
|
||||
home/.local/Apps/neovim-distros/lunarvim/share
|
||||
home/.local/Apps/neovim-distros/lunarvim/LunarVim
|
||||
home/.local/Apps/neovim-distros/LazyVim
|
||||
node_modules
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
[submodule "home/.local/Apps/neovim-distros/lunarvim/LunarVim"]
|
||||
path = home/.local/Apps/neovim-distros/lunarvim/LunarVim
|
||||
url = https://github.com/jukrb0x/LunarVim
|
||||
+17
-6
@@ -26,7 +26,7 @@ C_YELLOW1="\[\e[38;5;226m\]"
|
||||
C_AQUAMARINE1="\[\e[38;5;86m\]"
|
||||
PS1="${F_BOLD}${C_AQUAMARINE1}\u@\h${C_YELLOW1} \w \\\$${NO_FORMAT} "
|
||||
|
||||
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion
|
||||
# [ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion
|
||||
|
||||
export DOCKER_HOST=unix:///run/user/$UID/podman/podman.sock
|
||||
|
||||
@@ -37,13 +37,13 @@ export HISTFILESIZE=11000
|
||||
|
||||
alias ip='ip --color=auto'
|
||||
|
||||
export NVM_DIR="$HOME/.nvm"
|
||||
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
|
||||
# export NVM_DIR="$HOME/.nvm"
|
||||
# [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
|
||||
|
||||
|
||||
export PYENV_ROOT="$HOME/.pyenv"
|
||||
[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"
|
||||
eval "$(pyenv init -)"
|
||||
#export PYENV_ROOT="$HOME/.pyenv"
|
||||
#[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"
|
||||
#eval "$(pyenv init -)"
|
||||
|
||||
|
||||
# bun
|
||||
@@ -52,3 +52,14 @@ export PATH="$BUN_INSTALL/bin:$PATH"
|
||||
. "$HOME/.deno/env"
|
||||
source $HOME/.local/share/bash-completion/completions/deno.bash
|
||||
eval "$(~/.local/bin/mise activate bash)"
|
||||
|
||||
# PATH="$HOME/perl5/bin${PATH:+:${PATH}}"; export PATH;
|
||||
# PERL5LIB="$HOME/perl5/lib/perl5${PERL5LIB:+:${PERL5LIB}}"; export PERL5LIB;
|
||||
# PERL_LOCAL_LIB_ROOT="$HOME/perl5${PERL_LOCAL_LIB_ROOT:+:${PERL_LOCAL_LIB_ROOT}}"; export PERL_LOCAL_LIB_ROOT;
|
||||
# PERL_MB_OPT="--install_base \"$HOME/perl5\""; export PERL_MB_OPT;
|
||||
# PERL_MM_OPT="INSTALL_BASE=$HOME/perl5"; export PERL_MM_OPT;
|
||||
|
||||
mycp(){
|
||||
mkdir -p "$(dirname "$2" )";
|
||||
cp "$1" "$2";
|
||||
}
|
||||
|
||||
@@ -1,15 +0,0 @@
|
||||
[Desktop Entry]
|
||||
Encoding=UTF-8
|
||||
Type=Application
|
||||
Name=Gwibber
|
||||
X-GNOME-FullName=Gwibber Social Networking
|
||||
GenericName=Social Networking
|
||||
Comment=Update your microblog and view others' statuses
|
||||
Icon=gwibber
|
||||
Exec=gwibber-service
|
||||
OnlyShowIn=GNOME;Unity;
|
||||
AutostartCondition=GSettings org.gwibber.preferences autostart
|
||||
X-GNOME-Autostart-Delay=30
|
||||
NoDisplay=false
|
||||
X-GNOME-Autostart-enabled=false
|
||||
Hidden=true
|
||||
@@ -1,63 +0,0 @@
|
||||
[Desktop Entry]
|
||||
Name[pt]=Kupfer
|
||||
Name[sl]=Kupfer
|
||||
Name[cs]=Kupfer
|
||||
GenericName[cs]=Spouštěč aplikací
|
||||
Name[zh_CN]=Kupfer
|
||||
Name[es]=Kupfer
|
||||
GenericName[nb]=Programstarter
|
||||
GenericName[ko]=응용 프로그램 실행 아이콘
|
||||
GenericName[it]=Lanciatore di applicazioni
|
||||
Name[eu]=Kupfer
|
||||
Comment[nl]=Handige opdracht- en toegangshulp voor programma's en documenten
|
||||
Comment[da]=Nemt kommando- og adgangsværktøj til programmer og dokumenter
|
||||
Comment[pt]=Ferramenta conveniente para acesso e gestão de aplicações e documentos
|
||||
GenericName[fr]=Lanceur d'applications
|
||||
Comment[de]=Praktisches Befehls- und Zugriffswerkzeug für Anwendungen und Dokumente
|
||||
Type=Application
|
||||
X-GNOME-Autostart-enabled=true
|
||||
Name=Kupfer
|
||||
GenericName[da]=Programopstarter
|
||||
Name[nb]=Kupfer
|
||||
Exec=kupfer --no-splash
|
||||
GenericName[sl]=Zaganjalnik programov
|
||||
Name[ko]=쿠퍼
|
||||
Comment[es]=Herramienta para acceso y manejo de aplicaciones y documentos
|
||||
GenericName[de]=Anwendungsstarter
|
||||
GenericName[pl]=Aktywator programów
|
||||
Name[gl]=Kupfer
|
||||
Comment[sv]=Praktiskt kommandoprogram för åtkomst av program och dokument
|
||||
Comment[nb]=Praktiskt kommandoverktøy for programmer og dokumenter
|
||||
Comment[eu]=Komando eta atzipen tresna egokia aplikazio eta dokumentuentzat
|
||||
Icon=kupfer
|
||||
Name[sv]=Kupfer
|
||||
Comment[it]=Comodo comando e strumento di accesso per applicazioni e documenti
|
||||
GenericName[eu]=Aplikazioen abiarazlea
|
||||
GenericName[zh_CN]=程序启动器
|
||||
GenericName[es]=Lanzador de aplicaciones
|
||||
Name[tr]=Kupfer
|
||||
GenericName[tr]=Uygulama Çalıştırıcı
|
||||
GenericName=Application Launcher
|
||||
Comment[cs]=Nástroj pro pohodlné provádění příkazů a přístup k aplikacím a dokumentům
|
||||
Name[nl]=Kupfer
|
||||
Name[it]=Kupfer
|
||||
X-UserData=$CONFIG/kupfer;$DATA/kupfer;$CACHE/kupfer
|
||||
Comment[gl]=Ferramenta cómoda para controlar e acceder a aplicativos e documentos
|
||||
Name[pl]=Kupfer
|
||||
GenericName[sv]=Programstartare
|
||||
GenericName[gl]=Iniciador de aplicativos
|
||||
StartupNotify=true
|
||||
Comment=Convenient command and access tool for applications and documents
|
||||
Comment[pl]=Wygodne narzędzie do uruchamiania aplikacji i otwierania dokumentów
|
||||
Comment[sl]=Prikladno orodje za izvajanje ukazov in dostopa do programov in dokumentov
|
||||
Comment[zh_CN]=方便的命令和操作程序或文档的工具
|
||||
GenericName[nl]=Programmastarter
|
||||
Comment[ko]=편리하게 응용프로그램이나 문서에 접근하고 명령을 내릴 수 있는 도구
|
||||
Version=1.0
|
||||
Comment[fr]=Outil pratique de lancement et de contrôle d'applications et de documents
|
||||
Categories=Utility;
|
||||
Name[de]=Kupfer
|
||||
GenericName[pt]=Lançador de Aplicações
|
||||
Name[da]=Kupfer
|
||||
Name[fr]=Kupfer
|
||||
|
||||
@@ -1,11 +0,0 @@
|
||||
[Desktop Entry]
|
||||
Name=Ubuntu One
|
||||
Exec=/bin/sh -c '[ -d "$HOME/Ubuntu One" ] && ubuntuone-launch'
|
||||
Type=Application
|
||||
X-GNOME-Autostart-Delay=30
|
||||
Icon=ubuntuone
|
||||
Comment=
|
||||
NoDisplay=false
|
||||
X-Ubuntu-Gettext-Domain=ubuntuone-client
|
||||
X-GNOME-Autostart-enabled=false
|
||||
Hidden=true
|
||||
@@ -1,165 +0,0 @@
|
||||
[Desktop Entry]
|
||||
Encoding=UTF-8
|
||||
Name=Update Notifier
|
||||
Name[af]=Opdateringskennisgewing
|
||||
Name[am]=የማሻሻያ አሳሳቢ
|
||||
Name[an]=Notificador d'esvielles
|
||||
Name[ar]=مشعر التحديثات
|
||||
Name[ast]=Notificador d'anovamientos
|
||||
Name[be]=Паведамляльнік абнаўленьняў
|
||||
Name[bg]=Известяване за обновления
|
||||
Name[bn]=হালনাগাদ পর্যবেক্ষক
|
||||
Name[br]=Meziant da gemenn an hizivadurioù
|
||||
Name[bs]=Ukazivanje na nova unaprjeđenja
|
||||
Name[ca]=Gestor d'actualitzacions
|
||||
Name[ca@valencia]=Gestor d'actualitzacions
|
||||
Name[cs]=Oznamování aktualizací
|
||||
Name[csb]=Wiédzba ò aktualizacëjach
|
||||
Name[da]=Opdateringspåmindelse
|
||||
Name[de]=Aktualisierungsbenachrichtigung
|
||||
Name[el]=Ειδοποίηση ενημερώσεων
|
||||
Name[en_AU]=Update Notifier
|
||||
Name[en_CA]=Update Notifier
|
||||
Name[en_GB]=Update Notifier
|
||||
Name[eo]=Atentigilo pri ĝisdatigoj
|
||||
Name[es]=Notificador de actualizaciones
|
||||
Name[et]=Uuendustest teataja
|
||||
Name[eu]=Eguneratze berriemailea
|
||||
Name[fi]=Päivitysilmoitin
|
||||
Name[fo]=Frásøguforrit til dagføringar
|
||||
Name[fr]=Notificateur de mises à jour
|
||||
Name[fy]=Bywurkingmelder
|
||||
Name[gd]=Cuir fios air ùrachadh
|
||||
Name[gl]=Notificador de actualizacións
|
||||
Name[he]=מתריע העדכונים
|
||||
Name[hi]=अद्यतन अधिसूचक
|
||||
Name[hr]=Update Notifier
|
||||
Name[hu]=Frissítésfigyelő
|
||||
Name[id]=Pemberitahu Update
|
||||
Name[is]=Tilkynningar um uppfærslur
|
||||
Name[it]=Notifica aggiornamenti
|
||||
Name[ja]=アップデート通知
|
||||
Name[ka]=განახლებების მაცნე
|
||||
Name[kk]=Жаңартулар мәлімдемелері
|
||||
Name[km]=កម្មវិធីជូនដំណឹងបច្ចុប្បន្នភាព
|
||||
Name[ko]=업데이트 알리미
|
||||
Name[ku]=Hişyarkera Rojanekirinê
|
||||
Name[lt]=Atnaujinimų pranešiklis
|
||||
Name[lv]=Atjaunināšanu atgādinātājs
|
||||
Name[mn]=Шинэчлэл мэдээлэгч
|
||||
Name[mr]=नुतनीकरण दर्शक.
|
||||
Name[ms]=Pemaklum Kemaskini
|
||||
Name[my]=Update Notifier
|
||||
Name[nb]=Oppdateringsvarsler
|
||||
Name[nds]=Opfrischenhenwies
|
||||
Name[nl]=Updatemelder
|
||||
Name[nn]=Oppdateringsvarslar
|
||||
Name[oc]=Notificador de mesas a jorn
|
||||
Name[pa]=ਅੱਪਡੇਟ ਸੂਚਨਾ
|
||||
Name[pl]=Powiadamianie o aktualizacjach
|
||||
Name[pt]=Notificador de Actualizações
|
||||
Name[pt_BR]=Notificador de atualizações
|
||||
Name[ro]=Notificare actualizări
|
||||
Name[ru]=Оповещение об обновлениях
|
||||
Name[si]=යාවත්කාලින නිවේදකය
|
||||
Name[sk]=Upozornenie na aktualizácie
|
||||
Name[sl]=Obvestilnik o posodobitvah
|
||||
Name[sq]=Njoftuesi i Rifreskimeve
|
||||
Name[sr]=Обавештавач освежења
|
||||
Name[sv]=Uppdateringsnotifierare
|
||||
Name[ta]=புதுப்பிப்பு அறிவிப்பாளர்
|
||||
Name[te]=నవీకరణ-సూచిక
|
||||
Name[th]=โปรแกรมแจ้งเตือนการปรับปรุง
|
||||
Name[tr]=Güncelleştirme Bildiricisi
|
||||
Name[ug]=يېڭىلاش خەۋەرچىسى
|
||||
Name[uk]=Сповіщення про оновлення
|
||||
Name[vi]=Trình Nhắc nhở cập nhật
|
||||
Name[zh_CN]=更新提示
|
||||
Name[zh_HK]=更新通知程式
|
||||
Name[zh_TW]=更新通告
|
||||
Comment=Check for available updates automatically
|
||||
Comment[af]=Kontroleer automaties vir nuwe opdaterings
|
||||
Comment[an]=Comprebar automaticament os esvielles disponibles
|
||||
Comment[ar]=التمس التحديثات تلقائيا
|
||||
Comment[ast]=Comprobar automáticamente los anovamientos disponibles
|
||||
Comment[be]=Правяраць на даступнасьць абнаўленьняў аўтаматычна
|
||||
Comment[bg]=Автоматична проверка за налични актуализации
|
||||
Comment[bn]=স্বয়ংক্রিয়ভাবে নতুন হালনাগাদের জন্য খোঁজ করা হবে
|
||||
Comment[br]=Gwiriañ hizivadurioù hegerz emgefre
|
||||
Comment[bs]=Automatski provjeriti da li ima dostupnih unaprjeđenja
|
||||
Comment[ca]=Comprova si hi ha actualizacions disponibles automàticament.
|
||||
Comment[ca@valencia]=Comprova si hi ha actualizacions disponibles automàticament.
|
||||
Comment[cs]=Automaticky kontrolovat dostupné aktualizace
|
||||
Comment[csb]=Aùtomatné sprôwdzanié przëstãpnotë aktualizacëjów
|
||||
Comment[da]=Kontrollér automatisk for tilgængelige opdateringer
|
||||
Comment[de]=Automatisch nach verfügbaren Aktualisierungen suchen
|
||||
Comment[el]=Αυτόματος έλεγχος για ενημερώσεις
|
||||
Comment[en_AU]=Check for available updates automatically
|
||||
Comment[en_CA]=Check for available updates automatically
|
||||
Comment[en_GB]=Check for available updates automatically
|
||||
Comment[eo]=Aŭtomate kontroli pri disponeblaj ĝisdatigoj
|
||||
Comment[es]=Comprobar automáticamente las actualizaciones disponibles
|
||||
Comment[et]=Olemasolevate uuenduste automaatne kontroll
|
||||
Comment[eu]=Automatikoki bilatu eguneraketa berriak
|
||||
Comment[fi]=Tarkista saatavilla olevat päivitykset automaattisesti
|
||||
Comment[fo]=Kanna sjálvvirkandi eftir tøkum dagførslum
|
||||
Comment[fr]=Vérifier automatiquement la disponibilité de mises à jour
|
||||
Comment[gd]=Sgrùd son ùrachadh fèin-obrachail ri làimh
|
||||
Comment[gl]=Comprobar automaticamente as actualizacións dispoñíbeis
|
||||
Comment[he]=בדיקה אוטומטית אחר עדכונים
|
||||
Comment[hi]=स्वतः अद्यतन उपलब्धता हेतु जाँच
|
||||
Comment[hr]=Automatski provjeri za dostupne nadogradnje
|
||||
Comment[hu]=Frissítések keresése automatikusan
|
||||
Comment[id]=Periksa keberadaan pembaruan secara otomatis
|
||||
Comment[is]=Leita að uppfærslum sjálfkrafa
|
||||
Comment[it]=Controlla automaticamente la disponibilità di aggiornamenti
|
||||
Comment[ja]=利用可能なアップデートを自動的にチェックする
|
||||
Comment[ka]=განახლებებზე ავტომატური შემოწმება
|
||||
Comment[kk]=Жаңартулардың жетімдігін автоматты түрде тексеру
|
||||
Comment[km]=ពិនិត្យមើលបច្ចុប្បន្នភាពដែលមានដោយស្វ័យប្រវត្តិ
|
||||
Comment[ko]=자동으로 사용할 수 있는 업데이트 확인
|
||||
Comment[ku]=Bixweber li rojanekirinên amade bigere
|
||||
Comment[lt]=Ieškoti prieinamų atnaujinimų automatiškai
|
||||
Comment[lv]=Automātiski pārbaudīt pieejamos jauninājumus
|
||||
Comment[mn]=Идэвхитэй шинэчлэлийг автоматаар шалгах
|
||||
Comment[mr]=उपलब्ध अपडेट्स आपोआप शोधा.
|
||||
Comment[ms]=Periksa kemaskini yang sedia ada secara automatik.
|
||||
Comment[my]=ရရှိနိုင်သော Updates များကိုအလိုအလျောက်စစ်ဆေးမည်။
|
||||
Comment[nb]=Se etter tilgjengelige oppdateringer automatisk
|
||||
Comment[nds]=Nah verfögbaren Opfrischen vun alleen söken
|
||||
Comment[nl]=Automatisch op updates controleren
|
||||
Comment[nn]=Sjå etter tilgjengelege oppdateringar automatisk
|
||||
Comment[oc]=Verificar automaticament la disponibilitat de mesas a jorn
|
||||
Comment[pa]=ਉਪਲੱਬਧ ਅੱਪਡੇਟ ਲਈ ਆਟੋਮੈਟਿਕ ਹੀ ਚੈੱਕ ਕਰੋ
|
||||
Comment[pl]=Automatyczne sprawdzanie dostępności aktualizacji
|
||||
Comment[pt]=Verificar actualizações disponíveis automaticamente
|
||||
Comment[pt_BR]=Verificar automaticamente se há atualizações disponíveis
|
||||
Comment[ro]=Verifică automat actualizările disponibile
|
||||
Comment[ru]=Автоматически проверять наличие обновлений
|
||||
Comment[sd]=دستياب تازگيون پاڻمرادو چڪاسجن
|
||||
Comment[si]=ලබා ගත හැකි යාවත්කාලින සඳහා ස්වයංක්රීයව පරික්ෂා කරන්න
|
||||
Comment[sk]=Automaticky kontrolovať dostupné aktualizácie
|
||||
Comment[sl]=Samodejno preveri za posodobitve
|
||||
Comment[sq]=Kontrollo automatikisht për përditësimet e disponueshme
|
||||
Comment[sr]=Аутоматски провери да ли има доступних освежења
|
||||
Comment[sv]=Leta automatiskt efter tillgängliga uppdateringar
|
||||
Comment[te]=అందుబాటులోనున్న నవీకరణలను స్వయంచాలకంగా ప్రయత్నించు
|
||||
Comment[th]=ตรวจสอบการปรับปรุงที่ได้รับการอนุญาตโดยอัตโนมัติ
|
||||
Comment[tr]=Güncelleştirmeleri otomatik olarak denetle
|
||||
Comment[ug]=يېڭىلانمىلارنىڭ بار يوقلۇقىنى ئاپتوماتىك تەكشۈرسۇن
|
||||
Comment[uk]=Автоматично перевіряти наявність оновлень
|
||||
Comment[vi]=Tự động kiểm tra về các bản cập nhật đang có
|
||||
Comment[zh_CN]=自动检测可用的更新
|
||||
Comment[zh_HK]=自動檢查可用的更新
|
||||
Comment[zh_TW]=自動檢查更新
|
||||
Icon=update-notifier
|
||||
Exec=update-notifier
|
||||
Terminal=false
|
||||
Type=Application
|
||||
Categories=
|
||||
NotShowIn=KDE;
|
||||
NoDisplay=false
|
||||
X-GNOME-Autostart-Delay=60
|
||||
X-Ubuntu-Gettext-Domain=update-notifier
|
||||
X-GNOME-Autostart-enabled=false
|
||||
Hidden=true
|
||||
@@ -1,15 +0,0 @@
|
||||
[Desktop Entry]
|
||||
Name=Desktop Sharing
|
||||
Comment=GNOME Desktop Sharing Server
|
||||
Exec=/usr/lib/vino/vino-server --sm-disable
|
||||
Icon=preferences-desktop-remote-desktop
|
||||
OnlyShowIn=GNOME;Unity;
|
||||
Terminal=false
|
||||
Type=Application
|
||||
AutostartCondition=GSettings org.gnome.Vino enabled
|
||||
X-GNOME-Autostart-Phase=Applications
|
||||
X-GNOME-AutoRestart=true
|
||||
NoDisplay=false
|
||||
X-Ubuntu-Gettext-Domain=vino
|
||||
X-GNOME-Autostart-enabled=false
|
||||
Hidden=true
|
||||
@@ -1,2 +1,8 @@
|
||||
[containers]
|
||||
label=false
|
||||
|
||||
[network]
|
||||
# default_rootless_network_cmd = "pasta"
|
||||
# pasta_options = ["-t", "4080-4080:80-80"]
|
||||
# pasta_options = ["-a", "10.0.2.0", "-n", "24", "-g", "10.0.2.2", "--dns-forward", "10.0.2.3"]
|
||||
# pasta_options = [ "-I", "tap0", "--ipv4-only", "-a", "10.0.2.0", "-n", "24", "-g", "10.0.2.2", "--dns-forward", "10.0.2.3", "--no-ndp", "--no-dhcpv6", "--no-dhcp" ]
|
||||
|
||||
@@ -224,3 +224,42 @@ vmap <C-h> "fy:%s#<C-r>f#
|
||||
" Copy current word to 'f' register, search for that word
|
||||
vmap <C-f> "fy/<C-r>f
|
||||
colorscheme elflord
|
||||
|
||||
|
||||
|
||||
" Automatically open file:line: arguments
|
||||
augroup OpenFileWithLineNumber
|
||||
autocmd!
|
||||
" Trigger when a buffer is added or created
|
||||
autocmd BufAdd,BufNewFile * call s:ParseFileAndLine(bufname('%'))
|
||||
augroup END
|
||||
|
||||
function! s:ParseFileAndLine(bufferName)
|
||||
" Use regex to match the 'filename:linenumber:' format
|
||||
" \v = very magic regex
|
||||
" ^(.+): = Capture group 1: (anything) followed by :
|
||||
" (\d+):$ = Capture group 2: (digits) followed by : at the end
|
||||
let s:matches = matchlist(a:bufferName, '\v^(.+):(\d+):?$')
|
||||
|
||||
" If the pattern didn't match, do nothing
|
||||
if empty(s:matches)
|
||||
return
|
||||
endif
|
||||
|
||||
" Extract the real file name and line number
|
||||
let s:real_file = s:matches[1]
|
||||
let s:line_num = s:matches[2]
|
||||
|
||||
" --- This is the important part ---
|
||||
|
||||
" 1. Mark the current dummy buffer (e.g., 'default.conf:38:')
|
||||
" to be deleted as soon as it's hidden.
|
||||
setlocal bufhidden=delete
|
||||
|
||||
" 2. Open the *real* file, jumping to the correct line.
|
||||
" This 'edit' command replaces the dummy buffer in the
|
||||
" current window. Because the dummy buffer is now hidden
|
||||
" and marked 'bufhidden=delete', it gets removed.
|
||||
execute 'edit! +' . s:line_num . ' ' . fnameescape(s:real_file)
|
||||
doautocmd filetypedetect BufRead
|
||||
endfunction
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
defaultBranch = main
|
||||
[alias]
|
||||
change-commits = "!f() { VAR=$1; OLD=$2; NEW=$3; shift 3; git filter-branch --env-filter \"if [[ \\\"$`echo $VAR`\\\" = '$OLD' ]]; then export $VAR='$NEW'; fi\" $@; }; f"
|
||||
permission-reset = !git diff -p -R --no-ext-diff --no-color --diff-filter=M | grep -E \"^(diff|(old|new) mode)\" --color=never | git apply
|
||||
[filter "lfs"]
|
||||
process = git-lfs filter-process
|
||||
required = true
|
||||
|
||||
@@ -337,7 +337,7 @@ subtitleBurn(){
|
||||
# Gen random password
|
||||
genPassword(){
|
||||
cd ~/.node_modules_mine;
|
||||
node -p "require('base-x')('!#$%&()*+,-.0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_abcdefghijklmnopqrstuvwxyz{|}~' ).encode( crypto.randomBytes(${1:-15}) )"
|
||||
node -p "require('base-x').default('!#$%&()*+,-.0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_abcdefghijklmnopqrstuvwxyz{|}~' ).encode( crypto.randomBytes(${1:-15}) )"
|
||||
}
|
||||
|
||||
# Convert json to csv with column headers
|
||||
@@ -429,6 +429,11 @@ fontCacheRefresh(){
|
||||
fc-cache -f -v
|
||||
}
|
||||
|
||||
# tell yarn to use node_modules directory
|
||||
yarnUseNodemodules(){
|
||||
yarn config set nodeLinker node-modules
|
||||
}
|
||||
|
||||
# usbreset
|
||||
usbreset(){
|
||||
set -x
|
||||
@@ -440,7 +445,98 @@ usbreset(){
|
||||
done
|
||||
}
|
||||
|
||||
# Make sample pdf file
|
||||
# mk-sample-pdf [count=10] [prefix=sample-]
|
||||
mk-sample-pdf(){
|
||||
count=${1:-10}
|
||||
prefix=${2:-sample}
|
||||
for i in `seq 1 $count`; do printf "Sample PDF #%02d\nThis is test PDF number %02d\n" "$i" "$i" | enscript -B -o - | ps2pdf - "${prefix}_$i.pdf"; done
|
||||
}
|
||||
|
||||
|
||||
# Mysql dump all database
|
||||
# mysqldump [ mysql connection args... ]
|
||||
mysqldump(){
|
||||
set -x
|
||||
mysql $@ -e "SHOW DATABASES;" \
|
||||
| grep -Ev "(Database|information_schema|performance_schema|sys|mysql)" \
|
||||
| xargs -I % sh -c "mysqldump $( echo $@ ) --insert-ignore --triggers --events --complete-insert --single-transaction --extended-insert --quick % | gzip > %_$(date +%Y%m%d_%H%M%S).sql.gz"
|
||||
}
|
||||
|
||||
# Make ssh tunnel
|
||||
sshMkTunne(){
|
||||
cat<<EOF
|
||||
cat<<EEE >> ~/.ssh/config
|
||||
Host *
|
||||
ServerAliveInterval 40
|
||||
EEE
|
||||
|
||||
while :; do ssh -NT -R 4025:127.0.0.1:22 myguest@${1:-myserver}; sleep 10; done;
|
||||
EOF
|
||||
}
|
||||
|
||||
# Usage: mysqlCreateDbUser <username> [password] [database]
|
||||
mysqlCreateDbUser() {
|
||||
if [ $# -lt 1 ]; then
|
||||
echo "Usage: ${FUNCNAME[0]} <username> [password] [database]" >&2
|
||||
return 1
|
||||
fi
|
||||
|
||||
local randPass=$(openssl rand -base64 18)
|
||||
local username="$1"
|
||||
local defDbName="${username}_db"
|
||||
local user_password="${2:-$randPass}"
|
||||
local db_name="${3:-$defDbName}"
|
||||
|
||||
# Validate username
|
||||
if [[ -z "$username" || "$username" =~ [^a-zA-Z0-9_-] ]]; then
|
||||
echo "Error: Invalid username. Only alphanumeric, hyphen, and underscore allowed." >&2
|
||||
return 1
|
||||
fi
|
||||
|
||||
echo -e "-- Using password '$user_password' for user '$username' and creating database '$db_name' \n"
|
||||
|
||||
# Execute MySQL commands
|
||||
cat<<EOF
|
||||
CREATE DATABASE IF NOT EXISTS \`$db_name\`;
|
||||
CREATE USER '$username'@'%' IDENTIFIED BY '$user_password';
|
||||
GRANT ALL PRIVILEGES ON \`$db_name\`.* TO '$username'@'%';
|
||||
FLUSH PRIVILEGES;
|
||||
EOF
|
||||
}
|
||||
|
||||
# Create duckdb from csv. Usage csv2duckdb <csv-file>
|
||||
csv2duckdb(){
|
||||
csv=$1;
|
||||
dirName="$(dirname $csv)"
|
||||
tbl="$(basename $csv)"
|
||||
tbl=${tbl%.*};
|
||||
tbl="$(echo $tbl | sed 's/[^[:alnum:]]/_/g' )";
|
||||
echo "CREATE TABLE $tbl AS SELECT * FROM '$csv';" | duckdb "$dirName/$tbl.duckdb" ;
|
||||
}
|
||||
|
||||
# Create sqlite3 db from csv. Usage csv2sqlite <csv-file>
|
||||
csv2sqlite(){
|
||||
csv=$1;
|
||||
dirName="$(dirname $csv)"
|
||||
tbl="$(basename $csv)"
|
||||
tbl=${tbl%.*};
|
||||
tbl="$(echo $tbl | sed 's/[^[:alnum:]]/_/g' )";
|
||||
echo "ATTACH '$dirName/$tbl.db' AS sqdb (TYPE sqlite); CREATE TABLE sqdb.$tbl AS SELECT * FROM '$csv';" | duckdb ;
|
||||
}
|
||||
|
||||
# Expose port of container using pasta. pastaExpose <container> <portmapping>
|
||||
pastaExpose(){
|
||||
cont=$1;
|
||||
portMapping=$2;
|
||||
contPid=$(podman inspect -f '{{.State.Pid}}' $cont);
|
||||
# pasta -f --config-net -t $portMapping -u none -T none -U none --no-map-gw $contPid;
|
||||
pasta -f --config-net -t $portMapping --dns-forward 169.254.1.1 -u none -T none -U none --no-map-gw --map-guest-addr 169.254.1.2 $contPid;
|
||||
}
|
||||
|
||||
|
||||
|
||||
#### END OF USER FUNCTIONS ####
|
||||
# Setup autocomplete. run eval "$(THIS_FILE setup-autocomplete)"
|
||||
setup-autocomplete(){
|
||||
cat<<EOF
|
||||
|
||||
+112
@@ -0,0 +1,112 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
import subprocess
|
||||
import datetime
|
||||
import os
|
||||
import gzip
|
||||
import shutil
|
||||
import argparse
|
||||
import sys
|
||||
import fnmatch
|
||||
import logging
|
||||
|
||||
def get_args():
|
||||
parser = argparse.ArgumentParser(description="High-performance MySQL multi-database backup tool.")
|
||||
parser.add_argument("-H", "--host", default="localhost", help="MySQL Host")
|
||||
parser.add_argument("-P", "--port", default="3306", help="MySQL Port")
|
||||
parser.add_argument("-u", "--user", required=True, help="MySQL Username")
|
||||
parser.add_argument("-p", "--password", required=True, help="MySQL Password")
|
||||
parser.add_argument("-o", "--output", default="backups", help="Output directory")
|
||||
parser.add_argument("-x", "--exclude", action="append", default=[],
|
||||
help="Pattern to exclude (e.g., 'test_*'). Can be used multiple times.")
|
||||
# Added verbose flag
|
||||
parser.add_argument("-v", "--verbose", action="store_true", help="Print executed commands and detailed logs")
|
||||
return parser.parse_args()
|
||||
|
||||
def should_exclude(db_name, patterns):
|
||||
system_dbs = ('information_schema', 'performance_schema', 'sys', 'mysql', 'Database')
|
||||
if db_name in system_dbs:
|
||||
return True
|
||||
for pattern in patterns:
|
||||
if fnmatch.fnmatch(db_name, pattern):
|
||||
return True
|
||||
return False
|
||||
|
||||
def run_backup():
|
||||
args = get_args()
|
||||
|
||||
# Configure logging based on verbose flag
|
||||
log_level = logging.DEBUG if args.verbose else logging.INFO
|
||||
logging.basicConfig(format='%(levelname)s: %(message)s', level=log_level)
|
||||
|
||||
if not os.path.exists(args.output):
|
||||
logging.debug(f"Creating output directory: {args.output}")
|
||||
os.makedirs(args.output)
|
||||
|
||||
timestamp = datetime.datetime.now().strftime("%Y%m%d_%H%M%S")
|
||||
|
||||
# Hide password in logs for security, even in verbose mode
|
||||
safe_conn_flags = ['-h', args.host, '-P', args.port, '-u', args.user, '-p****']
|
||||
real_conn_flags = ['-h', args.host, '-P', args.port, '-u', args.user, f'-p{args.password}']
|
||||
|
||||
try:
|
||||
# 1. Fetch Database List
|
||||
fetch_cmd = ['mysql'] + real_conn_flags + ['-e', 'SHOW DATABASES;', '-N', '-s']
|
||||
logging.debug(f"Executing: {' '.join(['mysql'] + safe_conn_flags + fetch_cmd[-3:])}")
|
||||
|
||||
proc = subprocess.run(fetch_cmd, capture_output=True, text=True, check=True)
|
||||
raw_databases = proc.stdout.split()
|
||||
|
||||
databases = [db for db in raw_databases if not should_exclude(db, args.exclude)]
|
||||
|
||||
if not databases:
|
||||
logging.info("No databases found matching the criteria.")
|
||||
return
|
||||
|
||||
logging.info(f"Starting backup for {len(databases)} databases...")
|
||||
|
||||
for db in databases:
|
||||
filename = f"{db}_{timestamp}.sql.gz"
|
||||
filepath = os.path.join(args.output, filename)
|
||||
|
||||
dump_cmd = [
|
||||
'mysqldump'
|
||||
] + real_conn_flags + [
|
||||
'--single-transaction',
|
||||
'--extended-insert',
|
||||
'--quick',
|
||||
'--disable-keys',
|
||||
'--no-autocommit',
|
||||
db
|
||||
]
|
||||
|
||||
# Detailed log of the dump command
|
||||
safe_dump_cmd = ['mysqldump'] + safe_conn_flags + dump_cmd[7:]
|
||||
logging.debug(f"Executing: {' '.join(safe_dump_cmd)} | gzip > {filepath}")
|
||||
|
||||
logging.info(f" -> Backing up: {db}")
|
||||
|
||||
with subprocess.Popen(dump_cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE) as dump_proc:
|
||||
with gzip.open(filepath, 'wb', compresslevel=6) as f_out:
|
||||
shutil.copyfileobj(dump_proc.stdout, f_out)
|
||||
|
||||
dump_proc.wait()
|
||||
|
||||
if dump_proc.returncode != 0:
|
||||
error_msg = dump_proc.stderr.read().decode()
|
||||
logging.error(f"Failed to backup {db}: {error_msg}")
|
||||
else:
|
||||
logging.debug(f"Successfully completed {db}")
|
||||
|
||||
logging.info("All tasks completed.")
|
||||
|
||||
except subprocess.CalledProcessError as e:
|
||||
# Even errors should hide the password
|
||||
logging.error("Connection failed. Check your credentials and host settings.")
|
||||
sys.exit(1)
|
||||
except Exception as e:
|
||||
logging.error(f"Unexpected error: {e}")
|
||||
sys.exit(1)
|
||||
|
||||
if __name__ == "__main__":
|
||||
run_backup()
|
||||
@@ -4,3 +4,4 @@
|
||||
./bin/ibus-next-engine.py
|
||||
./bin/csv-split-by-col.py
|
||||
./bin/sway-wp-switch
|
||||
./bin/mysql-backup.py
|
||||
|
||||
@@ -0,0 +1,40 @@
|
||||
--[[
|
||||
LazyVim configuration migrated from LunarVim
|
||||
]]
|
||||
|
||||
-- Bootstrap lazy.nvim
|
||||
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
|
||||
if not vim.uv.fs_stat(lazypath) then
|
||||
local lazyrepo = "https://github.com/folke/lazy.nvim.git"
|
||||
vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath })
|
||||
end
|
||||
vim.opt.rtp:prepend(lazypath)
|
||||
|
||||
require("lazy").setup({
|
||||
-- Core LazyVim distribution (must be first)
|
||||
{ "LazyVim/LazyVim", import = "lazyvim.plugins", version = "*" },
|
||||
|
||||
-- Extras (use :LazyExtras to browse all available extras)
|
||||
{ import = "lazyvim.plugins.extras.dap.core" },
|
||||
|
||||
-- Import user plugins from lua/plugins/*.lua
|
||||
{ import = "plugins" },
|
||||
}, {
|
||||
defaults = { lazy = true, version = "*" },
|
||||
install = { colorscheme = { "habamax" } },
|
||||
checker = { enabled = true },
|
||||
performance = {
|
||||
rtp = {
|
||||
disabled_plugins = {
|
||||
"gzip",
|
||||
"matchit",
|
||||
"matchparen",
|
||||
"netrwPlugin",
|
||||
"tarPlugin",
|
||||
"tohtml",
|
||||
"tutor",
|
||||
"zipPlugin",
|
||||
},
|
||||
},
|
||||
},
|
||||
})
|
||||
@@ -0,0 +1,57 @@
|
||||
{
|
||||
"LazyVim": { "branch": "main", "commit": "c10948c50b18fae7f256433afdef09e432410480" },
|
||||
"LuaSnip": { "branch": "master", "commit": "642b0c595e11608b4c18219e93b88d7637af27bc" },
|
||||
"NrrwRgn": { "branch": "master", "commit": "e027db9d94f94947153cd7b5ac9abd04371ab2b0" },
|
||||
"SchemaStore.nvim": { "branch": "main", "commit": "322751401046ae2dbbe32eeb31992a5d4fcc8d92" },
|
||||
"auto-session": { "branch": "main", "commit": "79ef41274354a486cf4f100a7adf4a7575802ccf" },
|
||||
"blink-copilot": { "branch": "main", "commit": "41e91a659bd9b8cba9ba2ea68a69b52ba5a9ebd8" },
|
||||
"blink.cmp": { "branch": "main", "commit": "78336bc89ee5365633bcf754d93df01678b5c08f" },
|
||||
"bracey.vim": { "branch": "master", "commit": "4e1a22acc01787814819df1057d039d4ecf357eb" },
|
||||
"bufferline.nvim": { "branch": "main", "commit": "655133c3b4c3e5e05ec549b9f8cc2894ac6f51b3" },
|
||||
"catppuccin": { "branch": "main", "commit": "605b4603797de970e9f3a4238c199c850da03186" },
|
||||
"conform.nvim": { "branch": "master", "commit": "3543d000dafbc41cc7761d860cfdb24e82154f75" },
|
||||
"copilot.lua": { "branch": "master", "commit": "dada2f90220861d6e9d30eca6a3997cf5d0c9936" },
|
||||
"editorconfig.nvim": { "branch": "master", "commit": "2af880947129f1ab776b732a4eecb92528472ef5" },
|
||||
"emmet-vim": { "branch": "master", "commit": "92ef2f74f4093edc99db5e9e4cf7e40116a85bd6" },
|
||||
"flash.nvim": { "branch": "main", "commit": "ec0bf2842189f65f60fd40bf3557cac1029cc932" },
|
||||
"friendly-snippets": { "branch": "main", "commit": "6cd7280adead7f586db6fccbd15d2cac7e2188b9" },
|
||||
"gitsigns.nvim": { "branch": "main", "commit": "a462f416e2ce4744531c6256252dee99a7d34a83" },
|
||||
"grug-far.nvim": { "branch": "main", "commit": "c69859c1d5427ab5fc7ed12380ab521b4e336691" },
|
||||
"lazy.nvim": { "branch": "main", "commit": "85c7ff3711b730b4030d03144f6db6375044ae82" },
|
||||
"lazydev.nvim": { "branch": "main", "commit": "01bc2aacd51cf9021eb19d048e70ce3dd09f7f93" },
|
||||
"live-server.nvim": { "branch": "main", "commit": "85915d0e7dd926a54b0082aaeafc10a82bfe8288" },
|
||||
"lualine.nvim": { "branch": "master", "commit": "221ce6b2d999187044529f49da6554a92f740a96" },
|
||||
"markdown-preview.nvim": { "branch": "main", "commit": "5fec271fb91c7be7eca11d5b1c8da16add12e205" },
|
||||
"mason-lspconfig.nvim": { "branch": "main", "commit": "a5671269a1ddfa7790cdf97c14e600e269da550f" },
|
||||
"mason-nvim-dap.nvim": { "branch": "main", "commit": "e51f9b259f066c4347f9a79ffde54c29a0619384" },
|
||||
"mason.nvim": { "branch": "main", "commit": "2a6940af80375532e5e9e7c1f2fc6319a1b7a69d" },
|
||||
"mini.ai": { "branch": "main", "commit": "d73c36349aa7b0bab5f77ad71701a1d42211a1df" },
|
||||
"mini.icons": { "branch": "main", "commit": "e56797f90192d81f1fda02e662fc3e8e3d775027" },
|
||||
"mini.pairs": { "branch": "main", "commit": "4a014143fcb4e9df26198ccb3ecff3b9e77a048c" },
|
||||
"mini.surround": { "branch": "main", "commit": "580e4cb98c5900d9fe743865fb5a5b2178b4ab18" },
|
||||
"noice.nvim": { "branch": "main", "commit": "cf758e9df66451889aab56613a21b8673f045ec2" },
|
||||
"nui.nvim": { "branch": "main", "commit": "f535005e6ad1016383f24e39559833759453564e" },
|
||||
"nvim-dap": { "branch": "master", "commit": "6a5bba0ddea5d419a783e170c20988046376090d" },
|
||||
"nvim-dap-ui": { "branch": "master", "commit": "f7d75cca202b52a60c520ec7b1ec3414d6e77b0f" },
|
||||
"nvim-dap-virtual-text": { "branch": "master", "commit": "fbdb48c2ed45f4a8293d0d483f7730d24467ccb6" },
|
||||
"nvim-lint": { "branch": "master", "commit": "01c9842c089069ab497430159312b2c8868a4590" },
|
||||
"nvim-lspconfig": { "branch": "master", "commit": "229b79051b380377664edc4cbd534930154921a1" },
|
||||
"nvim-nio": { "branch": "master", "commit": "21f5324bfac14e22ba26553caf69ec76ae8a7662" },
|
||||
"nvim-surround": { "branch": "main", "commit": "2e93e154de9ff326def6480a4358bfc149d5da2c" },
|
||||
"nvim-treesitter": { "branch": "main", "commit": "4916d6592ede8c07973490d9322f187e07dfefac" },
|
||||
"nvim-treesitter-textobjects": { "branch": "main", "commit": "851e865342e5a4cb1ae23d31caf6e991e1c99f1e" },
|
||||
"nvim-ts-autotag": { "branch": "main", "commit": "88c1453db4ba7dd24131086fe51fdf74e587d275" },
|
||||
"persistence.nvim": { "branch": "main", "commit": "c45ff862b53ce07a853a753fb0b33e148dbb99d2" },
|
||||
"plenary.nvim": { "branch": "master", "commit": "50012918b2fc8357b87cff2a7f7f0446e47da174" },
|
||||
"snacks.nvim": { "branch": "main", "commit": "e6fd58c82f2f3fcddd3fe81703d47d6d48fc7b9f" },
|
||||
"tabular": { "branch": "master", "commit": "7bd1d0de5d390834220b7d0a791bb9734fafa0cc" },
|
||||
"telescope.nvim": { "branch": "master", "commit": "5255aa27c422de944791318024167ad5d40aad20" },
|
||||
"todo-comments.nvim": { "branch": "main", "commit": "31e3c38ce9b29781e4422fc0322eb0a21f4e8668" },
|
||||
"tokyonight.nvim": { "branch": "main", "commit": "545d72cde6400835d895160ecb5853874fd5156d" },
|
||||
"trouble.nvim": { "branch": "main", "commit": "748ca2789044607f19786b1d837044544c55e80a" },
|
||||
"ts-comments.nvim": { "branch": "main", "commit": "79e4337e4231ff8ca33dab85162b5ee8e78f22ce" },
|
||||
"vim-fugitive": { "branch": "master", "commit": "96c1009fcf8ce60161cc938d149dd5a66d570756" },
|
||||
"vim-gnupg": { "branch": "main", "commit": "6d106fa49df3d8c1e63fac8eb64b4a0174f7e83f" },
|
||||
"vim-snippets": { "branch": "master", "commit": "4ed409154bcaa32fba6fd153cc0c915e44982872" },
|
||||
"which-key.nvim": { "branch": "main", "commit": "fcbf4eea17cb299c02557d576f0d568878e354a4" }
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"extras": [
|
||||
"lazyvim.plugins.extras.ai.copilot",
|
||||
"lazyvim.plugins.extras.formatting.prettier",
|
||||
"lazyvim.plugins.extras.lang.docker",
|
||||
"lazyvim.plugins.extras.lang.json",
|
||||
"lazyvim.plugins.extras.lang.typescript"
|
||||
],
|
||||
"install_version": 8,
|
||||
"news": {
|
||||
"NEWS.md": "11866"
|
||||
},
|
||||
"version": 8
|
||||
}
|
||||
@@ -0,0 +1,95 @@
|
||||
-- @section commands
|
||||
-- Custom user commands migrated from LunarVim's config.lua vim.cmd block
|
||||
|
||||
--- @section commands-grep
|
||||
-- Gr: Search with grep and show results in quickfix list
|
||||
vim.api.nvim_create_user_command("Gr", function(input)
|
||||
vim.cmd("silent execute 'grep! " .. input.args .. " | copen'")
|
||||
end, { nargs = "+", desc = "Grep and open quickfix list" })
|
||||
|
||||
-- Grc: Raw grep command (no quickfix auto-open)
|
||||
vim.api.nvim_create_user_command("Grc", function(input)
|
||||
vim.cmd("grep " .. input.args)
|
||||
end, { nargs = "*", desc = "Run grep without quickfix" })
|
||||
|
||||
--- @section commands-file
|
||||
-- Header: Add file header via external script
|
||||
vim.api.nvim_create_user_command("Header", function()
|
||||
vim.cmd("0r!file-header '%'")
|
||||
end, { desc = "Add file header from external file-header script" })
|
||||
|
||||
-- Termw: Open konsole terminal emulator
|
||||
vim.api.nvim_create_user_command("Termw", function()
|
||||
vim.cmd("!konsole -e bash-session &")
|
||||
end, { desc = "Open konsole terminal" })
|
||||
|
||||
-- Term: Open embedded terminal in a horizontal split
|
||||
vim.api.nvim_create_user_command("Term", function()
|
||||
vim.cmd("sp | term")
|
||||
end, { desc = "Open terminal in split window" })
|
||||
|
||||
-- EditSnippet: Open LuaSnip snippet files for editing
|
||||
vim.api.nvim_create_user_command("EditSnippet", function()
|
||||
require("luasnip.loaders").edit_snippet_files()
|
||||
end, { desc = "Edit LuaSnip snippet files" })
|
||||
|
||||
-- Cwd: Change working directory to current file's directory
|
||||
vim.api.nvim_create_user_command("Cwd", function()
|
||||
vim.cmd("cd %:p:h")
|
||||
end, { desc = "Change directory to current file" })
|
||||
|
||||
-- Tcd: Change tab-local working directory to current file's directory
|
||||
vim.api.nvim_create_user_command("Tcd", function()
|
||||
vim.cmd(":tcd %:p:h")
|
||||
end, { desc = "Change tab directory to current file" })
|
||||
|
||||
-- Reload: Reload all buffers from disk
|
||||
vim.api.nvim_create_user_command("Reload", function()
|
||||
vim.cmd("bufdo execute 'checktime . bufnr('%')'")
|
||||
end, { desc = "Reload all buffers" })
|
||||
|
||||
-- Rm: Delete current file from disk and close buffer
|
||||
vim.api.nvim_create_user_command("Rm", function()
|
||||
vim.cmd("!rm % | bd")
|
||||
end, { desc = "Delete file and close buffer" })
|
||||
|
||||
-- CopyFilename: Copy current file path to system clipboard
|
||||
vim.api.nvim_create_user_command("CopyFilename", function()
|
||||
vim.fn.setreg("+", vim.fn.expand("%"))
|
||||
end, { desc = "Copy file path to clipboard" })
|
||||
|
||||
-- Code: Open current file in VS Code at current line
|
||||
vim.api.nvim_create_user_command("Code", function()
|
||||
vim.cmd("!code ./ -g %:" .. (vim.fn.line(".") + 1))
|
||||
end, { desc = "Open in VS Code at current line" })
|
||||
|
||||
-- <C-G>: Live grep word under cursor via Snacks picker
|
||||
vim.keymap.set("n", "<C-G>", function()
|
||||
LazyVim.pick("live_grep", { default_text = vim.fn.expand("<cword>") })()
|
||||
end, { desc = "Snacks grep word under cursor" })
|
||||
|
||||
-- @section autocmds-filetype
|
||||
-- Caddyfile: Set filetype for Caddyfile (any path, any name containing "Caddyfile")
|
||||
vim.api.nvim_create_autocmd({ "BufRead", "BufNewFile" }, {
|
||||
pattern = "*Caddyfile",
|
||||
callback = function()
|
||||
vim.bo.filetype = "caddy"
|
||||
end,
|
||||
desc = "Detect Caddyfile filetype",
|
||||
})
|
||||
|
||||
-- @section autocmds-emmet
|
||||
-- Emmet: Enable Emmet for web development filetypes (migrated from LunarVim)
|
||||
-- Disabled by default for all filetypes; enabled only for these specific filetypes.
|
||||
-- vim.api.nvim_create_autocmd("FileType", {
|
||||
-- pattern = { "html", "css", "vue", "jsx", "php", "javascriptreact" },
|
||||
-- callback = function()
|
||||
-- vim.cmd("EmmetInstall")
|
||||
-- end,
|
||||
-- desc = "Enable Emmet for web filetypes",
|
||||
-- })
|
||||
|
||||
-- @section config-grepprg
|
||||
-- Set grep program to `ag` (preserved from LunarVim)
|
||||
-- LazyVim defaults to `rg --vimgrep`. This overrides it.
|
||||
vim.opt.grepprg = "ag --vimgrep"
|
||||
@@ -0,0 +1,103 @@
|
||||
-- @section keymaps
|
||||
-- Custom keymaps migrated from LunarVim config.
|
||||
-- LazyVim already defines many keymaps (e.g. <C-s> for save, <S-h/l> for buffer prev/next,
|
||||
-- <leader>bd for delete buffer). Only keymaps that add to or differ from LazyVim defaults
|
||||
-- are listed here. Grouped by function with @section markers.
|
||||
|
||||
local map = vim.keymap.set
|
||||
|
||||
--- @section keymaps-buffers
|
||||
-- Meta+number: Jump to specific buffer (via BufferLine)
|
||||
-- LazyVim provides <leader>bj for BufferLinePick (interactive pick).
|
||||
-- These direct-access keys are preserved from your LunarVim config.
|
||||
for i = 1, 9 do
|
||||
map("n", "<M-" .. i .. ">", function()
|
||||
vim.cmd("BufferLineGoToBuffer " .. i)
|
||||
end, { desc = "Go to buffer " .. i })
|
||||
end
|
||||
|
||||
--- @section keymaps-picker
|
||||
-- <C-p>: Quick file find (Snacks picker replaces your Telescope "fd" picker)
|
||||
map("n", "<C-p>", function()
|
||||
LazyVim.pick("files")()
|
||||
end, { desc = "Find Files" })
|
||||
|
||||
--- @section keymaps-external
|
||||
-- Launch external tools from Neovim
|
||||
map("n", "<Leader><Leader>t", ":!konsole&<CR>", { desc = "Open Konsole terminal" })
|
||||
map("n", "<Leader><Leader>g", ":!git gui &<CR>", { desc = "Open Git GUI" })
|
||||
|
||||
--- @section keymaps-file
|
||||
-- File-level operations
|
||||
map("n", "<M-r>", ":e!<CR>", { desc = "Reload current file (discard changes)" })
|
||||
map("n", "<M-q>", function()
|
||||
Snacks.bufdelete()
|
||||
end, { desc = "Delete current buffer (preserves window layout)" })
|
||||
map("n", "<M-Q>", ":bd!<CR>", { desc = "Force delete buffer and close window" })
|
||||
|
||||
--- @section keymaps-comment
|
||||
-- Toggle comment with Space+/ (normal and visual)
|
||||
map("n", "c<Space>", "gcc", { desc = "Toggle comment", remap = true })
|
||||
map("n", "<Space>/", "gcc", { desc = "Toggle comment", remap = true })
|
||||
-- map("v", "<Space>/", "gc", { desc = "Toggle comment" })
|
||||
|
||||
--- @section keymaps-visual
|
||||
-- Visual mode operations
|
||||
map("v", "<C-h>", '"fy:%s#<C-r>f#', { desc = "Replace all occurrences of selected text" })
|
||||
map("v", "<C-f>", '"fy/<C-r>f', { desc = "Search for selected word" })
|
||||
|
||||
--- @section keymaps-insert
|
||||
-- Insert mode helpers
|
||||
map("i", "<C-CR>", "<ESC>A;", { desc = "Append semicolon at end of line" })
|
||||
map("i", "<C-E>", "<plug>(emmet-expand-abbr)", { desc = "Expand Emmet abbreviation" })
|
||||
|
||||
--- @section keymaps-window
|
||||
-- Window navigation with Alt+arrows (preserved from LunarVim)
|
||||
-- LazyVim defaults have <C-h/j/k/l> for window nav.
|
||||
-- These Alt+arrow mappings give you an alternative.
|
||||
map("n", "<M-Up>", "<C-W>k", { desc = "Move to window above" })
|
||||
map("n", "<M-Down>", "<C-W>j", { desc = "Move to window below" })
|
||||
map("n", "<M-Right>", "<C-W>l", { desc = "Move to window right" })
|
||||
map("n", "<M-Left>", "<C-W>h", { desc = "Move to window left" })
|
||||
|
||||
--- @section keymaps-terminal
|
||||
-- Terminal mode keymaps for window navigation and tab switching
|
||||
map("t", "<C-PageUp>", "<C-\\><C-N><C-PageUp>", { desc = "Terminal: Previous tab" })
|
||||
map("t", "<C-PageDown>", "<C-\\><C-N><C-PageDown>", { desc = "Terminal: Next tab" })
|
||||
map("t", "<M-Up>", "<C-\\><C-N><C-W>k", { desc = "Terminal: Window up" })
|
||||
map("t", "<M-Down>", "<C-\\><C-N><C-W>j", { desc = "Terminal: Window down" })
|
||||
map("t", "<M-Right>", "<C-\\><C-N><C-W>l", { desc = "Terminal: Window right" })
|
||||
map("t", "<M-Left>", "<C-\\><C-N><C-W>h", { desc = "Terminal: Window left" })
|
||||
|
||||
--- @section keymaps-buffer-switch
|
||||
-- Buffer switching keys preserved from LunarVim.
|
||||
-- NOTE: <C-j> and <C-k> conflict with LazyVim's default window navigation
|
||||
-- (<C-j>=window down, <C-k>=window up). Since you use <M-Arrows> for windows,
|
||||
-- these override <C-j/k> to buffer navigation instead.
|
||||
map("n", "<C-PageUp>", ":BufferLineCyclePrev<CR>", { desc = "Previous buffer" })
|
||||
map("n", "<C-PageDown>", ":BufferLineCycleNext<CR>", { desc = "Next buffer" })
|
||||
map("n", "<C-S-PageUp>", ":BufferLineMovePrev<CR>", { desc = "Move buffer left" })
|
||||
map("n", "<C-S-PageDown>", ":BufferLineMoveNext<CR>", { desc = "Move buffer right" })
|
||||
map("n", "<C-j>", ":BufferLineCyclePrev<CR>", { desc = "Previous buffer" })
|
||||
map("n", "<C-k>", ":BufferLineCycleNext<CR>", { desc = "Next buffer" })
|
||||
map("n", "<C-S-j>", ":BufferLineMovePrev<CR>", { desc = "Move buffer left" })
|
||||
map("n", "<C-S-k>", ":BufferLineMoveNext<CR>", { desc = "Move buffer right" })
|
||||
|
||||
--- @section keymaps-tab
|
||||
map("n", "<C-S-T>", ":tabedit<CR>", { desc = "Open new tab" })
|
||||
|
||||
--- @section keymaps-dap
|
||||
-- Quick DAP access keys (dap.core extra provides <leader>d prefix mappings)
|
||||
-- These F-keys provide direct access to the most common debugging actions.
|
||||
map("n", "<F5>", function()
|
||||
require("dap").continue()
|
||||
end, { desc = "DAP: Continue / Start debugging" })
|
||||
map("n", "<F10>", function()
|
||||
require("dap").step_over()
|
||||
end, { desc = "DAP: Step over" })
|
||||
map("n", "<F11>", function()
|
||||
require("dap").step_into()
|
||||
end, { desc = "DAP: Step into" })
|
||||
map("n", "<F12>", function()
|
||||
require("dap").step_out()
|
||||
end, { desc = "DAP: Step out" })
|
||||
@@ -0,0 +1,36 @@
|
||||
-- Bootstrap lazy.nvim
|
||||
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
|
||||
if not vim.uv.fs_stat(lazypath) then
|
||||
local lazyrepo = "https://github.com/folke/lazy.nvim.git"
|
||||
vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath })
|
||||
end
|
||||
vim.opt.rtp:prepend(lazypath)
|
||||
|
||||
require("lazy").setup({
|
||||
-- Core LazyVim distribution (must be first)
|
||||
{ "LazyVim/LazyVim", import = "lazyvim.plugins", version = "*" },
|
||||
|
||||
-- Extras (use :LazyExtras to browse all available extras)
|
||||
{ import = "lazyvim.plugins.extras.dap.core" },
|
||||
|
||||
-- Import user plugins from lua/plugins/*.lua
|
||||
{ import = "plugins" },
|
||||
}, {
|
||||
defaults = { lazy = true, version = "*" },
|
||||
install = { colorscheme = { "habamax" } },
|
||||
checker = { enabled = true },
|
||||
performance = {
|
||||
rtp = {
|
||||
disabled_plugins = {
|
||||
"gzip",
|
||||
"matchit",
|
||||
"matchparen",
|
||||
"netrwPlugin",
|
||||
"tarPlugin",
|
||||
"tohtml",
|
||||
"tutor",
|
||||
"zipPlugin",
|
||||
},
|
||||
},
|
||||
},
|
||||
})
|
||||
@@ -0,0 +1,12 @@
|
||||
-- @section vim-options
|
||||
-- Override LazyVim default vim options to match your previous LunarVim config.
|
||||
-- LazyVim defaults already include: shiftwidth=2, tabstop=2, number=true, list=true,
|
||||
-- relativenumber=true.
|
||||
|
||||
-- Relativenumber: Your LunarVim config explicitly disabled it.
|
||||
-- LazyVim defaults to true; this overrides it back to false.
|
||||
vim.opt.relativenumber = false
|
||||
|
||||
-- Grepprg: Your LunarVim config used `ag --vimgrep`.
|
||||
-- LazyVim defaults to `rg --vimgrep`. Uncomment below to switch to `ag`:
|
||||
-- vim.opt.grepprg = "ag --vimgrep"
|
||||
@@ -0,0 +1,28 @@
|
||||
-- @section snacks-picker
|
||||
-- Snacks picker configuration preserved from LunarVim's Telescope settings.
|
||||
-- LazyVim defaults to Snacks picker (no extra import needed since the
|
||||
-- defaults system auto-enables it when Telescope/Fzf extras aren't imported).
|
||||
|
||||
-- Telescope's `file_ignore_patterns` handled differently in Snacks:
|
||||
-- Snacks picker uses `fd`/`rg` which respect .gitignore by default.
|
||||
-- Hidden files are shown, and VCS-ignored files are excluded.
|
||||
-- Your original ignore patterns are listed below for reference; you can
|
||||
-- adjust the find command or add global gitignore entries as needed.
|
||||
|
||||
return {
|
||||
{
|
||||
"folke/snacks.nvim",
|
||||
opts = function(_, opts)
|
||||
return vim.tbl_deep_extend("force", opts or {}, {
|
||||
picker = {
|
||||
sources = {
|
||||
files = {
|
||||
-- Show hidden files by default (dotfiles)
|
||||
hidden = true,
|
||||
},
|
||||
},
|
||||
},
|
||||
})
|
||||
end,
|
||||
},
|
||||
}
|
||||
@@ -0,0 +1,58 @@
|
||||
-- @section dap
|
||||
-- DAP (Debug Adapter Protocol) configuration.
|
||||
-- Core DAP support comes from the `lazyvim.plugins.extras.dap.core` extra
|
||||
-- (imported in init.lua), which provides nvim-dap, nvim-dap-ui, and
|
||||
-- <leader>d keybindings.
|
||||
--
|
||||
-- This file adds:
|
||||
-- 1. F-key shortcuts for common debug actions
|
||||
-- 2. PHP debug adapter configuration (migrated from LunarVim)
|
||||
|
||||
return {
|
||||
{
|
||||
"mfussenegger/nvim-dap",
|
||||
-- @section dap-keymaps
|
||||
-- F-key mappings for quick DAP access.
|
||||
-- The dap.core extra already provides <leader>d{letter} bindings;
|
||||
-- these F-keys are additional shortcuts preserved from your LunarVim config.
|
||||
keys = {
|
||||
{ "<F5>", function()
|
||||
require("dap").continue()
|
||||
end, desc = "DAP: Continue / Start" },
|
||||
{ "<F10>", function()
|
||||
require("dap").step_over()
|
||||
end, desc = "DAP: Step Over" },
|
||||
{ "<F11>", function()
|
||||
require("dap").step_into()
|
||||
end, desc = "DAP: Step Into" },
|
||||
{ "<F12>", function()
|
||||
require("dap").step_out()
|
||||
end, desc = "DAP: Step Out" },
|
||||
},
|
||||
-- @section dap-php
|
||||
-- PHP debug adapter setup (migrated from LunarVim)
|
||||
-- Uses php-debug-adapter installed via Mason.
|
||||
-- The adapter listens on port 9003 (Xdebug default).
|
||||
init = function()
|
||||
LazyVim.on_load("nvim-dap", function()
|
||||
local dap = require("dap")
|
||||
dap.adapters.php = {
|
||||
type = "executable",
|
||||
command = "node",
|
||||
args = {
|
||||
vim.fn.stdpath("data")
|
||||
.. "/mason/packages/php-debug-adapter/extension/out/phpDebug.js",
|
||||
},
|
||||
}
|
||||
dap.configurations.php = {
|
||||
{
|
||||
type = "php",
|
||||
request = "launch",
|
||||
name = "Listen for Xdebug",
|
||||
port = 9003,
|
||||
},
|
||||
}
|
||||
end)
|
||||
end,
|
||||
},
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
-- @section lualine
|
||||
-- Lualine statusline customization (migrated from LunarVim).
|
||||
-- Your LunarVim config set lualine_b to show both branch name and current file.
|
||||
-- This extends the default LazyVim lualine_b (which shows just "branch") to
|
||||
-- also show the full file path (%f).
|
||||
|
||||
return {
|
||||
{
|
||||
"nvim-lualine/lualine.nvim",
|
||||
opts = function(_, opts)
|
||||
-- Extend the default lualine_b section to show branch + file path
|
||||
-- (preserved from LunarVim: lvim.builtin.lualine.sections.lualine_b = { 'branch', '%f' })
|
||||
opts.sections = opts.sections or {}
|
||||
opts.sections.lualine_b = { "branch", "%f" }
|
||||
return opts
|
||||
end,
|
||||
},
|
||||
}
|
||||
@@ -0,0 +1,153 @@
|
||||
-- @section plugins
|
||||
-- Extra plugins migrated from LunarVim's `lvim.plugins` list.
|
||||
-- Each plugin is defined as a lazy.nvim spec.
|
||||
|
||||
return {
|
||||
--- @section plugins-editorconfig
|
||||
{
|
||||
"gpanders/editorconfig.nvim",
|
||||
desc = "EditorConfig support (respects .editorconfig files)",
|
||||
},
|
||||
|
||||
--- @section plugins-emmet
|
||||
{
|
||||
"mattn/emmet-vim",
|
||||
desc = "Emmet: HTML/CSS Zen coding expansion",
|
||||
},
|
||||
|
||||
--- @section plugins-fugitive
|
||||
{
|
||||
"tpope/vim-fugitive",
|
||||
cmd = {
|
||||
"G", "Git", "Gdiffsplit", "Gread", "Gwrite",
|
||||
"Ggrep", "GMove", "GDelete", "GBrowse",
|
||||
"GRemove", "GRename", "Glgrep", "Gedit",
|
||||
},
|
||||
ft = { "fugitive" },
|
||||
desc = "Git integration (tpope)",
|
||||
},
|
||||
{
|
||||
"selimacerbas/live-server.nvim",
|
||||
dependencies = {
|
||||
"folke/which-key.nvim",
|
||||
"nvim-telescope/telescope.nvim", -- recommended for path picker
|
||||
},
|
||||
init = function()
|
||||
-- which-key group label only (best practice)
|
||||
local ok, wk = pcall(require, "which-key")
|
||||
if ok then wk.add({ { "<leader>l", group = "LiveServer" } }) end
|
||||
end,
|
||||
opts = {
|
||||
default_port = 8000,
|
||||
live_reload = { enabled = true, inject_script = true, debounce = 120, css_inject = true },
|
||||
directory_listing = { enabled = true, show_hidden = false },
|
||||
},
|
||||
-- map to user commands (robust lazy-loading)
|
||||
keys = {
|
||||
{ "<leader>ls", "<cmd>LiveServerStart<cr>", desc = "Start (pick path & port)" },
|
||||
{ "<leader>lo", "<cmd>LiveServerOpen<cr>", desc = "Open existing port in browser" },
|
||||
{ "<leader>lr", "<cmd>LiveServerReload<cr>", desc = "Force reload (pick port)" },
|
||||
{ "<leader>lt", "<cmd>LiveServerToggleLive<cr>", desc = "Toggle live-reload (pick port)" },
|
||||
{ "<leader>li", "<cmd>LiveServerStatus<cr>", desc = "Show server status" },
|
||||
{ "<leader>lS", "<cmd>LiveServerStop<cr>", desc = "Stop one (pick port)" },
|
||||
{ "<leader>lA", "<cmd>LiveServerStopAll<cr>", desc = "Stop all" },
|
||||
},
|
||||
config = function(_, opts)
|
||||
require("live_server").setup(opts)
|
||||
end,
|
||||
},
|
||||
|
||||
--- @section plugins-markdown-preview
|
||||
{
|
||||
"harish2704/markdown-preview.nvim",
|
||||
dependencies = { "selimacerbas/live-server.nvim" },
|
||||
ft = 'markdown',
|
||||
config = function()
|
||||
require("markdown_preview").setup({
|
||||
-- all optional; sane defaults shown
|
||||
instance_mode = "takeover", -- "takeover" (one tab) or "multi" (tab per instance)
|
||||
port = 0, -- 0 = auto (8421 for takeover, OS-assigned for multi)
|
||||
open_browser = true,
|
||||
default_theme = "light", -- "dark" or "light"; initial preview theme
|
||||
debounce_ms = 300,
|
||||
mermaid_elk = true,
|
||||
})
|
||||
end,
|
||||
},
|
||||
-- {
|
||||
-- {
|
||||
-- "iamcco/markdown-preview.nvim",
|
||||
-- ft = 'markdown',
|
||||
-- build = function()
|
||||
-- require("lazy").load({ plugins = { "markdown-preview.nvim" } })
|
||||
-- vim.fn["mkdp#util#install"]()
|
||||
-- local app_dir = vim.fn.stdpath("data") .. "/lazy/markdown-preview.nvim/app"
|
||||
-- vim.fn.system(
|
||||
-- "cd "
|
||||
-- .. app_dir
|
||||
-- .. " && bun install mermaid@latest && cp node_modules/mermaid/dist/mermaid.min.js _static/mermaid.min.js"
|
||||
-- )
|
||||
-- end,
|
||||
-- },
|
||||
-- },
|
||||
|
||||
-- --- @section plugins-bracey
|
||||
{
|
||||
"turbio/bracey.vim",
|
||||
cmd = { "Bracey", "BracyStop", "BraceyReload", "BraceyEval" },
|
||||
build = "npm install --prefix server",
|
||||
desc = "Live HTML/CSS/JS editor preview",
|
||||
},
|
||||
|
||||
--- @section plugins-gnupg
|
||||
{
|
||||
"jamessan/vim-gnupg",
|
||||
desc = "Transparent editing of GnuPG encrypted files",
|
||||
},
|
||||
|
||||
--- @section plugins-vim-snippets
|
||||
{
|
||||
"honza/vim-snippets",
|
||||
event = "InsertEnter",
|
||||
config = function()
|
||||
require("luasnip.loaders.from_snipmate").lazy_load()
|
||||
end,
|
||||
desc = "SnipMate snippet collection (honza)",
|
||||
},
|
||||
|
||||
--- @section plugins-tabular
|
||||
{
|
||||
"godlygeek/tabular",
|
||||
desc = "Text alignment and formatting",
|
||||
},
|
||||
|
||||
--- @section plugins-nrrwrgn
|
||||
{ "chrisbra/NrrwRgn", desc = "Narrow region: edit a selection in a separate buffer" },
|
||||
|
||||
--- @section plugins-nvim-surround
|
||||
{
|
||||
"kylechui/nvim-surround",
|
||||
keys = {
|
||||
{ "S", mode = "v", desc = "Surround selection" },
|
||||
},
|
||||
config = function()
|
||||
require("nvim-surround").setup({
|
||||
keymaps = { visual = "S" },
|
||||
})
|
||||
end,
|
||||
desc = "Surround text objects (parentheses, quotes, tags, etc.)",
|
||||
},
|
||||
|
||||
--- @section plugins-auto-session
|
||||
{
|
||||
"rmagatti/auto-session",
|
||||
config = function()
|
||||
require("auto-session").setup({
|
||||
log_level = "error",
|
||||
-- Only restore/save sessions manually, not automatically
|
||||
auto_session_create_enabled = false,
|
||||
})
|
||||
end,
|
||||
desc = "Session management (manual mode)",
|
||||
},
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
-- @section luasnip-dart
|
||||
-- LuaSnip: Extend dart filetype with flutter snippets (migrated from LunarVim)
|
||||
-- When editing .dart files, this adds flutter snippet sources so that
|
||||
-- Flutter-specific completions (like `stless`, `stful`) are available.
|
||||
|
||||
return {
|
||||
{
|
||||
"L3MON4D3/LuaSnip",
|
||||
init = function()
|
||||
vim.api.nvim_create_autocmd("User", {
|
||||
pattern = "VeryLazy",
|
||||
once = true,
|
||||
callback = function()
|
||||
local ok, luasnip = pcall(require, "luasnip")
|
||||
if ok then
|
||||
luasnip.filetype_extend("dart", { "flutter" })
|
||||
end
|
||||
end,
|
||||
})
|
||||
end,
|
||||
desc = "Add Flutter snippets to Dart buffers",
|
||||
},
|
||||
}
|
||||
@@ -1,2 +1,3 @@
|
||||
./lvim
|
||||
./nvim-distro.sh
|
||||
./lzvim.sh
|
||||
|
||||
+1
Submodule home/.local/Apps/neovim-distros/lunarvim/LunarVim added at d9240249a3
@@ -7,6 +7,7 @@ vim.opt.shiftwidth = 2
|
||||
vim.opt.tabstop = 2
|
||||
vim.opt.relativenumber = true
|
||||
vim.opt.list = true
|
||||
vim.opt.relativenumber = false
|
||||
|
||||
-- general
|
||||
lvim.log.level = "info"
|
||||
@@ -38,6 +39,8 @@ end
|
||||
lvim.builtin.project.active = false
|
||||
lvim.builtin.project.manual_mode = true
|
||||
lvim.builtin.project.silent_chdir = false
|
||||
lvim.builtin.nvimtree.setup.update_cwd = false
|
||||
lvim.builtin.nvimtree.setup.update_focused_file.update_cwd = false
|
||||
|
||||
-- -- Change theme settings
|
||||
-- lvim.colorscheme = "lunar"
|
||||
@@ -219,6 +222,7 @@ lvim.builtin.telescope.defaults.file_ignore_patterns = {
|
||||
|
||||
|
||||
vim.cmd([[
|
||||
au BufRead,BufNewFile *Caddyfile set filetype=caddy
|
||||
command! -nargs=+ Gr :silent execute 'grep! "<args>" | copen'
|
||||
" Raw version of Gr command.
|
||||
command! -nargs=* Grc grep <args>
|
||||
@@ -345,6 +349,18 @@ dap.configurations.php = {
|
||||
}
|
||||
}
|
||||
|
||||
local lspconfig = require('lspconfig')
|
||||
local configs = require('lspconfig.configs')
|
||||
if not configs.oxlint then
|
||||
configs.oxlint = {
|
||||
default_config = {
|
||||
cmd = { 'oxlint', '--lsp' },
|
||||
filetypes = { 'javascript', 'javascriptreact', 'typescript', 'typescriptreact' },
|
||||
root_dir = lspconfig.util.root_pattern('.oxlintrc.json', 'package.json', '.git'),
|
||||
},
|
||||
}
|
||||
end
|
||||
|
||||
lvim.plugins = {
|
||||
{
|
||||
"gpanders/editorconfig.nvim",
|
||||
|
||||
@@ -1,54 +1,55 @@
|
||||
{
|
||||
"Comment.nvim": { "branch": "master", "commit": "0236521ea582747b58869cb72f70ccfa967d2e89" },
|
||||
"LuaSnip": { "branch": "master", "commit": "1def35377854535bb3b0f4cc7a33c083cdb12571" },
|
||||
"NrrwRgn": { "branch": "master", "commit": "e027db9d94f94947153cd7b5ac9abd04371ab2b0" },
|
||||
"alpha-nvim": { "branch": "main", "commit": "29074eeb869a6cbac9ce1fbbd04f5f5940311b32" },
|
||||
"auto-session": { "branch": "main", "commit": "aa01054d478c6d3efc0188cb2ed4850e9f475664" },
|
||||
"Comment.nvim": { "branch": "master", "commit": "e30b7f2008e52442154b66f7c519bfd2f1e32acb" },
|
||||
"LuaSnip": { "branch": "master", "commit": "0abc8f390b278c3b4aabc4c004ac8a088b65cf24" },
|
||||
"NrrwRgn": { "branch": "master", "commit": "e6f29bd507903b587229c544d3e1eba3cc0f0a13" },
|
||||
"alpha-nvim": { "branch": "main", "commit": "6c6a89d5b068b5251c8bdf0dd57bb921bcfeeb09" },
|
||||
"auto-session": { "branch": "main", "commit": "6cde3874a9283c2db55627acca5f28e4fa402320" },
|
||||
"bigfile.nvim": { "branch": "main", "commit": "33eb067e3d7029ac77e081cfe7c45361887a311a" },
|
||||
"bracey.vim": { "branch": "master", "commit": "4e1a22acc01787814819df1057d039d4ecf357eb" },
|
||||
"bufferline.nvim": { "branch": "main", "commit": "73edc1f2732678e7a681e3d3be49782610914f6b" },
|
||||
"cmp-buffer": { "branch": "main", "commit": "3022dbc9166796b644a841a02de8dd1cc1d311fa" },
|
||||
"cmp-nvim-lsp": { "branch": "main", "commit": "39e2eda76828d88b773cc27a3f61d2ad782c922d" },
|
||||
"cmp-path": { "branch": "main", "commit": "91ff86cd9c29299a64f968ebb45846c485725f23" },
|
||||
"cmp_luasnip": { "branch": "master", "commit": "05a9ab28b53f71d1aece421ef32fee2cb857a843" },
|
||||
"editorconfig.nvim": { "branch": "master", "commit": "5b9e303e1d6f7abfe616ce4cc8d3fffc554790bf" },
|
||||
"emmet-vim": { "branch": "master", "commit": "6c511a8d7d2863066f32e25543e2bb99d505172c" },
|
||||
"friendly-snippets": { "branch": "main", "commit": "dd2fd1281d4b22e7b4a5bfafa3e142d958e251f2" },
|
||||
"gitsigns.nvim": { "branch": "main", "commit": "805610a9393fa231f2c2b49cb521bfa413fadb3d" },
|
||||
"indent-blankline.nvim": { "branch": "master", "commit": "9637670896b68805430e2f72cf5d16be5b97a22a" },
|
||||
"lazy.nvim": { "branch": "main", "commit": "8f19915175395680808de529e4220da8dafc0759" },
|
||||
"lir.nvim": { "branch": "master", "commit": "7a9d45de08fecd23a04aca1f96688d744830029e" },
|
||||
"lualine.nvim": { "branch": "master", "commit": "0a5a66803c7407767b799067986b4dc3036e1983" },
|
||||
"bufferline.nvim": { "branch": "main", "commit": "655133c3b4c3e5e05ec549b9f8cc2894ac6f51b3" },
|
||||
"cmp-buffer": { "branch": "main", "commit": "b74fab3656eea9de20a9b8116afa3cfc4ec09657" },
|
||||
"cmp-nvim-lsp": { "branch": "main", "commit": "cbc7b02bb99fae35cb42f514762b89b5126651ef" },
|
||||
"cmp-path": { "branch": "main", "commit": "c642487086dbd9a93160e1679a1327be111cbc25" },
|
||||
"cmp_luasnip": { "branch": "master", "commit": "98d9cb5c2c38532bd9bdb481067b20fea8f32e90" },
|
||||
"editorconfig.nvim": { "branch": "master", "commit": "67758c3e8a2f79019322a60013e4ce0aad09dafa" },
|
||||
"emmet-vim": { "branch": "master", "commit": "92ef2f74f4093edc99db5e9e4cf7e40116a85bd6" },
|
||||
"friendly-snippets": { "branch": "main", "commit": "6cd7280adead7f586db6fccbd15d2cac7e2188b9" },
|
||||
"gitsigns.nvim": { "branch": "main", "commit": "dd3f588bacbeb041be6facf1742e42097f62165d" },
|
||||
"indent-blankline.nvim": { "branch": "master", "commit": "d28a3f70721c79e3c5f6693057ae929f3d9c0a03" },
|
||||
"lazy.nvim": { "branch": "main", "commit": "85c7ff3711b730b4030d03144f6db6375044ae82" },
|
||||
"lir.nvim": { "branch": "master", "commit": "f1291b88d3649743165cfb5d0d44a7722d4021ea" },
|
||||
"lualine.nvim": { "branch": "master", "commit": "131a558e13f9f28b15cd235557150ccb23f89286" },
|
||||
"lunar.nvim": { "branch": "master", "commit": "08bbc93b96ad698d22fc2aa01805786bcedc34b9" },
|
||||
"markdown-preview.nvim": { "branch": "master", "commit": "a923f5fc5ba36a3b17e289dc35dc17f66d0548ee" },
|
||||
"mason-lspconfig.nvim": { "branch": "main", "commit": "a4caa0d083aab56f6cd5acf2d42331b74614a585" },
|
||||
"mason.nvim": { "branch": "main", "commit": "49ff59aded1047a773670651cfa40e76e63c6377" },
|
||||
"neodev.nvim": { "branch": "main", "commit": "ce9a2e8eaba5649b553529c5498acb43a6c317cd" },
|
||||
"nlsp-settings.nvim": { "branch": "main", "commit": "d92035e6c05cded5f1a7458b57506adbf29a5c9c" },
|
||||
"none-ls.nvim": { "branch": "main", "commit": "3a4826687da4310af379515086d71faca4d21288" },
|
||||
"nvim-autopairs": { "branch": "master", "commit": "c15de7e7981f1111642e7e53799e1211d4606cb9" },
|
||||
"nvim-cmp": { "branch": "main", "commit": "5260e5e8ecadaf13e6b82cf867a909f54e15fd07" },
|
||||
"nvim-dap": { "branch": "master", "commit": "5a2f7121869394502521c52b2bc581ab22c69447" },
|
||||
"nvim-dap-ui": { "branch": "master", "commit": "34160a7ce6072ef332f350ae1d4a6a501daf0159" },
|
||||
"nvim-lspconfig": { "branch": "master", "commit": "eadcee1573ca9d0e0cd36a49f620186a8dfdc607" },
|
||||
"nvim-navic": { "branch": "master", "commit": "8649f694d3e76ee10c19255dece6411c29206a54" },
|
||||
"nvim-surround": { "branch": "main", "commit": "ec2dc7671067e0086cdf29c2f5df2dd909d5f71f" },
|
||||
"nvim-tree.lua": { "branch": "master", "commit": "2bc725a3ebc23f0172fb0ab4d1134b81bcc13812" },
|
||||
"nvim-treesitter": { "branch": "master", "commit": "30de5e7e9486fb1b1b8c2a1e71052b13f94f1cb0" },
|
||||
"nvim-ts-context-commentstring": { "branch": "main", "commit": "cb064386e667def1d241317deed9fd1b38f0dc2e" },
|
||||
"nvim-web-devicons": { "branch": "master", "commit": "e37bb1feee9e7320c76050a55443fa843b4b6f83" },
|
||||
"mason-lspconfig.nvim": { "branch": "main", "commit": "7b01e2974a47d489bb92f47a41e4c0088ea8f86e" },
|
||||
"mason.nvim": { "branch": "main", "commit": "cbf8d285e1462dd24acf3507817be2bbcb035919" },
|
||||
"mini.icons": { "branch": "main", "commit": "520995f1d75da0e4cc901ee95080b1ff2bc46b94" },
|
||||
"neodev.nvim": { "branch": "main", "commit": "46aa467dca16cf3dfe27098042402066d2ae242d" },
|
||||
"nlsp-settings.nvim": { "branch": "main", "commit": "1ae83a5be572fd5e8c1547b5c4c582ce1a14c017" },
|
||||
"none-ls.nvim": { "branch": "main", "commit": "f9d557ac7cd28a3a993b5ea49716498bd540b01f" },
|
||||
"nvim-autopairs": { "branch": "master", "commit": "7b9923abad60b903ece7c52940e1321d39eccc79" },
|
||||
"nvim-cmp": { "branch": "main", "commit": "a1d504892f2bc56c2e79b65c6faded2fd21f3eca" },
|
||||
"nvim-dap": { "branch": "master", "commit": "531771530d4f82ad2d21e436e3cc052d68d7aebb" },
|
||||
"nvim-dap-ui": { "branch": "master", "commit": "1a66cabaa4a4da0be107d5eda6d57242f0fe7e49" },
|
||||
"nvim-lspconfig": { "branch": "master", "commit": "deb0df61b2d6691e745b16a42755e10ad38218e9" },
|
||||
"nvim-navic": { "branch": "master", "commit": "f5eba192f39b453675d115351808bd51276d9de5" },
|
||||
"nvim-surround": { "branch": "main", "commit": "8b47db616ef658b8fc27e61db2896aa2f40134de" },
|
||||
"nvim-tree.lua": { "branch": "master", "commit": "07f541fcaa4a5ae019598240362449ab7e9812b3" },
|
||||
"nvim-treesitter": { "branch": "master", "commit": "cf12346a3414fa1b06af75c79faebe7f76df080a" },
|
||||
"nvim-ts-context-commentstring": { "branch": "main", "commit": "6141a40173c6efa98242dc951ed4b6f892c97027" },
|
||||
"nvim-web-devicons": { "branch": "master", "commit": "7d8dad2c837fcdf2e65997e68657c1a21c568074" },
|
||||
"onedarker.nvim": { "branch": "freeze", "commit": "b00dd2189f264c5aeb4cf04c59439655ecd573ec" },
|
||||
"plenary.nvim": { "branch": "master", "commit": "a3e3bc82a3f95c5ed0d7201546d5d2c19b20d683" },
|
||||
"schemastore.nvim": { "branch": "main", "commit": "9a5992a881583d886bfbb46631a09f736f0fae50" },
|
||||
"plenary.nvim": { "branch": "master", "commit": "74b06c6c75e4eeb3108ec01852001636d85a932b" },
|
||||
"schemastore.nvim": { "branch": "main", "commit": "59b4296a733a5b93ce2aee23ee406b6d279183cc" },
|
||||
"structlog.nvim": { "branch": "main", "commit": "45b26a2b1036bb93c0e83f4225e85ab3cee8f476" },
|
||||
"tabular": { "branch": "master", "commit": "12437cd1b53488e24936ec4b091c9324cafee311" },
|
||||
"telescope-fzf-native.nvim": { "branch": "main", "commit": "9ef21b2e6bb6ebeaf349a0781745549bbb870d27" },
|
||||
"telescope.nvim": { "branch": "0.1.x", "commit": "d829aa64059001ee7b2c8c8aa9c4e6df0b17d893" },
|
||||
"toggleterm.nvim": { "branch": "main", "commit": "fee58a0473fd92b28c34f8f724e4918b15ba30a3" },
|
||||
"tokyonight.nvim": { "branch": "main", "commit": "b9b494fa7f7bbf2fe0747b47fa290fb7a4eddcc7" },
|
||||
"vim-fugitive": { "branch": "master", "commit": "d4877e54cef67f5af4f950935b1ade19ed6b7370" },
|
||||
"telescope-fzf-native.nvim": { "branch": "main", "commit": "b25b749b9db64d375d782094e2b9dce53ad53a40" },
|
||||
"telescope.nvim": { "branch": "0.1.x", "commit": "a0bbec21143c7bc5f8bb02e0005fa0b982edc026" },
|
||||
"toggleterm.nvim": { "branch": "main", "commit": "9a88eae817ef395952e08650b3283726786fb5fb" },
|
||||
"tokyonight.nvim": { "branch": "main", "commit": "cdc07ac78467a233fd62c493de29a17e0cf2b2b6" },
|
||||
"vim-fugitive": { "branch": "master", "commit": "3b753cf8c6a4dcde6edee8827d464ba9b8c4a6f0" },
|
||||
"vim-gnupg": { "branch": "main", "commit": "f9b608f29003dfde6450931dc0f495a912973a88" },
|
||||
"vim-illuminate": { "branch": "master", "commit": "5eeb7951fc630682c322e88a9bbdae5c224ff0aa" },
|
||||
"vim-snippets": { "branch": "master", "commit": "f0a3184d9f90b96b044d5914625a25c554d7f301" },
|
||||
"which-key.nvim": { "branch": "main", "commit": "4433e5ec9a507e5097571ed55c02ea9658fb268a" }
|
||||
}
|
||||
"vim-illuminate": { "branch": "master", "commit": "0d1e93684da00ab7c057410fecfc24f434698898" },
|
||||
"vim-snippets": { "branch": "master", "commit": "ededcf7581962ee616cadab360d5966f3307f11a" },
|
||||
"which-key.nvim": { "branch": "main", "commit": "3aab2147e74890957785941f0c1ad87d0a44c15a" }
|
||||
}
|
||||
|
||||
Executable
+17
@@ -0,0 +1,17 @@
|
||||
#!/usr/bin/env bash
|
||||
THIS_DIR=$(dirname $(readlink -f $0))
|
||||
PKG=LazyVim
|
||||
|
||||
nvconf="$THIS_DIR/$PKG"
|
||||
|
||||
if [[ -d $nvconf ]]; then
|
||||
mkdir -p $nvconf/cache
|
||||
if [[ -n "$NO_GUI" ]]; then
|
||||
env XDG_CACHE_DIR=$nvconf/cache XDG_CACHE_HOME=$nvconf/cache XDG_DATA_HOME=$nvconf/share XDG_CONFIG_HOME=$nvconf nvim $@
|
||||
else
|
||||
exec -a "Lazyvim" alacritty -e env XDG_CACHE_DIR=$nvconf/cache XDG_CACHE_HOME=$nvconf/cache XDG_DATA_HOME=$nvconf/share XDG_CONFIG_HOME=$nvconf nvim $@ &
|
||||
fi
|
||||
else
|
||||
echo "invalid \$PKG. Available values:"
|
||||
ls `dirname $nvconf`
|
||||
fi
|
||||
@@ -3,10 +3,17 @@ THIS_DIR=$(dirname $(readlink -f $0))
|
||||
|
||||
nvconf="$THIS_DIR/$PKG"
|
||||
|
||||
if [[ -d $nvconf ]]; then
|
||||
mkdir -p $nvconf/cache
|
||||
env XDG_CACHE_DIR=$nvconf/cache XDG_CACHE_HOME=$nvconf/cache XDG_DATA_HOME=$nvconf/share XDG_CONFIG_HOME=$nvconf nvim $@
|
||||
else
|
||||
if [[ ! -d $nvconf ]]; then
|
||||
echo "invalid \$PKG. Available values:"
|
||||
ls `dirname $nvconf`
|
||||
exit
|
||||
fi
|
||||
|
||||
|
||||
mkdir -p $nvconf/cache
|
||||
|
||||
if [ -z "$GUITERM" ]; then
|
||||
env XDG_CACHE_DIR=$nvconf/cache XDG_CACHE_HOME=$nvconf/cache XDG_DATA_HOME=$nvconf/share XDG_CONFIG_HOME=$nvconf nvim $@
|
||||
else
|
||||
$GUITERM -e env XDG_CACHE_DIR=$nvconf/cache XDG_CACHE_HOME=$nvconf/cache XDG_DATA_HOME=$nvconf/share XDG_CONFIG_HOME=$nvconf nvim $@
|
||||
fi
|
||||
|
||||
-20
@@ -1,20 +0,0 @@
|
||||
import QtQuick 2.2
|
||||
import org.kde.plasma.configuration 2.0
|
||||
|
||||
ConfigModel {
|
||||
ConfigCategory {
|
||||
name: i18nc("Config header", "General")
|
||||
icon: 'preferences-desktop-plasma'
|
||||
source: 'config/ConfigGeneral.qml'
|
||||
}
|
||||
ConfigCategory {
|
||||
name: i18nc("Config header", "Data")
|
||||
icon: 'preferences-desktop'
|
||||
source: 'config/ConfigData.qml'
|
||||
}
|
||||
ConfigCategory {
|
||||
name: i18nc("Config header", "Appearance")
|
||||
icon: 'preferences-desktop-color'
|
||||
source: 'config/ConfigAppearance.qml'
|
||||
}
|
||||
}
|
||||
-220
@@ -1,220 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<kcfg xmlns="http://www.kde.org/standards/kcfg/1.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://www.kde.org/standards/kcfg/1.0 http://www.kde.org/standards/kcfg/1.0/kcfg.xsd">
|
||||
<kcfgfile name="" />
|
||||
|
||||
<group name="General">
|
||||
<entry name="updateInterval" type="Double">
|
||||
<default>1.0</default>
|
||||
</entry>
|
||||
|
||||
<entry name="actionService" type="String">
|
||||
<default>org.kde.plasma-systemmonitor</default>
|
||||
</entry>
|
||||
|
||||
<entry name="showCpuMonitor" type="Bool">
|
||||
<default>true</default>
|
||||
</entry>
|
||||
<entry name="cpuUnit" type="String">
|
||||
<default>usage</default>
|
||||
</entry>
|
||||
<entry name="showClock" type="Bool">
|
||||
<default>true</default>
|
||||
</entry>
|
||||
<entry name="clockAgregator" type="String">
|
||||
<default>average</default>
|
||||
</entry>
|
||||
<entry name="showCpuTemperature" type="Bool">
|
||||
<default>false</default>
|
||||
</entry>
|
||||
|
||||
<entry name="showRamMonitor" type="Bool">
|
||||
<default>true</default>
|
||||
</entry>
|
||||
<entry name="memoryUnit" type="String">
|
||||
<default>physical</default>
|
||||
</entry>
|
||||
<entry name="memorySwapGraph" type="Bool">
|
||||
<default>true</default>
|
||||
</entry>
|
||||
|
||||
<entry name="showNetMonitor" type="Bool">
|
||||
<default>false</default>
|
||||
</entry>
|
||||
<entry name="networkUnit" type="String">
|
||||
<default>kibibyte</default>
|
||||
</entry>
|
||||
|
||||
<entry name="showGpuMonitor" type="Bool">
|
||||
<default>false</default>
|
||||
</entry>
|
||||
<entry name="gpuMemoryInPercent" type="Bool">
|
||||
<default>false</default>
|
||||
</entry>
|
||||
<entry name="gpuMemoryGraph" type="Bool">
|
||||
<default>true</default>
|
||||
</entry>
|
||||
<entry name="showGpuTemperature" type="Bool">
|
||||
<default>false</default>
|
||||
</entry>
|
||||
|
||||
<entry name="showDiskMonitor" type="Bool">
|
||||
<default>false</default>
|
||||
</entry>
|
||||
</group>
|
||||
|
||||
<group name="Data">
|
||||
<entry name="ignoredNetworkInterfaces" type="StringList">
|
||||
</entry>
|
||||
<entry name="networkReceivingTotal" type="Double">
|
||||
<default>100000.0</default>
|
||||
</entry>
|
||||
<entry name="networkSendingTotal" type="Double">
|
||||
<default>100000.0</default>
|
||||
</entry>
|
||||
|
||||
<entry name="diskReadTotal" type="Double">
|
||||
<default>200000.0</default>
|
||||
</entry>
|
||||
<entry name="diskWriteTotal" type="Double">
|
||||
<default>200000.0</default>
|
||||
</entry>
|
||||
|
||||
<entry name="gpuIndex" type="String">
|
||||
<default>gpu0</default>
|
||||
</entry>
|
||||
|
||||
<entry name="thresholdWarningCpuTemp" type="Double">
|
||||
<default>85.0</default>
|
||||
</entry>
|
||||
<entry name="thresholdCriticalCpuTemp" type="Double">
|
||||
<default>105.0</default>
|
||||
</entry>
|
||||
<entry name="thresholdWarningMemory" type="Int">
|
||||
<default>70</default>
|
||||
</entry>
|
||||
<entry name="thresholdCriticalMemory" type="Int">
|
||||
<default>90</default>
|
||||
</entry>
|
||||
<entry name="thresholdWarningGpuTemp" type="Int">
|
||||
<default>75</default>
|
||||
</entry>
|
||||
<entry name="thresholdCriticalGpuTemp" type="Int">
|
||||
<default>85</default>
|
||||
</entry>
|
||||
</group>
|
||||
|
||||
<group name="Appearance">
|
||||
<entry name="verticalLayout" type="Bool">
|
||||
<default>false</default>
|
||||
</entry>
|
||||
<entry name="historyAmount" type="Int">
|
||||
<default>10</default>
|
||||
</entry>
|
||||
<entry name="enableShadows" type="Bool">
|
||||
<default>true</default>
|
||||
</entry>
|
||||
<entry name="fontScale" type="Int">
|
||||
<default>26</default>
|
||||
</entry>
|
||||
<entry name="customGraphWidth" type="Bool">
|
||||
<default>false</default>
|
||||
</entry>
|
||||
<entry name="graphWidth" type="Int">
|
||||
</entry>
|
||||
<entry name="customGraphHeight" type="Bool">
|
||||
<default>false</default>
|
||||
</entry>
|
||||
<entry name="graphHeight" type="Int">
|
||||
</entry>
|
||||
<entry name="graphMargin" type="Int">
|
||||
<default>10</default>
|
||||
</entry>
|
||||
<entry name="graphFillOpacity" type="Int">
|
||||
<default>25</default>
|
||||
</entry>
|
||||
<entry name="displayment" type="String">
|
||||
<default>hover-hints</default>
|
||||
</entry>
|
||||
<entry name="placement" type="String">
|
||||
<default>top-right</default>
|
||||
</entry>
|
||||
|
||||
<entry name="graphOrders" type="StringList">
|
||||
<default>cpu,memory,gpu,disks,network</default>
|
||||
</entry>
|
||||
|
||||
<entry name="customCpuColor" type="Bool">
|
||||
<default>false</default>
|
||||
</entry>
|
||||
<entry name="cpuColor" type="Color">
|
||||
</entry>
|
||||
<entry name="customCpuTemperatureColor" type="Bool">
|
||||
<default>false</default>
|
||||
</entry>
|
||||
<entry name="cpuTemperatureColor" type="Color">
|
||||
</entry>
|
||||
|
||||
<entry name="customRamColor" type="Bool">
|
||||
<default>false</default>
|
||||
</entry>
|
||||
<entry name="ramColor" type="Color">
|
||||
</entry>
|
||||
<entry name="customSwapColor" type="Bool">
|
||||
<default>false</default>
|
||||
</entry>
|
||||
<entry name="swapColor" type="Color">
|
||||
</entry>
|
||||
|
||||
<entry name="customNetDownColor" type="Bool">
|
||||
<default>false</default>
|
||||
</entry>
|
||||
<entry name="netDownColor" type="Color">
|
||||
</entry>
|
||||
<entry name="customNetUpColor" type="Bool">
|
||||
<default>false</default>
|
||||
</entry>
|
||||
<entry name="netUpColor" type="Color">
|
||||
</entry>
|
||||
|
||||
<entry name="customGpuColor" type="Bool">
|
||||
<default>false</default>
|
||||
</entry>
|
||||
<entry name="gpuColor" type="Color">
|
||||
</entry>
|
||||
<entry name="customGpuMemoryColor" type="Bool">
|
||||
<default>false</default>
|
||||
</entry>
|
||||
<entry name="gpuMemoryColor" type="Color">
|
||||
</entry>
|
||||
<entry name="customGpuTemperatureColor" type="Bool">
|
||||
<default>false</default>
|
||||
</entry>
|
||||
<entry name="gpuTemperatureColor" type="Color">
|
||||
</entry>
|
||||
|
||||
<entry name="customDiskReadColor" type="Bool">
|
||||
<default>false</default>
|
||||
</entry>
|
||||
<entry name="diskReadColor" type="Color">
|
||||
</entry>
|
||||
<entry name="customDiskWriteColor" type="Bool">
|
||||
<default>false</default>
|
||||
</entry>
|
||||
<entry name="diskWriteColor" type="Color">
|
||||
</entry>
|
||||
|
||||
<entry name="customWarningColor" type="Bool">
|
||||
<default>false</default>
|
||||
</entry>
|
||||
<entry name="warningColor" type="Color">
|
||||
</entry>
|
||||
<entry name="customCriticalColor" type="Bool">
|
||||
<default>false</default>
|
||||
</entry>
|
||||
<entry name="criticalColor" type="Color">
|
||||
</entry>
|
||||
</group>
|
||||
|
||||
</kcfg>
|
||||
BIN
Binary file not shown.
BIN
Binary file not shown.
-38
@@ -1,38 +0,0 @@
|
||||
import QtQuick 2.0
|
||||
import QtQuick.Controls 2.12 as QtControls
|
||||
import QtQuick.Layouts 1.1 as QtLayouts
|
||||
import org.kde.plasma.core 2.0 as PlasmaCore
|
||||
import org.kde.plasma.components 2.0 as PlasmaComponents
|
||||
import org.kde.kirigami 2.6 as Kirigami
|
||||
|
||||
MouseArea {
|
||||
id: root
|
||||
height: childrenRect.height
|
||||
|
||||
hoverEnabled: true
|
||||
cursorShape: Qt.PointingHandCursor
|
||||
|
||||
property string serviceName: ""
|
||||
property string name: ""
|
||||
property string comment: ""
|
||||
property string iconName: ""
|
||||
property bool selected: false
|
||||
|
||||
QtLayouts.RowLayout {
|
||||
spacing: Kirigami.Units.smallSpacing
|
||||
|
||||
QtControls.ToolTip.text: (comment !== "" ? comment + "\n\n" : "") + "ID: " + serviceName + ".desktop"
|
||||
QtControls.ToolTip.visible: root.containsMouse
|
||||
|
||||
PlasmaCore.IconItem {
|
||||
id: icon
|
||||
|
||||
source: iconName
|
||||
implicitHeight: 16
|
||||
implicitWidth: 16
|
||||
}
|
||||
PlasmaComponents.Label {
|
||||
text: selected ? "<strong>" + name + "</strong>" : name
|
||||
}
|
||||
}
|
||||
}
|
||||
-31
@@ -1,31 +0,0 @@
|
||||
import QtQuick 2.0
|
||||
import org.kde.plasma.core 2.1 as PlasmaCore
|
||||
|
||||
PlasmaCore.SortFilterModel {
|
||||
id: appsDetector
|
||||
|
||||
sourceModel: PlasmaCore.DataModel {
|
||||
dataSource: source
|
||||
}
|
||||
|
||||
filterRole: "name"
|
||||
sortColumn: 0
|
||||
sortRole: "name"
|
||||
sortOrder: Qt.AscendingOrder
|
||||
|
||||
property var _dataSource: PlasmaCore.DataSource {
|
||||
id: source
|
||||
engine: "apps"
|
||||
connectedSources: {
|
||||
// Explude folder
|
||||
var result = [];
|
||||
for (var i = 0; i < sources.length; i++) {
|
||||
if (sources[i].indexOf(".desktop") !== -1) {
|
||||
result.push(sources[i]);
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
interval: 0
|
||||
}
|
||||
}
|
||||
-73
@@ -1,73 +0,0 @@
|
||||
import QtQuick 2.0
|
||||
import org.kde.kitemmodels 1.0 as KItemModels
|
||||
import org.kde.ksysguard.sensors 1.0 as Sensors
|
||||
|
||||
KItemModels.KSortFilterProxyModel {
|
||||
id: detector
|
||||
|
||||
property var model: []
|
||||
property var _privateModel: ListModel {
|
||||
}
|
||||
|
||||
signal ready
|
||||
|
||||
// Find all gpus
|
||||
sourceModel: KItemModels.KDescendantsProxyModel {
|
||||
model: Sensors.SensorTreeModel {
|
||||
}
|
||||
}
|
||||
|
||||
property var _regex: /gpu\/(gpu\d)\/name/
|
||||
property var _tmpSensors: []
|
||||
filterRowCallback: function (row, parent) {
|
||||
const sensorId = sourceModel.data(sourceModel.index(row, 0), Sensors.SensorTreeModel.SensorId);
|
||||
const found = sensorId.match(_regex);
|
||||
if (found && _tmpSensors.findIndex(item => item === sensorId) === -1) {
|
||||
_tmpSensors.push(sensorId);
|
||||
_privateModel.append({
|
||||
"index": found[1],
|
||||
"name": ""
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
// Find name of GPU
|
||||
property var _nameRegex: /.*\[(.*)\]/
|
||||
property var _sensors: Sensors.SensorDataModel {
|
||||
updateRateLimit: -1
|
||||
property var retrievedData: 0
|
||||
|
||||
onDataChanged: {
|
||||
let name = data(topLeft, Sensors.SensorDataModel.Value);
|
||||
|
||||
// Special case for non NVIDIA graphic card (eg. in AMD the name look like "Navi 21 [Radeon RX 6950 XT]")
|
||||
const found = name.match(_nameRegex);
|
||||
if (found) {
|
||||
if (found[1].startsWith("Radeon")) {
|
||||
name = "AMD ";
|
||||
} else {
|
||||
name = "Intel ";
|
||||
}
|
||||
name += found[1];
|
||||
}
|
||||
_privateModel.setProperty(topLeft.column, "name", name);
|
||||
|
||||
// Stop sensors and update model
|
||||
if (++retrievedData === sensors.length) {
|
||||
enabled = false;
|
||||
detector.model = _privateModel;
|
||||
detector.ready();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
property var _timer: Timer {
|
||||
running: true
|
||||
triggeredOnStart: true
|
||||
|
||||
onTriggered: {
|
||||
running = false;
|
||||
_sensors.sensors = _tmpSensors;
|
||||
}
|
||||
}
|
||||
}
|
||||
-35
@@ -1,35 +0,0 @@
|
||||
import QtQuick 2.0
|
||||
import org.kde.plasma.core 2.0 as PlasmaCore
|
||||
|
||||
QtObject {
|
||||
id: detector
|
||||
|
||||
property var model: []
|
||||
|
||||
property var _dataSource: PlasmaCore.DataSource {
|
||||
id: dataSource
|
||||
engine: "executable"
|
||||
connectedSources: []
|
||||
|
||||
property var excludedInterface: /^(?!lo|bridge|usbus|bond)(.*)$/
|
||||
|
||||
onNewData: {
|
||||
var interfaces = data["stdout"].trim().split('\n');
|
||||
for (var i = 0; i < interfaces.length; i++) {
|
||||
if (excludedInterface.test(interfaces[i])) {
|
||||
_privateModel.append({
|
||||
"name": interfaces[i]
|
||||
});
|
||||
}
|
||||
}
|
||||
detector.model = _privateModel;
|
||||
disconnectSource(sourceName); // cmd finished
|
||||
}
|
||||
|
||||
Component.onCompleted: {
|
||||
connectSource("ip -o link show | awk -F': ' '{print $2}'");
|
||||
}
|
||||
}
|
||||
|
||||
property var _privateModel: ListModel {}
|
||||
}
|
||||
-78
@@ -1,78 +0,0 @@
|
||||
/**
|
||||
* @typedef {object} BinaryUnit
|
||||
* @property {string} name The name
|
||||
* @property {string} suffix The suffix
|
||||
* @property {string} kiloChar The char for "kilo"
|
||||
* @property {number} KiBDiff The difference with `kibibyte`
|
||||
* @property {number} multiplier The multiplier amount (`1000` for metric and `1024` for binary)
|
||||
*/
|
||||
|
||||
/**
|
||||
* Get the binary unit from they name
|
||||
* @param {string} dialect The binary unit name
|
||||
* @returns {BinaryUnit} The binary unit
|
||||
*/
|
||||
function getNetworkDialectInfo(dialect) {
|
||||
switch (dialect) {
|
||||
case "kilobyte":
|
||||
return {
|
||||
name: "kilobyte",
|
||||
suffix: i18nc("kilobyte suffix", "Bps"),
|
||||
kiloChar: "k",
|
||||
KiBDiff: 1.024,
|
||||
multiplier: 1024,
|
||||
};
|
||||
case "kilobit":
|
||||
return {
|
||||
name: "kilobit",
|
||||
suffix: i18nc("kilobit suffix", "bps"),
|
||||
kiloChar: "k",
|
||||
KiBDiff: 8,
|
||||
multiplier: 1024,
|
||||
};
|
||||
default:
|
||||
return {
|
||||
name: "kibibyte",
|
||||
suffix: i18nc("kibibyte suffix", "iB/s"),
|
||||
kiloChar: "K",
|
||||
KiBDiff: 1,
|
||||
multiplier: 1024,
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert value from bytes to the appropriate string representation using the binary unit dialect.
|
||||
*
|
||||
* @param {number} value The value in byte/bit
|
||||
* @param {BinaryUnit} dialect The binary unit standard to use
|
||||
* @param {number} [precision=1] Number of places after the decimal point to use.
|
||||
* @returns Converted value as a translated string including the units.
|
||||
*/
|
||||
function formatByteValue(value, dialect, precision = 1) {
|
||||
if (value === 0 || isNaN(parseInt(value))) {
|
||||
return "0 " + dialect.suffix.replace("i", "");
|
||||
} else if (dialect.name === "kibibyte" && value <= dialect.multiplier) {
|
||||
return "0 " + dialect.suffix.replace("i", "");
|
||||
}
|
||||
|
||||
var sizes = ["", dialect.kiloChar, "M", "G", "T", "P", "Z", "Y"];
|
||||
|
||||
// Search unit conversion
|
||||
var unit = Math.floor(Math.log(value) / Math.log(dialect.multiplier));
|
||||
|
||||
// Bytes/Bits, no rounding
|
||||
precision = precision < 0 ? 0 : precision;
|
||||
if (unit === 0) {
|
||||
precision = 0;
|
||||
}
|
||||
|
||||
return (
|
||||
parseFloat(
|
||||
(value / Math.pow(dialect.multiplier, unit)).toFixed(precision)
|
||||
) +
|
||||
" " +
|
||||
sizes[unit] +
|
||||
dialect.suffix
|
||||
);
|
||||
}
|
||||
-70
@@ -1,70 +0,0 @@
|
||||
import QtQuick 2.9
|
||||
import org.kde.plasma.plasmoid 2.0
|
||||
import "./base" as RMBaseGraph
|
||||
import "../sensors" as RMSensors
|
||||
|
||||
RMBaseGraph.SensorGraph {
|
||||
id: root
|
||||
objectName: "CpuGraph"
|
||||
|
||||
Connections {
|
||||
target: plasmoid.configuration
|
||||
function onCpuUnitChanged() {
|
||||
_updateSensors();
|
||||
}
|
||||
function onClockAgregatorChanged() {
|
||||
if (!manualFrequency.needManual) {
|
||||
_updateSensors();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Config options
|
||||
property color temperatureColor: plasmoid.configuration.customCpuTemperatureColor ? plasmoid.configuration.cpuTemperatureColor : theme.textColor
|
||||
|
||||
// Graph options
|
||||
// NOTE: "sensorsModel.sensors" is set by "_updateSensors"
|
||||
chartColor: plasmoid.configuration.customCpuColor ? plasmoid.configuration.cpuColor : theme.highlightColor
|
||||
|
||||
chart.yRange {
|
||||
from: 0
|
||||
to: 100
|
||||
}
|
||||
|
||||
// Labels options
|
||||
thresholds: [undefined, undefined, [plasmoid.configuration.thresholdWarningCpuTemp, plasmoid.configuration.thresholdCriticalCpuTemp]]
|
||||
|
||||
textContainer {
|
||||
labelColors: [root.chartColor, undefined, temperatureColor]
|
||||
valueColors: [undefined, undefined, temperatureColor]
|
||||
|
||||
labels: ["CPU", (plasmoid.configuration.showClock ? i18nc("Graph label", "Clock") : ""), (plasmoid.configuration.showCpuTemperature ? i18nc("Graph label", "Temp.") : "")]
|
||||
}
|
||||
|
||||
function _updateSensors() {
|
||||
// Manual cpu frequency handle
|
||||
// TODO (3.0): remove this
|
||||
let frequencySensorId = "cpu/all/" + plasmoid.configuration.clockAgregator + "Frequency";
|
||||
if (manualFrequency.needManual) {
|
||||
frequencySensorId = "cpu/cpu0/frequency";
|
||||
}
|
||||
// END Manual cpu frequency handle
|
||||
sensorsModel.sensors = ["cpu/all/" + plasmoid.configuration.cpuUnit, frequencySensorId, "cpu/cpu0/temperature"];
|
||||
}
|
||||
|
||||
// Manual cpu frequency handle
|
||||
// TODO (3.0): remove this
|
||||
_formatValue: (index, data) => {
|
||||
if (index === 1 && manualFrequency.needManual) {
|
||||
return manualFrequency.getFormattedValue();
|
||||
}
|
||||
return _defaultFormatValue(index, data);
|
||||
}
|
||||
|
||||
RMSensors.CpuFrequency {
|
||||
id: manualFrequency
|
||||
agregator: plasmoid.configuration.clockAgregator
|
||||
|
||||
onReady: _updateSensors()
|
||||
}
|
||||
}
|
||||
-38
@@ -1,38 +0,0 @@
|
||||
import QtQuick 2.9
|
||||
import org.kde.plasma.plasmoid 2.0
|
||||
import "./base" as RMBaseGraph
|
||||
import "../functions.js" as Functions
|
||||
|
||||
RMBaseGraph.TwoSensorsGraph {
|
||||
id: root
|
||||
objectName: "DisksGraph"
|
||||
|
||||
readonly property var diskIoDialect: Functions.getNetworkDialectInfo("kibibyte")
|
||||
|
||||
Connections {
|
||||
target: plasmoid.configuration
|
||||
function onDiskReadTotalChanged() {
|
||||
_updateUplimits();
|
||||
}
|
||||
function onDiskWriteTotalChanged() {
|
||||
_updateUplimits();
|
||||
}
|
||||
}
|
||||
Component.onCompleted: {
|
||||
_updateUplimits();
|
||||
}
|
||||
|
||||
// Labels
|
||||
textContainer {
|
||||
labelColors: root.colors
|
||||
labels: [i18nc("Graph label", "Read"), i18nc("Graph label", "Write"), ""]
|
||||
}
|
||||
|
||||
// Graph options
|
||||
sensorsModel.sensors: ["disk/all/read", "disk/all/write"]
|
||||
colors: [(plasmoid.configuration.customDiskReadColor ? plasmoid.configuration.diskReadColor : theme.highlightColor), (plasmoid.configuration.customDiskWriteColor ? plasmoid.configuration.diskWriteColor : theme.positiveTextColor)]
|
||||
|
||||
function _updateUplimits() {
|
||||
uplimits = [plasmoid.configuration.diskReadTotal * diskIoDialect.multiplier, plasmoid.configuration.diskWriteTotal * diskIoDialect.multiplier];
|
||||
}
|
||||
}
|
||||
-85
@@ -1,85 +0,0 @@
|
||||
import QtQuick 2.9
|
||||
import org.kde.plasma.plasmoid 2.0
|
||||
import org.kde.ksysguard.sensors 1.0 as Sensors
|
||||
import "./base" as RMBaseGraph
|
||||
|
||||
RMBaseGraph.TwoSensorsGraph {
|
||||
id: root
|
||||
objectName: "GpuGraph"
|
||||
|
||||
// Config options
|
||||
property color temperatureColor: plasmoid.configuration.customGpuTemperatureColor ? plasmoid.configuration.gpuTemperatureColor : theme.textColor
|
||||
|
||||
// Bind config changes
|
||||
Connections {
|
||||
target: plasmoid.configuration
|
||||
function onGpuMemoryInPercentChanged() {
|
||||
uplimits = [100, plasmoid.configuration.gpuMemoryInPercent ? 100 : maxQueryModel.maxMemory];
|
||||
_clear();
|
||||
}
|
||||
function onGpuIndexChanged() {
|
||||
maxQueryModel.enabled = true
|
||||
}
|
||||
}
|
||||
|
||||
// Labels
|
||||
thresholds: [undefined, undefined, [plasmoid.configuration.thresholdWarningGpuTemp, plasmoid.configuration.thresholdCriticalGpuTemp]]
|
||||
|
||||
textContainer {
|
||||
labelColors: [root.colors[0], root.colors[1], temperatureColor]
|
||||
valueColors: [undefined, undefined, temperatureColor]
|
||||
|
||||
labels: ["GPU", (plasmoid.configuration.gpuMemoryGraph ? "VRAM" : ""), (plasmoid.configuration.showGpuTemperature ? i18nc("Graph label", "Temp.") : "")]
|
||||
}
|
||||
|
||||
// Graph options
|
||||
// NOTE: "sensorsModel.sensors" set from "maxQueryModel"
|
||||
colors: [(plasmoid.configuration.customGpuColor ? plasmoid.configuration.gpuColor : theme.highlightColor), (plasmoid.configuration.customGpuMemoryColor ? plasmoid.configuration.gpuMemoryColor : theme.positiveTextColor)]
|
||||
|
||||
// Override methods, for handle memeory in percent
|
||||
_update: () => {
|
||||
for (let i = 0; i < sensorsModel.sensors.length; i++) {
|
||||
let value = sensorsModel.getInfo(i);
|
||||
if (i === 1 && plasmoid.configuration.gpuMemoryInPercent) {
|
||||
value = (value / maxQueryModel.maxMemory) * 100;
|
||||
}
|
||||
root._insertChartData(i, value);
|
||||
|
||||
// Update label
|
||||
if (textContainer.valueVisible) {
|
||||
_updateData(i);
|
||||
}
|
||||
}
|
||||
}
|
||||
_formatValue: (index, data) => {
|
||||
if (index === 1 && plasmoid.configuration.gpuMemoryInPercent) {
|
||||
return i18nc("Percent unit", "%1%", Math.round((data.value / maxQueryModel.maxMemory) * 1000) / 10); // This is for round to 1 decimal
|
||||
}
|
||||
return _defaultFormatValue(index, data);
|
||||
}
|
||||
|
||||
// Initialize limits and threshold
|
||||
Sensors.SensorDataModel {
|
||||
id: maxQueryModel
|
||||
sensors: ["gpu/" + plasmoid.configuration.gpuIndex + "/totalVram"]
|
||||
enabled: true
|
||||
property int maxMemory: -1
|
||||
|
||||
onDataChanged: {
|
||||
// Update values
|
||||
const valueVar = parseInt(data(topLeft, Sensors.SensorDataModel.Value));
|
||||
if (isNaN(valueVar) || valueVar <= 0) {
|
||||
return;
|
||||
}
|
||||
enabled = false;
|
||||
maxMemory = valueVar;
|
||||
|
||||
// Update graph Y range
|
||||
root.uplimits = [100, plasmoid.configuration.gpuMemoryInPercent ? 100 : maxMemory];
|
||||
|
||||
// Update sensors
|
||||
const gpu = plasmoid.configuration.gpuIndex
|
||||
root.sensorsModel.sensors = ["gpu/" + gpu + "/usage", "gpu/" + gpu + "/usedVram", "gpu/" + gpu + "/temperature"];
|
||||
}
|
||||
}
|
||||
}
|
||||
-101
@@ -1,101 +0,0 @@
|
||||
import QtQuick 2.9
|
||||
import org.kde.plasma.plasmoid 2.0
|
||||
import org.kde.ksysguard.sensors 1.0 as Sensors
|
||||
import "./base" as RMBaseGraph
|
||||
|
||||
RMBaseGraph.TwoSensorsGraph {
|
||||
id: root
|
||||
objectName: "MemoryGraph"
|
||||
|
||||
Connections {
|
||||
target: plasmoid.configuration
|
||||
function onMemoryUnitChanged() { // Values: usage, system, user
|
||||
const oldLimit1 = uplimits[0];
|
||||
if (plasmoid.configuration.memoryUnit.endsWith("-percent")) {
|
||||
uplimits = [100, 100];
|
||||
} else {
|
||||
uplimits = maxQueryModel.maxMemory;
|
||||
}
|
||||
_updateThresholds();
|
||||
_updateSensors();
|
||||
if (oldLimit1 != uplimits[0]) {
|
||||
_clear();
|
||||
}
|
||||
}
|
||||
|
||||
function onMemorySwapGraphChanged() {
|
||||
_updateSensors();
|
||||
}
|
||||
|
||||
function onThresholdWarningMemoryChanged() {
|
||||
_updateThresholds();
|
||||
}
|
||||
function onThresholdCriticalMemoryChanged() {
|
||||
_updateThresholds();
|
||||
}
|
||||
}
|
||||
Component.onCompleted: {
|
||||
_updateThresholds();
|
||||
_updateSensors();
|
||||
}
|
||||
|
||||
// Labels
|
||||
textContainer {
|
||||
labelColors: root.colors
|
||||
valueColors: [undefined, root.colors[1]]
|
||||
labelsVisibleWhenZero: [true, false, true]
|
||||
|
||||
labels: ["RAM", (plasmoid.configuration.memorySwapGraph ? "Swap" : ""), ""]
|
||||
}
|
||||
|
||||
// Graph options
|
||||
// NOTE: "sensorsModel.sensors" is set by "_updateSensors"
|
||||
colors: [(plasmoid.configuration.customRamColor ? plasmoid.configuration.ramColor : theme.highlightColor), (plasmoid.configuration.customSwapColor ? plasmoid.configuration.swapColor : theme.negativeTextColor)]
|
||||
|
||||
// Initialize limits and threshold
|
||||
Sensors.SensorDataModel {
|
||||
id: maxQueryModel
|
||||
sensors: ["memory/physical/total", "memory/swap/total"]
|
||||
enabled: true
|
||||
property var maxMemory: [-1, -1]
|
||||
|
||||
onDataChanged: {
|
||||
// Update values
|
||||
const value = parseInt(data(topLeft, Sensors.SensorDataModel.Value));
|
||||
if (isNaN(value) || (topLeft.column === 0 && value <= 0)) {
|
||||
return;
|
||||
}
|
||||
maxMemory[topLeft.column] = value;
|
||||
|
||||
// Update graph Y range and sensors
|
||||
if (maxMemory[0] > 0 && maxMemory[1] >= 0) {
|
||||
enabled = false;
|
||||
if (!plasmoid.configuration.memoryUnit.endsWith("-percent")) {
|
||||
root.uplimits = maxMemory;
|
||||
}
|
||||
root._updateThresholds();
|
||||
root._updateSensors();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function _updateThresholds() {
|
||||
const thresholdWarningMemory = plasmoid.configuration.thresholdWarningMemory;
|
||||
const thresholdCriticalMemory = plasmoid.configuration.thresholdCriticalMemory;
|
||||
if (!plasmoid.configuration.memoryUnit.endsWith("-percent")) {
|
||||
thresholds[0] = [maxQueryModel.maxMemory[0] * (thresholdWarningMemory / 100.0), maxQueryModel.maxMemory[0] * (thresholdCriticalMemory / 100.0)];
|
||||
} else {
|
||||
thresholds[0] = [thresholdWarningMemory, thresholdCriticalMemory];
|
||||
}
|
||||
}
|
||||
function _updateSensors() {
|
||||
const info = plasmoid.configuration.memoryUnit.split("-");
|
||||
const suffix = info[1] === "percent" ? "Percent" : "";
|
||||
const memSensor = "memory/physical/" + (info[0] === "physical" ? "used" : "application") + suffix;
|
||||
if (plasmoid.configuration.memorySwapGraph) {
|
||||
sensorsModel.sensors = [memSensor, "memory/swap/used" + suffix];
|
||||
} else {
|
||||
sensorsModel.sensors = [memSensor];
|
||||
}
|
||||
}
|
||||
}
|
||||
-113
@@ -1,113 +0,0 @@
|
||||
import QtQuick 2.9
|
||||
import org.kde.plasma.plasmoid 2.0
|
||||
import "./base" as RMBaseGraph
|
||||
import "../" as RMComponents
|
||||
import "../functions.js" as Functions
|
||||
|
||||
RMBaseGraph.TwoSensorsGraph {
|
||||
id: root
|
||||
objectName: "NetworkGraph"
|
||||
|
||||
property var dialect: Functions.getNetworkDialectInfo(plasmoid.configuration.networkUnit)
|
||||
|
||||
Connections {
|
||||
target: plasmoid.configuration
|
||||
function onIgnoredNetworkInterfacesChanged() {
|
||||
_updateSensors();
|
||||
}
|
||||
|
||||
function onNetworkReceivingTotalChanged() {
|
||||
_updateUplimits();
|
||||
}
|
||||
function onNetworkSendingTotalChanged() {
|
||||
_updateUplimits();
|
||||
}
|
||||
}
|
||||
Component.onCompleted: _updateUplimits()
|
||||
|
||||
// Labels
|
||||
textContainer {
|
||||
labelColors: root.colors
|
||||
labels: [i18nc("Graph label", "Receiving"), i18nc("Graph label", "Sending"), ""]
|
||||
}
|
||||
|
||||
// Graph options
|
||||
colors: [(plasmoid.configuration.customNetDownColor ? plasmoid.configuration.netDownColor : theme.highlightColor), (plasmoid.configuration.customNetUpColor ? plasmoid.configuration.netUpColor : theme.positiveTextColor)]
|
||||
|
||||
// Initialized sensors
|
||||
RMComponents.NetworkInterfaceDetector {
|
||||
id: networkInterfaces
|
||||
onModelChanged: _updateSensors()
|
||||
}
|
||||
|
||||
// Override methods, for commulate sensors and support custom dialect
|
||||
property var _downloadValue
|
||||
property var _uploadValue
|
||||
|
||||
_update: () => {
|
||||
// Cummulate sensors by group
|
||||
let data;
|
||||
let downloadValue = 0, uploadValue = 0;
|
||||
for (let i = 0; i < sensorsModel.sensors.length; i++) {
|
||||
data = sensorsModel.getData(i);
|
||||
if (typeof data === "undefined") {
|
||||
continue;
|
||||
} else if (data.sensorId.indexOf('/download') !== -1) {
|
||||
downloadValue += data.value;
|
||||
} else {
|
||||
uploadValue += data.value;
|
||||
}
|
||||
}
|
||||
|
||||
// Fix dialect AND store it for update label
|
||||
_downloadValue = downloadValue *= dialect.KiBDiff;
|
||||
_uploadValue = uploadValue *= dialect.KiBDiff;
|
||||
|
||||
// Insert datas
|
||||
root._insertChartData(0, downloadValue);
|
||||
root._insertChartData(1, uploadValue);
|
||||
|
||||
// Update label
|
||||
if (textContainer.valueVisible) {
|
||||
_updateData(0);
|
||||
_updateData(1);
|
||||
}
|
||||
}
|
||||
|
||||
function _updateData(index) {
|
||||
// Cancel update if first data is not here
|
||||
if (!sensorsModel.hasIndex(0, 0)) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Retrieve label need to update
|
||||
const label = _getLabel(index);
|
||||
if (typeof label === "undefined" || !label.enabled) {
|
||||
return;
|
||||
}
|
||||
const value = index === 0 ? _downloadValue : _uploadValue;
|
||||
|
||||
// Show value on label
|
||||
label.text = Functions.formatByteValue(value, dialect);
|
||||
label.visible = true;
|
||||
}
|
||||
|
||||
function _updateSensors() {
|
||||
if (typeof networkInterfaces.model.count === "undefined") {
|
||||
return;
|
||||
}
|
||||
const sensors = [];
|
||||
for (let i = 0; i < networkInterfaces.model.count; i++) {
|
||||
const name = networkInterfaces.model.get(i).name;
|
||||
if (plasmoid.configuration.ignoredNetworkInterfaces.indexOf(name) === -1) {
|
||||
sensors.push("network/" + name + "/download", "network/" + name + "/upload");
|
||||
}
|
||||
}
|
||||
sensorsModel.sensors = sensors;
|
||||
_clear();
|
||||
}
|
||||
|
||||
function _updateUplimits() {
|
||||
uplimits = [plasmoid.configuration.networkReceivingTotal * dialect.multiplier, plasmoid.configuration.networkSendingTotal * dialect.multiplier];
|
||||
}
|
||||
}
|
||||
-39
@@ -1,39 +0,0 @@
|
||||
import QtQuick 2.9
|
||||
import org.kde.quickcharts 1.0 as Charts
|
||||
|
||||
Charts.ArraySource {
|
||||
property int maximumHistory: -1
|
||||
|
||||
onMaximumHistoryChanged: {
|
||||
if (maximumHistory != -1) {
|
||||
if (array.length === 0) {
|
||||
array = Array(maximumHistory).fill(0);
|
||||
}
|
||||
_update(false);
|
||||
}
|
||||
}
|
||||
|
||||
function clear() {
|
||||
array = maximumHistory === -1 ? [] : Array(maximumHistory).fill(0);
|
||||
// Emit update
|
||||
dataChanged();
|
||||
}
|
||||
function insertValue(value) {
|
||||
array = [value, ...array];
|
||||
_update();
|
||||
}
|
||||
|
||||
function _update() {
|
||||
// Reorder array
|
||||
while (array.length > 0 && array.length > maximumHistory) {
|
||||
array = array.slice(0, -1);
|
||||
}
|
||||
|
||||
// Emit update
|
||||
dataChanged();
|
||||
}
|
||||
|
||||
Component.onCompleted: {
|
||||
array = maximumHistory === -1 ? [] : Array(maximumHistory).fill(0);
|
||||
}
|
||||
}
|
||||
-164
@@ -1,164 +0,0 @@
|
||||
import QtQuick 2.9
|
||||
import org.kde.plasma.plasmoid 2.0
|
||||
import org.kde.plasma.components 2.0 as PlasmaComponents
|
||||
import org.kde.ksysguard.sensors 1.0 as Sensors
|
||||
import org.kde.ksysguard.formatter 1.0 as Formatter
|
||||
import "./" as RMBaseGraph
|
||||
|
||||
Item {
|
||||
id: root
|
||||
|
||||
signal chartDataChanged(int index)
|
||||
signal showValueInLabel
|
||||
signal labelChanged(PlasmaComponents.Label label, var value)
|
||||
|
||||
// Aliases
|
||||
readonly property alias textContainer: textContainer
|
||||
readonly property alias sensorsModel: sensorsModel
|
||||
|
||||
// Thresholds properties
|
||||
property var thresholds: [undefined, undefined, undefined]
|
||||
property color thresholdWarningColor: plasmoid.configuration.customWarningColor ? plasmoid.configuration.warningColor : theme.neutralTextColor
|
||||
property color thresholdCriticalColor: plasmoid.configuration.customCriticalColor ? plasmoid.configuration.criticalColor : theme.negativeTextColor
|
||||
|
||||
// Labels
|
||||
RMBaseGraph.GraphText {
|
||||
id: textContainer
|
||||
anchors.fill: parent
|
||||
z: 1
|
||||
|
||||
onShowValueInLabel: {
|
||||
// Update labels
|
||||
for (let i = 0; i < sensorsModel.sensors.length; i++) {
|
||||
_updateData(i);
|
||||
}
|
||||
|
||||
// Emit signal
|
||||
root.showValueInLabel();
|
||||
}
|
||||
}
|
||||
|
||||
// Retrieve data from sensors, and update labels
|
||||
Sensors.SensorDataModel {
|
||||
id: sensorsModel
|
||||
updateRateLimit: -1
|
||||
enabled: root.visible
|
||||
|
||||
/**
|
||||
* Get the data from sensor
|
||||
* @param {number} column The sensors index
|
||||
* @returns The data value, formatted value and sensor id
|
||||
*/
|
||||
function getData(column) {
|
||||
if (!hasIndex(0, column)) {
|
||||
return undefined;
|
||||
}
|
||||
const indexVar = index(0, column);
|
||||
const value = data(indexVar, Sensors.SensorDataModel.Value);
|
||||
const res = {
|
||||
"sensorId": data(indexVar, Sensors.SensorDataModel.SensorId),
|
||||
"value": value
|
||||
};
|
||||
return res;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get info from sensor
|
||||
* @param {number} column The sensor index
|
||||
* @param {number} role The role id
|
||||
* @returns The sensor info
|
||||
*/
|
||||
function getInfo(column, role = Sensors.SensorDataModel.Value) {
|
||||
if (!hasIndex(0, column)) {
|
||||
return 0;
|
||||
}
|
||||
return data(index(0, column), role);
|
||||
}
|
||||
}
|
||||
|
||||
Connections {
|
||||
target: root
|
||||
|
||||
/**
|
||||
* Re assign sensorsModel.sensors when enable visibility for right initialize it.
|
||||
* This is due to an issue when set sensors and model is disabled, the sensors is never initialized
|
||||
* Bug reported at : https://bugs.kde.org/show_bug.cgi?id=469234
|
||||
*/
|
||||
function onVisibleChanged() {
|
||||
if (!root.visible) {
|
||||
return;
|
||||
}
|
||||
const sensors = sensorsModel.sensors;
|
||||
sensorsModel.sensors = [];
|
||||
sensorsModel.sensors = sensors;
|
||||
}
|
||||
}
|
||||
|
||||
// Process functions
|
||||
property var _insertChartData: (column, value) => {} // NOTE: this is implemented by children
|
||||
property var _clear: () => {
|
||||
for (let i = 0; i < sensorsModel.sensors.length; i++) {
|
||||
_updateData(i);
|
||||
}
|
||||
}
|
||||
property var _update: () => {
|
||||
for (let i = 0; i < sensorsModel.sensors.length; i++) {
|
||||
root._insertChartData(i, sensorsModel.getInfo(i));
|
||||
|
||||
// Update label
|
||||
if (textContainer.valueVisible) {
|
||||
_updateData(i);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function _getLabel(index) {
|
||||
if (index === 0) {
|
||||
return textContainer.firstLineLabel;
|
||||
} else if (index === 1) {
|
||||
return textContainer.secondLineLabel;
|
||||
} else if (index === 2) {
|
||||
return textContainer.thirdLineLabel;
|
||||
}
|
||||
return undefined;
|
||||
}
|
||||
|
||||
function _updateData(index) {
|
||||
// Retrieve label need to update
|
||||
const label = _getLabel(index);
|
||||
if (typeof label === "undefined" || !label.enabled) {
|
||||
return;
|
||||
}
|
||||
const data = sensorsModel.getData(index);
|
||||
if (typeof data === 'undefined') {
|
||||
return;
|
||||
}
|
||||
|
||||
// Hide can't be zero label
|
||||
if (!textContainer.labelsVisibleWhenZero[index] && data.value === 0) {
|
||||
label.text = '';
|
||||
label.visible = false;
|
||||
} else {
|
||||
// Handle threshold value
|
||||
if (typeof thresholds[index] !== 'undefined') {
|
||||
if (data.value >= thresholds[index][1]) {
|
||||
label.color = thresholdCriticalColor;
|
||||
} else if (data.value >= thresholds[index][0]) {
|
||||
label.color = thresholdWarningColor;
|
||||
} else {
|
||||
label.color = textContainer.getTextColor(index);
|
||||
}
|
||||
}
|
||||
|
||||
// Show value on label
|
||||
label.text = _formatValue(index, data);
|
||||
label.visible = label.enabled;
|
||||
}
|
||||
labelChanged(label, data);
|
||||
}
|
||||
|
||||
property var _formatValue: _defaultFormatValue
|
||||
function _defaultFormatValue(index, data) {
|
||||
return Formatter.Formatter.formatValueShowNull(data.value, sensorsModel.getInfo(index, Sensors.SensorDataModel.Unit));
|
||||
}
|
||||
}
|
||||
-257
@@ -1,257 +0,0 @@
|
||||
import QtQuick 2.9
|
||||
import QtGraphicalEffects 1.0
|
||||
import org.kde.plasma.plasmoid 2.0
|
||||
import org.kde.plasma.components 2.0 as PlasmaComponents
|
||||
|
||||
Item {
|
||||
id: graphText
|
||||
|
||||
signal showValueInLabel
|
||||
|
||||
property bool valueVisible: false
|
||||
|
||||
// Aliases
|
||||
readonly property alias firstLineLabel: firstLineLabel
|
||||
readonly property alias secondLineLabel: secondLineLabel
|
||||
readonly property alias thirdLineLabel: thirdLineLabel
|
||||
|
||||
// Text properties
|
||||
property var labels: ["", "", ""]
|
||||
property var valueColors: [theme.textColor, theme.textColor, theme.textColor]
|
||||
property var labelColors: [theme.highlightColor, theme.textColor, theme.textColor]
|
||||
|
||||
property var labelsVisibleWhenZero: [true, true, true]
|
||||
|
||||
// Config aliases
|
||||
property string displayment: plasmoid.configuration.displayment // Values: always, hover, hover-hints
|
||||
|
||||
// Bind config changes
|
||||
onDisplaymentChanged: {
|
||||
if (displayment === 'hover') {
|
||||
valueVisible = mouseArea.containsMouse;
|
||||
_setLabelsState(valueVisible);
|
||||
if (mouseArea.containsMouse) {
|
||||
showValueInLabel();
|
||||
}
|
||||
} else {
|
||||
_setLabelsState(true);
|
||||
showValueInLabel();
|
||||
valueVisible = true;
|
||||
}
|
||||
}
|
||||
|
||||
// Bind properties changes
|
||||
onLabelsChanged: {
|
||||
firstLineLabel.enabled = firstLineLabel.visible = labels[0] != "";
|
||||
secondLineLabel.enabled = secondLineLabel.visible = labels[1] != "";
|
||||
thirdLineLabel.enabled = thirdLineLabel.visible = labels[2] != "";
|
||||
}
|
||||
|
||||
// Labels
|
||||
Flow {
|
||||
id: textContainer
|
||||
width: parent.width
|
||||
state: plasmoid.configuration.placement // Values: top-right, top-left, bottom-right, bottom-left
|
||||
spacing: -2
|
||||
flow: Flow.TopToBottom
|
||||
|
||||
// First line
|
||||
PlasmaComponents.Label {
|
||||
id: firstLineLabel
|
||||
width: parent.width
|
||||
height: contentHeight
|
||||
readonly property int index: 0
|
||||
|
||||
text: "..."
|
||||
color: getTextColor(index)
|
||||
font.pointSize: -1
|
||||
}
|
||||
PlasmaComponents.Label {
|
||||
id: secondLineLabel
|
||||
width: parent.width
|
||||
height: contentHeight
|
||||
readonly property int index: 1
|
||||
|
||||
text: "..."
|
||||
color: getTextColor(index)
|
||||
font.pointSize: -1
|
||||
}
|
||||
PlasmaComponents.Label {
|
||||
id: thirdLineLabel
|
||||
width: parent.width
|
||||
height: contentHeight
|
||||
readonly property int index: 2
|
||||
|
||||
text: "..."
|
||||
color: getTextColor(index)
|
||||
font.pointSize: -1
|
||||
}
|
||||
|
||||
// States
|
||||
states: [
|
||||
State {
|
||||
name: 'top-left'
|
||||
AnchorChanges {
|
||||
target: textContainer
|
||||
anchors.top: parent.top
|
||||
}
|
||||
|
||||
PropertyChanges {
|
||||
target: firstLineLabel
|
||||
horizontalAlignment: Text.AlignLeft
|
||||
}
|
||||
PropertyChanges {
|
||||
target: secondLineLabel
|
||||
horizontalAlignment: Text.AlignLeft
|
||||
}
|
||||
PropertyChanges {
|
||||
target: thirdLineLabel
|
||||
horizontalAlignment: Text.AlignLeft
|
||||
}
|
||||
},
|
||||
State {
|
||||
name: 'top-right'
|
||||
AnchorChanges {
|
||||
target: textContainer
|
||||
anchors.top: parent.top
|
||||
}
|
||||
|
||||
PropertyChanges {
|
||||
target: firstLineLabel
|
||||
horizontalAlignment: Text.AlignRight
|
||||
}
|
||||
PropertyChanges {
|
||||
target: secondLineLabel
|
||||
horizontalAlignment: Text.AlignRight
|
||||
}
|
||||
PropertyChanges {
|
||||
target: thirdLineLabel
|
||||
horizontalAlignment: Text.AlignRight
|
||||
}
|
||||
},
|
||||
State {
|
||||
name: 'bottom-left'
|
||||
AnchorChanges {
|
||||
target: textContainer
|
||||
anchors.bottom: parent.bottom
|
||||
}
|
||||
|
||||
PropertyChanges {
|
||||
target: firstLineLabel
|
||||
horizontalAlignment: Text.AlignLeft
|
||||
}
|
||||
PropertyChanges {
|
||||
target: secondLineLabel
|
||||
horizontalAlignment: Text.AlignLeft
|
||||
}
|
||||
PropertyChanges {
|
||||
target: thirdLineLabel
|
||||
horizontalAlignment: Text.AlignLeft
|
||||
}
|
||||
},
|
||||
State {
|
||||
name: 'bottom-right'
|
||||
AnchorChanges {
|
||||
target: textContainer
|
||||
anchors.bottom: parent.bottom
|
||||
}
|
||||
|
||||
PropertyChanges {
|
||||
target: firstLineLabel
|
||||
horizontalAlignment: Text.AlignRight
|
||||
}
|
||||
PropertyChanges {
|
||||
target: secondLineLabel
|
||||
horizontalAlignment: Text.AlignRight
|
||||
}
|
||||
PropertyChanges {
|
||||
target: thirdLineLabel
|
||||
horizontalAlignment: Text.AlignRight
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
DropShadow {
|
||||
visible: plasmoid.configuration.enableShadows
|
||||
anchors.fill: textContainer
|
||||
radius: 1
|
||||
spread: 1
|
||||
fast: true
|
||||
color: theme.backgroundColor
|
||||
source: textContainer
|
||||
}
|
||||
|
||||
// Action
|
||||
MouseArea {
|
||||
id: mouseArea
|
||||
anchors.fill: parent
|
||||
acceptedButtons: Qt.NoButton
|
||||
hoverEnabled: displayment !== 'always'
|
||||
|
||||
property bool _firstHover: true
|
||||
property var _oldLabelsState: []
|
||||
function _saveOldLabelsState() {
|
||||
_oldLabelsState = [[firstLineLabel.text + "", !!firstLineLabel.visible], [secondLineLabel.text + "", !!secondLineLabel.visible], [thirdLineLabel.text + "", !!thirdLineLabel.visible]];
|
||||
}
|
||||
|
||||
onEntered: {
|
||||
if (displayment === 'hover-hints') {
|
||||
valueVisible = false;
|
||||
_saveOldLabelsState();
|
||||
_setLabelsState(true);
|
||||
|
||||
// Show label hints
|
||||
_setTextAndColor(firstLineLabel, labels[firstLineLabel.index], true);
|
||||
_setTextAndColor(secondLineLabel, labels[secondLineLabel.index], true);
|
||||
_setTextAndColor(thirdLineLabel, labels[thirdLineLabel.index], true);
|
||||
} else if (displayment === 'hover') {
|
||||
_setLabelsState(true);
|
||||
showValueInLabel();
|
||||
valueVisible = true;
|
||||
}
|
||||
}
|
||||
|
||||
onExited: {
|
||||
if (displayment === 'hover-hints') {
|
||||
// Recover old state
|
||||
_setTextAndColor(firstLineLabel, _oldLabelsState[firstLineLabel.index][0]);
|
||||
firstLineLabel.visible = _oldLabelsState[firstLineLabel.index][1];
|
||||
_setTextAndColor(secondLineLabel, _oldLabelsState[secondLineLabel.index][0]);
|
||||
secondLineLabel.visible = _oldLabelsState[secondLineLabel.index][1];
|
||||
_setTextAndColor(thirdLineLabel, _oldLabelsState[thirdLineLabel.index][0]);
|
||||
thirdLineLabel.visible = _oldLabelsState[thirdLineLabel.index][1];
|
||||
|
||||
// Update value
|
||||
showValueInLabel();
|
||||
valueVisible = true;
|
||||
} else if (displayment === 'hover') {
|
||||
valueVisible = false;
|
||||
_setLabelsState(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function getTextColor(index, isLabel = false) {
|
||||
if (isLabel) {
|
||||
return labelColors[index] || theme.textColor;
|
||||
}
|
||||
return valueColors[index] || theme.textColor;
|
||||
}
|
||||
function _setLabelsState(state) {
|
||||
if (state) {
|
||||
firstLineLabel.visible = firstLineLabel.enabled;
|
||||
secondLineLabel.visible = secondLineLabel.enabled;
|
||||
thirdLineLabel.visible = thirdLineLabel.enabled;
|
||||
} else {
|
||||
firstLineLabel.visible = secondLineLabel.visible = thirdLineLabel.visible = false;
|
||||
}
|
||||
}
|
||||
function _setTextAndColor(label, value, isLabel = false) {
|
||||
if (!label.enabled) {
|
||||
return;
|
||||
}
|
||||
label.text = value;
|
||||
label.color = getTextColor(label.index, isLabel);
|
||||
}
|
||||
}
|
||||
-47
@@ -1,47 +0,0 @@
|
||||
import org.kde.plasma.plasmoid 2.0
|
||||
import org.kde.quickcharts 1.0 as Charts
|
||||
import "./" as RMBaseGraph
|
||||
|
||||
RMBaseGraph.BaseSensorGraph {
|
||||
id: root
|
||||
|
||||
// Aliases
|
||||
property alias chart: chart
|
||||
|
||||
// Graph properties
|
||||
property color chartColor: theme.highlightColor
|
||||
|
||||
// Graph
|
||||
Charts.LineChart {
|
||||
id: chart
|
||||
anchors.fill: parent
|
||||
|
||||
direction: Charts.XYChart.ZeroAtEnd
|
||||
fillOpacity: plasmoid.configuration.graphFillOpacity / 100
|
||||
smooth: true
|
||||
yRange.automatic: false
|
||||
|
||||
colorSource: Charts.SingleValueSource {
|
||||
value: chartColor
|
||||
}
|
||||
valueSources: [
|
||||
RMBaseGraph.ArrayDataSource {
|
||||
id: chartData
|
||||
maximumHistory: plasmoid.configuration.historyAmount
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
_clear: () => {
|
||||
chartData.clear();
|
||||
for (let i = 0; i < sensorsModel.sensors.length; i++) {
|
||||
_updateData(i);
|
||||
}
|
||||
}
|
||||
_insertChartData: (column, value) => {
|
||||
if (column == 0) {
|
||||
chartData.insertValue(value);
|
||||
root.chartDataChanged(0);
|
||||
}
|
||||
}
|
||||
}
|
||||
-75
@@ -1,75 +0,0 @@
|
||||
import org.kde.plasma.plasmoid 2.0
|
||||
import org.kde.quickcharts 1.0 as Charts
|
||||
import "./" as RMBaseGraph
|
||||
|
||||
RMBaseGraph.BaseSensorGraph {
|
||||
id: root
|
||||
|
||||
property var uplimits: [100, 100]
|
||||
|
||||
// Graph properties
|
||||
property var colors: [theme.highlightColor, theme.textColor]
|
||||
|
||||
// Bind properties changes
|
||||
onUplimitsChanged: {
|
||||
firstChart.yRange.to = uplimits[0];
|
||||
secondChart.yRange.to = uplimits[1];
|
||||
}
|
||||
|
||||
// Graphs
|
||||
Charts.LineChart {
|
||||
id: secondChart
|
||||
anchors.fill: parent
|
||||
|
||||
direction: Charts.XYChart.ZeroAtEnd
|
||||
fillOpacity: plasmoid.configuration.graphFillOpacity / 100
|
||||
smooth: true
|
||||
yRange.automatic: false
|
||||
|
||||
colorSource: Charts.SingleValueSource {
|
||||
value: colors[1]
|
||||
}
|
||||
valueSources: [
|
||||
RMBaseGraph.ArrayDataSource {
|
||||
id: secondChartData
|
||||
maximumHistory: plasmoid.configuration.historyAmount
|
||||
}
|
||||
]
|
||||
}
|
||||
Charts.LineChart {
|
||||
id: firstChart
|
||||
anchors.fill: parent
|
||||
|
||||
direction: Charts.XYChart.ZeroAtEnd
|
||||
fillOpacity: plasmoid.configuration.graphFillOpacity / 100
|
||||
smooth: true
|
||||
yRange.automatic: false
|
||||
|
||||
colorSource: Charts.SingleValueSource {
|
||||
value: colors[0]
|
||||
}
|
||||
valueSources: [
|
||||
RMBaseGraph.ArrayDataSource {
|
||||
id: firstChartData
|
||||
maximumHistory: plasmoid.configuration.historyAmount
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
_clear: () => {
|
||||
firstChartData.clear()
|
||||
secondChartData.clear()
|
||||
for (let i = 0; i < sensorsModel.sensors.length; i++) {
|
||||
_updateData(i);
|
||||
}
|
||||
}
|
||||
_insertChartData: (column, value) => {
|
||||
if (column == 0) {
|
||||
firstChartData.insertValue(value);
|
||||
root.chartDataChanged(0);
|
||||
} else if (column == 1) {
|
||||
secondChartData.insertValue(value);
|
||||
root.chartDataChanged(1);
|
||||
}
|
||||
}
|
||||
}
|
||||
-72
@@ -1,72 +0,0 @@
|
||||
import QtQuick 2.0
|
||||
import org.kde.ksysguard.sensors 1.0 as Sensors
|
||||
import org.kde.ksysguard.formatter 1.0 as Formatter
|
||||
|
||||
// TODO (3.0): remove this
|
||||
Sensors.SensorDataModel {
|
||||
id: root
|
||||
property int _coreCount
|
||||
|
||||
property string agregator: "average" // Possible value: average, minimum, maximum
|
||||
property bool needManual
|
||||
|
||||
signal ready
|
||||
|
||||
function getFormattedValue() {
|
||||
return Formatter.Formatter.formatValueShowNull(getValue(), 302 /* Formatter.Unit.UnitMegaHertz */);
|
||||
}
|
||||
|
||||
function getValue() {
|
||||
let values = [];
|
||||
for (let i = 0; i < _coreCount; i++) {
|
||||
values[i] = data(index(0, i), Sensors.SensorDataModel.Value);
|
||||
}
|
||||
|
||||
// Agregate values
|
||||
if (agregator === "average") {
|
||||
return values.reduce((a, b) => a + b, 0) / _coreCount;
|
||||
} else if (agregator === "minimum") {
|
||||
return Math.min(...values);
|
||||
} else if (agregator === "maximum") {
|
||||
return Math.max(...values);
|
||||
} else {
|
||||
return undefined;
|
||||
}
|
||||
}
|
||||
|
||||
updateRateLimit: -1
|
||||
Component.onCompleted: {
|
||||
sensors = ["cpu/all/coreCount", "cpu/all/" + agregator + "Frequency"];
|
||||
}
|
||||
|
||||
property bool _initialized
|
||||
property Timer _timer: Timer {
|
||||
running: enabled
|
||||
interval: 100 // Wait to be sure all sensors metadata has retrieved
|
||||
|
||||
onTriggered: {
|
||||
/// Prevent running multiple times
|
||||
if (_initialized) {
|
||||
return;
|
||||
}
|
||||
_initialized = true;
|
||||
|
||||
// Do nothing if all frequency is already exist
|
||||
if (hasIndex(0, 1)) {
|
||||
root.enabled = false;
|
||||
root.ready();
|
||||
return;
|
||||
}
|
||||
|
||||
// Fill sensors with all cores
|
||||
_coreCount = data(index(0, 0));
|
||||
const sensors = [];
|
||||
for (let i = 0; i < _coreCount; i++) {
|
||||
sensors[i] = "cpu/cpu" + i + "/frequency";
|
||||
}
|
||||
root.sensors = sensors;
|
||||
root.needManual = true;
|
||||
root.ready();
|
||||
}
|
||||
}
|
||||
}
|
||||
-510
@@ -1,510 +0,0 @@
|
||||
import QtQuick 2.2
|
||||
import QtQuick.Controls 2.12 as QtControls
|
||||
import QtQuick.Layouts 1.15 as QtLayouts
|
||||
import org.kde.kirigami 2.6 as Kirigami
|
||||
import org.kde.plasma.plasmoid 2.0
|
||||
import org.kde.plasma.core 2.0 as PlasmaCore
|
||||
import org.kde.plasma.components 3.0 as PlasmaComponents
|
||||
import org.kde.plasma.extras 2.0 as PlasmaExtras
|
||||
import "../controls" as RMControls
|
||||
import "../components" as RMComponents
|
||||
|
||||
PlasmaExtras.Representation {
|
||||
id: page
|
||||
anchors.fill: parent
|
||||
|
||||
// Chart
|
||||
property alias cfg_verticalLayout: verticalLayout.checked
|
||||
property alias cfg_historyAmount: historyAmount.value
|
||||
property alias cfg_customGraphWidth: graphWidth.customized
|
||||
property alias cfg_graphWidth: graphWidth.value
|
||||
property alias cfg_customGraphHeight: graphHeight.customized
|
||||
property alias cfg_graphHeight: graphHeight.value
|
||||
property alias cfg_graphMargin: graphMargin.value
|
||||
property alias cfg_graphFillOpacity: graphFillOpacity.value
|
||||
property var cfg_graphOrders
|
||||
|
||||
// Text
|
||||
property alias cfg_enableShadows: enableShadows.checked
|
||||
property alias cfg_fontScale: fontScale.value
|
||||
property string cfg_placement
|
||||
property string cfg_displayment
|
||||
|
||||
// Colors
|
||||
// > CPU
|
||||
property alias cfg_customCpuColor: cpuColor.customized
|
||||
property alias cfg_cpuColor: cpuColor.value
|
||||
property alias cfg_customCpuTemperatureColor: cpuTemperatureColor.customized
|
||||
property alias cfg_cpuTemperatureColor: cpuTemperatureColor.value
|
||||
// > Memory
|
||||
property alias cfg_customRamColor: ramColor.customized
|
||||
property alias cfg_ramColor: ramColor.value
|
||||
property alias cfg_customSwapColor: swapColor.customized
|
||||
property alias cfg_swapColor: swapColor.value
|
||||
// > Network
|
||||
property alias cfg_customNetDownColor: netDownColor.customized
|
||||
property alias cfg_netDownColor: netDownColor.value
|
||||
property alias cfg_customNetUpColor: netUpColor.customized
|
||||
property alias cfg_netUpColor: netUpColor.value
|
||||
// > GPU
|
||||
property alias cfg_customGpuColor: gpuColor.customized
|
||||
property alias cfg_gpuColor: gpuColor.value
|
||||
property alias cfg_customGpuMemoryColor: gpuMemoryColor.customized
|
||||
property alias cfg_gpuMemoryColor: gpuMemoryColor.value
|
||||
property alias cfg_customGpuTemperatureColor: gpuTemperatureColor.customized
|
||||
property alias cfg_gpuTemperatureColor: gpuTemperatureColor.value
|
||||
// > Disk
|
||||
property alias cfg_customDiskReadColor: diskReadColor.customized
|
||||
property alias cfg_diskReadColor: diskReadColor.value
|
||||
property alias cfg_customDiskWriteColor: diskWriteColor.customized
|
||||
property alias cfg_diskWriteColor: diskWriteColor.value
|
||||
// > Threshold
|
||||
property alias cfg_customWarningColor: warningColor.customized
|
||||
property alias cfg_warningColor: warningColor.value
|
||||
property alias cfg_customCriticalColor: criticalColor.customized
|
||||
property alias cfg_criticalColor: criticalColor.value
|
||||
|
||||
property color textColor: theme.textColor
|
||||
property color primaryColor: theme.highlightColor
|
||||
property color positiveColor: theme.positiveTextColor
|
||||
property color neutralColor: theme.neutralTextColor
|
||||
property color negativeColor: theme.negativeTextColor
|
||||
|
||||
property var monitors: {
|
||||
"cpu": {
|
||||
"id": "cpu",
|
||||
"name": i18nc("Chart name", "CPU"),
|
||||
"icon": "cpu-symbolic"
|
||||
},
|
||||
"memory": {
|
||||
"id": "memory",
|
||||
"name": i18nc("Chart name", "Memory"),
|
||||
"icon": "memory-symbolic"
|
||||
},
|
||||
"gpu": {
|
||||
"id": "gpu",
|
||||
"name": i18nc("Chart name", "GPU"),
|
||||
"icon": "freon-gpu-temperature-symbolic"
|
||||
},
|
||||
"disks": {
|
||||
"id": "disks",
|
||||
"name": i18nc("Chart name", "Disks I/O"),
|
||||
"icon": "drive-harddisk-symbolic"
|
||||
},
|
||||
"network": {
|
||||
"id": "network",
|
||||
"name": i18nc("Chart name", "Network"),
|
||||
"icon": "network-wired-symbolic"
|
||||
}
|
||||
}
|
||||
|
||||
// Tab bar
|
||||
header: PlasmaExtras.PlasmoidHeading {
|
||||
location: PlasmaExtras.PlasmoidHeading.Location.Header
|
||||
|
||||
PlasmaComponents.TabBar {
|
||||
id: bar
|
||||
|
||||
position: PlasmaComponents.TabBar.Header
|
||||
anchors.fill: parent
|
||||
implicitHeight: contentHeight
|
||||
|
||||
PlasmaComponents.TabButton {
|
||||
icon.name: "office-chart-line-stacked"
|
||||
icon.height: PlasmaCore.Units.iconSizes.smallMedium
|
||||
text: i18nc("Config header", "Charts")
|
||||
}
|
||||
PlasmaComponents.TabButton {
|
||||
icon.name: "dialog-text-and-font"
|
||||
icon.height: PlasmaCore.Units.iconSizes.smallMedium
|
||||
text: i18nc("Config header", "Text")
|
||||
}
|
||||
PlasmaComponents.TabButton {
|
||||
icon.name: "color-select"
|
||||
icon.height: PlasmaCore.Units.iconSizes.smallMedium
|
||||
text: i18nc("Config header", "Colors")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
QtLayouts.StackLayout {
|
||||
id: pageContent
|
||||
anchors.fill: parent
|
||||
currentIndex: bar.currentIndex
|
||||
|
||||
// Charts
|
||||
Kirigami.ScrollablePage {
|
||||
Kirigami.FormLayout {
|
||||
id: graphPage
|
||||
wideMode: true
|
||||
|
||||
QtControls.CheckBox {
|
||||
id: verticalLayout
|
||||
text: i18n("Vertical layout")
|
||||
}
|
||||
|
||||
RMControls.SpinBox {
|
||||
id: historyAmount
|
||||
Kirigami.FormData.label: i18n("History amount:")
|
||||
QtLayouts.Layout.fillWidth: true
|
||||
from: 2
|
||||
}
|
||||
|
||||
RMControls.CustomizableSize {
|
||||
id: graphWidth
|
||||
Kirigami.FormData.label: i18n("Width:")
|
||||
QtLayouts.Layout.fillWidth: true
|
||||
from: 1
|
||||
to: 1000
|
||||
}
|
||||
RMControls.CustomizableSize {
|
||||
id: graphHeight
|
||||
Kirigami.FormData.label: i18n("Height:")
|
||||
QtLayouts.Layout.fillWidth: true
|
||||
from: 1
|
||||
to: 1000
|
||||
}
|
||||
RMControls.SpinBox {
|
||||
id: graphMargin
|
||||
Kirigami.FormData.label: i18n("Margin:")
|
||||
QtLayouts.Layout.fillWidth: true
|
||||
from: 1
|
||||
to: 1000
|
||||
|
||||
textFromValue: function (value, locale) {
|
||||
return valueToText(value, locale) + " px";
|
||||
}
|
||||
}
|
||||
RMControls.SpinBox {
|
||||
id: graphFillOpacity
|
||||
Kirigami.FormData.label: i18n("Fill opacity:")
|
||||
QtLayouts.Layout.fillWidth: true
|
||||
from: 1
|
||||
to: 100
|
||||
|
||||
textFromValue: function (value, locale) {
|
||||
return valueToText(value, locale) + "%";
|
||||
}
|
||||
}
|
||||
|
||||
// order
|
||||
Item {
|
||||
Kirigami.FormData.label: i18n("Charts order")
|
||||
Kirigami.FormData.isSection: true
|
||||
}
|
||||
|
||||
ListView {
|
||||
id: graphsList
|
||||
anchors.left: parent.left
|
||||
anchors.right: parent.right
|
||||
|
||||
clip: true
|
||||
interactive: false
|
||||
|
||||
property int listViewHeight: 0
|
||||
implicitHeight: listViewHeight
|
||||
|
||||
model: ListModel {
|
||||
Component.onCompleted: cfg_graphOrders.map(id => monitors[id]).forEach(item => append(item))
|
||||
|
||||
function toJS() {
|
||||
const result = [];
|
||||
for (let i = 0; i < count; i++) {
|
||||
result.push(get(i));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
delegate: Kirigami.DelegateRecycler {
|
||||
width: graphsList.width
|
||||
sourceComponent: delegateComponent
|
||||
|
||||
Component.onCompleted: {
|
||||
graphsList.listViewHeight += height + 1;
|
||||
}
|
||||
}
|
||||
|
||||
moveDisplaced: Transition {
|
||||
YAnimator {
|
||||
duration: Kirigami.Units.longDuration
|
||||
easing.type: Easing.InOutQuad
|
||||
}
|
||||
}
|
||||
|
||||
Component {
|
||||
id: delegateComponent
|
||||
Kirigami.AbstractListItem {
|
||||
id: listItem
|
||||
|
||||
backgroundColor: theme.headerBackgroundColor
|
||||
separatorVisible: true
|
||||
|
||||
contentItem: QtLayouts.RowLayout {
|
||||
spacing: Kirigami.Units.largeSpacing
|
||||
|
||||
Kirigami.ListItemDragHandle {
|
||||
listView: graphsList
|
||||
listItem: listItem
|
||||
onMoveRequested: graphsList.model.move(oldIndex, newIndex, 1)
|
||||
|
||||
onDropped: {
|
||||
cfg_graphOrders = graphsList.model.toJS().map(item => item.id);
|
||||
}
|
||||
}
|
||||
|
||||
PlasmaCore.IconItem {
|
||||
source: model.icon
|
||||
width: PlasmaCore.Units.iconSizes.smallMedium
|
||||
height: width
|
||||
}
|
||||
PlasmaComponents.Label {
|
||||
text: model.name
|
||||
QtLayouts.Layout.fillWidth: true
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Text
|
||||
Kirigami.ScrollablePage {
|
||||
Kirigami.FormLayout {
|
||||
id: textPage
|
||||
wideMode: true
|
||||
|
||||
QtControls.CheckBox {
|
||||
id: enableShadows
|
||||
text: i18n("Drop shadows")
|
||||
}
|
||||
|
||||
RMControls.SpinBox {
|
||||
id: fontScale
|
||||
Kirigami.FormData.label: i18n("Font scale:")
|
||||
QtLayouts.Layout.fillWidth: true
|
||||
from: 1
|
||||
to: 100
|
||||
|
||||
textFromValue: function (value, locale) {
|
||||
return valueToText(value, locale) + "%";
|
||||
}
|
||||
}
|
||||
|
||||
QtControls.ComboBox {
|
||||
id: displayment
|
||||
Kirigami.FormData.label: i18n("Text displayment:")
|
||||
|
||||
currentIndex: -1
|
||||
textRole: "label"
|
||||
valueRole: "name"
|
||||
model: [{
|
||||
"label": i18nc("Text displayment", "Always"),
|
||||
"name": "always"
|
||||
}, {
|
||||
"label": i18nc("Text displayment", "On hover"),
|
||||
"name": "hover"
|
||||
}, {
|
||||
"label": i18nc("Text displayment", "Hints when hover"),
|
||||
"name": "hover-hints"
|
||||
}]
|
||||
|
||||
onActivated: cfg_displayment = currentValue
|
||||
Component.onCompleted: currentIndex = indexOfValue(cfg_displayment)
|
||||
}
|
||||
|
||||
QtControls.ComboBox {
|
||||
id: placement
|
||||
Kirigami.FormData.label: i18n("Placement:")
|
||||
|
||||
currentIndex: -1
|
||||
textRole: "label"
|
||||
valueRole: "name"
|
||||
model: [{
|
||||
"label": i18nc("Text placement", "Top left"),
|
||||
"name": "top-left"
|
||||
}, {
|
||||
"label": i18nc("Text placement", "Top right"),
|
||||
"name": "top-right"
|
||||
}, {
|
||||
"label": i18nc("Text placement", "Bottom left"),
|
||||
"name": "bottom-left"
|
||||
}, {
|
||||
"label": i18nc("Text placement", "Bottom right"),
|
||||
"name": "bottom-right"
|
||||
}]
|
||||
|
||||
onActivated: cfg_placement = currentValue
|
||||
Component.onCompleted: currentIndex = indexOfValue(cfg_placement)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Colors
|
||||
Kirigami.ScrollablePage {
|
||||
Kirigami.FormLayout {
|
||||
id: colorsPage
|
||||
|
||||
// Charts
|
||||
Kirigami.Separator {
|
||||
Kirigami.FormData.label: i18n("Charts colors")
|
||||
Kirigami.FormData.isSection: true
|
||||
}
|
||||
|
||||
// > CPU
|
||||
Rectangle {
|
||||
height: Kirigami.Units.largeSpacing
|
||||
color: "transparent"
|
||||
}
|
||||
Item {
|
||||
Kirigami.FormData.label: i18nc("Chart name", "CPU")
|
||||
Kirigami.FormData.isSection: true
|
||||
}
|
||||
|
||||
RMControls.ColorSelector {
|
||||
id: cpuColor
|
||||
Kirigami.FormData.label: i18nc("Chart config", "Usage:")
|
||||
|
||||
dialogTitle: i18nc("Chart color", "Choose series color")
|
||||
defaultColor: primaryColor
|
||||
}
|
||||
RMControls.ColorSelector {
|
||||
id: cpuTemperatureColor
|
||||
Kirigami.FormData.label: i18nc("Chart config", "Temperature:")
|
||||
|
||||
dialogTitle: i18nc("Chart color", "Choose text color")
|
||||
defaultColor: textColor
|
||||
}
|
||||
|
||||
// > Memory
|
||||
Rectangle {
|
||||
height: Kirigami.Units.largeSpacing
|
||||
color: "transparent"
|
||||
}
|
||||
Item {
|
||||
Kirigami.FormData.label: i18nc("Chart name", "Memory")
|
||||
Kirigami.FormData.isSection: true
|
||||
}
|
||||
|
||||
RMControls.ColorSelector {
|
||||
id: ramColor
|
||||
Kirigami.FormData.label: i18nc("Chart config", "Physical:")
|
||||
|
||||
dialogTitle: i18nc("Chart color", "Choose series color")
|
||||
defaultColor: primaryColor
|
||||
}
|
||||
RMControls.ColorSelector {
|
||||
id: swapColor
|
||||
Kirigami.FormData.label: i18nc("Chart config", "Swap:")
|
||||
|
||||
dialogTitle: i18nc("Chart color", "Choose color of series and text")
|
||||
defaultColor: negativeColor
|
||||
}
|
||||
|
||||
// > Network
|
||||
Rectangle {
|
||||
height: Kirigami.Units.largeSpacing
|
||||
color: "transparent"
|
||||
}
|
||||
Item {
|
||||
Kirigami.FormData.label: i18nc("Chart name", "Network")
|
||||
Kirigami.FormData.isSection: true
|
||||
}
|
||||
|
||||
RMControls.ColorSelector {
|
||||
id: netDownColor
|
||||
Kirigami.FormData.label: i18nc("Chart config", "Receiving:")
|
||||
|
||||
dialogTitle: i18nc("Chart color", "Choose series color")
|
||||
defaultColor: primaryColor
|
||||
}
|
||||
RMControls.ColorSelector {
|
||||
id: netUpColor
|
||||
Kirigami.FormData.label: i18nc("Chart config", "Sending:")
|
||||
|
||||
dialogTitle: i18nc("Chart color", "Choose series color")
|
||||
defaultColor: positiveColor
|
||||
}
|
||||
|
||||
// > GPU
|
||||
Rectangle {
|
||||
height: Kirigami.Units.largeSpacing
|
||||
color: "transparent"
|
||||
}
|
||||
Item {
|
||||
Kirigami.FormData.label: i18nc("Chart name", "GPU")
|
||||
Kirigami.FormData.isSection: true
|
||||
}
|
||||
|
||||
RMControls.ColorSelector {
|
||||
id: gpuColor
|
||||
Kirigami.FormData.label: i18nc("Chart config", "Usage:")
|
||||
|
||||
dialogTitle: i18nc("Chart color", "Choose series color")
|
||||
defaultColor: primaryColor
|
||||
}
|
||||
RMControls.ColorSelector {
|
||||
id: gpuMemoryColor
|
||||
Kirigami.FormData.label: i18nc("Chart config", "Memory:")
|
||||
|
||||
dialogTitle: i18nc("Chart color", "Choose series color")
|
||||
defaultColor: positiveColor
|
||||
}
|
||||
RMControls.ColorSelector {
|
||||
id: gpuTemperatureColor
|
||||
Kirigami.FormData.label: i18nc("Chart config", "Temperature:")
|
||||
|
||||
dialogTitle: i18nc("Chart color", "Choose text color")
|
||||
defaultColor: textColor
|
||||
}
|
||||
|
||||
// > Disk I/O
|
||||
Rectangle {
|
||||
height: Kirigami.Units.largeSpacing
|
||||
color: "transparent"
|
||||
}
|
||||
Item {
|
||||
Kirigami.FormData.label: i18nc("Chart name", "Disks I/O")
|
||||
Kirigami.FormData.isSection: true
|
||||
}
|
||||
|
||||
RMControls.ColorSelector {
|
||||
id: diskReadColor
|
||||
Kirigami.FormData.label: i18nc("Chart config", "Read:")
|
||||
|
||||
dialogTitle: i18nc("Chart color", "Choose series color")
|
||||
defaultColor: primaryColor
|
||||
}
|
||||
RMControls.ColorSelector {
|
||||
id: diskWriteColor
|
||||
Kirigami.FormData.label: i18nc("Chart config", "Write:")
|
||||
|
||||
dialogTitle: i18nc("Chart color", "Choose series color")
|
||||
defaultColor: positiveColor
|
||||
}
|
||||
|
||||
// Thresholds
|
||||
Kirigami.Separator {
|
||||
Kirigami.FormData.label: i18n("Threshold text colors")
|
||||
Kirigami.FormData.isSection: true
|
||||
}
|
||||
|
||||
RMControls.ColorSelector {
|
||||
id: warningColor
|
||||
Kirigami.FormData.label: i18n("Warning status:")
|
||||
|
||||
dialogTitle: i18n("Choose text color when the value is in warning status")
|
||||
defaultColor: neutralColor
|
||||
}
|
||||
RMControls.ColorSelector {
|
||||
id: criticalColor
|
||||
Kirigami.FormData.label: i18n("Critical status:")
|
||||
|
||||
dialogTitle: i18n("Choose text color when the value is in critical status")
|
||||
defaultColor: negativeColor
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
-451
@@ -1,451 +0,0 @@
|
||||
import QtQuick 2.2
|
||||
import QtQuick.Controls 2.12 as QtControls
|
||||
import QtQuick.Layouts 1.15 as QtLayouts
|
||||
import org.kde.kirigami 2.6 as Kirigami
|
||||
import org.kde.plasma.plasmoid 2.0
|
||||
import org.kde.plasma.core 2.0 as PlasmaCore
|
||||
import org.kde.plasma.components 3.0 as PlasmaComponents
|
||||
import org.kde.plasma.extras 2.0 as PlasmaExtras
|
||||
import "../components" as RMComponents
|
||||
import "../controls" as RMControls
|
||||
import "../components/functions.js" as Functions
|
||||
|
||||
PlasmaExtras.Representation {
|
||||
id: dataPage
|
||||
anchors.fill: parent
|
||||
|
||||
// Network
|
||||
readonly property var networkDialect: Functions.getNetworkDialectInfo(plasmoid.configuration.networkUnit)
|
||||
property var cfg_ignoredNetworkInterfaces
|
||||
property alias cfg_networkReceivingTotal: networkReceiving.realValue
|
||||
property alias cfg_networkSendingTotal: networkSending.realValue
|
||||
|
||||
// Disks I/O
|
||||
property alias cfg_diskReadTotal: diskRead.realValue
|
||||
property alias cfg_diskWriteTotal: diskWrite.realValue
|
||||
|
||||
// GPU
|
||||
property string cfg_gpuIndex
|
||||
|
||||
// Thresholds
|
||||
property alias cfg_thresholdWarningCpuTemp: thresholdWarningCpuTemp.realValue
|
||||
property alias cfg_thresholdCriticalCpuTemp: thresholdCriticalCpuTemp.realValue
|
||||
property alias cfg_thresholdWarningMemory: thresholdWarningMemory.value
|
||||
property alias cfg_thresholdCriticalMemory: thresholdCriticalMemory.value
|
||||
property alias cfg_thresholdWarningGpuTemp: thresholdWarningGpuTemp.realValue
|
||||
property alias cfg_thresholdCriticalGpuTemp: thresholdCriticalGpuTemp.realValue
|
||||
|
||||
readonly property var networkSpeedOptions: [{
|
||||
"label": i18n("Custom"),
|
||||
"value": -1
|
||||
}, {
|
||||
"label": "100 " + networkDialect.kiloChar + networkDialect.suffix,
|
||||
"value": 100.0
|
||||
}, {
|
||||
"label": "1 M" + networkDialect.suffix,
|
||||
"value": 1000.0
|
||||
}, {
|
||||
"label": "10 M" + networkDialect.suffix,
|
||||
"value": 10000.0
|
||||
}, {
|
||||
"label": "100 M" + networkDialect.suffix,
|
||||
"value": 100000.0
|
||||
}, {
|
||||
"label": "1 G" + networkDialect.suffix,
|
||||
"value": 1000000.0
|
||||
}, {
|
||||
"label": "2.5 G" + networkDialect.suffix,
|
||||
"value": 2500000.0
|
||||
}, {
|
||||
"label": "5 G" + networkDialect.suffix,
|
||||
"value": 5000000.0
|
||||
}, {
|
||||
"label": "10 G" + networkDialect.suffix,
|
||||
"value": 10000000.0
|
||||
}]
|
||||
readonly property var diskSpeedOptions: [{
|
||||
"label": i18n("Custom"),
|
||||
"value": -1
|
||||
}, {
|
||||
"label": "10 MiB/s",
|
||||
"value": 10000.0
|
||||
}, {
|
||||
"label": "100 MiB/s",
|
||||
"value": 100000.0
|
||||
}, {
|
||||
"label": "200 MiB/s",
|
||||
"value": 200000.0
|
||||
}, {
|
||||
"label": "500 MiB/s",
|
||||
"value": 500000.0
|
||||
}, {
|
||||
"label": "1 GiB/s",
|
||||
"value": 1000000.0
|
||||
}, {
|
||||
"label": "2 GiB/s",
|
||||
"value": 2000000.0
|
||||
}, {
|
||||
"label": "5 GiB/s",
|
||||
"value": 5000000.0
|
||||
}, {
|
||||
"label": "10 GiB/s",
|
||||
"value": 10000000.0
|
||||
}]
|
||||
|
||||
// Detect network interfaces
|
||||
RMComponents.NetworkInterfaceDetector {
|
||||
id: networkInterfaces
|
||||
}
|
||||
// Detect GPU cards
|
||||
RMComponents.GpuDetector {
|
||||
id: gpuCards
|
||||
|
||||
onReady: gpuCardSelector.select()
|
||||
}
|
||||
|
||||
// Tab bar
|
||||
header: PlasmaExtras.PlasmoidHeading {
|
||||
location: PlasmaExtras.PlasmoidHeading.Location.Header
|
||||
|
||||
PlasmaComponents.TabBar {
|
||||
id: bar
|
||||
|
||||
position: PlasmaComponents.TabBar.Header
|
||||
anchors.fill: parent
|
||||
implicitHeight: contentHeight
|
||||
|
||||
PlasmaComponents.TabButton {
|
||||
icon.name: "settings"
|
||||
icon.height: PlasmaCore.Units.iconSizes.smallMedium
|
||||
text: i18nc("Config header", "General")
|
||||
}
|
||||
PlasmaComponents.TabButton {
|
||||
icon.name: "dialog-warning"
|
||||
icon.height: PlasmaCore.Units.iconSizes.smallMedium
|
||||
text: i18nc("Config header", "Thresholds")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
QtLayouts.StackLayout {
|
||||
id: pageContent
|
||||
anchors.fill: parent
|
||||
currentIndex: bar.currentIndex
|
||||
|
||||
// General
|
||||
Kirigami.ScrollablePage {
|
||||
Kirigami.FormLayout {
|
||||
wideMode: true
|
||||
|
||||
// Network
|
||||
Kirigami.Separator {
|
||||
Kirigami.FormData.label: i18nc("Chart name", "Network")
|
||||
Kirigami.FormData.isSection: true
|
||||
}
|
||||
|
||||
// Interfaces
|
||||
QtLayouts.GridLayout {
|
||||
Kirigami.FormData.label: i18n("Network interfaces:")
|
||||
QtLayouts.Layout.fillWidth: true
|
||||
|
||||
columns: 2
|
||||
rowSpacing: Kirigami.Units.smallSpacing
|
||||
columnSpacing: Kirigami.Units.largeSpacing
|
||||
|
||||
Repeater {
|
||||
model: networkInterfaces.model
|
||||
QtControls.CheckBox {
|
||||
readonly property string interfaceName: modelData
|
||||
readonly property bool ignoredByDefault: {
|
||||
return /^(docker|tun|tap)(\d+)/.test(interfaceName); // Ignore docker and tun/tap networks
|
||||
}
|
||||
|
||||
text: interfaceName
|
||||
checked: cfg_ignoredNetworkInterfaces.indexOf(interfaceName) == -1 && !ignoredByDefault
|
||||
enabled: !ignoredByDefault
|
||||
|
||||
onClicked: {
|
||||
var ignoredNetworkInterfaces = cfg_ignoredNetworkInterfaces.slice(0); // copy()
|
||||
if (checked) {
|
||||
// Checking, and thus removing from the ignoredNetworkInterfaces
|
||||
var i = ignoredNetworkInterfaces.indexOf(interfaceName);
|
||||
ignoredNetworkInterfaces.splice(i, 1);
|
||||
} else {
|
||||
// Unchecking, and thus adding to the ignoredNetworkInterfaces
|
||||
ignoredNetworkInterfaces.push(interfaceName);
|
||||
}
|
||||
cfg_ignoredNetworkInterfaces = ignoredNetworkInterfaces;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Transfer speed
|
||||
Item {
|
||||
Kirigami.FormData.label: i18n("Maximum transfer speed")
|
||||
Kirigami.FormData.isSection: true
|
||||
}
|
||||
|
||||
RMControls.PredefinedSpinBox {
|
||||
id: networkReceiving
|
||||
Kirigami.FormData.label: i18nc("Chart config", "Receiving:")
|
||||
QtLayouts.Layout.fillWidth: true
|
||||
QtLayouts.Layout.minimumWidth: predefinedChoices.currentIndex == 0 ? 300 : 0
|
||||
factor: 1000
|
||||
|
||||
predefinedChoices {
|
||||
textRole: "label"
|
||||
valueRole: "value"
|
||||
model: networkSpeedOptions
|
||||
}
|
||||
|
||||
spinBox {
|
||||
decimals: 3
|
||||
stepSize: 1
|
||||
minimumValue: 0.001
|
||||
|
||||
textFromValue: function (value, locale) {
|
||||
return spinBox.valueToText(value, locale) + " M" + networkDialect.suffix;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
RMControls.PredefinedSpinBox {
|
||||
id: networkSending
|
||||
Kirigami.FormData.label: i18nc("Chart config", "Sending:")
|
||||
QtLayouts.Layout.fillWidth: true
|
||||
QtLayouts.Layout.minimumWidth: predefinedChoices.currentIndex == 0 ? 300 : 0
|
||||
factor: 1000
|
||||
|
||||
predefinedChoices {
|
||||
textRole: "label"
|
||||
valueRole: "value"
|
||||
model: networkSpeedOptions
|
||||
}
|
||||
|
||||
spinBox {
|
||||
decimals: 3
|
||||
stepSize: 1
|
||||
minimumValue: 0.001
|
||||
|
||||
textFromValue: function (value, locale) {
|
||||
return spinBox.valueToText(value, locale) + " M" + networkDialect.suffix;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Disk I/O
|
||||
Kirigami.Separator {
|
||||
Kirigami.FormData.label: i18nc("Chart name", "Disks I/O")
|
||||
Kirigami.FormData.isSection: true
|
||||
}
|
||||
|
||||
Item {
|
||||
Kirigami.FormData.label: i18n("Maximum transfer speed")
|
||||
Kirigami.FormData.isSection: true
|
||||
}
|
||||
|
||||
RMControls.PredefinedSpinBox {
|
||||
id: diskRead
|
||||
Kirigami.FormData.label: i18nc("Chart config", "Read:")
|
||||
QtLayouts.Layout.fillWidth: true
|
||||
QtLayouts.Layout.minimumWidth: predefinedChoices.currentIndex == 0 ? 300 : 0
|
||||
factor: 1000
|
||||
|
||||
predefinedChoices {
|
||||
textRole: "label"
|
||||
valueRole: "value"
|
||||
model: diskSpeedOptions
|
||||
}
|
||||
|
||||
spinBox {
|
||||
decimals: 3
|
||||
stepSize: 1
|
||||
minimumValue: 0.001
|
||||
|
||||
textFromValue: function (value, locale) {
|
||||
return spinBox.valueToText(value, locale) + " M" + networkDialect.suffix;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
RMControls.PredefinedSpinBox {
|
||||
id: diskWrite
|
||||
Kirigami.FormData.label: i18nc("Chart config", "Write:")
|
||||
QtLayouts.Layout.fillWidth: true
|
||||
QtLayouts.Layout.minimumWidth: predefinedChoices.currentIndex == 0 ? 300 : 0
|
||||
factor: 1000
|
||||
|
||||
predefinedChoices {
|
||||
textRole: "label"
|
||||
valueRole: "value"
|
||||
model: diskSpeedOptions
|
||||
}
|
||||
|
||||
spinBox {
|
||||
decimals: 3
|
||||
stepSize: 1
|
||||
minimumValue: 0.001
|
||||
|
||||
textFromValue: function (value, locale) {
|
||||
return spinBox.valueToText(value, locale) + " M" + networkDialect.suffix;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// GPU
|
||||
Kirigami.Separator {
|
||||
Kirigami.FormData.label: i18nc("Config header", "Graphic card")
|
||||
Kirigami.FormData.isSection: true
|
||||
}
|
||||
|
||||
QtControls.ComboBox {
|
||||
id: gpuCardSelector
|
||||
QtLayouts.Layout.fillWidth: true
|
||||
Kirigami.FormData.label: i18n("Graphic card:")
|
||||
|
||||
currentIndex: -1
|
||||
textRole: "name"
|
||||
valueRole: "index"
|
||||
model: gpuCards.model
|
||||
|
||||
onActivated: cfg_gpuIndex = currentValue
|
||||
function select() {
|
||||
currentIndex = indexOfValue(cfg_gpuIndex);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Thresholds
|
||||
Kirigami.ScrollablePage {
|
||||
Kirigami.FormLayout {
|
||||
id: thresholdsPage
|
||||
wideMode: true
|
||||
|
||||
property double kirigamiWidth: preferredWidth * 2 + Kirigami.Units.largeSpacing
|
||||
property double preferredWidth: {
|
||||
const minimumWidth = Math.max(80, warningHeader.contentWidth, criticalHeader.contentWidth);
|
||||
return Math.max(minimumWidth,
|
||||
// CPU
|
||||
thresholdWarningCpuTemp.implicitWidth, thresholdCriticalCpuTemp.implicitWidth,
|
||||
// Memory
|
||||
thresholdWarningMemory.implicitWidth, thresholdCriticalMemory.implicitWidth,
|
||||
// Memory
|
||||
thresholdWarningMemory.implicitWidth, thresholdCriticalMemory.implicitWidth,
|
||||
// GPU
|
||||
thresholdWarningGpuTemp.implicitWidth, thresholdCriticalGpuTemp.implicitWidth);
|
||||
}
|
||||
|
||||
// Header
|
||||
QtLayouts.RowLayout {
|
||||
QtLayouts.Layout.fillWidth: true
|
||||
spacing: Kirigami.Units.largeSpacing
|
||||
|
||||
PlasmaComponents.Label {
|
||||
id: warningHeader
|
||||
text: i18n("Warning")
|
||||
font.pointSize: PlasmaCore.Theme.defaultFont.pointSize * 1.2
|
||||
QtLayouts.Layout.preferredWidth: thresholdsPage.preferredWidth
|
||||
}
|
||||
|
||||
PlasmaComponents.Label {
|
||||
id: criticalHeader
|
||||
text: i18n("Critical")
|
||||
font.pointSize: PlasmaCore.Theme.defaultFont.pointSize * 1.2
|
||||
}
|
||||
}
|
||||
|
||||
// CPU Temperature
|
||||
QtLayouts.RowLayout {
|
||||
Kirigami.FormData.label: i18n("CPU Temperature:")
|
||||
QtLayouts.Layout.preferredWidth: thresholdsPage.kirigamiWidth
|
||||
spacing: Kirigami.Units.largeSpacing
|
||||
|
||||
RMControls.SpinBox {
|
||||
id: thresholdWarningCpuTemp
|
||||
QtLayouts.Layout.preferredWidth: thresholdsPage.preferredWidth
|
||||
decimals: 1
|
||||
stepSize: 1
|
||||
minimumValue: 0.1
|
||||
maximumValue: 120
|
||||
|
||||
textFromValue: function (value, locale) {
|
||||
return valueToText(value, locale) + " °C";
|
||||
}
|
||||
}
|
||||
RMControls.SpinBox {
|
||||
id: thresholdCriticalCpuTemp
|
||||
QtLayouts.Layout.preferredWidth: thresholdsPage.preferredWidth
|
||||
decimals: 1
|
||||
stepSize: 1
|
||||
minimumValue: 0.1
|
||||
maximumValue: 120
|
||||
|
||||
textFromValue: function (value, locale) {
|
||||
return valueToText(value, locale) + " °C";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Memory usage
|
||||
QtLayouts.RowLayout {
|
||||
Kirigami.FormData.label: i18n("Physical Memory Usage:")
|
||||
QtLayouts.Layout.preferredWidth: thresholdsPage.kirigamiWidth
|
||||
spacing: Kirigami.Units.largeSpacing
|
||||
|
||||
RMControls.SpinBox {
|
||||
id: thresholdWarningMemory
|
||||
QtLayouts.Layout.preferredWidth: thresholdsPage.preferredWidth
|
||||
|
||||
textFromValue: function (value, locale) {
|
||||
return value + " %";
|
||||
}
|
||||
}
|
||||
RMControls.SpinBox {
|
||||
id: thresholdCriticalMemory
|
||||
QtLayouts.Layout.preferredWidth: thresholdsPage.preferredWidth
|
||||
|
||||
textFromValue: function (value, locale) {
|
||||
return value + " %";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// GPU Temperature
|
||||
QtLayouts.RowLayout {
|
||||
Kirigami.FormData.label: i18n("GPU Temperature:")
|
||||
QtLayouts.Layout.preferredWidth: thresholdsPage.kirigamiWidth
|
||||
spacing: Kirigami.Units.largeSpacing
|
||||
|
||||
RMControls.SpinBox {
|
||||
id: thresholdWarningGpuTemp
|
||||
QtLayouts.Layout.preferredWidth: thresholdsPage.preferredWidth
|
||||
|
||||
decimals: 1
|
||||
stepSize: 1
|
||||
minimumValue: 0.1
|
||||
maximumValue: 120
|
||||
|
||||
textFromValue: function (value, locale) {
|
||||
return valueToText(value, locale) + " °C";
|
||||
}
|
||||
}
|
||||
RMControls.SpinBox {
|
||||
id: thresholdCriticalGpuTemp
|
||||
QtLayouts.Layout.preferredWidth: thresholdsPage.preferredWidth
|
||||
|
||||
decimals: 1
|
||||
stepSize: 1
|
||||
minimumValue: 0.1
|
||||
maximumValue: 120
|
||||
|
||||
textFromValue: function (value, locale) {
|
||||
return valueToText(value, locale) + " °C";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
-453
@@ -1,453 +0,0 @@
|
||||
import QtQuick 2.2
|
||||
import QtQuick.Controls 2.12 as QtControls
|
||||
import QtQuick.Layouts 1.15 as QtLayouts
|
||||
import org.kde.kirigami 2.6 as Kirigami
|
||||
import org.kde.plasma.core 2.0 as PlasmaCore
|
||||
import org.kde.plasma.plasmoid 2.0
|
||||
import org.kde.plasma.components 2.0 as PC2
|
||||
import org.kde.plasma.components 3.0 as PlasmaComponents
|
||||
import org.kde.plasma.extras 2.0 as PlasmaExtras
|
||||
import "../components" as RMComponents
|
||||
import "../controls" as RMControls
|
||||
|
||||
PlasmaExtras.Representation {
|
||||
id: page
|
||||
anchors.fill: parent
|
||||
|
||||
// Charts
|
||||
property alias cfg_updateInterval: updateInterval.realValue
|
||||
// > CPU
|
||||
property bool cfg_showCpuMonitor
|
||||
property string cfg_cpuUnit
|
||||
property bool cfg_showClock
|
||||
property string cfg_clockAgregator
|
||||
property alias cfg_showCpuTemperature: showCpuTemperature.checked
|
||||
// > Memory
|
||||
property bool cfg_showRamMonitor
|
||||
property string cfg_memoryUnit
|
||||
property alias cfg_memorySwapGraph: memorySwapGraph.checked
|
||||
// > Network
|
||||
property bool cfg_showNetMonitor
|
||||
property string cfg_networkUnit
|
||||
// > GPU
|
||||
property alias cfg_showGpuMonitor: showGpuMonitor.checked
|
||||
property alias cfg_gpuMemoryInPercent: gpuMemoryInPercent.checked
|
||||
property alias cfg_gpuMemoryGraph: gpuMemoryGraph.checked
|
||||
property alias cfg_showGpuTemperature: showGpuTemperature.checked
|
||||
// > Disks I/O
|
||||
property alias cfg_showDiskMonitor: showDiskMonitor.checked
|
||||
|
||||
// Click action
|
||||
property string cfg_actionService
|
||||
|
||||
// Apps model
|
||||
RMComponents.AppsDetector {
|
||||
id: appsModel
|
||||
|
||||
filterString: appsFilter.text
|
||||
filterCallback: function (index, value) {
|
||||
var search = filterString.toLowerCase();
|
||||
if (search.length === 0) {
|
||||
return true;
|
||||
}
|
||||
if (value.toLowerCase().indexOf(search) !== -1) {
|
||||
return true;
|
||||
}
|
||||
if (sourceModel.get(index).menuId.replace(".desktop", "").toLowerCase().indexOf(search) !== -1) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
onFilterStringChanged: appsList.updateCurrentIndex()
|
||||
}
|
||||
|
||||
// Tab bar
|
||||
header: PlasmaExtras.PlasmoidHeading {
|
||||
location: PlasmaExtras.PlasmoidHeading.Location.Header
|
||||
|
||||
PlasmaComponents.TabBar {
|
||||
id: bar
|
||||
|
||||
position: PlasmaComponents.TabBar.Header
|
||||
anchors.fill: parent
|
||||
implicitHeight: contentHeight
|
||||
|
||||
PlasmaComponents.TabButton {
|
||||
icon.name: "settings"
|
||||
icon.height: PlasmaCore.Units.iconSizes.smallMedium
|
||||
text: i18nc("Config header", "General")
|
||||
}
|
||||
PlasmaComponents.TabButton {
|
||||
icon.name: "input-mouse-symbolic"
|
||||
icon.height: PlasmaCore.Units.iconSizes.smallMedium
|
||||
text: i18nc("Config header", "Click action")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
QtLayouts.StackLayout {
|
||||
id: pageContent
|
||||
anchors.fill: parent
|
||||
currentIndex: bar.currentIndex
|
||||
|
||||
// General
|
||||
Kirigami.ScrollablePage {
|
||||
Kirigami.FormLayout {
|
||||
wideMode: true
|
||||
|
||||
RMControls.SpinBox {
|
||||
id: updateInterval
|
||||
Kirigami.FormData.label: i18n("Update interval:")
|
||||
QtLayouts.Layout.fillWidth: true
|
||||
|
||||
decimals: 1
|
||||
minimumValue: 0.1
|
||||
maximumValue: 3600.0
|
||||
stepSize: Math.round(0.1 * factor)
|
||||
|
||||
textFromValue: function (value, locale) {
|
||||
return i18n("%1 seconds", valueToText(value, locale));
|
||||
}
|
||||
}
|
||||
|
||||
// Charts
|
||||
Kirigami.Separator {
|
||||
Kirigami.FormData.label: i18nc("Config header", "Charts")
|
||||
Kirigami.FormData.isSection: true
|
||||
}
|
||||
|
||||
// CPU
|
||||
Item {
|
||||
Kirigami.FormData.label: i18nc("Chart name", "CPU")
|
||||
Kirigami.FormData.isSection: true
|
||||
}
|
||||
|
||||
QtControls.ComboBox {
|
||||
QtLayouts.Layout.fillWidth: true
|
||||
Kirigami.FormData.label: i18n("Visibility:")
|
||||
|
||||
currentIndex: -1
|
||||
textRole: "label"
|
||||
valueRole: "value"
|
||||
model: [{
|
||||
"label": i18n("Disabled"),
|
||||
"value": "none"
|
||||
}, {
|
||||
"label": i18n("Total usage"),
|
||||
"value": "usage"
|
||||
}, {
|
||||
"label": i18n("System usage"),
|
||||
"value": "system"
|
||||
}, {
|
||||
"label": i18n("User usage"),
|
||||
"value": "user"
|
||||
}]
|
||||
|
||||
onActivated: {
|
||||
if (currentValue === "none") {
|
||||
cfg_showCpuMonitor = false;
|
||||
} else {
|
||||
cfg_showCpuMonitor = true;
|
||||
cfg_cpuUnit = currentValue;
|
||||
}
|
||||
}
|
||||
Component.onCompleted: {
|
||||
// TODO (3.0): Merge "cfg_showCpuMonitor" and "cfg_cpuUnit"
|
||||
currentIndex = cfg_showCpuMonitor ? indexOfValue(cfg_cpuUnit) : 0;
|
||||
}
|
||||
}
|
||||
|
||||
QtControls.ComboBox {
|
||||
QtLayouts.Layout.fillWidth: true
|
||||
Kirigami.FormData.label: i18n("Clock visibility:")
|
||||
enabled: cfg_showCpuMonitor
|
||||
|
||||
currentIndex: -1
|
||||
textRole: "label"
|
||||
valueRole: "value"
|
||||
model: [{
|
||||
"label": i18n("Disabled"),
|
||||
"value": "none"
|
||||
}, {
|
||||
"label": i18nc("Agregator", "Average"),
|
||||
"value": "average"
|
||||
}, {
|
||||
"label": i18nc("Agregator", "Minimum"),
|
||||
"value": "minimum"
|
||||
}, {
|
||||
"label": i18nc("Agregator", "Maximum"),
|
||||
"value": "maximum"
|
||||
}]
|
||||
|
||||
onActivated: {
|
||||
if (currentValue === "none") {
|
||||
cfg_showClock = false;
|
||||
} else {
|
||||
cfg_showClock = true;
|
||||
cfg_clockAgregator = currentValue;
|
||||
}
|
||||
}
|
||||
Component.onCompleted: {
|
||||
// TODO (3.0): Merge "cfg_showClock" and "cfg_clockAgregator"
|
||||
currentIndex = cfg_showClock ? indexOfValue(cfg_clockAgregator) : 0;
|
||||
}
|
||||
}
|
||||
|
||||
QtControls.CheckBox {
|
||||
id: showCpuTemperature
|
||||
text: i18n("Show temperature")
|
||||
enabled: cfg_showCpuMonitor
|
||||
}
|
||||
|
||||
// Memory
|
||||
Rectangle {
|
||||
height: Kirigami.Units.largeSpacing
|
||||
color: "transparent"
|
||||
}
|
||||
Item {
|
||||
Kirigami.FormData.label: i18nc("Chart name", "Memory")
|
||||
Kirigami.FormData.isSection: true
|
||||
}
|
||||
|
||||
QtControls.ComboBox {
|
||||
QtLayouts.Layout.fillWidth: true
|
||||
Kirigami.FormData.label: i18n("Visibility:")
|
||||
|
||||
currentIndex: -1
|
||||
textRole: "label"
|
||||
valueRole: "value"
|
||||
model: [{
|
||||
"label": i18n("Disabled"),
|
||||
"value": "none"
|
||||
}, {
|
||||
"label": i18n("Physical memory (in KiB)"),
|
||||
"value": "physical"
|
||||
}, {
|
||||
"label": i18n("Physical memory (in %)"),
|
||||
"value": "physical-percent"
|
||||
}, {
|
||||
"label": i18n("Application memory (in KiB)"),
|
||||
"value": "application"
|
||||
}, {
|
||||
"label": i18n("Application memory (in %)"),
|
||||
"value": "application-percent"
|
||||
}]
|
||||
|
||||
onActivated: {
|
||||
if (currentValue === "none") {
|
||||
cfg_showRamMonitor = false;
|
||||
} else {
|
||||
cfg_showRamMonitor = true;
|
||||
cfg_memoryUnit = currentValue;
|
||||
}
|
||||
}
|
||||
Component.onCompleted: {
|
||||
// TODO (3.0): Merge "cfg_showRamMonitor" and "cfg_memoryUnit"
|
||||
currentIndex = cfg_showRamMonitor ? indexOfValue(cfg_memoryUnit) : 0;
|
||||
}
|
||||
}
|
||||
|
||||
QtLayouts.GridLayout {
|
||||
QtLayouts.Layout.fillWidth: true
|
||||
columns: 2
|
||||
rowSpacing: Kirigami.Units.smallSpacing
|
||||
columnSpacing: Kirigami.Units.largeSpacing
|
||||
|
||||
QtControls.CheckBox {
|
||||
id: memorySwapGraph
|
||||
text: i18n("Show swap")
|
||||
enabled: cfg_showRamMonitor
|
||||
}
|
||||
}
|
||||
|
||||
// Network
|
||||
Rectangle {
|
||||
height: Kirigami.Units.largeSpacing
|
||||
color: "transparent"
|
||||
}
|
||||
Item {
|
||||
Kirigami.FormData.label: i18nc("Chart name", "Network")
|
||||
Kirigami.FormData.isSection: true
|
||||
}
|
||||
|
||||
QtControls.ComboBox {
|
||||
QtLayouts.Layout.fillWidth: true
|
||||
Kirigami.FormData.label: i18n("Visibility:")
|
||||
|
||||
currentIndex: -1
|
||||
textRole: "label"
|
||||
valueRole: "value"
|
||||
model: [{
|
||||
"label": i18n("Disabled"),
|
||||
"value": "none"
|
||||
}, {
|
||||
"label": i18n("In kibibyte (KiB/s)"),
|
||||
"value": "kibibyte"
|
||||
}, {
|
||||
"label": i18n("In kilobit (Kbps)"),
|
||||
"value": "kilobit"
|
||||
}, {
|
||||
"label": i18n("In kilobyte (KBps)"),
|
||||
"value": "kilobyte"
|
||||
}]
|
||||
|
||||
onActivated: {
|
||||
if (currentValue === "none") {
|
||||
cfg_showNetMonitor = false;
|
||||
} else {
|
||||
cfg_showNetMonitor = true;
|
||||
cfg_networkUnit = currentValue;
|
||||
}
|
||||
}
|
||||
Component.onCompleted: {
|
||||
// TODO (3.0): Merge "cfg_showNetMonitor" and "cfg_networkUnit"
|
||||
currentIndex = cfg_showNetMonitor ? indexOfValue(cfg_networkUnit) : 0;
|
||||
}
|
||||
}
|
||||
|
||||
// GPU
|
||||
Rectangle {
|
||||
height: Kirigami.Units.largeSpacing
|
||||
color: "transparent"
|
||||
}
|
||||
Item {
|
||||
Kirigami.FormData.label: i18nc("Chart name", "GPU")
|
||||
Kirigami.FormData.isSection: true
|
||||
}
|
||||
|
||||
QtLayouts.GridLayout {
|
||||
QtLayouts.Layout.fillWidth: true
|
||||
columns: 2
|
||||
rowSpacing: Kirigami.Units.smallSpacing
|
||||
columnSpacing: Kirigami.Units.largeSpacing
|
||||
|
||||
QtControls.CheckBox {
|
||||
id: showGpuMonitor
|
||||
text: i18n("Enabled?")
|
||||
}
|
||||
QtControls.CheckBox {
|
||||
id: gpuMemoryGraph
|
||||
text: i18n("Show memory")
|
||||
enabled: showGpuMonitor.checked
|
||||
}
|
||||
QtControls.CheckBox {
|
||||
id: gpuMemoryInPercent
|
||||
text: i18n("Memory in percent")
|
||||
enabled: showGpuMonitor.checked
|
||||
}
|
||||
QtControls.CheckBox {
|
||||
id: showGpuTemperature
|
||||
text: i18n("Show temperature")
|
||||
enabled: showGpuMonitor.checked
|
||||
}
|
||||
}
|
||||
|
||||
// Disk I/O
|
||||
Rectangle {
|
||||
height: Kirigami.Units.largeSpacing
|
||||
color: "transparent"
|
||||
}
|
||||
Item {
|
||||
Kirigami.FormData.label: i18nc("Chart name", "Disks I/O")
|
||||
Kirigami.FormData.isSection: true
|
||||
}
|
||||
|
||||
QtLayouts.GridLayout {
|
||||
QtLayouts.Layout.fillWidth: true
|
||||
columns: 2
|
||||
rowSpacing: Kirigami.Units.smallSpacing
|
||||
columnSpacing: Kirigami.Units.largeSpacing
|
||||
|
||||
QtControls.CheckBox {
|
||||
id: showDiskMonitor
|
||||
text: i18n("Enabled?")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Click action
|
||||
QtLayouts.ColumnLayout {
|
||||
id: clickPage
|
||||
spacing: Kirigami.Units.largeSpacing
|
||||
|
||||
Kirigami.FormLayout {
|
||||
wideMode: true
|
||||
|
||||
QtControls.TextField {
|
||||
id: appsFilter
|
||||
Kirigami.FormData.label: i18n("Search an application:")
|
||||
QtLayouts.Layout.fillWidth: true
|
||||
placeholderText: i18n("Application name")
|
||||
inputMethodHints: Qt.ImhNoPredictiveText
|
||||
}
|
||||
}
|
||||
|
||||
// Apps list
|
||||
PlasmaComponents.Label {
|
||||
text: i18n("Applications")
|
||||
font.pointSize: PlasmaCore.Theme.defaultFont.pointSize * 1.2
|
||||
}
|
||||
|
||||
Item {
|
||||
QtLayouts.Layout.fillWidth: true
|
||||
QtLayouts.Layout.fillHeight: true
|
||||
|
||||
Rectangle {
|
||||
anchors.fill: parent
|
||||
color: theme.headerBackgroundColor
|
||||
border.color: theme.complementaryBackgroundColor
|
||||
border.width: 1
|
||||
radius: 4
|
||||
}
|
||||
|
||||
PlasmaComponents.ScrollView {
|
||||
anchors.fill: parent
|
||||
anchors.margins: 10
|
||||
anchors.rightMargin: 5
|
||||
|
||||
ListView {
|
||||
id: appsList
|
||||
|
||||
model: appsModel
|
||||
clip: true
|
||||
interactive: true
|
||||
|
||||
highlight: PC2.Highlight {
|
||||
}
|
||||
highlightMoveDuration: 0
|
||||
highlightMoveVelocity: -1
|
||||
|
||||
delegate: RMComponents.ApplicationDelegateItem {
|
||||
width: root.width
|
||||
|
||||
serviceName: model.menuId.replace(".desktop", "")
|
||||
name: model.name
|
||||
comment: model.comment
|
||||
iconName: model.iconName
|
||||
selected: ListView.isCurrentItem
|
||||
|
||||
onClicked: {
|
||||
appsList.currentIndex = index;
|
||||
cfg_actionService = serviceName;
|
||||
}
|
||||
}
|
||||
|
||||
Component.onCompleted: updateCurrentIndex()
|
||||
|
||||
function updateCurrentIndex() {
|
||||
for (var i = 0; i < model.count; i++) {
|
||||
if (model.get(i).menuId === cfg_actionService + ".desktop") {
|
||||
currentIndex = i;
|
||||
return;
|
||||
}
|
||||
}
|
||||
currentIndex = -1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
-49
@@ -1,49 +0,0 @@
|
||||
import QtQuick 2.2
|
||||
import QtQuick.Dialogs 1.0 as QtDialog
|
||||
import org.kde.plasma.components 3.0 as PlasmaComponents
|
||||
import org.kde.kirigami 2.6 as Kirigami
|
||||
|
||||
PlasmaComponents.Button {
|
||||
id: colorSelector
|
||||
|
||||
// Aliases
|
||||
property alias value: colorPicker.currentColor
|
||||
|
||||
// Properties
|
||||
property string label
|
||||
property string dialogTitle
|
||||
property color defaultColor
|
||||
property bool customized
|
||||
|
||||
// Customized checkbox
|
||||
enabled: Kirigami.FormData.checked
|
||||
Kirigami.FormData.checkable: true
|
||||
Kirigami.FormData.checked: customized
|
||||
|
||||
onEnabledChanged: customized = enabled
|
||||
onClicked: colorPicker.open()
|
||||
|
||||
// Size
|
||||
topPadding: 12
|
||||
bottomPadding: topPadding
|
||||
leftPadding: topPadding * 2
|
||||
rightPadding: leftPadding
|
||||
|
||||
// Components
|
||||
QtDialog.ColorDialog {
|
||||
id: colorPicker
|
||||
title: dialogTitle
|
||||
}
|
||||
MouseArea {
|
||||
id: mouseArea
|
||||
anchors.fill: parent
|
||||
onPressed: mouse.accepted = false
|
||||
cursorShape: enabled ? Qt.PointingHandCursor : Qt.ArrowCursor
|
||||
}
|
||||
|
||||
background: Rectangle {
|
||||
color: customized ? colorPicker.currentColor : defaultColor
|
||||
opacity: colorPicker.enabled ? 1 : 0.75
|
||||
radius: 2
|
||||
}
|
||||
}
|
||||
-20
@@ -1,20 +0,0 @@
|
||||
import QtQuick 2.2
|
||||
import org.kde.kirigami 2.6 as Kirigami
|
||||
import "./" as RMControls
|
||||
|
||||
RMControls.SpinBox {
|
||||
id: customizableSize
|
||||
|
||||
property bool customized
|
||||
|
||||
// Customized checkbox
|
||||
enabled: Kirigami.FormData.checked
|
||||
Kirigami.FormData.checkable: true
|
||||
Kirigami.FormData.checked: customized
|
||||
onEnabledChanged: customized = enabled
|
||||
|
||||
// Component
|
||||
textFromValue: function (value, locale) {
|
||||
return valueToText(value, locale) + " px";
|
||||
}
|
||||
}
|
||||
-57
@@ -1,57 +0,0 @@
|
||||
import QtQuick 2.0
|
||||
import QtQuick.Layouts 1.15 as QtLayouts
|
||||
import QtQuick.Controls 2.0 as QQC2
|
||||
import org.kde.kirigami 2.6 as Kirigami
|
||||
import "./" as RMControls
|
||||
|
||||
QtLayouts.RowLayout {
|
||||
spacing: Kirigami.Units.largeSpacing
|
||||
|
||||
property alias predefinedChoices: predefinedChoices
|
||||
property alias spinBox: spinBox
|
||||
|
||||
property int customValueIndex: 0
|
||||
property real factor: 1 // This is for auto convert from Kilo, Mega, etc
|
||||
|
||||
property real value: Math.round(realValue / factor)
|
||||
property real realValue
|
||||
|
||||
Component.onCompleted: {
|
||||
// Initialize spin real value
|
||||
spinBox.realValue = value;
|
||||
|
||||
// Bind "realValue" to "spinBox.realValue" and "factor"
|
||||
realValue = Qt.binding(() => spinBox.realValue * factor);
|
||||
}
|
||||
|
||||
QQC2.ComboBox {
|
||||
id: predefinedChoices
|
||||
QtLayouts.Layout.fillWidth: true
|
||||
currentIndex: -1
|
||||
|
||||
onActivated: {
|
||||
// Skip update spin box if user select custom option
|
||||
if (currentIndex === customValueIndex) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Set value from choice in spin box (for have only one place to manage value)
|
||||
if (currentValue !== -1) {
|
||||
spinBox.realValue = valueFromPredefinedChoice(currentValue, currentIndex);
|
||||
}
|
||||
}
|
||||
|
||||
// Auto select predefined choice
|
||||
Component.onCompleted: {
|
||||
const index = indexOfValue(realValue);
|
||||
currentIndex = index !== -1 ? index : customValueIndex;
|
||||
}
|
||||
}
|
||||
RMControls.SpinBox {
|
||||
id: spinBox
|
||||
QtLayouts.Layout.fillWidth: true
|
||||
visible: predefinedChoices.currentIndex === customValueIndex
|
||||
}
|
||||
|
||||
property var valueFromPredefinedChoice: (value, index) => value / factor
|
||||
}
|
||||
-125
@@ -1,125 +0,0 @@
|
||||
/**
|
||||
* Example:
|
||||
import "./components/controls" as RMControls
|
||||
// Integer
|
||||
RMControls.SpinBox {
|
||||
from: 0
|
||||
to: 1000
|
||||
stepSize: 5
|
||||
|
||||
textFromValue: function(value, locale) {
|
||||
return valueToText(value, locale) + " px"
|
||||
}
|
||||
}
|
||||
// Double
|
||||
RMControls.SpinBox {
|
||||
decimals: 3
|
||||
minimumValue: 0.0
|
||||
maximumValue: 1000.0
|
||||
stepSize: Math.round(0.5 * factor)
|
||||
|
||||
textFromValue: function(value, locale) {
|
||||
return valueToText(value, locale) + " m"
|
||||
}
|
||||
}
|
||||
*/
|
||||
import QtQuick 2.0
|
||||
import QtQuick.Controls 2.0 as QQC2
|
||||
import org.kde.plasma.core 2.0 as PlasmaCore
|
||||
|
||||
QQC2.SpinBox {
|
||||
id: control
|
||||
editable: true
|
||||
|
||||
readonly property real factor: Math.pow(10, decimals)
|
||||
readonly property int spinBox_MININT: Math.ceil(-2147483648 / factor)
|
||||
readonly property int spinBox_MAXINT: Math.floor(2147483647 / factor)
|
||||
|
||||
value: Math.round(realValue * factor)
|
||||
from: Math.round(minimumValue * factor)
|
||||
to: Math.round(maximumValue * factor)
|
||||
|
||||
// Copry from https://doc.qt.io/qt-5/qml-qtquick-controls2-spinbox.html#custom-values
|
||||
property int decimals: 0
|
||||
property real realValue
|
||||
|
||||
property real minimumValue: 0
|
||||
property real maximumValue: spinBox_MAXINT
|
||||
|
||||
// Bind "realValue" to "value" and "factor"
|
||||
Component.onCompleted: {
|
||||
realValue = Qt.binding(() => value / factor);
|
||||
}
|
||||
|
||||
validator: DoubleValidator {
|
||||
locale: control.locale.name
|
||||
bottom: Math.min(control.from, control.to)
|
||||
top: Math.max(control.from, control.to)
|
||||
}
|
||||
|
||||
textFromValue: valueToText
|
||||
valueFromText: (text, locale) => {
|
||||
text = text.replace(/[^\-\.\d]/g, ""); // Remove non digit characters
|
||||
if (text === ".") {
|
||||
text = "0";
|
||||
}
|
||||
return Number.fromLocaleString(locale, text) * factor;
|
||||
}
|
||||
|
||||
property var valueToText: (value, locale) => {
|
||||
// "toLocaleString" has no concept of "the minimum amount of
|
||||
// digits to represent this number", so we need to calculate this
|
||||
// manually. This ensures that things like "0" and "10" will be
|
||||
// displayed without any decimals, while things like "2.2" and
|
||||
// "3.87" will be displayed with the right number of decimals.
|
||||
const realValue = Number(value / factor);
|
||||
return realValue.toLocaleString(locale, 'f', countDecimals(realValue));
|
||||
}
|
||||
|
||||
contentItem: TextInput {
|
||||
opacity: enabled ? 1 : 0.5
|
||||
text: control.displayText
|
||||
font: control.font
|
||||
color: PlasmaCore.Theme.viewTextColor
|
||||
selectionColor: PlasmaCore.Theme.highlightColor
|
||||
selectedTextColor: PlasmaCore.Theme.highlightedTextColor
|
||||
verticalAlignment: Qt.AlignVCenter
|
||||
readOnly: !control.editable
|
||||
validator: control.validator
|
||||
inputMethodHints: control.inputMethodHints
|
||||
selectByMouse: true
|
||||
|
||||
// Accept return/enter key
|
||||
Keys.onReturnPressed: returnPressed = true
|
||||
Keys.onEnterPressed: returnPressed = true
|
||||
|
||||
// Reselect field when validate value with "return"
|
||||
property bool returnPressed
|
||||
onTextChanged: {
|
||||
if (returnPressed) {
|
||||
returnPressed = false;
|
||||
selectAll();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Allow cancel editing
|
||||
Keys.onEscapePressed: {
|
||||
contentItem.text = textFromValue(value, locale.name);
|
||||
focus = false;
|
||||
}
|
||||
|
||||
// Select value on foucs
|
||||
onActiveFocusChanged: {
|
||||
if (activeFocus) {
|
||||
contentItem.selectAll();
|
||||
}
|
||||
}
|
||||
|
||||
function countDecimals(value) {
|
||||
if (Math.floor(value) === value) {
|
||||
return 0;
|
||||
}
|
||||
return value.toString().split(".")[1].length || 0;
|
||||
}
|
||||
}
|
||||
-123
@@ -1,123 +0,0 @@
|
||||
/*
|
||||
* Copyright 2015 Martin Kotelnik <clearmartin@seznam.cz>
|
||||
*
|
||||
* 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 the Free Software Foundation; either version 2 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http: //www.gnu.org/licenses/>.
|
||||
*/
|
||||
import QtQuick 2.9
|
||||
import QtQuick.Layouts 1.1
|
||||
import org.kde.plasma.plasmoid 2.0
|
||||
import org.kde.plasma.core 2.0 as PlasmaCore
|
||||
import org.kde.kio 1.0 as Kio
|
||||
import "./components/graph" as RMGraph
|
||||
|
||||
MouseArea {
|
||||
id: root
|
||||
|
||||
readonly property bool vertical: plasmoid.formFactor === PlasmaCore.Types.Vertical
|
||||
|
||||
// Settings properties
|
||||
property bool verticalLayout: plasmoid.configuration.verticalLayout
|
||||
property double fontScale: (plasmoid.configuration.fontScale / 100)
|
||||
|
||||
// Component properties
|
||||
property int itemMargin: plasmoid.configuration.graphMargin
|
||||
property double parentWidth: parent === null ? 0 : parent.width
|
||||
property double parentHeight: parent === null ? 0 : parent.height
|
||||
property double initWidth: vertical ? (verticalLayout ? parentWidth : (parentWidth - itemMargin) / 2) : (verticalLayout ? (parentHeight - itemMargin) / 2 : parentHeight)
|
||||
property double itemWidth: plasmoid.configuration.customGraphWidth ? plasmoid.configuration.graphWidth : Math.round(initWidth * (verticalLayout ? 1 : 1.5))
|
||||
property double itemHeight: plasmoid.configuration.customGraphHeight ? plasmoid.configuration.graphHeight : Math.round(initWidth)
|
||||
property double fontPixelSize: Math.round(verticalLayout ? (itemHeight / 1.4 * fontScale) : (itemHeight * fontScale))
|
||||
|
||||
Layout.preferredWidth: !verticalLayout ? (itemWidth * graphView.model.length + itemMargin * (graphView.model.length + 1)) : itemWidth
|
||||
Layout.preferredHeight: verticalLayout ? (itemHeight * graphView.model.length + itemMargin * (graphView.model.length + 1)) : itemHeight
|
||||
LayoutMirroring.enabled: !vertical && Qt.application.layoutDirection === Qt.RightToLeft
|
||||
LayoutMirroring.childrenInherit: true
|
||||
|
||||
Plasmoid.preferredRepresentation: Plasmoid.fullRepresentation
|
||||
|
||||
// Click action
|
||||
Kio.KRun {
|
||||
id: kRun
|
||||
}
|
||||
|
||||
onClicked: {
|
||||
kRun.openService(plasmoid.configuration.actionService);
|
||||
}
|
||||
|
||||
// Global update timer
|
||||
Timer {
|
||||
id: updateTask
|
||||
interval: plasmoid.configuration.updateInterval * 1000
|
||||
|
||||
running: true
|
||||
triggeredOnStart: true
|
||||
repeat: true
|
||||
|
||||
onTriggered: {
|
||||
for (const i in graphView.model) {
|
||||
const graph = graphView.getGraph(i);
|
||||
if (graph !== null) {
|
||||
graph._update();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Main Layout
|
||||
ListView {
|
||||
id: graphView
|
||||
anchors.fill: parent
|
||||
spacing: itemMargin
|
||||
orientation: verticalLayout ? ListView.Vertical : ListView.Horizontal
|
||||
interactive: false
|
||||
|
||||
model: plasmoid.configuration.graphOrders.filter(item => {
|
||||
if (item === "cpu") {
|
||||
return plasmoid.configuration.showCpuMonitor;
|
||||
} else if (item === "disks") {
|
||||
return plasmoid.configuration.showDiskMonitor;
|
||||
} else if (item === "gpu") {
|
||||
return plasmoid.configuration.showGpuMonitor;
|
||||
} else if (item === "memory") {
|
||||
return plasmoid.configuration.showRamMonitor;
|
||||
} else if (item === "network") {
|
||||
return plasmoid.configuration.showNetMonitor;
|
||||
}
|
||||
return false;
|
||||
})
|
||||
|
||||
delegate: Loader {
|
||||
source: _graphIdToFilename(modelData)
|
||||
|
||||
width: itemWidth
|
||||
height: itemHeight
|
||||
|
||||
onLoaded: {
|
||||
item.textContainer.firstLineLabel.font.pixelSize = Qt.binding(() => root.fontPixelSize);
|
||||
item.textContainer.secondLineLabel.font.pixelSize = Qt.binding(() => root.fontPixelSize);
|
||||
item.textContainer.thirdLineLabel.font.pixelSize = Qt.binding(() => root.fontPixelSize);
|
||||
}
|
||||
}
|
||||
|
||||
function getGraph(index) {
|
||||
const loaderItem = graphView.itemAtIndex(index);
|
||||
return loaderItem !== null ? loaderItem.item : null;
|
||||
}
|
||||
}
|
||||
|
||||
function _graphIdToFilename(graphId) {
|
||||
const filename = (graphId.charAt(0).toUpperCase() + graphId.slice(1)) + "Graph";
|
||||
return "./components/graph/" + filename + ".qml";
|
||||
}
|
||||
}
|
||||
@@ -1,31 +0,0 @@
|
||||
{
|
||||
"KPlugin": {
|
||||
"Authors": [
|
||||
{
|
||||
"Name": "Kotelnik"
|
||||
},
|
||||
{
|
||||
"Name": "orblazer"
|
||||
},
|
||||
{
|
||||
"Name": "Starrah"
|
||||
}
|
||||
],
|
||||
"Category": "System Information",
|
||||
"Description": "Plasmoid for monitoring CPU, memory, network traffic GPU and disk IO. This is an fork from \"Resources Monitor\" by Kotelnik",
|
||||
"Description[fr]": "Plasmoid pour surveiller l'utilisation du CPU, de la mémoire, du traffic réseau, de la carte graphique et des disque dur. Ceci est un fork de \"Resources Monitor\" de Kotelnik",
|
||||
"Description[nl]": "Een Plasmoid voor het monitoren van CPU, geheugen, netwerkverkeer GPU en disk IO. Dit is een vork uit \"Resources Monitor\" van Kotelnik.",
|
||||
"Icon": "utilities-system-monitor",
|
||||
"Id": "org.kde.resourcesMonitor-fork",
|
||||
"License": "GPL-3.0-only",
|
||||
"Name": "Resources Monitor (fork)",
|
||||
"Name[fr]": "Moniteur des ressources (fork)",
|
||||
"Name[nl]": "Systeembronmonitor (afsplitsing)",
|
||||
"Version": "2.10.2",
|
||||
"Website": "https://github.com/orblazer/plasma-applet-resources-monitor",
|
||||
"BugReportUrl": "https://github.com/orblazer/plasma-applet-resources-monitor/issues"
|
||||
},
|
||||
"X-Plasma-API": "declarativeappletscript",
|
||||
"X-Plasma-MainScript": "ui/main.qml",
|
||||
"KPackageStructure": "Plasma/Applet"
|
||||
}
|
||||
@@ -1,29 +0,0 @@
|
||||
# Translations
|
||||
|
||||
You can found found the list of locale code here : [List of country locale code](https://saimana.com/list-of-country-locale-code/)
|
||||
|
||||
## New Translations
|
||||
|
||||
1. Fill out [`template.pot`](template.pot) with your translations then open a [new issue](https://github.com/orblazer/plasma-applet-resources-monitor/issues/new), name the file `spanish.txt`, attach the txt file to the issue (drag and drop).
|
||||
|
||||
Or if you know how to make a pull request
|
||||
|
||||
1. Copy the `template.pot` file and name it your locale's code (Eg: `en`/`de`/`fr`) with the extension `.po`. Then fill out all the `msgstr ""`.
|
||||
2. Add `Name` and `Description` translation to `../metadata.json`
|
||||
3. Build the translation with `npm run i18n:build`
|
||||
4. Test the translation with `LANGUAGE="country_CODE:locale" LANG="country_CODE.UTF-8" npm run dev`
|
||||
|
||||
**Note** : You need install language pack first.
|
||||
|
||||
## Scripts
|
||||
|
||||
- `npm run i18:merge` will parse the `i18n()` calls in the `*.qml` files and write it to the `template.pot` file. Then it will merge any changes into the `*.po` language files.
|
||||
- `npm run i18n:build` will convert the `*.po` files to it's binary `*.mo` version and move it to `contents/locale/...` which will bundle the translations in the `*.plasmoid` without needing the user to manually install them.
|
||||
|
||||
## Status
|
||||
|
||||
| Locale | Lines | % Done|
|
||||
|----------|---------|-------|
|
||||
| Template | 95 | |
|
||||
| fr | 95/95 | 100% |
|
||||
| nl | 95/95 | 100% |
|
||||
@@ -1,453 +0,0 @@
|
||||
# Translation of resourcesMonitor-fork in french
|
||||
# Copyright (C) 2021
|
||||
# This file is distributed under the same license as the resourcesMonitor-fork package.
|
||||
# orblazer, 2021.
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: resourcesMonitor-fork\n"
|
||||
"Report-Msgid-Bugs-To: https://github.com/orblazer/plasma-applet-resources-monitor\n"
|
||||
"POT-Creation-Date: 2023-05-31 18:43+0200\n"
|
||||
"PO-Revision-Date: 2023-05-31 18:43+0200\n"
|
||||
"Last-Translator: orblazer\n"
|
||||
"Language: fr\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
||||
#: ../contents/config/config.qml:6 ../contents/ui/config/ConfigData.qml:120 ../contents/ui/config/ConfigGeneral.qml:79
|
||||
msgctxt "Config header"
|
||||
msgid "General"
|
||||
msgstr "Général"
|
||||
|
||||
#: ../contents/config/config.qml:11
|
||||
msgctxt "Config header"
|
||||
msgid "Data"
|
||||
msgstr "Données"
|
||||
|
||||
#: ../contents/config/config.qml:16
|
||||
msgctxt "Config header"
|
||||
msgid "Appearance"
|
||||
msgstr "Apparence"
|
||||
|
||||
#: ../contents/ui/components/functions.js:20
|
||||
msgctxt "kilobyte suffix"
|
||||
msgid "Bps"
|
||||
msgstr "ops"
|
||||
|
||||
#: ../contents/ui/components/functions.js:28
|
||||
msgctxt "kilobit suffix"
|
||||
msgid "bps"
|
||||
msgstr "bps"
|
||||
|
||||
#: ../contents/ui/components/functions.js:36
|
||||
msgctxt "kibibyte suffix"
|
||||
msgid "iB/s"
|
||||
msgstr "io/s"
|
||||
|
||||
#: ../contents/ui/components/graph/CpuGraph.qml:41
|
||||
msgctxt "Graph label"
|
||||
msgid "Clock"
|
||||
msgstr "Horloge"
|
||||
|
||||
#: ../contents/ui/components/graph/CpuGraph.qml:41 ../contents/ui/components/graph/GpuGraph.qml:32
|
||||
msgctxt "Graph label"
|
||||
msgid "Temp."
|
||||
msgstr "Temp."
|
||||
|
||||
#: ../contents/ui/components/graph/DisksGraph.qml:28
|
||||
msgctxt "Graph label"
|
||||
msgid "Read"
|
||||
msgstr "Lecture"
|
||||
|
||||
#: ../contents/ui/components/graph/DisksGraph.qml:28
|
||||
msgctxt "Graph label"
|
||||
msgid "Write"
|
||||
msgstr "Écriture"
|
||||
|
||||
#: ../contents/ui/components/graph/GpuGraph.qml:56
|
||||
msgctxt "Percent unit"
|
||||
msgid "%1%"
|
||||
msgstr "%1%"
|
||||
|
||||
#: ../contents/ui/components/graph/NetworkGraph.qml:31
|
||||
msgctxt "Graph label"
|
||||
msgid "Receiving"
|
||||
msgstr "Réception"
|
||||
|
||||
#: ../contents/ui/components/graph/NetworkGraph.qml:31
|
||||
msgctxt "Graph label"
|
||||
msgid "Sending"
|
||||
msgstr "Envoi"
|
||||
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:76 ../contents/ui/config/ConfigAppearance.qml:361
|
||||
#: ../contents/ui/config/ConfigGeneral.qml:122
|
||||
msgctxt "Chart name"
|
||||
msgid "CPU"
|
||||
msgstr "CPU"
|
||||
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:81 ../contents/ui/config/ConfigAppearance.qml:386
|
||||
#: ../contents/ui/config/ConfigGeneral.qml:209
|
||||
msgctxt "Chart name"
|
||||
msgid "Memory"
|
||||
msgstr "Mémoire"
|
||||
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:86 ../contents/ui/config/ConfigAppearance.qml:436
|
||||
#: ../contents/ui/config/ConfigGeneral.qml:315
|
||||
msgctxt "Chart name"
|
||||
msgid "GPU"
|
||||
msgstr "GPU"
|
||||
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:91 ../contents/ui/config/ConfigAppearance.qml:468
|
||||
#: ../contents/ui/config/ConfigData.qml:239 ../contents/ui/config/ConfigGeneral.qml:352
|
||||
msgctxt "Chart name"
|
||||
msgid "Disks I/O"
|
||||
msgstr "Disques E/S"
|
||||
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:96 ../contents/ui/config/ConfigAppearance.qml:411
|
||||
#: ../contents/ui/config/ConfigData.qml:142 ../contents/ui/config/ConfigGeneral.qml:270
|
||||
msgctxt "Chart name"
|
||||
msgid "Network"
|
||||
msgstr "Réseau"
|
||||
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:115 ../contents/ui/config/ConfigGeneral.qml:116
|
||||
msgctxt "Config header"
|
||||
msgid "Charts"
|
||||
msgstr "Graphiques"
|
||||
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:120
|
||||
msgctxt "Config header"
|
||||
msgid "Text"
|
||||
msgstr "Texte"
|
||||
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:125
|
||||
msgctxt "Config header"
|
||||
msgid "Colors"
|
||||
msgstr "Couleurs"
|
||||
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:143
|
||||
msgid "Vertical layout"
|
||||
msgstr "Disposition verticale"
|
||||
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:148
|
||||
msgid "History amount:"
|
||||
msgstr "Quantité d'histoire :"
|
||||
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:155
|
||||
msgid "Width:"
|
||||
msgstr "Largeur :"
|
||||
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:162
|
||||
msgid "Height:"
|
||||
msgstr "Hauteur :"
|
||||
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:169
|
||||
msgid "Margin:"
|
||||
msgstr "Marge :"
|
||||
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:180
|
||||
msgid "Fill opacity:"
|
||||
msgstr "Opacité du remplissage :"
|
||||
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:192
|
||||
msgid "Charts order"
|
||||
msgstr "Ordre des graphiques"
|
||||
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:280
|
||||
msgid "Drop shadows"
|
||||
msgstr "Ombres portées"
|
||||
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:285
|
||||
msgid "Font scale:"
|
||||
msgstr "Taille de la police :"
|
||||
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:297
|
||||
msgid "Text displayment:"
|
||||
msgstr "Affichage du texte :"
|
||||
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:303
|
||||
msgctxt "Text displayment"
|
||||
msgid "Always"
|
||||
msgstr "Toujours"
|
||||
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:306
|
||||
msgctxt "Text displayment"
|
||||
msgid "On hover"
|
||||
msgstr "Au survol"
|
||||
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:309
|
||||
msgctxt "Text displayment"
|
||||
msgid "Hints when hover"
|
||||
msgstr "Indices au survol"
|
||||
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:319
|
||||
msgid "Placement:"
|
||||
msgstr "Placement :"
|
||||
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:325
|
||||
msgctxt "Text placement"
|
||||
msgid "Top left"
|
||||
msgstr "En haut à gauche"
|
||||
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:328
|
||||
msgctxt "Text placement"
|
||||
msgid "Top right"
|
||||
msgstr "En haut à droite"
|
||||
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:331
|
||||
msgctxt "Text placement"
|
||||
msgid "Bottom left"
|
||||
msgstr "En bas à gauche"
|
||||
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:334
|
||||
msgctxt "Text placement"
|
||||
msgid "Bottom right"
|
||||
msgstr "En bas à droite"
|
||||
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:351
|
||||
msgid "Charts colors"
|
||||
msgstr "Couleurs des graphiques"
|
||||
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:367 ../contents/ui/config/ConfigAppearance.qml:442
|
||||
msgctxt "Chart config"
|
||||
msgid "Usage:"
|
||||
msgstr "Utilisation :"
|
||||
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:369 ../contents/ui/config/ConfigAppearance.qml:394
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:419 ../contents/ui/config/ConfigAppearance.qml:426
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:444 ../contents/ui/config/ConfigAppearance.qml:451
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:476 ../contents/ui/config/ConfigAppearance.qml:483
|
||||
msgctxt "Chart color"
|
||||
msgid "Choose series color"
|
||||
msgstr "Choisir la couleur de la série"
|
||||
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:374 ../contents/ui/config/ConfigAppearance.qml:456
|
||||
msgctxt "Chart config"
|
||||
msgid "Temperature:"
|
||||
msgstr "Température :"
|
||||
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:376 ../contents/ui/config/ConfigAppearance.qml:458
|
||||
msgctxt "Chart color"
|
||||
msgid "Choose text color"
|
||||
msgstr "Choisir la couleur du texte"
|
||||
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:392
|
||||
msgctxt "Chart config"
|
||||
msgid "Physical:"
|
||||
msgstr "Physique :"
|
||||
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:399
|
||||
msgctxt "Chart config"
|
||||
msgid "Swap:"
|
||||
msgstr "Swap :"
|
||||
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:401
|
||||
msgctxt "Chart color"
|
||||
msgid "Choose color of series and text"
|
||||
msgstr "Choisir la couleur de la série et du texte"
|
||||
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:417 ../contents/ui/config/ConfigData.qml:191
|
||||
msgctxt "Chart config"
|
||||
msgid "Receiving:"
|
||||
msgstr "Réception :"
|
||||
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:424 ../contents/ui/config/ConfigData.qml:215
|
||||
msgctxt "Chart config"
|
||||
msgid "Sending:"
|
||||
msgstr "Envoi :"
|
||||
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:449
|
||||
msgctxt "Chart config"
|
||||
msgid "Memory:"
|
||||
msgstr "Mémoire :"
|
||||
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:474 ../contents/ui/config/ConfigData.qml:250
|
||||
msgctxt "Chart config"
|
||||
msgid "Read:"
|
||||
msgstr "Lecture :"
|
||||
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:481 ../contents/ui/config/ConfigData.qml:274
|
||||
msgctxt "Chart config"
|
||||
msgid "Write:"
|
||||
msgstr "Écriture :"
|
||||
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:489
|
||||
msgid "Threshold text colors"
|
||||
msgstr "Couleurs des seuils d'alerte"
|
||||
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:495
|
||||
msgid "Warning status:"
|
||||
msgstr "État d’avertissement"
|
||||
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:497
|
||||
msgid "Choose text color when the value is in warning status"
|
||||
msgstr "Choisissez la couleur du texte quand le seuil d'avertissement est passé"
|
||||
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:502
|
||||
msgid "Critical status:"
|
||||
msgstr "État critique"
|
||||
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:504
|
||||
msgid "Choose text color when the value is in critical status"
|
||||
msgstr "Choisissez la couleur du texte quand le seul critique est passé"
|
||||
|
||||
#: ../contents/ui/config/ConfigData.qml:39 ../contents/ui/config/ConfigData.qml:67
|
||||
msgid "Custom"
|
||||
msgstr "Personnalisée"
|
||||
|
||||
#: ../contents/ui/config/ConfigData.qml:125
|
||||
msgctxt "Config header"
|
||||
msgid "Thresholds"
|
||||
msgstr "Seuils d'alerte"
|
||||
|
||||
#: ../contents/ui/config/ConfigData.qml:148
|
||||
msgid "Network interfaces:"
|
||||
msgstr "Interfaces réseau :"
|
||||
|
||||
#: ../contents/ui/config/ConfigData.qml:185 ../contents/ui/config/ConfigData.qml:244
|
||||
msgid "Maximum transfer speed"
|
||||
msgstr "Vitesse de transfert maximale"
|
||||
|
||||
#: ../contents/ui/config/ConfigData.qml:298
|
||||
msgctxt "Config header"
|
||||
msgid "Graphic card"
|
||||
msgstr "Carte graphique"
|
||||
|
||||
#: ../contents/ui/config/ConfigData.qml:305
|
||||
msgid "Graphic card:"
|
||||
msgstr "Carte graphique :"
|
||||
|
||||
#: ../contents/ui/config/ConfigData.qml:347
|
||||
msgid "Warning"
|
||||
msgstr "Avertissement"
|
||||
|
||||
#: ../contents/ui/config/ConfigData.qml:354
|
||||
msgid "Critical"
|
||||
msgstr "Critique"
|
||||
|
||||
#: ../contents/ui/config/ConfigData.qml:361
|
||||
msgid "CPU Temperature:"
|
||||
msgstr "Température du CPU"
|
||||
|
||||
#: ../contents/ui/config/ConfigData.qml:393
|
||||
msgid "Physical Memory Usage:"
|
||||
msgstr "Utilisation de la mémoire"
|
||||
|
||||
#: ../contents/ui/config/ConfigData.qml:417
|
||||
msgid "GPU Temperature:"
|
||||
msgstr "Température du GPU"
|
||||
|
||||
#: ../contents/ui/config/ConfigGeneral.qml:84
|
||||
msgctxt "Config header"
|
||||
msgid "Click action"
|
||||
msgstr "Action du clique"
|
||||
|
||||
#: ../contents/ui/config/ConfigGeneral.qml:101
|
||||
msgid "Update interval:"
|
||||
msgstr "Intervalle d'actualisation :"
|
||||
|
||||
#: ../contents/ui/config/ConfigGeneral.qml:110
|
||||
msgid "%1 seconds"
|
||||
msgstr "%1 secondes"
|
||||
|
||||
#: ../contents/ui/config/ConfigGeneral.qml:128 ../contents/ui/config/ConfigGeneral.qml:215
|
||||
#: ../contents/ui/config/ConfigGeneral.qml:276
|
||||
msgid "Visibility:"
|
||||
msgstr "Visibilité"
|
||||
|
||||
#: ../contents/ui/config/ConfigGeneral.qml:134 ../contents/ui/config/ConfigGeneral.qml:170
|
||||
#: ../contents/ui/config/ConfigGeneral.qml:221 ../contents/ui/config/ConfigGeneral.qml:282
|
||||
msgid "Disabled"
|
||||
msgstr "Désactivé"
|
||||
|
||||
#: ../contents/ui/config/ConfigGeneral.qml:137
|
||||
msgid "Total usage"
|
||||
msgstr "Utilisation total"
|
||||
|
||||
#: ../contents/ui/config/ConfigGeneral.qml:140
|
||||
msgid "System usage"
|
||||
msgstr "Utilisation du système"
|
||||
|
||||
#: ../contents/ui/config/ConfigGeneral.qml:143
|
||||
msgid "User usage"
|
||||
msgstr "Utilisation de l'Utilisateur"
|
||||
|
||||
#: ../contents/ui/config/ConfigGeneral.qml:163
|
||||
msgid "Clock visibility:"
|
||||
msgstr "Visibilité de l'horloge :"
|
||||
|
||||
#: ../contents/ui/config/ConfigGeneral.qml:173
|
||||
msgctxt "Agregator"
|
||||
msgid "Average"
|
||||
msgstr "Moyenne"
|
||||
|
||||
#: ../contents/ui/config/ConfigGeneral.qml:176
|
||||
msgctxt "Agregator"
|
||||
msgid "Minimum"
|
||||
msgstr "Minimum"
|
||||
|
||||
#: ../contents/ui/config/ConfigGeneral.qml:179
|
||||
msgctxt "Agregator"
|
||||
msgid "Maximum"
|
||||
msgstr "Maximum"
|
||||
|
||||
#: ../contents/ui/config/ConfigGeneral.qml:199 ../contents/ui/config/ConfigGeneral.qml:341
|
||||
msgid "Show temperature"
|
||||
msgstr "Afficher la température"
|
||||
|
||||
#: ../contents/ui/config/ConfigGeneral.qml:224
|
||||
msgid "Physical memory (in KiB)"
|
||||
msgstr "Mémoire Physique (en Kio)"
|
||||
|
||||
#: ../contents/ui/config/ConfigGeneral.qml:227
|
||||
msgid "Physical memory (in %)"
|
||||
msgstr "Mémoire Physique (en %)"
|
||||
|
||||
#: ../contents/ui/config/ConfigGeneral.qml:230
|
||||
msgid "Application memory (in KiB)"
|
||||
msgstr "Mémoire Applicative (en Kio)"
|
||||
|
||||
#: ../contents/ui/config/ConfigGeneral.qml:233
|
||||
msgid "Application memory (in %)"
|
||||
msgstr "Mémoire Applicative (en %)"
|
||||
|
||||
#: ../contents/ui/config/ConfigGeneral.qml:259
|
||||
msgid "Show swap"
|
||||
msgstr "Afficher le swap"
|
||||
|
||||
#: ../contents/ui/config/ConfigGeneral.qml:285
|
||||
msgid "In kibibyte (KiB/s)"
|
||||
msgstr "En kibioctet (Kio/s)"
|
||||
|
||||
#: ../contents/ui/config/ConfigGeneral.qml:288
|
||||
msgid "In kilobit (Kbps)"
|
||||
msgstr "En kilobit (Kbps)"
|
||||
|
||||
#: ../contents/ui/config/ConfigGeneral.qml:291
|
||||
msgid "In kilobyte (KBps)"
|
||||
msgstr "En kilooctet (Kops)"
|
||||
|
||||
#: ../contents/ui/config/ConfigGeneral.qml:327 ../contents/ui/config/ConfigGeneral.qml:364
|
||||
msgid "Enabled?"
|
||||
msgstr "Activé ?"
|
||||
|
||||
#: ../contents/ui/config/ConfigGeneral.qml:331
|
||||
msgid "Show memory"
|
||||
msgstr "Afficher la mémoire"
|
||||
|
||||
#: ../contents/ui/config/ConfigGeneral.qml:336
|
||||
msgid "Memory in percent"
|
||||
msgstr "Mémoire en pourcent"
|
||||
|
||||
#: ../contents/ui/config/ConfigGeneral.qml:380
|
||||
msgid "Search an application:"
|
||||
msgstr "Chercher une application :"
|
||||
|
||||
#: ../contents/ui/config/ConfigGeneral.qml:382
|
||||
msgid "Application name"
|
||||
msgstr "Nom de l'application"
|
||||
|
||||
#: ../contents/ui/config/ConfigGeneral.qml:389
|
||||
msgid "Applications"
|
||||
msgstr "Applications"
|
||||
@@ -1,454 +0,0 @@
|
||||
# Translation of resourcesMonitor-fork in nl
|
||||
# Copyright (C) 2021
|
||||
# This file is distributed under the same license as the resourcesMonitor-fork package.
|
||||
# Heimen Stoffels <vistausss@fastmail.com>, 2021.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: resourcesMonitor-fork\n"
|
||||
"Report-Msgid-Bugs-To: https://github.com/orblazer/plasma-applet-resources-monitor\n"
|
||||
"POT-Creation-Date: 2023-05-31 18:43+0200\n"
|
||||
"PO-Revision-Date: 2023-05-31 18:44+0200\n"
|
||||
"Last-Translator: orblazer\n"
|
||||
"Language: nl\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Generator: Poedit 3.0\n"
|
||||
|
||||
#: ../contents/config/config.qml:6 ../contents/ui/config/ConfigData.qml:120 ../contents/ui/config/ConfigGeneral.qml:79
|
||||
msgctxt "Config header"
|
||||
msgid "General"
|
||||
msgstr "Algemeen"
|
||||
|
||||
#: ../contents/config/config.qml:11
|
||||
msgctxt "Config header"
|
||||
msgid "Data"
|
||||
msgstr "Gegevens"
|
||||
|
||||
#: ../contents/config/config.qml:16
|
||||
msgctxt "Config header"
|
||||
msgid "Appearance"
|
||||
msgstr "Uiterlijk"
|
||||
|
||||
#: ../contents/ui/components/functions.js:20
|
||||
msgctxt "kilobyte suffix"
|
||||
msgid "Bps"
|
||||
msgstr "Bps"
|
||||
|
||||
#: ../contents/ui/components/functions.js:28
|
||||
msgctxt "kilobit suffix"
|
||||
msgid "bps"
|
||||
msgstr "bps"
|
||||
|
||||
#: ../contents/ui/components/functions.js:36
|
||||
msgctxt "kibibyte suffix"
|
||||
msgid "iB/s"
|
||||
msgstr "iB/s"
|
||||
|
||||
#: ../contents/ui/components/graph/CpuGraph.qml:41
|
||||
msgctxt "Graph label"
|
||||
msgid "Clock"
|
||||
msgstr "Klok"
|
||||
|
||||
#: ../contents/ui/components/graph/CpuGraph.qml:41 ../contents/ui/components/graph/GpuGraph.qml:32
|
||||
msgctxt "Graph label"
|
||||
msgid "Temp."
|
||||
msgstr "Temp."
|
||||
|
||||
#: ../contents/ui/components/graph/DisksGraph.qml:28
|
||||
msgctxt "Graph label"
|
||||
msgid "Read"
|
||||
msgstr "Lees"
|
||||
|
||||
#: ../contents/ui/components/graph/DisksGraph.qml:28
|
||||
msgctxt "Graph label"
|
||||
msgid "Write"
|
||||
msgstr "Schrijf"
|
||||
|
||||
#: ../contents/ui/components/graph/GpuGraph.qml:56
|
||||
msgctxt "Percent unit"
|
||||
msgid "%1%"
|
||||
msgstr "%1%"
|
||||
|
||||
#: ../contents/ui/components/graph/NetworkGraph.qml:31
|
||||
msgctxt "Graph label"
|
||||
msgid "Receiving"
|
||||
msgstr "Ontvangst"
|
||||
|
||||
#: ../contents/ui/components/graph/NetworkGraph.qml:31
|
||||
msgctxt "Graph label"
|
||||
msgid "Sending"
|
||||
msgstr "Verzend."
|
||||
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:76 ../contents/ui/config/ConfigAppearance.qml:361
|
||||
#: ../contents/ui/config/ConfigGeneral.qml:122
|
||||
msgctxt "Chart name"
|
||||
msgid "CPU"
|
||||
msgstr "CPU"
|
||||
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:81 ../contents/ui/config/ConfigAppearance.qml:386
|
||||
#: ../contents/ui/config/ConfigGeneral.qml:209
|
||||
msgctxt "Chart name"
|
||||
msgid "Memory"
|
||||
msgstr "Geheugen"
|
||||
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:86 ../contents/ui/config/ConfigAppearance.qml:436
|
||||
#: ../contents/ui/config/ConfigGeneral.qml:315
|
||||
msgctxt "Chart name"
|
||||
msgid "GPU"
|
||||
msgstr "GPU"
|
||||
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:91 ../contents/ui/config/ConfigAppearance.qml:468
|
||||
#: ../contents/ui/config/ConfigData.qml:239 ../contents/ui/config/ConfigGeneral.qml:352
|
||||
msgctxt "Chart name"
|
||||
msgid "Disks I/O"
|
||||
msgstr "Schijven I/O"
|
||||
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:96 ../contents/ui/config/ConfigAppearance.qml:411
|
||||
#: ../contents/ui/config/ConfigData.qml:142 ../contents/ui/config/ConfigGeneral.qml:270
|
||||
msgctxt "Chart name"
|
||||
msgid "Network"
|
||||
msgstr "Netwerk"
|
||||
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:115 ../contents/ui/config/ConfigGeneral.qml:116
|
||||
msgctxt "Config header"
|
||||
msgid "Charts"
|
||||
msgstr "Grafieken"
|
||||
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:120
|
||||
msgctxt "Config header"
|
||||
msgid "Text"
|
||||
msgstr "Tekst"
|
||||
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:125
|
||||
msgctxt "Config header"
|
||||
msgid "Colors"
|
||||
msgstr "Kleuren"
|
||||
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:143
|
||||
msgid "Vertical layout"
|
||||
msgstr "Verticale indeling"
|
||||
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:148
|
||||
msgid "History amount:"
|
||||
msgstr "Historie bedrag:"
|
||||
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:155
|
||||
msgid "Width:"
|
||||
msgstr "Breedte:"
|
||||
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:162
|
||||
msgid "Height:"
|
||||
msgstr "Hoogte:"
|
||||
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:169
|
||||
msgid "Margin:"
|
||||
msgstr "Marge:"
|
||||
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:180
|
||||
msgid "Fill opacity:"
|
||||
msgstr "Ondoorzichtigheid vullen:"
|
||||
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:192
|
||||
msgid "Charts order"
|
||||
msgstr "Volgorde grafieken"
|
||||
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:280
|
||||
msgid "Drop shadows"
|
||||
msgstr "Vallende schaduwen"
|
||||
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:285
|
||||
msgid "Font scale:"
|
||||
msgstr "Tekstgrootte:"
|
||||
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:297
|
||||
msgid "Text displayment:"
|
||||
msgstr "Tekst tonen:"
|
||||
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:303
|
||||
msgctxt "Text displayment"
|
||||
msgid "Always"
|
||||
msgstr "Altijd"
|
||||
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:306
|
||||
msgctxt "Text displayment"
|
||||
msgid "On hover"
|
||||
msgstr "Na aanwijzen"
|
||||
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:309
|
||||
msgctxt "Text displayment"
|
||||
msgid "Hints when hover"
|
||||
msgstr "Tip tonen na aanwijzen"
|
||||
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:319
|
||||
msgid "Placement:"
|
||||
msgstr "Locatie:"
|
||||
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:325
|
||||
msgctxt "Text placement"
|
||||
msgid "Top left"
|
||||
msgstr "Linksboven"
|
||||
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:328
|
||||
msgctxt "Text placement"
|
||||
msgid "Top right"
|
||||
msgstr "Rechtboven"
|
||||
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:331
|
||||
msgctxt "Text placement"
|
||||
msgid "Bottom left"
|
||||
msgstr "Linksonder"
|
||||
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:334
|
||||
msgctxt "Text placement"
|
||||
msgid "Bottom right"
|
||||
msgstr "Rechtsonder"
|
||||
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:351
|
||||
msgid "Charts colors"
|
||||
msgstr "Kleuren grafieken"
|
||||
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:367 ../contents/ui/config/ConfigAppearance.qml:442
|
||||
msgctxt "Chart config"
|
||||
msgid "Usage:"
|
||||
msgstr "Gebruik:"
|
||||
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:369 ../contents/ui/config/ConfigAppearance.qml:394
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:419 ../contents/ui/config/ConfigAppearance.qml:426
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:444 ../contents/ui/config/ConfigAppearance.qml:451
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:476 ../contents/ui/config/ConfigAppearance.qml:483
|
||||
msgctxt "Chart color"
|
||||
msgid "Choose series color"
|
||||
msgstr "Kies seriekleur"
|
||||
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:374 ../contents/ui/config/ConfigAppearance.qml:456
|
||||
msgctxt "Chart config"
|
||||
msgid "Temperature:"
|
||||
msgstr "Temperatuur:"
|
||||
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:376 ../contents/ui/config/ConfigAppearance.qml:458
|
||||
msgctxt "Chart color"
|
||||
msgid "Choose text color"
|
||||
msgstr "Kies tekstkleur"
|
||||
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:392
|
||||
msgctxt "Chart config"
|
||||
msgid "Physical:"
|
||||
msgstr "Fysiek:"
|
||||
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:399
|
||||
msgctxt "Chart config"
|
||||
msgid "Swap:"
|
||||
msgstr "Swap:"
|
||||
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:401
|
||||
msgctxt "Chart color"
|
||||
msgid "Choose color of series and text"
|
||||
msgstr "Kies kleur van serie en tekst"
|
||||
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:417 ../contents/ui/config/ConfigData.qml:191
|
||||
msgctxt "Chart config"
|
||||
msgid "Receiving:"
|
||||
msgstr "Ontvangst:"
|
||||
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:424 ../contents/ui/config/ConfigData.qml:215
|
||||
msgctxt "Chart config"
|
||||
msgid "Sending:"
|
||||
msgstr "Verzending:"
|
||||
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:449
|
||||
msgctxt "Chart config"
|
||||
msgid "Memory:"
|
||||
msgstr "Geheugen"
|
||||
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:474 ../contents/ui/config/ConfigData.qml:250
|
||||
msgctxt "Chart config"
|
||||
msgid "Read:"
|
||||
msgstr "Lees:"
|
||||
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:481 ../contents/ui/config/ConfigData.qml:274
|
||||
msgctxt "Chart config"
|
||||
msgid "Write:"
|
||||
msgstr "Schrijf:"
|
||||
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:489
|
||||
msgid "Threshold text colors"
|
||||
msgstr "Drempelwaarde tekstkleuren"
|
||||
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:495
|
||||
msgid "Warning status:"
|
||||
msgstr "Waarschuwingsstatus:"
|
||||
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:497
|
||||
msgid "Choose text color when the value is in warning status"
|
||||
msgstr "Kies de tekstkleur wanneer de waarde in de waarschuwingsstatus staat"
|
||||
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:502
|
||||
msgid "Critical status:"
|
||||
msgstr "Kritieke status:"
|
||||
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:504
|
||||
msgid "Choose text color when the value is in critical status"
|
||||
msgstr "Tekstkleur kiezen wanneer de waarde in kritieke status is"
|
||||
|
||||
#: ../contents/ui/config/ConfigData.qml:39 ../contents/ui/config/ConfigData.qml:67
|
||||
msgid "Custom"
|
||||
msgstr "Aangepast"
|
||||
|
||||
#: ../contents/ui/config/ConfigData.qml:125
|
||||
msgctxt "Config header"
|
||||
msgid "Thresholds"
|
||||
msgstr "Drempels"
|
||||
|
||||
#: ../contents/ui/config/ConfigData.qml:148
|
||||
msgid "Network interfaces:"
|
||||
msgstr "Netwerkkaarten:"
|
||||
|
||||
#: ../contents/ui/config/ConfigData.qml:185 ../contents/ui/config/ConfigData.qml:244
|
||||
msgid "Maximum transfer speed"
|
||||
msgstr "Maximale overdrachtssnelheid"
|
||||
|
||||
#: ../contents/ui/config/ConfigData.qml:298
|
||||
msgctxt "Config header"
|
||||
msgid "Graphic card"
|
||||
msgstr "Grafische kaart"
|
||||
|
||||
#: ../contents/ui/config/ConfigData.qml:305
|
||||
msgid "Graphic card:"
|
||||
msgstr "Grafische kaart:"
|
||||
|
||||
#: ../contents/ui/config/ConfigData.qml:347
|
||||
msgid "Warning"
|
||||
msgstr "Waarschuwing"
|
||||
|
||||
#: ../contents/ui/config/ConfigData.qml:354
|
||||
msgid "Critical"
|
||||
msgstr "Kritisch"
|
||||
|
||||
#: ../contents/ui/config/ConfigData.qml:361
|
||||
msgid "CPU Temperature:"
|
||||
msgstr "CPU-temperatuur:"
|
||||
|
||||
#: ../contents/ui/config/ConfigData.qml:393
|
||||
msgid "Physical Memory Usage:"
|
||||
msgstr "Fysiek geheugengebruik:"
|
||||
|
||||
#: ../contents/ui/config/ConfigData.qml:417
|
||||
msgid "GPU Temperature:"
|
||||
msgstr "GPU-temperatuur:"
|
||||
|
||||
#: ../contents/ui/config/ConfigGeneral.qml:84
|
||||
msgctxt "Config header"
|
||||
msgid "Click action"
|
||||
msgstr "Klik actie"
|
||||
|
||||
#: ../contents/ui/config/ConfigGeneral.qml:101
|
||||
msgid "Update interval:"
|
||||
msgstr "Bijwerktussenpoos:"
|
||||
|
||||
#: ../contents/ui/config/ConfigGeneral.qml:110
|
||||
msgid "%1 seconds"
|
||||
msgstr "%1 seconden"
|
||||
|
||||
#: ../contents/ui/config/ConfigGeneral.qml:128 ../contents/ui/config/ConfigGeneral.qml:215
|
||||
#: ../contents/ui/config/ConfigGeneral.qml:276
|
||||
msgid "Visibility:"
|
||||
msgstr "Zichtbaarheid:"
|
||||
|
||||
#: ../contents/ui/config/ConfigGeneral.qml:134 ../contents/ui/config/ConfigGeneral.qml:170
|
||||
#: ../contents/ui/config/ConfigGeneral.qml:221 ../contents/ui/config/ConfigGeneral.qml:282
|
||||
msgid "Disabled"
|
||||
msgstr "Uitgeschakeld"
|
||||
|
||||
#: ../contents/ui/config/ConfigGeneral.qml:137
|
||||
msgid "Total usage"
|
||||
msgstr "Totaal gebruik"
|
||||
|
||||
#: ../contents/ui/config/ConfigGeneral.qml:140
|
||||
msgid "System usage"
|
||||
msgstr "Systeemgebruik"
|
||||
|
||||
#: ../contents/ui/config/ConfigGeneral.qml:143
|
||||
msgid "User usage"
|
||||
msgstr "Gebruikersgebruik"
|
||||
|
||||
#: ../contents/ui/config/ConfigGeneral.qml:163
|
||||
msgid "Clock visibility:"
|
||||
msgstr "Klok zichtbaarheid:"
|
||||
|
||||
#: ../contents/ui/config/ConfigGeneral.qml:173
|
||||
msgctxt "Agregator"
|
||||
msgid "Average"
|
||||
msgstr "Gemiddeld"
|
||||
|
||||
#: ../contents/ui/config/ConfigGeneral.qml:176
|
||||
msgctxt "Agregator"
|
||||
msgid "Minimum"
|
||||
msgstr "Minimaal"
|
||||
|
||||
#: ../contents/ui/config/ConfigGeneral.qml:179
|
||||
msgctxt "Agregator"
|
||||
msgid "Maximum"
|
||||
msgstr "Maximaal"
|
||||
|
||||
#: ../contents/ui/config/ConfigGeneral.qml:199 ../contents/ui/config/ConfigGeneral.qml:341
|
||||
msgid "Show temperature"
|
||||
msgstr "Toon temperatuur"
|
||||
|
||||
#: ../contents/ui/config/ConfigGeneral.qml:224
|
||||
msgid "Physical memory (in KiB)"
|
||||
msgstr "Fysiek geheugen (in KiB)"
|
||||
|
||||
#: ../contents/ui/config/ConfigGeneral.qml:227
|
||||
msgid "Physical memory (in %)"
|
||||
msgstr "Fysiek geheugen (in %)"
|
||||
|
||||
#: ../contents/ui/config/ConfigGeneral.qml:230
|
||||
msgid "Application memory (in KiB)"
|
||||
msgstr "Toepassingsgeheugen (KiB)"
|
||||
|
||||
#: ../contents/ui/config/ConfigGeneral.qml:233
|
||||
msgid "Application memory (in %)"
|
||||
msgstr "Toepassingsgeheugen (in %)"
|
||||
|
||||
#: ../contents/ui/config/ConfigGeneral.qml:259
|
||||
msgid "Show swap"
|
||||
msgstr "Toon swap"
|
||||
|
||||
#: ../contents/ui/config/ConfigGeneral.qml:285
|
||||
msgid "In kibibyte (KiB/s)"
|
||||
msgstr "In kibibyte (KiB/s)"
|
||||
|
||||
#: ../contents/ui/config/ConfigGeneral.qml:288
|
||||
msgid "In kilobit (Kbps)"
|
||||
msgstr "In kilobit (Kbps)"
|
||||
|
||||
#: ../contents/ui/config/ConfigGeneral.qml:291
|
||||
msgid "In kilobyte (KBps)"
|
||||
msgstr "In kilobyte (KBps)"
|
||||
|
||||
#: ../contents/ui/config/ConfigGeneral.qml:327 ../contents/ui/config/ConfigGeneral.qml:364
|
||||
msgid "Enabled?"
|
||||
msgstr "Ingeschakeld?"
|
||||
|
||||
#: ../contents/ui/config/ConfigGeneral.qml:331
|
||||
msgid "Show memory"
|
||||
msgstr "Toon geheugen"
|
||||
|
||||
#: ../contents/ui/config/ConfigGeneral.qml:336
|
||||
msgid "Memory in percent"
|
||||
msgstr "Geheugen in procent"
|
||||
|
||||
#: ../contents/ui/config/ConfigGeneral.qml:380
|
||||
msgid "Search an application:"
|
||||
msgstr "Een toepassing zoeken:"
|
||||
|
||||
#: ../contents/ui/config/ConfigGeneral.qml:382
|
||||
msgid "Application name"
|
||||
msgstr "Naam toepassing"
|
||||
|
||||
#: ../contents/ui/config/ConfigGeneral.qml:389
|
||||
msgid "Applications"
|
||||
msgstr "Toepassingen"
|
||||
-483
@@ -1,483 +0,0 @@
|
||||
# Translation of resourcesMonitor-fork in LANGUAGE
|
||||
# Copyright (C) 2023
|
||||
# This file is distributed under the same license as the resourcesMonitor-fork package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: resourcesMonitor-fork\n"
|
||||
"Report-Msgid-Bugs-To: https://github.com/orblazer/plasma-applet-resources-monitor\n"
|
||||
"POT-Creation-Date: 2023-05-31 18:43+0200\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"Language: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
||||
#: ../contents/config/config.qml:6
|
||||
#: ../contents/ui/config/ConfigData.qml:120
|
||||
#: ../contents/ui/config/ConfigGeneral.qml:79
|
||||
msgctxt "Config header"
|
||||
msgid "General"
|
||||
msgstr ""
|
||||
|
||||
#: ../contents/config/config.qml:11
|
||||
msgctxt "Config header"
|
||||
msgid "Data"
|
||||
msgstr ""
|
||||
|
||||
#: ../contents/config/config.qml:16
|
||||
msgctxt "Config header"
|
||||
msgid "Appearance"
|
||||
msgstr ""
|
||||
|
||||
#: ../contents/ui/components/functions.js:20
|
||||
msgctxt "kilobyte suffix"
|
||||
msgid "Bps"
|
||||
msgstr ""
|
||||
|
||||
#: ../contents/ui/components/functions.js:28
|
||||
msgctxt "kilobit suffix"
|
||||
msgid "bps"
|
||||
msgstr ""
|
||||
|
||||
#: ../contents/ui/components/functions.js:36
|
||||
msgctxt "kibibyte suffix"
|
||||
msgid "iB/s"
|
||||
msgstr ""
|
||||
|
||||
#: ../contents/ui/components/graph/CpuGraph.qml:41
|
||||
msgctxt "Graph label"
|
||||
msgid "Clock"
|
||||
msgstr ""
|
||||
|
||||
#: ../contents/ui/components/graph/CpuGraph.qml:41
|
||||
#: ../contents/ui/components/graph/GpuGraph.qml:32
|
||||
msgctxt "Graph label"
|
||||
msgid "Temp."
|
||||
msgstr ""
|
||||
|
||||
#: ../contents/ui/components/graph/DisksGraph.qml:28
|
||||
msgctxt "Graph label"
|
||||
msgid "Read"
|
||||
msgstr ""
|
||||
|
||||
#: ../contents/ui/components/graph/DisksGraph.qml:28
|
||||
msgctxt "Graph label"
|
||||
msgid "Write"
|
||||
msgstr ""
|
||||
|
||||
#: ../contents/ui/components/graph/GpuGraph.qml:56
|
||||
msgctxt "Percent unit"
|
||||
msgid "%1%"
|
||||
msgstr ""
|
||||
|
||||
#: ../contents/ui/components/graph/NetworkGraph.qml:31
|
||||
msgctxt "Graph label"
|
||||
msgid "Receiving"
|
||||
msgstr ""
|
||||
|
||||
#: ../contents/ui/components/graph/NetworkGraph.qml:31
|
||||
msgctxt "Graph label"
|
||||
msgid "Sending"
|
||||
msgstr ""
|
||||
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:76
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:361
|
||||
#: ../contents/ui/config/ConfigGeneral.qml:122
|
||||
msgctxt "Chart name"
|
||||
msgid "CPU"
|
||||
msgstr ""
|
||||
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:81
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:386
|
||||
#: ../contents/ui/config/ConfigGeneral.qml:209
|
||||
msgctxt "Chart name"
|
||||
msgid "Memory"
|
||||
msgstr ""
|
||||
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:86
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:436
|
||||
#: ../contents/ui/config/ConfigGeneral.qml:315
|
||||
msgctxt "Chart name"
|
||||
msgid "GPU"
|
||||
msgstr ""
|
||||
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:91
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:468
|
||||
#: ../contents/ui/config/ConfigData.qml:239
|
||||
#: ../contents/ui/config/ConfigGeneral.qml:352
|
||||
msgctxt "Chart name"
|
||||
msgid "Disks I/O"
|
||||
msgstr ""
|
||||
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:96
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:411
|
||||
#: ../contents/ui/config/ConfigData.qml:142
|
||||
#: ../contents/ui/config/ConfigGeneral.qml:270
|
||||
msgctxt "Chart name"
|
||||
msgid "Network"
|
||||
msgstr ""
|
||||
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:115
|
||||
#: ../contents/ui/config/ConfigGeneral.qml:116
|
||||
msgctxt "Config header"
|
||||
msgid "Charts"
|
||||
msgstr ""
|
||||
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:120
|
||||
msgctxt "Config header"
|
||||
msgid "Text"
|
||||
msgstr ""
|
||||
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:125
|
||||
msgctxt "Config header"
|
||||
msgid "Colors"
|
||||
msgstr ""
|
||||
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:143
|
||||
msgid "Vertical layout"
|
||||
msgstr ""
|
||||
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:148
|
||||
msgid "History amount:"
|
||||
msgstr ""
|
||||
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:155
|
||||
msgid "Width:"
|
||||
msgstr ""
|
||||
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:162
|
||||
msgid "Height:"
|
||||
msgstr ""
|
||||
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:169
|
||||
msgid "Margin:"
|
||||
msgstr ""
|
||||
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:180
|
||||
msgid "Fill opacity:"
|
||||
msgstr ""
|
||||
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:192
|
||||
msgid "Charts order"
|
||||
msgstr ""
|
||||
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:280
|
||||
msgid "Drop shadows"
|
||||
msgstr ""
|
||||
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:285
|
||||
msgid "Font scale:"
|
||||
msgstr ""
|
||||
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:297
|
||||
msgid "Text displayment:"
|
||||
msgstr ""
|
||||
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:303
|
||||
msgctxt "Text displayment"
|
||||
msgid "Always"
|
||||
msgstr ""
|
||||
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:306
|
||||
msgctxt "Text displayment"
|
||||
msgid "On hover"
|
||||
msgstr ""
|
||||
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:309
|
||||
msgctxt "Text displayment"
|
||||
msgid "Hints when hover"
|
||||
msgstr ""
|
||||
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:319
|
||||
msgid "Placement:"
|
||||
msgstr ""
|
||||
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:325
|
||||
msgctxt "Text placement"
|
||||
msgid "Top left"
|
||||
msgstr ""
|
||||
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:328
|
||||
msgctxt "Text placement"
|
||||
msgid "Top right"
|
||||
msgstr ""
|
||||
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:331
|
||||
msgctxt "Text placement"
|
||||
msgid "Bottom left"
|
||||
msgstr ""
|
||||
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:334
|
||||
msgctxt "Text placement"
|
||||
msgid "Bottom right"
|
||||
msgstr ""
|
||||
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:351
|
||||
msgid "Charts colors"
|
||||
msgstr ""
|
||||
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:367
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:442
|
||||
msgctxt "Chart config"
|
||||
msgid "Usage:"
|
||||
msgstr ""
|
||||
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:369
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:394
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:419
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:426
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:444
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:451
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:476
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:483
|
||||
msgctxt "Chart color"
|
||||
msgid "Choose series color"
|
||||
msgstr ""
|
||||
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:374
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:456
|
||||
msgctxt "Chart config"
|
||||
msgid "Temperature:"
|
||||
msgstr ""
|
||||
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:376
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:458
|
||||
msgctxt "Chart color"
|
||||
msgid "Choose text color"
|
||||
msgstr ""
|
||||
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:392
|
||||
msgctxt "Chart config"
|
||||
msgid "Physical:"
|
||||
msgstr ""
|
||||
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:399
|
||||
msgctxt "Chart config"
|
||||
msgid "Swap:"
|
||||
msgstr ""
|
||||
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:401
|
||||
msgctxt "Chart color"
|
||||
msgid "Choose color of series and text"
|
||||
msgstr ""
|
||||
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:417
|
||||
#: ../contents/ui/config/ConfigData.qml:191
|
||||
msgctxt "Chart config"
|
||||
msgid "Receiving:"
|
||||
msgstr ""
|
||||
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:424
|
||||
#: ../contents/ui/config/ConfigData.qml:215
|
||||
msgctxt "Chart config"
|
||||
msgid "Sending:"
|
||||
msgstr ""
|
||||
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:449
|
||||
msgctxt "Chart config"
|
||||
msgid "Memory:"
|
||||
msgstr ""
|
||||
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:474
|
||||
#: ../contents/ui/config/ConfigData.qml:250
|
||||
msgctxt "Chart config"
|
||||
msgid "Read:"
|
||||
msgstr ""
|
||||
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:481
|
||||
#: ../contents/ui/config/ConfigData.qml:274
|
||||
msgctxt "Chart config"
|
||||
msgid "Write:"
|
||||
msgstr ""
|
||||
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:489
|
||||
msgid "Threshold text colors"
|
||||
msgstr ""
|
||||
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:495
|
||||
msgid "Warning status:"
|
||||
msgstr ""
|
||||
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:497
|
||||
msgid "Choose text color when the value is in warning status"
|
||||
msgstr ""
|
||||
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:502
|
||||
msgid "Critical status:"
|
||||
msgstr ""
|
||||
|
||||
#: ../contents/ui/config/ConfigAppearance.qml:504
|
||||
msgid "Choose text color when the value is in critical status"
|
||||
msgstr ""
|
||||
|
||||
#: ../contents/ui/config/ConfigData.qml:39
|
||||
#: ../contents/ui/config/ConfigData.qml:67
|
||||
msgid "Custom"
|
||||
msgstr ""
|
||||
|
||||
#: ../contents/ui/config/ConfigData.qml:125
|
||||
msgctxt "Config header"
|
||||
msgid "Thresholds"
|
||||
msgstr ""
|
||||
|
||||
#: ../contents/ui/config/ConfigData.qml:148
|
||||
msgid "Network interfaces:"
|
||||
msgstr ""
|
||||
|
||||
#: ../contents/ui/config/ConfigData.qml:185
|
||||
#: ../contents/ui/config/ConfigData.qml:244
|
||||
msgid "Maximum transfer speed"
|
||||
msgstr ""
|
||||
|
||||
#: ../contents/ui/config/ConfigData.qml:298
|
||||
msgctxt "Config header"
|
||||
msgid "Graphic card"
|
||||
msgstr ""
|
||||
|
||||
#: ../contents/ui/config/ConfigData.qml:305
|
||||
msgid "Graphic card:"
|
||||
msgstr ""
|
||||
|
||||
#: ../contents/ui/config/ConfigData.qml:347
|
||||
msgid "Warning"
|
||||
msgstr ""
|
||||
|
||||
#: ../contents/ui/config/ConfigData.qml:354
|
||||
msgid "Critical"
|
||||
msgstr ""
|
||||
|
||||
#: ../contents/ui/config/ConfigData.qml:361
|
||||
msgid "CPU Temperature:"
|
||||
msgstr ""
|
||||
|
||||
#: ../contents/ui/config/ConfigData.qml:393
|
||||
msgid "Physical Memory Usage:"
|
||||
msgstr ""
|
||||
|
||||
#: ../contents/ui/config/ConfigData.qml:417
|
||||
msgid "GPU Temperature:"
|
||||
msgstr ""
|
||||
|
||||
#: ../contents/ui/config/ConfigGeneral.qml:84
|
||||
msgctxt "Config header"
|
||||
msgid "Click action"
|
||||
msgstr ""
|
||||
|
||||
#: ../contents/ui/config/ConfigGeneral.qml:101
|
||||
msgid "Update interval:"
|
||||
msgstr ""
|
||||
|
||||
#: ../contents/ui/config/ConfigGeneral.qml:110
|
||||
msgid "%1 seconds"
|
||||
msgstr ""
|
||||
|
||||
#: ../contents/ui/config/ConfigGeneral.qml:128
|
||||
#: ../contents/ui/config/ConfigGeneral.qml:215
|
||||
#: ../contents/ui/config/ConfigGeneral.qml:276
|
||||
msgid "Visibility:"
|
||||
msgstr ""
|
||||
|
||||
#: ../contents/ui/config/ConfigGeneral.qml:134
|
||||
#: ../contents/ui/config/ConfigGeneral.qml:170
|
||||
#: ../contents/ui/config/ConfigGeneral.qml:221
|
||||
#: ../contents/ui/config/ConfigGeneral.qml:282
|
||||
msgid "Disabled"
|
||||
msgstr ""
|
||||
|
||||
#: ../contents/ui/config/ConfigGeneral.qml:137
|
||||
msgid "Total usage"
|
||||
msgstr ""
|
||||
|
||||
#: ../contents/ui/config/ConfigGeneral.qml:140
|
||||
msgid "System usage"
|
||||
msgstr ""
|
||||
|
||||
#: ../contents/ui/config/ConfigGeneral.qml:143
|
||||
msgid "User usage"
|
||||
msgstr ""
|
||||
|
||||
#: ../contents/ui/config/ConfigGeneral.qml:163
|
||||
msgid "Clock visibility:"
|
||||
msgstr ""
|
||||
|
||||
#: ../contents/ui/config/ConfigGeneral.qml:173
|
||||
msgctxt "Agregator"
|
||||
msgid "Average"
|
||||
msgstr ""
|
||||
|
||||
#: ../contents/ui/config/ConfigGeneral.qml:176
|
||||
msgctxt "Agregator"
|
||||
msgid "Minimum"
|
||||
msgstr ""
|
||||
|
||||
#: ../contents/ui/config/ConfigGeneral.qml:179
|
||||
msgctxt "Agregator"
|
||||
msgid "Maximum"
|
||||
msgstr ""
|
||||
|
||||
#: ../contents/ui/config/ConfigGeneral.qml:199
|
||||
#: ../contents/ui/config/ConfigGeneral.qml:341
|
||||
msgid "Show temperature"
|
||||
msgstr ""
|
||||
|
||||
#: ../contents/ui/config/ConfigGeneral.qml:224
|
||||
msgid "Physical memory (in KiB)"
|
||||
msgstr ""
|
||||
|
||||
#: ../contents/ui/config/ConfigGeneral.qml:227
|
||||
msgid "Physical memory (in %)"
|
||||
msgstr ""
|
||||
|
||||
#: ../contents/ui/config/ConfigGeneral.qml:230
|
||||
msgid "Application memory (in KiB)"
|
||||
msgstr ""
|
||||
|
||||
#: ../contents/ui/config/ConfigGeneral.qml:233
|
||||
msgid "Application memory (in %)"
|
||||
msgstr ""
|
||||
|
||||
#: ../contents/ui/config/ConfigGeneral.qml:259
|
||||
msgid "Show swap"
|
||||
msgstr ""
|
||||
|
||||
#: ../contents/ui/config/ConfigGeneral.qml:285
|
||||
msgid "In kibibyte (KiB/s)"
|
||||
msgstr ""
|
||||
|
||||
#: ../contents/ui/config/ConfigGeneral.qml:288
|
||||
msgid "In kilobit (Kbps)"
|
||||
msgstr ""
|
||||
|
||||
#: ../contents/ui/config/ConfigGeneral.qml:291
|
||||
msgid "In kilobyte (KBps)"
|
||||
msgstr ""
|
||||
|
||||
#: ../contents/ui/config/ConfigGeneral.qml:327
|
||||
#: ../contents/ui/config/ConfigGeneral.qml:364
|
||||
msgid "Enabled?"
|
||||
msgstr ""
|
||||
|
||||
#: ../contents/ui/config/ConfigGeneral.qml:331
|
||||
msgid "Show memory"
|
||||
msgstr ""
|
||||
|
||||
#: ../contents/ui/config/ConfigGeneral.qml:336
|
||||
msgid "Memory in percent"
|
||||
msgstr ""
|
||||
|
||||
#: ../contents/ui/config/ConfigGeneral.qml:380
|
||||
msgid "Search an application:"
|
||||
msgstr ""
|
||||
|
||||
#: ../contents/ui/config/ConfigGeneral.qml:382
|
||||
msgid "Application name"
|
||||
msgstr ""
|
||||
|
||||
#: ../contents/ui/config/ConfigGeneral.qml:389
|
||||
msgid "Applications"
|
||||
msgstr ""
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,120 +1,125 @@
|
||||
{
|
||||
"dependencies": {
|
||||
"@anthropic-ai/claude-code": "^0.2.45",
|
||||
"@babel/cli": "^7.23.9",
|
||||
"@babel/core": "^7.23.9",
|
||||
"@babel/preset-env": "^7.23.9",
|
||||
"@faker-js/faker": "^9.3.0",
|
||||
"@ionic/cli": "^7.2.0",
|
||||
"@mrodrig/json-2-csv-cli": "^5.5.5",
|
||||
"@nestjs/cli": "^10.3.2",
|
||||
"@openapitools/openapi-generator-cli": "^2.9.0",
|
||||
"@quasar/cli": "^2.3.0",
|
||||
"@types/node": "^22.10.1",
|
||||
"@vue/cli": "^5.0.8",
|
||||
"@anthropic-ai/claude-code": "^2.1.22",
|
||||
"@babel/cli": "^7.28.6",
|
||||
"@babel/core": "^7.28.6",
|
||||
"@babel/preset-env": "^7.28.6",
|
||||
"@faker-js/faker": "^10.2.0",
|
||||
"@google/gemini-cli": "^0.26.0",
|
||||
"@ionic/cli": "^7.2.1",
|
||||
"@mrodrig/json-2-csv-cli": "^5.5.9",
|
||||
"@nestjs/cli": "^11.0.16",
|
||||
"@openai/codex": "^0.92.0",
|
||||
"@openapitools/openapi-generator-cli": "^2.28.0",
|
||||
"@quasar/cli": "^2.5.0",
|
||||
"@types/node": "^25.1.0",
|
||||
"@vue/cli": "^5.0.9",
|
||||
"@webpack-cli/generators": "^3.0.7",
|
||||
"aigle": "^1.14.1",
|
||||
"ari-client": "^2.2.0",
|
||||
"base-x": "^5.0.0",
|
||||
"blitz": "^2.0.5",
|
||||
"base-x": "^5.0.1",
|
||||
"blitz": "^3.0.2",
|
||||
"byline": "^5.0.0",
|
||||
"chokidar-cli": "^3.0.0",
|
||||
"cjs-to-es6": "^2.0.1",
|
||||
"cline": "^1.0.10",
|
||||
"colorette": "^2.0.20",
|
||||
"composerize": "^1.6.10",
|
||||
"create-astro": "^4.7.3",
|
||||
"create-expo-app": "^3.2.0",
|
||||
"create-feathers": "^5.0.22",
|
||||
"create-next-app": "^15.0.4",
|
||||
"composerize": "^1.7.5",
|
||||
"create-astro": "^4.13.2",
|
||||
"create-expo-app": "^3.5.3",
|
||||
"create-feathers": "^5.0.37",
|
||||
"create-next-app": "^16.1.6",
|
||||
"create-nollup-app": "^0.0.9",
|
||||
"create-nuxt-app": "^5.0.0",
|
||||
"create-redwood-app": "^8.4.1",
|
||||
"create-refine-app": "^1.12.3",
|
||||
"create-strapi-app": "^5.5.0",
|
||||
"create-vite": "^6.0.1",
|
||||
"create-nuxt-app": "^6.0.0",
|
||||
"create-redwood-app": "^8.9.0",
|
||||
"create-refine-app": "^1.12.11",
|
||||
"create-strapi-app": "^5.34.0",
|
||||
"create-vite": "^8.2.0",
|
||||
"create-vite-plugin-ssr": "^0.0.304",
|
||||
"csvtojson": "^2.0.10",
|
||||
"csvtojson": "^2.0.14",
|
||||
"curl-trace-parser": "^0.0.10",
|
||||
"curlconverter": "^4.11.0",
|
||||
"curlconverter": "^4.12.0",
|
||||
"degit": "^2.8.4",
|
||||
"deoptigate": "^0.7.1",
|
||||
"ejs": "^3.1.9",
|
||||
"electron": "33.2.1",
|
||||
"eslint": "^9.16.0",
|
||||
"ejs": "^4.0.1",
|
||||
"electron": "39.2.0",
|
||||
"eslint": "^9.39.2",
|
||||
"expo-cli": "6.3.10",
|
||||
"express": "^4.18.2",
|
||||
"express": "^5.2.1",
|
||||
"express-generator": "^4.16.1",
|
||||
"fastify-cli": "^7.0.1",
|
||||
"fastify-cli": "^7.4.1",
|
||||
"file-header": "^0.1.1",
|
||||
"fx": "^35.0.0",
|
||||
"fx": "^39.2.0",
|
||||
"gavel": "^10.0.4",
|
||||
"generate-password": "^1.7.1",
|
||||
"generator-jhipster": "^8.1.0",
|
||||
"generator-jhipster-nodejs": "^3.0.0",
|
||||
"generator-jhipster": "^8.11.0",
|
||||
"generator-jhipster-nodejs": "^3.2.0",
|
||||
"generator-jhipster-quasar": "^0.14.3",
|
||||
"http-server": "^14.1.1",
|
||||
"hygen": "^6.2.11",
|
||||
"ignite-cli": "^10.0.5",
|
||||
"jscodeshift": "^17.1.1",
|
||||
"json-2-csv": "^5.5.5",
|
||||
"ignite-cli": "^11.4.0",
|
||||
"ipx": "^3.1.1",
|
||||
"jscodeshift": "^17.3.0",
|
||||
"json-2-csv": "^5.5.10",
|
||||
"json-server": "^1.0.0-alpha.23",
|
||||
"jsvu": "^2.2.0",
|
||||
"jsvu": "^3.0.3",
|
||||
"knex": "^3.1.0",
|
||||
"lerna": "^8.1.2",
|
||||
"lodash": "^4.17.21",
|
||||
"magic-regexp": "^0.8.0",
|
||||
"lerna": "^9.0.3",
|
||||
"localtunnel": "^2.0.2",
|
||||
"lodash": "^4.17.23",
|
||||
"magic-regexp": "^0.10.0",
|
||||
"mhtml2html": "^3.0.0",
|
||||
"mjml": "^4.15.3",
|
||||
"mjml": "^4.18.0",
|
||||
"mkpass": "https://github.com/harish2704/mkpass",
|
||||
"neovim": "^5.3.0",
|
||||
"neovim": "^5.4.0",
|
||||
"nightmare": "^3.0.2",
|
||||
"nodemon": "^3.0.3",
|
||||
"nodemon": "^3.1.11",
|
||||
"nollup": "^0.21.0",
|
||||
"npm-offline-registry": "^0.0.9",
|
||||
"omgopass": "^3.2.1",
|
||||
"onchange": "^7.1.0",
|
||||
"pg": "8.13.1",
|
||||
"pg": "8.17.2",
|
||||
"pkg": "^5.8.1",
|
||||
"plop": "^4.0.1",
|
||||
"postgraphile": "4.13.0",
|
||||
"prettier": "^3.2.5",
|
||||
"plop": "^4.0.5",
|
||||
"postgraphile": "4.14.1",
|
||||
"prettier": "^3.8.1",
|
||||
"proxy-kutti": "^1.0.1",
|
||||
"puppeteer": "^23.10.1",
|
||||
"puppeteer-core": "^23.10.1",
|
||||
"puppeteer": "^24.30.0",
|
||||
"puppeteer-core": "^24.30.0",
|
||||
"pwa-asset-generator": "^8.1.2",
|
||||
"qrcode-svg": "^1.1.0",
|
||||
"react": "^19.0.0",
|
||||
"react-dom": "^19.0.0",
|
||||
"react-native": "^0.76.4",
|
||||
"react-native-web": "^0.19.10",
|
||||
"react": "^19.2.4",
|
||||
"react-dom": "^19.2.4",
|
||||
"react-native": "^0.83.1",
|
||||
"react-native-web": "^0.21.2",
|
||||
"react-scripts": "^5.0.1",
|
||||
"redis-commander": "^0.8.0",
|
||||
"rollup": "^4.12.0",
|
||||
"redis-commander": "^0.9.0",
|
||||
"rollup": "^4.57.0",
|
||||
"runtime-cli": "^3.2.0",
|
||||
"sass": "^1.71.0",
|
||||
"serve": "^14.2.1",
|
||||
"sharp-cli": "^5.1.0",
|
||||
"serve": "^14.2.5",
|
||||
"sharp-cli": "^5.2.0",
|
||||
"sqlite3": "^5.1.7",
|
||||
"ssh-access-manager": "^1.2.2",
|
||||
"storybook": "^8.4.7",
|
||||
"svgo": "^3.2.0",
|
||||
"storybook": "^10.0.7",
|
||||
"svgo": "^4.0.0",
|
||||
"sway-workspace-grid": "^0.0.2",
|
||||
"tailwind-config-viewer": "^2.0.4",
|
||||
"ts-node": "^10.9.2",
|
||||
"twilio": "^5.3.7",
|
||||
"typescript": "^5.3.3",
|
||||
"twilio": "^5.10.5",
|
||||
"typescript": "^5.9.3",
|
||||
"uglify-js": "^3.17.4",
|
||||
"uncss": "^0.17.3",
|
||||
"verdaccio": "^6.0.2",
|
||||
"vite": "^6.0.3",
|
||||
"webpack-cli": "^5.1.4",
|
||||
"wscat": "^6.0.1",
|
||||
"verdaccio": "^6.2.4",
|
||||
"vite": "^7.3.1",
|
||||
"webpack-cli": "^6.0.1",
|
||||
"wscat": "^6.1.0",
|
||||
"x-ray": "^2.3.4",
|
||||
"yeoman-environment": "^4.3.0",
|
||||
"zx": "^8.2.4"
|
||||
"yeoman-environment": "^5.1.2",
|
||||
"zx": "^8.8.5"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@swc/cli": "^0.6.0",
|
||||
"@swc/core": "^1.11.13"
|
||||
"@swc/cli": "^0.7.10",
|
||||
"@swc/core": "^1.15.11"
|
||||
},
|
||||
"packageManager": "yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e"
|
||||
}
|
||||
|
||||
+9784
-4452
File diff suppressed because it is too large
Load Diff
+2
-2
@@ -13,7 +13,7 @@ if test -z "$USER_PROFILEREAD"; then
|
||||
PATH="$HOME/.linuxbrew/bin:$PATH";
|
||||
PATH="$HOME/.local/bin:$HOME/bin:$PATH"
|
||||
PATH="$PATH:$HOME/.local/Apps/flutter/bin"
|
||||
PATH="$PYENV_ROOT/bin:$PATH"
|
||||
# PATH="$PYENV_ROOT/bin:$PATH"
|
||||
export PATH
|
||||
|
||||
export DENO_INSTALL="$HOME/.deno"
|
||||
@@ -37,4 +37,4 @@ if [ -n "$BASH_VERSION" -a -n "$PS1" ]; then
|
||||
. "$HOME/.bashrc"
|
||||
fi
|
||||
fi
|
||||
. "$HOME/.deno/env"
|
||||
. "$HOME/.deno/env"
|
||||
|
||||
Reference in New Issue
Block a user