Add AGS bar, wezterm, and misc configs; exclude KDE private keys
- Add full AGS bar (GTK4/Astal/TypeScript) with all modules - Add wezterm config - Add niri config, starship, btop, xdg-portal, fish colors - Add gitignores for browser caches, JetBrains runtime, AGS node_modules - Exclude kdeconnect private/certificate pem files
7
.gitignore
vendored
Executable file
|
|
@ -0,0 +1,7 @@
|
|||
apps/.config/JetBrains/**/settingsSync
|
||||
apps/.config/JetBrains/**/fus/
|
||||
apps/.config/JetBrains/**/*.db
|
||||
apps/.config/JetBrains/**/*.db-shm
|
||||
apps/.config/JetBrains/**/*.db-wal
|
||||
apps/.config/obsidian/
|
||||
apps/.config/kwalletrc
|
||||
1
.stowrc
Executable file
|
|
@ -0,0 +1 @@
|
|||
--target=/home/end
|
||||
0
README.md
Normal file → Executable file
44
apps/.config/.gitignore
vendored
Normal file
|
|
@ -0,0 +1,44 @@
|
|||
# Browser/Electron caches
|
||||
*/Cache/
|
||||
*/Code Cache/
|
||||
*/GPUCache/
|
||||
*/DawnGraphiteCache/
|
||||
*/DawnWebGPUCache/
|
||||
*/Crashpad/
|
||||
*/IndexedDB/
|
||||
*/Local Storage/
|
||||
*/Session Storage/
|
||||
*/Shared Dictionary/
|
||||
*/WebStorage/
|
||||
*/.org.chromium.Chromium.*
|
||||
|
||||
# Logs and runtime state
|
||||
*.log
|
||||
*/Cookies
|
||||
*/Cookies-journal
|
||||
*/DIPS
|
||||
*/DIPS-wal
|
||||
*/SharedStorage
|
||||
*/SharedStorage-wal
|
||||
*/TransportSecurity
|
||||
*/Trust Tokens
|
||||
*/Trust Tokens-journal
|
||||
*/Network Persistent State
|
||||
|
||||
# Secrets
|
||||
github-copilot/apps.json
|
||||
|
||||
# JetBrains runtime
|
||||
JetBrains/*/event-log-metadata/
|
||||
JetBrains/*/workspace/
|
||||
JetBrains/*/tasks/
|
||||
JetBrains/*/settingsSync/
|
||||
JetBrains/*/*.db
|
||||
JetBrains/*/options/recentProjects.xml
|
||||
JetBrains/*/options/trusted-paths.xml
|
||||
JetBrains/*/options/usage.statistics.xml
|
||||
JetBrains/*/options/features.usage.statistics.xml
|
||||
JetBrains/*/options/window.state.xml
|
||||
# AGS runtime / build artifacts
|
||||
ags/node_modules/
|
||||
ags/@girs/
|
||||
17
apps/.config/ags/app.ts
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
import app from "ags/gtk4/app"
|
||||
import style from "./style.scss"
|
||||
import Bar from "./widget/Bar"
|
||||
import NotificationCenter from "./widget/NotificationCenter"
|
||||
import NotificationPopup from "./widget/NotificationPopup"
|
||||
import ClockCenter from "./widget/ClockCenter"
|
||||
|
||||
app.start({
|
||||
css: style,
|
||||
main() {
|
||||
const monitors = app.get_monitors()
|
||||
monitors.map(Bar)
|
||||
monitors.map(NotificationCenter)
|
||||
monitors.map(NotificationPopup)
|
||||
monitors.map(ClockCenter)
|
||||
},
|
||||
})
|
||||
21
apps/.config/ags/env.d.ts
vendored
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
declare const SRC: string
|
||||
|
||||
declare module "inline:*" {
|
||||
const content: string
|
||||
export default content
|
||||
}
|
||||
|
||||
declare module "*.scss" {
|
||||
const content: string
|
||||
export default content
|
||||
}
|
||||
|
||||
declare module "*.blp" {
|
||||
const content: string
|
||||
export default content
|
||||
}
|
||||
|
||||
declare module "*.css" {
|
||||
const content: string
|
||||
export default content
|
||||
}
|
||||
10
apps/.config/ags/package.json
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
{
|
||||
"dependencies": {
|
||||
"ags": "*",
|
||||
"gnim": "*"
|
||||
},
|
||||
"prettier": {
|
||||
"semi": false,
|
||||
"tabWidth": 2
|
||||
}
|
||||
}
|
||||
530
apps/.config/ags/style.scss
Normal file
|
|
@ -0,0 +1,530 @@
|
|||
// palette
|
||||
$bg: #0b0d1a;
|
||||
$surface: #0f1120;
|
||||
$surface2: #141628;
|
||||
$overlay: #1a1d35;
|
||||
$purple: #c792ea;
|
||||
$purple-dim: #9a70c7;
|
||||
$cyan: #4ec9b0;
|
||||
$green: #99c794;
|
||||
$pink: #ec5f89;
|
||||
$yellow: #fac863;
|
||||
$red: #f97b58;
|
||||
$text: #cdd6f4;
|
||||
$subtext: #7f849c;
|
||||
$border: rgba(78, 201, 176, 0.15);
|
||||
|
||||
* {
|
||||
font-family: "Maple Mono NF", monospace;
|
||||
font-size: 13px;
|
||||
color: $text;
|
||||
-gtk-icon-style: regular;
|
||||
}
|
||||
|
||||
// bar
|
||||
window.bar {
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
.bar-centerbox {
|
||||
background: $surface;
|
||||
border-radius: 12px;
|
||||
margin: 6px 8px 0;
|
||||
border: 1px solid $border;
|
||||
padding: 2px 6px;
|
||||
box-shadow: 0 4px 24px rgba(0, 0, 0, 0.5);
|
||||
}
|
||||
|
||||
|
||||
// modules
|
||||
.module {
|
||||
background: $surface2;
|
||||
border-radius: 8px;
|
||||
padding: 1px 8px;
|
||||
margin: 2px 2px;
|
||||
border: 1px solid $border;
|
||||
label {
|
||||
color: $text;
|
||||
}
|
||||
}
|
||||
|
||||
.module-icon {
|
||||
font-size: 14px;
|
||||
margin-right: 4px;
|
||||
}
|
||||
|
||||
.workspaces {
|
||||
background: transparent;
|
||||
border: none;
|
||||
padding: 0;
|
||||
margin: 0 4px;
|
||||
|
||||
.ws-dot {
|
||||
font-size: 8px;
|
||||
margin: 0 2px;
|
||||
color: $subtext;
|
||||
transition: all 200ms ease;
|
||||
&.active {
|
||||
color: $purple;
|
||||
font-size: 11px;
|
||||
}
|
||||
&.focused {
|
||||
color: $cyan;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.window-title {
|
||||
background: transparent;
|
||||
border: none;
|
||||
padding: 0 6px;
|
||||
color: $subtext;
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
.clock-module {
|
||||
.time {
|
||||
color: $text;
|
||||
font-weight: bold;
|
||||
font-size: 14px;
|
||||
}
|
||||
.date {
|
||||
color: $subtext;
|
||||
font-size: 11px;
|
||||
margin-left: 6px;
|
||||
}
|
||||
}
|
||||
|
||||
.media-module {
|
||||
min-width: 120px;
|
||||
.media-icon {
|
||||
color: $cyan;
|
||||
}
|
||||
.media-title {
|
||||
color: $text;
|
||||
font-size: 12px;
|
||||
}
|
||||
.media-btn {
|
||||
background: transparent;
|
||||
border: none;
|
||||
padding: 0 3px;
|
||||
color: $subtext;
|
||||
border-radius: 6px;
|
||||
&:hover {
|
||||
color: $purple;
|
||||
background: $overlay;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.volume-module {
|
||||
.vol-icon {
|
||||
color: $cyan;
|
||||
}
|
||||
.vol-muted {
|
||||
color: $pink;
|
||||
}
|
||||
}
|
||||
|
||||
.brightness-module {
|
||||
.bright-icon {
|
||||
color: $yellow;
|
||||
}
|
||||
}
|
||||
|
||||
.mullvad-module {
|
||||
&.on {
|
||||
box-shadow: inset 0 0 0 1px $green;
|
||||
border-radius: 9px;
|
||||
}
|
||||
&.off {
|
||||
box-shadow: inset 0 0 0 1px $red;
|
||||
border-radius: 9px;
|
||||
}
|
||||
}
|
||||
|
||||
.tailscale-module {
|
||||
&.on {
|
||||
box-shadow: inset 0 0 0 1px $green;
|
||||
border-radius: 9px;
|
||||
}
|
||||
&.off {
|
||||
box-shadow: inset 0 0 0 1px $red;
|
||||
border-radius: 9px;
|
||||
}
|
||||
}
|
||||
|
||||
.vpn-status-label {
|
||||
font-size: 12px;
|
||||
font-weight: bold;
|
||||
}
|
||||
.vpn-detail {
|
||||
color: $subtext;
|
||||
font-size: 11px;
|
||||
}
|
||||
|
||||
.network-module {
|
||||
.net-icon {
|
||||
color: $green;
|
||||
}
|
||||
.net-disconnected {
|
||||
color: $pink;
|
||||
}
|
||||
.net-strength {
|
||||
color: $subtext;
|
||||
font-size: 11px;
|
||||
}
|
||||
.net-wired {
|
||||
color: $cyan;
|
||||
}
|
||||
}
|
||||
|
||||
.battery-module {
|
||||
.bat-icon {
|
||||
color: $green;
|
||||
}
|
||||
.bat-charging {
|
||||
color: $yellow;
|
||||
}
|
||||
.bat-low {
|
||||
color: $pink;
|
||||
}
|
||||
.bat-label {
|
||||
font-size: 12px;
|
||||
}
|
||||
}
|
||||
|
||||
.sysstat-module {
|
||||
.stat-icon {
|
||||
color: $purple;
|
||||
}
|
||||
.stat-label {
|
||||
font-size: 12px;
|
||||
}
|
||||
}
|
||||
|
||||
.weather-module {
|
||||
.weather-text {
|
||||
font-size: 12px;
|
||||
}
|
||||
.unit-toggle {
|
||||
background: $overlay;
|
||||
border: 1px solid $border;
|
||||
border-radius: 6px;
|
||||
padding: 0 4px;
|
||||
margin: 0;
|
||||
min-height: 0;
|
||||
min-width: 0;
|
||||
font-size: 11px;
|
||||
color: $subtext;
|
||||
&:hover {
|
||||
color: $cyan;
|
||||
border-color: $cyan;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.notif-bell {
|
||||
.bell-icon {
|
||||
color: $subtext;
|
||||
}
|
||||
.bell-count {
|
||||
color: $pink;
|
||||
font-size: 10px;
|
||||
font-weight: bold;
|
||||
}
|
||||
&.has-notifs .bell-icon {
|
||||
color: $purple;
|
||||
}
|
||||
}
|
||||
|
||||
// tray
|
||||
.tray-module {
|
||||
background: $surface2;
|
||||
border-radius: 8px;
|
||||
padding: 1px 4px;
|
||||
margin: 2px 2px;
|
||||
border: 1px solid $border;
|
||||
|
||||
.tray-item {
|
||||
background: transparent;
|
||||
border: none;
|
||||
padding: 1px 2px;
|
||||
border-radius: 6px;
|
||||
min-height: 0;
|
||||
min-width: 0;
|
||||
&:hover {
|
||||
background: $overlay;
|
||||
}
|
||||
> button {
|
||||
background: transparent;
|
||||
border: none;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
box-shadow: none;
|
||||
min-height: 0;
|
||||
min-width: 0;
|
||||
&:hover,
|
||||
&:active,
|
||||
&:checked {
|
||||
background: transparent;
|
||||
box-shadow: none;
|
||||
}
|
||||
}
|
||||
> button > image {
|
||||
opacity: 0;
|
||||
min-width: 0;
|
||||
min-height: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// volume popover
|
||||
.open-mixer-btn {
|
||||
background: $overlay;
|
||||
border: 1px solid $border;
|
||||
border-radius: 8px;
|
||||
padding: 4px 10px;
|
||||
color: $subtext;
|
||||
margin-top: 4px;
|
||||
&:hover {
|
||||
color: $cyan;
|
||||
border-color: $cyan;
|
||||
}
|
||||
}
|
||||
|
||||
.vol-pct {
|
||||
color: $subtext;
|
||||
font-size: 11px;
|
||||
}
|
||||
.mic-icon {
|
||||
color: $green;
|
||||
}
|
||||
|
||||
// notifications
|
||||
window.notification-popup {
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
.notif-popup-inner {
|
||||
padding: 8px;
|
||||
}
|
||||
|
||||
.notif-toast {
|
||||
background: $surface;
|
||||
border: 1px solid $border;
|
||||
border-radius: 14px;
|
||||
padding: 12px 14px;
|
||||
box-shadow: 0 4px 24px rgba(0, 0, 0, 0.5);
|
||||
min-width: 320px;
|
||||
|
||||
.notif-app {
|
||||
color: $purple;
|
||||
font-size: 11px;
|
||||
font-weight: bold;
|
||||
}
|
||||
.notif-close {
|
||||
background: transparent;
|
||||
border: none;
|
||||
padding: 0 4px;
|
||||
color: $subtext;
|
||||
border-radius: 6px;
|
||||
font-size: 11px;
|
||||
&:hover {
|
||||
color: $pink;
|
||||
background: $overlay;
|
||||
}
|
||||
}
|
||||
.notif-summary {
|
||||
color: $text;
|
||||
font-size: 13px;
|
||||
font-weight: bold;
|
||||
}
|
||||
.notif-body {
|
||||
color: $subtext;
|
||||
font-size: 12px;
|
||||
}
|
||||
}
|
||||
|
||||
window.notification-center {
|
||||
background: rgba(22, 22, 30, 0.85);
|
||||
border-left: 1px solid $border;
|
||||
}
|
||||
|
||||
.notif-center-inner {
|
||||
padding: 16px 12px;
|
||||
min-width: 340px;
|
||||
}
|
||||
|
||||
.notif-center-header {
|
||||
margin-bottom: 4px;
|
||||
.notif-center-title {
|
||||
font-size: 14px;
|
||||
font-weight: bold;
|
||||
color: $text;
|
||||
}
|
||||
.notif-clear-all {
|
||||
background: $overlay;
|
||||
border: 1px solid $border;
|
||||
border-radius: 8px;
|
||||
padding: 2px 10px;
|
||||
color: $subtext;
|
||||
font-size: 11px;
|
||||
&:hover {
|
||||
color: $pink;
|
||||
border-color: $pink;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.notif-card {
|
||||
background: $surface;
|
||||
border: 1px solid $border;
|
||||
border-radius: 12px;
|
||||
padding: 10px 12px;
|
||||
|
||||
.notif-app {
|
||||
color: $purple;
|
||||
font-size: 11px;
|
||||
font-weight: bold;
|
||||
}
|
||||
.notif-close {
|
||||
background: transparent;
|
||||
border: none;
|
||||
padding: 0 4px;
|
||||
color: $subtext;
|
||||
border-radius: 6px;
|
||||
font-size: 11px;
|
||||
&:hover {
|
||||
color: $pink;
|
||||
background: $overlay;
|
||||
}
|
||||
}
|
||||
.notif-summary {
|
||||
color: $text;
|
||||
font-size: 13px;
|
||||
font-weight: bold;
|
||||
}
|
||||
.notif-body {
|
||||
color: $subtext;
|
||||
font-size: 12px;
|
||||
}
|
||||
}
|
||||
|
||||
.notif-empty {
|
||||
color: $subtext;
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
// clock popover
|
||||
.clock-tz-label {
|
||||
color: $subtext;
|
||||
font-size: 12px;
|
||||
}
|
||||
.clock-section-title {
|
||||
color: $subtext;
|
||||
font-size: 11px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.tz-btn {
|
||||
background: transparent;
|
||||
border: none;
|
||||
border-radius: 6px;
|
||||
padding: 3px 8px;
|
||||
color: $text;
|
||||
font-size: 12px;
|
||||
&:hover {
|
||||
background: $overlay;
|
||||
color: $purple;
|
||||
}
|
||||
}
|
||||
|
||||
calendar {
|
||||
background: $surface2;
|
||||
border: 1px solid $border;
|
||||
border-radius: 10px;
|
||||
padding: 4px;
|
||||
color: $text;
|
||||
|
||||
&:selected {
|
||||
background: $purple;
|
||||
color: $bg;
|
||||
border-radius: 6px;
|
||||
}
|
||||
&.highlight {
|
||||
color: $cyan;
|
||||
font-weight: bold;
|
||||
}
|
||||
header {
|
||||
color: $text;
|
||||
font-weight: bold;
|
||||
}
|
||||
button {
|
||||
background: transparent;
|
||||
border: none;
|
||||
color: $subtext;
|
||||
border-radius: 4px;
|
||||
}
|
||||
button:hover {
|
||||
background: $overlay;
|
||||
color: $text;
|
||||
}
|
||||
button.day {
|
||||
color: $text;
|
||||
}
|
||||
button.day:selected {
|
||||
background: $purple;
|
||||
color: $bg;
|
||||
}
|
||||
button.day.today {
|
||||
color: $purple;
|
||||
font-weight: bold;
|
||||
}
|
||||
button.day.other-month {
|
||||
color: $subtext;
|
||||
opacity: 0.5;
|
||||
}
|
||||
}
|
||||
|
||||
.clock-center-inner {
|
||||
padding: 14px 12px;
|
||||
min-width: 260px;
|
||||
}
|
||||
|
||||
// popovers — reset GTK4's internal `contents` node padding
|
||||
popover > contents {
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
background: transparent;
|
||||
border: none;
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
popover {
|
||||
background: $surface;
|
||||
border: 1px solid $border;
|
||||
border-radius: 12px;
|
||||
padding: 12px;
|
||||
box-shadow: 0 4px 20px rgba(0, 0, 0, 0.4);
|
||||
|
||||
scale {
|
||||
min-width: 160px;
|
||||
trough {
|
||||
background: $overlay;
|
||||
border-radius: 8px;
|
||||
min-height: 6px;
|
||||
}
|
||||
highlight {
|
||||
background: $purple;
|
||||
border-radius: 8px;
|
||||
}
|
||||
slider {
|
||||
background: $text;
|
||||
border-radius: 50%;
|
||||
min-width: 14px;
|
||||
min-height: 14px;
|
||||
box-shadow: 0 1px 4px rgba(0, 0, 0, 0.4);
|
||||
}
|
||||
}
|
||||
}
|
||||
14
apps/.config/ags/tsconfig.json
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
{
|
||||
"$schema": "https://json.schemastore.org/tsconfig",
|
||||
"compilerOptions": {
|
||||
"strict": true,
|
||||
"module": "ES2022",
|
||||
"target": "ES2020",
|
||||
"lib": ["ES2023"],
|
||||
"moduleResolution": "Bundler",
|
||||
// "checkJs": true,
|
||||
// "allowJs": true,
|
||||
"jsx": "react-jsx",
|
||||
"jsxImportSource": "ags/gtk4"
|
||||
}
|
||||
}
|
||||
64
apps/.config/ags/widget/Bar.tsx
Normal file
|
|
@ -0,0 +1,64 @@
|
|||
import { Astal, Gtk, Gdk } from "ags/gtk4"
|
||||
import app from "ags/gtk4/app"
|
||||
|
||||
import Workspaces from "./modules/Workspaces"
|
||||
import WindowTitle from "./modules/WindowTitle"
|
||||
import Clock from "./modules/Clock"
|
||||
import Media from "./modules/Media"
|
||||
import SysStats from "./modules/SysStats"
|
||||
import Weather from "./modules/Weather"
|
||||
import Network from "./modules/Network"
|
||||
import Battery from "./modules/Battery"
|
||||
import Brightness from "./modules/Brightness"
|
||||
import Volume from "./modules/Volume"
|
||||
import NotifBell from "./modules/NotifBell"
|
||||
import Tray from "./modules/Tray"
|
||||
import Mullvad from "./modules/Mullvad"
|
||||
import Tailscale from "./modules/Tailscale"
|
||||
|
||||
export default function Bar(gdkmonitor: Gdk.Monitor) {
|
||||
const { TOP, LEFT, RIGHT } = Astal.WindowAnchor
|
||||
|
||||
return (
|
||||
<window
|
||||
visible
|
||||
name="bar"
|
||||
class="bar"
|
||||
gdkmonitor={gdkmonitor}
|
||||
exclusivity={Astal.Exclusivity.EXCLUSIVE}
|
||||
keymode={Astal.Keymode.NONE}
|
||||
anchor={TOP | LEFT | RIGHT}
|
||||
application={app}
|
||||
>
|
||||
<box halign={Gtk.Align.CENTER} widthRequest={1080}>
|
||||
<centerbox class="bar-centerbox" hexpand>
|
||||
{/* Left */}
|
||||
<box $type="start" spacing={4} halign={Gtk.Align.START} valign={Gtk.Align.CENTER}>
|
||||
<Workspaces />
|
||||
<WindowTitle />
|
||||
</box>
|
||||
|
||||
{/* Center */}
|
||||
<box $type="center" spacing={4} halign={Gtk.Align.CENTER} valign={Gtk.Align.CENTER}>
|
||||
<Clock />
|
||||
<Media />
|
||||
</box>
|
||||
|
||||
{/* Right */}
|
||||
<box $type="end" spacing={4} halign={Gtk.Align.END} valign={Gtk.Align.CENTER}>
|
||||
<SysStats />
|
||||
<Weather />
|
||||
<Mullvad />
|
||||
<Tailscale />
|
||||
<Network />
|
||||
<Battery />
|
||||
<Brightness />
|
||||
<Volume />
|
||||
<Tray />
|
||||
<NotifBell />
|
||||
</box>
|
||||
</centerbox>
|
||||
</box>
|
||||
</window>
|
||||
)
|
||||
}
|
||||
90
apps/.config/ags/widget/ClockCenter.tsx
Normal file
|
|
@ -0,0 +1,90 @@
|
|||
import { Astal, Gtk, Gdk } from "ags/gtk4"
|
||||
import app from "ags/gtk4/app"
|
||||
import { execAsync } from "ags/process"
|
||||
import { createState, createComputed, For } from "ags"
|
||||
import { interval } from "ags/time"
|
||||
|
||||
const TIMEZONES = [
|
||||
"America/Phoenix", "America/New_York", "America/Chicago",
|
||||
"America/Denver", "America/Los_Angeles", "America/Anchorage",
|
||||
"Pacific/Honolulu", "Europe/London", "Europe/Paris",
|
||||
"Europe/Berlin", "Europe/Rome", "Europe/Moscow",
|
||||
"Asia/Dubai", "Asia/Kolkata", "Asia/Bangkok",
|
||||
"Asia/Shanghai", "Asia/Tokyo", "Asia/Seoul",
|
||||
"Australia/Sydney", "Pacific/Auckland",
|
||||
]
|
||||
|
||||
export default function ClockCenter(gdkmonitor: Gdk.Monitor) {
|
||||
const { TOP } = Astal.WindowAnchor
|
||||
|
||||
const [time, setTime] = createState("")
|
||||
const [date, setDate] = createState("")
|
||||
const [tz, setTz] = createState("")
|
||||
|
||||
function pollTime() { execAsync(["date", "+%H:%M:%S"]).then(s => setTime(s.trim())).catch(() => {}) }
|
||||
function pollDate() { execAsync(["date", "+%A, %B %d"]).then(s => setDate(s.trim())).catch(() => {}) }
|
||||
function pollTz() { execAsync(["date", "+%Z"]).then(s => setTz(s.trim())).catch(() => {}) }
|
||||
|
||||
pollTime(); pollDate(); pollTz()
|
||||
interval(1000, pollTime)
|
||||
interval(60000, pollDate)
|
||||
interval(10000, pollTz)
|
||||
|
||||
const [search, setSearch] = createState("")
|
||||
const filtered = createComputed(() => {
|
||||
const q = search().toLowerCase()
|
||||
return TIMEZONES.filter(t => t.toLowerCase().includes(q))
|
||||
})
|
||||
|
||||
const win = (
|
||||
<window
|
||||
visible={false}
|
||||
name="clock-center"
|
||||
class="notification-center"
|
||||
gdkmonitor={gdkmonitor}
|
||||
exclusivity={Astal.Exclusivity.NORMAL}
|
||||
anchor={TOP}
|
||||
marginTop={42}
|
||||
keymode={Astal.Keymode.ON_DEMAND}
|
||||
application={app}
|
||||
onNotifyIsActive={({ isActive }: { isActive: boolean }) => {
|
||||
if (!isActive) app.toggle_window("clock-center")
|
||||
}}
|
||||
>
|
||||
<box orientation={Gtk.Orientation.VERTICAL} spacing={10} class="clock-center-inner" widthRequest={260}>
|
||||
<Gtk.EventControllerKey
|
||||
onKeyPressed={(_self: unknown, keyval: number) => {
|
||||
if (keyval === Gdk.KEY_Escape) app.toggle_window("clock-center")
|
||||
}}
|
||||
/>
|
||||
<box orientation={Gtk.Orientation.VERTICAL} spacing={2}>
|
||||
<label label={time} class="time" xalign={0} />
|
||||
<label label={date} class="clock-tz-label" xalign={0} />
|
||||
<label label={tz} class="clock-section-title" xalign={0} />
|
||||
</box>
|
||||
<Gtk.Calendar showDayNames showHeading />
|
||||
<label label="Switch timezone" xalign={0} class="clock-section-title" />
|
||||
<entry
|
||||
placeholderText="Search..."
|
||||
onNotifyText={({ text }: { text: string }) => setSearch(text)}
|
||||
/>
|
||||
<scrolledwindow maxContentHeight={160} vexpand>
|
||||
<box orientation={Gtk.Orientation.VERTICAL} spacing={2}>
|
||||
<For each={filtered} id={zone => zone}>
|
||||
{zone => (
|
||||
<button class="tz-btn" onClicked={() => {
|
||||
execAsync(["timedatectl", "set-timezone", zone]).catch(() => {})
|
||||
app.toggle_window("clock-center")
|
||||
}}>
|
||||
<label label={zone} xalign={0} />
|
||||
</button>
|
||||
)}
|
||||
</For>
|
||||
</box>
|
||||
</scrolledwindow>
|
||||
</box>
|
||||
</window>
|
||||
) as unknown as Astal.Window
|
||||
|
||||
return win
|
||||
}
|
||||
98
apps/.config/ags/widget/NotificationCenter.tsx
Normal file
|
|
@ -0,0 +1,98 @@
|
|||
import { Astal, Gtk, Gdk } from "ags/gtk4"
|
||||
import app from "ags/gtk4/app"
|
||||
import { For } from "ags"
|
||||
import { history, removeNotif, clearAll, type NotifEntry } from "./notifStore"
|
||||
|
||||
function NotifCard({ entry }: { entry: NotifEntry }) {
|
||||
const rightClick = new Gtk.GestureClick()
|
||||
rightClick.button = 3
|
||||
rightClick.connect("pressed", () => {
|
||||
removeNotif(entry.id)
|
||||
try { entry.notif.dismiss() } catch {}
|
||||
})
|
||||
|
||||
// Left click only fires when clicking the card background (not child widgets)
|
||||
const leftClick = new Gtk.GestureClick()
|
||||
leftClick.button = 1
|
||||
leftClick.propagation_phase = Gtk.PropagationPhase.TARGET
|
||||
leftClick.connect("pressed", () => {
|
||||
try { entry.notif.invoke("default") } catch {}
|
||||
app.toggle_window("notification-center")
|
||||
})
|
||||
|
||||
const box = (
|
||||
<box class="notif-card" orientation={Gtk.Orientation.VERTICAL} spacing={6}>
|
||||
<box spacing={8}>
|
||||
<label class="notif-app" label={entry.app_name || "notification"} xalign={0} hexpand />
|
||||
<button class="notif-close" onClicked={() => {
|
||||
removeNotif(entry.id)
|
||||
try { entry.notif.dismiss() } catch {}
|
||||
}}>
|
||||
<label label="✕" />
|
||||
</button>
|
||||
</box>
|
||||
{entry.summary
|
||||
? <label class="notif-summary" label={entry.summary} xalign={0} wrap maxWidthChars={36} />
|
||||
: <></>
|
||||
}
|
||||
{entry.body
|
||||
? <label class="notif-body" label={entry.body} xalign={0} wrap maxWidthChars={36} />
|
||||
: <></>
|
||||
}
|
||||
</box>
|
||||
) as unknown as Gtk.Box
|
||||
|
||||
box.add_controller(leftClick)
|
||||
box.add_controller(rightClick)
|
||||
return box
|
||||
}
|
||||
|
||||
export default function NotificationCenter(gdkmonitor: Gdk.Monitor) {
|
||||
const { RIGHT, TOP, BOTTOM } = Astal.WindowAnchor
|
||||
|
||||
return (
|
||||
<window
|
||||
visible={false}
|
||||
name="notification-center"
|
||||
class="notification-center"
|
||||
gdkmonitor={gdkmonitor}
|
||||
exclusivity={Astal.Exclusivity.NORMAL}
|
||||
anchor={RIGHT | TOP | BOTTOM}
|
||||
keymode={Astal.Keymode.ON_DEMAND}
|
||||
application={app}
|
||||
>
|
||||
<box orientation={Gtk.Orientation.VERTICAL} spacing={8} class="notif-center-inner">
|
||||
<Gtk.EventControllerKey
|
||||
onKeyPressed={({ widget }, keyval: number) => {
|
||||
if (keyval === Gdk.KEY_Escape) app.toggle_window("notification-center")
|
||||
}}
|
||||
/>
|
||||
<box class="notif-center-header">
|
||||
<label class="notif-center-title" label="Notifications" hexpand xalign={0} />
|
||||
<button class="notif-clear-all" onClicked={() => clearAll()}>
|
||||
<label label="Clear all" />
|
||||
</button>
|
||||
</box>
|
||||
<label
|
||||
class="notif-empty"
|
||||
label="Nothing here"
|
||||
valign={Gtk.Align.CENTER}
|
||||
vexpand
|
||||
visible={history(h => h.length === 0)}
|
||||
/>
|
||||
<scrolledwindow
|
||||
vexpand
|
||||
visible={history(h => h.length > 0)}
|
||||
vscrollbarPolicy={Gtk.PolicyType.AUTOMATIC}
|
||||
hscrollbarPolicy={Gtk.PolicyType.NEVER}
|
||||
>
|
||||
<box orientation={Gtk.Orientation.VERTICAL} spacing={6}>
|
||||
<For each={history(h => [...h].reverse())} id={e => e.id}>
|
||||
{e => <NotifCard entry={e} />}
|
||||
</For>
|
||||
</box>
|
||||
</scrolledwindow>
|
||||
</box>
|
||||
</window>
|
||||
)
|
||||
}
|
||||
69
apps/.config/ags/widget/NotificationPopup.tsx
Normal file
|
|
@ -0,0 +1,69 @@
|
|||
import { Astal, Gtk, Gdk } from "ags/gtk4"
|
||||
import app from "ags/gtk4/app"
|
||||
import Notifd from "gi://AstalNotifd"
|
||||
import Pango from "gi://Pango"
|
||||
import { createBinding, For } from "ags"
|
||||
import { timeout } from "ags/time"
|
||||
import { addNotif } from "./notifStore"
|
||||
|
||||
type N = ReturnType<typeof Notifd.get_default>["notifications"][0]
|
||||
|
||||
function Toast({ notif }: { notif: N }) {
|
||||
const gesture = new Gtk.GestureClick()
|
||||
gesture.button = 3
|
||||
gesture.connect("pressed", () => { try { notif.dismiss() } catch {} })
|
||||
|
||||
const box = (
|
||||
<box class="notif-toast" orientation={Gtk.Orientation.VERTICAL} spacing={6}>
|
||||
<box spacing={8}>
|
||||
<label class="notif-app" label={notif.app_name || "notification"} xalign={0} hexpand />
|
||||
<button class="notif-close" onClicked={() => { try { notif.dismiss() } catch {} }}>
|
||||
<label label="✕" />
|
||||
</button>
|
||||
</box>
|
||||
{notif.summary
|
||||
? <label class="notif-summary" label={notif.summary} xalign={0} wrap maxWidthChars={38} />
|
||||
: <></>
|
||||
}
|
||||
{notif.body
|
||||
? <label class="notif-body" label={notif.body} xalign={0} wrap maxWidthChars={38} lines={4} ellipsize={Pango.EllipsizeMode.END} />
|
||||
: <></>
|
||||
}
|
||||
</box>
|
||||
) as unknown as Gtk.Box
|
||||
|
||||
box.add_controller(gesture)
|
||||
return box
|
||||
}
|
||||
|
||||
export default function NotificationPopup(gdkmonitor: Gdk.Monitor) {
|
||||
const notifd = Notifd.get_default()
|
||||
const notifs = createBinding(notifd, "notifications")
|
||||
const { TOP, RIGHT } = Astal.WindowAnchor
|
||||
|
||||
notifd.connect("notified", (_self: typeof notifd, id: number) => {
|
||||
const notif = notifd.get_notification(id)
|
||||
if (!notif) return
|
||||
addNotif(notif)
|
||||
const ms = notif.expire_timeout > 0 ? notif.expire_timeout : 10000
|
||||
timeout(ms, () => { try { notif.dismiss() } catch {} })
|
||||
})
|
||||
|
||||
return (
|
||||
<window
|
||||
name="notification-popup"
|
||||
class="notification-popup"
|
||||
gdkmonitor={gdkmonitor}
|
||||
exclusivity={Astal.Exclusivity.NORMAL}
|
||||
anchor={TOP | RIGHT}
|
||||
visible={notifs(n => n.length > 0)}
|
||||
application={app}
|
||||
>
|
||||
<box orientation={Gtk.Orientation.VERTICAL} spacing={6} class="notif-popup-inner">
|
||||
<For each={notifs(ns => [...ns].slice(-3).reverse())} id={n => n.id}>
|
||||
{n => <Toast notif={n} />}
|
||||
</For>
|
||||
</box>
|
||||
</window>
|
||||
)
|
||||
}
|
||||
78
apps/.config/ags/widget/modules/Battery.tsx
Normal file
|
|
@ -0,0 +1,78 @@
|
|||
import { Gtk } from "ags/gtk4"
|
||||
import { execAsync } from "ags/process"
|
||||
import { createState } from "ags"
|
||||
import { interval } from "ags/time"
|
||||
|
||||
interface BatState {
|
||||
pct: number
|
||||
charging: boolean
|
||||
timeLeft: string
|
||||
}
|
||||
|
||||
function parseBat(out: string): BatState {
|
||||
const lines = out.split("\n")
|
||||
let pct = 100, charging = false, timeLeft = ""
|
||||
for (const line of lines) {
|
||||
const l = line.trim()
|
||||
if (l.startsWith("percentage:")) pct = parseInt(l.split(":")[1]) || 100
|
||||
if (l.startsWith("state:")) charging = l.includes("charging") && !l.includes("discharging")
|
||||
if (l.startsWith("time to empty:") || l.startsWith("time to full:"))
|
||||
timeLeft = `~${l.split(":").slice(1).join(":").trim()}`
|
||||
}
|
||||
return { pct, charging, timeLeft }
|
||||
}
|
||||
|
||||
export default function Battery() {
|
||||
const [bat, setBat] = createState<BatState>({ pct: 100, charging: false, timeLeft: "" })
|
||||
|
||||
function poll() {
|
||||
execAsync(["upower", "-i", "/org/freedesktop/UPower/devices/battery_BAT1"])
|
||||
.then(out => setBat(parseBat(out)))
|
||||
.catch(() => {})
|
||||
}
|
||||
|
||||
poll()
|
||||
interval(5000, poll)
|
||||
|
||||
const popover = new Gtk.Popover()
|
||||
popover.set_has_arrow(false)
|
||||
|
||||
const content = (
|
||||
<box orientation={Gtk.Orientation.VERTICAL} spacing={8} widthRequest={160}>
|
||||
<label label={bat(b => `${b.pct}%`)} xalign={0} class="vpn-status-label" />
|
||||
<label
|
||||
label={bat(b => b.charging
|
||||
? b.timeLeft ? `${b.timeLeft} until full` : "Charging"
|
||||
: b.timeLeft ? `${b.timeLeft} remaining` : "Discharging"
|
||||
)}
|
||||
xalign={0}
|
||||
class="vpn-detail"
|
||||
/>
|
||||
</box>
|
||||
) as unknown as Gtk.Widget
|
||||
|
||||
popover.set_child(content)
|
||||
|
||||
const btn = (
|
||||
<button class="module battery-module" valign={Gtk.Align.CENTER}
|
||||
onClicked={() => popover.popup()}>
|
||||
<box spacing={4}>
|
||||
<label
|
||||
class={bat(b => `module-icon ${b.charging ? "bat-charging" : b.pct < 20 ? "bat-low" : "bat-icon"}`)}
|
||||
label={bat(({ pct, charging }) => {
|
||||
if (charging) return ""
|
||||
if (pct > 80) return ""
|
||||
if (pct > 60) return ""
|
||||
if (pct > 40) return ""
|
||||
if (pct > 20) return ""
|
||||
return ""
|
||||
})}
|
||||
/>
|
||||
<label class="bat-label" label={bat(b => `${b.pct}%`)} />
|
||||
</box>
|
||||
</button>
|
||||
) as unknown as Gtk.Button
|
||||
|
||||
popover.set_parent(btn)
|
||||
return btn
|
||||
}
|
||||
52
apps/.config/ags/widget/modules/Brightness.tsx
Normal file
|
|
@ -0,0 +1,52 @@
|
|||
import { Gtk } from "ags/gtk4"
|
||||
import { execAsync } from "ags/process"
|
||||
import { createState } from "ags"
|
||||
import { interval } from "ags/time"
|
||||
|
||||
export default function Brightness() {
|
||||
const [brightness, setBrightness] = createState({ cur: 0, max: 100 })
|
||||
|
||||
function poll() {
|
||||
execAsync(["brightnessctl", "info"])
|
||||
.then(out => {
|
||||
const cur = parseInt(out.match(/Current brightness: (\d+)/)?.[1] ?? "0")
|
||||
const max = parseInt(out.match(/Max brightness: (\d+)/)?.[1] ?? "100")
|
||||
setBrightness({ cur, max })
|
||||
}).catch(() => {})
|
||||
}
|
||||
|
||||
poll()
|
||||
interval(2000, poll)
|
||||
|
||||
const pct = brightness(b => Math.round((b.cur / b.max) * 100))
|
||||
const icon = pct(p => p > 66 ? "" : p > 33 ? "" : "")
|
||||
|
||||
const popover = new Gtk.Popover()
|
||||
popover.set_has_arrow(false)
|
||||
|
||||
const content = (
|
||||
<box orientation={Gtk.Orientation.VERTICAL} spacing={8} widthRequest={200}>
|
||||
<label label="Brightness" halign={Gtk.Align.START} />
|
||||
<slider
|
||||
min={0} max={100} value={pct}
|
||||
widthRequest={180}
|
||||
onNotifyValue={self => execAsync(["brightnessctl", "set", `${Math.round(self.value)}%`]).catch(() => {})}
|
||||
/>
|
||||
</box>
|
||||
) as unknown as Gtk.Widget
|
||||
|
||||
popover.set_child(content)
|
||||
|
||||
const btn = (
|
||||
<button class="module brightness-module" valign={Gtk.Align.CENTER} hexpand={false}
|
||||
onClicked={() => popover.popup()}>
|
||||
<box spacing={4}>
|
||||
<label class="module-icon bright-icon" label={icon} />
|
||||
<label label={pct(p => `${p}%`)} />
|
||||
</box>
|
||||
</button>
|
||||
) as unknown as Gtk.Button
|
||||
|
||||
popover.set_parent(btn)
|
||||
return btn
|
||||
}
|
||||
27
apps/.config/ags/widget/modules/Clock.tsx
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
import { createState } from "ags"
|
||||
import { interval } from "ags/time"
|
||||
import { execAsync } from "ags/process"
|
||||
import { Gtk } from "ags/gtk4"
|
||||
import app from "ags/gtk4/app"
|
||||
|
||||
export default function Clock() {
|
||||
const [time, setTime] = createState("")
|
||||
const [date, setDate] = createState("")
|
||||
|
||||
function pollTime() { execAsync(["date", "+%H:%M:%S"]).then(s => setTime(s.trim())).catch(() => {}) }
|
||||
function pollDate() { execAsync(["date", "+%a %b %d"]).then(s => setDate(s.trim())).catch(() => {}) }
|
||||
|
||||
pollTime(); pollDate()
|
||||
interval(1000, pollTime)
|
||||
interval(60000, pollDate)
|
||||
|
||||
return (
|
||||
<button class="module clock-module" halign={Gtk.Align.CENTER} valign={Gtk.Align.CENTER}
|
||||
hexpand={false} onClicked={() => app.toggle_window("clock-center")}>
|
||||
<box spacing={6}>
|
||||
<label class="time" label={time} />
|
||||
<label class="date" label={date} />
|
||||
</box>
|
||||
</button>
|
||||
)
|
||||
}
|
||||
55
apps/.config/ags/widget/modules/Media.tsx
Normal file
|
|
@ -0,0 +1,55 @@
|
|||
import { Gtk } from "ags/gtk4"
|
||||
import { execAsync } from "ags/process"
|
||||
import { createState } from "ags"
|
||||
import { interval } from "ags/time"
|
||||
|
||||
interface MprisInfo {
|
||||
title: string
|
||||
artist: string
|
||||
playing: boolean
|
||||
player: string
|
||||
}
|
||||
|
||||
const empty: MprisInfo = { title: "", artist: "", playing: false, player: "" }
|
||||
|
||||
export default function Media() {
|
||||
const [media, setMedia] = createState<MprisInfo>(empty)
|
||||
|
||||
function poll() {
|
||||
execAsync("playerctl metadata --format '{{title}}|||{{artist}}|||{{status}}|||{{playerName}}'")
|
||||
.then(out => {
|
||||
const [title, artist, status, player] = out.trim().split("|||")
|
||||
setMedia({ title: title || "", artist: artist || "", playing: status === "Playing", player: player || "" })
|
||||
})
|
||||
.catch(() => setMedia(empty))
|
||||
}
|
||||
|
||||
poll()
|
||||
interval(2000, poll)
|
||||
|
||||
return (
|
||||
<box
|
||||
class="module media-module"
|
||||
valign={Gtk.Align.CENTER}
|
||||
visible={media(m => m.title !== "")}
|
||||
>
|
||||
<label
|
||||
class="media-title"
|
||||
ellipsize={3}
|
||||
maxWidthChars={24}
|
||||
label={media(m => m.title ? `${m.title}${m.artist ? " — " + m.artist : ""}` : "")}
|
||||
/>
|
||||
<button class="media-btn" onClicked={() => execAsync("playerctl previous").catch(() => {})}>
|
||||
<label label="" />
|
||||
</button>
|
||||
<button class="media-btn" onClicked={() => execAsync(
|
||||
media().playing ? "playerctl pause" : "playerctl play"
|
||||
).catch(() => {})}>
|
||||
<label label={media(m => m.playing ? "" : "")} />
|
||||
</button>
|
||||
<button class="media-btn" onClicked={() => execAsync("playerctl next").catch(() => {})}>
|
||||
<label label="" />
|
||||
</button>
|
||||
</box>
|
||||
)
|
||||
}
|
||||
76
apps/.config/ags/widget/modules/Mullvad.tsx
Normal file
|
|
@ -0,0 +1,76 @@
|
|||
import { Gtk } from "ags/gtk4"
|
||||
import { execAsync } from "ags/process"
|
||||
import { interval } from "ags/time"
|
||||
import { createState } from "ags"
|
||||
|
||||
const FAVORITES = [
|
||||
{ label: "Phoenix", cmd: "mullvad relay set location us phx" },
|
||||
{ label: "Los Angeles", cmd: "mullvad relay set location us lax" },
|
||||
{ label: "Switzerland", cmd: "mullvad relay set location ch" },
|
||||
]
|
||||
|
||||
export default function Mullvad() {
|
||||
const [status, setStatus] = createState({ connected: false, location: "", ip: "" })
|
||||
|
||||
function poll() {
|
||||
execAsync("mullvad status").then(out => {
|
||||
const connected = out.toLowerCase().startsWith("connected")
|
||||
const locMatch = out.match(/location:\s+(.+?)\./)
|
||||
const ipMatch = out.match(/IPv4:\s+([\d.]+)/)
|
||||
setStatus({ connected, location: locMatch?.[1]?.trim() ?? "", ip: ipMatch?.[1] ?? "" })
|
||||
}).catch(() => {})
|
||||
}
|
||||
|
||||
poll()
|
||||
interval(5000, poll)
|
||||
|
||||
const popover = new Gtk.Popover()
|
||||
popover.set_has_arrow(false)
|
||||
|
||||
const favBtns = FAVORITES.map(({ label, cmd }) => (
|
||||
<button class="open-mixer-btn" onClicked={() =>
|
||||
execAsync(cmd).then(() => execAsync("mullvad reconnect")).then(() => poll()).catch(() => poll())
|
||||
}>
|
||||
<label label={label} />
|
||||
</button>
|
||||
))
|
||||
|
||||
const content = (
|
||||
<box orientation={Gtk.Orientation.VERTICAL} spacing={8} widthRequest={200}>
|
||||
<label label={status(s => s.connected ? " Connected" : " Disconnected")} xalign={0} class="vpn-status-label" />
|
||||
<label label={status(s => s.location || "—")} xalign={0} class="vpn-detail" />
|
||||
<label label={status(s => s.ip || "—")} xalign={0} class="vpn-detail" />
|
||||
<box orientation={Gtk.Orientation.VERTICAL} spacing={4}>
|
||||
{favBtns}
|
||||
</box>
|
||||
<button class="open-mixer-btn" onClicked={() => execAsync("mullvad-vpn")}>
|
||||
<label label="Open Mullvad" />
|
||||
</button>
|
||||
</box>
|
||||
) as unknown as Gtk.Widget
|
||||
|
||||
popover.set_child(content)
|
||||
|
||||
const icon = new Gtk.Image({ iconName: "mullvad-vpn", pixelSize: 16 })
|
||||
|
||||
const btn = (
|
||||
<button class={status(s => `module mullvad-module${s.connected ? " on" : " off"}`)}
|
||||
valign={Gtk.Align.CENTER}
|
||||
onClicked={() => execAsync(
|
||||
status().connected
|
||||
? "mullvad disconnect"
|
||||
: "bash -c 'mullvad lan set allow && mullvad connect'"
|
||||
).then(() => poll()).catch(() => poll())}>
|
||||
</button>
|
||||
) as unknown as Gtk.Button
|
||||
|
||||
btn.set_child(icon)
|
||||
|
||||
const gesture = new Gtk.GestureClick()
|
||||
gesture.button = 3
|
||||
gesture.connect("pressed", () => popover.popup())
|
||||
btn.add_controller(gesture)
|
||||
popover.set_parent(btn)
|
||||
|
||||
return btn
|
||||
}
|
||||
60
apps/.config/ags/widget/modules/Network.tsx
Normal file
|
|
@ -0,0 +1,60 @@
|
|||
import { Gtk } from "ags/gtk4"
|
||||
import { execAsync } from "ags/process"
|
||||
import { createState } from "ags"
|
||||
import { interval } from "ags/time"
|
||||
|
||||
type NetState = { type: "none" | "wifi" | "wired" | "rfkill"; ssid: string; strength: number; ip: string }
|
||||
|
||||
export default function Network() {
|
||||
const [net, setNet] = createState<NetState>({ type: "none", ssid: "", strength: 0, ip: "" })
|
||||
const [showIp, setShowIp] = createState(false)
|
||||
|
||||
function poll() {
|
||||
execAsync(["bash", "-c", "rfkill list wifi | grep -q 'Hard blocked: yes\\|Soft blocked: yes' && echo rfkill; nmcli -t -f device,type,state dev 2>/dev/null | grep ':ethernet:connected' | head -1; echo '---'; nmcli -t -f active,ssid,signal dev wifi 2>/dev/null | grep '^yes' | head -1; echo '---'; ip -4 route get 1.1.1.1 2>/dev/null | grep -oP '(?<=src )[\\d.]+'"])
|
||||
.then(out => {
|
||||
if (out.startsWith("rfkill")) { setNet({ type: "rfkill", ssid: "", strength: 0, ip: "" }); return }
|
||||
const [eth, wifi, ip] = out.split("---").map((s: string) => s.trim())
|
||||
if (eth) { setNet({ type: "wired", ssid: "", strength: 0, ip: ip || "" }); return }
|
||||
const parts = wifi?.split(":") ?? []
|
||||
if (parts.length >= 3 && parts[0] === "yes")
|
||||
setNet({ type: "wifi", ssid: parts[1], strength: parseInt(parts[2]) || 0, ip: ip || "" })
|
||||
else
|
||||
setNet({ type: "none", ssid: "", strength: 0, ip: "" })
|
||||
}).catch(() => {})
|
||||
}
|
||||
|
||||
poll()
|
||||
interval(5000, poll)
|
||||
|
||||
const icon = net(n => {
|
||||
if (n.type === "rfkill") return ""
|
||||
if (n.type === "wired") return ""
|
||||
if (n.type === "none") return ""
|
||||
if (n.strength > 75) return ""
|
||||
if (n.strength > 50) return ""
|
||||
if (n.strength > 25) return ""
|
||||
return ""
|
||||
})
|
||||
|
||||
const labelText = net(n => {
|
||||
if (n.type === "rfkill") return "rfkill"
|
||||
if (showIp()) return n.ip || "no ip"
|
||||
if (n.type === "wired") return "wired"
|
||||
if (n.type === "wifi") return n.ssid || "connected"
|
||||
return "offline"
|
||||
})
|
||||
|
||||
return (
|
||||
<button class="module network-module" valign={Gtk.Align.CENTER} onClicked={() => setShowIp(v => !v)}>
|
||||
<box spacing={4}>
|
||||
<label class={net(n => `module-icon ${n.type !== "none" && n.type !== "rfkill" ? "net-icon" : "net-disconnected"}`)} label={icon} />
|
||||
<label label={labelText} />
|
||||
<label
|
||||
class="net-strength"
|
||||
label={net(n => `${n.strength}%`)}
|
||||
visible={net(n => n.type === "wifi" && !showIp())}
|
||||
/>
|
||||
</box>
|
||||
</button>
|
||||
)
|
||||
}
|
||||
25
apps/.config/ags/widget/modules/NotifBell.tsx
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
import { Gtk } from "ags/gtk4"
|
||||
import app from "ags/gtk4/app"
|
||||
import { history } from "../notifStore"
|
||||
|
||||
export default function NotifBell() {
|
||||
return (
|
||||
<button
|
||||
class={history(h => `module notif-bell${h.length > 0 ? " has-notifs" : ""}`)}
|
||||
valign={Gtk.Align.CENTER}
|
||||
onClicked={() => app.toggle_window("notification-center")}
|
||||
>
|
||||
<box spacing={4}>
|
||||
<label
|
||||
class="module-icon bell-icon"
|
||||
label={history(h => h.length > 0 ? "" : "")}
|
||||
/>
|
||||
<label
|
||||
class="bell-count"
|
||||
label={history(h => `${h.length}`)}
|
||||
visible={history(h => h.length > 0)}
|
||||
/>
|
||||
</box>
|
||||
</button>
|
||||
)
|
||||
}
|
||||
35
apps/.config/ags/widget/modules/SysStats.tsx
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
import { Gtk } from "ags/gtk4"
|
||||
import { createState } from "ags"
|
||||
import { interval } from "ags/time"
|
||||
import { execAsync } from "ags/process"
|
||||
|
||||
export default function SysStats() {
|
||||
const [cpu, setCpu] = createState("0")
|
||||
const [ram, setRam] = createState("0")
|
||||
|
||||
function pollCpu() {
|
||||
execAsync(["bash", "-c", "grep -m1 '^cpu ' /proc/stat | awk '{u=$2+$4; t=$2+$3+$4+$5; if(t>0) print int(u/t*100); else print 0}'"]).then(s => setCpu(s.trim())).catch(() => {})
|
||||
}
|
||||
|
||||
function pollRam() {
|
||||
execAsync(["bash", "-c", "free | awk '/^Mem:/{printf \"%d\", $3/$2*100}'"]).then(s => setRam(s.trim())).catch(() => {})
|
||||
}
|
||||
|
||||
pollCpu()
|
||||
pollRam()
|
||||
interval(2000, pollCpu)
|
||||
interval(5000, pollRam)
|
||||
|
||||
return (
|
||||
<box class="module sysstat-module" valign={Gtk.Align.CENTER} spacing={8}>
|
||||
<box spacing={4}>
|
||||
<label class="module-icon stat-icon" label="" />
|
||||
<label class="stat-label" label={cpu(c => `${c}%`)} />
|
||||
</box>
|
||||
<box spacing={4}>
|
||||
<label class="module-icon stat-icon" label="" />
|
||||
<label class="stat-label" label={ram(r => `${r}%`)} />
|
||||
</box>
|
||||
</box>
|
||||
)
|
||||
}
|
||||
60
apps/.config/ags/widget/modules/Tailscale.tsx
Normal file
|
|
@ -0,0 +1,60 @@
|
|||
import { Gtk } from "ags/gtk4"
|
||||
import { execAsync } from "ags/process"
|
||||
import { interval } from "ags/time"
|
||||
import { createState } from "ags"
|
||||
|
||||
export default function Tailscale() {
|
||||
const [status, setStatus] = createState({ up: false, ip: "", peers: 0 })
|
||||
|
||||
function poll() {
|
||||
execAsync("tailscale status --json").then(out => {
|
||||
try {
|
||||
const j = JSON.parse(out)
|
||||
setStatus({
|
||||
up: j.BackendState === "Running",
|
||||
ip: j.TailscaleIPs?.[0] ?? "",
|
||||
peers: Object.keys(j.Peer ?? {}).length,
|
||||
})
|
||||
} catch {}
|
||||
}).catch(() => {})
|
||||
}
|
||||
|
||||
poll()
|
||||
interval(5000, poll)
|
||||
|
||||
const popover = new Gtk.Popover()
|
||||
popover.set_has_arrow(false)
|
||||
|
||||
const content = (
|
||||
<box orientation={Gtk.Orientation.VERTICAL} spacing={8} widthRequest={200}>
|
||||
<label label={status(s => s.up ? " Running" : " Stopped")} xalign={0} class="vpn-status-label" />
|
||||
<label label={status(s => s.ip ? `IP: ${s.ip}` : "No IP")} xalign={0} class="vpn-detail" />
|
||||
<label label={status(s => `Peers: ${s.peers}`)} xalign={0} class="vpn-detail" />
|
||||
</box>
|
||||
) as unknown as Gtk.Widget
|
||||
|
||||
popover.set_child(content)
|
||||
|
||||
const icon = new Gtk.Image({ iconName: "tailscale", pixelSize: 16 })
|
||||
|
||||
const btn = (
|
||||
<button class={status(s => `module tailscale-module${s.up ? " on" : " off"}`)}
|
||||
valign={Gtk.Align.CENTER}
|
||||
onClicked={() => execAsync(
|
||||
status().up
|
||||
? "tailscale down"
|
||||
: `bash -c "tailscale up && sudo ip route add 100.64.0.0/10 dev tailscale0 table main && sudo nft insert rule inet mullvad output ip daddr 100.64.0.0/10 accept && sudo nft insert rule inet mullvad output oif tailscale0 accept"`
|
||||
).then(poll)}>
|
||||
</button>
|
||||
) as unknown as Gtk.Button
|
||||
|
||||
btn.set_child(icon)
|
||||
|
||||
const gesture = new Gtk.GestureClick()
|
||||
gesture.button = 3
|
||||
gesture.connect("pressed", () => popover.popup())
|
||||
btn.add_controller(gesture)
|
||||
popover.set_parent(btn)
|
||||
|
||||
return btn
|
||||
}
|
||||
36
apps/.config/ags/widget/modules/Tray.tsx
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
import { Gtk } from "ags/gtk4"
|
||||
import AstalTray from "gi://AstalTray"
|
||||
import { createBinding, For } from "ags"
|
||||
|
||||
export default function Tray() {
|
||||
const tray = AstalTray.get_default()
|
||||
const items = createBinding(tray, "items")
|
||||
|
||||
return (
|
||||
<box class="tray-module" valign={Gtk.Align.CENTER} spacing={4} visible={items(i => i.length > 0)}>
|
||||
<For each={items} id={item => item.item_id}>
|
||||
{item => {
|
||||
const btn = new Gtk.Button()
|
||||
btn.add_css_class("tray-item")
|
||||
btn.valign = Gtk.Align.CENTER
|
||||
btn.child = new Gtk.Image({ gicon: item.gicon, pixel_size: 16 })
|
||||
btn.connect("clicked", () => item.activate(0, 0))
|
||||
|
||||
if (item.menu_model) {
|
||||
const pop = new Gtk.PopoverMenu({ menu_model: item.menu_model })
|
||||
if (item.action_group)
|
||||
pop.insert_action_group("dbusmenu", item.action_group)
|
||||
pop.set_parent(btn)
|
||||
|
||||
const gesture = new Gtk.GestureClick()
|
||||
gesture.button = 3
|
||||
gesture.connect("pressed", () => pop.popup())
|
||||
btn.add_controller(gesture)
|
||||
}
|
||||
|
||||
return btn
|
||||
}}
|
||||
</For>
|
||||
</box>
|
||||
)
|
||||
}
|
||||
85
apps/.config/ags/widget/modules/Volume.tsx
Normal file
|
|
@ -0,0 +1,85 @@
|
|||
import { Gtk } from "ags/gtk4"
|
||||
import { execAsync } from "ags/process"
|
||||
import { createState } from "ags"
|
||||
import { interval } from "ags/time"
|
||||
|
||||
export default function Volume() {
|
||||
const [spk, setSpk] = createState({ vol: 0, muted: false })
|
||||
const [mic, setMic] = createState({ vol: 0, muted: false })
|
||||
|
||||
function pollSpk() {
|
||||
execAsync(["wpctl", "get-volume", "@DEFAULT_AUDIO_SINK@"])
|
||||
.then(out => {
|
||||
const match = out.match(/Volume: ([\d.]+)/)
|
||||
setSpk({ vol: match ? Math.round(parseFloat(match[1]) * 100) : 0, muted: out.includes("[MUTED]") })
|
||||
}).catch(() => {})
|
||||
}
|
||||
|
||||
function pollMic() {
|
||||
execAsync(["wpctl", "get-volume", "@DEFAULT_AUDIO_SOURCE@"])
|
||||
.then(out => {
|
||||
const match = out.match(/Volume: ([\d.]+)/)
|
||||
setMic({ vol: match ? Math.round(parseFloat(match[1]) * 100) : 0, muted: out.includes("[MUTED]") })
|
||||
}).catch(() => {})
|
||||
}
|
||||
|
||||
pollSpk(); pollMic()
|
||||
interval(1000, pollSpk)
|
||||
interval(1000, pollMic)
|
||||
|
||||
const spkIcon = spk(({ vol, muted }) => {
|
||||
if (muted) return ""
|
||||
if (vol === 0) return ""
|
||||
if (vol < 50) return ""
|
||||
return ""
|
||||
})
|
||||
|
||||
const popover = new Gtk.Popover()
|
||||
popover.set_has_arrow(false)
|
||||
|
||||
const content = (
|
||||
<box orientation={Gtk.Orientation.VERTICAL} spacing={8} widthRequest={200}>
|
||||
<box spacing={8}>
|
||||
<label class="vol-icon module-icon" label="" />
|
||||
<label label="Speaker" hexpand xalign={0} />
|
||||
<label label={spk(v => `${v.vol}%`)} class="vol-pct" />
|
||||
</box>
|
||||
<slider
|
||||
min={0} max={150} value={spk(v => v.vol)}
|
||||
widthRequest={180}
|
||||
onNotifyValue={self => execAsync(["wpctl", "set-volume", "@DEFAULT_AUDIO_SINK@", `${self.value / 100}`]).catch(() => {})}
|
||||
/>
|
||||
<box spacing={8}>
|
||||
<label class={mic(m => `module-icon ${m.muted ? "vol-muted" : "mic-icon"}`)} label={mic(m => m.muted ? "" : "")} />
|
||||
<label label="Mic" hexpand xalign={0} />
|
||||
<label label={mic(v => `${v.vol}%`)} class="vol-pct" />
|
||||
</box>
|
||||
<slider
|
||||
min={0} max={100} value={mic(v => v.vol)}
|
||||
widthRequest={180}
|
||||
onNotifyValue={self => execAsync(["wpctl", "set-volume", "@DEFAULT_AUDIO_SOURCE@", `${self.value / 100}`]).catch(() => {})}
|
||||
/>
|
||||
<button class="open-mixer-btn" onClicked={() => execAsync("qpwgraph").catch(() => {})}>
|
||||
<box spacing={6} halign={Gtk.Align.CENTER}>
|
||||
<label label="" class="module-icon" />
|
||||
<label label="Open mixer" />
|
||||
</box>
|
||||
</button>
|
||||
</box>
|
||||
) as unknown as Gtk.Widget
|
||||
|
||||
popover.set_child(content)
|
||||
|
||||
const btn = (
|
||||
<button class="module volume-module" valign={Gtk.Align.CENTER} hexpand={false}
|
||||
onClicked={() => popover.popup()}>
|
||||
<box spacing={4}>
|
||||
<label class={spk(v => `module-icon ${v.muted ? "vol-muted" : "vol-icon"}`)} label={spkIcon} />
|
||||
<label label={spk(v => `${v.vol}%`)} />
|
||||
</box>
|
||||
</button>
|
||||
) as unknown as Gtk.Button
|
||||
|
||||
popover.set_parent(btn)
|
||||
return btn
|
||||
}
|
||||
49
apps/.config/ags/widget/modules/Weather.tsx
Normal file
|
|
@ -0,0 +1,49 @@
|
|||
import { Gtk } from "ags/gtk4"
|
||||
import GLib from "gi://GLib"
|
||||
import { execAsync } from "ags/process"
|
||||
import { interval } from "ags/time"
|
||||
import { createState, createEffect } from "ags"
|
||||
|
||||
const UNIT_FILE = `${GLib.get_home_dir()}/.config/ags/.weather-unit`
|
||||
const LOCATION = "Phoenix"
|
||||
|
||||
function readUnit(): "m" | "u" {
|
||||
try {
|
||||
const [ok, contents] = GLib.file_get_contents(UNIT_FILE)
|
||||
return ok && new TextDecoder().decode(contents).trim() === "u" ? "u" : "m"
|
||||
} catch { return "m" }
|
||||
}
|
||||
|
||||
export default function Weather() {
|
||||
const [unit, setUnit] = createState<"m" | "u">(readUnit())
|
||||
const [text, setText] = createState("")
|
||||
|
||||
function fetch() {
|
||||
execAsync(`curl -sf 'wttr.in/${LOCATION}?format=%c%t&${unit()}'`)
|
||||
.then(s => setText(s.trim().replace(/\s+/g, " ").replace(/\+(\d)/g, "$1")))
|
||||
.catch(() => {})
|
||||
}
|
||||
|
||||
createEffect(() => {
|
||||
unit() // subscribe — re-fetch when unit changes
|
||||
fetch()
|
||||
})
|
||||
|
||||
interval(1800000, fetch)
|
||||
|
||||
return (
|
||||
<box class="module weather-module" valign={Gtk.Align.CENTER} spacing={4} visible={text(t => t !== "")}>
|
||||
<label class="weather-text" label={text} />
|
||||
<button
|
||||
class="unit-toggle"
|
||||
onClicked={() => {
|
||||
const next: "m" | "u" = unit() === "m" ? "u" : "m"
|
||||
setUnit(next)
|
||||
execAsync(`bash -c "echo ${next} > ${UNIT_FILE}"`)
|
||||
}}
|
||||
>
|
||||
<label label={unit(u => u === "m" ? "°C" : "°F")} />
|
||||
</button>
|
||||
</box>
|
||||
)
|
||||
}
|
||||
32
apps/.config/ags/widget/modules/WindowTitle.tsx
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
import { createState } from "ags"
|
||||
import { interval } from "ags/time"
|
||||
import { execAsync } from "ags/process"
|
||||
import { Gtk } from "ags/gtk4"
|
||||
|
||||
interface NiriWindow {
|
||||
title: string | null
|
||||
app_id: string | null
|
||||
}
|
||||
|
||||
export default function WindowTitle() {
|
||||
const [win, setWin] = createState<NiriWindow>({ title: null, app_id: null })
|
||||
|
||||
function poll() {
|
||||
execAsync(["niri", "msg", "--json", "focused-window"])
|
||||
.then(out => { try { setWin(JSON.parse(out)) } catch {} })
|
||||
.catch(() => setWin({ title: null, app_id: null }))
|
||||
}
|
||||
|
||||
poll()
|
||||
interval(1000, poll)
|
||||
|
||||
return (
|
||||
<label
|
||||
class="window-title"
|
||||
halign={Gtk.Align.START}
|
||||
ellipsize={3}
|
||||
maxWidthChars={40}
|
||||
label={win(w => w.title ?? w.app_id ?? "")}
|
||||
/>
|
||||
)
|
||||
}
|
||||
46
apps/.config/ags/widget/modules/Workspaces.tsx
Normal file
|
|
@ -0,0 +1,46 @@
|
|||
import { createState } from "ags"
|
||||
import { interval } from "ags/time"
|
||||
import { execAsync } from "ags/process"
|
||||
import { Gtk } from "ags/gtk4"
|
||||
import { For } from "ags"
|
||||
|
||||
interface NiriWorkspace {
|
||||
id: number
|
||||
idx: number
|
||||
name: string | null
|
||||
output: string
|
||||
is_active: boolean
|
||||
is_focused: boolean
|
||||
active_window_id: number | null
|
||||
}
|
||||
|
||||
export default function Workspaces() {
|
||||
const [workspaces, setWorkspaces] = createState<NiriWorkspace[]>([])
|
||||
|
||||
function poll() {
|
||||
execAsync(["niri", "msg", "--json", "workspaces"])
|
||||
.then(out => {
|
||||
try {
|
||||
const ws = JSON.parse(out).sort((a: NiriWorkspace, b: NiriWorkspace) => a.idx - b.idx)
|
||||
setWorkspaces(ws)
|
||||
} catch {}
|
||||
})
|
||||
.catch(() => {})
|
||||
}
|
||||
|
||||
poll()
|
||||
interval(1000, poll)
|
||||
|
||||
return (
|
||||
<box class="workspaces" halign={Gtk.Align.CENTER} valign={Gtk.Align.CENTER} spacing={2}>
|
||||
<For each={workspaces} id={ws => ws.id}>
|
||||
{ws => (
|
||||
<label
|
||||
class={`ws-dot ${ws.is_focused ? "focused" : ws.is_active ? "active" : ""}`}
|
||||
label={ws.is_focused ? "●" : ws.active_window_id ? "○" : "·"}
|
||||
/>
|
||||
)}
|
||||
</For>
|
||||
</box>
|
||||
)
|
||||
}
|
||||
42
apps/.config/ags/widget/notifStore.ts
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
import { createState } from "ags"
|
||||
import Notifd from "gi://AstalNotifd"
|
||||
|
||||
type N = ReturnType<typeof Notifd.get_default>["notifications"][0]
|
||||
|
||||
export type NotifEntry = {
|
||||
id: number
|
||||
app_name: string
|
||||
summary: string
|
||||
body: string
|
||||
notif: N
|
||||
}
|
||||
|
||||
export const [history, setHistory] = createState<NotifEntry[]>([])
|
||||
|
||||
const PRIVATE_APPS = ["signal", "Signal"]
|
||||
|
||||
export function addNotif(notif: N) {
|
||||
const private_ = PRIVATE_APPS.some(a => (notif.app_name || "").toLowerCase().includes(a.toLowerCase()))
|
||||
setHistory(h => {
|
||||
if (h.some(e => e.id === notif.id)) return h
|
||||
return [...h, {
|
||||
id: notif.id,
|
||||
app_name: notif.app_name || "",
|
||||
summary: notif.summary || "",
|
||||
body: private_ ? "" : notif.body || "",
|
||||
notif,
|
||||
}]
|
||||
})
|
||||
}
|
||||
|
||||
export function removeNotif(id: number) {
|
||||
setHistory(h => h.filter(e => e.id !== id))
|
||||
}
|
||||
|
||||
export function clearAll() {
|
||||
const notifd = Notifd.get_default()
|
||||
for (const n of notifd.get_notifications()) {
|
||||
try { n.dismiss() } catch {}
|
||||
}
|
||||
setHistory([])
|
||||
}
|
||||
8
apps/.config/autostart/Hackatime Desktop.desktop
Executable file
|
|
@ -0,0 +1,8 @@
|
|||
[Desktop Entry]
|
||||
Type=Application
|
||||
Version=1.0
|
||||
Name=Hackatime Desktop
|
||||
Comment=Hackatime Desktopstartup script
|
||||
Exec=/home/end/Github/hackatime-desktop/src-tauri/target/release/desktop --minimized
|
||||
StartupNotify=false
|
||||
Terminal=false
|
||||
272
apps/.config/btop/btop.conf
Normal file
|
|
@ -0,0 +1,272 @@
|
|||
#? Config file for btop v.1.4.6
|
||||
|
||||
#* Name of a btop++/bpytop/bashtop formatted ".theme" file, "Default" and "TTY" for builtin themes.
|
||||
#* Themes should be placed in "../share/btop/themes" relative to binary or "$HOME/.config/btop/themes"
|
||||
color_theme = "mariana-purple"
|
||||
|
||||
#* If the theme set background should be shown, set to False if you want terminal background transparency.
|
||||
theme_background = false
|
||||
|
||||
#* Sets if 24-bit truecolor should be used, will convert 24-bit colors to 256 color (6x6x6 color cube) if false.
|
||||
truecolor = true
|
||||
|
||||
#* Set to true to force tty mode regardless if a real tty has been detected or not.
|
||||
#* Will force 16-color mode and TTY theme, set all graph symbols to "tty" and swap out other non tty friendly symbols.
|
||||
force_tty = false
|
||||
|
||||
#* Define presets for the layout of the boxes. Preset 0 is always all boxes shown with default settings. Max 9 presets.
|
||||
#* Format: "box_name:P:G,box_name:P:G" P=(0 or 1) for alternate positions, G=graph symbol to use for box.
|
||||
#* Use whitespace " " as separator between different presets.
|
||||
#* Example: "cpu:0:default,mem:0:tty,proc:1:default cpu:0:braille,proc:0:tty"
|
||||
presets = "cpu:1:default,proc:0:default cpu:0:default,mem:0:default,net:0:default cpu:0:block,net:0:tty"
|
||||
|
||||
#* Set to True to enable "h,j,k,l,g,G" keys for directional control in lists.
|
||||
#* Conflicting keys for h:"help" and k:"kill" is accessible while holding shift.
|
||||
vim_keys = false
|
||||
|
||||
#* Rounded corners on boxes, is ignored if TTY mode is ON.
|
||||
rounded_corners = true
|
||||
|
||||
#* Use terminal synchronized output sequences to reduce flickering on supported terminals.
|
||||
terminal_sync = true
|
||||
|
||||
#* Default symbols to use for graph creation, "braille", "block" or "tty".
|
||||
#* "braille" offers the highest resolution but might not be included in all fonts.
|
||||
#* "block" has half the resolution of braille but uses more common characters.
|
||||
#* "tty" uses only 3 different symbols but will work with most fonts and should work in a real TTY.
|
||||
#* Note that "tty" only has half the horizontal resolution of the other two, so will show a shorter historical view.
|
||||
graph_symbol = "braille"
|
||||
|
||||
# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty".
|
||||
graph_symbol_cpu = "default"
|
||||
|
||||
# Graph symbol to use for graphs in gpu box, "default", "braille", "block" or "tty".
|
||||
graph_symbol_gpu = "default"
|
||||
|
||||
# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty".
|
||||
graph_symbol_mem = "default"
|
||||
|
||||
# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty".
|
||||
graph_symbol_net = "default"
|
||||
|
||||
# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty".
|
||||
graph_symbol_proc = "default"
|
||||
|
||||
#* Manually set which boxes to show. Available values are "cpu mem net proc" and "gpu0" through "gpu5", separate values with whitespace.
|
||||
shown_boxes = "cpu mem net proc"
|
||||
|
||||
#* Update time in milliseconds, recommended 2000 ms or above for better sample times for graphs.
|
||||
update_ms = 1000
|
||||
|
||||
#* Processes sorting, "pid" "program" "arguments" "threads" "user" "memory" "cpu lazy" "cpu direct",
|
||||
#* "cpu lazy" sorts top process over time (easier to follow), "cpu direct" updates top process directly.
|
||||
proc_sorting = "memory"
|
||||
|
||||
#* Reverse sorting order, True or False.
|
||||
proc_reversed = false
|
||||
|
||||
#* Show processes as a tree.
|
||||
proc_tree = false
|
||||
|
||||
#* Use the cpu graph colors in the process list.
|
||||
proc_colors = true
|
||||
|
||||
#* Use a darkening gradient in the process list.
|
||||
proc_gradient = true
|
||||
|
||||
#* If process cpu usage should be of the core it's running on or usage of the total available cpu power.
|
||||
proc_per_core = false
|
||||
|
||||
#* Show process memory as bytes instead of percent.
|
||||
proc_mem_bytes = true
|
||||
|
||||
#* Show cpu graph for each process.
|
||||
proc_cpu_graphs = true
|
||||
|
||||
#* Use /proc/[pid]/smaps for memory information in the process info box (very slow but more accurate)
|
||||
proc_info_smaps = false
|
||||
|
||||
#* Show proc box on left side of screen instead of right.
|
||||
proc_left = false
|
||||
|
||||
#* (Linux) Filter processes tied to the Linux kernel(similar behavior to htop).
|
||||
proc_filter_kernel = false
|
||||
|
||||
#* In tree-view, always accumulate child process resources in the parent process.
|
||||
proc_aggregate = false
|
||||
|
||||
#* Should cpu and memory usage display be preserved for dead processes when paused.
|
||||
keep_dead_proc_usage = false
|
||||
|
||||
#* Sets the CPU stat shown in upper half of the CPU graph, "total" is always available.
|
||||
#* Select from a list of detected attributes from the options menu.
|
||||
cpu_graph_upper = "Auto"
|
||||
|
||||
#* Sets the CPU stat shown in lower half of the CPU graph, "total" is always available.
|
||||
#* Select from a list of detected attributes from the options menu.
|
||||
cpu_graph_lower = "Auto"
|
||||
|
||||
#* If gpu info should be shown in the cpu box. Available values = "Auto", "On" and "Off".
|
||||
show_gpu_info = "Auto"
|
||||
|
||||
#* Toggles if the lower CPU graph should be inverted.
|
||||
cpu_invert_lower = true
|
||||
|
||||
#* Set to True to completely disable the lower CPU graph.
|
||||
cpu_single_graph = false
|
||||
|
||||
#* Show cpu box at bottom of screen instead of top.
|
||||
cpu_bottom = false
|
||||
|
||||
#* Shows the system uptime in the CPU box.
|
||||
show_uptime = true
|
||||
|
||||
#* Shows the CPU package current power consumption in watts. Requires running `make setcap` or `make setuid` or running with sudo.
|
||||
show_cpu_watts = true
|
||||
|
||||
#* Show cpu temperature.
|
||||
check_temp = true
|
||||
|
||||
#* Which sensor to use for cpu temperature, use options menu to select from list of available sensors.
|
||||
cpu_sensor = "Auto"
|
||||
|
||||
#* Show temperatures for cpu cores also if check_temp is True and sensors has been found.
|
||||
show_coretemp = true
|
||||
|
||||
#* Set a custom mapping between core and coretemp, can be needed on certain cpus to get correct temperature for correct core.
|
||||
#* Use lm-sensors or similar to see which cores are reporting temperatures on your machine.
|
||||
#* Format "x:y" x=core with wrong temp, y=core with correct temp, use space as separator between multiple entries.
|
||||
#* Example: "4:0 5:1 6:3"
|
||||
cpu_core_map = ""
|
||||
|
||||
#* Which temperature scale to use, available values: "celsius", "fahrenheit", "kelvin" and "rankine".
|
||||
temp_scale = "celsius"
|
||||
|
||||
#* Use base 10 for bits/bytes sizes, KB = 1000 instead of KiB = 1024.
|
||||
base_10_sizes = false
|
||||
|
||||
#* Show CPU frequency.
|
||||
show_cpu_freq = true
|
||||
|
||||
#* How to calculate CPU frequency, available values: "first", "range", "lowest", "highest" and "average".
|
||||
freq_mode = "first"
|
||||
|
||||
#* Draw a clock at top of screen, formatting according to strftime, empty string to disable.
|
||||
#* Special formatting: /host = hostname | /user = username | /uptime = system uptime
|
||||
clock_format = "%X"
|
||||
|
||||
#* Update main ui in background when menus are showing, set this to false if the menus is flickering too much for comfort.
|
||||
background_update = true
|
||||
|
||||
#* Custom cpu model name, empty string to disable.
|
||||
custom_cpu_name = ""
|
||||
|
||||
#* Optional filter for shown disks, should be full path of a mountpoint, separate multiple values with whitespace " ".
|
||||
#* Only disks matching the filter will be shown. Prepend exclude= to only show disks not matching the filter. Examples: disk_filter="/boot /home/user", disks_filter="exclude=/boot /home/user"
|
||||
disks_filter = ""
|
||||
|
||||
#* Show graphs instead of meters for memory values.
|
||||
mem_graphs = true
|
||||
|
||||
#* Show mem box below net box instead of above.
|
||||
mem_below_net = false
|
||||
|
||||
#* Count ZFS ARC in cached and available memory.
|
||||
zfs_arc_cached = true
|
||||
|
||||
#* If swap memory should be shown in memory box.
|
||||
show_swap = true
|
||||
|
||||
#* Show swap as a disk, ignores show_swap value above, inserts itself after first disk.
|
||||
swap_disk = true
|
||||
|
||||
#* If mem box should be split to also show disks info.
|
||||
show_disks = true
|
||||
|
||||
#* Filter out non physical disks. Set this to False to include network disks, RAM disks and similar.
|
||||
only_physical = true
|
||||
|
||||
#* Read disks list from /etc/fstab. This also disables only_physical.
|
||||
use_fstab = true
|
||||
|
||||
#* Setting this to True will hide all datasets, and only show ZFS pools. (IO stats will be calculated per-pool)
|
||||
zfs_hide_datasets = false
|
||||
|
||||
#* Set to true to show available disk space for privileged users.
|
||||
disk_free_priv = false
|
||||
|
||||
#* Toggles if io activity % (disk busy time) should be shown in regular disk usage view.
|
||||
show_io_stat = true
|
||||
|
||||
#* Toggles io mode for disks, showing big graphs for disk read/write speeds.
|
||||
io_mode = true
|
||||
|
||||
#* Set to True to show combined read/write io graphs in io mode.
|
||||
io_graph_combined = false
|
||||
|
||||
#* Set the top speed for the io graphs in MiB/s (100 by default), use format "mountpoint:speed" separate disks with whitespace " ".
|
||||
#* Example: "/mnt/media:100 /:20 /boot:1".
|
||||
io_graph_speeds = ""
|
||||
|
||||
#* Set fixed values for network graphs in Mebibits. Is only used if net_auto is also set to False.
|
||||
net_download = 100
|
||||
|
||||
net_upload = 100
|
||||
|
||||
#* Use network graphs auto rescaling mode, ignores any values set above and rescales down to 10 Kibibytes at the lowest.
|
||||
net_auto = true
|
||||
|
||||
#* Sync the auto scaling for download and upload to whichever currently has the highest scale.
|
||||
net_sync = true
|
||||
|
||||
#* Starts with the Network Interface specified here.
|
||||
net_iface = ""
|
||||
|
||||
#* "True" shows bitrates in base 10 (Kbps, Mbps). "False" shows bitrates in binary sizes (Kibps, Mibps, etc.). "Auto" uses base_10_sizes.
|
||||
base_10_bitrate = "Auto"
|
||||
|
||||
#* Show battery stats in top right if battery is present.
|
||||
show_battery = true
|
||||
|
||||
#* Which battery to use if multiple are present. "Auto" for auto detection.
|
||||
selected_battery = "Auto"
|
||||
|
||||
#* Show power stats of battery next to charge indicator.
|
||||
show_battery_watts = true
|
||||
|
||||
#* Set loglevel for "~/.local/state/btop.log" levels are: "ERROR" "WARNING" "INFO" "DEBUG".
|
||||
#* The level set includes all lower levels, i.e. "DEBUG" will show all logging info.
|
||||
log_level = "WARNING"
|
||||
|
||||
#* Automatically save current settings to config file on exit.
|
||||
save_config_on_exit = true
|
||||
|
||||
#* Measure PCIe throughput on NVIDIA cards, may impact performance on certain cards.
|
||||
nvml_measure_pcie_speeds = true
|
||||
|
||||
#* Measure PCIe throughput on AMD cards, may impact performance on certain cards.
|
||||
rsmi_measure_pcie_speeds = true
|
||||
|
||||
#* Horizontally mirror the GPU graph.
|
||||
gpu_mirror_graph = true
|
||||
|
||||
#* Set which GPU vendors to show. Available values are "nvidia amd intel"
|
||||
shown_gpus = "nvidia amd intel"
|
||||
|
||||
#* Custom gpu0 model name, empty string to disable.
|
||||
custom_gpu_name0 = ""
|
||||
|
||||
#* Custom gpu1 model name, empty string to disable.
|
||||
custom_gpu_name1 = ""
|
||||
|
||||
#* Custom gpu2 model name, empty string to disable.
|
||||
custom_gpu_name2 = ""
|
||||
|
||||
#* Custom gpu3 model name, empty string to disable.
|
||||
custom_gpu_name3 = ""
|
||||
|
||||
#* Custom gpu4 model name, empty string to disable.
|
||||
custom_gpu_name4 = ""
|
||||
|
||||
#* Custom gpu5 model name, empty string to disable.
|
||||
custom_gpu_name5 = ""
|
||||
2
apps/.config/firewall/applet.conf
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
[General]
|
||||
notifications=true
|
||||
353
apps/.config/mimeapps.list
Normal file
|
|
@ -0,0 +1,353 @@
|
|||
[Added Associations]
|
||||
application/json=vscodium-3.desktop;vscodium-2.desktop;/home/end/.local/share/applications/code-3.desktop;
|
||||
application/pdf=zen.desktop;helium.desktop;
|
||||
application/vnd.microsoft.portable-executable=wine-2.desktop;
|
||||
audio/AMR=vlc.desktop;org.gnome.Showtime.desktop;org.gnome.Totem.desktop;firefox.desktop;mpv.desktop;mplayer.desktop;audacity.desktop;org.musicbrainz.Picard.desktop;
|
||||
audio/AMR-WB=vlc.desktop;org.gnome.Showtime.desktop;org.gnome.Totem.desktop;firefox.desktop;mpv.desktop;mplayer.desktop;audacity.desktop;org.musicbrainz.Picard.desktop;
|
||||
audio/aac=vlc.desktop;org.gnome.Showtime.desktop;org.gnome.Totem.desktop;firefox.desktop;mpv.desktop;mplayer.desktop;audacity.desktop;org.musicbrainz.Picard.desktop;
|
||||
audio/ac3=vlc.desktop;org.gnome.Showtime.desktop;org.gnome.Totem.desktop;firefox.desktop;mpv.desktop;mplayer.desktop;audacity.desktop;org.musicbrainz.Picard.desktop;
|
||||
audio/annodex=vlc.desktop;org.gnome.Showtime.desktop;org.gnome.Totem.desktop;firefox.desktop;mpv.desktop;mplayer.desktop;audacity.desktop;org.musicbrainz.Picard.desktop;
|
||||
audio/basic=vlc.desktop;org.gnome.Showtime.desktop;org.gnome.Totem.desktop;firefox.desktop;mpv.desktop;mplayer.desktop;audacity.desktop;org.musicbrainz.Picard.desktop;
|
||||
audio/flac=vlc.desktop;org.gnome.Showtime.desktop;org.gnome.Totem.desktop;firefox.desktop;mpv.desktop;mplayer.desktop;audacity.desktop;org.musicbrainz.Picard.desktop;
|
||||
audio/midi=vlc.desktop;org.gnome.Showtime.desktop;org.gnome.Totem.desktop;firefox.desktop;mpv.desktop;mplayer.desktop;audacity.desktop;org.musicbrainz.Picard.desktop;
|
||||
audio/mobile-xmf=vlc.desktop;org.gnome.Showtime.desktop;org.gnome.Totem.desktop;firefox.desktop;mpv.desktop;mplayer.desktop;audacity.desktop;org.musicbrainz.Picard.desktop;
|
||||
audio/mp2=vlc.desktop;org.gnome.Showtime.desktop;org.gnome.Totem.desktop;firefox.desktop;mpv.desktop;mplayer.desktop;audacity.desktop;org.musicbrainz.Picard.desktop;
|
||||
audio/mp4=vlc.desktop;org.gnome.Showtime.desktop;org.gnome.Totem.desktop;firefox.desktop;mpv.desktop;mplayer.desktop;audacity.desktop;org.musicbrainz.Picard.desktop;
|
||||
audio/mpeg=vlc.desktop;org.gnome.Showtime.desktop;org.gnome.Totem.desktop;firefox.desktop;mpv.desktop;mplayer.desktop;audacity.desktop;org.musicbrainz.Picard.desktop;
|
||||
audio/mpegurl=vlc.desktop;
|
||||
audio/ogg=vlc.desktop;org.gnome.Showtime.desktop;org.gnome.Totem.desktop;firefox.desktop;mpv.desktop;mplayer.desktop;audacity.desktop;org.musicbrainz.Picard.desktop;
|
||||
audio/prs.sid=vlc.desktop;org.gnome.Showtime.desktop;org.gnome.Totem.desktop;firefox.desktop;mpv.desktop;mplayer.desktop;audacity.desktop;org.musicbrainz.Picard.desktop;
|
||||
audio/usac=vlc.desktop;org.gnome.Showtime.desktop;org.gnome.Totem.desktop;firefox.desktop;mpv.desktop;mplayer.desktop;audacity.desktop;org.musicbrainz.Picard.desktop;
|
||||
audio/vnd.audible.aax=vlc.desktop;org.gnome.Showtime.desktop;org.gnome.Totem.desktop;firefox.desktop;mpv.desktop;mplayer.desktop;audacity.desktop;org.musicbrainz.Picard.desktop;
|
||||
audio/vnd.audible.aaxc=vlc.desktop;org.gnome.Showtime.desktop;org.gnome.Totem.desktop;firefox.desktop;mpv.desktop;mplayer.desktop;audacity.desktop;org.musicbrainz.Picard.desktop;
|
||||
audio/vnd.dts=vlc.desktop;org.gnome.Showtime.desktop;org.gnome.Totem.desktop;firefox.desktop;mpv.desktop;mplayer.desktop;audacity.desktop;org.musicbrainz.Picard.desktop;
|
||||
audio/vnd.dts.hd=vlc.desktop;org.gnome.Showtime.desktop;org.gnome.Totem.desktop;firefox.desktop;mpv.desktop;mplayer.desktop;audacity.desktop;org.musicbrainz.Picard.desktop;
|
||||
audio/vnd.rn-realaudio=vlc.desktop;org.gnome.Showtime.desktop;org.gnome.Totem.desktop;firefox.desktop;mpv.desktop;mplayer.desktop;audacity.desktop;org.musicbrainz.Picard.desktop;
|
||||
audio/vnd.wave=vlc.desktop;org.gnome.Showtime.desktop;org.gnome.Totem.desktop;firefox.desktop;mpv.desktop;mplayer.desktop;audacity.desktop;org.musicbrainz.Picard.desktop;
|
||||
audio/vorbis=vlc.desktop;
|
||||
audio/webm=vlc.desktop;org.gnome.Showtime.desktop;org.gnome.Totem.desktop;firefox.desktop;mpv.desktop;mplayer.desktop;audacity.desktop;org.musicbrainz.Picard.desktop;
|
||||
audio/x-adpcm=vlc.desktop;org.gnome.Showtime.desktop;org.gnome.Totem.desktop;firefox.desktop;mpv.desktop;mplayer.desktop;audacity.desktop;org.musicbrainz.Picard.desktop;
|
||||
audio/x-aifc=vlc.desktop;org.gnome.Showtime.desktop;org.gnome.Totem.desktop;firefox.desktop;mpv.desktop;mplayer.desktop;audacity.desktop;org.musicbrainz.Picard.desktop;
|
||||
audio/x-aiff=vlc.desktop;org.gnome.Showtime.desktop;org.gnome.Totem.desktop;firefox.desktop;mpv.desktop;mplayer.desktop;audacity.desktop;org.musicbrainz.Picard.desktop;
|
||||
audio/x-amzxml=vlc.desktop;org.gnome.Showtime.desktop;org.gnome.Totem.desktop;firefox.desktop;mpv.desktop;mplayer.desktop;audacity.desktop;org.musicbrainz.Picard.desktop;
|
||||
audio/x-ape=vlc.desktop;org.gnome.Showtime.desktop;org.gnome.Totem.desktop;firefox.desktop;mpv.desktop;mplayer.desktop;audacity.desktop;org.musicbrainz.Picard.desktop;
|
||||
audio/x-dff=vlc.desktop;org.gnome.Showtime.desktop;org.gnome.Totem.desktop;firefox.desktop;mpv.desktop;mplayer.desktop;audacity.desktop;org.musicbrainz.Picard.desktop;
|
||||
audio/x-dsf=vlc.desktop;org.gnome.Showtime.desktop;org.gnome.Totem.desktop;firefox.desktop;mpv.desktop;mplayer.desktop;audacity.desktop;org.musicbrainz.Picard.desktop;
|
||||
audio/x-flac=vlc.desktop;
|
||||
audio/x-flac+ogg=vlc.desktop;org.gnome.Showtime.desktop;org.gnome.Totem.desktop;firefox.desktop;mpv.desktop;mplayer.desktop;audacity.desktop;org.musicbrainz.Picard.desktop;
|
||||
audio/x-gsm=vlc.desktop;org.gnome.Showtime.desktop;org.gnome.Totem.desktop;firefox.desktop;mpv.desktop;mplayer.desktop;audacity.desktop;org.musicbrainz.Picard.desktop;
|
||||
audio/x-iriver-pla=vlc.desktop;org.gnome.Showtime.desktop;org.gnome.Totem.desktop;firefox.desktop;mpv.desktop;mplayer.desktop;audacity.desktop;org.musicbrainz.Picard.desktop;
|
||||
audio/x-it=vlc.desktop;org.gnome.Showtime.desktop;org.gnome.Totem.desktop;firefox.desktop;mpv.desktop;mplayer.desktop;audacity.desktop;org.musicbrainz.Picard.desktop;
|
||||
audio/x-m4b=vlc.desktop;org.gnome.Showtime.desktop;org.gnome.Totem.desktop;firefox.desktop;mpv.desktop;mplayer.desktop;audacity.desktop;org.musicbrainz.Picard.desktop;
|
||||
audio/x-m4r=vlc.desktop;org.gnome.Showtime.desktop;org.gnome.Totem.desktop;firefox.desktop;mpv.desktop;mplayer.desktop;audacity.desktop;org.musicbrainz.Picard.desktop;
|
||||
audio/x-matroska=vlc.desktop;org.gnome.Showtime.desktop;org.gnome.Totem.desktop;firefox.desktop;mpv.desktop;mplayer.desktop;audacity.desktop;org.musicbrainz.Picard.desktop;
|
||||
audio/x-minipsf=vlc.desktop;org.gnome.Showtime.desktop;org.gnome.Totem.desktop;firefox.desktop;mpv.desktop;mplayer.desktop;audacity.desktop;org.musicbrainz.Picard.desktop;
|
||||
audio/x-mo3=vlc.desktop;org.gnome.Showtime.desktop;org.gnome.Totem.desktop;firefox.desktop;mpv.desktop;mplayer.desktop;audacity.desktop;org.musicbrainz.Picard.desktop;
|
||||
audio/x-mod=vlc.desktop;org.gnome.Showtime.desktop;org.gnome.Totem.desktop;firefox.desktop;mpv.desktop;mplayer.desktop;audacity.desktop;org.musicbrainz.Picard.desktop;
|
||||
audio/x-mp3=vlc.desktop;
|
||||
audio/x-mpegurl=vlc.desktop;org.gnome.Showtime.desktop;org.gnome.Totem.desktop;firefox.desktop;mpv.desktop;mplayer.desktop;audacity.desktop;org.musicbrainz.Picard.desktop;
|
||||
audio/x-ms-asx=vlc.desktop;org.gnome.Showtime.desktop;org.gnome.Totem.desktop;firefox.desktop;mpv.desktop;mplayer.desktop;audacity.desktop;org.musicbrainz.Picard.desktop;
|
||||
audio/x-ms-wma=vlc.desktop;org.gnome.Showtime.desktop;org.gnome.Totem.desktop;firefox.desktop;mpv.desktop;mplayer.desktop;audacity.desktop;org.musicbrainz.Picard.desktop;
|
||||
audio/x-musepack=vlc.desktop;org.gnome.Showtime.desktop;org.gnome.Totem.desktop;firefox.desktop;mpv.desktop;mplayer.desktop;audacity.desktop;org.musicbrainz.Picard.desktop;
|
||||
audio/x-oggflac=vlc.desktop;
|
||||
audio/x-opus+ogg=vlc.desktop;org.gnome.Showtime.desktop;org.gnome.Totem.desktop;firefox.desktop;mpv.desktop;mplayer.desktop;audacity.desktop;org.musicbrainz.Picard.desktop;
|
||||
audio/x-pn-audibleaudio=vlc.desktop;org.gnome.Showtime.desktop;org.gnome.Totem.desktop;firefox.desktop;mpv.desktop;mplayer.desktop;audacity.desktop;org.musicbrainz.Picard.desktop;
|
||||
audio/x-pn-realaudio=vlc.desktop;
|
||||
audio/x-psf=vlc.desktop;org.gnome.Showtime.desktop;org.gnome.Totem.desktop;firefox.desktop;mpv.desktop;mplayer.desktop;audacity.desktop;org.musicbrainz.Picard.desktop;
|
||||
audio/x-psflib=vlc.desktop;org.gnome.Showtime.desktop;org.gnome.Totem.desktop;firefox.desktop;mpv.desktop;mplayer.desktop;audacity.desktop;org.musicbrainz.Picard.desktop;
|
||||
audio/x-riff=vlc.desktop;org.gnome.Showtime.desktop;org.gnome.Totem.desktop;firefox.desktop;mpv.desktop;mplayer.desktop;audacity.desktop;org.musicbrainz.Picard.desktop;
|
||||
audio/x-s3m=vlc.desktop;org.gnome.Showtime.desktop;org.gnome.Totem.desktop;firefox.desktop;mpv.desktop;mplayer.desktop;audacity.desktop;org.musicbrainz.Picard.desktop;
|
||||
audio/x-scpls=vlc.desktop;org.gnome.Showtime.desktop;org.gnome.Totem.desktop;firefox.desktop;mpv.desktop;mplayer.desktop;audacity.desktop;org.musicbrainz.Picard.desktop;
|
||||
audio/x-speex=vlc.desktop;org.gnome.Showtime.desktop;org.gnome.Totem.desktop;firefox.desktop;mpv.desktop;mplayer.desktop;audacity.desktop;org.musicbrainz.Picard.desktop;
|
||||
audio/x-speex+ogg=vlc.desktop;org.gnome.Showtime.desktop;org.gnome.Totem.desktop;firefox.desktop;mpv.desktop;mplayer.desktop;audacity.desktop;org.musicbrainz.Picard.desktop;
|
||||
audio/x-stm=vlc.desktop;org.gnome.Showtime.desktop;org.gnome.Totem.desktop;firefox.desktop;mpv.desktop;mplayer.desktop;audacity.desktop;org.musicbrainz.Picard.desktop;
|
||||
audio/x-tak=vlc.desktop;org.gnome.Showtime.desktop;org.gnome.Totem.desktop;firefox.desktop;mpv.desktop;mplayer.desktop;audacity.desktop;org.musicbrainz.Picard.desktop;
|
||||
audio/x-tta=vlc.desktop;org.gnome.Showtime.desktop;org.gnome.Totem.desktop;firefox.desktop;mpv.desktop;mplayer.desktop;audacity.desktop;org.musicbrainz.Picard.desktop;
|
||||
audio/x-voc=vlc.desktop;org.gnome.Showtime.desktop;org.gnome.Totem.desktop;firefox.desktop;mpv.desktop;mplayer.desktop;audacity.desktop;org.musicbrainz.Picard.desktop;
|
||||
audio/x-vorbis=vlc.desktop;
|
||||
audio/x-vorbis+ogg=vlc.desktop;org.gnome.Showtime.desktop;org.gnome.Totem.desktop;firefox.desktop;mpv.desktop;mplayer.desktop;audacity.desktop;org.musicbrainz.Picard.desktop;
|
||||
audio/x-wav=vlc.desktop;
|
||||
audio/x-wavpack=vlc.desktop;org.gnome.Showtime.desktop;org.gnome.Totem.desktop;firefox.desktop;mpv.desktop;mplayer.desktop;audacity.desktop;org.musicbrainz.Picard.desktop;
|
||||
audio/x-wavpack-correction=vlc.desktop;org.gnome.Showtime.desktop;org.gnome.Totem.desktop;firefox.desktop;mpv.desktop;mplayer.desktop;audacity.desktop;org.musicbrainz.Picard.desktop;
|
||||
audio/x-xi=vlc.desktop;org.gnome.Showtime.desktop;org.gnome.Totem.desktop;firefox.desktop;mpv.desktop;mplayer.desktop;audacity.desktop;org.musicbrainz.Picard.desktop;
|
||||
audio/x-xm=vlc.desktop;org.gnome.Showtime.desktop;org.gnome.Totem.desktop;firefox.desktop;mpv.desktop;mplayer.desktop;audacity.desktop;org.musicbrainz.Picard.desktop;
|
||||
audio/x-xmf=vlc.desktop;org.gnome.Showtime.desktop;org.gnome.Totem.desktop;firefox.desktop;mpv.desktop;mplayer.desktop;audacity.desktop;org.musicbrainz.Picard.desktop;
|
||||
image/apng=firefox.desktop;
|
||||
image/gif=firefox.desktop;
|
||||
image/jpeg=firefox.desktop;
|
||||
inode/directory=org.gnome.Nautilus.desktop;yazi.desktop;
|
||||
text/cache-manifest=dev.zed.Zed.desktop;vscodium-wayland.desktop;vscodium.desktop;code-6.desktop;code-5.desktop;code-4.desktop;org.gnome.TextEditor.desktop;vim.desktop;libreoffice-writer.desktop;
|
||||
text/calendar=dev.zed.Zed.desktop;vscodium-wayland.desktop;vscodium.desktop;code-6.desktop;code-5.desktop;code-4.desktop;org.gnome.TextEditor.desktop;vim.desktop;libreoffice-writer.desktop;org.mozilla.Thunderbird.desktop;
|
||||
text/css=dev.zed.Zed.desktop;vscodium-wayland.desktop;vscodium.desktop;code-6.desktop;code-5.desktop;code-4.desktop;org.gnome.TextEditor.desktop;vim.desktop;libreoffice-writer.desktop;
|
||||
text/csv=dev.zed.Zed.desktop;vscodium-wayland.desktop;vscodium.desktop;code-6.desktop;code-5.desktop;code-4.desktop;org.gnome.TextEditor.desktop;vim.desktop;libreoffice-writer.desktop;dev.zed.Zed-Dev.desktop;
|
||||
text/csv-schema=dev.zed.Zed.desktop;vscodium-wayland.desktop;vscodium.desktop;code-6.desktop;code-5.desktop;code-4.desktop;org.gnome.TextEditor.desktop;vim.desktop;libreoffice-writer.desktop;
|
||||
text/enriched=dev.zed.Zed.desktop;vscodium-wayland.desktop;vscodium.desktop;code-6.desktop;code-5.desktop;code-4.desktop;org.gnome.TextEditor.desktop;vim.desktop;libreoffice-writer.desktop;
|
||||
text/htmlh=dev.zed.Zed.desktop;vscodium-wayland.desktop;vscodium.desktop;code-6.desktop;code-5.desktop;code-4.desktop;org.gnome.TextEditor.desktop;vim.desktop;libreoffice-writer.desktop;
|
||||
text/javascript=dev.zed.Zed.desktop;vscodium-wayland.desktop;vscodium.desktop;code-6.desktop;code-5.desktop;code-4.desktop;org.gnome.TextEditor.desktop;vim.desktop;libreoffice-writer.desktop;
|
||||
text/jscript.encode=dev.zed.Zed.desktop;vscodium-wayland.desktop;vscodium.desktop;code-6.desktop;code-5.desktop;code-4.desktop;org.gnome.TextEditor.desktop;vim.desktop;libreoffice-writer.desktop;
|
||||
text/julia=dev.zed.Zed.desktop;vscodium-wayland.desktop;vscodium.desktop;code-6.desktop;code-5.desktop;code-4.desktop;org.gnome.TextEditor.desktop;vim.desktop;libreoffice-writer.desktop;
|
||||
text/lrs=dev.zed.Zed.desktop;vscodium-wayland.desktop;vscodium.desktop;code-6.desktop;code-5.desktop;code-4.desktop;org.gnome.TextEditor.desktop;vim.desktop;libreoffice-writer.desktop;
|
||||
text/markdown=dev.zed.Zed.desktop;vscodium-wayland.desktop;vscodium.desktop;code-6.desktop;code-5.desktop;code-4.desktop;org.gnome.TextEditor.desktop;vim.desktop;libreoffice-writer.desktop;
|
||||
text/org=dev.zed.Zed.desktop;vscodium-wayland.desktop;vscodium.desktop;code-6.desktop;code-5.desktop;code-4.desktop;org.gnome.TextEditor.desktop;vim.desktop;libreoffice-writer.desktop;
|
||||
text/plain=dev.zed.Zed.desktop;vscodium-wayland.desktop;vscodium.desktop;code-6.desktop;code-5.desktop;code-4.desktop;org.gnome.TextEditor.desktop;vim.desktop;libreoffice-writer.desktop;
|
||||
text/rfc822-headers=dev.zed.Zed.desktop;vscodium-wayland.desktop;vscodium.desktop;code-6.desktop;code-5.desktop;code-4.desktop;org.gnome.TextEditor.desktop;vim.desktop;libreoffice-writer.desktop;
|
||||
text/richtext=dev.zed.Zed.desktop;vscodium-wayland.desktop;vscodium.desktop;code-6.desktop;code-5.desktop;code-4.desktop;org.gnome.TextEditor.desktop;vim.desktop;libreoffice-writer.desktop;
|
||||
text/rust=dev.zed.Zed.desktop;vscodium-wayland.desktop;vscodium.desktop;code-6.desktop;code-5.desktop;code-4.desktop;org.gnome.TextEditor.desktop;vim.desktop;libreoffice-writer.desktop;
|
||||
text/sgml=dev.zed.Zed.desktop;vscodium-wayland.desktop;vscodium.desktop;code-6.desktop;code-5.desktop;code-4.desktop;org.gnome.TextEditor.desktop;vim.desktop;libreoffice-writer.desktop;
|
||||
text/spreadsheet=dev.zed.Zed.desktop;vscodium-wayland.desktop;vscodium.desktop;code-6.desktop;code-5.desktop;code-4.desktop;org.gnome.TextEditor.desktop;vim.desktop;libreoffice-writer.desktop;
|
||||
text/tab-separated-values=dev.zed.Zed.desktop;vscodium-wayland.desktop;vscodium.desktop;code-6.desktop;code-5.desktop;code-4.desktop;org.gnome.TextEditor.desktop;vim.desktop;libreoffice-writer.desktop;
|
||||
text/tcl=dev.zed.Zed.desktop;vscodium-wayland.desktop;vscodium.desktop;code-6.desktop;code-5.desktop;code-4.desktop;org.gnome.TextEditor.desktop;vim.desktop;libreoffice-writer.desktop;
|
||||
text/troff=dev.zed.Zed.desktop;vscodium-wayland.desktop;vscodium.desktop;code-6.desktop;code-5.desktop;code-4.desktop;org.gnome.TextEditor.desktop;vim.desktop;libreoffice-writer.desktop;
|
||||
text/vbscript=dev.zed.Zed.desktop;vscodium-wayland.desktop;vscodium.desktop;code-6.desktop;code-5.desktop;code-4.desktop;org.gnome.TextEditor.desktop;vim.desktop;libreoffice-writer.desktop;
|
||||
text/vcard=dev.zed.Zed.desktop;vscodium-wayland.desktop;vscodium.desktop;code-6.desktop;code-5.desktop;code-4.desktop;org.gnome.TextEditor.desktop;vim.desktop;libreoffice-writer.desktop;
|
||||
text/vnd.trolltech.linguist=dev.zed.Zed.desktop;vscodium-wayland.desktop;vscodium.desktop;code-6.desktop;code-5.desktop;code-4.desktop;org.gnome.TextEditor.desktop;vim.desktop;libreoffice-writer.desktop;
|
||||
text/vnd.wap.wml=dev.zed.Zed.desktop;vscodium-wayland.desktop;vscodium.desktop;code-6.desktop;code-5.desktop;code-4.desktop;org.gnome.TextEditor.desktop;vim.desktop;libreoffice-writer.desktop;
|
||||
text/x-component=dev.zed.Zed.desktop;vscodium-wayland.desktop;vscodium.desktop;code-6.desktop;code-5.desktop;code-4.desktop;org.gnome.TextEditor.desktop;vim.desktop;libreoffice-writer.desktop;
|
||||
text/x-google-video-pointer=dev.zed.Zed.desktop;vscodium-wayland.desktop;vscodium.desktop;code-6.desktop;code-5.desktop;code-4.desktop;org.gnome.TextEditor.desktop;vim.desktop;libreoffice-writer.desktop;
|
||||
text/x-iMelody=dev.zed.Zed.desktop;vscodium-wayland.desktop;vscodium.desktop;code-6.desktop;code-5.desktop;code-4.desktop;org.gnome.TextEditor.desktop;vim.desktop;libreoffice-writer.desktop;
|
||||
text/x-maven+xml=dev.zed.Zed.desktop;vscodium-wayland.desktop;vscodium.desktop;code-6.desktop;code-5.desktop;code-4.desktop;org.gnome.TextEditor.desktop;vim.desktop;libreoffice-writer.desktop;
|
||||
text/x-mrml=dev.zed.Zed.desktop;vscodium-wayland.desktop;vscodium.desktop;code-6.desktop;code-5.desktop;code-4.desktop;org.gnome.TextEditor.desktop;vim.desktop;libreoffice-writer.desktop;
|
||||
text/x-opml+xml=dev.zed.Zed.desktop;vscodium-wayland.desktop;vscodium.desktop;code-6.desktop;code-5.desktop;code-4.desktop;org.gnome.TextEditor.desktop;vim.desktop;libreoffice-writer.desktop;
|
||||
text/x-patch=dev.zed.Zed.desktop;vscodium-wayland.desktop;vscodium.desktop;code-6.desktop;code-5.desktop;code-4.desktop;org.gnome.TextEditor.desktop;vim.desktop;libreoffice-writer.desktop;
|
||||
text/x-xmi=dev.zed.Zed.desktop;vscodium-wayland.desktop;vscodium.desktop;code-6.desktop;code-5.desktop;code-4.desktop;org.gnome.TextEditor.desktop;vim.desktop;libreoffice-writer.desktop;
|
||||
text/x-xslfo=dev.zed.Zed.desktop;vscodium-wayland.desktop;vscodium.desktop;code-6.desktop;code-5.desktop;code-4.desktop;org.gnome.TextEditor.desktop;vim.desktop;libreoffice-writer.desktop;
|
||||
video/3gpp=vlc.desktop;org.gnome.Showtime.desktop;org.gnome.Totem.desktop;firefox.desktop;mpv.desktop;mplayer.desktop;audacity.desktop;org.musicbrainz.Picard.desktop;
|
||||
video/3gpp2=vlc.desktop;org.gnome.Showtime.desktop;org.gnome.Totem.desktop;firefox.desktop;mpv.desktop;mplayer.desktop;audacity.desktop;org.musicbrainz.Picard.desktop;
|
||||
video/annodex=vlc.desktop;org.gnome.Showtime.desktop;org.gnome.Totem.desktop;firefox.desktop;mpv.desktop;mplayer.desktop;audacity.desktop;org.musicbrainz.Picard.desktop;
|
||||
video/dv=vlc.desktop;org.gnome.Showtime.desktop;org.gnome.Totem.desktop;firefox.desktop;mpv.desktop;mplayer.desktop;audacity.desktop;org.musicbrainz.Picard.desktop;
|
||||
video/isivideo=vlc.desktop;org.gnome.Showtime.desktop;org.gnome.Totem.desktop;firefox.desktop;mpv.desktop;mplayer.desktop;audacity.desktop;org.musicbrainz.Picard.desktop;
|
||||
video/mj2=vlc.desktop;org.gnome.Showtime.desktop;org.gnome.Totem.desktop;firefox.desktop;mpv.desktop;mplayer.desktop;audacity.desktop;org.musicbrainz.Picard.desktop;
|
||||
video/mp2t=vlc.desktop;org.gnome.Showtime.desktop;org.gnome.Totem.desktop;firefox.desktop;mpv.desktop;mplayer.desktop;audacity.desktop;org.musicbrainz.Picard.desktop;
|
||||
video/mp4=vlc.desktop;org.gnome.Showtime.desktop;org.gnome.Totem.desktop;firefox.desktop;mpv.desktop;mplayer.desktop;audacity.desktop;org.musicbrainz.Picard.desktop;
|
||||
video/mpeg=vlc.desktop;org.gnome.Showtime.desktop;org.gnome.Totem.desktop;firefox.desktop;mpv.desktop;mplayer.desktop;audacity.desktop;org.musicbrainz.Picard.desktop;
|
||||
video/ogg=vlc.desktop;org.gnome.Showtime.desktop;org.gnome.Totem.desktop;firefox.desktop;mpv.desktop;mplayer.desktop;audacity.desktop;org.musicbrainz.Picard.desktop;
|
||||
video/quicktime=vlc.desktop;org.gnome.Showtime.desktop;org.gnome.Totem.desktop;firefox.desktop;mpv.desktop;mplayer.desktop;audacity.desktop;org.musicbrainz.Picard.desktop;
|
||||
video/vnd.avi=vlc.desktop;org.gnome.Showtime.desktop;org.gnome.Totem.desktop;firefox.desktop;mpv.desktop;mplayer.desktop;audacity.desktop;org.musicbrainz.Picard.desktop;
|
||||
video/vnd.mpegurl=vlc.desktop;org.gnome.Showtime.desktop;org.gnome.Totem.desktop;firefox.desktop;mpv.desktop;mplayer.desktop;audacity.desktop;org.musicbrainz.Picard.desktop;
|
||||
video/vnd.radgamettools.bink=vlc.desktop;org.gnome.Showtime.desktop;org.gnome.Totem.desktop;firefox.desktop;mpv.desktop;mplayer.desktop;audacity.desktop;org.musicbrainz.Picard.desktop;
|
||||
video/vnd.radgamettools.smacker=vlc.desktop;org.gnome.Showtime.desktop;org.gnome.Totem.desktop;firefox.desktop;mpv.desktop;mplayer.desktop;audacity.desktop;org.musicbrainz.Picard.desktop;
|
||||
video/vnd.rn-realvideo=vlc.desktop;org.gnome.Showtime.desktop;org.gnome.Totem.desktop;firefox.desktop;mpv.desktop;mplayer.desktop;audacity.desktop;org.musicbrainz.Picard.desktop;
|
||||
video/vnd.vivo=vlc.desktop;org.gnome.Showtime.desktop;org.gnome.Totem.desktop;firefox.desktop;mpv.desktop;mplayer.desktop;audacity.desktop;org.musicbrainz.Picard.desktop;
|
||||
video/vnd.youtube.yt=vlc.desktop;org.gnome.Showtime.desktop;org.gnome.Totem.desktop;firefox.desktop;mpv.desktop;mplayer.desktop;audacity.desktop;org.musicbrainz.Picard.desktop;
|
||||
video/wavelet=vlc.desktop;org.gnome.Showtime.desktop;org.gnome.Totem.desktop;firefox.desktop;mpv.desktop;mplayer.desktop;audacity.desktop;org.musicbrainz.Picard.desktop;
|
||||
video/webm=vlc.desktop;org.gnome.Showtime.desktop;org.gnome.Totem.desktop;firefox.desktop;mpv.desktop;mplayer.desktop;audacity.desktop;org.musicbrainz.Picard.desktop;
|
||||
video/x-anim=vlc.desktop;org.gnome.Showtime.desktop;org.gnome.Totem.desktop;firefox.desktop;mpv.desktop;mplayer.desktop;audacity.desktop;org.musicbrainz.Picard.desktop;
|
||||
video/x-flic=vlc.desktop;org.gnome.Showtime.desktop;org.gnome.Totem.desktop;firefox.desktop;mpv.desktop;mplayer.desktop;audacity.desktop;org.musicbrainz.Picard.desktop;
|
||||
video/x-flv=vlc.desktop;org.gnome.Showtime.desktop;org.gnome.Totem.desktop;firefox.desktop;mpv.desktop;mplayer.desktop;audacity.desktop;org.musicbrainz.Picard.desktop;
|
||||
video/x-javafx=vlc.desktop;org.gnome.Showtime.desktop;org.gnome.Totem.desktop;firefox.desktop;mpv.desktop;mplayer.desktop;audacity.desktop;org.musicbrainz.Picard.desktop;
|
||||
video/x-matroska=vlc.desktop;org.gnome.Showtime.desktop;org.gnome.Totem.desktop;firefox.desktop;mpv.desktop;mplayer.desktop;audacity.desktop;org.musicbrainz.Picard.desktop;
|
||||
video/x-matroska-3d=vlc.desktop;org.gnome.Showtime.desktop;org.gnome.Totem.desktop;firefox.desktop;mpv.desktop;mplayer.desktop;audacity.desktop;org.musicbrainz.Picard.desktop;
|
||||
video/x-mjpeg=vlc.desktop;org.gnome.Showtime.desktop;org.gnome.Totem.desktop;firefox.desktop;mpv.desktop;mplayer.desktop;audacity.desktop;org.musicbrainz.Picard.desktop;
|
||||
video/x-mng=vlc.desktop;org.gnome.Showtime.desktop;org.gnome.Totem.desktop;firefox.desktop;mpv.desktop;mplayer.desktop;audacity.desktop;org.musicbrainz.Picard.desktop;
|
||||
video/x-ms-wmp=vlc.desktop;org.gnome.Showtime.desktop;org.gnome.Totem.desktop;firefox.desktop;mpv.desktop;mplayer.desktop;audacity.desktop;org.musicbrainz.Picard.desktop;
|
||||
video/x-ms-wmv=vlc.desktop;org.gnome.Showtime.desktop;org.gnome.Totem.desktop;firefox.desktop;mpv.desktop;mplayer.desktop;audacity.desktop;org.musicbrainz.Picard.desktop;
|
||||
video/x-nsv=vlc.desktop;org.gnome.Showtime.desktop;org.gnome.Totem.desktop;firefox.desktop;mpv.desktop;mplayer.desktop;audacity.desktop;org.musicbrainz.Picard.desktop;
|
||||
video/x-ogm+ogg=vlc.desktop;org.gnome.Showtime.desktop;org.gnome.Totem.desktop;firefox.desktop;mpv.desktop;mplayer.desktop;audacity.desktop;org.musicbrainz.Picard.desktop;
|
||||
video/x-sgi-movie=vlc.desktop;org.gnome.Showtime.desktop;org.gnome.Totem.desktop;firefox.desktop;mpv.desktop;mplayer.desktop;audacity.desktop;org.musicbrainz.Picard.desktop;
|
||||
video/x-theora+ogg=vlc.desktop;org.gnome.Showtime.desktop;org.gnome.Totem.desktop;firefox.desktop;mpv.desktop;mplayer.desktop;audacity.desktop;org.musicbrainz.Picard.desktop;
|
||||
x-scheme-handler/about=zen.desktop;
|
||||
x-scheme-handler/mailto=org.mozilla.Thunderbird.desktop;
|
||||
x-scheme-handler/sgnl=signal-desktop.desktop;signal.desktop;
|
||||
x-scheme-handler/signalcaptcha=signal-desktop.desktop;signal.desktop;
|
||||
x-scheme-handler/slack=slack.desktop;Slack.desktop;
|
||||
x-scheme-handler/unknown=zen.desktop;
|
||||
x-scheme-handler/x-github-client=github-desktop.desktop;GitHub Desktop.desktop;
|
||||
x-scheme-handler/x-github-desktop-auth=github-desktop.desktop;GitHub Desktop.desktop;
|
||||
|
||||
[Default Applications]
|
||||
x-scheme-handler/http=helium.desktop
|
||||
x-scheme-handler/https=helium.desktop
|
||||
text/html=helium.desktop
|
||||
application/json=vscodium-3.desktop;
|
||||
application/pdf=helium.desktop
|
||||
application/vnd.microsoft.portable-executable=wine-2.desktop;
|
||||
audio/AMR=vlc.desktop;
|
||||
audio/AMR-WB=vlc.desktop;
|
||||
audio/aac=vlc.desktop;
|
||||
audio/ac3=vlc.desktop;
|
||||
audio/annodex=vlc.desktop;
|
||||
audio/basic=vlc.desktop;
|
||||
audio/flac=vlc.desktop;
|
||||
audio/midi=vlc.desktop;
|
||||
audio/mobile-xmf=vlc.desktop;
|
||||
audio/mp2=vlc.desktop;
|
||||
audio/mp4=vlc.desktop;
|
||||
audio/mpeg=vlc.desktop;
|
||||
audio/mpegurl=vlc.desktop;
|
||||
audio/ogg=vlc.desktop;
|
||||
audio/prs.sid=vlc.desktop;
|
||||
audio/usac=vlc.desktop;
|
||||
audio/vnd.audible.aax=vlc.desktop;
|
||||
audio/vnd.audible.aaxc=vlc.desktop;
|
||||
audio/vnd.dts=vlc.desktop;
|
||||
audio/vnd.dts.hd=vlc.desktop;
|
||||
audio/vnd.rn-realaudio=vlc.desktop;
|
||||
audio/vnd.wave=vlc.desktop;
|
||||
audio/vorbis=vlc.desktop;
|
||||
audio/webm=vlc.desktop;
|
||||
audio/x-adpcm=vlc.desktop;
|
||||
audio/x-aifc=vlc.desktop;
|
||||
audio/x-aiff=vlc.desktop;
|
||||
audio/x-amzxml=vlc.desktop;
|
||||
audio/x-ape=vlc.desktop;
|
||||
audio/x-dff=vlc.desktop;
|
||||
audio/x-dsf=vlc.desktop;
|
||||
audio/x-flac=vlc.desktop;
|
||||
audio/x-flac+ogg=vlc.desktop;
|
||||
audio/x-gsm=vlc.desktop;
|
||||
audio/x-iriver-pla=vlc.desktop;
|
||||
audio/x-it=vlc.desktop;
|
||||
audio/x-m4b=vlc.desktop;
|
||||
audio/x-m4r=vlc.desktop;
|
||||
audio/x-matroska=vlc.desktop;
|
||||
audio/x-minipsf=vlc.desktop;
|
||||
audio/x-mo3=vlc.desktop;
|
||||
audio/x-mod=vlc.desktop;
|
||||
audio/x-mp3=vlc.desktop;
|
||||
audio/x-mpegurl=vlc.desktop;
|
||||
audio/x-ms-asx=vlc.desktop;
|
||||
audio/x-ms-wma=vlc.desktop;
|
||||
audio/x-musepack=vlc.desktop;
|
||||
audio/x-oggflac=vlc.desktop;
|
||||
audio/x-opus+ogg=vlc.desktop;
|
||||
audio/x-pn-audibleaudio=vlc.desktop;
|
||||
audio/x-pn-realaudio=vlc.desktop;
|
||||
audio/x-psf=vlc.desktop;
|
||||
audio/x-psflib=vlc.desktop;
|
||||
audio/x-riff=vlc.desktop;
|
||||
audio/x-s3m=vlc.desktop;
|
||||
audio/x-scpls=vlc.desktop;
|
||||
audio/x-speex=vlc.desktop;
|
||||
audio/x-speex+ogg=vlc.desktop;
|
||||
audio/x-stm=vlc.desktop;
|
||||
audio/x-tak=vlc.desktop;
|
||||
audio/x-tta=vlc.desktop;
|
||||
audio/x-voc=vlc.desktop;
|
||||
audio/x-vorbis=vlc.desktop;
|
||||
audio/x-vorbis+ogg=vlc.desktop;
|
||||
audio/x-wav=vlc.desktop;
|
||||
audio/x-wavpack=vlc.desktop;
|
||||
audio/x-wavpack-correction=vlc.desktop;
|
||||
audio/x-xi=vlc.desktop;
|
||||
audio/x-xm=vlc.desktop;
|
||||
audio/x-xmf=vlc.desktop;
|
||||
inode/directory=org.gnome.Nautilus.desktop;
|
||||
text/cache-manifest=dev.zed.Zed.desktop;
|
||||
text/calendar=org.mozilla.Thunderbird.desktop
|
||||
text/css=dev.zed.Zed.desktop;
|
||||
text/csv=dev.zed.Zed-Dev.desktop
|
||||
text/csv-schema=dev.zed.Zed.desktop;
|
||||
text/enriched=dev.zed.Zed.desktop;
|
||||
text/htmlh=dev.zed.Zed.desktop;
|
||||
text/javascript=dev.zed.Zed.desktop;
|
||||
text/jscript.encode=dev.zed.Zed.desktop;
|
||||
text/julia=dev.zed.Zed.desktop;
|
||||
text/lrs=dev.zed.Zed.desktop;
|
||||
text/markdown=dev.zed.Zed.desktop;
|
||||
text/org=dev.zed.Zed.desktop;
|
||||
text/plain=dev.zed.Zed.desktop;
|
||||
text/rfc822-headers=dev.zed.Zed.desktop;
|
||||
text/richtext=dev.zed.Zed.desktop;
|
||||
text/rust=dev.zed.Zed.desktop;
|
||||
text/sgml=dev.zed.Zed.desktop;
|
||||
text/spreadsheet=dev.zed.Zed.desktop;
|
||||
text/tab-separated-values=dev.zed.Zed.desktop;
|
||||
text/tcl=dev.zed.Zed.desktop;
|
||||
text/troff=dev.zed.Zed.desktop;
|
||||
text/vbscript=dev.zed.Zed.desktop;
|
||||
text/vcard=dev.zed.Zed.desktop;
|
||||
text/vnd.trolltech.linguist=dev.zed.Zed.desktop;
|
||||
text/vnd.wap.wml=dev.zed.Zed.desktop;
|
||||
text/x-component=dev.zed.Zed.desktop;
|
||||
text/x-google-video-pointer=dev.zed.Zed.desktop;
|
||||
text/x-iMelody=dev.zed.Zed.desktop;
|
||||
text/x-maven+xml=dev.zed.Zed.desktop;
|
||||
text/x-mrml=dev.zed.Zed.desktop;
|
||||
text/x-opml+xml=dev.zed.Zed.desktop;
|
||||
text/x-patch=dev.zed.Zed.desktop;
|
||||
text/x-xmi=dev.zed.Zed.desktop;
|
||||
text/x-xslfo=dev.zed.Zed.desktop;
|
||||
video/3gpp=vlc.desktop;
|
||||
video/3gpp2=vlc.desktop;
|
||||
video/annodex=vlc.desktop;
|
||||
video/dv=vlc.desktop;
|
||||
video/isivideo=vlc.desktop;
|
||||
video/mj2=vlc.desktop;
|
||||
video/mp2t=vlc.desktop;
|
||||
video/mp4=vlc.desktop;
|
||||
video/mpeg=vlc.desktop;
|
||||
video/ogg=vlc.desktop;
|
||||
video/quicktime=vlc.desktop;
|
||||
video/vnd.avi=vlc.desktop;
|
||||
video/vnd.mpegurl=vlc.desktop;
|
||||
video/vnd.radgamettools.bink=vlc.desktop;
|
||||
video/vnd.radgamettools.smacker=vlc.desktop;
|
||||
video/vnd.rn-realvideo=vlc.desktop;
|
||||
video/vnd.vivo=vlc.desktop;
|
||||
video/vnd.youtube.yt=vlc.desktop;
|
||||
video/wavelet=vlc.desktop;
|
||||
video/webm=vlc.desktop;
|
||||
video/x-anim=vlc.desktop;
|
||||
video/x-flic=vlc.desktop;
|
||||
video/x-flv=vlc.desktop;
|
||||
video/x-javafx=vlc.desktop;
|
||||
video/x-matroska=vlc.desktop;
|
||||
video/x-matroska-3d=vlc.desktop;
|
||||
video/x-mjpeg=vlc.desktop;
|
||||
video/x-mng=vlc.desktop;
|
||||
video/x-ms-wmp=vlc.desktop;
|
||||
video/x-ms-wmv=vlc.desktop;
|
||||
video/x-nsv=vlc.desktop;
|
||||
video/x-ogm+ogg=vlc.desktop;
|
||||
video/x-sgi-movie=vlc.desktop;
|
||||
video/x-theora+ogg=vlc.desktop;
|
||||
x-scheme-handler/adskidmgr=adskidmgr-opener.desktop;
|
||||
x-scheme-handler/discord=vesktop.desktop
|
||||
x-scheme-handler/sgnl=signal.desktop
|
||||
x-scheme-handler/signalcaptcha=signal.desktop
|
||||
x-scheme-handler/slack=slack.desktop
|
||||
x-scheme-handler/x-github-client=github-desktop.desktop
|
||||
x-scheme-handler/x-github-desktop-auth=github-desktop.desktop
|
||||
x-scheme-handler/tel=helium.desktop
|
||||
x-scheme-handler/claude-cli=claude-code-url-handler.desktop
|
||||
x-scheme-handler/pttp=CiscoPacketTracerPtsa-9.0.0.desktop
|
||||
application/x-pka=CiscoPacketTracer-9.0.0.desktop
|
||||
application/x-pkt=CiscoPacketTracer-9.0.0.desktop
|
||||
application/x-pkz=CiscoPacketTracer-9.0.0.desktop
|
||||
application/x-pksz=CiscoPacketTracer-9.0.0.desktop
|
||||
x-scheme-handler/hackatime=desktop-handler.desktop
|
||||
|
||||
[Removed Associations]
|
||||
audio/aac=org.gnome.Decibels.desktop;
|
||||
audio/flac=org.gnome.Decibels.desktop;
|
||||
audio/mp2=org.gnome.Decibels.desktop;
|
||||
audio/mp4=org.gnome.Decibels.desktop;
|
||||
audio/mpeg=org.gnome.Decibels.desktop;
|
||||
audio/vnd.wave=org.gnome.Decibels.desktop;
|
||||
audio/x-aiff=org.gnome.Decibels.desktop;
|
||||
audio/x-ape=org.gnome.Decibels.desktop;
|
||||
audio/x-m4b=org.gnome.Decibels.desktop;
|
||||
audio/x-mpegurl=org.gnome.Decibels.desktop;vscodium.desktop;code-6.desktop;code-5.desktop;code-4.desktop;org.gnome.TextEditor.desktop;vim.desktop;dev.zed.Zed.desktop;libreoffice-writer.desktop;vscodium-wayland.desktop;
|
||||
audio/x-opus+ogg=org.gnome.Decibels.desktop;
|
||||
audio/x-speex=org.gnome.Decibels.desktop;
|
||||
audio/x-vorbis+ogg=org.gnome.Decibels.desktop;
|
||||
audio/x-wavpack=org.gnome.Decibels.desktop;
|
||||
text/calendar=org.gnome.Calendar.desktop;
|
||||
text/csv=libreoffice-calc.desktop;
|
||||
text/spreadsheet=libreoffice-calc.desktop;
|
||||
text/tab-separated-values=libreoffice-calc.desktop;
|
||||
text/vbscript=wine-extension-vbs.desktop;
|
||||
text/vcard=org.mozilla.Thunderbird.desktop;
|
||||
text/vnd.trolltech.linguist=linguist.desktop;firefox.desktop;com.google.Chrome.desktop;google-chrome.desktop;zen.desktop;
|
||||
text/vnd.wap.wml=firefox.desktop;com.google.Chrome.desktop;google-chrome.desktop;zen.desktop;
|
||||
text/x-component=firefox.desktop;com.google.Chrome.desktop;google-chrome.desktop;zen.desktop;
|
||||
text/x-google-video-pointer=vlc.desktop;org.gnome.Totem.desktop;
|
||||
text/x-maven+xml=firefox.desktop;com.google.Chrome.desktop;google-chrome.desktop;zen.desktop;
|
||||
text/x-mrml=firefox.desktop;com.google.Chrome.desktop;google-chrome.desktop;zen.desktop;
|
||||
text/x-opml+xml=firefox.desktop;com.google.Chrome.desktop;google-chrome.desktop;zen.desktop;
|
||||
text/x-patch=org.kde.kompare.desktop;
|
||||
text/x-xmi=firefox.desktop;com.google.Chrome.desktop;google-chrome.desktop;zen.desktop;
|
||||
text/x-xslfo=firefox.desktop;com.google.Chrome.desktop;google-chrome.desktop;zen.desktop;
|
||||
video/vnd.mpegurl=dev.zed.Zed.desktop;vscodium-wayland.desktop;vscodium.desktop;code-6.desktop;code-5.desktop;code-4.desktop;org.gnome.TextEditor.desktop;vim.desktop;libreoffice-writer.desktop;
|
||||
video/vnd.youtube.yt=io.mrarm.mcpelauncher-ui-qt.desktop;org.gnome.Nautilus.desktop;org.prismlauncher.PrismLauncher.desktop;peazip.desktop;
|
||||
video/x-mjpeg=feh.desktop;com.google.Chrome.desktop;swappy.desktop;google-chrome.desktop;org.gnome.Loupe.desktop;
|
||||
653
apps/.config/niri/config.kdl
Normal file
|
|
@ -0,0 +1,653 @@
|
|||
// This config is in the KDL format: https://kdl.dev
|
||||
// "/-" comments out the following node.
|
||||
// Check the wiki for a full description of the configuration:
|
||||
// https://github.com/YaLTeR/niri/wiki/Configuration:-Introduction
|
||||
|
||||
// Input device configuration.
|
||||
// Find the full list of options on the wiki:
|
||||
// https://github.com/YaLTeR/niri/wiki/Configuration:-Input
|
||||
input {
|
||||
keyboard {
|
||||
xkb {
|
||||
// You can set rules, model, layout, variant and options.
|
||||
// For more information, see xkeyboard-config(7).
|
||||
|
||||
// For example:
|
||||
layout "us"
|
||||
variant "altgr-intl" // or "intl"
|
||||
options "lv3:ralt_switch" // Enable Right Alt as AltGr
|
||||
}
|
||||
|
||||
// Enable numlock on startup, omitting this setting disables it.
|
||||
numlock
|
||||
}
|
||||
|
||||
// Next sections include libinput settings.
|
||||
// Omitting settings disables them, or leaves them at their default values.
|
||||
touchpad {
|
||||
// off
|
||||
tap
|
||||
// dwt
|
||||
// dwtp
|
||||
// drag false
|
||||
// drag-lock
|
||||
natural-scroll
|
||||
// accel-speed 0.2
|
||||
// accel-profile "flat"
|
||||
// scroll-method "two-finger"
|
||||
// disabled-on-external-mouse
|
||||
}
|
||||
|
||||
mouse {
|
||||
// off
|
||||
// natural-scroll
|
||||
// accel-speed 0.2
|
||||
// accel-profile "flat"
|
||||
// scroll-method "no-scroll"
|
||||
}
|
||||
|
||||
trackpoint {
|
||||
// off
|
||||
// natural-scroll
|
||||
// accel-speed 0.2
|
||||
// accel-profile "flat"
|
||||
// scroll-method "on-button-down"
|
||||
// scroll-button 273
|
||||
// middle-emulation
|
||||
}
|
||||
|
||||
// Uncomment this to make the mouse warp to the center of newly focused windows.
|
||||
// warp-mouse-to-focus
|
||||
|
||||
// Focus windows and outputs automatically when moving the mouse into them.
|
||||
// Setting max-scroll-amount="0%" makes it work only on windows already fully on screen.
|
||||
// focus-follows-mouse max-scroll-amount="0%"
|
||||
}
|
||||
|
||||
workspace "main"
|
||||
workspace "comms"
|
||||
|
||||
// You can configure outputs by their name, which you can find
|
||||
// by running `niri msg outputs` while inside a niri instance.
|
||||
// The built-in laptop monitor is usually called "eDP-1".
|
||||
// Find more information on the wiki:
|
||||
// https://github.com/YaLTeR/niri/wiki/Configuration:-Outputs
|
||||
// Remember to uncomment the node by removing "/-"!
|
||||
output "eDP-1" {
|
||||
// Uncomment this line to disable this output.
|
||||
// off
|
||||
|
||||
// Resolution and, optionally, refresh rate of the output.
|
||||
// The format is "<width>x<height>" or "<width>x<height>@<refresh rate>".
|
||||
// If the refresh rate is omitted, niri will pick the highest refresh rate
|
||||
// for the resolution.
|
||||
// If the mode is omitted altogether or is invalid, niri will pick one automatically.
|
||||
// Run `niri msg outputs` while inside a niri instance to list all outputs and their modes.
|
||||
mode "2560x1600@165.000"
|
||||
|
||||
// You can use integer or fractional scale, for example use 1.5 for 150% scale.
|
||||
scale 1.5
|
||||
|
||||
// Enable variable refresh rate (VRR / FreeSync / G-Sync).
|
||||
variable-refresh-rate
|
||||
|
||||
// Transform allows to rotate the output counter-clockwise, valid values are:
|
||||
// normal, 90, 180, 270, flipped, flipped-90, flipped-180 and flipped-270.
|
||||
transform "normal"
|
||||
|
||||
// Position of the output in the global coordinate space.
|
||||
// This affects directional monitor actions like "focus-monitor-left", and cursor movement.
|
||||
// The cursor can only move between directly adjacent outputs.
|
||||
// Output scale and rotation has to be taken into account for positioning:
|
||||
// outputs are sized in logical, or scaled, pixels.
|
||||
// For example, a 3840×2160 output with scale 2.0 will have a logical size of 1920×1080,
|
||||
// so to put another output directly adjacent to it on the right, set its x to 1920.
|
||||
// If the position is unset or results in an overlap, the output is instead placed
|
||||
// automatically.
|
||||
position x=0 y=0
|
||||
}
|
||||
|
||||
// Settings that influence how windows are positioned and sized.
|
||||
// Find more information on the wiki:
|
||||
// https://github.com/YaLTeR/niri/wiki/Configuration:-Layout
|
||||
layout {
|
||||
// Set gaps around windows in logical pixels.
|
||||
gaps 8
|
||||
|
||||
// When to center a column when changing focus, options are:
|
||||
// - "never", default behavior, focusing an off-screen column will keep at the left
|
||||
// or right edge of the screen.
|
||||
// - "always", the focused column will always be centered.
|
||||
// - "on-overflow", focusing a column will center it if it doesn't fit
|
||||
// together with the previously focused column.
|
||||
center-focused-column "never"
|
||||
|
||||
// You can customize the widths that "switch-preset-column-width" (Mod+R) toggles between.
|
||||
preset-column-widths {
|
||||
// Proportion sets the width as a fraction of the output width, taking gaps into account.
|
||||
// For example, you can perfectly fit four windows sized "proportion 0.25" on an output.
|
||||
// The default preset widths are 1/3, 1/2 and 2/3 of the output.
|
||||
proportion 0.33333
|
||||
proportion 0.5
|
||||
proportion 0.66667
|
||||
|
||||
// Fixed sets the width in logical pixels exactly.
|
||||
// fixed 1920
|
||||
}
|
||||
|
||||
// You can also customize the heights that "switch-preset-window-height" (Mod+Shift+R) toggles between.
|
||||
// preset-window-heights { }
|
||||
|
||||
// You can change the default width of the new windows.
|
||||
default-column-width { proportion 0.5; }
|
||||
// If you leave the brackets empty, the windows themselves will decide their initial width.
|
||||
// default-column-width {}
|
||||
|
||||
// By default focus ring and border are rendered as a solid background rectangle
|
||||
// behind windows. That is, they will show up through semitransparent windows.
|
||||
// This is because windows using client-side decorations can have an arbitrary shape.
|
||||
//
|
||||
// If you don't like that, you should uncomment `prefer-no-csd` below.
|
||||
// Niri will draw focus ring and border *around* windows that agree to omit their
|
||||
// client-side decorations.
|
||||
//
|
||||
// Alternatively, you can override it with a window rule called
|
||||
// `draw-border-with-background`.
|
||||
|
||||
// You can change how the focus ring looks.
|
||||
focus-ring {
|
||||
// Uncomment this line to disable the focus ring.
|
||||
// off
|
||||
|
||||
// How many logical pixels the ring extends out from the windows.
|
||||
width 4
|
||||
|
||||
// Colors can be set in a variety of ways:
|
||||
// - CSS named colors: "red"
|
||||
// - RGB hex: "#rgb", "#rgba", "#rrggbb", "#rrggbbaa"
|
||||
// - CSS-like notation: "rgb(255, 127, 0)", rgba(), hsl() and a few others.
|
||||
|
||||
// Color of the ring on the active monitor.
|
||||
active-color "#0f0a67ff"
|
||||
|
||||
// Color of the ring on inactive monitors.
|
||||
inactive-color "#505050"
|
||||
|
||||
// You can also use gradients. They take precedence over solid colors.
|
||||
// Gradients are rendered the same as CSS linear-gradient(angle, from, to).
|
||||
// The angle is the same as in linear-gradient, and is optional,
|
||||
// defaulting to 180 (top-to-bottom gradient).
|
||||
// You can use any CSS linear-gradient tool on the web to set these up.
|
||||
// Changing the color space is also supported, check the wiki for more info.
|
||||
//
|
||||
active-gradient from="#c792ea" to="#5fb3b3" angle=45
|
||||
|
||||
// You can also color the gradient relative to the entire view
|
||||
// of the workspace, rather than relative to just the window itself.
|
||||
// To do that, set relative-to="workspace-view".
|
||||
//
|
||||
inactive-gradient from="#505050" to="#808080" angle=45 relative-to="workspace-view"
|
||||
}
|
||||
|
||||
// You can also add a border. It's similar to the focus ring, but always visible.
|
||||
border {
|
||||
// The settings are the same as for the focus ring.
|
||||
// If you enable the border, you probably want to disable the focus ring.
|
||||
off
|
||||
|
||||
width 4
|
||||
active-color "#ffc87f"
|
||||
inactive-color "#505050"
|
||||
|
||||
// Color of the border around windows that request your attention.
|
||||
urgent-color "#9b0000"
|
||||
|
||||
// active-gradient from="#ffbb66" to="#ffc880" angle=45 relative-to="workspace-view"
|
||||
// inactive-gradient from="#505050" to="#808080" angle=45 relative-to="workspace-view"
|
||||
}
|
||||
|
||||
// You can enable drop shadows for windows.
|
||||
shadow {
|
||||
// Uncomment the next line to enable shadows.
|
||||
on
|
||||
|
||||
// By default, the shadow draws only around its window, and not behind it.
|
||||
// Uncomment this setting to make the shadow draw behind its window.
|
||||
//
|
||||
// Note that niri has no way of knowing about the CSD window corner
|
||||
// radius. It has to assume that windows have square corners, leading to
|
||||
// shadow artifacts inside the CSD rounded corners. This setting fixes
|
||||
// those artifacts.
|
||||
//
|
||||
// However, instead you may want to set prefer-no-csd and/or
|
||||
// geometry-corner-radius. Then, niri will know the corner radius and
|
||||
// draw the shadow correctly, without having to draw it behind the
|
||||
// window. These will also remove client-side shadows if the window
|
||||
// draws any.
|
||||
//
|
||||
// draw-behind-window true
|
||||
|
||||
// You can change how shadows look. The values below are in logical
|
||||
// pixels and match the CSS box-shadow properties.
|
||||
|
||||
// Softness controls the shadow blur radius.
|
||||
softness 30
|
||||
|
||||
// Spread expands the shadow.
|
||||
spread 5
|
||||
|
||||
// Offset moves the shadow relative to the window.
|
||||
offset x=0 y=5
|
||||
|
||||
// You can also change the shadow color and opacity.
|
||||
color "#0007"
|
||||
}
|
||||
|
||||
// Struts shrink the area occupied by windows, similarly to layer-shell panels.
|
||||
// You can think of them as a kind of outer gaps. They are set in logical pixels.
|
||||
// Left and right struts will cause the next window to the side to always be visible.
|
||||
// Top and bottom struts will simply add outer gaps in addition to the area occupied by
|
||||
// layer-shell panels and regular gaps.
|
||||
struts {
|
||||
// left 64
|
||||
// right 64
|
||||
// top 64
|
||||
// bottom 64
|
||||
}
|
||||
}
|
||||
|
||||
// Add lines like this to spawn processes at startup.
|
||||
// Note that running niri as a session supports xdg-desktop-autostart,
|
||||
// which may be more convenient to use.
|
||||
// See the binds section below for more spawn examples.
|
||||
|
||||
spawn-at-startup "bash" "-c" "ags run /home/end/.config/ags"
|
||||
spawn-at-startup "vicinae" "server"
|
||||
spawn-at-startup "/usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1"
|
||||
spawn-at-startup "wallpaper-init"
|
||||
spawn-at-startup "signal-desktop"
|
||||
spawn-at-startup "discord"
|
||||
spawn-at-startup "zen-browser"
|
||||
spawn-at-startup "qpwgraph" "--minimized"
|
||||
spawn-at-startup "wezterm"
|
||||
|
||||
|
||||
// Uncomment this line to ask the clients to omit their client-side decorations if possible.
|
||||
// If the client will specifically ask for CSD, the request will be honored.
|
||||
// Additionally, clients will be informed that they are tiled, removing some client-side rounded corners.
|
||||
// This option will also fix border/focus ring drawing behind some semitransparent windows.
|
||||
// After enabling or disabling this, you need to restart the apps for this to take effect.
|
||||
prefer-no-csd
|
||||
|
||||
// You can change the path where screenshots are saved.
|
||||
// A ~ at the front will be expanded to the home directory.
|
||||
// The path is formatted with strftime(3) to give you the screenshot date and time.
|
||||
screenshot-path "~/Pictures/Screenshots/Screenshot from %Y-%m-%d %H-%M-%S.png"
|
||||
|
||||
// You can also set this to null to disable saving screenshots to disk.
|
||||
// screenshot-path null
|
||||
|
||||
// Animation settings.
|
||||
// The wiki explains how to configure individual animations:
|
||||
// https://github.com/YaLTeR/niri/wiki/Configuration:-Animations
|
||||
animations {
|
||||
// Uncomment to turn off all animations.
|
||||
// off
|
||||
|
||||
// Slow down all animations by this factor. Values below 1 speed them up instead.
|
||||
// slowdown 3.0
|
||||
|
||||
// Window open: springy feel
|
||||
window-open {
|
||||
spring damping-ratio=0.8 stiffness=400 epsilon=0.0001
|
||||
}
|
||||
|
||||
// Window close: quick ease out
|
||||
window-close {
|
||||
duration-ms 150
|
||||
curve "ease-out-cubic"
|
||||
}
|
||||
|
||||
// Workspace switch: smooth spring
|
||||
workspace-switch {
|
||||
spring damping-ratio=1.0 stiffness=500 epsilon=0.0001
|
||||
}
|
||||
|
||||
// Column movement
|
||||
horizontal-view-movement {
|
||||
spring damping-ratio=1.0 stiffness=500 epsilon=0.0001
|
||||
}
|
||||
}
|
||||
|
||||
// Window rules let you adjust behavior for individual windows.
|
||||
// Find more information on the wiki:
|
||||
// https://github.com/YaLTeR/niri/wiki/Configuration:-Window-Rules
|
||||
|
||||
// Work around WezTerm's initial configure bug
|
||||
// by setting an empty default-column-width.
|
||||
window-rule {
|
||||
// This regular expression is intentionally made as specific as possible,
|
||||
// since this is the default config, and we want no false positives.
|
||||
// You can get away with just app-id="wezterm" if you want.
|
||||
match app-id=r#"^org\.wezfurlong\.wezterm$"#
|
||||
default-column-width {}
|
||||
}
|
||||
|
||||
// Open the Firefox picture-in-picture player as floating by default.
|
||||
window-rule {
|
||||
// This app-id regular expression will work for both:
|
||||
// - host Firefox (app-id is "firefox")
|
||||
// - Flatpak Firefox (app-id is "org.mozilla.firefox")
|
||||
match app-id=r#"firefox$"# title="^Picture-in-Picture$"
|
||||
open-floating false
|
||||
}
|
||||
|
||||
// Example: block out two password managers from screen capture.
|
||||
// (This example rule is commented out with a "/-" in front.)
|
||||
window-rule {
|
||||
match app-id=r#"^org\.keepassxc\.KeePassXC$"#
|
||||
match app-id=r#"^org\.gnome\.World\.Secrets$"#
|
||||
match app-id=r#"^signal$"#
|
||||
match app-id=r#"^com\.discordapp\.Discord$"#
|
||||
/- match app-id=r#"^org\.wezfurlong\.wezterm$"#
|
||||
match app-id=r#"^Bitwarden$"#
|
||||
block-out-from "screen-capture"
|
||||
}
|
||||
|
||||
// Example: enable rounded corners for all windows.
|
||||
// (This example rule is commented out with a "/-" in front.)
|
||||
window-rule {
|
||||
geometry-corner-radius 12
|
||||
clip-to-geometry true
|
||||
}
|
||||
|
||||
// Workspace 1: productivity / personal
|
||||
window-rule {
|
||||
match app-id="helium"
|
||||
match app-id=r#"^org\.wezfurlong\.wezterm$"#
|
||||
match app-id="obsidian"
|
||||
match app-id="thunderbird"
|
||||
open-on-workspace "main"
|
||||
}
|
||||
|
||||
// Workspace 2: comms / social
|
||||
window-rule {
|
||||
match app-id="steam"
|
||||
match app-id=r#"^signal$"#
|
||||
match app-id=r#"^com\.discordapp\.Discord$"#
|
||||
match app-id="discord"
|
||||
match app-id=r#"zen-browser$"#
|
||||
match app-id="slack"
|
||||
open-on-workspace "comms"
|
||||
}
|
||||
|
||||
// Float pavucontrol
|
||||
window-rule {
|
||||
match app-id="org.pulseaudio.pavucontrol"
|
||||
open-floating true
|
||||
}
|
||||
|
||||
binds {
|
||||
// Keys consist of modifiers separated by + signs, followed by an XKB key name
|
||||
// in the end. To find an XKB name for a particular key, you may use a program
|
||||
// like wev.
|
||||
//
|
||||
// "Mod" is a special modifier equal to Super when running on a TTY, and to Alt
|
||||
// when running as a winit window.
|
||||
//
|
||||
// Most actions that you can bind here can also be invoked programmatically with
|
||||
// `niri msg action do-something`.
|
||||
|
||||
// Mod-Shift-/, which is usually the same as Mod-?,
|
||||
// shows a list of important hotkeys.
|
||||
Mod+Shift+Slash { show-hotkey-overlay; }
|
||||
|
||||
// Suggested binds for running programs: terminal, app launcher, screen locker.
|
||||
Mod+T hotkey-overlay-title="Open a Terminal: fish" { spawn "wezterm"; }
|
||||
Mod+B hotkey-overlay-title="Open Browser: Helium" { spawn "helium"; }
|
||||
Mod+D hotkey-overlay-title="Run an Application: vicinae" { spawn "vicinae" "toggle"; }
|
||||
Super+Alt+L hotkey-overlay-title="Lock the Screen: hyprlock" { spawn "hyprlock"; }
|
||||
|
||||
// You can also use a shell. Do this if you need pipes, multiple commands, etc.
|
||||
// Note: the entire command goes as a single argument in the end.
|
||||
// Mod+T { spawn "bash" "-c" "notify-send hello && exec wezterm"; }
|
||||
|
||||
// Example volume keys mappings for PipeWire & WirePlumber.
|
||||
// The allow-when-locked=true property makes them work even when the session is locked.
|
||||
XF86AudioRaiseVolume allow-when-locked=true { spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.1+"; }
|
||||
XF86AudioLowerVolume allow-when-locked=true { spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.1-"; }
|
||||
XF86AudioMute allow-when-locked=true { spawn "wpctl" "set-mute" "@DEFAULT_AUDIO_SINK@" "toggle"; }
|
||||
XF86AudioMicMute allow-when-locked=true { spawn "wpctl" "set-mute" "@DEFAULT_AUDIO_SOURCE@" "toggle"; }
|
||||
XF86MonBrightnessUp allow-when-locked=true { spawn "brightnessctl" "set" "5%+"; }
|
||||
XF86MonBrightnessDown allow-when-locked=true { spawn "brightnessctl" "set" "5%-"; }
|
||||
|
||||
// Open/close the Overview: a zoomed-out view of workspaces and windows.
|
||||
// You can also move the mouse into the top-left hot corner,
|
||||
// or do a four-finger swipe up on a touchpad.
|
||||
Mod+O repeat=false { toggle-overview; }
|
||||
|
||||
Mod+Q { close-window; }
|
||||
|
||||
Mod+Left { focus-column-left; }
|
||||
Mod+Down { focus-window-down; }
|
||||
Mod+Up { focus-window-up; }
|
||||
Mod+Right { focus-column-right; }
|
||||
Mod+H { focus-column-left; }
|
||||
Mod+J { focus-window-down; }
|
||||
Mod+K { focus-window-up; }
|
||||
Mod+L { focus-column-right; }
|
||||
|
||||
Mod+Ctrl+Left { move-column-left; }
|
||||
Mod+Ctrl+Down { move-window-down; }
|
||||
Mod+Ctrl+Up { move-window-up; }
|
||||
Mod+Ctrl+Right { move-column-right; }
|
||||
Mod+Ctrl+H { move-column-left; }
|
||||
Mod+Ctrl+J { move-window-down; }
|
||||
Mod+Ctrl+K { move-window-up; }
|
||||
Mod+Ctrl+L { move-column-right; }
|
||||
|
||||
// Alternative commands that move across workspaces when reaching
|
||||
// the first or last window in a column.
|
||||
// Mod+J { focus-window-or-workspace-down; }
|
||||
// Mod+K { focus-window-or-workspace-up; }
|
||||
// Mod+Ctrl+J { move-window-down-or-to-workspace-down; }
|
||||
// Mod+Ctrl+K { move-window-up-or-to-workspace-up; }
|
||||
|
||||
Mod+Home { focus-column-first; }
|
||||
Mod+End { focus-column-last; }
|
||||
Mod+Ctrl+Home { move-column-to-first; }
|
||||
Mod+Ctrl+End { move-column-to-last; }
|
||||
|
||||
Mod+Shift+Left { focus-monitor-left; }
|
||||
Mod+Shift+Down { focus-monitor-down; }
|
||||
Mod+Shift+Up { focus-monitor-up; }
|
||||
Mod+Shift+Right { focus-monitor-right; }
|
||||
Mod+Shift+H { focus-monitor-left; }
|
||||
Mod+Shift+J { focus-monitor-down; }
|
||||
Mod+Shift+K { focus-monitor-up; }
|
||||
Mod+Shift+L { focus-monitor-right; }
|
||||
|
||||
Mod+Shift+Ctrl+Left { move-column-to-monitor-left; }
|
||||
Mod+Shift+Ctrl+Down { move-column-to-monitor-down; }
|
||||
Mod+Shift+Ctrl+Up { move-column-to-monitor-up; }
|
||||
Mod+Shift+Ctrl+Right { move-column-to-monitor-right; }
|
||||
Mod+Shift+Ctrl+H { move-column-to-monitor-left; }
|
||||
Mod+Shift+Ctrl+J { move-column-to-monitor-down; }
|
||||
Mod+Shift+Ctrl+K { move-column-to-monitor-up; }
|
||||
Mod+Shift+Ctrl+L { move-column-to-monitor-right; }
|
||||
|
||||
// Alternatively, there are commands to move just a single window:
|
||||
// Mod+Shift+Ctrl+Left { move-window-to-monitor-left; }
|
||||
// ...
|
||||
|
||||
// And you can also move a whole workspace to another monitor:
|
||||
// Mod+Shift+Ctrl+Left { move-workspace-to-monitor-left; }
|
||||
// ...
|
||||
|
||||
Mod+Page_Down { focus-workspace-down; }
|
||||
Mod+Page_Up { focus-workspace-up; }
|
||||
Mod+U { focus-workspace-down; }
|
||||
Mod+I { focus-workspace-up; }
|
||||
Mod+Ctrl+Page_Down { move-column-to-workspace-down; }
|
||||
Mod+Ctrl+Page_Up { move-column-to-workspace-up; }
|
||||
Mod+Ctrl+U { move-column-to-workspace-down; }
|
||||
Mod+Ctrl+I { move-column-to-workspace-up; }
|
||||
|
||||
// Alternatively, there are commands to move just a single window:
|
||||
// Mod+Ctrl+Page_Down { move-window-to-workspace-down; }
|
||||
// ...
|
||||
|
||||
Mod+Shift+Page_Down { move-workspace-down; }
|
||||
Mod+Shift+Page_Up { move-workspace-up; }
|
||||
Mod+Shift+U { move-workspace-down; }
|
||||
Mod+Shift+I { move-workspace-up; }
|
||||
|
||||
// You can bind mouse wheel scroll ticks using the following syntax.
|
||||
// These binds will change direction based on the natural-scroll setting.
|
||||
//
|
||||
// To avoid scrolling through workspaces really fast, you can use
|
||||
// the cooldown-ms property. The bind will be rate-limited to this value.
|
||||
// You can set a cooldown on any bind, but it's most useful for the wheel.
|
||||
Mod+WheelScrollDown cooldown-ms=150 { focus-workspace-down; }
|
||||
Mod+WheelScrollUp cooldown-ms=150 { focus-workspace-up; }
|
||||
Mod+Ctrl+WheelScrollDown cooldown-ms=150 { move-column-to-workspace-down; }
|
||||
Mod+Ctrl+WheelScrollUp cooldown-ms=150 { move-column-to-workspace-up; }
|
||||
|
||||
Mod+WheelScrollRight { focus-column-right; }
|
||||
Mod+WheelScrollLeft { focus-column-left; }
|
||||
Mod+Ctrl+WheelScrollRight { move-column-right; }
|
||||
Mod+Ctrl+WheelScrollLeft { move-column-left; }
|
||||
|
||||
// Usually scrolling up and down with Shift in applications results in
|
||||
// horizontal scrolling; these binds replicate that.
|
||||
Mod+Shift+WheelScrollDown { focus-column-right; }
|
||||
Mod+Shift+WheelScrollUp { focus-column-left; }
|
||||
Mod+Ctrl+Shift+WheelScrollDown { move-column-right; }
|
||||
Mod+Ctrl+Shift+WheelScrollUp { move-column-left; }
|
||||
|
||||
// Similarly, you can bind touchpad scroll "ticks".
|
||||
// Touchpad scrolling is continuous, so for these binds it is split into
|
||||
// discrete intervals.
|
||||
// These binds are also affected by touchpad's natural-scroll, so these
|
||||
// example binds are "inverted", since we have natural-scroll enabled for
|
||||
// touchpads by default.
|
||||
// Mod+TouchpadScrollDown { spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.02+"; }
|
||||
// Mod+TouchpadScrollUp { spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.02-"; }
|
||||
|
||||
// You can refer to workspaces by index. However, keep in mind that
|
||||
// niri is a dynamic workspace system, so these commands are kind of
|
||||
// "best effort". Trying to refer to a workspace index bigger than
|
||||
// the current workspace count will instead refer to the bottommost
|
||||
// (empty) workspace.
|
||||
//
|
||||
// For example, with 2 workspaces + 1 empty, indices 3, 4, 5 and so on
|
||||
// will all refer to the 3rd workspace.
|
||||
Mod+1 { focus-workspace 1; }
|
||||
Mod+2 { focus-workspace 2; }
|
||||
Mod+3 { focus-workspace 3; }
|
||||
Mod+4 { focus-workspace 4; }
|
||||
Mod+5 { focus-workspace 5; }
|
||||
Mod+6 { focus-workspace 6; }
|
||||
Mod+7 { focus-workspace 7; }
|
||||
Mod+8 { focus-workspace 8; }
|
||||
Mod+9 { focus-workspace 9; }
|
||||
Mod+Ctrl+1 { move-column-to-workspace 1; }
|
||||
Mod+Ctrl+2 { move-column-to-workspace 2; }
|
||||
Mod+Ctrl+3 { move-column-to-workspace 3; }
|
||||
Mod+Ctrl+4 { move-column-to-workspace 4; }
|
||||
Mod+Ctrl+5 { move-column-to-workspace 5; }
|
||||
Mod+Ctrl+6 { move-column-to-workspace 6; }
|
||||
Mod+Ctrl+7 { move-column-to-workspace 7; }
|
||||
Mod+Ctrl+8 { move-column-to-workspace 8; }
|
||||
Mod+Ctrl+9 { move-column-to-workspace 9; }
|
||||
|
||||
// Alternatively, there are commands to move just a single window:
|
||||
// Mod+Ctrl+1 { move-window-to-workspace 1; }
|
||||
|
||||
// Switches focus between the current and the previous workspace.
|
||||
// Mod+Tab { focus-workspace-previous; }
|
||||
|
||||
// The following binds move the focused window in and out of a column.
|
||||
// If the window is alone, they will consume it into the nearby column to the side.
|
||||
// If the window is already in a column, they will expel it out.
|
||||
Mod+BracketLeft { consume-or-expel-window-left; }
|
||||
Mod+BracketRight { consume-or-expel-window-right; }
|
||||
|
||||
// Consume one window from the right to the bottom of the focused column.
|
||||
Mod+Comma { consume-window-into-column; }
|
||||
// Expel the bottom window from the focused column to the right.
|
||||
Mod+Period { expel-window-from-column; }
|
||||
|
||||
Mod+R { switch-preset-column-width; }
|
||||
Mod+Shift+R { switch-preset-window-height; }
|
||||
Mod+Ctrl+R { reset-window-height; }
|
||||
Mod+F { maximize-column; }
|
||||
Mod+Shift+F { fullscreen-window; }
|
||||
|
||||
// Expand the focused column to space not taken up by other fully visible columns.
|
||||
// Makes the column "fill the rest of the space".
|
||||
Mod+Ctrl+F { expand-column-to-available-width; }
|
||||
|
||||
Mod+C { center-column; }
|
||||
|
||||
// Center all fully visible columns on screen.
|
||||
Mod+Ctrl+C { center-visible-columns; }
|
||||
|
||||
// Finer width adjustments.
|
||||
// This command can also:
|
||||
// * set width in pixels: "1000"
|
||||
// * adjust width in pixels: "-5" or "+5"
|
||||
// * set width as a percentage of screen width: "25%"
|
||||
// * adjust width as a percentage of screen width: "-10%" or "+10%"
|
||||
// Pixel sizes use logical, or scaled, pixels. I.e. on an output with scale 2.0,
|
||||
// set-column-width "100" will make the column occupy 200 physical screen pixels.
|
||||
Mod+Minus { set-column-width "-10%"; }
|
||||
Mod+Equal { set-column-width "+10%"; }
|
||||
|
||||
// Finer height adjustments when in column with other windows.
|
||||
Mod+Shift+Minus { set-window-height "-10%"; }
|
||||
Mod+Shift+Equal { set-window-height "+10%"; }
|
||||
|
||||
// Move the focused window between the floating and the tiling layout.
|
||||
Mod+V { toggle-window-floating; }
|
||||
Mod+Shift+V { switch-focus-between-floating-and-tiling; }
|
||||
|
||||
// Toggle tabbed column display mode.
|
||||
// Windows in this column will appear as vertical tabs,
|
||||
// rather than stacked on top of each other.
|
||||
Mod+W { toggle-column-tabbed-display; }
|
||||
|
||||
// Actions to switch layouts.
|
||||
// Note: if you uncomment these, make sure you do NOT have
|
||||
// a matching layout switch hotkey configured in xkb options above.
|
||||
// Having both at once on the same hotkey will break the switching,
|
||||
// since it will switch twice upon pressing the hotkey (once by xkb, once by niri).
|
||||
// Mod+Space { switch-layout "next"; }
|
||||
// Mod+Shift+Space { switch-layout "prev"; }
|
||||
|
||||
Print { screenshot; }
|
||||
Shift+Print { screenshot-screen; }
|
||||
Ctrl+Print { screenshot-screen; }
|
||||
Alt+Print { screenshot-window; }
|
||||
|
||||
// Applications such as remote-desktop clients and software KVM switches may
|
||||
// request that niri stops processing the keyboard shortcuts defined here
|
||||
// so they may, for example, forward the key presses as-is to a remote machine.
|
||||
// It's a good idea to bind an escape hatch to toggle the inhibitor,
|
||||
// so a buggy application can't hold your session hostage.
|
||||
//
|
||||
// The allow-inhibiting=false property can be applied to other binds as well,
|
||||
// which ensures niri always processes them, even when an inhibitor is active.
|
||||
Mod+Escape allow-inhibiting=false { toggle-keyboard-shortcuts-inhibit; }
|
||||
|
||||
// The quit action will show a confirmation dialog to avoid accidental exits.
|
||||
Mod+Shift+E { quit; }
|
||||
Ctrl+Alt+Delete { quit; }
|
||||
|
||||
// Powers off the monitors. To turn them back on, do any input like
|
||||
// moving the mouse or pressing any other key.
|
||||
Mod+Shift+P { power-off-monitors; }
|
||||
}
|
||||
environment {
|
||||
ELECTRON_OZONE_PLATFORM_HINT "auto"
|
||||
}
|
||||
1
apps/.config/obsidian/Preferences
Normal file
|
|
@ -0,0 +1 @@
|
|||
{"browser":{"enable_spellchecking":true},"migrated_user_scripts_toggle":true,"partition":{"per_host_zoom_levels":{"100268245138109095":{}}},"spellcheck":{"dictionaries":["en-US"],"dictionary":""}}
|
||||
9
apps/.config/pavucontrol.ini
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
[window]
|
||||
width=744
|
||||
height=897
|
||||
sinkInputType=0
|
||||
sourceOutputType=1
|
||||
sinkType=0
|
||||
sourceType=1
|
||||
showVolumeMeters=1
|
||||
hideUnavailableCardProfiles=0
|
||||
124
apps/.config/starship.toml
Normal file
|
|
@ -0,0 +1,124 @@
|
|||
format = """
|
||||
$username\
|
||||
$hostname\
|
||||
$directory\
|
||||
$git_branch\
|
||||
$git_status\
|
||||
$python\
|
||||
$nodejs\
|
||||
$rust\
|
||||
$golang\
|
||||
$java\
|
||||
$cmd_duration\
|
||||
$fill\
|
||||
$status\
|
||||
$time\
|
||||
$line_break\
|
||||
$character"""
|
||||
|
||||
palette = "mariana"
|
||||
|
||||
[palettes.mariana]
|
||||
purple = "#c792ea"
|
||||
cyan = "#4ec9b0"
|
||||
green = "#99c794"
|
||||
yellow = "#fac863"
|
||||
pink = "#ec5f89"
|
||||
red = "#f97b58"
|
||||
text = "#d8dee9"
|
||||
subtext = "#8892a4"
|
||||
bg = "#16161e"
|
||||
|
||||
[username]
|
||||
style_user = "bold purple"
|
||||
style_root = "bold red"
|
||||
format = "[$user]($style)"
|
||||
show_always = true
|
||||
|
||||
[hostname]
|
||||
style = "bold cyan"
|
||||
format = "[@$hostname]($style) "
|
||||
ssh_only = false
|
||||
|
||||
[directory]
|
||||
style = "bold cyan"
|
||||
format = "[$path]($style)[$read_only]($read_only_style) "
|
||||
truncation_length = 5
|
||||
truncate_to_repo = false
|
||||
home_symbol = "~"
|
||||
read_only = " "
|
||||
read_only_style = "red"
|
||||
|
||||
[git_branch]
|
||||
symbol = " "
|
||||
style = "bold purple"
|
||||
format = "[$symbol$branch]($style) "
|
||||
|
||||
[git_status]
|
||||
style = "yellow"
|
||||
format = "([$all_status$ahead_behind]($style) )"
|
||||
ahead = "⇡${count}"
|
||||
behind = "⇣${count}"
|
||||
diverged = "⇕⇡${ahead_count}⇣${behind_count}"
|
||||
modified = "!${count}"
|
||||
untracked = "?${count}"
|
||||
staged = "+${count}"
|
||||
deleted = "✘${count}"
|
||||
stashed = "\\$${count}"
|
||||
|
||||
[python]
|
||||
symbol = " "
|
||||
style = "yellow"
|
||||
format = "[$symbol$version]($style) "
|
||||
detect_extensions = ["py"]
|
||||
detect_files = [".python-version", "Pipfile", "requirements.txt", "setup.py", "pyproject.toml"]
|
||||
|
||||
[nodejs]
|
||||
symbol = " "
|
||||
style = "green"
|
||||
format = "[$symbol$version]($style) "
|
||||
detect_extensions = ["js", "ts", "mjs", "cjs", "mts", "cts"]
|
||||
detect_files = ["package.json", ".nvmrc"]
|
||||
|
||||
[rust]
|
||||
symbol = " "
|
||||
style = "red"
|
||||
format = "[$symbol$version]($style) "
|
||||
|
||||
[golang]
|
||||
symbol = " "
|
||||
style = "cyan"
|
||||
format = "[$symbol$version]($style) "
|
||||
|
||||
[java]
|
||||
symbol = " "
|
||||
style = "red"
|
||||
format = "[$symbol$version]($style) "
|
||||
|
||||
[cmd_duration]
|
||||
min_time = 2000
|
||||
style = "yellow"
|
||||
format = "[ $duration]($style) "
|
||||
|
||||
[fill]
|
||||
symbol = " "
|
||||
|
||||
[status]
|
||||
disabled = false
|
||||
style = "bold pink"
|
||||
format = "[✗ $status]($style) "
|
||||
success_symbol = ""
|
||||
|
||||
[time]
|
||||
disabled = false
|
||||
style = "bold subtext"
|
||||
format = "[$time]($style)"
|
||||
time_format = "%H:%M"
|
||||
|
||||
[character]
|
||||
success_symbol = "[❯](bold purple)"
|
||||
error_symbol = "[❯](bold pink)"
|
||||
vimcmd_symbol = "[❮](bold green)"
|
||||
|
||||
[line_break]
|
||||
disabled = false
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
[Unit]
|
||||
StartLimitIntervalSec=60
|
||||
StartLimitBurst=10
|
||||
|
||||
[Service]
|
||||
ExecStart=
|
||||
ExecStart=/usr/lib/xdg-desktop-portal-wlr -c %h/.config/xdg-desktop-portal-wlr/config
|
||||
RestartSec=2
|
||||
360
apps/.config/topgrade.toml
Normal file
|
|
@ -0,0 +1,360 @@
|
|||
# Include any additional configuration file(s)
|
||||
# [include] sections are processed in the order you write them
|
||||
# Files in $CONFIG_DIR/topgrade.d/ are automatically included before this file
|
||||
[include]
|
||||
# paths = ["/etc/topgrade.toml"]
|
||||
|
||||
|
||||
[misc]
|
||||
# Run `sudo -v` to cache credentials at the start of the run
|
||||
# This avoids a blocking password prompt in the middle of an unattended run
|
||||
# (default: false)
|
||||
# pre_sudo = false
|
||||
|
||||
# Sudo command to be used
|
||||
# sudo_command = "sudo"
|
||||
|
||||
# Disable specific steps - same options as the command line flag
|
||||
# disable = ["system", "emacs"]
|
||||
|
||||
# Ignore failures for these steps
|
||||
# ignore_failures = ["powershell"]
|
||||
|
||||
# List of remote machines with Topgrade installed on them
|
||||
# remote_topgrades = ["toothless", "pi", "parnas"]
|
||||
|
||||
# Path to Topgrade executable on remote machines
|
||||
# remote_topgrade_path = ".cargo/bin/topgrade"
|
||||
|
||||
# Arguments to pass to SSH when upgrading remote systems
|
||||
# ssh_arguments = "-o ConnectTimeout=2"
|
||||
|
||||
# Arguments to pass tmux when pulling Repositories
|
||||
# tmux_arguments = "-S /var/tmux.sock"
|
||||
|
||||
# Do not set the terminal title (default: true)
|
||||
# set_title = true
|
||||
|
||||
# Display the time in step titles (default: true)
|
||||
# display_time = true
|
||||
|
||||
# Don't ask for confirmations (no default value)
|
||||
# assume_yes = true
|
||||
|
||||
# Do not ask to retry failed steps (default: false)
|
||||
# no_retry = true
|
||||
|
||||
# Run inside tmux (default: false)
|
||||
# run_in_tmux = true
|
||||
|
||||
# Changes the way topgrade interacts with
|
||||
# the tmux session, creating the session
|
||||
# and only attaching to it if not inside tmux
|
||||
# (default: "attach_if_not_in_session", allowed values: "attach_if_not_in_session", "attach_always")
|
||||
# tmux_session_mode = "attach_if_not_in_session"
|
||||
|
||||
# Cleanup temporary or old files (default: false)
|
||||
# cleanup = true
|
||||
|
||||
# Send a notification for every step (default: false)
|
||||
# notify_each_step = false
|
||||
|
||||
# Skip sending a notification at the end of a run (default: false)
|
||||
# skip_notify = true
|
||||
|
||||
# The Bash-it branch to update (default: "stable")
|
||||
# bashit_branch = "stable"
|
||||
|
||||
# Run specific steps - same options as the command line flag
|
||||
# only = ["system", "emacs"]
|
||||
|
||||
# Whether to self update
|
||||
#
|
||||
# this will be ignored if the binary is built without self update support
|
||||
#
|
||||
# available also via setting the environment variable TOPGRADE_NO_SELF_UPGRADE)
|
||||
# no_self_update = true
|
||||
|
||||
# Extra tracing filter directives
|
||||
# These are prepended to the `--log-filter` argument
|
||||
# See: https://docs.rs/tracing-subscriber/latest/tracing_subscriber/filter/struct.EnvFilter.html#directives
|
||||
# log_filters = ["topgrade::command=debug", "warn"]
|
||||
|
||||
|
||||
# Commands to run before anything
|
||||
[pre_commands]
|
||||
# "Emacs Snapshot" = "rm -rf ~/.emacs.d/elpa.bak && cp -rl ~/.emacs.d/elpa ~/.emacs.d/elpa.bak"
|
||||
|
||||
|
||||
# Commands to run after anything
|
||||
[post_commands]
|
||||
# "Emacs Snapshot" = "rm -rf ~/.emacs.d/elpa.bak && cp -rl ~/.emacs.d/elpa ~/.emacs.d/elpa.bak"
|
||||
|
||||
|
||||
# Custom commands
|
||||
[commands]
|
||||
# "Python Environment" = "~/dev/.env/bin/pip install -i https://pypi.python.org/simple -U --upgrade-strategy eager jupyter"
|
||||
# "Custom command using interactive shell (unix)" = "-i vim_upgrade"
|
||||
|
||||
|
||||
[python]
|
||||
# enable_pip_review = true ###disabled by default
|
||||
# enable_pip_review_local = true ###disabled by default
|
||||
# enable_pipupgrade = true ###disabled by default
|
||||
# pipupgrade_arguments = "-y -u --pip-path pip" ###disabled by default
|
||||
|
||||
# For the poetry step, by default, Topgrade skips its update if poetry is not
|
||||
# installed with the official script. This configuration entry forces Topgrade
|
||||
# to run the update in this case.
|
||||
#
|
||||
# (default: false)
|
||||
# poetry_force_self_update = true
|
||||
|
||||
|
||||
[conda]
|
||||
# Additional named conda environments to update (`conda env update -n env_name`)
|
||||
# env_names = [
|
||||
# "Toolbox",
|
||||
# "PyTorch"
|
||||
# ]
|
||||
# Additional conda environment paths to update (`conda env update -p env_path`)
|
||||
# env_paths = [
|
||||
# "~/webserver/.conda/",
|
||||
# "~/experiments/.conda/"
|
||||
# ]
|
||||
|
||||
|
||||
[composer]
|
||||
# self_update = true
|
||||
|
||||
|
||||
[brew]
|
||||
# For the BrewCask step
|
||||
# If `Repo Cask Upgrade` exists, then use the `-a` option.
|
||||
# Otherwise, use the `--greedy` option.
|
||||
# greedy_cask = true
|
||||
|
||||
# For the BrewCask step
|
||||
# If `Repo Cask Upgrade` does not exist, then use the `--greedy_latest` option.
|
||||
# NOTE: the above entry `greedy_cask` contains this entry, though you can enable
|
||||
# both of them, they won't clash with each other.
|
||||
# greedy_latest = true
|
||||
|
||||
# For the BrewCask step
|
||||
# If `Repo Cask Upgrade` does not exist, then use the `--greedy_auto_updates` option.
|
||||
# NOTE: the above entry `greedy_cask` contains this entry, though you can enable
|
||||
# both of them, they won't clash with each other.
|
||||
# greedy_auto_updates = true
|
||||
|
||||
# For the BrewFormula step
|
||||
# Execute `brew autoremove` after the step.
|
||||
# autoremove = true
|
||||
|
||||
# For the BrewFormula step
|
||||
# Upgrade formulae built from the HEAD branch; `brew upgrade --fetch-HEAD`
|
||||
# fetch_head = true
|
||||
|
||||
|
||||
[linux]
|
||||
# Arch Package Manager to use.
|
||||
# Allowed values:
|
||||
# autodetect, aura, garuda_update, pacman, pamac, paru, pikaur, trizen, yay
|
||||
# arch_package_manager = "pacman"
|
||||
|
||||
# Arguments to pass yay (or paru) when updating packages
|
||||
# yay_arguments = "--nodevel"
|
||||
|
||||
# Arguments to pass dnf when updating packages
|
||||
# dnf_arguments = "--refresh"
|
||||
|
||||
# aura_aur_arguments = "-kx"
|
||||
|
||||
# aura_pacman_arguments = ""
|
||||
# garuda_update_arguments = ""
|
||||
|
||||
# show_arch_news = true
|
||||
|
||||
# trizen_arguments = "--devel"
|
||||
|
||||
# pikaur_arguments = ""
|
||||
|
||||
# pamac_arguments = "--no-devel"
|
||||
|
||||
# enable_tlmgr = true
|
||||
|
||||
# emerge_sync_flags = "-q"
|
||||
|
||||
# emerge_update_flags = "-uDNa --with-bdeps=y world"
|
||||
|
||||
# redhat_distro_sync = false
|
||||
|
||||
# suse_dup = false
|
||||
|
||||
# rpm_ostree = false
|
||||
|
||||
# For Fedora/CentOS/RHEL Atomic variants, if `bootc` is available and this configuration entry is set to true, use
|
||||
# it to do the update - Will also supersede rpm-ostree if enabled
|
||||
# (default: false)
|
||||
# bootc = false
|
||||
|
||||
# nix_arguments = "--flake"
|
||||
|
||||
# nix_env_arguments = "--prebuilt-only"
|
||||
|
||||
# Extra Home Manager arguments
|
||||
# home_manager_arguments = ["--flake", "file"]
|
||||
|
||||
|
||||
[git]
|
||||
# How many repos to pull at max in parallel
|
||||
# max_concurrency = 5
|
||||
|
||||
# Additional git repositories to pull
|
||||
# repos = [
|
||||
# "~/src/*/",
|
||||
# "~/.config/something"
|
||||
# ]
|
||||
|
||||
# Don't pull the predefined git repos
|
||||
# pull_predefined = false
|
||||
|
||||
# Arguments to pass Git when pulling Repositories
|
||||
# arguments = "--rebase --autostash"
|
||||
|
||||
|
||||
[windows]
|
||||
# Manually select Windows updates
|
||||
# accept_all_updates = false
|
||||
|
||||
# Controls whether to automatically reboot the computer when updates are
|
||||
# installed that request it. (default: "no", allowed values: "yes", "no", "ask")
|
||||
# updates_auto_reboot = "yes"
|
||||
|
||||
# open_remotes_in_new_terminal = true
|
||||
|
||||
# wsl_update_pre_release = true
|
||||
|
||||
# wsl_update_use_web_download = true
|
||||
|
||||
# The default for winget_install_silently is true,
|
||||
# this example turns off silent install.
|
||||
# winget_install_silently = false
|
||||
|
||||
# Causes Topgrade to rename itself during the run to allow package managers
|
||||
# to upgrade it. Use this only if you installed Topgrade by using a package
|
||||
# manager such as Scoop or Cargo
|
||||
# self_rename = true
|
||||
|
||||
# Use sudo to elevate privileges for the Windows Package Manager (winget)
|
||||
# Only use this option if you want to run the Winget step in sudo-mode.
|
||||
# Running winget in sudo-mode is generally not recommended, as not every
|
||||
# package supports installing / upgrading in sudo-mode and it may cause issues
|
||||
# with some packages or may even cause the Winget-step to fail.
|
||||
# If any problems occur, please try running Topgrade without this option first
|
||||
# before reporting an issue.
|
||||
# (default: false)
|
||||
# winget_use_sudo = true
|
||||
|
||||
|
||||
[npm]
|
||||
# Use sudo if the NPM directory isn't owned by the current user
|
||||
# use_sudo = true
|
||||
|
||||
|
||||
[yarn]
|
||||
# Run `yarn global upgrade` with `sudo`
|
||||
# use_sudo = true
|
||||
|
||||
|
||||
[deno]
|
||||
# Upgrade deno executable to the given version.
|
||||
# version = "stable"
|
||||
|
||||
|
||||
[vim]
|
||||
# For `vim-plug`, execute `PlugUpdate!` instead of `PlugUpdate`
|
||||
# force_plug_update = true
|
||||
|
||||
|
||||
[firmware]
|
||||
# Offer to update firmware; if false just check for and display available updates
|
||||
# upgrade = true
|
||||
|
||||
|
||||
[vagrant]
|
||||
# Vagrant directories
|
||||
# directories = []
|
||||
|
||||
# power on vagrant boxes if needed
|
||||
# power_on = true
|
||||
|
||||
# Always suspend vagrant boxes instead of powering off
|
||||
# always_suspend = true
|
||||
|
||||
|
||||
[flatpak]
|
||||
# Use sudo for updating the system-wide installation
|
||||
# use_sudo = true
|
||||
|
||||
|
||||
[distrobox]
|
||||
# use_root = false
|
||||
|
||||
# containers = ["archlinux-latest"]
|
||||
[containers]
|
||||
# Specify the containers to ignore while updating (Wildcard supported)
|
||||
# ignored_containers = ["ghcr.io/rancher-sandbox/rancher-desktop/rdx-proxy:latest", "docker.io*"]
|
||||
# Specify the runtime to use for containers (default: "docker", allowed values: "docker", "podman")
|
||||
# runtime = "podman"
|
||||
|
||||
[lensfun]
|
||||
# If disabled, Topgrade invokes `lensfun‑update‑data` without root privilege,
|
||||
# then the update will be only available to you. Otherwise, `sudo` is required,
|
||||
# and the update will be installed system-wide, i.e., available to all users.
|
||||
# (default: false)
|
||||
# use_sudo = false
|
||||
|
||||
[julia]
|
||||
# If disabled, Topgrade invokes julia with the --startup-file=no CLI option.
|
||||
#
|
||||
# This may be desirable to avoid loading outdated packages with "using" directives
|
||||
# in the startup file, which might cause the update run to fail.
|
||||
# (default: true)
|
||||
# startup_file = true
|
||||
|
||||
[zigup]
|
||||
# Version strings passed to zigup.
|
||||
# These may be pinned versions such as "0.13.0" or branches such as "master".
|
||||
# Each one will be updated in its own zigup invocation.
|
||||
# (default: ["master"])
|
||||
# target_versions = ["master", "0.13.0"]
|
||||
|
||||
# Specifies the directory that the zig files will be installed to.
|
||||
# If defined, passed with the --install-dir command line flag.
|
||||
# If not defined, zigup will use its default behaviour.
|
||||
# (default: not defined)
|
||||
# install_dir = "~/.zig"
|
||||
|
||||
# Specifies the path of the symlink which will be set to point at the default compiler version.
|
||||
# If defined, passed with the --path-link command line flag.
|
||||
# If not defined, zigup will use its default behaviour.
|
||||
# This is not meaningful if set_default is not enabled.
|
||||
# (default: not defined)
|
||||
# path_link = "~/.bin/zig"
|
||||
|
||||
# If enabled, run `zigup clean` after updating all versions.
|
||||
# If enabled, each updated version above will be marked with `zigup keep`.
|
||||
# (default: false)
|
||||
# cleanup = false
|
||||
|
||||
[vscode]
|
||||
# If this is set and is a non-empty string, it specifies the profile the
|
||||
# extensions should be updated for.
|
||||
# (default: this won't be set by default)
|
||||
# profile = ""
|
||||
|
||||
[pixi]
|
||||
# Show the release notes of the latest pixi release
|
||||
# during the pixi step
|
||||
# (default: false)
|
||||
# include_release_notes = false
|
||||
138
apps/.config/wezterm/wezterm.lua
Normal file
|
|
@ -0,0 +1,138 @@
|
|||
local wezterm = require("wezterm")
|
||||
local config = wezterm.config_builder()
|
||||
|
||||
-- Font
|
||||
config.font = wezterm.font("MapleMono NF", { weight = "Regular" })
|
||||
config.font_size = 13.0
|
||||
config.line_height = 1.15
|
||||
|
||||
-- Enable ligatures (Maple Mono supports them natively)
|
||||
config.harfbuzz_features = { "calt=1", "liga=1", "clig=1" }
|
||||
|
||||
-- Dark navy palette
|
||||
local bg = "#0b0d1a"
|
||||
local surface = "#0f1120"
|
||||
local surface2 = "#141628"
|
||||
local overlay = "#1a1d35"
|
||||
local purple = "#c792ea"
|
||||
local cyan = "#4ec9b0"
|
||||
local green = "#99c794"
|
||||
local pink = "#ec5f89"
|
||||
local yellow = "#fac863"
|
||||
local red = "#f97b58"
|
||||
local text = "#cdd6f4"
|
||||
local subtext = "#7f849c"
|
||||
|
||||
config.colors = {
|
||||
foreground = text,
|
||||
background = bg,
|
||||
cursor_bg = purple,
|
||||
cursor_fg = bg,
|
||||
cursor_border = purple,
|
||||
selection_fg = bg,
|
||||
selection_bg = purple,
|
||||
scrollbar_thumb = overlay,
|
||||
split = overlay,
|
||||
|
||||
ansi = {
|
||||
"#1a1b2e", -- black (surface)
|
||||
red, -- red
|
||||
green, -- green
|
||||
yellow, -- yellow
|
||||
"#82aaff", -- blue
|
||||
purple, -- magenta
|
||||
cyan, -- cyan
|
||||
text, -- white
|
||||
},
|
||||
brights = {
|
||||
subtext, -- bright black
|
||||
"#ff6e6e", -- bright red
|
||||
"#c3e88d", -- bright green
|
||||
"#ffcb6b", -- bright yellow
|
||||
"#9cc4ff", -- bright blue
|
||||
"#d9a0ff", -- bright magenta
|
||||
"#89ddff", -- bright cyan
|
||||
"#ffffff", -- bright white
|
||||
},
|
||||
|
||||
tab_bar = {
|
||||
background = surface,
|
||||
active_tab = {
|
||||
bg_color = overlay,
|
||||
fg_color = purple,
|
||||
intensity = "Bold",
|
||||
},
|
||||
inactive_tab = {
|
||||
bg_color = surface,
|
||||
fg_color = subtext,
|
||||
},
|
||||
inactive_tab_hover = {
|
||||
bg_color = surface2,
|
||||
fg_color = text,
|
||||
},
|
||||
new_tab = {
|
||||
bg_color = surface,
|
||||
fg_color = subtext,
|
||||
},
|
||||
new_tab_hover = {
|
||||
bg_color = surface2,
|
||||
fg_color = text,
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
-- Window appearance
|
||||
config.window_background_opacity = 1.0
|
||||
config.text_background_opacity = 1.0
|
||||
|
||||
config.window_padding = {
|
||||
left = 14, right = 14, top = 10, bottom = 10,
|
||||
}
|
||||
|
||||
config.window_decorations = "NONE"
|
||||
config.window_close_confirmation = "NeverPrompt"
|
||||
|
||||
-- Tab bar (minimal, top)
|
||||
config.enable_tab_bar = true
|
||||
config.use_fancy_tab_bar = false
|
||||
config.tab_bar_at_bottom = false
|
||||
config.show_tab_index_in_tab_bar = false
|
||||
config.hide_tab_bar_if_only_one_tab = true
|
||||
|
||||
config.tab_max_width = 32
|
||||
|
||||
-- Scrollback
|
||||
config.scrollback_lines = 5000
|
||||
|
||||
-- Cursor
|
||||
config.default_cursor_style = "BlinkingBar"
|
||||
config.cursor_blink_rate = 500
|
||||
|
||||
-- Performance
|
||||
config.max_fps = 120
|
||||
config.animation_fps = 1
|
||||
config.cursor_blink_ease_in = "Constant"
|
||||
config.cursor_blink_ease_out = "Constant"
|
||||
|
||||
-- Misc
|
||||
config.audible_bell = "Disabled"
|
||||
config.check_for_updates = false
|
||||
|
||||
-- Key bindings (keep minimal, add a few useful ones)
|
||||
config.keys = {
|
||||
-- Split panes
|
||||
{ key = "e", mods = "CTRL|SHIFT", action = wezterm.action.SplitHorizontal { domain = "CurrentPaneDomain" } },
|
||||
{ key = "o", mods = "CTRL|SHIFT", action = wezterm.action.SplitVertical { domain = "CurrentPaneDomain" } },
|
||||
-- Navigate panes
|
||||
{ key = "h", mods = "CTRL|SHIFT", action = wezterm.action.ActivatePaneDirection("Left") },
|
||||
{ key = "l", mods = "CTRL|SHIFT", action = wezterm.action.ActivatePaneDirection("Right") },
|
||||
{ key = "k", mods = "CTRL|SHIFT", action = wezterm.action.ActivatePaneDirection("Up") },
|
||||
{ key = "j", mods = "CTRL|SHIFT", action = wezterm.action.ActivatePaneDirection("Down") },
|
||||
-- New tab
|
||||
{ key = "t", mods = "CTRL|SHIFT", action = wezterm.action.SpawnTab("CurrentPaneDomain") },
|
||||
-- Copy/paste
|
||||
{ key = "c", mods = "CTRL|SHIFT", action = wezterm.action.CopyTo("Clipboard") },
|
||||
{ key = "v", mods = "CTRL|SHIFT", action = wezterm.action.PasteFrom("Clipboard") },
|
||||
}
|
||||
|
||||
return config
|
||||
4
apps/.config/xdg-desktop-portal-wlr/config
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
[screencast]
|
||||
output_name=eDP-1
|
||||
max_fps=30
|
||||
chooser_type=none
|
||||
6
apps/.config/xdg-desktop-portal/portals.conf
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
[preferred]
|
||||
default=wlr;gtk
|
||||
org.freedesktop.impl.portal.ScreenCast=wlr
|
||||
org.freedesktop.impl.portal.Screenshot=wlr
|
||||
org.freedesktop.impl.portal.Wallpaper=wlr
|
||||
org.freedesktop.impl.portal.Settings=wlr
|
||||
11
apps/.config/zed/keymap.json
Executable file
|
|
@ -0,0 +1,11 @@
|
|||
[
|
||||
{
|
||||
"context": "Terminal",
|
||||
"bindings": {
|
||||
"shift-enter": [
|
||||
"terminal::SendText",
|
||||
"\u001b\r"
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
21
apps/.config/zed/keymap.json.f87fa7a7.bak
Executable file
|
|
@ -0,0 +1,21 @@
|
|||
// Zed keymap
|
||||
//
|
||||
// For information on binding keys, see the Zed
|
||||
// documentation: https://zed.dev/docs/key-bindings
|
||||
//
|
||||
// To see the default key bindings run `zed: open default keymap`
|
||||
// from the command palette.
|
||||
[
|
||||
{
|
||||
"context": "Workspace",
|
||||
"bindings": {
|
||||
// "shift shift": "file_finder::Toggle"
|
||||
},
|
||||
},
|
||||
{
|
||||
"context": "Editor && vim_mode == insert",
|
||||
"bindings": {
|
||||
// "j k": "vim::NormalBefore"
|
||||
},
|
||||
},
|
||||
]
|
||||
105
apps/.config/zed/settings.json
Normal file
|
|
@ -0,0 +1,105 @@
|
|||
// Zed settings
|
||||
//
|
||||
// For information on how to configure Zed, see the Zed
|
||||
// documentation: https://zed.dev/docs/configuring-zed
|
||||
//
|
||||
// To see all of Zed's default settings without changing your
|
||||
// custom settings, run `zed: open default settings` from the
|
||||
// command palette (cmd-shift-p / ctrl-shift-p)
|
||||
{
|
||||
"project_panel": {
|
||||
"dock": "left"
|
||||
},
|
||||
"outline_panel": {
|
||||
"dock": "left"
|
||||
},
|
||||
"collaboration_panel": {
|
||||
"dock": "left"
|
||||
},
|
||||
"git_panel": {
|
||||
"dock": "left"
|
||||
},
|
||||
"agent": {
|
||||
"dock": "right",
|
||||
"favorite_models": [
|
||||
{
|
||||
"provider": "copilot_chat",
|
||||
"model": "claude-sonnet-4.6",
|
||||
"enable_thinking": false
|
||||
},
|
||||
{
|
||||
"provider": "copilot_chat",
|
||||
"model": "gpt-5-mini",
|
||||
"enable_thinking": false
|
||||
},
|
||||
{
|
||||
"provider": "copilot_chat",
|
||||
"model": "claude-opus-4.6",
|
||||
"enable_thinking": false
|
||||
},
|
||||
{
|
||||
"provider": "copilot_chat",
|
||||
"model": "claude-opus-4.5",
|
||||
"enable_thinking": false
|
||||
},
|
||||
{
|
||||
"provider": "copilot_chat",
|
||||
"model": "claude-sonnet-4.5",
|
||||
"enable_thinking": false
|
||||
}
|
||||
],
|
||||
"tool_permissions": {
|
||||
"tools": {
|
||||
"fetch": {
|
||||
"always_allow": [
|
||||
{
|
||||
"pattern": "^https?://www\\.better\\-auth\\.com"
|
||||
}
|
||||
]
|
||||
},
|
||||
"terminal": {
|
||||
"always_allow": [
|
||||
{
|
||||
"pattern": "^git\\s+show(\\s|$)"
|
||||
},
|
||||
{
|
||||
"pattern": "^which\\s+psql(\\s|$)"
|
||||
},
|
||||
{
|
||||
"pattern": "^ls\\b"
|
||||
},
|
||||
{
|
||||
"pattern": "^which\\s+pg_ctl(\\s|$)"
|
||||
},
|
||||
{
|
||||
"pattern": "^cat\\b"
|
||||
},
|
||||
{
|
||||
"pattern": "^diff\\b"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"default_profile": "write",
|
||||
"default_model": {
|
||||
"effort": "high",
|
||||
"enable_thinking": false,
|
||||
"provider": "copilot_chat",
|
||||
"model": "gpt-5-mini"
|
||||
},
|
||||
"model_parameters": []
|
||||
},
|
||||
"autosave": "on_focus_change",
|
||||
"base_keymap": "VSCode",
|
||||
"ui_font_size": 16,
|
||||
"buffer_font_size": 16,
|
||||
"theme": {
|
||||
"mode": "dark",
|
||||
"light": "One Light",
|
||||
"dark": "Kleur Dark"
|
||||
},
|
||||
"auto_install_extensions": {
|
||||
"wakatime": true
|
||||
}
|
||||
}
|
||||
74
apps/.config/zed/settings_backup.json
Executable file
|
|
@ -0,0 +1,74 @@
|
|||
// Zed settings
|
||||
//
|
||||
// For information on how to configure Zed, see the Zed
|
||||
// documentation: https://zed.dev/docs/configuring-zed
|
||||
//
|
||||
// To see all of Zed's default settings without changing your
|
||||
// custom settings, run `zed: open default settings` from the
|
||||
// command palette (cmd-shift-p / ctrl-shift-p)
|
||||
{
|
||||
"icon_theme": "JetBrains New UI Icons (Dark)",
|
||||
"edit_predictions": {
|
||||
"mode": "subtle",
|
||||
"copilot": {
|
||||
"enable_next_edit_suggestions": true
|
||||
},
|
||||
"provider": "copilot",
|
||||
"disabled_globs": [],
|
||||
},
|
||||
"agent": {
|
||||
"favorite_models": [
|
||||
{
|
||||
"provider": "copilot_chat",
|
||||
"model": "claude-opus-4.6"
|
||||
},
|
||||
{
|
||||
"provider": "copilot_chat",
|
||||
"model": "gpt-5-mini"
|
||||
},
|
||||
{
|
||||
"provider": "copilot_chat",
|
||||
"model": "gpt-5.2"
|
||||
},
|
||||
{
|
||||
"provider": "copilot_chat",
|
||||
"model": "gpt-5.3-codex"
|
||||
}
|
||||
],
|
||||
"always_allow_tool_actions": true,
|
||||
"default_profile": "ask",
|
||||
"default_model": {
|
||||
"provider": "copilot_chat",
|
||||
"model": "gpt-5-mini",
|
||||
},
|
||||
"model_parameters": [],
|
||||
},
|
||||
"autosave": "on_focus_change",
|
||||
"base_keymap": "VSCode",
|
||||
"ui_font_size": 16,
|
||||
"buffer_font_size": 16,
|
||||
"theme": {
|
||||
"mode": "dark",
|
||||
"light": "One Light",
|
||||
"dark": "Kleur Dark",
|
||||
},
|
||||
"calls": {
|
||||
"mute_on_join": true
|
||||
|
||||
},
|
||||
"languages": {
|
||||
"Ruby": {
|
||||
"formatter": {
|
||||
"external": {
|
||||
"command": "rubocop",
|
||||
"arguments": ["--fix", "--stdin", "ignored", "--stderr"]
|
||||
}
|
||||
},
|
||||
"format_on_save": "on"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
"format_on_save": "on",
|
||||
"formatter": "prettier",
|
||||
}
|
||||
847
apps/.config/zed/themes/zed.json
Normal file
|
|
@ -0,0 +1,847 @@
|
|||
{
|
||||
"$schema": "https://zed.dev/schema/themes/v0.2.0.json",
|
||||
"name": "Kleur",
|
||||
"author": "Kleur Contributors",
|
||||
"themes": [
|
||||
{
|
||||
"name": "Kleur Dark",
|
||||
"appearance": "dark",
|
||||
"style": {
|
||||
"background.appearance": "opaque",
|
||||
"accents": [
|
||||
"#bcb0ff",
|
||||
"#27c7ff",
|
||||
"#00cec5",
|
||||
"#06d46e",
|
||||
"#f8aa14",
|
||||
"#ffa192"
|
||||
],
|
||||
"border": "#00000000",
|
||||
"border.variant": "#00000000",
|
||||
"border.focused": "#bcb0ff",
|
||||
"border.selected": "#00000000",
|
||||
"border.transparent": "#00000000",
|
||||
"border.disabled": "#00000000",
|
||||
"elevated_surface.background": "#14112d",
|
||||
"surface.background": "#0c0823",
|
||||
"background": "#080715",
|
||||
"element.background": "#827ace",
|
||||
"element.active": "#bcb0ff40",
|
||||
"element.hover": "#827ace60",
|
||||
"element.selected": "#5e5895",
|
||||
"element.disabled": "#a2a1a8",
|
||||
"drop_target.background": "#a2a1a866",
|
||||
"ghost_element.background": "#00000000",
|
||||
"ghost_element.hover": "#827ace40",
|
||||
"ghost_element.active": "#bcb0ff40",
|
||||
"ghost_element.selected": "#bcb0ff60",
|
||||
"ghost_element.disabled": "#14112d",
|
||||
"text": "#ebebed",
|
||||
"text.accent": "#bcb0ff",
|
||||
"text.muted": "#cfced2",
|
||||
"text.placeholder": "#bab9be",
|
||||
"text.disabled": "#bab9be",
|
||||
"icon": "#ebebed",
|
||||
"icon.accent": "#bcb0ff",
|
||||
"icon.muted": "#cfced2",
|
||||
"icon.disabled": "#bab9be",
|
||||
"icon.placeholder": "#cfced2",
|
||||
"status_bar.background": "#0c0823",
|
||||
"title_bar.background": "#0c0823",
|
||||
"title_bar.inactive_background": "#080715",
|
||||
"toolbar.background": "#0c0823",
|
||||
"tab_bar.background": "#0c0823",
|
||||
"tab.inactive_background": "#080715",
|
||||
"tab.active_background": "#14112d",
|
||||
"search.match_background": "#bcb0ff66",
|
||||
"panel.background": "#0c0823",
|
||||
"panel.focused_border": null,
|
||||
"pane.focused_border": null,
|
||||
"scrollbar.thumb.background": "#14112d33",
|
||||
"scrollbar.thumb.hover_background": "#14112d77",
|
||||
"scrollbar.thumb.border": "#14112d33",
|
||||
"scrollbar.track.background": "#0c0823",
|
||||
"scrollbar.track.border": "#00000000",
|
||||
"editor.foreground": "#ebebed",
|
||||
"editor.background": "#080715",
|
||||
"editor.gutter.background": "#080715",
|
||||
"editor.subheader.background": "#0c0823",
|
||||
"editor.active_line.background": "#0c0823",
|
||||
"editor.highlighted_line.background": "#0c0823",
|
||||
"editor.line_number": "#cfced2",
|
||||
"editor.active_line_number": "#ebebed",
|
||||
"editor.hover_line_number": "#dfdee1",
|
||||
"editor.invisible": "#bab9be",
|
||||
"editor.wrap_guide": "#00000000",
|
||||
"editor.active_wrap_guide": "#00000000",
|
||||
"editor.document_highlight.read_background": "#bcb0ff1a",
|
||||
"editor.document_highlight.write_background": "#cfced266",
|
||||
"terminal.background": "#080715",
|
||||
"terminal.foreground": "#ebebed",
|
||||
"terminal.bright_foreground": "#ebebed",
|
||||
"terminal.dim_foreground": "#080715",
|
||||
"terminal.ansi.black": "#080715",
|
||||
"terminal.ansi.dim_black": "#ebebed",
|
||||
"terminal.ansi.bright_black": "#0c0823",
|
||||
"terminal.ansi.red": "#ffa192",
|
||||
"terminal.ansi.dim_red": "#e94740",
|
||||
"terminal.ansi.bright_red": "#ffbfb3",
|
||||
"terminal.ansi.green": "#06d46e",
|
||||
"terminal.ansi.dim_green": "#009749",
|
||||
"terminal.ansi.bright_green": "#4be986",
|
||||
"terminal.ansi.yellow": "#f8aa14",
|
||||
"terminal.ansi.dim_yellow": "#b47700",
|
||||
"terminal.ansi.bright_yellow": "#ffc554",
|
||||
"terminal.ansi.blue": "#27c7ff",
|
||||
"terminal.ansi.dim_blue": "#008cbf",
|
||||
"terminal.ansi.bright_blue": "#70dcff",
|
||||
"terminal.ansi.magenta": "#bcb0ff",
|
||||
"terminal.ansi.dim_magenta": "#827ace",
|
||||
"terminal.ansi.bright_magenta": "#d3c7ff",
|
||||
"terminal.ansi.cyan": "#00cec5",
|
||||
"terminal.ansi.dim_cyan": "#00928b",
|
||||
"terminal.ansi.bright_cyan": "#30e4da",
|
||||
"terminal.ansi.white": "#ebebed",
|
||||
"terminal.ansi.dim_white": "#cfced2",
|
||||
"terminal.ansi.bright_white": "#bcb0ff",
|
||||
"link_text.hover": "#00cec5",
|
||||
"version_control.added": "#06d46e",
|
||||
"version_control.modified": "#f8aa14",
|
||||
"version_control.deleted": "#ffa192",
|
||||
"version_control.word_added": "#06d46e59",
|
||||
"version_control.word_deleted": "#ffa192cc",
|
||||
"version_control.conflict_marker.ours": "#06d46e1a",
|
||||
"version_control.conflict_marker.theirs": "#27c7ff1a",
|
||||
"conflict": "#f8aa14",
|
||||
"conflict.background": "#f8aa141a",
|
||||
"conflict.border": "#b47700",
|
||||
"created": "#06d46e",
|
||||
"created.background": "#06d46e1a",
|
||||
"created.border": "#009749",
|
||||
"deleted": "#ffa192",
|
||||
"deleted.background": "#ffa1921a",
|
||||
"deleted.border": "#e94740",
|
||||
"error": "#ffa192",
|
||||
"error.background": "#ffa1921a",
|
||||
"error.border": "#e94740",
|
||||
"hidden": "#cfced2",
|
||||
"hidden.background": "#cfced21a",
|
||||
"hidden.border": "#bab9be",
|
||||
"hint": "#cfced2",
|
||||
"hint.background": "#14112d",
|
||||
"hint.border": "#5e5895",
|
||||
"ignored": "#cfced2",
|
||||
"ignored.background": "#cfced21a",
|
||||
"ignored.border": "#bab9be",
|
||||
"info": "#27c7ff",
|
||||
"info.background": "#27c7ff1a",
|
||||
"info.border": "#008cbf",
|
||||
"modified": "#f8aa14",
|
||||
"modified.background": "#f8aa141a",
|
||||
"modified.border": "#b47700",
|
||||
"predictive": "#dfdee1",
|
||||
"predictive.background": "#dfdee11a",
|
||||
"predictive.border": "#cfced2",
|
||||
"renamed": "#27c7ff",
|
||||
"renamed.background": "#27c7ff1a",
|
||||
"renamed.border": "#008cbf",
|
||||
"success": "#06d46e",
|
||||
"success.background": "#06d46e1a",
|
||||
"success.border": "#009749",
|
||||
"unreachable": "#cfced2",
|
||||
"unreachable.background": "#cfced21a",
|
||||
"unreachable.border": "#bab9be",
|
||||
"warning": "#f8aa14",
|
||||
"warning.background": "#f8aa141a",
|
||||
"warning.border": "#b47700",
|
||||
"players": [
|
||||
{
|
||||
"cursor": "#bcb0ffff",
|
||||
"background": "#bcb0ffff",
|
||||
"selection": "#bcb0ff3d"
|
||||
},
|
||||
{
|
||||
"cursor": "#27c7ffff",
|
||||
"background": "#27c7ffff",
|
||||
"selection": "#27c7ff3d"
|
||||
},
|
||||
{
|
||||
"cursor": "#06d46eff",
|
||||
"background": "#06d46eff",
|
||||
"selection": "#06d46e3d"
|
||||
},
|
||||
{
|
||||
"cursor": "#bcb0ffff",
|
||||
"background": "#bcb0ffff",
|
||||
"selection": "#bcb0ff3d"
|
||||
},
|
||||
{
|
||||
"cursor": "#f8aa14ff",
|
||||
"background": "#f8aa14ff",
|
||||
"selection": "#f8aa143d"
|
||||
},
|
||||
{
|
||||
"cursor": "#00cec5ff",
|
||||
"background": "#00cec5ff",
|
||||
"selection": "#00cec53d"
|
||||
},
|
||||
{
|
||||
"cursor": "#ffa192ff",
|
||||
"background": "#ffa192ff",
|
||||
"selection": "#ffa1923d"
|
||||
},
|
||||
{
|
||||
"cursor": "#27c7ffff",
|
||||
"background": "#27c7ffff",
|
||||
"selection": "#27c7ff3d"
|
||||
}
|
||||
],
|
||||
"syntax": {
|
||||
"namespace": {
|
||||
"color": "#06d46e"
|
||||
},
|
||||
"class": {
|
||||
"color": "#27c7ff"
|
||||
},
|
||||
"class.abstract": {
|
||||
"color": "#f8aa14"
|
||||
},
|
||||
"enum": {
|
||||
"color": "#06d46e"
|
||||
},
|
||||
"interface": {
|
||||
"color": "#f8aa14"
|
||||
},
|
||||
"struct": {
|
||||
"color": "#27c7ff"
|
||||
},
|
||||
"typeParameter": {
|
||||
"color": "#06d46e"
|
||||
},
|
||||
"type": {
|
||||
"color": "#27c7ff"
|
||||
},
|
||||
"parameter": {
|
||||
"color": "#bcb0ff"
|
||||
},
|
||||
"variable": {
|
||||
"color": "#bcb0ff"
|
||||
},
|
||||
"variable.builtin": {
|
||||
"color": "#06d46e"
|
||||
},
|
||||
"property": {
|
||||
"color": "#bcb0ff"
|
||||
},
|
||||
"enumMember": {
|
||||
"color": "#06d46e"
|
||||
},
|
||||
"decorator": {
|
||||
"color": "#27c7ff"
|
||||
},
|
||||
"event": {
|
||||
"color": "#27c7ff"
|
||||
},
|
||||
"punct": {
|
||||
"color": "#ffa192"
|
||||
},
|
||||
"punctuation": {
|
||||
"color": "#ffa192"
|
||||
},
|
||||
"punctuation.bracket": {
|
||||
"color": "#bcb0ff"
|
||||
},
|
||||
"punctuation.delimiter": {
|
||||
"color": "#bcb0ff"
|
||||
},
|
||||
"punctuation.list-marker": {
|
||||
"color": "#bcb0ff"
|
||||
},
|
||||
"punctuation.markup": {
|
||||
"color": "#bcb0ff"
|
||||
},
|
||||
"punctuation.special": {
|
||||
"color": "#27c7ff"
|
||||
},
|
||||
"escapeSequence": {
|
||||
"color": "#ffa192"
|
||||
},
|
||||
"function": {
|
||||
"color": "#27c7ff",
|
||||
"font_style": "italic"
|
||||
},
|
||||
"method": {
|
||||
"color": "#27c7ff",
|
||||
"font_style": "italic"
|
||||
},
|
||||
"macro": {
|
||||
"color": "#27c7ff"
|
||||
},
|
||||
"label": {
|
||||
"color": "#dfdee1"
|
||||
},
|
||||
"comment": {
|
||||
"color": "#a2a1a8",
|
||||
"font_style": "italic"
|
||||
},
|
||||
"comment.doc": {
|
||||
"color": "#bab9be",
|
||||
"font_style": "italic"
|
||||
},
|
||||
"constructor": {
|
||||
"color": "#27c7ff"
|
||||
},
|
||||
"embedded": {
|
||||
"color": "#ebebed"
|
||||
},
|
||||
"string": { "color": "#06d46e" },
|
||||
"string.escape": {
|
||||
"color": "#cfced2"
|
||||
},
|
||||
"string.special": {
|
||||
"color": "#f8aa14"
|
||||
},
|
||||
"string.special.symbol": {
|
||||
"color": "#f8aa14"
|
||||
},
|
||||
"keyword": {
|
||||
"color": "#bcb0ff",
|
||||
"font_style": "italic"
|
||||
},
|
||||
"keyword.control": {
|
||||
"color": "#bcb0ff",
|
||||
"font_style": "italic"
|
||||
},
|
||||
"number": {
|
||||
"color": "#f8aa14"
|
||||
},
|
||||
"string.regex": {
|
||||
"color": "#f8aa14"
|
||||
},
|
||||
"boolean": {
|
||||
"color": "#f8aa14"
|
||||
},
|
||||
"bool": {
|
||||
"color": "#f8aa14"
|
||||
},
|
||||
"const": {
|
||||
"color": "#f8aa14"
|
||||
},
|
||||
"constant": {
|
||||
"color": "#f8aa14"
|
||||
},
|
||||
"operator": {
|
||||
"color": "#bcb0ff"
|
||||
},
|
||||
"tag": {
|
||||
"color": "#bcb0ff"
|
||||
},
|
||||
"attribute": {
|
||||
"color": "#27c7ff"
|
||||
},
|
||||
"link_uri": {
|
||||
"color": "#00cec5"
|
||||
},
|
||||
"preproc": {
|
||||
"color": "#ebebed"
|
||||
},
|
||||
"primary": {
|
||||
"color": "#ebebed"
|
||||
},
|
||||
"predictive": {
|
||||
"color": "#dfdee1",
|
||||
"font_style": "italic"
|
||||
},
|
||||
"selector": {
|
||||
"color": "#06d46e"
|
||||
},
|
||||
"selector.pseudo": {
|
||||
"color": "#27c7ff"
|
||||
},
|
||||
"text.literal": {
|
||||
"color": "#06d46e"
|
||||
},
|
||||
"title": {
|
||||
"color": "#ffa192",
|
||||
"font_weight": 400
|
||||
},
|
||||
"variable.special": {
|
||||
"color": "#f8aa14"
|
||||
},
|
||||
"variant": {
|
||||
"color": "#27c7ff"
|
||||
},
|
||||
"function.declaration": {
|
||||
"color": "#bcb0ff",
|
||||
"font_weight": 700
|
||||
},
|
||||
"enum.declaration": {
|
||||
"color": "#06d46e",
|
||||
"font_weight": 700
|
||||
},
|
||||
"class.declaration": {
|
||||
"color": "#27c7ff",
|
||||
"font_weight": 700
|
||||
},
|
||||
"method.declaration": {
|
||||
"color": "#27c7ff",
|
||||
"font_weight": 700
|
||||
},
|
||||
"trait.declaration": {
|
||||
"color": "#f8aa14",
|
||||
"font_weight": 700
|
||||
},
|
||||
"struct.declaration": {
|
||||
"color": "#27c7ff",
|
||||
"font_weight": 700
|
||||
},
|
||||
"function.async": {
|
||||
"color": "#f8aa14"
|
||||
},
|
||||
"unresolvedReference": {
|
||||
"color": "#ffa192"
|
||||
},
|
||||
"namespace.defaultLibrary": {
|
||||
"color": "#06d46e"
|
||||
},
|
||||
"variable.defaultLibrary": {
|
||||
"color": "#06d46e"
|
||||
},
|
||||
"namespace.builtin": {
|
||||
"color": "#06d46e"
|
||||
},
|
||||
"emphasis": {
|
||||
"color": "#bcb0ff",
|
||||
"font_style": "italic"
|
||||
},
|
||||
"emphasis.strong": {
|
||||
"color": "#bcb0ff",
|
||||
"font_style": "italic",
|
||||
"font_weight": 700
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
,
|
||||
{
|
||||
"name": "Kleur Light",
|
||||
"appearance": "light",
|
||||
"style": {
|
||||
"background.appearance": "opaque",
|
||||
"accents": [
|
||||
"#433e68",
|
||||
"#0f4860",
|
||||
"#104b47",
|
||||
"#0f4d28",
|
||||
"#5c3d06",
|
||||
"#7b1e1b"
|
||||
],
|
||||
"border": "#00000000",
|
||||
"border.variant": "#00000000",
|
||||
"border.focused": "#433e68",
|
||||
"border.selected": "#00000000",
|
||||
"border.transparent": "#00000000",
|
||||
"border.disabled": "#00000000",
|
||||
"elevated_surface.background": "#ecedfc",
|
||||
"surface.background": "#f0f0ff",
|
||||
"background": "#f0f0ff",
|
||||
"element.background": "#b1a5ff",
|
||||
"element.active": "#433e6840",
|
||||
"element.hover": "#b1a5ff60",
|
||||
"element.selected": "#d3c7ff",
|
||||
"element.disabled": "#93939b",
|
||||
"drop_target.background": "#93939b66",
|
||||
"ghost_element.background": "#00000000",
|
||||
"ghost_element.hover": "#b1a5ff40",
|
||||
"ghost_element.active": "#433e6840",
|
||||
"ghost_element.selected": "#433e6860",
|
||||
"ghost_element.disabled": "#ecedfc",
|
||||
"text": "#2c2c2e",
|
||||
"text.accent": "#433e68",
|
||||
"text.muted": "#5c5c61",
|
||||
"text.placeholder": "#77777d",
|
||||
"text.disabled": "#77777d",
|
||||
"icon": "#2c2c2e",
|
||||
"icon.accent": "#433e68",
|
||||
"icon.muted": "#5c5c61",
|
||||
"icon.disabled": "#77777d",
|
||||
"icon.placeholder": "#5c5c61",
|
||||
"status_bar.background": "#f0f0ff",
|
||||
"title_bar.background": "#f0f0ff",
|
||||
"title_bar.inactive_background": "#f0f0ff",
|
||||
"toolbar.background": "#f0f0ff",
|
||||
"tab_bar.background": "#f0f0ff",
|
||||
"tab.inactive_background": "#f0f0ff",
|
||||
"tab.active_background": "#ecedfc",
|
||||
"search.match_background": "#433e6866",
|
||||
"panel.background": "#f0f0ff",
|
||||
"panel.focused_border": null,
|
||||
"pane.focused_border": null,
|
||||
"scrollbar.thumb.background": "#ecedfc33",
|
||||
"scrollbar.thumb.hover_background": "#ecedfc77",
|
||||
"scrollbar.thumb.border": "#ecedfc33",
|
||||
"scrollbar.track.background": "#f0f0ff",
|
||||
"scrollbar.track.border": "#00000000",
|
||||
"editor.foreground": "#2c2c2e",
|
||||
"editor.background": "#f0f0ff",
|
||||
"editor.gutter.background": "#f0f0ff",
|
||||
"editor.subheader.background": "#f0f0ff",
|
||||
"editor.active_line.background": "#f0f0ff",
|
||||
"editor.highlighted_line.background": "#f0f0ff",
|
||||
"editor.line_number": "#5c5c61",
|
||||
"editor.active_line_number": "#2c2c2e",
|
||||
"editor.hover_line_number": "#434346",
|
||||
"editor.invisible": "#77777d",
|
||||
"editor.wrap_guide": "#00000000",
|
||||
"editor.active_wrap_guide": "#00000000",
|
||||
"editor.document_highlight.read_background": "#433e681a",
|
||||
"editor.document_highlight.write_background": "#5c5c6166",
|
||||
"terminal.background": "#f0f0ff",
|
||||
"terminal.foreground": "#2c2c2e",
|
||||
"terminal.bright_foreground": "#2c2c2e",
|
||||
"terminal.dim_foreground": "#f0f0ff",
|
||||
"terminal.ansi.black": "#f0f0ff",
|
||||
"terminal.ansi.dim_black": "#2c2c2e",
|
||||
"terminal.ansi.bright_black": "#f0f0ff",
|
||||
"terminal.ansi.red": "#7b1e1b",
|
||||
"terminal.ansi.dim_red": "#ff9181",
|
||||
"terminal.ansi.bright_red": "#a92624",
|
||||
"terminal.ansi.green": "#0f4d28",
|
||||
"terminal.ansi.dim_green": "#00c965",
|
||||
"terminal.ansi.bright_green": "#046934",
|
||||
"terminal.ansi.yellow": "#5c3d06",
|
||||
"terminal.ansi.dim_yellow": "#eda000",
|
||||
"terminal.ansi.bright_yellow": "#7e5300",
|
||||
"terminal.ansi.blue": "#0f4860",
|
||||
"terminal.ansi.dim_blue": "#00bcfb",
|
||||
"terminal.ansi.bright_blue": "#006285",
|
||||
"terminal.ansi.magenta": "#433e68",
|
||||
"terminal.ansi.dim_magenta": "#b1a5ff",
|
||||
"terminal.ansi.bright_magenta": "#5c5590",
|
||||
"terminal.ansi.cyan": "#104b47",
|
||||
"terminal.ansi.dim_cyan": "#00c3ba",
|
||||
"terminal.ansi.bright_cyan": "#036661",
|
||||
"terminal.ansi.white": "#2c2c2e",
|
||||
"terminal.ansi.dim_white": "#5c5c61",
|
||||
"terminal.ansi.bright_white": "#433e68",
|
||||
"link_text.hover": "#104b47",
|
||||
"version_control.added": "#0f4d28",
|
||||
"version_control.modified": "#5c3d06",
|
||||
"version_control.deleted": "#7b1e1b",
|
||||
"version_control.word_added": "#0f4d2859",
|
||||
"version_control.word_deleted": "#7b1e1bcc",
|
||||
"version_control.conflict_marker.ours": "#0f4d281a",
|
||||
"version_control.conflict_marker.theirs": "#0f48601a",
|
||||
"conflict": "#5c3d06",
|
||||
"conflict.background": "#5c3d061a",
|
||||
"conflict.border": "#eda000",
|
||||
"created": "#0f4d28",
|
||||
"created.background": "#0f4d281a",
|
||||
"created.border": "#00c965",
|
||||
"deleted": "#7b1e1b",
|
||||
"deleted.background": "#7b1e1b1a",
|
||||
"deleted.border": "#ff9181",
|
||||
"error": "#7b1e1b",
|
||||
"error.background": "#7b1e1b1a",
|
||||
"error.border": "#ff9181",
|
||||
"hidden": "#5c5c61",
|
||||
"hidden.background": "#5c5c611a",
|
||||
"hidden.border": "#77777d",
|
||||
"hint": "#5c5c61",
|
||||
"hint.background": "#ecedfc",
|
||||
"hint.border": "#d3c7ff",
|
||||
"ignored": "#5c5c61",
|
||||
"ignored.background": "#5c5c611a",
|
||||
"ignored.border": "#77777d",
|
||||
"info": "#0f4860",
|
||||
"info.background": "#0f48601a",
|
||||
"info.border": "#00bcfb",
|
||||
"modified": "#5c3d06",
|
||||
"modified.background": "#5c3d061a",
|
||||
"modified.border": "#eda000",
|
||||
"predictive": "#434346",
|
||||
"predictive.background": "#4343461a",
|
||||
"predictive.border": "#5c5c61",
|
||||
"renamed": "#0f4860",
|
||||
"renamed.background": "#0f48601a",
|
||||
"renamed.border": "#00bcfb",
|
||||
"success": "#0f4d28",
|
||||
"success.background": "#0f4d281a",
|
||||
"success.border": "#00c965",
|
||||
"unreachable": "#5c5c61",
|
||||
"unreachable.background": "#5c5c611a",
|
||||
"unreachable.border": "#77777d",
|
||||
"warning": "#5c3d06",
|
||||
"warning.background": "#5c3d061a",
|
||||
"warning.border": "#eda000",
|
||||
"players": [
|
||||
{
|
||||
"cursor": "#433e68ff",
|
||||
"background": "#433e68ff",
|
||||
"selection": "#433e683d"
|
||||
},
|
||||
{
|
||||
"cursor": "#0f4860ff",
|
||||
"background": "#0f4860ff",
|
||||
"selection": "#0f48603d"
|
||||
},
|
||||
{
|
||||
"cursor": "#0f4d28ff",
|
||||
"background": "#0f4d28ff",
|
||||
"selection": "#0f4d283d"
|
||||
},
|
||||
{
|
||||
"cursor": "#433e68ff",
|
||||
"background": "#433e68ff",
|
||||
"selection": "#433e683d"
|
||||
},
|
||||
{
|
||||
"cursor": "#5c3d06ff",
|
||||
"background": "#5c3d06ff",
|
||||
"selection": "#5c3d063d"
|
||||
},
|
||||
{
|
||||
"cursor": "#104b47ff",
|
||||
"background": "#104b47ff",
|
||||
"selection": "#104b473d"
|
||||
},
|
||||
{
|
||||
"cursor": "#7b1e1bff",
|
||||
"background": "#7b1e1bff",
|
||||
"selection": "#7b1e1b3d"
|
||||
},
|
||||
{
|
||||
"cursor": "#0f4860ff",
|
||||
"background": "#0f4860ff",
|
||||
"selection": "#0f48603d"
|
||||
}
|
||||
],
|
||||
"syntax": {
|
||||
"namespace": {
|
||||
"color": "#0f4d28"
|
||||
},
|
||||
"class": {
|
||||
"color": "#0f4860"
|
||||
},
|
||||
"class.abstract": {
|
||||
"color": "#5c3d06"
|
||||
},
|
||||
"enum": {
|
||||
"color": "#0f4d28"
|
||||
},
|
||||
"interface": {
|
||||
"color": "#5c3d06"
|
||||
},
|
||||
"struct": {
|
||||
"color": "#0f4860"
|
||||
},
|
||||
"typeParameter": {
|
||||
"color": "#0f4d28"
|
||||
},
|
||||
"type": {
|
||||
"color": "#0f4860"
|
||||
},
|
||||
"parameter": {
|
||||
"color": "#433e68"
|
||||
},
|
||||
"variable": {
|
||||
"color": "#433e68"
|
||||
},
|
||||
"variable.builtin": {
|
||||
"color": "#0f4d28"
|
||||
},
|
||||
"property": {
|
||||
"color": "#433e68"
|
||||
},
|
||||
"enumMember": {
|
||||
"color": "#0f4d28"
|
||||
},
|
||||
"decorator": {
|
||||
"color": "#0f4860"
|
||||
},
|
||||
"event": {
|
||||
"color": "#0f4860"
|
||||
},
|
||||
"punct": {
|
||||
"color": "#7b1e1b"
|
||||
},
|
||||
"punctuation": {
|
||||
"color": "#7b1e1b"
|
||||
},
|
||||
"punctuation.bracket": {
|
||||
"color": "#433e68"
|
||||
},
|
||||
"punctuation.delimiter": {
|
||||
"color": "#433e68"
|
||||
},
|
||||
"punctuation.list-marker": {
|
||||
"color": "#433e68"
|
||||
},
|
||||
"punctuation.markup": {
|
||||
"color": "#433e68"
|
||||
},
|
||||
"punctuation.special": {
|
||||
"color": "#0f4860"
|
||||
},
|
||||
"escapeSequence": {
|
||||
"color": "#7b1e1b"
|
||||
},
|
||||
"function": {
|
||||
"color": "#0f4860",
|
||||
"font_style": "italic"
|
||||
},
|
||||
"method": {
|
||||
"color": "#0f4860",
|
||||
"font_style": "italic"
|
||||
},
|
||||
"macro": {
|
||||
"color": "#0f4860"
|
||||
},
|
||||
"label": {
|
||||
"color": "#434346"
|
||||
},
|
||||
"comment": {
|
||||
"color": "#93939b",
|
||||
"font_style": "italic"
|
||||
},
|
||||
"comment.doc": {
|
||||
"color": "#77777d",
|
||||
"font_style": "italic"
|
||||
},
|
||||
"constructor": {
|
||||
"color": "#0f4860"
|
||||
},
|
||||
"embedded": {
|
||||
"color": "#2c2c2e"
|
||||
},
|
||||
"string": { "color": "#0f4d28" },
|
||||
"string.escape": {
|
||||
"color": "#5c5c61"
|
||||
},
|
||||
"string.special": {
|
||||
"color": "#5c3d06"
|
||||
},
|
||||
"string.special.symbol": {
|
||||
"color": "#5c3d06"
|
||||
},
|
||||
"keyword": {
|
||||
"color": "#433e68",
|
||||
"font_style": "italic"
|
||||
},
|
||||
"keyword.control": {
|
||||
"color": "#433e68",
|
||||
"font_style": "italic"
|
||||
},
|
||||
"number": {
|
||||
"color": "#5c3d06"
|
||||
},
|
||||
"string.regex": {
|
||||
"color": "#5c3d06"
|
||||
},
|
||||
"boolean": {
|
||||
"color": "#5c3d06"
|
||||
},
|
||||
"bool": {
|
||||
"color": "#5c3d06"
|
||||
},
|
||||
"const": {
|
||||
"color": "#5c3d06"
|
||||
},
|
||||
"constant": {
|
||||
"color": "#5c3d06"
|
||||
},
|
||||
"operator": {
|
||||
"color": "#433e68"
|
||||
},
|
||||
"tag": {
|
||||
"color": "#433e68"
|
||||
},
|
||||
"attribute": {
|
||||
"color": "#0f4860"
|
||||
},
|
||||
"link_uri": {
|
||||
"color": "#104b47"
|
||||
},
|
||||
"preproc": {
|
||||
"color": "#2c2c2e"
|
||||
},
|
||||
"primary": {
|
||||
"color": "#2c2c2e"
|
||||
},
|
||||
"predictive": {
|
||||
"color": "#434346",
|
||||
"font_style": "italic"
|
||||
},
|
||||
"selector": {
|
||||
"color": "#0f4d28"
|
||||
},
|
||||
"selector.pseudo": {
|
||||
"color": "#0f4860"
|
||||
},
|
||||
"text.literal": {
|
||||
"color": "#0f4d28"
|
||||
},
|
||||
"title": {
|
||||
"color": "#7b1e1b",
|
||||
"font_weight": 400
|
||||
},
|
||||
"variable.special": {
|
||||
"color": "#5c3d06"
|
||||
},
|
||||
"variant": {
|
||||
"color": "#0f4860"
|
||||
},
|
||||
"function.declaration": {
|
||||
"color": "#433e68",
|
||||
"font_weight": 700
|
||||
},
|
||||
"enum.declaration": {
|
||||
"color": "#0f4d28",
|
||||
"font_weight": 700
|
||||
},
|
||||
"class.declaration": {
|
||||
"color": "#0f4860",
|
||||
"font_weight": 700
|
||||
},
|
||||
"method.declaration": {
|
||||
"color": "#0f4860",
|
||||
"font_weight": 700
|
||||
},
|
||||
"trait.declaration": {
|
||||
"color": "#5c3d06",
|
||||
"font_weight": 700
|
||||
},
|
||||
"struct.declaration": {
|
||||
"color": "#0f4860",
|
||||
"font_weight": 700
|
||||
},
|
||||
"function.async": {
|
||||
"color": "#5c3d06"
|
||||
},
|
||||
"unresolvedReference": {
|
||||
"color": "#7b1e1b"
|
||||
},
|
||||
"namespace.defaultLibrary": {
|
||||
"color": "#0f4d28"
|
||||
},
|
||||
"variable.defaultLibrary": {
|
||||
"color": "#0f4d28"
|
||||
},
|
||||
"namespace.builtin": {
|
||||
"color": "#0f4d28"
|
||||
},
|
||||
"emphasis": {
|
||||
"color": "#433e68",
|
||||
"font_style": "italic"
|
||||
},
|
||||
"emphasis.strong": {
|
||||
"color": "#433e68",
|
||||
"font_style": "italic",
|
||||
"font_weight": 700
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
]
|
||||
}
|
||||
29
apps/.local/bin/wallpaper
Executable file
|
|
@ -0,0 +1,29 @@
|
|||
#!/usr/bin/env bash
|
||||
# Usage: wallpaper ~/Pictures/wall.jpg
|
||||
# wallpaper "#16161e" (solid color)
|
||||
set -e
|
||||
|
||||
TARGET="${1:-}"
|
||||
|
||||
if [[ -z "$TARGET" ]]; then
|
||||
echo "Usage: wallpaper <path-to-image|#rrggbb>"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
STATE="$HOME/.config/wallpaper"
|
||||
|
||||
# Save for next login
|
||||
echo "$TARGET" > "$STATE"
|
||||
|
||||
# Kill existing swaybg
|
||||
pkill -x swaybg 2>/dev/null || true
|
||||
sleep 0.1
|
||||
|
||||
# Apply
|
||||
if [[ "$TARGET" == \#* ]]; then
|
||||
swaybg -c "$TARGET" &
|
||||
else
|
||||
swaybg -i "$TARGET" -m fill &
|
||||
fi
|
||||
|
||||
disown
|
||||
13
apps/.local/bin/wallpaper-init
Executable file
|
|
@ -0,0 +1,13 @@
|
|||
#!/usr/bin/env bash
|
||||
STATE="$HOME/.config/wallpaper"
|
||||
if [[ -f "$STATE" ]]; then
|
||||
TARGET="$(cat "$STATE")"
|
||||
if [[ "$TARGET" == \#* ]]; then
|
||||
swaybg -c "$TARGET" &
|
||||
else
|
||||
swaybg -i "$TARGET" -m fill &
|
||||
fi
|
||||
else
|
||||
swaybg -c "#16161e" &
|
||||
fi
|
||||
disown
|
||||
BIN
apps/.local/share/icons/hicolor/256x256/apps/tailscale.png
Normal file
|
After Width: | Height: | Size: 8.7 KiB |
27
fish/.config/fish/conf.d/colors.fish
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
# Fish syntax highlighting — Mariana×Purple palette
|
||||
# Explicit hex values so terminal ANSI remapping doesn't break them
|
||||
|
||||
set -g fish_color_command 89DDFF # cyan — commands
|
||||
set -g fish_color_builtin C3A6FF # purple — builtins
|
||||
set -g fish_color_keyword C3A6FF # purple — keywords (if, for, etc.)
|
||||
set -g fish_color_param D4D4D4 # text — args
|
||||
set -g fish_color_option A6ACCD # subtext — flags (--foo)
|
||||
set -g fish_color_quote BAE67E # green — strings
|
||||
set -g fish_color_redirection FFD580 # yellow — > >> | etc.
|
||||
set -g fish_color_end FFD580 # yellow — ; &
|
||||
set -g fish_color_error F28779 # pink — errors / bad commands
|
||||
set -g fish_color_comment 626880 # muted — # comments
|
||||
set -g fish_color_operator C3A6FF # purple — operators
|
||||
set -g fish_color_escape FFD580 # yellow — \n \t etc.
|
||||
set -g fish_color_autosuggestion 4A4F6A # dim — ghost text
|
||||
set -g fish_color_selection --background=3A3F5C # visual selection bg
|
||||
set -g fish_color_search_match --background=3A3F5C
|
||||
set -g fish_color_valid_path --underline
|
||||
set -g fish_color_cancel F28779
|
||||
|
||||
# Pager (tab completion menu)
|
||||
set -g fish_pager_color_prefix C3A6FF --bold --underline
|
||||
set -g fish_pager_color_completion D4D4D4
|
||||
set -g fish_pager_color_description A6ACCD
|
||||
set -g fish_pager_color_progress A6ACCD --background=1E2030
|
||||
set -g fish_pager_color_selected_background --background=3A3F5C
|
||||
27
fish/.config/fish/config.fish
Executable file
|
|
@ -0,0 +1,27 @@
|
|||
if status is-interactive
|
||||
# Commands to run in interactive sessions can go here
|
||||
starship init fish | source
|
||||
end
|
||||
|
||||
fish_add_path /home/end/.spicetify
|
||||
|
||||
# pnpm
|
||||
set -gx PNPM_HOME "/home/end/.local/share/pnpm"
|
||||
if not string match -q -- $PNPM_HOME $PATH
|
||||
set -gx PATH "$PNPM_HOME" $PATH
|
||||
end
|
||||
# pnpm end
|
||||
|
||||
# terminal-wakatime setup
|
||||
set -gx PATH "$HOME/.wakatime" $PATH
|
||||
terminal-wakatime init fish | source
|
||||
|
||||
status --is-interactive; and . (fnm env --use-on-cd | psub)
|
||||
|
||||
# opencode
|
||||
fish_add_path /home/end/.opencode/bin
|
||||
|
||||
status --is-interactive; and rbenv init - fish | source
|
||||
~/.local/bin/mise activate fish | source
|
||||
|
||||
alias packettracer="QT_QPA_PLATFORM=xcb /usr/lib/packettracer/packettracer.AppImage"
|
||||
7
fish/.config/fish/fish_variables
Executable file
|
|
@ -0,0 +1,7 @@
|
|||
# This file contains fish universal variable definitions.
|
||||
# VERSION: 3.0
|
||||
SETUVAR __fish_initialized:4300
|
||||
SETUVAR _fisher_jorgebucaran_2F_fisher_files:\x7e/\x2econfig/fish/functions/fisher\x2efish\x1e\x7e/\x2econfig/fish/completions/fisher\x2efish
|
||||
SETUVAR _fisher_plugins:jorgebucaran/fisher
|
||||
SETUVAR _fisher_upgraded_to_4_4:\x1d
|
||||
SETUVAR fish_user_paths:/home/end/\x2elocal/bin\x1e/home/end/\x2eopencode/bin\x1e/home/end/\x2espicetify
|
||||
15
mullvad-tailscale.service
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
[Unit]
|
||||
Description=Mullvad + Tailscale coexistence rules
|
||||
After=tailscaled.service
|
||||
Wants=tailscaled.service
|
||||
|
||||
[Service]
|
||||
Type=oneshot
|
||||
RemainAfterExit=yes
|
||||
ExecStart=/usr/sbin/nft -f /home/end/Github/dotfiles/mullvad_tailscale.conf
|
||||
ExecStart=/usr/sbin/ip route add 100.64.0.0/10 dev tailscale0 table main
|
||||
ExecStop=/usr/sbin/nft delete table inet mullvad_tailscale
|
||||
ExecStop=/usr/sbin/ip route del 100.64.0.0/10 dev tailscale0 table main
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
8
mullvad_tailscale.conf
Normal file → Executable file
|
|
@ -1,9 +1,15 @@
|
|||
# Mullvad + Tailscale coexistence
|
||||
# Apply with:
|
||||
# sudo nft -f /home/end/Github/dotfiles/mullvad_tailscale.conf
|
||||
# sudo ip route add 100.64.0.0/10 dev tailscale0 table main
|
||||
# sudo systemctl restart tailscaled
|
||||
|
||||
table inet mullvad_tailscale {
|
||||
chain output {
|
||||
type route hook output priority 0; policy accept;
|
||||
ip daddr 100.64.0.0/10 ct mark set 0x00000f41 meta mark set 0x6d6f6c65;
|
||||
}
|
||||
chain input {
|
||||
chain input {
|
||||
type filter hook input priority -100; policy accept;
|
||||
ip saddr 100.64.0.0/10 ct mark set 0x00000f41 meta mark set 0x6d6f6c65;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1 +0,0 @@
|
|||
/etc/nftables.conf
|
||||
8
plasma/.config/QtProject.conf
Executable file
|
|
@ -0,0 +1,8 @@
|
|||
[FileDialog]
|
||||
history=file:///home/end/Downloads, file:///home/end, file:///home/end/Pictures/Screenshots
|
||||
lastVisited=file:///home/end/Pictures/Screenshots
|
||||
qtVersion=5.15.18
|
||||
shortcuts=file:, file:///home/end
|
||||
sidebarWidth=102
|
||||
treeViewHeader=@ByteArray(\0\0\0\xff\0\0\0\0\0\0\0\x1\0\0\0\x1\0\0\0\x3\x1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x2\x45\0\0\0\x4\x1\x1\0\0\0\0\0\0\0\0\0\0\0\0\0\0}\xff\xff\xff\xff\0\0\0\x81\0\0\0\0\0\0\0\x4\0\0\x1\x32\0\0\0\x1\0\0\0\0\0\0\0G\0\0\0\x1\0\0\0\0\0\0\0L\0\0\0\x1\0\0\0\0\0\0\0\x80\0\0\0\x1\0\0\0\0\0\0\x3\xe8\0\xff\xff\xff\xff)
|
||||
viewMode=Detail
|
||||
17
plasma/.config/Trolltech.conf
Executable file
|
|
@ -0,0 +1,17 @@
|
|||
[qt]
|
||||
GUIEffects=none
|
||||
KDE\contrast=7
|
||||
KWinPalette\activeBackground=#272c31
|
||||
KWinPalette\activeBlend=#fcfcfc
|
||||
KWinPalette\activeForeground=#fcfcfc
|
||||
KWinPalette\activeTitleBtnBg=#202326
|
||||
KWinPalette\frame=#202326
|
||||
KWinPalette\inactiveBackground=#202428
|
||||
KWinPalette\inactiveBlend=#a1a9b1
|
||||
KWinPalette\inactiveForeground=#a1a9b1
|
||||
KWinPalette\inactiveFrame=#202326
|
||||
KWinPalette\inactiveTitleBtnBg=#202326
|
||||
Palette\active=#fcfcfc, #292c30, #40464c, #33383c, #101112, #1c1e21, #fcfcfc, #ffffff, #fcfcfc, #141618, #202326, #0b0c0d, #6c53a6, #ffffff, #926ee4, #9b59b6, #1d1f22, #000000, #292c30, #fcfcfc, #a1a9b1, #6c53a6
|
||||
Palette\disabled=#686a6c, #272a2e, #3f454b, #32363b, #0f1012, #1a1d1f, #606263, #ffffff, #6d6f72, #131517, #1f2124, #0b0c0d, #1f2124, #686a6c, #3d325b, #402b4c, #1c1e20, #000000, #292c30, #fcfcfc, #42464a, #1f2124
|
||||
Palette\inactive=#fcfcfc, #292c30, #40464c, #33383c, #101112, #1c1e21, #fcfcfc, #ffffff, #fcfcfc, #141618, #202326, #0b0c0d, #362c50, #fcfcfc, #926ee4, #9b59b6, #1d1f22, #000000, #292c30, #fcfcfc, #a1a9b1, #362c50
|
||||
font="Noto Sans,10,-1,0,400,0,0,0,0,0,0,0,0,0,0,1"
|
||||
28
plasma/.config/gtk-3.0/assets/close-active.svg
Executable file
|
|
@ -0,0 +1,28 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg viewBox="0 0 50 50"
|
||||
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.2" baseProfile="tiny">
|
||||
<title>Qt SVG Document</title>
|
||||
<desc>Generated with Qt</desc>
|
||||
<defs>
|
||||
</defs>
|
||||
<g fill="none" stroke="black" stroke-width="1" fill-rule="evenodd" stroke-linecap="square" stroke-linejoin="bevel" >
|
||||
|
||||
<g fill="#6d2229" fill-opacity="1" stroke="none" transform="matrix(2.5,0,0,2.5,2.5,2.5)"
|
||||
font-family="Noto Sans" font-size="10" font-weight="400" font-style="normal"
|
||||
>
|
||||
<circle cx="9" cy="9" r="9"/>
|
||||
</g>
|
||||
|
||||
<g fill="none" stroke="#272c31" stroke-opacity="1" stroke-width="1.01" stroke-linecap="round" stroke-linejoin="miter" stroke-miterlimit="2" transform="matrix(2.5,0,0,2.5,2.5,2.5)"
|
||||
font-family="Noto Sans" font-size="10" font-weight="400" font-style="normal"
|
||||
>
|
||||
<polyline fill="none" vector-effect="none" points="5,5 13,13 " />
|
||||
<polyline fill="none" vector-effect="none" points="13,5 5,13 " />
|
||||
</g>
|
||||
|
||||
<g fill="none" stroke="#000000" stroke-opacity="1" stroke-width="1" stroke-linecap="square" stroke-linejoin="bevel" transform="matrix(1,0,0,1,0,0)"
|
||||
font-family="Noto Sans" font-size="10" font-weight="400" font-style="normal"
|
||||
>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.2 KiB |
28
plasma/.config/gtk-3.0/assets/close-backdrop-active.svg
Executable file
|
|
@ -0,0 +1,28 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg viewBox="0 0 50 50"
|
||||
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.2" baseProfile="tiny">
|
||||
<title>Qt SVG Document</title>
|
||||
<desc>Generated with Qt</desc>
|
||||
<defs>
|
||||
</defs>
|
||||
<g fill="none" stroke="black" stroke-width="1" fill-rule="evenodd" stroke-linecap="square" stroke-linejoin="bevel" >
|
||||
|
||||
<g fill="#6d2229" fill-opacity="1" stroke="none" transform="matrix(2.5,0,0,2.5,2.5,2.5)"
|
||||
font-family="Noto Sans" font-size="10" font-weight="400" font-style="normal"
|
||||
>
|
||||
<circle cx="9" cy="9" r="9"/>
|
||||
</g>
|
||||
|
||||
<g fill="none" stroke="#202428" stroke-opacity="1" stroke-width="1.01" stroke-linecap="round" stroke-linejoin="miter" stroke-miterlimit="2" transform="matrix(2.5,0,0,2.5,2.5,2.5)"
|
||||
font-family="Noto Sans" font-size="10" font-weight="400" font-style="normal"
|
||||
>
|
||||
<polyline fill="none" vector-effect="none" points="5,5 13,13 " />
|
||||
<polyline fill="none" vector-effect="none" points="13,5 5,13 " />
|
||||
</g>
|
||||
|
||||
<g fill="none" stroke="#000000" stroke-opacity="1" stroke-width="1" stroke-linecap="square" stroke-linejoin="bevel" transform="matrix(1,0,0,1,0,0)"
|
||||
font-family="Noto Sans" font-size="10" font-weight="400" font-style="normal"
|
||||
>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.2 KiB |
28
plasma/.config/gtk-3.0/assets/close-backdrop-hover.svg
Executable file
|
|
@ -0,0 +1,28 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg viewBox="0 0 50 50"
|
||||
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.2" baseProfile="tiny">
|
||||
<title>Qt SVG Document</title>
|
||||
<desc>Generated with Qt</desc>
|
||||
<defs>
|
||||
</defs>
|
||||
<g fill="none" stroke="black" stroke-width="1" fill-rule="evenodd" stroke-linecap="square" stroke-linejoin="bevel" >
|
||||
|
||||
<g fill="#da4453" fill-opacity="1" stroke="none" transform="matrix(2.5,0,0,2.5,2.5,2.5)"
|
||||
font-family="Noto Sans" font-size="10" font-weight="400" font-style="normal"
|
||||
>
|
||||
<circle cx="9" cy="9" r="9"/>
|
||||
</g>
|
||||
|
||||
<g fill="none" stroke="#202428" stroke-opacity="1" stroke-width="1.01" stroke-linecap="round" stroke-linejoin="miter" stroke-miterlimit="2" transform="matrix(2.5,0,0,2.5,2.5,2.5)"
|
||||
font-family="Noto Sans" font-size="10" font-weight="400" font-style="normal"
|
||||
>
|
||||
<polyline fill="none" vector-effect="none" points="5,5 13,13 " />
|
||||
<polyline fill="none" vector-effect="none" points="13,5 5,13 " />
|
||||
</g>
|
||||
|
||||
<g fill="none" stroke="#000000" stroke-opacity="1" stroke-width="1" stroke-linecap="square" stroke-linejoin="bevel" transform="matrix(1,0,0,1,0,0)"
|
||||
font-family="Noto Sans" font-size="10" font-weight="400" font-style="normal"
|
||||
>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.2 KiB |
22
plasma/.config/gtk-3.0/assets/close-backdrop-normal.svg
Executable file
|
|
@ -0,0 +1,22 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg viewBox="0 0 50 50"
|
||||
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.2" baseProfile="tiny">
|
||||
<title>Qt SVG Document</title>
|
||||
<desc>Generated with Qt</desc>
|
||||
<defs>
|
||||
</defs>
|
||||
<g fill="none" stroke="black" stroke-width="1" fill-rule="evenodd" stroke-linecap="square" stroke-linejoin="bevel" >
|
||||
|
||||
<g fill="none" stroke="#a1a9b1" stroke-opacity="1" stroke-width="1.01" stroke-linecap="round" stroke-linejoin="miter" stroke-miterlimit="2" transform="matrix(2.5,0,0,2.5,2.5,2.5)"
|
||||
font-family="Noto Sans" font-size="10" font-weight="400" font-style="normal"
|
||||
>
|
||||
<polyline fill="none" vector-effect="none" points="5,5 13,13 " />
|
||||
<polyline fill="none" vector-effect="none" points="13,5 5,13 " />
|
||||
</g>
|
||||
|
||||
<g fill="none" stroke="#000000" stroke-opacity="1" stroke-width="1" stroke-linecap="square" stroke-linejoin="bevel" transform="matrix(1,0,0,1,0,0)"
|
||||
font-family="Noto Sans" font-size="10" font-weight="400" font-style="normal"
|
||||
>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1 KiB |
28
plasma/.config/gtk-3.0/assets/close-hover.svg
Executable file
|
|
@ -0,0 +1,28 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg viewBox="0 0 50 50"
|
||||
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.2" baseProfile="tiny">
|
||||
<title>Qt SVG Document</title>
|
||||
<desc>Generated with Qt</desc>
|
||||
<defs>
|
||||
</defs>
|
||||
<g fill="none" stroke="black" stroke-width="1" fill-rule="evenodd" stroke-linecap="square" stroke-linejoin="bevel" >
|
||||
|
||||
<g fill="#ff98a2" fill-opacity="1" stroke="none" transform="matrix(2.5,0,0,2.5,2.5,2.5)"
|
||||
font-family="Noto Sans" font-size="10" font-weight="400" font-style="normal"
|
||||
>
|
||||
<circle cx="9" cy="9" r="9"/>
|
||||
</g>
|
||||
|
||||
<g fill="none" stroke="#272c31" stroke-opacity="1" stroke-width="1.01" stroke-linecap="round" stroke-linejoin="miter" stroke-miterlimit="2" transform="matrix(2.5,0,0,2.5,2.5,2.5)"
|
||||
font-family="Noto Sans" font-size="10" font-weight="400" font-style="normal"
|
||||
>
|
||||
<polyline fill="none" vector-effect="none" points="5,5 13,13 " />
|
||||
<polyline fill="none" vector-effect="none" points="13,5 5,13 " />
|
||||
</g>
|
||||
|
||||
<g fill="none" stroke="#000000" stroke-opacity="1" stroke-width="1" stroke-linecap="square" stroke-linejoin="bevel" transform="matrix(1,0,0,1,0,0)"
|
||||
font-family="Noto Sans" font-size="10" font-weight="400" font-style="normal"
|
||||
>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.2 KiB |
22
plasma/.config/gtk-3.0/assets/close-normal.svg
Executable file
|
|
@ -0,0 +1,22 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg viewBox="0 0 50 50"
|
||||
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.2" baseProfile="tiny">
|
||||
<title>Qt SVG Document</title>
|
||||
<desc>Generated with Qt</desc>
|
||||
<defs>
|
||||
</defs>
|
||||
<g fill="none" stroke="black" stroke-width="1" fill-rule="evenodd" stroke-linecap="square" stroke-linejoin="bevel" >
|
||||
|
||||
<g fill="none" stroke="#fcfcfc" stroke-opacity="1" stroke-width="1.01" stroke-linecap="round" stroke-linejoin="miter" stroke-miterlimit="2" transform="matrix(2.5,0,0,2.5,2.5,2.5)"
|
||||
font-family="Noto Sans" font-size="10" font-weight="400" font-style="normal"
|
||||
>
|
||||
<polyline fill="none" vector-effect="none" points="5,5 13,13 " />
|
||||
<polyline fill="none" vector-effect="none" points="13,5 5,13 " />
|
||||
</g>
|
||||
|
||||
<g fill="none" stroke="#000000" stroke-opacity="1" stroke-width="1" stroke-linecap="square" stroke-linejoin="bevel" transform="matrix(1,0,0,1,0,0)"
|
||||
font-family="Noto Sans" font-size="10" font-weight="400" font-style="normal"
|
||||
>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1 KiB |
27
plasma/.config/gtk-3.0/assets/maximize-active.svg
Executable file
|
|
@ -0,0 +1,27 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg viewBox="0 0 50 50"
|
||||
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.2" baseProfile="tiny">
|
||||
<title>Qt SVG Document</title>
|
||||
<desc>Generated with Qt</desc>
|
||||
<defs>
|
||||
</defs>
|
||||
<g fill="none" stroke="black" stroke-width="1" fill-rule="evenodd" stroke-linecap="square" stroke-linejoin="bevel" >
|
||||
|
||||
<g fill="#676a6e" fill-opacity="1" stroke="none" transform="matrix(2.5,0,0,2.5,2.5,2.5)"
|
||||
font-family="Noto Sans" font-size="10" font-weight="400" font-style="normal"
|
||||
>
|
||||
<circle cx="9" cy="9" r="9"/>
|
||||
</g>
|
||||
|
||||
<g fill="none" stroke="#272c31" stroke-opacity="1" stroke-width="1.01" stroke-linecap="round" stroke-linejoin="miter" stroke-miterlimit="2" transform="matrix(2.5,0,0,2.5,2.5,2.5)"
|
||||
font-family="Noto Sans" font-size="10" font-weight="400" font-style="normal"
|
||||
>
|
||||
<polyline fill="none" vector-effect="none" points="4,11 9,6 14,11 " />
|
||||
</g>
|
||||
|
||||
<g fill="none" stroke="#000000" stroke-opacity="1" stroke-width="1" stroke-linecap="square" stroke-linejoin="bevel" transform="matrix(1,0,0,1,0,0)"
|
||||
font-family="Noto Sans" font-size="10" font-weight="400" font-style="normal"
|
||||
>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.1 KiB |
27
plasma/.config/gtk-3.0/assets/maximize-backdrop-active.svg
Executable file
|
|
@ -0,0 +1,27 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg viewBox="0 0 50 50"
|
||||
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.2" baseProfile="tiny">
|
||||
<title>Qt SVG Document</title>
|
||||
<desc>Generated with Qt</desc>
|
||||
<defs>
|
||||
</defs>
|
||||
<g fill="none" stroke="black" stroke-width="1" fill-rule="evenodd" stroke-linecap="square" stroke-linejoin="bevel" >
|
||||
|
||||
<g fill="#474c51" fill-opacity="1" stroke="none" transform="matrix(2.5,0,0,2.5,2.5,2.5)"
|
||||
font-family="Noto Sans" font-size="10" font-weight="400" font-style="normal"
|
||||
>
|
||||
<circle cx="9" cy="9" r="9"/>
|
||||
</g>
|
||||
|
||||
<g fill="none" stroke="#202428" stroke-opacity="1" stroke-width="1.01" stroke-linecap="round" stroke-linejoin="miter" stroke-miterlimit="2" transform="matrix(2.5,0,0,2.5,2.5,2.5)"
|
||||
font-family="Noto Sans" font-size="10" font-weight="400" font-style="normal"
|
||||
>
|
||||
<polyline fill="none" vector-effect="none" points="4,11 9,6 14,11 " />
|
||||
</g>
|
||||
|
||||
<g fill="none" stroke="#000000" stroke-opacity="1" stroke-width="1" stroke-linecap="square" stroke-linejoin="bevel" transform="matrix(1,0,0,1,0,0)"
|
||||
font-family="Noto Sans" font-size="10" font-weight="400" font-style="normal"
|
||||
>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.1 KiB |
27
plasma/.config/gtk-3.0/assets/maximize-backdrop-hover.svg
Executable file
|
|
@ -0,0 +1,27 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg viewBox="0 0 50 50"
|
||||
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.2" baseProfile="tiny">
|
||||
<title>Qt SVG Document</title>
|
||||
<desc>Generated with Qt</desc>
|
||||
<defs>
|
||||
</defs>
|
||||
<g fill="none" stroke="black" stroke-width="1" fill-rule="evenodd" stroke-linecap="square" stroke-linejoin="bevel" >
|
||||
|
||||
<g fill="#a1a9b1" fill-opacity="1" stroke="none" transform="matrix(2.5,0,0,2.5,2.5,2.5)"
|
||||
font-family="Noto Sans" font-size="10" font-weight="400" font-style="normal"
|
||||
>
|
||||
<circle cx="9" cy="9" r="9"/>
|
||||
</g>
|
||||
|
||||
<g fill="none" stroke="#202428" stroke-opacity="1" stroke-width="1.01" stroke-linecap="round" stroke-linejoin="miter" stroke-miterlimit="2" transform="matrix(2.5,0,0,2.5,2.5,2.5)"
|
||||
font-family="Noto Sans" font-size="10" font-weight="400" font-style="normal"
|
||||
>
|
||||
<polyline fill="none" vector-effect="none" points="4,11 9,6 14,11 " />
|
||||
</g>
|
||||
|
||||
<g fill="none" stroke="#000000" stroke-opacity="1" stroke-width="1" stroke-linecap="square" stroke-linejoin="bevel" transform="matrix(1,0,0,1,0,0)"
|
||||
font-family="Noto Sans" font-size="10" font-weight="400" font-style="normal"
|
||||
>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.1 KiB |
21
plasma/.config/gtk-3.0/assets/maximize-backdrop-normal.svg
Executable file
|
|
@ -0,0 +1,21 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg viewBox="0 0 50 50"
|
||||
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.2" baseProfile="tiny">
|
||||
<title>Qt SVG Document</title>
|
||||
<desc>Generated with Qt</desc>
|
||||
<defs>
|
||||
</defs>
|
||||
<g fill="none" stroke="black" stroke-width="1" fill-rule="evenodd" stroke-linecap="square" stroke-linejoin="bevel" >
|
||||
|
||||
<g fill="none" stroke="#a1a9b1" stroke-opacity="1" stroke-width="1.01" stroke-linecap="round" stroke-linejoin="miter" stroke-miterlimit="2" transform="matrix(2.5,0,0,2.5,2.5,2.5)"
|
||||
font-family="Noto Sans" font-size="10" font-weight="400" font-style="normal"
|
||||
>
|
||||
<polyline fill="none" vector-effect="none" points="4,11 9,6 14,11 " />
|
||||
</g>
|
||||
|
||||
<g fill="none" stroke="#000000" stroke-opacity="1" stroke-width="1" stroke-linecap="square" stroke-linejoin="bevel" transform="matrix(1,0,0,1,0,0)"
|
||||
font-family="Noto Sans" font-size="10" font-weight="400" font-style="normal"
|
||||
>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 970 B |
27
plasma/.config/gtk-3.0/assets/maximize-hover.svg
Executable file
|
|
@ -0,0 +1,27 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg viewBox="0 0 50 50"
|
||||
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.2" baseProfile="tiny">
|
||||
<title>Qt SVG Document</title>
|
||||
<desc>Generated with Qt</desc>
|
||||
<defs>
|
||||
</defs>
|
||||
<g fill="none" stroke="black" stroke-width="1" fill-rule="evenodd" stroke-linecap="square" stroke-linejoin="bevel" >
|
||||
|
||||
<g fill="#fcfcfc" fill-opacity="1" stroke="none" transform="matrix(2.5,0,0,2.5,2.5,2.5)"
|
||||
font-family="Noto Sans" font-size="10" font-weight="400" font-style="normal"
|
||||
>
|
||||
<circle cx="9" cy="9" r="9"/>
|
||||
</g>
|
||||
|
||||
<g fill="none" stroke="#272c31" stroke-opacity="1" stroke-width="1.01" stroke-linecap="round" stroke-linejoin="miter" stroke-miterlimit="2" transform="matrix(2.5,0,0,2.5,2.5,2.5)"
|
||||
font-family="Noto Sans" font-size="10" font-weight="400" font-style="normal"
|
||||
>
|
||||
<polyline fill="none" vector-effect="none" points="4,11 9,6 14,11 " />
|
||||
</g>
|
||||
|
||||
<g fill="none" stroke="#000000" stroke-opacity="1" stroke-width="1" stroke-linecap="square" stroke-linejoin="bevel" transform="matrix(1,0,0,1,0,0)"
|
||||
font-family="Noto Sans" font-size="10" font-weight="400" font-style="normal"
|
||||
>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.1 KiB |
21
plasma/.config/gtk-3.0/assets/maximize-normal.svg
Executable file
|
|
@ -0,0 +1,21 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg viewBox="0 0 50 50"
|
||||
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.2" baseProfile="tiny">
|
||||
<title>Qt SVG Document</title>
|
||||
<desc>Generated with Qt</desc>
|
||||
<defs>
|
||||
</defs>
|
||||
<g fill="none" stroke="black" stroke-width="1" fill-rule="evenodd" stroke-linecap="square" stroke-linejoin="bevel" >
|
||||
|
||||
<g fill="none" stroke="#fcfcfc" stroke-opacity="1" stroke-width="1.01" stroke-linecap="round" stroke-linejoin="miter" stroke-miterlimit="2" transform="matrix(2.5,0,0,2.5,2.5,2.5)"
|
||||
font-family="Noto Sans" font-size="10" font-weight="400" font-style="normal"
|
||||
>
|
||||
<polyline fill="none" vector-effect="none" points="4,11 9,6 14,11 " />
|
||||
</g>
|
||||
|
||||
<g fill="none" stroke="#000000" stroke-opacity="1" stroke-width="1" stroke-linecap="square" stroke-linejoin="bevel" transform="matrix(1,0,0,1,0,0)"
|
||||
font-family="Noto Sans" font-size="10" font-weight="400" font-style="normal"
|
||||
>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 970 B |
27
plasma/.config/gtk-3.0/assets/maximized-active.svg
Executable file
|
|
@ -0,0 +1,27 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg viewBox="0 0 50 50"
|
||||
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.2" baseProfile="tiny">
|
||||
<title>Qt SVG Document</title>
|
||||
<desc>Generated with Qt</desc>
|
||||
<defs>
|
||||
</defs>
|
||||
<g fill="none" stroke="black" stroke-width="1" fill-rule="evenodd" stroke-linecap="square" stroke-linejoin="bevel" >
|
||||
|
||||
<g fill="#676a6e" fill-opacity="1" stroke="none" transform="matrix(2.5,0,0,2.5,2.5,2.5)"
|
||||
font-family="Noto Sans" font-size="10" font-weight="400" font-style="normal"
|
||||
>
|
||||
<circle cx="9" cy="9" r="9"/>
|
||||
</g>
|
||||
|
||||
<g fill="none" stroke="#272c31" stroke-opacity="1" stroke-width="1.01" stroke-linecap="round" stroke-linejoin="round" transform="matrix(2.5,0,0,2.5,2.5,2.5)"
|
||||
font-family="Noto Sans" font-size="10" font-weight="400" font-style="normal"
|
||||
>
|
||||
<path vector-effect="none" fill-rule="evenodd" d="M4,9 L9,4 L14,9 L9,14 L4,9"/>
|
||||
</g>
|
||||
|
||||
<g fill="none" stroke="#000000" stroke-opacity="1" stroke-width="1" stroke-linecap="square" stroke-linejoin="bevel" transform="matrix(1,0,0,1,0,0)"
|
||||
font-family="Noto Sans" font-size="10" font-weight="400" font-style="normal"
|
||||
>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.1 KiB |
27
plasma/.config/gtk-3.0/assets/maximized-backdrop-active.svg
Executable file
|
|
@ -0,0 +1,27 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg viewBox="0 0 50 50"
|
||||
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.2" baseProfile="tiny">
|
||||
<title>Qt SVG Document</title>
|
||||
<desc>Generated with Qt</desc>
|
||||
<defs>
|
||||
</defs>
|
||||
<g fill="none" stroke="black" stroke-width="1" fill-rule="evenodd" stroke-linecap="square" stroke-linejoin="bevel" >
|
||||
|
||||
<g fill="#474c51" fill-opacity="1" stroke="none" transform="matrix(2.5,0,0,2.5,2.5,2.5)"
|
||||
font-family="Noto Sans" font-size="10" font-weight="400" font-style="normal"
|
||||
>
|
||||
<circle cx="9" cy="9" r="9"/>
|
||||
</g>
|
||||
|
||||
<g fill="none" stroke="#202428" stroke-opacity="1" stroke-width="1.01" stroke-linecap="round" stroke-linejoin="round" transform="matrix(2.5,0,0,2.5,2.5,2.5)"
|
||||
font-family="Noto Sans" font-size="10" font-weight="400" font-style="normal"
|
||||
>
|
||||
<path vector-effect="none" fill-rule="evenodd" d="M4,9 L9,4 L14,9 L9,14 L4,9"/>
|
||||
</g>
|
||||
|
||||
<g fill="none" stroke="#000000" stroke-opacity="1" stroke-width="1" stroke-linecap="square" stroke-linejoin="bevel" transform="matrix(1,0,0,1,0,0)"
|
||||
font-family="Noto Sans" font-size="10" font-weight="400" font-style="normal"
|
||||
>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.1 KiB |
27
plasma/.config/gtk-3.0/assets/maximized-backdrop-hover.svg
Executable file
|
|
@ -0,0 +1,27 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg viewBox="0 0 50 50"
|
||||
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.2" baseProfile="tiny">
|
||||
<title>Qt SVG Document</title>
|
||||
<desc>Generated with Qt</desc>
|
||||
<defs>
|
||||
</defs>
|
||||
<g fill="none" stroke="black" stroke-width="1" fill-rule="evenodd" stroke-linecap="square" stroke-linejoin="bevel" >
|
||||
|
||||
<g fill="#a1a9b1" fill-opacity="1" stroke="none" transform="matrix(2.5,0,0,2.5,2.5,2.5)"
|
||||
font-family="Noto Sans" font-size="10" font-weight="400" font-style="normal"
|
||||
>
|
||||
<circle cx="9" cy="9" r="9"/>
|
||||
</g>
|
||||
|
||||
<g fill="none" stroke="#202428" stroke-opacity="1" stroke-width="1.01" stroke-linecap="round" stroke-linejoin="round" transform="matrix(2.5,0,0,2.5,2.5,2.5)"
|
||||
font-family="Noto Sans" font-size="10" font-weight="400" font-style="normal"
|
||||
>
|
||||
<path vector-effect="none" fill-rule="evenodd" d="M4,9 L9,4 L14,9 L9,14 L4,9"/>
|
||||
</g>
|
||||
|
||||
<g fill="none" stroke="#000000" stroke-opacity="1" stroke-width="1" stroke-linecap="square" stroke-linejoin="bevel" transform="matrix(1,0,0,1,0,0)"
|
||||
font-family="Noto Sans" font-size="10" font-weight="400" font-style="normal"
|
||||
>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.1 KiB |
21
plasma/.config/gtk-3.0/assets/maximized-backdrop-normal.svg
Executable file
|
|
@ -0,0 +1,21 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg viewBox="0 0 50 50"
|
||||
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.2" baseProfile="tiny">
|
||||
<title>Qt SVG Document</title>
|
||||
<desc>Generated with Qt</desc>
|
||||
<defs>
|
||||
</defs>
|
||||
<g fill="none" stroke="black" stroke-width="1" fill-rule="evenodd" stroke-linecap="square" stroke-linejoin="bevel" >
|
||||
|
||||
<g fill="none" stroke="#a1a9b1" stroke-opacity="1" stroke-width="1.01" stroke-linecap="round" stroke-linejoin="round" transform="matrix(2.5,0,0,2.5,2.5,2.5)"
|
||||
font-family="Noto Sans" font-size="10" font-weight="400" font-style="normal"
|
||||
>
|
||||
<path vector-effect="none" fill-rule="evenodd" d="M4,9 L9,4 L14,9 L9,14 L4,9"/>
|
||||
</g>
|
||||
|
||||
<g fill="none" stroke="#000000" stroke-opacity="1" stroke-width="1" stroke-linecap="square" stroke-linejoin="bevel" transform="matrix(1,0,0,1,0,0)"
|
||||
font-family="Noto Sans" font-size="10" font-weight="400" font-style="normal"
|
||||
>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 957 B |
27
plasma/.config/gtk-3.0/assets/maximized-hover.svg
Executable file
|
|
@ -0,0 +1,27 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg viewBox="0 0 50 50"
|
||||
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.2" baseProfile="tiny">
|
||||
<title>Qt SVG Document</title>
|
||||
<desc>Generated with Qt</desc>
|
||||
<defs>
|
||||
</defs>
|
||||
<g fill="none" stroke="black" stroke-width="1" fill-rule="evenodd" stroke-linecap="square" stroke-linejoin="bevel" >
|
||||
|
||||
<g fill="#fcfcfc" fill-opacity="1" stroke="none" transform="matrix(2.5,0,0,2.5,2.5,2.5)"
|
||||
font-family="Noto Sans" font-size="10" font-weight="400" font-style="normal"
|
||||
>
|
||||
<circle cx="9" cy="9" r="9"/>
|
||||
</g>
|
||||
|
||||
<g fill="none" stroke="#272c31" stroke-opacity="1" stroke-width="1.01" stroke-linecap="round" stroke-linejoin="round" transform="matrix(2.5,0,0,2.5,2.5,2.5)"
|
||||
font-family="Noto Sans" font-size="10" font-weight="400" font-style="normal"
|
||||
>
|
||||
<path vector-effect="none" fill-rule="evenodd" d="M4,9 L9,4 L14,9 L9,14 L4,9"/>
|
||||
</g>
|
||||
|
||||
<g fill="none" stroke="#000000" stroke-opacity="1" stroke-width="1" stroke-linecap="square" stroke-linejoin="bevel" transform="matrix(1,0,0,1,0,0)"
|
||||
font-family="Noto Sans" font-size="10" font-weight="400" font-style="normal"
|
||||
>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.1 KiB |
21
plasma/.config/gtk-3.0/assets/maximized-normal.svg
Executable file
|
|
@ -0,0 +1,21 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg viewBox="0 0 50 50"
|
||||
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.2" baseProfile="tiny">
|
||||
<title>Qt SVG Document</title>
|
||||
<desc>Generated with Qt</desc>
|
||||
<defs>
|
||||
</defs>
|
||||
<g fill="none" stroke="black" stroke-width="1" fill-rule="evenodd" stroke-linecap="square" stroke-linejoin="bevel" >
|
||||
|
||||
<g fill="none" stroke="#fcfcfc" stroke-opacity="1" stroke-width="1.01" stroke-linecap="round" stroke-linejoin="round" transform="matrix(2.5,0,0,2.5,2.5,2.5)"
|
||||
font-family="Noto Sans" font-size="10" font-weight="400" font-style="normal"
|
||||
>
|
||||
<path vector-effect="none" fill-rule="evenodd" d="M4,9 L9,4 L14,9 L9,14 L4,9"/>
|
||||
</g>
|
||||
|
||||
<g fill="none" stroke="#000000" stroke-opacity="1" stroke-width="1" stroke-linecap="square" stroke-linejoin="bevel" transform="matrix(1,0,0,1,0,0)"
|
||||
font-family="Noto Sans" font-size="10" font-weight="400" font-style="normal"
|
||||
>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 957 B |
27
plasma/.config/gtk-3.0/assets/minimize-active.svg
Executable file
|
|
@ -0,0 +1,27 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg viewBox="0 0 50 50"
|
||||
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.2" baseProfile="tiny">
|
||||
<title>Qt SVG Document</title>
|
||||
<desc>Generated with Qt</desc>
|
||||
<defs>
|
||||
</defs>
|
||||
<g fill="none" stroke="black" stroke-width="1" fill-rule="evenodd" stroke-linecap="square" stroke-linejoin="bevel" >
|
||||
|
||||
<g fill="#676a6e" fill-opacity="1" stroke="none" transform="matrix(2.5,0,0,2.5,2.5,2.5)"
|
||||
font-family="Noto Sans" font-size="10" font-weight="400" font-style="normal"
|
||||
>
|
||||
<circle cx="9" cy="9" r="9"/>
|
||||
</g>
|
||||
|
||||
<g fill="none" stroke="#272c31" stroke-opacity="1" stroke-width="1.01" stroke-linecap="round" stroke-linejoin="miter" stroke-miterlimit="2" transform="matrix(2.5,0,0,2.5,2.5,2.5)"
|
||||
font-family="Noto Sans" font-size="10" font-weight="400" font-style="normal"
|
||||
>
|
||||
<polyline fill="none" vector-effect="none" points="4,7 9,12 14,7 " />
|
||||
</g>
|
||||
|
||||
<g fill="none" stroke="#000000" stroke-opacity="1" stroke-width="1" stroke-linecap="square" stroke-linejoin="bevel" transform="matrix(1,0,0,1,0,0)"
|
||||
font-family="Noto Sans" font-size="10" font-weight="400" font-style="normal"
|
||||
>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.1 KiB |
27
plasma/.config/gtk-3.0/assets/minimize-backdrop-active.svg
Executable file
|
|
@ -0,0 +1,27 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg viewBox="0 0 50 50"
|
||||
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.2" baseProfile="tiny">
|
||||
<title>Qt SVG Document</title>
|
||||
<desc>Generated with Qt</desc>
|
||||
<defs>
|
||||
</defs>
|
||||
<g fill="none" stroke="black" stroke-width="1" fill-rule="evenodd" stroke-linecap="square" stroke-linejoin="bevel" >
|
||||
|
||||
<g fill="#474c51" fill-opacity="1" stroke="none" transform="matrix(2.5,0,0,2.5,2.5,2.5)"
|
||||
font-family="Noto Sans" font-size="10" font-weight="400" font-style="normal"
|
||||
>
|
||||
<circle cx="9" cy="9" r="9"/>
|
||||
</g>
|
||||
|
||||
<g fill="none" stroke="#202428" stroke-opacity="1" stroke-width="1.01" stroke-linecap="round" stroke-linejoin="miter" stroke-miterlimit="2" transform="matrix(2.5,0,0,2.5,2.5,2.5)"
|
||||
font-family="Noto Sans" font-size="10" font-weight="400" font-style="normal"
|
||||
>
|
||||
<polyline fill="none" vector-effect="none" points="4,7 9,12 14,7 " />
|
||||
</g>
|
||||
|
||||
<g fill="none" stroke="#000000" stroke-opacity="1" stroke-width="1" stroke-linecap="square" stroke-linejoin="bevel" transform="matrix(1,0,0,1,0,0)"
|
||||
font-family="Noto Sans" font-size="10" font-weight="400" font-style="normal"
|
||||
>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.1 KiB |
27
plasma/.config/gtk-3.0/assets/minimize-backdrop-hover.svg
Executable file
|
|
@ -0,0 +1,27 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg viewBox="0 0 50 50"
|
||||
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.2" baseProfile="tiny">
|
||||
<title>Qt SVG Document</title>
|
||||
<desc>Generated with Qt</desc>
|
||||
<defs>
|
||||
</defs>
|
||||
<g fill="none" stroke="black" stroke-width="1" fill-rule="evenodd" stroke-linecap="square" stroke-linejoin="bevel" >
|
||||
|
||||
<g fill="#a1a9b1" fill-opacity="1" stroke="none" transform="matrix(2.5,0,0,2.5,2.5,2.5)"
|
||||
font-family="Noto Sans" font-size="10" font-weight="400" font-style="normal"
|
||||
>
|
||||
<circle cx="9" cy="9" r="9"/>
|
||||
</g>
|
||||
|
||||
<g fill="none" stroke="#202428" stroke-opacity="1" stroke-width="1.01" stroke-linecap="round" stroke-linejoin="miter" stroke-miterlimit="2" transform="matrix(2.5,0,0,2.5,2.5,2.5)"
|
||||
font-family="Noto Sans" font-size="10" font-weight="400" font-style="normal"
|
||||
>
|
||||
<polyline fill="none" vector-effect="none" points="4,7 9,12 14,7 " />
|
||||
</g>
|
||||
|
||||
<g fill="none" stroke="#000000" stroke-opacity="1" stroke-width="1" stroke-linecap="square" stroke-linejoin="bevel" transform="matrix(1,0,0,1,0,0)"
|
||||
font-family="Noto Sans" font-size="10" font-weight="400" font-style="normal"
|
||||
>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.1 KiB |
21
plasma/.config/gtk-3.0/assets/minimize-backdrop-normal.svg
Executable file
|
|
@ -0,0 +1,21 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg viewBox="0 0 50 50"
|
||||
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.2" baseProfile="tiny">
|
||||
<title>Qt SVG Document</title>
|
||||
<desc>Generated with Qt</desc>
|
||||
<defs>
|
||||
</defs>
|
||||
<g fill="none" stroke="black" stroke-width="1" fill-rule="evenodd" stroke-linecap="square" stroke-linejoin="bevel" >
|
||||
|
||||
<g fill="none" stroke="#a1a9b1" stroke-opacity="1" stroke-width="1.01" stroke-linecap="round" stroke-linejoin="miter" stroke-miterlimit="2" transform="matrix(2.5,0,0,2.5,2.5,2.5)"
|
||||
font-family="Noto Sans" font-size="10" font-weight="400" font-style="normal"
|
||||
>
|
||||
<polyline fill="none" vector-effect="none" points="4,7 9,12 14,7 " />
|
||||
</g>
|
||||
|
||||
<g fill="none" stroke="#000000" stroke-opacity="1" stroke-width="1" stroke-linecap="square" stroke-linejoin="bevel" transform="matrix(1,0,0,1,0,0)"
|
||||
font-family="Noto Sans" font-size="10" font-weight="400" font-style="normal"
|
||||
>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 969 B |
27
plasma/.config/gtk-3.0/assets/minimize-hover.svg
Executable file
|
|
@ -0,0 +1,27 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg viewBox="0 0 50 50"
|
||||
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.2" baseProfile="tiny">
|
||||
<title>Qt SVG Document</title>
|
||||
<desc>Generated with Qt</desc>
|
||||
<defs>
|
||||
</defs>
|
||||
<g fill="none" stroke="black" stroke-width="1" fill-rule="evenodd" stroke-linecap="square" stroke-linejoin="bevel" >
|
||||
|
||||
<g fill="#fcfcfc" fill-opacity="1" stroke="none" transform="matrix(2.5,0,0,2.5,2.5,2.5)"
|
||||
font-family="Noto Sans" font-size="10" font-weight="400" font-style="normal"
|
||||
>
|
||||
<circle cx="9" cy="9" r="9"/>
|
||||
</g>
|
||||
|
||||
<g fill="none" stroke="#272c31" stroke-opacity="1" stroke-width="1.01" stroke-linecap="round" stroke-linejoin="miter" stroke-miterlimit="2" transform="matrix(2.5,0,0,2.5,2.5,2.5)"
|
||||
font-family="Noto Sans" font-size="10" font-weight="400" font-style="normal"
|
||||
>
|
||||
<polyline fill="none" vector-effect="none" points="4,7 9,12 14,7 " />
|
||||
</g>
|
||||
|
||||
<g fill="none" stroke="#000000" stroke-opacity="1" stroke-width="1" stroke-linecap="square" stroke-linejoin="bevel" transform="matrix(1,0,0,1,0,0)"
|
||||
font-family="Noto Sans" font-size="10" font-weight="400" font-style="normal"
|
||||
>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.1 KiB |
21
plasma/.config/gtk-3.0/assets/minimize-normal.svg
Executable file
|
|
@ -0,0 +1,21 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg viewBox="0 0 50 50"
|
||||
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.2" baseProfile="tiny">
|
||||
<title>Qt SVG Document</title>
|
||||
<desc>Generated with Qt</desc>
|
||||
<defs>
|
||||
</defs>
|
||||
<g fill="none" stroke="black" stroke-width="1" fill-rule="evenodd" stroke-linecap="square" stroke-linejoin="bevel" >
|
||||
|
||||
<g fill="none" stroke="#fcfcfc" stroke-opacity="1" stroke-width="1.01" stroke-linecap="round" stroke-linejoin="miter" stroke-miterlimit="2" transform="matrix(2.5,0,0,2.5,2.5,2.5)"
|
||||
font-family="Noto Sans" font-size="10" font-weight="400" font-style="normal"
|
||||
>
|
||||
<polyline fill="none" vector-effect="none" points="4,7 9,12 14,7 " />
|
||||
</g>
|
||||
|
||||
<g fill="none" stroke="#000000" stroke-opacity="1" stroke-width="1" stroke-linecap="square" stroke-linejoin="bevel" transform="matrix(1,0,0,1,0,0)"
|
||||
font-family="Noto Sans" font-size="10" font-weight="400" font-style="normal"
|
||||
>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 969 B |
84
plasma/.config/gtk-3.0/colors.css
Executable file
|
|
@ -0,0 +1,84 @@
|
|||
@define-color borders_breeze #57595c;
|
||||
@define-color content_view_bg_breeze #141618;
|
||||
@define-color error_color_backdrop_breeze #da4453;
|
||||
@define-color error_color_breeze #da4453;
|
||||
@define-color error_color_insensitive_backdrop_breeze #55242b;
|
||||
@define-color error_color_insensitive_breeze #55242b;
|
||||
@define-color insensitive_base_color_breeze #131517;
|
||||
@define-color insensitive_base_fg_color_breeze #606263;
|
||||
@define-color insensitive_bg_color_breeze #1f2124;
|
||||
@define-color insensitive_borders_breeze #313336;
|
||||
@define-color insensitive_fg_color_breeze #686a6c;
|
||||
@define-color insensitive_selected_bg_color_breeze #1f2124;
|
||||
@define-color insensitive_selected_fg_color_breeze #686a6c;
|
||||
@define-color insensitive_unfocused_bg_color_breeze #1f2124;
|
||||
@define-color insensitive_unfocused_fg_color_breeze #686a6c;
|
||||
@define-color insensitive_unfocused_selected_bg_color_breeze #1f2124;
|
||||
@define-color insensitive_unfocused_selected_fg_color_breeze #686a6c;
|
||||
@define-color link_color_breeze #926ee4;
|
||||
@define-color link_visited_color_breeze #9b59b6;
|
||||
@define-color success_color_backdrop_breeze #27ae60;
|
||||
@define-color success_color_breeze #27ae60;
|
||||
@define-color success_color_insensitive_backdrop_breeze #19482f;
|
||||
@define-color success_color_insensitive_breeze #19482f;
|
||||
@define-color theme_base_color_breeze #141618;
|
||||
@define-color theme_bg_color_breeze #202326;
|
||||
@define-color theme_button_background_backdrop_breeze #292c30;
|
||||
@define-color theme_button_background_backdrop_insensitive_breeze #272a2e;
|
||||
@define-color theme_button_background_insensitive_breeze #272a2e;
|
||||
@define-color theme_button_background_normal_breeze #292c30;
|
||||
@define-color theme_button_decoration_focus_backdrop_breeze #926ee4;
|
||||
@define-color theme_button_decoration_focus_backdrop_insensitive_breeze #4a406a;
|
||||
@define-color theme_button_decoration_focus_breeze #926ee4;
|
||||
@define-color theme_button_decoration_focus_insensitive_breeze #4a406a;
|
||||
@define-color theme_button_decoration_hover_backdrop_breeze #926ee4;
|
||||
@define-color theme_button_decoration_hover_backdrop_insensitive_breeze #4a406a;
|
||||
@define-color theme_button_decoration_hover_breeze #926ee4;
|
||||
@define-color theme_button_decoration_hover_insensitive_breeze #4a406a;
|
||||
@define-color theme_button_foreground_active_backdrop_breeze #fcfcfc;
|
||||
@define-color theme_button_foreground_active_backdrop_insensitive_breeze #686a6c;
|
||||
@define-color theme_button_foreground_active_breeze #ffffff;
|
||||
@define-color theme_button_foreground_active_insensitive_breeze #686a6c;
|
||||
@define-color theme_button_foreground_backdrop_breeze #fcfcfc;
|
||||
@define-color theme_button_foreground_backdrop_insensitive_breeze #6d6f72;
|
||||
@define-color theme_button_foreground_insensitive_breeze #6d6f72;
|
||||
@define-color theme_button_foreground_normal_breeze #fcfcfc;
|
||||
@define-color theme_fg_color_breeze #fcfcfc;
|
||||
@define-color theme_header_background_backdrop_breeze #202326;
|
||||
@define-color theme_header_background_breeze #292c30;
|
||||
@define-color theme_header_background_light_breeze #202326;
|
||||
@define-color theme_header_foreground_backdrop_breeze #fcfcfc;
|
||||
@define-color theme_header_foreground_breeze #fcfcfc;
|
||||
@define-color theme_header_foreground_insensitive_backdrop_breeze #fcfcfc;
|
||||
@define-color theme_header_foreground_insensitive_breeze #fcfcfc;
|
||||
@define-color theme_hovering_selected_bg_color_breeze #926ee4;
|
||||
@define-color theme_selected_bg_color_breeze #6c53a6;
|
||||
@define-color theme_selected_fg_color_breeze #ffffff;
|
||||
@define-color theme_text_color_breeze #fcfcfc;
|
||||
@define-color theme_titlebar_background_backdrop_breeze #202326;
|
||||
@define-color theme_titlebar_background_breeze #292c30;
|
||||
@define-color theme_titlebar_background_light_breeze #202326;
|
||||
@define-color theme_titlebar_foreground_backdrop_breeze #fcfcfc;
|
||||
@define-color theme_titlebar_foreground_breeze #fcfcfc;
|
||||
@define-color theme_titlebar_foreground_insensitive_backdrop_breeze #fcfcfc;
|
||||
@define-color theme_titlebar_foreground_insensitive_breeze #fcfcfc;
|
||||
@define-color theme_unfocused_base_color_breeze #141618;
|
||||
@define-color theme_unfocused_bg_color_breeze #202326;
|
||||
@define-color theme_unfocused_fg_color_breeze #fcfcfc;
|
||||
@define-color theme_unfocused_selected_bg_color_alt_breeze #362c50;
|
||||
@define-color theme_unfocused_selected_bg_color_breeze #362c50;
|
||||
@define-color theme_unfocused_selected_fg_color_breeze #fcfcfc;
|
||||
@define-color theme_unfocused_text_color_breeze #fcfcfc;
|
||||
@define-color theme_unfocused_view_bg_color_breeze #131517;
|
||||
@define-color theme_unfocused_view_text_color_breeze #606263;
|
||||
@define-color theme_view_active_decoration_color_breeze #926ee4;
|
||||
@define-color theme_view_hover_decoration_color_breeze #926ee4;
|
||||
@define-color tooltip_background_breeze #292c30;
|
||||
@define-color tooltip_border_breeze #5e6063;
|
||||
@define-color tooltip_text_breeze #fcfcfc;
|
||||
@define-color unfocused_borders_breeze #57595c;
|
||||
@define-color unfocused_insensitive_borders_breeze #313336;
|
||||
@define-color warning_color_backdrop_breeze #f67400;
|
||||
@define-color warning_color_breeze #f67400;
|
||||
@define-color warning_color_insensitive_backdrop_breeze #5e340f;
|
||||
@define-color warning_color_insensitive_breeze #5e340f;
|
||||
1
plasma/.config/gtk-3.0/gtk.css
Executable file
|
|
@ -0,0 +1 @@
|
|||
@import 'colors.css';
|
||||
18
plasma/.config/gtk-3.0/settings.ini
Executable file
|
|
@ -0,0 +1,18 @@
|
|||
[Settings]
|
||||
gtk-application-prefer-dark-theme=true
|
||||
gtk-button-images=true
|
||||
gtk-cursor-blink=true
|
||||
gtk-cursor-blink-time=1000
|
||||
gtk-cursor-theme-name=breeze_cursors
|
||||
gtk-cursor-theme-size=24
|
||||
gtk-decoration-layout=icon:minimize,maximize,close
|
||||
gtk-enable-animations=true
|
||||
gtk-font-name=Noto Sans, 10
|
||||
gtk-icon-theme-name=breeze-dark
|
||||
gtk-menu-images=true
|
||||
gtk-modules=colorreload-gtk-module:window-decorations-gtk-module
|
||||
gtk-primary-button-warps-slider=true
|
||||
gtk-sound-theme-name=ocean
|
||||
gtk-theme-name=Breeze
|
||||
gtk-toolbar-style=3
|
||||
gtk-xft-dpi=98304
|
||||
71
plasma/.config/gtk-3.0/window_decorations.css
Executable file
|
|
@ -0,0 +1,71 @@
|
|||
headerbar button.titlebutton.close, .titlebar button.titlebutton.close {
|
||||
background-image: url("assets/close-normal.svg"); }
|
||||
|
||||
headerbar button.titlebutton.close:hover, .titlebar button.titlebutton.close:hover {
|
||||
background-image: url("assets/close-hover.svg"); }
|
||||
|
||||
headerbar button.titlebutton.close:active, .titlebar button.titlebutton.close:active {
|
||||
background-image: url("assets/close-active.svg"); }
|
||||
|
||||
headerbar button.titlebutton.close:backdrop, .titlebar button.titlebutton.close:backdrop {
|
||||
background-image: url("assets/close-backdrop-normal.svg"); }
|
||||
|
||||
headerbar button.titlebutton.close:backdrop:hover, .titlebar button.titlebutton.close:backdrop:hover {
|
||||
background-image: url("assets/close-backdrop-hover.svg"); }
|
||||
|
||||
headerbar button.titlebutton.close:backdrop:active, .titlebar button.titlebutton.close:backdrop:active {
|
||||
background-image: url("assets/close-backdrop-active.svg"); }
|
||||
|
||||
headerbar button.titlebutton.maximize, .titlebar button.titlebutton.maximize {
|
||||
background-image: url("assets/maximize-normal.svg"); }
|
||||
|
||||
headerbar button.titlebutton.maximize:hover, .titlebar button.titlebutton.maximize:hover {
|
||||
background-image: url("assets/maximize-hover.svg"); }
|
||||
|
||||
headerbar button.titlebutton.maximize:active, .titlebar button.titlebutton.maximize:active {
|
||||
background-image: url("assets/maximize-active.svg"); }
|
||||
|
||||
headerbar button.titlebutton.maximize:backdrop, .titlebar button.titlebutton.maximize:backdrop {
|
||||
background-image: url("assets/maximize-backdrop-normal.svg"); }
|
||||
|
||||
headerbar button.titlebutton.maximize:backdrop:hover, .titlebar button.titlebutton.maximize:backdrop:hover {
|
||||
background-image: url("assets/maximize-backdrop-hover.svg"); }
|
||||
|
||||
headerbar button.titlebutton.maximize:backdrop:active, .titlebar button.titlebutton.maximize:backdrop:active {
|
||||
background-image: url("assets/maximize-backdrop-active.svg"); }
|
||||
|
||||
headerbar button.titlebutton.minimize, .titlebar button.titlebutton.minimize {
|
||||
background-image: url("assets/minimize-normal.svg"); }
|
||||
|
||||
headerbar button.titlebutton.minimize:hover, .titlebar button.titlebutton.minimize:hover {
|
||||
background-image: url("assets/minimize-hover.svg"); }
|
||||
|
||||
headerbar button.titlebutton.minimize:active, .titlebar button.titlebutton.minimize:active {
|
||||
background-image: url("assets/minimize-active.svg"); }
|
||||
|
||||
headerbar button.titlebutton.minimize:backdrop, .titlebar button.titlebutton.minimize:backdrop {
|
||||
background-image: url("assets/minimize-backdrop-normal.svg"); }
|
||||
|
||||
headerbar button.titlebutton.minimize:backdrop:hover, .titlebar button.titlebutton.minimize:backdrop:hover {
|
||||
background-image: url("assets/minimize-backdrop-hover.svg"); }
|
||||
|
||||
headerbar button.titlebutton.minimize:backdrop:active, .titlebar button.titlebutton.minimize:backdrop:active {
|
||||
background-image: url("assets/minimize-backdrop-active.svg"); }
|
||||
|
||||
.maximized headerbar button.titlebutton.maximize, .maximized .titlebar button.titlebutton.maximize {
|
||||
background-image: url("assets/maximized-normal.svg"); }
|
||||
|
||||
.maximized headerbar button.titlebutton.maximize:hover, .maximized .titlebar button.titlebutton.maximize:hover {
|
||||
background-image: url("assets/maximized-hover.svg"); }
|
||||
|
||||
.maximized headerbar button.titlebutton.maximize:active, .maximized .titlebar button.titlebutton.maximize:active {
|
||||
background-image: url("assets/maximized-active.svg"); }
|
||||
|
||||
.maximized headerbar button.titlebutton.maximize:backdrop, .maximized .titlebar button.titlebutton.maximize:backdrop {
|
||||
background-image: url("assets/maximized-backdrop-normal.svg"); }
|
||||
|
||||
.maximized headerbar button.titlebutton.maximize:backdrop:hover, .maximized .titlebar button.titlebutton.maximize:backdrop:hover {
|
||||
background-image: url("assets/maximized-backdrop-hover.svg"); }
|
||||
|
||||
.maximized headerbar button.titlebutton.maximize:backdrop:active, .maximized .titlebar button.titlebutton.maximize:backdrop:active {
|
||||
background-image: url("assets/maximized-backdrop-active.svg"); }
|
||||
84
plasma/.config/gtk-4.0/colors.css
Executable file
|
|
@ -0,0 +1,84 @@
|
|||
@define-color borders_breeze #57595c;
|
||||
@define-color content_view_bg_breeze #141618;
|
||||
@define-color error_color_backdrop_breeze #da4453;
|
||||
@define-color error_color_breeze #da4453;
|
||||
@define-color error_color_insensitive_backdrop_breeze #55242b;
|
||||
@define-color error_color_insensitive_breeze #55242b;
|
||||
@define-color insensitive_base_color_breeze #131517;
|
||||
@define-color insensitive_base_fg_color_breeze #606263;
|
||||
@define-color insensitive_bg_color_breeze #1f2124;
|
||||
@define-color insensitive_borders_breeze #313336;
|
||||
@define-color insensitive_fg_color_breeze #686a6c;
|
||||
@define-color insensitive_selected_bg_color_breeze #1f2124;
|
||||
@define-color insensitive_selected_fg_color_breeze #686a6c;
|
||||
@define-color insensitive_unfocused_bg_color_breeze #1f2124;
|
||||
@define-color insensitive_unfocused_fg_color_breeze #686a6c;
|
||||
@define-color insensitive_unfocused_selected_bg_color_breeze #1f2124;
|
||||
@define-color insensitive_unfocused_selected_fg_color_breeze #686a6c;
|
||||
@define-color link_color_breeze #926ee4;
|
||||
@define-color link_visited_color_breeze #9b59b6;
|
||||
@define-color success_color_backdrop_breeze #27ae60;
|
||||
@define-color success_color_breeze #27ae60;
|
||||
@define-color success_color_insensitive_backdrop_breeze #19482f;
|
||||
@define-color success_color_insensitive_breeze #19482f;
|
||||
@define-color theme_base_color_breeze #141618;
|
||||
@define-color theme_bg_color_breeze #202326;
|
||||
@define-color theme_button_background_backdrop_breeze #292c30;
|
||||
@define-color theme_button_background_backdrop_insensitive_breeze #272a2e;
|
||||
@define-color theme_button_background_insensitive_breeze #272a2e;
|
||||
@define-color theme_button_background_normal_breeze #292c30;
|
||||
@define-color theme_button_decoration_focus_backdrop_breeze #926ee4;
|
||||
@define-color theme_button_decoration_focus_backdrop_insensitive_breeze #4a406a;
|
||||
@define-color theme_button_decoration_focus_breeze #926ee4;
|
||||
@define-color theme_button_decoration_focus_insensitive_breeze #4a406a;
|
||||
@define-color theme_button_decoration_hover_backdrop_breeze #926ee4;
|
||||
@define-color theme_button_decoration_hover_backdrop_insensitive_breeze #4a406a;
|
||||
@define-color theme_button_decoration_hover_breeze #926ee4;
|
||||
@define-color theme_button_decoration_hover_insensitive_breeze #4a406a;
|
||||
@define-color theme_button_foreground_active_backdrop_breeze #fcfcfc;
|
||||
@define-color theme_button_foreground_active_backdrop_insensitive_breeze #686a6c;
|
||||
@define-color theme_button_foreground_active_breeze #ffffff;
|
||||
@define-color theme_button_foreground_active_insensitive_breeze #686a6c;
|
||||
@define-color theme_button_foreground_backdrop_breeze #fcfcfc;
|
||||
@define-color theme_button_foreground_backdrop_insensitive_breeze #6d6f72;
|
||||
@define-color theme_button_foreground_insensitive_breeze #6d6f72;
|
||||
@define-color theme_button_foreground_normal_breeze #fcfcfc;
|
||||
@define-color theme_fg_color_breeze #fcfcfc;
|
||||
@define-color theme_header_background_backdrop_breeze #202326;
|
||||
@define-color theme_header_background_breeze #292c30;
|
||||
@define-color theme_header_background_light_breeze #202326;
|
||||
@define-color theme_header_foreground_backdrop_breeze #fcfcfc;
|
||||
@define-color theme_header_foreground_breeze #fcfcfc;
|
||||
@define-color theme_header_foreground_insensitive_backdrop_breeze #fcfcfc;
|
||||
@define-color theme_header_foreground_insensitive_breeze #fcfcfc;
|
||||
@define-color theme_hovering_selected_bg_color_breeze #926ee4;
|
||||
@define-color theme_selected_bg_color_breeze #6c53a6;
|
||||
@define-color theme_selected_fg_color_breeze #ffffff;
|
||||
@define-color theme_text_color_breeze #fcfcfc;
|
||||
@define-color theme_titlebar_background_backdrop_breeze #202326;
|
||||
@define-color theme_titlebar_background_breeze #292c30;
|
||||
@define-color theme_titlebar_background_light_breeze #202326;
|
||||
@define-color theme_titlebar_foreground_backdrop_breeze #fcfcfc;
|
||||
@define-color theme_titlebar_foreground_breeze #fcfcfc;
|
||||
@define-color theme_titlebar_foreground_insensitive_backdrop_breeze #fcfcfc;
|
||||
@define-color theme_titlebar_foreground_insensitive_breeze #fcfcfc;
|
||||
@define-color theme_unfocused_base_color_breeze #141618;
|
||||
@define-color theme_unfocused_bg_color_breeze #202326;
|
||||
@define-color theme_unfocused_fg_color_breeze #fcfcfc;
|
||||
@define-color theme_unfocused_selected_bg_color_alt_breeze #362c50;
|
||||
@define-color theme_unfocused_selected_bg_color_breeze #362c50;
|
||||
@define-color theme_unfocused_selected_fg_color_breeze #fcfcfc;
|
||||
@define-color theme_unfocused_text_color_breeze #fcfcfc;
|
||||
@define-color theme_unfocused_view_bg_color_breeze #131517;
|
||||
@define-color theme_unfocused_view_text_color_breeze #606263;
|
||||
@define-color theme_view_active_decoration_color_breeze #926ee4;
|
||||
@define-color theme_view_hover_decoration_color_breeze #926ee4;
|
||||
@define-color tooltip_background_breeze #292c30;
|
||||
@define-color tooltip_border_breeze #5e6063;
|
||||
@define-color tooltip_text_breeze #fcfcfc;
|
||||
@define-color unfocused_borders_breeze #57595c;
|
||||
@define-color unfocused_insensitive_borders_breeze #313336;
|
||||
@define-color warning_color_backdrop_breeze #f67400;
|
||||
@define-color warning_color_breeze #f67400;
|
||||
@define-color warning_color_insensitive_backdrop_breeze #5e340f;
|
||||
@define-color warning_color_insensitive_breeze #5e340f;
|
||||
2
plasma/.config/gtk-4.0/gtk.css
Executable file
|
|
@ -0,0 +1,2 @@
|
|||
|
||||
@import 'colors.css';
|
||||
13
plasma/.config/gtk-4.0/settings.ini
Executable file
|
|
@ -0,0 +1,13 @@
|
|||
[Settings]
|
||||
gtk-application-prefer-dark-theme=true
|
||||
gtk-cursor-blink=true
|
||||
gtk-cursor-blink-time=1000
|
||||
gtk-cursor-theme-name=breeze_cursors
|
||||
gtk-cursor-theme-size=24
|
||||
gtk-decoration-layout=icon:minimize,maximize,close
|
||||
gtk-enable-animations=true
|
||||
gtk-font-name=Noto Sans, 10
|
||||
gtk-icon-theme-name=breeze-dark
|
||||
gtk-primary-button-warps-slider=true
|
||||
gtk-sound-theme-name=ocean
|
||||
gtk-xft-dpi=98304
|
||||
71
plasma/.config/gtk-4.0/window_decorations.css
Executable file
|
|
@ -0,0 +1,71 @@
|
|||
headerbar button.titlebutton.close, .titlebar button.titlebutton.close {
|
||||
background-image: url("assets/close-normal.svg"); }
|
||||
|
||||
headerbar button.titlebutton.close:hover, .titlebar button.titlebutton.close:hover {
|
||||
background-image: url("assets/close-hover.svg"); }
|
||||
|
||||
headerbar button.titlebutton.close:active, .titlebar button.titlebutton.close:active {
|
||||
background-image: url("assets/close-active.svg"); }
|
||||
|
||||
headerbar button.titlebutton.close:backdrop, .titlebar button.titlebutton.close:backdrop {
|
||||
background-image: url("assets/close-backdrop-normal.svg"); }
|
||||
|
||||
headerbar button.titlebutton.close:backdrop:hover, .titlebar button.titlebutton.close:backdrop:hover {
|
||||
background-image: url("assets/close-backdrop-hover.svg"); }
|
||||
|
||||
headerbar button.titlebutton.close:backdrop:active, .titlebar button.titlebutton.close:backdrop:active {
|
||||
background-image: url("assets/close-backdrop-active.svg"); }
|
||||
|
||||
headerbar button.titlebutton.maximize, .titlebar button.titlebutton.maximize {
|
||||
background-image: url("assets/maximize-normal.svg"); }
|
||||
|
||||
headerbar button.titlebutton.maximize:hover, .titlebar button.titlebutton.maximize:hover {
|
||||
background-image: url("assets/maximize-hover.svg"); }
|
||||
|
||||
headerbar button.titlebutton.maximize:active, .titlebar button.titlebutton.maximize:active {
|
||||
background-image: url("assets/maximize-active.svg"); }
|
||||
|
||||
headerbar button.titlebutton.maximize:backdrop, .titlebar button.titlebutton.maximize:backdrop {
|
||||
background-image: url("assets/maximize-backdrop-normal.svg"); }
|
||||
|
||||
headerbar button.titlebutton.maximize:backdrop:hover, .titlebar button.titlebutton.maximize:backdrop:hover {
|
||||
background-image: url("assets/maximize-backdrop-hover.svg"); }
|
||||
|
||||
headerbar button.titlebutton.maximize:backdrop:active, .titlebar button.titlebutton.maximize:backdrop:active {
|
||||
background-image: url("assets/maximize-backdrop-active.svg"); }
|
||||
|
||||
headerbar button.titlebutton.minimize, .titlebar button.titlebutton.minimize {
|
||||
background-image: url("assets/minimize-normal.svg"); }
|
||||
|
||||
headerbar button.titlebutton.minimize:hover, .titlebar button.titlebutton.minimize:hover {
|
||||
background-image: url("assets/minimize-hover.svg"); }
|
||||
|
||||
headerbar button.titlebutton.minimize:active, .titlebar button.titlebutton.minimize:active {
|
||||
background-image: url("assets/minimize-active.svg"); }
|
||||
|
||||
headerbar button.titlebutton.minimize:backdrop, .titlebar button.titlebutton.minimize:backdrop {
|
||||
background-image: url("assets/minimize-backdrop-normal.svg"); }
|
||||
|
||||
headerbar button.titlebutton.minimize:backdrop:hover, .titlebar button.titlebutton.minimize:backdrop:hover {
|
||||
background-image: url("assets/minimize-backdrop-hover.svg"); }
|
||||
|
||||
headerbar button.titlebutton.minimize:backdrop:active, .titlebar button.titlebutton.minimize:backdrop:active {
|
||||
background-image: url("assets/minimize-backdrop-active.svg"); }
|
||||
|
||||
.maximized headerbar button.titlebutton.maximize, .maximized .titlebar button.titlebutton.maximize {
|
||||
background-image: url("assets/maximized-normal.svg"); }
|
||||
|
||||
.maximized headerbar button.titlebutton.maximize:hover, .maximized .titlebar button.titlebutton.maximize:hover {
|
||||
background-image: url("assets/maximized-hover.svg"); }
|
||||
|
||||
.maximized headerbar button.titlebutton.maximize:active, .maximized .titlebar button.titlebutton.maximize:active {
|
||||
background-image: url("assets/maximized-active.svg"); }
|
||||
|
||||
.maximized headerbar button.titlebutton.maximize:backdrop, .maximized .titlebar button.titlebutton.maximize:backdrop {
|
||||
background-image: url("assets/maximized-backdrop-normal.svg"); }
|
||||
|
||||
.maximized headerbar button.titlebutton.maximize:backdrop:hover, .maximized .titlebar button.titlebutton.maximize:backdrop:hover {
|
||||
background-image: url("assets/maximized-backdrop-hover.svg"); }
|
||||
|
||||
.maximized headerbar button.titlebutton.maximize:backdrop:active, .maximized .titlebar button.titlebutton.maximize:backdrop:active {
|
||||
background-image: url("assets/maximized-backdrop-active.svg"); }
|
||||
2
plasma/.config/gtkrc
Executable file
|
|
@ -0,0 +1,2 @@
|
|||
# created by KDE Plasma, Wed Feb 4 22:16:45 2026
|
||||
#
|
||||
5
plasma/.config/gtkrc-2.0
Executable file
|
|
@ -0,0 +1,5 @@
|
|||
# created by KDE Plasma, Wed Feb 4 22:16:45 2026
|
||||
#
|
||||
|
||||
gtk-alternative-button-order = 1
|
||||
|
||||
86
plasma/.config/kconf_updaterc
Executable file
|
|
@ -0,0 +1,86 @@
|
|||
updateInfoAdded=true
|
||||
|
||||
[dolphin_detailsmodesettings.upd]
|
||||
ctime=1770326744
|
||||
done=rename-leading-padding,rename-side-padding,move-content-display
|
||||
mtime=1770139556
|
||||
|
||||
[dolphin_replace_view_mode_with_view_settings_in_toolbar.upd]
|
||||
ctime=1770326744
|
||||
done=move-content-display,replace-view-mode-with-view-settings-in-toolbar
|
||||
mtime=1770139556
|
||||
|
||||
[dolphin_statusandlocationbarssettings.upd]
|
||||
ctime=1770326744
|
||||
done=replace-view-mode-with-view-settings-in-toolbar,25.04-convert-bool-showstatusbar-to-enum-showstatusbar
|
||||
mtime=1770139556
|
||||
|
||||
[gtkconfig.upd]
|
||||
ctime=1769692356
|
||||
done=25.04-convert-bool-showstatusbar-to-enum-showstatusbar,gtk_theme,dont_use_gtk_css_for_window_decorations,remove_deprecated_gtk4_option_v2
|
||||
mtime=1768334489
|
||||
|
||||
[kcalcrc.upd]
|
||||
ctime=1770326747
|
||||
done=remove_deprecated_gtk4_option_v2
|
||||
mtime=1770149900
|
||||
|
||||
[kwin-x11.upd]
|
||||
ctime=1769887677
|
||||
done=remove_deprecated_gtk4_option_v2,kwin-6.0-reset-active-mouse-screen-x11,kwin-6.0-delete-desktop-switching-shortcuts-x11,kwin-6.0-remove-breeze-tabbox-default-x11,kwin-6.1-remove-gridview-expose-shortcuts-x11,kwin-6.5-showpaint-changes-x11
|
||||
mtime=1769684280
|
||||
|
||||
[kwin.upd]
|
||||
ctime=1769887677
|
||||
done=kwin-6.5-showpaint-changes-x11,kwin-6.0-reset-active-mouse-screen,kwin-6.0-delete-desktop-switching-shortcuts,kwin-6.0-remove-breeze-tabbox-default,kwin-6.1-remove-gridview-expose-shortcuts,kwin-6.5-showpaint-changes
|
||||
mtime=1769683918
|
||||
|
||||
[migrate-calendar-to-plugin-id.upd]
|
||||
ctime=1769692355
|
||||
done=kwin-6.5-showpaint-changes,migrate-calendar-plugins
|
||||
mtime=1768333784
|
||||
|
||||
[plasma-systemmonitor.upd]
|
||||
ctime=1769692356
|
||||
done=migrate-calendar-plugins,memory-column
|
||||
mtime=1768335525
|
||||
|
||||
[plasma6.0-remove-dpi-settings.upd]
|
||||
ctime=1769692355
|
||||
done=memory-column,plasma6.0-remove-dpi-settings
|
||||
mtime=1768333784
|
||||
|
||||
[plasma6.0-remove-old-shortcuts.upd]
|
||||
ctime=1769692355
|
||||
done=plasma6.0-remove-dpi-settings,plasma6.0-remove-old-shortcuts
|
||||
mtime=1768333784
|
||||
|
||||
[plasma6.3-update-clipboard-database-2-to-3.upd]
|
||||
ctime=1769692355
|
||||
done=plasma6.0-remove-old-shortcuts,plasma6.3-update-clipboard-database-2-to-3
|
||||
mtime=1768333784
|
||||
|
||||
[plasma6.4-migrate-fullscreen-notifications-to-dnd.upd]
|
||||
ctime=1769692355
|
||||
done=plasma6.3-update-clipboard-database-2-to-3,plasma6.4-migrate-fullscreen-notifications-to-dnd
|
||||
mtime=1768333784
|
||||
|
||||
[plasmashell-6.0-keep-custom-position-of-panels.upd]
|
||||
ctime=1769692355
|
||||
done=plasma6.4-migrate-fullscreen-notifications-to-dnd,plasmashell-6.0-keep-custom-position-of-panels
|
||||
mtime=1768333784
|
||||
|
||||
[plasmashell-6.0-keep-default-floating-setting-for-plasma-5-panels.upd]
|
||||
ctime=1769692355
|
||||
done=plasmashell-6.0-keep-custom-position-of-panels,plasmashell-6.0-keep-default-floating-setting-for-plasma-5-panels
|
||||
mtime=1768333784
|
||||
|
||||
[plasmashell-6.5-remove-stop-activity-shortcut.upd]
|
||||
ctime=1769692355
|
||||
done=plasmashell-6.0-keep-default-floating-setting-for-plasma-5-panels,plasmashell-6.5-remove-stop-activity-shortcut
|
||||
mtime=1768333784
|
||||
|
||||
[spectacle.upd]
|
||||
ctime=1769692357
|
||||
done=plasmashell-6.5-remove-stop-activity-shortcut,24.02.0-video_format,24.02.0-keep_old_save_location,24.02.0-rename_settings,24.02.0-keep_old_filename_templates,24.05.2-change_placeholder_format
|
||||
mtime=1768335930
|
||||
3
plasma/.config/kdeconnect/.gitignore
vendored
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
*.pem
|
||||
privateKey.pem
|
||||
certificate.pem
|
||||
3
plasma/.config/kdeconnect/config
Executable file
|
|
@ -0,0 +1,3 @@
|
|||
[General]
|
||||
keyAlgorithm=EC
|
||||
name=endtop
|
||||
2
plasma/.config/kded5rc
Executable file
|
|
@ -0,0 +1,2 @@
|
|||
[Module-device_automounter]
|
||||
autoload=false
|
||||
2
plasma/.config/kdedefaults/kcminputrc
Executable file
|
|
@ -0,0 +1,2 @@
|
|||
[Mouse]
|
||||
cursorTheme=breeze_cursors
|
||||
8
plasma/.config/kdedefaults/kdeglobals
Executable file
|
|
@ -0,0 +1,8 @@
|
|||
[General]
|
||||
ColorScheme=BreezeDark
|
||||
|
||||
[Icons]
|
||||
Theme=breeze-dark
|
||||
|
||||
[KDE]
|
||||
widgetStyle=Breeze
|
||||
3
plasma/.config/kdedefaults/ksplashrc
Executable file
|
|
@ -0,0 +1,3 @@
|
|||
[KSplash]
|
||||
Engine=KSplashQML
|
||||
Theme=com.endeavouros.breezedarkeos.desktop
|
||||
4
plasma/.config/kdedefaults/kwinrc
Executable file
|
|
@ -0,0 +1,4 @@
|
|||
[org.kde.kdecoration2]
|
||||
NoPlugin=false
|
||||
library=org.kde.breeze
|
||||
theme=Breeze
|
||||
1
plasma/.config/kdedefaults/package
Executable file
|
|
@ -0,0 +1 @@
|
|||
com.endeavouros.breezedarkeos.desktop
|
||||