Skip to content

Commit

Permalink
Refactor 'Invert speed' feature
Browse files Browse the repository at this point in the history
  • Loading branch information
win0err committed Mar 17, 2024
1 parent 2ec7843 commit 871740e
Show file tree
Hide file tree
Showing 9 changed files with 127 additions and 194 deletions.
3 changes: 2 additions & 1 deletion .eslintrc
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@
"globals": {
"log": "readonly",
"logError": "readonly",
"TextDecoder": "readonly"
"TextDecoder": "readonly",
"Intl": "readonly"
}
}
56 changes: 30 additions & 26 deletions po/messages.pot
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: gnome-runcat-extension \n"
"Project-Id-Version: gnome-runcat-extension 26\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-01-15 10:39+0100\n"
"POT-Creation-Date: 2024-03-17 21:28+0300\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"
Expand All @@ -17,78 +17,82 @@ msgstr ""
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"

#: src/indicator.js:169
#: src/indicator.js:177
msgid "Open System Monitor"
msgstr ""

#: src/indicator.js:173
#: src/indicator.js:181
msgid "Settings"
msgstr ""

#: src/prefs.js:54
msgid "RunCat Settings"
msgstr ""

#: src/prefs.js:126
#: src/prefs.js:116
msgid "Version"
msgstr ""

#: src/resources/ui/preferences.ui:6
#: src/resources/ui/preferences.ui:6 src/resources/ui/preferences.ui:10
msgid "General"
msgstr ""

#: src/resources/ui/preferences.ui:10
msgid "General Preferences"
msgstr ""

#: src/resources/ui/preferences.ui:14
msgid "Idle threshold"
msgstr ""

#: src/resources/ui/preferences.ui:34
msgid "Displaying items"
msgstr ""

#: src/resources/ui/preferences.ui:38
#: src/resources/ui/preferences.ui:18
msgid "Character and percentage"
msgstr ""

#: src/resources/ui/preferences.ui:39
#: src/resources/ui/preferences.ui:19
msgid "Percentage only"
msgstr ""

#: src/resources/ui/preferences.ui:40
#: src/resources/ui/preferences.ui:20
msgid "Character only"
msgstr ""

#: src/resources/ui/preferences.ui:49
msgid "Invert running speed"
#: src/resources/ui/preferences.ui:31
msgid "Character"
msgstr ""

#: src/resources/ui/preferences.ui:35
msgid "Invert speed"
msgstr ""

#: src/resources/ui/preferences.ui:41
msgid "Idle threshold"
msgstr ""

#: src/resources/ui/preferences.ui:42
msgid "Available when speed is not inverted"
msgstr ""

#: src/resources/ui/preferences.ui:63
#: src/resources/ui/preferences.ui:60
msgid "Reset preferences"
msgstr ""

#: src/resources/ui/preferences.ui:64
#: src/resources/ui/preferences.ui:61
msgid "Reset RunCat preferences to defaults"
msgstr ""

#: src/resources/ui/preferences.ui:77
#: src/resources/ui/preferences.ui:74
msgid "Reset"
msgstr ""

#: src/resources/ui/preferences.ui:96
#: src/resources/ui/preferences.ui:93
msgid "The cat tells you the CPU usage by running speed"
msgstr ""

#: src/resources/ui/preferences.ui:100
#: src/resources/ui/preferences.ui:97
msgid "Visit RunCat's GitHub page"
msgstr ""

#: src/resources/ui/preferences.ui:110
#: src/resources/ui/preferences.ui:107
msgid "Visit Homepage"
msgstr ""

#: src/resources/ui/preferences.ui:114
#: src/resources/ui/preferences.ui:111
msgid "About RunCat"
msgstr ""
57 changes: 29 additions & 28 deletions po/ru.po
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: gnome-runcat-extension 20\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-01-15 10:39+0100\n"
"POT-Creation-Date: 2024-03-17 21:28+0300\n"
"PO-Revision-Date: 2022-09-30 19:16+0300\n"
"Last-Translator: Sergei Kolesnikov <sergei@kolesnikov.se>\n"
"Language-Team: Russian\n"
Expand All @@ -18,83 +18,84 @@ msgstr ""
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n"

