mirror of
https://github.com/harish2704/dotFiles.git
synced 2026-09-10 15:21:09 +00:00
Compare commits
3
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
02b7972704 | ||
|
|
c3e9a96a44 | ||
|
|
9301e6e155 |
@@ -1,8 +0,0 @@
|
||||
# .bash_profile
|
||||
|
||||
# Get the aliases and functions
|
||||
if [ -f ~/.bashrc ]; then
|
||||
. ~/.bashrc
|
||||
fi
|
||||
|
||||
# User specific environment and startup programs
|
||||
+2
-40
@@ -5,42 +5,6 @@ if [ -f /etc/bashrc ]; then
|
||||
. /etc/bashrc
|
||||
fi
|
||||
|
||||
# User specific environment
|
||||
if [[ -z $HOME_BASH_RC_LOAD ]]
|
||||
then
|
||||
PATH="$HOME/.node_modules_mine/node_modules/.bin:$PATH";
|
||||
PATH="$HOME/.local/bin:$PATH";
|
||||
PATH="$HOME/go/bin:$PATH";
|
||||
PATH="$HOME/.linuxbrew/bin:$PATH";
|
||||
PATH="$HOME/.local/bin:$HOME/bin:$PATH"
|
||||
PATH="$PATH:$HOME/.local/Apps/flutter/bin"
|
||||
export PATH
|
||||
|
||||
export NVM_DIR="$HOME/.nvm"
|
||||
export DENO_INSTALL="/home/harish/.deno"
|
||||
export PATH="$DENO_INSTALL/bin:$PATH"
|
||||
export TIME_STYLE=long-iso
|
||||
export TCLLIBPATH=~/.local/share/tkthemes
|
||||
export ANDROID_HOME=/home/harish/.local/Apps/android-sdk
|
||||
|
||||
export GTK_IM_MODULE=ibus
|
||||
export XMODIFIERS=@im=ibus
|
||||
export QT_IM_MODULE=ibus
|
||||
unset rc
|
||||
export SYSTEMD_PAGER=
|
||||
|
||||
# User specific aliases and functions
|
||||
# if [ -d ~/.bashrc.d ]; then
|
||||
# for rc in ~/.bashrc.d/*; do
|
||||
# if [ -f "$rc" ]; then
|
||||
# . "$rc"
|
||||
# fi
|
||||
# done
|
||||
# fi
|
||||
|
||||
export HOME_BASH_RC_LOAD=1
|
||||
fi
|
||||
|
||||
|
||||
if [[ -f /usr/share/fzf/shell/key-bindings.bash ]]; then
|
||||
. /usr/share/fzf/shell/key-bindings.bash
|
||||
@@ -53,8 +17,6 @@ fi
|
||||
#export PS1='\e[1;36;40m[\u@\h\e[1;33;40m \W]\e[0;37;40m\$ '
|
||||
PS1='\[\033[01;32m\]\u@\h\[\033[01;34m\] \w \$\[\033[00m\] '
|
||||
|
||||
nvmLoad(){
|
||||
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
|
||||
[ -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 EDITOR=vim
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
[ActivityManager]
|
||||
_k_friendly_name=Activity Manager
|
||||
switch-to-activity-2b22975f-ece8-4bc8-a72a-f88fc0add08b=none,none,Switch to activity "Default"
|
||||
switch-to-activity-acb90208-98fb-44c9-a0d0-ed2e3c67520c=none,none,Switch to activity "Default"
|
||||
|
||||
[KDE Keyboard Layout Switcher]
|
||||
@@ -215,11 +216,11 @@ view_zoom_out=Meta+-,Meta+-,Zoom Out
|
||||
|
||||
[mediacontrol]
|
||||
_k_friendly_name=Media Controller
|
||||
mediavolumedown=none,,Media volume down
|
||||
mediavolumeup=none,,Media volume up
|
||||
mediavolumedown=none,none,Media volume down
|
||||
mediavolumeup=none,none,Media volume up
|
||||
nextmedia=Media Next,Media Next,Media playback next
|
||||
pausemedia=Media Pause,Media Pause,Pause media playback
|
||||
playmedia=none,,Play media playback
|
||||
playmedia=none,none,Play media playback
|
||||
playpausemedia=Media Play,Media Play,Play/Pause media playback
|
||||
previousmedia=Media Previous,Media Previous,Media playback previous
|
||||
stopmedia=Media Stop,Media Stop,Stop media playback
|
||||
|
||||
+7
-1
@@ -54,6 +54,9 @@ tiles={"layoutDirection":"horizontal","tiles":[{"width":0.25},{"width":0.5},{"wi
|
||||
[Tiling][37c04cea-60e5-572b-8cdf-0edec2e3e650]
|
||||
tiles={"layoutDirection":"horizontal","tiles":[{"width":0.25},{"width":0.5},{"width":0.25}]}
|
||||
|
||||
[Tiling][439e5ff6-4113-5e1f-9343-637ddef82008]
|
||||
tiles={"layoutDirection":"horizontal","tiles":[{"width":0.25},{"width":0.5},{"width":0.25}]}
|
||||
|
||||
[Tiling][4b32c1ec-cf2f-5157-9ba6-70191f308af7]
|
||||
tiles={"layoutDirection":"horizontal","tiles":[{"width":0.25},{"width":0.5},{"width":0.25}]}
|
||||
|
||||
@@ -75,6 +78,9 @@ tiles={"layoutDirection":"horizontal","tiles":[{"width":0.25},{"width":0.5},{"wi
|
||||
[Tiling][ccd244ca-5575-569f-a8c9-ce17c79b0288]
|
||||
tiles={"layoutDirection":"horizontal","tiles":[{"width":0.25},{"width":0.5},{"width":0.25}]}
|
||||
|
||||
[Tiling][e0ede2ad-3993-5f06-892f-6edfc85dc7f2]
|
||||
tiles={"layoutDirection":"horizontal","tiles":[{"width":0.25},{"width":0.5},{"width":0.25}]}
|
||||
|
||||
[Tiling][ecc5d445-b642-5d22-991f-6423e65b585e]
|
||||
tiles={"layoutDirection":"horizontal","tiles":[{"width":0.25},{"width":0.5},{"width":0.25}]}
|
||||
|
||||
@@ -82,4 +88,4 @@ tiles={"layoutDirection":"horizontal","tiles":[{"width":0.25},{"width":0.5},{"wi
|
||||
RollOverDesktops=false
|
||||
|
||||
[Xwayland]
|
||||
Scale=1
|
||||
Scale=1.25
|
||||
|
||||
@@ -23,6 +23,8 @@ plugin=org.kde.plasma.digitalclock
|
||||
|
||||
[Containments][3][Applets][21][Configuration]
|
||||
PreloadWeight=100
|
||||
popupHeight=450
|
||||
popupWidth=396
|
||||
|
||||
[Containments][3][Applets][22]
|
||||
immutability=1
|
||||
@@ -72,6 +74,8 @@ plugin=org.kde.plasma.kickoff
|
||||
|
||||
[Containments][3][Applets][4][Configuration]
|
||||
PreloadWeight=100
|
||||
popupHeight=574
|
||||
popupWidth=729
|
||||
|
||||
[Containments][3][Applets][4][Configuration][ConfigDialog]
|
||||
DialogHeight=660
|
||||
@@ -94,6 +98,19 @@ plugin=org.kde.plasma.pager
|
||||
[Containments][3][Applets][5][Configuration]
|
||||
PreloadWeight=26
|
||||
|
||||
[Containments][3][Applets][52]
|
||||
immutability=1
|
||||
plugin=org.kde.resourcesMonitor-fork
|
||||
|
||||
[Containments][3][Applets][52][Configuration][Appearance]
|
||||
fontScale=32
|
||||
graphHeight=1
|
||||
graphWidth=1
|
||||
|
||||
[Containments][3][Applets][52][Configuration][ConfigDialog]
|
||||
DialogHeight=660
|
||||
DialogWidth=880
|
||||
|
||||
[Containments][3][Applets][8]
|
||||
immutability=1
|
||||
plugin=org.kde.plasma.systemtray
|
||||
@@ -110,13 +127,13 @@ DialogWidth=1920
|
||||
PreloadWeight=18
|
||||
|
||||
[Containments][3][General]
|
||||
AppletOrder=4;28;38;27;5;22;8;21;31
|
||||
AppletOrder=4;28;38;27;52;5;22;8;21;31
|
||||
|
||||
[Containments][47]
|
||||
ItemGeometries-1600x900=
|
||||
[Containments][50]
|
||||
ItemGeometries-1536x864=
|
||||
ItemGeometries-1920x1080=
|
||||
ItemGeometriesHorizontal=
|
||||
activityId=acb90208-98fb-44c9-a0d0-ed2e3c67520c
|
||||
activityId=2b22975f-ece8-4bc8-a72a-f88fc0add08b
|
||||
formfactor=0
|
||||
immutability=1
|
||||
lastScreen=0
|
||||
@@ -124,25 +141,13 @@ location=0
|
||||
plugin=org.kde.plasma.folder
|
||||
wallpaperplugin=org.kde.image
|
||||
|
||||
[Containments][47][Wallpaper][org.kde.image][General]
|
||||
Image=file:///usr/share/backgrounds/f36/default/f36-01-day.png
|
||||
[Containments][50][General]
|
||||
ToolBoxButtonState=topcenter
|
||||
ToolBoxButtonX=377
|
||||
ToolBoxButtonY=34
|
||||
|
||||
[Containments][48]
|
||||
ItemGeometries-1600x900=
|
||||
ItemGeometriesHorizontal=
|
||||
activityId=acb90208-98fb-44c9-a0d0-ed2e3c67520c
|
||||
formfactor=0
|
||||
immutability=1
|
||||
lastScreen=0
|
||||
location=0
|
||||
plugin=org.kde.plasma.folder
|
||||
wallpaperplugin=org.kde.image
|
||||
|
||||
[Containments][48][Wallpaper][org.kde.image][General]
|
||||
Image=file:///usr/share/backgrounds/f36/default/f36-01-day.png
|
||||
|
||||
[Containments][49]
|
||||
activityId=acb90208-98fb-44c9-a0d0-ed2e3c67520c
|
||||
[Containments][51]
|
||||
activityId=2b22975f-ece8-4bc8-a72a-f88fc0add08b
|
||||
formfactor=0
|
||||
immutability=1
|
||||
lastScreen=1
|
||||
@@ -150,9 +155,6 @@ location=0
|
||||
plugin=org.kde.plasma.folder
|
||||
wallpaperplugin=org.kde.image
|
||||
|
||||
[Containments][49][Wallpaper][org.kde.image][General]
|
||||
Image=file:///usr/share/wallpapers/F36/contents/images/1920x1080.png
|
||||
|
||||
[Containments][9]
|
||||
activityId=
|
||||
formfactor=2
|
||||
@@ -160,6 +162,8 @@ immutability=1
|
||||
lastScreen=0
|
||||
location=3
|
||||
plugin=org.kde.plasma.private.systemtray
|
||||
popupHeight=432
|
||||
popupWidth=432
|
||||
wallpaperplugin=org.kde.image
|
||||
|
||||
[Containments][9][Applets][10]
|
||||
@@ -209,7 +213,7 @@ immutability=1
|
||||
plugin=org.kde.plasma.nightcolorcontrol
|
||||
|
||||
[Containments][9][Applets][16][Configuration]
|
||||
PreloadWeight=26
|
||||
PreloadWeight=2
|
||||
|
||||
[Containments][9][Applets][17]
|
||||
immutability=1
|
||||
@@ -243,6 +247,10 @@ PreloadWeight=100
|
||||
DialogHeight=660
|
||||
DialogWidth=880
|
||||
|
||||
[Containments][9][Applets][20][Configuration][General]
|
||||
currentTab=streams
|
||||
migrated=true
|
||||
|
||||
[Containments][9][Applets][23]
|
||||
immutability=1
|
||||
plugin=org.kde.plasma.battery
|
||||
@@ -287,8 +295,8 @@ PreloadWeight=26
|
||||
|
||||
[Containments][9][General]
|
||||
extraItems=org.kde.kdeconnect,org.kde.plasma.battery,org.kde.plasma.bluetooth,org.kde.plasma.devicenotifier,org.kde.plasma.keyboardindicator,org.kde.plasma.keyboardlayout,org.kde.plasma.manage-inputmethod,org.kde.plasma.mediacontroller,org.kde.plasma.networkmanagement,org.kde.plasma.nightcolorcontrol,org.kde.plasma.notifications,org.kde.plasma.printmanager,org.kde.plasma.vault,org.kde.plasma.volume,org.kde.kscreen
|
||||
knownItems=org.kde.kdeconnect,org.kde.plasma.battery,org.kde.plasma.bluetooth,org.kde.plasma.clipboard,org.kde.plasma.devicenotifier,org.kde.plasma.keyboardindicator,org.kde.plasma.keyboardlayout,org.kde.plasma.manage-inputmethod,org.kde.plasma.mediacontroller,org.kde.plasma.networkmanagement,org.kde.plasma.nightcolorcontrol,org.kde.plasma.notifications,org.kde.plasma.printmanager,org.kde.plasma.vault,org.kde.plasma.volume
|
||||
knownItems=org.kde.kdeconnect,org.kde.plasma.battery,org.kde.plasma.bluetooth,org.kde.plasma.clipboard,org.kde.plasma.devicenotifier,org.kde.plasma.keyboardindicator,org.kde.plasma.keyboardlayout,org.kde.plasma.manage-inputmethod,org.kde.plasma.mediacontroller,org.kde.plasma.networkmanagement,org.kde.plasma.nightcolorcontrol,org.kde.plasma.notifications,org.kde.plasma.printmanager,org.kde.plasma.vault,org.kde.plasma.volume,org.kde.kscreen
|
||||
|
||||
[ScreenMapping]
|
||||
itemsOnDisabledScreens=0,acb90208-98fb-44c9-a0d0-ed2e3c67520c,4,desktop:/chromium-browser-gtk4.desktop,desktop:/chrome-efjpoieainaodhnlgcofglmehiojbpeb-Profile_2.desktop,desktop:/chrome-majibeacmijgldglfjdinbpoekheiobd-Default.desktop,desktop:/chrome-efjpoieainaodhnlgcofglmehiojbpeb-Profile_9.desktop
|
||||
screenMapping=desktop:/chromium-browser-gtk4.desktop,1,acb90208-98fb-44c9-a0d0-ed2e3c67520c,desktop:/chrome-efjpoieainaodhnlgcofglmehiojbpeb-Profile_2.desktop,1,acb90208-98fb-44c9-a0d0-ed2e3c67520c,desktop:/chrome-majibeacmijgldglfjdinbpoekheiobd-Default.desktop,1,acb90208-98fb-44c9-a0d0-ed2e3c67520c,desktop:/chrome-efjpoieainaodhnlgcofglmehiojbpeb-Profile_9.desktop,1,acb90208-98fb-44c9-a0d0-ed2e3c67520c
|
||||
screenMapping=desktop:/chrome-efjpoieainaodhnlgcofglmehiojbpeb-Profile_2.desktop,0,acb90208-98fb-44c9-a0d0-ed2e3c67520c,desktop:/chrome-efjpoieainaodhnlgcofglmehiojbpeb-Profile_9.desktop,0,acb90208-98fb-44c9-a0d0-ed2e3c67520c,desktop:/chrome-majibeacmijgldglfjdinbpoekheiobd-Default.desktop,0,acb90208-98fb-44c9-a0d0-ed2e3c67520c,desktop:/chromium-browser-gtk4.desktop,0,acb90208-98fb-44c9-a0d0-ed2e3c67520c
|
||||
|
||||
+1
@@ -0,0 +1 @@
|
||||
../../../.profile
|
||||
@@ -1,2 +1,2 @@
|
||||
#!/usr/bin/env bash
|
||||
/usr/bin/chromium-browser --password-store=kwallet5 "$@"
|
||||
/usr/bin/chromium-browser --password-store=kwallet5 --force-device-scale-factor=1.25 "$@"
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
./lvim.sh
|
||||
./lvim
|
||||
./nvim-distro.sh
|
||||
|
||||
+20
@@ -0,0 +1,20 @@
|
||||
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
@@ -0,0 +1,220 @@
|
||||
<?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
@@ -0,0 +1,38 @@
|
||||
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
@@ -0,0 +1,31 @@
|
||||
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
@@ -0,0 +1,73 @@
|
||||
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
@@ -0,0 +1,35 @@
|
||||
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
@@ -0,0 +1,78 @@
|
||||
/**
|
||||
* @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
@@ -0,0 +1,70 @@
|
||||
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
@@ -0,0 +1,38 @@
|
||||
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
@@ -0,0 +1,85 @@
|
||||
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
@@ -0,0 +1,101 @@
|
||||
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
@@ -0,0 +1,113 @@
|
||||
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
@@ -0,0 +1,39 @@
|
||||
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
@@ -0,0 +1,164 @@
|
||||
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
@@ -0,0 +1,257 @@
|
||||
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
@@ -0,0 +1,47 @@
|
||||
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
@@ -0,0 +1,75 @@
|
||||
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
@@ -0,0 +1,72 @@
|
||||
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
@@ -0,0 +1,510 @@
|
||||
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
@@ -0,0 +1,451 @@
|
||||
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
@@ -0,0 +1,453 @@
|
||||
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
@@ -0,0 +1,49 @@
|
||||
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
@@ -0,0 +1,20 @@
|
||||
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
@@ -0,0 +1,57 @@
|
||||
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
@@ -0,0 +1,125 @@
|
||||
/**
|
||||
* 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
@@ -0,0 +1,123 @@
|
||||
/*
|
||||
* 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";
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
{
|
||||
"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"
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
# 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% |
|
||||
@@ -0,0 +1,453 @@
|
||||
# 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"
|
||||
@@ -0,0 +1,454 @@
|
||||
# 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
@@ -0,0 +1,483 @@
|
||||
# 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 ""
|
||||
Regular → Executable
+23
-38
@@ -1,46 +1,31 @@
|
||||
# Sample .profile for SuSE Linux
|
||||
# rewritten by Christian Steinruecken <cstein@suse.de>
|
||||
#
|
||||
# This file is read each time a login shell is started.
|
||||
# All other interactive shells will only read .bashrc; this is particularly
|
||||
# important for language settings, see below.
|
||||
|
||||
test -z "$PROFILEREAD" && . /etc/profile || true
|
||||
|
||||
# Most applications support several languages for their output.
|
||||
# To make use of this feature, simply uncomment one of the lines below or
|
||||
# add your own one (see /usr/share/locale/locale.alias for more codes)
|
||||
# This overwrites the system default set in /etc/sysconfig/language
|
||||
# in the variable RC_LANG.
|
||||
#
|
||||
#export LANG=de_DE.UTF-8 # uncomment this line for German output
|
||||
#export LANG=fr_FR.UTF-8 # uncomment this line for French output
|
||||
#export LANG=es_ES.UTF-8 # uncomment this line for Spanish output
|
||||
|
||||
|
||||
# Some people don't like fortune. If you uncomment the following lines,
|
||||
# you will have a fortune each time you log in ;-)
|
||||
|
||||
#if [ -x /usr/bin/fortune ] ; then
|
||||
# echo
|
||||
# /usr/bin/fortune
|
||||
# echo
|
||||
#fi
|
||||
if test -z "$USER_PROFILEREAD"; then
|
||||
|
||||
export PATH="$HOME/node_modules/.bin:$HOME/.local/bin:$PATH";
|
||||
export PATH+=:"$HOME/go/bin";
|
||||
export PATH="$HOME/.cargo/bin:$PATH"
|
||||
export PYENV_ROOT="$HOME/.pyenv"
|
||||
export PATH="$PYENV_ROOT/bin:$PATH"
|
||||
export PYENV_ROOT="$HOME/.pyenv"
|
||||
export NVM_DIR="$HOME/.nvm"
|
||||
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
|
||||
|
||||
PATH="$HOME/.node_modules_mine/node_modules/.bin:$PATH";
|
||||
PATH="$HOME/.local/bin:$PATH";
|
||||
PATH="$HOME/go/bin:$PATH";
|
||||
PATH="$HOME/.cargo/bin:$PATH"
|
||||
PATH="$HOME/.linuxbrew/bin:$PATH";
|
||||
PATH="$HOME/.local/bin:$HOME/bin:$PATH"
|
||||
PATH="$PATH:$HOME/.local/Apps/flutter/bin"
|
||||
PATH="$PYENV_ROOT/bin:$PATH"
|
||||
export PATH
|
||||
|
||||
export DENO_INSTALL="/home/harish/.deno"
|
||||
export PATH="$DENO_INSTALL/bin:$PATH"
|
||||
export TIME_STYLE=long-iso
|
||||
export TCLLIBPATH=$HOME/.local/share/tkthemes
|
||||
export ANDROID_HOME=$HOME/.local/Apps/android-sdk
|
||||
export SYSTEMD_PAGER=
|
||||
|
||||
export INPUT_METHOD=ibus
|
||||
export GTK_IM_MODULE=ibus
|
||||
export XMODIFIERS=@im=ibus
|
||||
export QT_IM_MODULE=ibus
|
||||
|
||||
export USER_PROFILEREAD=1
|
||||
export INPUT_METHOD=ibus
|
||||
export GTK_IM_MODULE=ibus
|
||||
export XMODIFIERS=@im=ibus
|
||||
export QT_IM_MODULE=ibus
|
||||
|
||||
export USER_PROFILEREAD=1
|
||||
fi
|
||||
|
||||
Reference in New Issue
Block a user