104 lines
3.5 KiB
JavaScript
104 lines
3.5 KiB
JavaScript
const { Gtk } = imports.gi;
|
|
import App from 'resource:///com/github/Aylur/ags/app.js';
|
|
import Widget from 'resource:///com/github/Aylur/ags/widget.js';
|
|
import * as Utils from 'resource:///com/github/Aylur/ags/utils.js';
|
|
const { execAsync, exec } = Utils;
|
|
const { Box, Button, EventBox, Icon, Label, Scrollable } = Widget;
|
|
import SidebarModule from './module.js';
|
|
import { MaterialIcon } from '../../.commonwidgets/materialicon.js';
|
|
import { setupCursorHover } from '../../.widgetutils/cursorhover.js';
|
|
|
|
import { distroID, isArchDistro, isDebianDistro, hasFlatpak } from '../../.miscutils/system.js';
|
|
|
|
const scripts = [
|
|
{
|
|
icon: 'desktop-symbolic',
|
|
name: 'Change screen resolution',
|
|
command: `bash ${App.configDir}/modules/sideleft/tools/changeres.sh`,
|
|
enabled: true,
|
|
},
|
|
{
|
|
icon: 'nixos-symbolic',
|
|
name: 'Trim system generations to 5',
|
|
command: `sudo ${App.configDir}/scripts/quickscripts/nixos-trim-generations.sh 5 0 system`,
|
|
enabled: distroID == 'nixos',
|
|
},
|
|
{
|
|
icon: 'nixos-symbolic',
|
|
name: 'Trim home manager generations to 5',
|
|
command: `${App.configDir}/scripts/quickscripts/nixos-trim-generations.sh 5 0 home-manager`,
|
|
enabled: distroID == 'nixos',
|
|
},
|
|
{
|
|
icon: 'ubuntu-symbolic',
|
|
name: 'Update packages',
|
|
command: `sudo apt update && sudo apt upgrade -y`,
|
|
enabled: isDebianDistro,
|
|
},
|
|
{
|
|
icon: 'fedora-symbolic',
|
|
name: 'Update packages',
|
|
command: `sudo dnf upgrade -y`,
|
|
enabled: distroID == 'fedora',
|
|
},
|
|
{
|
|
icon: 'arch-symbolic',
|
|
name: 'Update packages',
|
|
command: `sudo pacman -Syyu`,
|
|
enabled: isArchDistro,
|
|
},
|
|
{
|
|
icon: 'arch-symbolic',
|
|
name: 'Remove orphan packages',
|
|
command: `sudo pacman -R $(pacman -Qdtq)`,
|
|
enabled: isArchDistro,
|
|
},
|
|
{
|
|
icon: 'flatpak-symbolic',
|
|
name: 'Uninstall unused flatpak packages',
|
|
command: `flatpak uninstall --unused`,
|
|
enabled: hasFlatpak,
|
|
},
|
|
];
|
|
|
|
export default () => SidebarModule({
|
|
icon: MaterialIcon('code', 'norm'),
|
|
name: 'Quick scripts',
|
|
child: Box({
|
|
vertical: true,
|
|
className: 'spacing-v-5',
|
|
children: scripts.map((script) => {
|
|
if (!script.enabled) return null;
|
|
const scriptStateIcon = MaterialIcon('not_started', 'norm');
|
|
return Box({
|
|
className: 'spacing-h-5 txt',
|
|
children: [
|
|
Icon({
|
|
className: 'sidebar-module-btn-icon txt-large',
|
|
icon: script.icon,
|
|
}),
|
|
Label({
|
|
className: 'txt-small',
|
|
hpack: 'start',
|
|
hexpand: true,
|
|
label: script.name,
|
|
tooltipText: script.command,
|
|
}),
|
|
Button({
|
|
className: 'sidebar-module-scripts-button',
|
|
child: scriptStateIcon,
|
|
onClicked: () => {
|
|
closeEverything();
|
|
execAsync([`bash`, `-c`, `${userOptions.apps.terminal} fish -C "${script.command}"`]).catch(print)
|
|
.then(() => {
|
|
scriptStateIcon.label = 'done';
|
|
})
|
|
},
|
|
setup: setupCursorHover,
|
|
}),
|
|
],
|
|
})
|
|
}),
|
|
})
|
|
});
|