#: src/indicator.js:169
#: src/indicator.js:177
msgid "Open System Monitor"
msgstr "袨褌泻褉褘褌褜 小懈褋褌械屑薪褘泄 屑芯薪懈褌芯褉"

#: src/indicator.js:173
#: src/indicator.js:181
msgid "Settings"
msgstr "袧邪褋褌褉芯泄泻懈"

#: src/prefs.js:54
msgid "RunCat Settings"
msgstr "袧邪褋褌褉芯泄泻懈 RunCat"

#: src/prefs.js:126
#: src/prefs.js:116
msgid "Version"
msgstr "袙械褉褋懈褟"

#: src/resources/ui/preferences.ui:6
#: src/resources/ui/preferences.ui:6 src/resources/ui/preferences.ui:10
msgid "General"
msgstr "袨斜褖懈械"

#: src/resources/ui/preferences.ui:10
msgid "General Preferences"
msgstr "袨斜褖懈械 薪邪褋褌褉芯泄泻懈"

#: src/resources/ui/preferences.ui:14
msgid "Idle threshold"
msgstr "袩芯褉芯谐 斜械蟹写械泄褋褌胁懈褟"

#: src/resources/ui/preferences.ui:34
msgid "Displaying items"
msgstr "袨褌芯斜褉邪卸邪械屑褘械 褝谢械屑械薪褌褘"

#: src/resources/ui/preferences.ui:38
#: src/resources/ui/preferences.ui:18
msgid "Character and percentage"
msgstr "袩械褉褋芯薪邪卸 懈 锌褉芯褑械薪褌褘"

#: src/resources/ui/preferences.ui:39
#: src/resources/ui/preferences.ui:19
msgid "Percentage only"
msgstr "孝芯谢褜泻芯 锌褉芯褑械薪褌褘"

#: src/resources/ui/preferences.ui:40
#: src/resources/ui/preferences.ui:20
msgid "Character only"
msgstr "孝芯谢褜泻芯 锌械褉褋芯薪邪卸"

#: src/resources/ui/preferences.ui:49
msgid "Invert running speed"
#: src/resources/ui/preferences.ui:31
msgid "Character"
msgstr "袩械褉褋芯薪邪卸"

#: src/resources/ui/preferences.ui:35
msgid "Invert speed"
msgstr "袠薪胁械褉褌懈褉芯胁邪褌褜 褋泻芯褉芯褋褌褜"

#: src/resources/ui/preferences.ui:63
#: src/resources/ui/preferences.ui:41
msgid "Idle threshold"
msgstr "袩芯褉芯谐 斜械蟹写械泄褋褌胁懈褟"

#: src/resources/ui/preferences.ui:42
msgid "Available when speed is not inverted"
msgstr "袛芯褋褌褍锌械薪, 泻芯谐写邪 褋泻芯褉芯褋褌褜 薪械 懈薪胁械褉褌懈褉芯胁邪薪邪"

#: src/resources/ui/preferences.ui:60
msgid "Reset preferences"
msgstr "小斜褉芯褋懈褌褜 薪邪褋褌褉芯泄泻懈"

#: src/resources/ui/preferences.ui:64
#: src/resources/ui/preferences.ui:61
msgid "Reset RunCat preferences to defaults"
msgstr "小斜褉芯褋懈褌褜 薪邪褋褌褉芯泄泻懈 RunCat 泻 蟹薪邪褔械薪懈褟屑 锌芯 褍屑芯谢褔邪薪懈褞"

#: src/resources/ui/preferences.ui:77
#: src/resources/ui/preferences.ui:74
msgid "Reset"
msgstr "小斜褉芯褋懈褌褜"

#: src/resources/ui/preferences.ui:96
#: src/resources/ui/preferences.ui:93
msgid "The cat tells you the CPU usage by running speed"
msgstr ""
"袣芯褌懈泻, 泻芯褌芯褉褘泄 锌芯泻邪蟹褘胁邪械褌 蟹邪谐褉褍蟹泻褍\n"
" 锌褉芯褑械褋褋芯褉邪 褋泻芯褉芯褋褌褜褞 斜械谐邪"

#: src/resources/ui/preferences.ui:100
#: src/resources/ui/preferences.ui:97
msgid "Visit RunCat's GitHub page"
msgstr "袩芯褋械褌懈褌褜 褋褌褉邪薪懈褑褍 RunCat 薪邪 GitHub"

#: src/resources/ui/preferences.ui:110
#: src/resources/ui/preferences.ui:107
msgid "Visit Homepage"
msgstr "袨褌泻褉褘褌褜 写芯屑邪褕薪褞褞 褋褌褉邪薪懈褑褍"

#: src/resources/ui/preferences.ui:114
#: src/resources/ui/preferences.ui:111
msgid "About RunCat"
msgstr "袨 RunCat"

#~ msgid "Reverse speed"
#~ msgstr "O斜褉邪褌薪邪褟 褋泻芯褉芯褋褌褜"
2 changes: 1 addition & 1 deletion src/constants.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ export const displayingItems = {
export const gioSettingsKeys = {
IDLE_THRESHOLD: 'idle-threshold',
DISPLAYING_ITEMS: 'displaying-items',
INVERT_RUNNING_SPEED: 'invert-running-speed',
INVERT_SPEED: 'invert-speed',
}

export const SYSTEM_MONITOR_COMMAND = 'gnome-system-monitor -r'
78 changes: 10 additions & 68 deletions src/dataProviders/cpu.js
Original file line number Diff line number Diff line change
@@ -1,87 +1,29 @@
import Gio from 'gi://Gio'
import GTop from 'gi://GTop'

import { LOG_PREFIX } from '../constants.js'


try {
// eslint-disable-next-line no-underscore-dangle
Gio._promisify(Gio.File.prototype, 'load_contents_async', 'load_contents_finish')
} catch (e) {
logError(e)
}

/** @typedef {{ active: number, total: number }} CpuData */
export const MAX_CPU_UTILIZATION = 1.0

/**
* @param {string} line
* @returns {CpuData}
* @returns {{ active: number, total: number }}
*/
function parseCpuLine(line) {
const values = line.trim().split(/[\s]+/).slice(1)

// see `man proc`
const [
user,
nice,
system,
idle,
iowait,
irq, // eslint-disable-line
softirq,
steal,
guest, // eslint-disable-line
guestNice, // eslint-disable-line
] = values.map(n => parseInt(n, 10))
function getCpuStats() {
const cpu = new GTop.glibtop_cpu()
GTop.glibtop_get_cpu(cpu)

return {
active: user + system + nice + softirq + steal,
total: user + system + nice + softirq + steal + idle + iowait,
active: cpu.user + cpu.sys + cpu.nice,
total: cpu.total,
}
}

/**
* @param {string} contents
*
* @returns {{ system: CpuData, specific: CpuData[] }}
*/
function parseProcStatContents(contents) {
const [cpu, ...cpuN] = contents
.split('\n')
.filter(line => line.startsWith('cpu'))

return {
system: parseCpuLine(cpu),
specific: cpuN.map(parseCpuLine),
}

}

export default async function* () {
const procStatFile = Gio.File.new_for_path('/proc/stat')

let prevActive = 0
let prevTotal = 0

while (true) {
const [bytes] = await procStatFile.load_contents_async(null)
const contents = new TextDecoder('utf-8').decode(bytes)

const { active, total } = parseProcStatContents(contents).system

let utilization = 100 * ((active - prevActive) / (total - prevTotal))
if (Number.isNaN(utilization) || !Number.isFinite(utilization)) {
const data = JSON.stringify({ total, active, prevTotal, prevActive })
log(`${LOG_PREFIX}: cpu utilization is ${utilization}, data: ${data}`)

utilization = 0
}

if (utilization > 100) {
const data = JSON.stringify({ total, active, prevTotal, prevActive })
log(`${LOG_PREFIX}: cpu utilization is ${utilization}, data: ${data}`)
const { active, total } = getCpuStats()

utilization = 100
}
const utilization = (active - prevActive) / Math.max((total - prevTotal), MAX_CPU_UTILIZATION)

prevActive = active
prevTotal = total
Expand Down
Loading

0 comments on commit 871740e

Please sign in to comment.