diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..504afef --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +node_modules/ +package-lock.json diff --git a/README.md b/README.md index 75234cf..236fce6 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,7 @@ -# my personal dotfiles for Hyprland and others +# janishutz Hyprland -Contains the following config files: -- waybar conifg (including CSS styling) -- hyprland config (hyprland.conf) -- dunst config -- fish config -- rofi config -- vscodium settings +## Setting up to develop +Clone this repo locally. For `config/astal` and `config/ags`, you will want to run `ags types -d .` in every directory where there is a `app.ts` file as well as `mkdir node_modules && cd node_modules && ln -sf /usr/share/astal/gjs/ ./astal` to prepare for development. + +The `config/ags` directory contains gtk3 config for astal, whereas in `config/astal`, gtk4 configs can be found. All modules but for the notifications are written in Gtk 4. diff --git a/ai-update.sh b/ai-update.sh deleted file mode 100755 index 1bd642e..0000000 --- a/ai-update.sh +++ /dev/null @@ -1,3 +0,0 @@ -docker pull ghcr.io/open-webui/open-webui:latest -docker container rm open-webui -docker run -d -p 3000:8080 --add-host=host.docker.internal:host-gateway -v /home/janis/projects/otherProjects/open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:latest diff --git a/ai.sh b/ai.sh deleted file mode 100755 index 67f9763..0000000 --- a/ai.sh +++ /dev/null @@ -1,24 +0,0 @@ -echo " - ▄▄▄▄▄▄▄ ▄▄▄ ▄▄▄ ▄▄▄▄▄▄ ▄▄ ▄▄ ▄▄▄▄▄▄ -█ █ █ █ █ █ █ █▄█ █ █ -█ ▄ █ █ █ █ █ ▄ █ █ ▄ █ -█ █ █ █ █ █ █ █ █▄█ █ █ █▄█ █ -█ █▄█ █ █▄▄▄█ █▄▄▄█ █ █ █ -█ █ █ █ ▄ █ ██▄██ █ ▄ █ -█▄▄▄▄▄▄▄█▄▄▄▄▄▄▄█▄▄▄▄▄▄▄█▄█ █▄▄█▄█ █▄█▄█ █▄▄█ - -==> Starting ollama -" - -cmd="ollama serve"; -eval "${cmd}" &>/dev/null & disown; - -echo "==> Starting docker" -systemctl start docker - -echo "==> Starting open-webui." -docker start -i open-webui - -echo "==> Done. Visit http://localhost:3000 for a web-ui, http://localhost:11434 to check ollama status" - -read "Press enter to finish" diff --git a/build/build.js b/build/build.js new file mode 100644 index 0000000..9483d75 --- /dev/null +++ b/build/build.js @@ -0,0 +1,58 @@ +// Using commonjs instead of ejs, because more widely compatible +const inquirer = require( 'inquirer' ); +const fs = require( 'fs' ); +const path = require( 'path' ); +const os = require( 'os' ); +const render = require( './helpers/render' ); +const { treeWalker } = require('./helpers/util'); + + +// Prompt user to select a wallpaper (if no path is passed as argument) +const wallpapers = treeWalker( path.join( os.homedir(), '/NextCloud/Wallpapers' ), '*' ); +// const wallpapers = fs.readdirSync( path.join( os.homedir(), '/NextCloud/Wallpapers' ) ); +const wallpaperChoices = []; +wallpapers.forEach(element => { + const name = element.split( '/' ); + wallpaperChoices.push( { 'name': name[ name.length - 1 ].split( '.' )[ 0 ], 'value': element } ); +}); + + +// Selection options +const chooseWallpaper = { + 'type': 'list', + 'name': 'wallpaper', + 'message': 'Choose the wallpaper to be used', + 'choices': wallpaperChoices, +}; + +const chooseLockpaper = { + 'type': 'list', + 'name': 'lockpaper', + 'message': 'Choose the lockscreen wallpaper to be used', + 'choices': wallpaperChoices, +}; + +const chooseTheme = { + 'type': 'list', + 'name': 'theme', + 'message': 'Choose the general colourway to be used', + 'choices': [ + { name: 'Nordic', value: 'nordic' }, + { name: 'Deep-Dark', value: 'deep-dark' }, + { name: 'Material-You', value: 'material' }, + { name: 'Light', value: 'light' }, + { name: 'Bright', value: 'bright' }, + ] +} + +// TODO: Add argument parsing +const args = process.argv.slice( 2 ); +inquirer.default.prompt( [ + chooseWallpaper, + chooseLockpaper, + chooseTheme +] ).then( answers => { + render( answers.wallpaper, answers.lockpaper, answers.theme ); +} ).catch( () => { + process.exit( 1 ); +} ); diff --git a/build/helpers/generateTheme.js b/build/helpers/generateTheme.js new file mode 100644 index 0000000..08ecec3 --- /dev/null +++ b/build/helpers/generateTheme.js @@ -0,0 +1,280 @@ +const util = require( './util' ); + +const renderColourAsRGB = util.renderColourAsRGB; +const renderColourAsRGBA = util.renderColourAsRGBA; +const renderColourAsHex = util.renderColourAsHex; + +// ─────────────────────────────────────────────────────────────────── +// ╭───────────────────────────────────────────────╮ +// │ Theme generator (returns theme as object) │ +// ╰───────────────────────────────────────────────╯ +// ─────────────────────────────────────────────────────────────────── +module.exports.generateTheme = ( theme, wallpaper, lockpaper, palette ) => { + return { + 'wallpaper-path': wallpaper, + 'lockpaper-path': lockpaper, + + // ┌ ┐ + // │ Colours │ + // └ ┘ + // ── Foreground ─────────────────────────────────────────────────── + 'colour-foreground-hex': renderColourAsHex( colours.foreground[ theme ] ), + 'colour-foreground-rgb': renderColourAsRGB( colours.foreground[ theme ] ), + 'colour-foreground-rgba': renderColourAsRGBA( colours.foreground[ theme ], 0.5 ), + 'colour-foreground-rgba-07': renderColourAsRGBA( colours.foreground[ theme ], 0.7 ), + 'colour-foreground-rgba-06': renderColourAsRGBA( colours.foreground[ theme ], 0.6 ), + 'colour-foreground-rgba-05': renderColourAsRGBA( colours.foreground[ theme ], 0.5 ), + 'colour-foreground-rgba-03': renderColourAsRGBA( colours.foreground[ theme ], 0.3 ), + 'colour-foreground-rgba-02': renderColourAsRGBA( colours.foreground[ theme ], 0.2 ), + 'colour-foreground-rgba-01': renderColourAsRGBA( colours.foreground[ theme ], 0.1 ), + + // ── Accent foreground colour ───────────────────────────────────── + 'colour-foreground-accent-hex': renderColourAsHex( colours['foreground-accent'][ theme ] ), + 'colour-foreground-accent-rgba-07': renderColourAsRGBA( colours['foreground-accent'][ theme ], 0.7 ), + 'colour-foreground-accent-rgba-06': renderColourAsRGBA( colours['foreground-accent'][ theme ], 0.6 ), + 'colour-foreground-accent-rgba-05': renderColourAsRGBA( colours['foreground-accent'][ theme ], 0.5 ), + 'colour-foreground-accent-rgba-03': renderColourAsRGBA( colours['foreground-accent'][ theme ], 0.3 ), + 'colour-foreground-accent-rgba-02': renderColourAsRGBA( colours['foreground-accent'][ theme ], 0.2 ), + + // ── Accent colour ──────────────────────────────────────────────── + 'colour-accent-hex': renderColourAsHex( palette[ 0 ] ), + 'colour-accent-rgb': renderColourAsRGB( palette[ 0 ] ), + 'colour-accent-rgba': renderColourAsRGBA( palette[ 0 ], 0.3 ), + 'colour-accent-rgba-07': renderColourAsRGBA( palette[ 0 ], 0.7 ), + 'colour-accent-rgba-05': renderColourAsRGBA( palette[ 0 ], 0.5 ), + 'colour-accent-rgba-03': renderColourAsRGBA( palette[ 0 ], 0.3 ), + 'colour-accent-rgba-02': renderColourAsRGBA( palette[ 0 ], 0.2 ), + 'colour-accent-rgba-015': renderColourAsRGBA( palette[ 0 ], 0.15 ), + 'colour-accent-rgba-011': renderColourAsRGBA( palette[ 0 ], 0.11 ), + 'colour-accent-rgba-007': renderColourAsRGBA( palette[ 0 ], 0.07 ), + 'colour-accent-hyprland': util.renderColourAsRGBAHex( palette[ 0 ], 0.8 ), + // ─────────────────────────────────────────────────────────────────── + 'colour-accent-gradient-1-hex': renderColourAsHex( util.getGradientColour( palette[ 0 ], 1, gradientMultipliers[ theme ] ) ), + 'colour-accent-gradient-2-hex': renderColourAsHex( util.getGradientColour( palette[ 0 ], 2, gradientMultipliers[ theme ] ) ), + 'colour-accent-gradient-3-hex': renderColourAsHex( util.getGradientColour( palette[ 0 ], 3, gradientMultipliers[ theme ] ) ), + 'colour-accent-gradient-4-hex': renderColourAsHex( util.getGradientColour( palette[ 0 ], 4, gradientMultipliers[ theme ] ) ), + 'colour-accent-gradient-5-hex': renderColourAsHex( util.getGradientColour( palette[ 0 ], 5, gradientMultipliers[ theme ] ) ), + 'colour-accent-gradient-inverse-1-hex': renderColourAsHex( util.getGradientColour( palette[ 0 ], 1, 1 / gradientMultipliers[ theme ] ) ), + 'colour-accent-gradient-inverse-2-hex': renderColourAsHex( util.getGradientColour( palette[ 0 ], 1, 1 / gradientMultipliers[ theme ] ) ), + 'colour-accent-gradient-inverse-3-hex': renderColourAsHex( util.getGradientColour( palette[ 0 ], 1, 1 / gradientMultipliers[ theme ] ) ), + + // ── Secondary accent ───────────────────────────────────────────── + 'colour-accent-2-hex': renderColourAsHex( palette[ 1 ] ), + 'colour-accent-2-rgb': renderColourAsRGB( palette[ 1 ] ), + 'colour-accent-2-rgba-07': renderColourAsRGBA( palette[ 1 ], 0.7 ), + 'colour-accent-2-rgba-05': renderColourAsRGBA( palette[ 1 ], 0.5 ), + 'colour-accent-2-rgba-03': renderColourAsRGBA( palette[ 1 ], 0.3 ), + 'colour-accent-2-rgba-02': renderColourAsRGBA( palette[ 1 ], 0.2 ), + 'colour-accent-2-rgba-015': renderColourAsRGBA( palette[ 1 ], 0.15 ), + 'colour-accent-2-rgba-01': renderColourAsRGBA( palette[ 1 ], 0.1 ), + 'colour-accent-2-hyprland': util.renderColourAsRGBAHex( palette[ 1 ], 0.8 ), + + // ── Tertiary accent ────────────────────────────────────────────── + 'colour-accent-3-hex': renderColourAsHex( palette[ 2 ] ), + 'colour-accent-3-rgb': renderColourAsRGB( palette[ 2 ] ), + 'colour-accent-3-hyprland': util.renderColourAsRGBAHex( palette[ 2 ], 0.8 ), + + // ── Background ─────────────────────────────────────────────────── + 'colour-background-hex': renderColourAsHex( colours.background[ theme ] ), + 'colour-background-rgb': renderColourAsRGB( colours.background[ theme ] ), + 'colour-background-rgba': renderColourAsRGBA( colours.background[ theme ], 0.5 ), + 'colour-background-rgba-07': renderColourAsRGBA( colours.background[ theme ], 0.7 ), + 'colour-background-rgba-05': renderColourAsRGBA( colours.background[ theme ], 0.5 ), + 'colour-background-rgba-03': renderColourAsRGBA( colours.background[ theme ], 0.3 ), + 'colour-background-rgba-02': renderColourAsRGBA( colours.background[ theme ], 0.2 ), + 'colour-background-rgba-015': renderColourAsRGBA( colours.background[ theme ], 0.15 ), + 'colour-background-rgba-011': renderColourAsRGBA( colours.background[ theme ], 0.11 ), + + // ── Background Alternative ─────────────────────────────────────── + 'colour-background-alternative-hex': renderColourAsHex( colours[ 'background-alternative' ][ theme ] ), + 'colour-background-alternative-rgb': renderColourAsRGB( colours[ 'background-alternative' ][ theme ] ), + 'colour-background-alternative-rgba-07': renderColourAsRGBA( colours[ 'background-alternative' ][ theme ], 0.7 ), + 'colour-background-alternative-rgba-06': renderColourAsRGBA( colours[ 'background-alternative' ][ theme ], 0.6 ), + 'colour-background-alternative-rgba-05': renderColourAsRGBA( colours[ 'background-alternative' ][ theme ], 0.5 ), + 'colour-background-alternative-rgba-04': renderColourAsRGBA( colours[ 'background-alternative' ][ theme ], 0.4 ), + 'colour-background-alternative-rgba-03': renderColourAsRGBA( colours[ 'background-alternative' ][ theme ], 0.3 ), + 'colour-background-alternative-rgba-02': renderColourAsRGBA( colours[ 'background-alternative' ][ theme ], 0.2 ), + 'colour-background-alternative-rgba-015': renderColourAsRGBA( colours[ 'background-alternative' ][ theme ], 0.15 ), + 'colour-background-alternative-rgba-01': renderColourAsRGBA( colours[ 'background-alternative' ][ theme ], 0.1 ), + + // ── Background Tertiary ────────────────────────────────────────── + 'colour-background-tertiary-hex': renderColourAsHex( colours[ 'background-tertiary' ][ theme ] ), + 'colour-background-tertiary-rgb': renderColourAsRGB( colours[ 'background-tertiary' ][ theme ] ), + 'colour-background-tertiary-rgba-05': renderColourAsRGBA( colours[ 'background-tertiary' ][ theme ], 0.5 ), + 'colour-background-tertiary-rgba-02': renderColourAsRGBA( colours[ 'background-tertiary' ][ theme ], 0.2 ), + + // ── Shadow ─────────────────────────────────────────────────────── + 'colour-shadow-hex': renderColourAsHex( colours.shadow[ theme ] ), + 'colour-shadow-rgb': renderColourAsRGB( colours.shadow[ theme ] ), + 'colour-shadow-hyprland': util.renderColourAsRGBHex( colours.shadow[ theme ] ), + 'colour-shadow-rgba-07': renderColourAsRGBA( colours.shadow[ theme ], 0.7 ), + 'colour-shadow-rgba-05': renderColourAsRGBA( colours.shadow[ theme ], 0.5 ), + 'colour-shadow-rgba-03': renderColourAsRGBA( colours.shadow[ theme ], 0.3 ), + 'colour-shadow-rgba-02': renderColourAsRGBA( colours.shadow[ theme ], 0.2 ), + 'colour-shadow-rgba-015': renderColourAsRGBA( colours.shadow[ theme ], 0.15 ), + 'colour-shadow-rgba-011': renderColourAsRGBA( colours.shadow[ theme ], 0.11 ), + + // ── Inactive ───────────────────────────────────────────────────── + 'colour-inactive-hex': renderColourAsHex( colours.inactive[ theme ] ), + 'colour-inactive-rgb': renderColourAsRGB( colours.inactive[ theme ] ), + 'colour-inactive-rgba-07': renderColourAsRGBA( colours.inactive[ theme ], 0.7 ), + 'colour-inactive-rgba-05': renderColourAsRGBA( colours.inactive[ theme ], 0.5 ), + 'colour-inactive-rgba-03': renderColourAsRGBA( colours.inactive[ theme ], 0.3 ), + 'colour-inactive-rgba-02': renderColourAsRGBA( colours.inactive[ theme ], 0.2 ), + 'colour-inactive-rgba-015': renderColourAsRGBA( colours.inactive[ theme ], 0.15 ), + // ─────────────────────────────────────────────────────────────────── + 'colour-inactive-background-hex': renderColourAsHex( colours[ 'inactive-background' ][ theme ] ), + 'colour-inactive-background-rgb': renderColourAsRGB( colours[ 'inactive-background' ][ theme ] ), + 'colour-inactive-background-hyprland': util.renderColourAsRGBHex( colours[ 'inactive-background' ][ theme ] ), + 'colour-inactive-background-rgba-07': renderColourAsRGBA( colours[ 'inactive-background' ][ theme ], 0.7 ), + 'colour-inactive-background-rgba-05': renderColourAsRGBA( colours[ 'inactive-background' ][ theme ], 0.5 ), + 'colour-inactive-background-rgba-04': renderColourAsRGBA( colours[ 'inactive-background' ][ theme ], 0.4 ), + 'colour-inactive-background-rgba-03': renderColourAsRGBA( colours[ 'inactive-background' ][ theme ], 0.3 ), + 'colour-inactive-background-rgba-02': renderColourAsRGBA( colours[ 'inactive-background' ][ theme ], 0.2 ), + 'colour-inactive-background-rgba-015': renderColourAsRGBA( colours[ 'inactive-background' ][ theme ], 0.15 ), + 'colour-inactive-background-rgba-01': renderColourAsRGBA( colours[ 'inactive-background' ][ theme ], 0.1 ), + + // ┌ ┐ + // │ Fonts │ + // └ ┘ + 'font-primary': fonts.primary[ theme ], + 'font-accent': fonts.accent[ theme ], + 'font-mono': fonts.mono[ theme ], + + // ┌ ┐ + // │ Icon Theme │ + // └ ┘ + 'icon-theme': iconTheme[ theme ], + + // ┌ ┐ + // │ yazi theme │ + // └ ┘ + 'yazi-theme': yaziThemes[ theme ], + + // ┌ ┐ + // │ Path to this repo on disk │ + // └ ┘ + 'path-to-dotfiles': __dirname.slice(0, __dirname.length - 5), + } +} + + +// ─────────────────────────────────────────────────────────────────── +// ╭───────────────────────────────────────────────╮ +// │ Theme definitions │ +// ╰───────────────────────────────────────────────╯ +// ─────────────────────────────────────────────────────────────────── +const gradientMultipliers = { + 'nordic': 0.9, + 'deep-dark': 0.8, + 'material': 0.85, + 'light': 1.1, + 'bright': 1.15, + 'test': 0.75 +} +const colours = { + foreground: { + 'nordic': [ 200, 220, 255 ], + 'deep-dark': [ 230, 230, 230 ], + 'material': [ 255, 255, 255 ], // TODO: Will be calculated by material theme generator + 'light': [ 40, 40, 40 ], + 'bright': [ 0, 0, 0 ], + 'test': [ 0, 0, 0 ], + }, + 'foreground-accent': { + 'nordic': [ 255, 255, 255 ], + 'deep-dark': [ 255, 255, 255 ], + 'material': [ 200, 200, 200 ], // TODO: Will be calculated by material theme generator + 'light': [ 0, 0, 0 ], + 'bright': [ 50, 50, 50 ], + 'test': [ 0, 0, 0 ], + }, + background: { + 'nordic': [ 10, 10, 15 ], + 'deep-dark': [ 20, 20, 20 ], + 'material': [ 30, 30, 30 ], // TODO: Will be calculated by material theme generator + 'light': [ 230, 230, 230 ], + 'bright': [ 255, 255, 255 ], + 'test': [ 255, 255, 255 ], + }, + 'background-alternative': { + 'nordic': [ 20, 20, 25 ], + 'deep-dark': [ 30, 30, 30 ], + 'material': [ 40, 40, 40 ], // TODO: Will be calculated by material theme generator + 'light': [ 210, 210, 210 ], + 'bright': [ 230, 230, 230 ], + 'test': [ 255, 255, 0 ] // brown + }, + 'background-tertiary': { + 'nordic': [ 0, 0, 0 ], + 'deep-dark': [ 45, 45, 45 ], + 'material': [ 0, 0, 0 ], // TODO: Will be calculated by material theme generator + 'light': [ 180, 180, 180 ], + 'bright': [ 200, 200, 200 ], + 'test': [ 255, 0, 255 ] // purple + }, + shadow: { + 'nordic': [ 0, 0, 2 ], + 'deep-dark': [ 40, 40, 40 ], + 'material': [ 30, 30, 30 ], // TODO: Will be calculated by material theme generator + 'light': [ 190, 190, 190 ], + 'bright': [ 150, 150, 150 ], + 'test': [ 120, 0, 0 ] // dark red + }, + inactive: { + 'nordic': [ 200, 200, 200 ], + 'deep-dark': [ 200, 200, 200 ], + 'material': [ 200, 200, 200 ], // TODO: Will be calculated by material theme generator + 'light': [ 65, 65, 65 ], + 'bright': [ 60, 60, 60 ], + 'test': [ 150, 150, 150 ] + }, + 'inactive-background': { + 'nordic': [ 0, 0, 0 ], + 'deep-dark': [ 0, 0, 0 ], + 'material': [ 255, 255, 255 ], // TODO: Will be calculated by material theme generator + 'light': [ 80, 80, 80 ], + 'bright': [ 60, 60, 60 ], + 'test': [ 60, 60, 60 ] + } +} + +const fonts = { + 'primary': { + 'nordic': 'Comfortaa', + 'deep-dark': 'Comfortaa', + 'material': 'Comfortaa', + 'light': 'Adwaita Sans', + 'bright': 'Adwaita Sans Extralight' + }, + 'accent': { + 'nordic': 'Adwaita Sans', + 'deep-dark': 'Adwaita Sans', + 'material': 'Adwaita Sans', + 'light': 'Cantarell', + 'bright': 'Contarell Thin' + }, + 'mono': { + 'nordic': 'Source Code Pro', + 'deep-dark': 'Source Code Pro', + 'material': 'Source Code Pro', + 'light': 'Jetbrains Mono', + 'bright': 'Jetbrains Mono', + } +} + +const iconTheme = { + 'nordic': 'Candy', + 'deep-dark': 'Candy', + 'material': 'Candy', + 'light': 'Candy', + 'bright': 'Candy' +} + +const yaziThemes = { + 'nordic': 'tokyo-night', + 'deep-dark': 'vscode-dark-modern', + 'material': 'dracula', + 'light': 'vscode-light-modern', + 'bright': 'vscode-light-modern', +} diff --git a/build/helpers/render.js b/build/helpers/render.js new file mode 100644 index 0000000..d0d7d58 --- /dev/null +++ b/build/helpers/render.js @@ -0,0 +1,132 @@ +const mustache = require( 'mustache' ); +const colorThief = require( '@janishutz/colorthief' ); +const fs = require( 'fs' ); +const path = require( 'path' ); +const util = require( './util' ); +const generateTheme = require( './generateTheme' ); +const chalk = require( 'chalk' ).default; +const inquirer = require( 'inquirer' ).default; + +const build = ( wallpaper, lockpaper, theme ) => { + console.log( '\n=> Extracting colours' ); + // Extract colour palette from chosen wallpaper using Color-Thief + colorThief.getPalette( wallpaper ).then( palette => { + palette = util.removeUselessColours( palette ); + // Define view options (for rendering with mustache) + if ( theme === 'test' ) { + palette = [ [ 255, 0, 0 ], [ 0, 255, 0 ], [ 0, 0, 255 ] ]; + } + + console.log( 'The following colours will be used based on your wallpaper: ' ); + let col = palette[ 0 ]; + console.log( ' => Primary accent colour: ' + chalk.rgb( col[ 0 ], col[ 1 ], col[ 2 ] )( util.renderColourAsHex( col ) ) ); + col = palette[ 1 ]; + console.log( ' => Secondary accent colour: ' + chalk.rgb( col[ 0 ], col[ 1 ], col[ 2 ] )( util.renderColourAsHex( col ) ) ); + col = palette[ 2 ]; + console.log( ' => Tertiary accent colour: ' + chalk.rgb( col[ 0 ], col[ 1 ], col[ 2 ] )( util.renderColourAsHex( col ) ) ); + + inquirer.prompt( [{ + type: 'confirm', + name: 'confirm-proceed-build', + message: 'Okay to proceed with these colours?' + } ] ).then( answer => { + if ( answer ) proceedWithBuild( wallpaper, lockpaper, theme, palette ); + else { + // Have the user pick any other of the extracted colours instead + let counter = -1; + const colourOptions = palette.map( c => { + counter++; + return { + name: chalk.rgb( c[ 0 ], c[ 1 ], c[ 2 ] )( util.renderColourAsHex( c ) ), + value: counter + } + } ) + inquirer.prompt( [ + { + 'type': 'list', + 'message': 'Pick the primary accent colour', + 'choices': colourOptions, + 'name': 'primary' + }, + { + 'type': 'list', + 'message': 'Pick the secondary accent colour', + 'choices': colourOptions, + 'name': 'secondary' + }, + { + 'type': 'list', + 'message': 'Pick the tertiary accent colour', + 'choices': colourOptions, + 'name': 'tertiary' + } + ] ).then( result => { + const p = [ palette[ result.primary ], palette[ result.secondary ], palette[ result.tertiary ] ]; + + proceedWithBuild( wallpaper, lockpaper, theme, p ); + } ).catch( e => { + console.error( e ); + process.exit( 1 ); + } ); + } + } ).catch( e => { + console.error( e ); + process.exit( 1 ); + } ); + } ).catch( e => { + console.error( e ); + console.error( '\n=> Failed to load image or retrieve colour palette from it' ); + process.exit( 1 ); + } ); +} + + +const proceedWithBuild = ( wallpaper, lockpaper, theme, palette ) => { + const view = generateTheme.generateTheme( theme, wallpaper, lockpaper, palette ); + + try { + fs.mkdir( path.join( __dirname, '/dist' ) ); + } catch ( e ) { + + } + + // recursively index files from config directory -> Maybe add a file to each + // directory to indicate whether or not to index files in it? + const fileList = util.treeWalker( path.join( __dirname, '/../../renderable/' ), '*', [ 'node_modules', '@girs', '.gitignore', '.git', 'flavours' ] ); + + for (let index = 0; index < fileList.length; index++) { + try { + render( fileList[ index ], view ); + } catch ( e ) { + console.error( '=> Render failed for ' + fileList[ index ] + ' with error ' + e ); + } + } + + util.themePreProcessor( path.join( __dirname, '/../../gtk-theme/src/gtk-4.0/gtk.css' ), 'src', 'dist' ); + util.themePreProcessor( path.join( __dirname, '/../../gtk-theme/src/gtk-3.0/gtk.css' ), 'src', 'dist' ); + render( path.join( __dirname, '/../../gtk-theme/src/colours.css' ), view, 'src', 'dist' ); +} + +/** + * @param {string} templatePath - absolute path to config directory + * @param {object} view - rendering config passed to mustache + * @param {string} originalDir - The original directory, defaults to renderable + * @param {string} newDir - the output directory override, defaults to config + */ +const render = ( templatePath, view, originalDir = 'renderable', newDir = 'config' ) => { + // Load template from disk (all can be found in /renderable) + // TODO: Make exclusion better plus copy other files maybe? + const template = '' + fs.readFileSync( templatePath ); + const outPath = path.join( templatePath.replace( originalDir, newDir ) ); + console.log( '=> Rendering to ' + outPath ); + try { + fs.mkdirSync( path.dirname( outPath ), { + recursive: true, + } ); + } catch ( e ) { + console.error( e ); + } + fs.writeFileSync( outPath, mustache.render( template, view ) ); +} + +module.exports = build; diff --git a/build/helpers/util.js b/build/helpers/util.js new file mode 100644 index 0000000..c47fd3a --- /dev/null +++ b/build/helpers/util.js @@ -0,0 +1,170 @@ +const convert = require( 'color-convert' ); +const fs = require( 'fs' ); +const path = require( 'path' ); + +/** + * Recursively find all files with extension in a directory + * @param {string} dir The directory to search. Either absolute or relative path + * @param {string} extension The file extension to look for + * @returns {string[]} returns a list of html files with their full path + */ +const treeWalker = ( dir, extension, ignoreList ) => { + const ls = fs.readdirSync( dir ); + const fileList = []; + for ( let file in ls ) { + if ( fs.statSync( path.join( dir, ls[ file ] ) ).isDirectory() ) { + // Filter ignored directories + if ( ignoreList === undefined || !ignoreList.includes( ls[ file ] ) ) { + const newFiles = treeWalker( path.join( dir, ls[ file ] ), extension, ignoreList ); + for (let file = 0; file < newFiles.length; file++) { + fileList.push( newFiles[ file ] ); + } + } + } else if ( extension == '*' || ls[ file ].includes( extension ) ) { + if ( ignoreList === undefined || !ignoreList.includes( ls[ file ] ) ) { + fileList.push( path.join( dir, ls[ file ] ) ); + } + } + } + + return fileList; +} + +const renderColourAsHex = ( colour ) => { + return '#' + convert.default.rgb.hex( colour[ 0 ], colour[ 1 ], colour[ 2 ] ); +} + +const renderColourAsRGB = ( colour ) => { + return `rgb(${ colour[ 0 ] }, ${ colour[ 1 ] }, ${ colour[ 2 ] })` +} + +const renderColourAsRGBA = ( colour, ambiance ) => { + return `rgba(${ colour[ 0 ] }, ${ colour[ 1 ] }, ${ colour[ 2 ] }, ${ ambiance })` +} + +const renderColourAsRGBHex = ( colour ) => { + const hexCol = convert.default.rgb.hex( colour[ 0 ], colour[ 1 ], colour[ 2 ] ); + return `rgb(${hexCol})`.toLowerCase(); +} + +function decimalToHex(decimal) { + const hexValue = Math.round(decimal * 255); + return hexValue.toString(16).padStart(2, '0'); +} + +const renderColourAsRGBAHex = ( colour, ambiance ) => { + const hexCol = convert.default.rgb.hex( colour[ 0 ], colour[ 1 ], colour[ 2 ] ); + return `rgba(${hexCol}${decimalToHex(ambiance)})`.toLowerCase(); +} + +const removeUselessColours = ( palette ) => { + const p = []; + for ( let i = 0; i < palette.length; i++ ) { + const luminance = calculateLuminance( palette[ i ] ); + if ( luminance < 215 && luminance > 40 ) { + p.push( palette[ i ] ); + } + } + + return p; +} + +const calculateLuminance = ( colour ) => { + return colour[ 0 ] + colour[ 1 ] + colour[ 2 ] / 3; +} + + +/* + * Replace the colours with variable names + */ +const replacements = { + '#0f1011': '@bg', + 'rgba(9, 9, 10, 0.9)': '@bg_rgba_07', + 'rgba(26, 28, 30, 0.3)': '@bg_rgba_05', + '#000': '@bg_accent', + '#000000': '@bg_accent', + 'rgba(0, 0, 0, 0.7)': '@bg_accent_rgba_07', + 'rgba(0, 0, 0, 0.6)': '@bg_accent_rgba_06', + 'rgba(0, 0, 0, 0.5)': '@bg_accent_rgba_05', + 'rgba(0, 0, 0, 0.4)': '@bg_accent_rgba_04', + 'rgba(0, 0, 0, 0.3)': '@bg_accent_rgba_03', + 'rgba(0, 0, 0, 0.12)': '@bg_accent_rgba_015', + 'rgba(0, 0, 0, 0.08)': '@bg_accent_rgba_01', + 'rgba(9, 9, 10, 0.9)': '@bg_inactive', + '#80868b': '@inactive', + 'rgba(128, 134, 139, 0.7)': '@inactive_rgba_07', + 'rgba(128, 134, 139, 0.5)': '@inactive_rgba_05', + 'rgba(128, 134, 139, 0.3)': '@inactive_rgba_03', + 'rgba(128, 134, 139, 0.2)': '@inactive_rgba_02', + // '#555A': '@shadow_rgba', + // '#555': '@shadow', + '#387db7': '@accent', + 'rgba(56, 125, 183, 0.5)': '@accent_rgba_05', + 'rgba(56, 125, 183, 0.32)': '@accent_rgba_03', + 'rgba(56, 125, 183, 0.24)': '@accent_rgba_02', + 'rgba(56, 125, 183, 0.16)': '@accent_rgba_015', + 'rgba(56, 125, 183, 0.12)': '@accent_rgba_011', + 'rgba(56, 125, 183, 0.08)': '@accent_rgba_007', + '#1a1a1b': '@accent_gradient_5', + '#1f1f21': '@accent_gradient_4', + '#1a2530': '@accent_gradient_3', + '#1c2c3b': '@accent_gradient_2', + '#1e3040': '@accent_gradient_1', + '#4887bd': '@accent_gradient_inverse_1', + '#508dc0': '@accent_gradient_inverse_2', + '#5892c3': '@accent_gradient_inverse_3', + '#673ab7': '@accent2', + 'rgba(103, 58, 183, 0.12)': '@accent2_rgba_015', + '#fff': '@fg_accent', + 'rgba(255, 255, 255, 0.7)': '@fg_accent_rgba_07', + 'rgba(255, 255, 255, 0.6)': '@fg_accent_rgba_06', + 'rgba(255, 255, 255, 0.5)': '@fg_accent_rgba_05', + 'rgba(255, 255, 255, 0.3)': '@fg_accent_rgba_03', + 'rgba(255, 255, 255, 0.2)': '@fg_accent_rgba_02', + '#9e9e9e': '@fg', + 'rgba(158, 158, 158, 0.7)': '@fg_rgba_07', + 'rgba(158, 158, 158, 0.6)': '@fg_rgba_06', + 'rgba(158, 158, 158, 0.5)': '@fg_rgba_05', + 'rgba(158, 158, 158, 0.3)': '@fg_rgba_03', + 'rgba(158, 158, 158, 0.2)': '@fg_rgba_02', + 'rgba(158, 158, 158, 0.1168)': '@fg_rgba_01' +}; +const themePreProcessor = ( file, replacement, out ) => { + const colours = Object.keys( replacements ); + let data = '' + fs.readFileSync( file ); + for (let index = 0; index < colours.length; index++) { + const colour = colours[index]; + data = data.replaceAll(colour, replacements[ colour ]); + } + + const outPath = file.replace( replacement, out ); + try { + fs.mkdirSync( path.dirname( outPath ), { + recursive: true, + } ); + } catch ( e ) { + console.error( e ); + } + + fs.writeFileSync( outPath, data ); +} + +const getGradientColour = ( colour, index, multiplier ) => { + if ( index === 0 ) { + return [ colour[ 0 ] * multiplier, colour[ 1 ] * multiplier, colour[ 2 ] * multiplier ]; + } + const gradient = getGradientColour( colour, index - 1, multiplier ); + return [ Math.min( 255, gradient[ 0 ] * multiplier ), Math.min( 255, gradient[ 1 ] * multiplier ), Math.min( 255, gradient[ 2 ] * multiplier ) ]; +} + +module.exports = { + treeWalker, + renderColourAsHex, + renderColourAsRGB, + renderColourAsRGBA, + renderColourAsRGBHex, + renderColourAsRGBAHex, + themePreProcessor, + getGradientColour, + removeUselessColours +} diff --git a/build/package.json b/build/package.json new file mode 100644 index 0000000..3f42bbb --- /dev/null +++ b/build/package.json @@ -0,0 +1,23 @@ +{ + "name": "janishutz-config-build", + "version": "1.0.0", + "description": "Build janishutz's dotfiles configs", + "repository": { + "type": "git", + "url": "https://git.janishutz.com/janishutz/dotfiles" + }, + "license": "GPL-3.0-or-later", + "author": "janishutz", + "type": "commonjs", + "main": "build.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "dependencies": { + "@janishutz/colorthief": "^3.0.2", + "chalk": "^5.4.1", + "color-convert": "^3.0.1", + "inquirer": "^12.5.0", + "mustache": "^4.2.0" + } +} diff --git a/build/themalizer.js b/build/themalizer.js new file mode 100644 index 0000000..62a2a65 --- /dev/null +++ b/build/themalizer.js @@ -0,0 +1,41 @@ +const fs = require( 'fs' ); +const path = require( 'path' ); + +const data = '' + fs.readFileSync( '/usr/share/themes/Material-Black-Blueberry/gtk-4.0/gtk.css' ); + +let lineNumber = 1; +const indexer = {}; +for (let i = 0; i < data.length; i++) { + const char = data[i]; + + if ( char === '\n' ) { + lineNumber++; + } else if ( char === '#' ) { + const extract = data.substring( i ); + const col = extract.slice( 0, extract.indexOf( '\n' ) ); + if ( !indexer[ col ] ) { + indexer[ col ] = []; + } + indexer[ col ].push( lineNumber ); + } else if ( char === 'r' ) { + const extract = data.substring( i ); + if ( extract.slice( 0, 3 ) === 'rgb' ) { + const col = extract.slice( 0, extract.indexOf( '\n' ) ); + if ( !indexer[ col ] ) { + indexer[ col ] = []; + } + indexer[ col ].push( lineNumber ); + } + } +} + + +// Output +const keys = Object.keys( indexer ); +for (let i = 0; i < keys.length; i++) { + const element = keys[i]; + + if ( element.length <= 25 ) { + console.log( 'Colour ' + element.slice( 0, element.length - 1 ) + ' appears on ' + indexer[ element ] ); + } +} diff --git a/collectLaptop.sh b/collectLaptop.sh deleted file mode 100755 index a887409..0000000 --- a/collectLaptop.sh +++ /dev/null @@ -1,33 +0,0 @@ -#! /bin/bash - -# Copy VSCodium settings -mkdir -p ./general/configs/VSCodium/User -cp ~/.config/VSCodium/product.json ./general/configs/VSCodium/ -cp -r ~/.config/VSCodium/User/snippets ./general/configs/VSCodium/User/ -cp ~/.config/VSCodium/User/keybindings.json ./general/configs/VSCodium/User/ -cp ~/.config/VSCodium/User/settings.json ./general/configs/VSCodium/User/ -cp ~/.config/VSCodium/User/syncLocalSettings.json ./general/configs/VSCodium/User/ - -rm ./laptop/installedPackages.txt -pacman -Qq > ./laptop/installedPackages.txt - -# copy other config files -cp -r ~/.config/hypr ./laptop/configs -cp -r ~/.config/waybar ./laptop/configs -mkdir ./laptop/configs/rofi -cp ~/.config/rofi/config.rasi ./laptop/configs/rofi/ -cp -r ~/.config/wlogout ./general/configs -cp -r ~/.config/mpv ./general/configs -cp -r ~/.config/dunst ./general/configs -cp -r ~/.config/fish ./general/configs -cp -r ~/.config/rofi ./general/configs -cp -r ~/.config/yazi ./general/configs -cp -r ~/.config/kitty ./general/configs -cp -r ~/.config/Kvantum/ ./general/configs/ -cp -r ~/.config/lazygit/ ./general/configs/ -rm -rf ./laptop/configs/hypr/hyprland/ -cp -r ~/.config/hypr/hyprland/* ./general/hyprland/ - -echo '=> Collected all laptop config files successfully' - -echo "Also consider running nvim-collect!" diff --git a/config.json b/config.json new file mode 100644 index 0000000..e1dd607 --- /dev/null +++ b/config.json @@ -0,0 +1,5 @@ +{ + "gen": { + "overrides": {} + } +} diff --git a/general/configs/Thunar/accels.scm b/config/Thunar/accels.scm similarity index 100% rename from general/configs/Thunar/accels.scm rename to config/Thunar/accels.scm diff --git a/general/configs/Thunar/uca.xml b/config/Thunar/uca.xml similarity index 100% rename from general/configs/Thunar/uca.xml rename to config/Thunar/uca.xml diff --git a/config/ags/launcher/.gitignore b/config/ags/launcher/.gitignore new file mode 100644 index 0000000..298eb4d --- /dev/null +++ b/config/ags/launcher/.gitignore @@ -0,0 +1,2 @@ +node_modules/ +@girs/ diff --git a/config/ags/launcher/app.ts b/config/ags/launcher/app.ts new file mode 100644 index 0000000..81a1abf --- /dev/null +++ b/config/ags/launcher/app.ts @@ -0,0 +1,19 @@ +import { App } from "astal/gtk4" +import style from "./style.scss" +import Bar from "./ui/Launcher" + +App.start({ + css: style, + main() { + App.get_monitors().map(Bar) + }, + requestHandler(request, res) { + if ( request === 'open' ) { + res( 'ok' ); + } else if ( request === 'close' ) { + res( 'ok' ); + } else if ( request === 'toggle' ) { + res( 'ok' ); + } + } +}) diff --git a/config/ags/launcher/definitions/components.d.ts b/config/ags/launcher/definitions/components.d.ts new file mode 100644 index 0000000..1cd1dd7 --- /dev/null +++ b/config/ags/launcher/definitions/components.d.ts @@ -0,0 +1,75 @@ +/* +* dotfiles - components.d.ts +* +* Created by Janis Hutz 03/22/2025, Licensed under the GPL V3 License +* https://janishutz.com, development@janishutz.com +* +* +*/ + +import type { UIComponent, ResultElement } from "./rendering"; + + +export interface App extends ResultElement { + /** + * The app start command that will be executed + */ + command: string; +} + +// TODO: Finish +export interface DictionaryEntry extends ResultElement { + /** + * Execute no command + */ + action: null; + + + /** + * The dictionary definition + */ + definition: string; +} + +export interface CMDOutput extends ResultElement { + /** + * Stdout from the command that was run + */ + result: string; +} + +export interface Calculation extends ResultElement { + /** + * THe calculation result + */ + result: string; +} + + +/* ************* * + * UI Components * + * ************* */ + +export interface LargeUIComponent extends UIComponent { + /** + * The number of items to display per line. Image size will automatically be scaled + * based on width + */ + itemsPerLine: number; +} + +export interface MediumUIComponent extends UIComponent {} + +export interface ListUIComponent extends UIComponent {} + +export interface DictionaryUIComponent extends UIComponent { + elements: DictionaryEntry[]; +} + +export interface CMDOutputUIComponent extends UIComponent { + elements: CMDOutput[]; +} + +export interface CalculationUIComponent extends UIComponent { + elements: Calculation[]; +} diff --git a/config/ags/launcher/definitions/rendering.d.ts b/config/ags/launcher/definitions/rendering.d.ts new file mode 100644 index 0000000..97c6e8e --- /dev/null +++ b/config/ags/launcher/definitions/rendering.d.ts @@ -0,0 +1,60 @@ +/* +* dotfiles - rendering.d.ts +* +* Created by Janis Hutz 03/22/2025, Licensed under the GPL V3 License +* https://janishutz.com, development@janishutz.com +* +* +*/ + +export interface UIComponent { + /** + * The title of the component (like a category name), shown above small divider line + */ + title: string; + + /** + * ResultElement list, made up of all elements that should be shown + */ + elements: ResultElement[]; + + /** + * Choose how many elements to show before truncating (will expand when command is run) + */ + truncate: number; + + /** + * The weight of the element (determines order) + */ + weight: number; +} + + +export interface ResultElement { + /** + * The name of the result element + */ + name: string; + + /** + * Path to the image to be displayed in the UI + */ + img: string; + + /** + * The weight of the element (determines order) + */ + weight: number; + + /** + * The action to be executed + */ + action: Action; + + /** + * The font size of the text (optional) + */ + fontSize: number | undefined; +} + +type Action = '' | null; diff --git a/config/ags/launcher/env.d.ts b/config/ags/launcher/env.d.ts new file mode 100644 index 0000000..467c0a4 --- /dev/null +++ b/config/ags/launcher/env.d.ts @@ -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 +} diff --git a/config/ags/launcher/helpers/fzf/dist/fzf.js b/config/ags/launcher/helpers/fzf/dist/fzf.js new file mode 100644 index 0000000..c240cf7 --- /dev/null +++ b/config/ags/launcher/helpers/fzf/dist/fzf.js @@ -0,0 +1,32 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +const fast_fuzzy_1 = require("fast-fuzzy"); +const fs_1 = __importDefault(require("fs")); +// Get list source from args +// ARGS: type source +// Then we read query from stdin to not restart indexing & the like for each keystroke +let data = []; +if (process.argv[2] === 'fs') { + if (process.argv[3].includes('.json')) { + data = JSON.parse('' + fs_1.default.readFileSync(process.argv[3])); + } + else if (process.argv[3].includes('.txt')) { + data = ('' + fs_1.default.readFileSync(process.argv[3])).split(','); + } + else if (fs_1.default.statSync(process.argv[3]).isDirectory()) { + data = fs_1.default.readdirSync(process.argv[3]); + } +} +else if (process.argv[2] === 'arg') { + data = process.argv[3].split(','); +} +else { + throw new Error('Invalid argument at position 1. Can be either fs or arg, not ' + process.argv[2]); +} +process.stdin.on("data", (query) => { + // On stdin submit (which the other client will have to support) process data + console.log((0, fast_fuzzy_1.search)(query.toString(), data)); +}); diff --git a/config/ags/launcher/helpers/fzf/package.json b/config/ags/launcher/helpers/fzf/package.json new file mode 100644 index 0000000..44e0339 --- /dev/null +++ b/config/ags/launcher/helpers/fzf/package.json @@ -0,0 +1,18 @@ +{ + "name": "fzf", + "version": "1.0.0", + "description": "", + "license": "ISC", + "author": "", + "type": "commonjs", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "devDependencies": { + "@types/node": "^22.14.0" + }, + "dependencies": { + "fast-fuzzy": "^1.12.0" + } +} diff --git a/config/ags/launcher/helpers/fzf/src/fzf.ts b/config/ags/launcher/helpers/fzf/src/fzf.ts new file mode 100644 index 0000000..09e5173 --- /dev/null +++ b/config/ags/launcher/helpers/fzf/src/fzf.ts @@ -0,0 +1,27 @@ +import { search } from 'fast-fuzzy'; +import fs from 'fs'; + +// Get list source from args +// ARGS: type source +// Then we read query from stdin to not restart indexing & the like for each keystroke + +let data: string[] = []; +if ( process.argv[ 2 ] === 'fs' ) { + if ( process.argv[ 3 ].includes( '.json' ) ) { + data = JSON.parse( '' + fs.readFileSync( process.argv[ 3 ] ) ); + } else if ( process.argv[ 3 ].includes( '.txt' ) ) { + data = ( '' + fs.readFileSync( process.argv[ 3 ] ) ).split( ',' ); + } else if ( fs.statSync( process.argv[ 3 ] ).isDirectory() ) { + data = fs.readdirSync( process.argv[ 3 ] ); + } +} else if ( process.argv[ 2 ] === 'arg' ) { + data = process.argv[ 3 ].split( ',' ); +} else { + throw new Error( 'Invalid argument at position 1. Can be either fs or arg, not ' + process.argv[ 2 ] ); +} + +process.stdin.on( "data", ( query ) => { + // On stdin submit (which the other client will have to support) process data + + console.log( search( query.toString(), data ) ); +} ); diff --git a/config/ags/launcher/helpers/fzf/tsconfig.json b/config/ags/launcher/helpers/fzf/tsconfig.json new file mode 100644 index 0000000..a0fcf4c --- /dev/null +++ b/config/ags/launcher/helpers/fzf/tsconfig.json @@ -0,0 +1,13 @@ +{ + "compilerOptions": { + "outDir": "./dist", + "allowJs": true, + "target": "ES6", + "skipLibCheck": true, + "allowSyntheticDefaultImports": true, + "types": ["node"], + "module": "NodeNext", + "moduleResolution": "NodeNext" + }, + "include": [ "./src/**/*" ], +} \ No newline at end of file diff --git a/config/ags/launcher/package.json b/config/ags/launcher/package.json new file mode 100644 index 0000000..44226f2 --- /dev/null +++ b/config/ags/launcher/package.json @@ -0,0 +1,6 @@ +{ + "name": "astal-shell", + "dependencies": { + "astal": "/usr/share/astal/gjs" + } +} diff --git a/config/ags/launcher/style.scss b/config/ags/launcher/style.scss new file mode 100644 index 0000000..1d0d3a9 --- /dev/null +++ b/config/ags/launcher/style.scss @@ -0,0 +1,20 @@ +// https://gitlab.gnome.org/GNOME/gtk/-/blob/gtk-3-24/gtk/theme/Adwaita/_colors-public.scss +$fg-color: #{"@theme_fg_color"}; +$bg-color: #{"@theme_bg_color"}; + +window.Bar { + background: transparent; + color: $fg-color; + font-weight: bold; + + >centerbox { + background: $bg-color; + border-radius: 10px; + margin: 8px; + } + + button { + border-radius: 8px; + margin: 2px; + } +} diff --git a/config/ags/launcher/tsconfig.json b/config/ags/launcher/tsconfig.json new file mode 100644 index 0000000..a92bc43 --- /dev/null +++ b/config/ags/launcher/tsconfig.json @@ -0,0 +1,14 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "compilerOptions": { + "experimentalDecorators": true, + "strict": true, + "target": "ES2022", + "module": "ES2022", + "moduleResolution": "Bundler", + // "checkJs": true, + // "allowJs": true, + "jsx": "react-jsx", + "jsxImportSource": "astal/gtk4", + } +} diff --git a/config/ags/launcher/ui/Launcher.tsx b/config/ags/launcher/ui/Launcher.tsx new file mode 100644 index 0000000..90714c4 --- /dev/null +++ b/config/ags/launcher/ui/Launcher.tsx @@ -0,0 +1,32 @@ +import { App, Astal, Gtk, Gdk } from "astal/gtk4" +import { Variable } from "astal" + +function hide() { + App.get_window("launcher")!.hide() +} + +export default function Launcher(monitor: Gdk.Monitor) { + const { CENTER } = Gtk.Align + const width = Variable(1000) + + const text = Variable("") + + return { + text.set("") + width.set(self.get_current_monitor().get_width_mm()) + }} + onKeyPressed={(self, keyval, keycode) => { + print( 'key pressed: ' + keyval + ' which has code ' + keycode ); + }}> + + + + + +} diff --git a/config/ags/launcher/ui/components/calc.tsx b/config/ags/launcher/ui/components/calc.tsx new file mode 100644 index 0000000..eec305a --- /dev/null +++ b/config/ags/launcher/ui/components/calc.tsx @@ -0,0 +1,3 @@ +export default () => { + return +} diff --git a/general/configs/dunst/mcLarenDunst b/config/ags/launcher/ui/components/large.tsx similarity index 100% rename from general/configs/dunst/mcLarenDunst rename to config/ags/launcher/ui/components/large.tsx diff --git a/general/configs/lazygit/config.yml b/config/ags/launcher/ui/components/list.tsx similarity index 100% rename from general/configs/lazygit/config.yml rename to config/ags/launcher/ui/components/list.tsx diff --git a/general/configs/rofi/spotlight/history.txt b/config/ags/launcher/ui/components/medium.tsx similarity index 100% rename from general/configs/rofi/spotlight/history.txt rename to config/ags/launcher/ui/components/medium.tsx diff --git a/config/ags/launcher/util/file.ts b/config/ags/launcher/util/file.ts new file mode 100644 index 0000000..d7f79dc --- /dev/null +++ b/config/ags/launcher/util/file.ts @@ -0,0 +1,12 @@ +/* +* dotfiles - file.ts +* +* Created by Janis Hutz 03/22/2025, Licensed under the GPL V3 License +* https://janishutz.com, development@janishutz.com +* +* +*/ + +import { readFileAsync, writeFileAsync, monitorFile } from "astal"; + + diff --git a/config/ags/launcher/util/fzf.ts b/config/ags/launcher/util/fzf.ts new file mode 100644 index 0000000..5951070 --- /dev/null +++ b/config/ags/launcher/util/fzf.ts @@ -0,0 +1,24 @@ +/* +* dotfiles - fzf.ts +* +* Created by Janis Hutz 03/30/2025, Licensed under the GPL V3 License +* https://janishutz.com, development@janishutz.com +* +* +*/ + +import AstalApps from "gi://AstalApps?version=0.1" + +// TODO: For all astal apps, read a global colours config file +const fzfApplication = ( query: string ) => { + const apps = new AstalApps.Apps() + return apps.fuzzy_query( query ); +} + +const fzfCmd = ( query: string ) => { + +} + +export default { + fzfApplication +} diff --git a/config/ags/launcher/util/search.ts b/config/ags/launcher/util/search.ts new file mode 100644 index 0000000..f150ab4 --- /dev/null +++ b/config/ags/launcher/util/search.ts @@ -0,0 +1,51 @@ +/* +* dotfiles - search.ts +* +* Created by Janis Hutz 03/22/2025, Licensed under the GPL V3 License +* https://janishutz.com, development@janishutz.com +* +* +*/ + +import subprocessRunner from "./subprocessRunner"; +import fzf from "./fzf"; + +const preprocess = ( input: string ) => { + // Find out what kind of instruction to process + if ( input.startsWith( ':' ) ) { + processCommand( input.substring( 1, input.indexOf( ' ' ) ), input.substring( input.indexOf( ' ' ) ).split( ' ' ) ); + } else if ( input.startsWith( '!' ) ) { + processBang( input.substring( 1, input.indexOf( ' ' ) ), input.substring( input.indexOf( ' ' ) ) ); + } else { + // Determine if entered string is calculation or not + // We can easily do that by asking qalc (qalculate cli) if this is fine + subprocessRunner.executeCommand( 'qalc "' + input + '"' ).then( out => { + // we get a calculation result here + print( out ); + processCalculation( out ); + } ).catch( err => { + processSearch( input ); + print( err ); + } ); + } +} + +const processSearch = ( input: string ) => { + +} + +const processCalculation = ( output: string ) => { + +} + +const processCommand = ( cmd: string, args: string[] ) => { + +} + +const processBang = ( bang: string, input: string ) => { + +} + +export default { + preprocess +} diff --git a/config/ags/launcher/util/subprocessRunner.ts b/config/ags/launcher/util/subprocessRunner.ts new file mode 100644 index 0000000..2946c88 --- /dev/null +++ b/config/ags/launcher/util/subprocessRunner.ts @@ -0,0 +1,43 @@ +/* + * dotfiles - subprocessRunner.ts + * + * Created by Janis Hutz 03/22/2025, Licensed under the GPL V3 License + * https://janishutz.com, development@janishutz.com + * + * + */ + +import { subprocess, execAsync, Process } from "astal/process"; + +// TODO: Get cwd and the likes to then use that to run JavaScript files with node / python with python, etc + +/** + * Run a subprocess. If you simply want to run a command that doesn't need continuous updates + * run executeCommand instead. + * @param cmd - The command to be run + * @param onOut - Calback function for stdout of the subprocess + * @param onErr - [TODO:description] + * @returns [TODO:return] + */ +const startSubProcess = ( + cmd: string | string[], + onOut: (stdout: string) => void, + onErr: (stderr: string) => void | undefined, +): Process => { + return subprocess( cmd, onOut, onErr ); +}; + +/** + * Run a command. If you need continuous updates, run startSubProcess instead + * @param cmd - The command to be run. Either a string or an array of strings + * @returns A Promise resolving to stdout of the command + */ +const executeCommand = (cmd: string | string[]): Promise => { + return execAsync( cmd ); +}; + + +export default { + startSubProcess, + executeCommand +} diff --git a/config/ags/notifications/.gitignore b/config/ags/notifications/.gitignore new file mode 100644 index 0000000..298eb4d --- /dev/null +++ b/config/ags/notifications/.gitignore @@ -0,0 +1,2 @@ +node_modules/ +@girs/ diff --git a/config/ags/notifications/app.ts b/config/ags/notifications/app.ts new file mode 100644 index 0000000..54db34f --- /dev/null +++ b/config/ags/notifications/app.ts @@ -0,0 +1,32 @@ +import { App } from "astal/gtk3" +import style from "./style.scss" + +import not from "./handler" + +App.start({ + instanceName: "notifier", + css: style, + main() { + not.startNotificationHandler( 0, App.get_monitors()[0] ) + }, + requestHandler(request, res) { + if ( request == 'show' ) { + not.openNotificationMenu( 0 ); + res( 'Showing all open notifications' ); + } else if ( request == 'hide' ) { + not.closeNotificationMenu( 0 ); + res( 'Hid all notifications' ); + } else if ( request == 'clear' ) { + not.clearAllNotifications( 0 ); + res( 'Cleared all notifications' ); + } else if ( request == 'clear-newest' ) { + not.clearNewestNotifications( 0 ); + res( 'Cleared newest notification' ); + } else if ( request == 'toggle' ) { + not.toggleNotificationMenu( 0 ); + res( 'Toggled notifications' ); + } else { + res( 'Unknown command!' ); + } + }, +}) diff --git a/config/ags/notifications/env.d.ts b/config/ags/notifications/env.d.ts new file mode 100644 index 0000000..467c0a4 --- /dev/null +++ b/config/ags/notifications/env.d.ts @@ -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 +} diff --git a/config/ags/notifications/handler.tsx b/config/ags/notifications/handler.tsx new file mode 100644 index 0000000..0c3182d --- /dev/null +++ b/config/ags/notifications/handler.tsx @@ -0,0 +1,206 @@ +/* +* dotfiles - handler.ts +* +* Created by Janis Hutz 03/21/2025, Licensed under the GPL V3 License +* https://janishutz.com, development@janishutz.com +* +* +*/ + +import { Astal, Gtk, Gdk } from "astal/gtk3" +import Notifd from "gi://AstalNotifd"; +import Notification from "./notifications/notifications"; +import { type Subscribable } from "astal/binding"; +import { Variable, bind, timeout } from "astal" + +// Config +const TIMEOUT_DELAY = 5000; + +class Notifier implements Subscribable { + private display: Map = new Map(); + private notifications: Map = new Map(); + + private notifd: Notifd.Notifd; + private subscriberData: Variable = Variable( [] ); + private instanceID: number; + private menuOpen: boolean; + + /** + * Sets up the notifier + */ + constructor( id: number ) { + this.instanceID = id; + this.menuOpen = false; + this.notifd = Notifd.get_default(); + this.notifd.ignoreTimeout = true; + + this.notifd.connect( 'notified', ( _, id ) => { + this.add( id ); + } ); + + this.notifd.connect( 'resolved', ( _, id ) => { + this.delete( id ); + } ); + } + + private notify () { + this.subscriberData.set( [ ...this.display.values() ].reverse() ); + } + + private add ( id: number ) { + this.notifications.set( id, this.notifd.get_notification( id )! ); + this.show( id ); + } + + /** + * Show an element on screen + * @param id - The id of the element to be shown + */ + private show ( id: number ) { + this.set( id, Notification( { + notification: this.notifications.get( id )!, + onHoverLost: () => { + if ( !this.menuOpen ) { + this.hide( id ); + } + }, + setup: () => timeout( TIMEOUT_DELAY, () => { + if ( !this.menuOpen ) { + this.hide( id ); + } + } ), + id: id, + delete: deleteHelper, + instanceID: this.instanceID + } ) ) + } + + /** + * Set a selected widget to be shown + * @param id - The id of the element to be referenced for later + * @param widget - A GTK widget instance + */ + private set ( id: number, widget: Gtk.Widget ) { + this.display.get( id )?.destroy(); + this.display.set( id, widget ); + this.notify(); + } + + /** + * Hide, not delete notification (= send to notification centre) + * @param id - The id of the notification to hide + */ + private hide ( id: number ) { + this.display.get( id )?.destroy(); + this.display.delete( id ); + this.notify(); + } + + /** + * Delete a notification (from notification centre too) + * @param id - The id of the notification to hide + */ + delete ( id: number ) { + this.hide( id ); + this.notifications.get( id )?.dismiss(); + this.notifications.delete( id ); + if ( this.notifications.size == 0 ) { + this.menuOpen = false; + } + } + + openNotificationMenu () { + // Show all notifications that have not been cleared + if ( this.notifications.size > 0 ) { + this.menuOpen = true; + this.notifications.forEach( ( _, id ) => { + this.show( id ); + } ) + } + } + + hideNotifications () { + this.menuOpen = false; + this.notifications.forEach( ( _, id ) => { + this.hide( id ); + } ); + } + + toggleNotificationMenu () { + if ( this.menuOpen ) { + this.hideNotifications(); + } else { + this.openNotificationMenu(); + } + } + + clearAllNotifications () { + this.menuOpen = false; + this.notifications.forEach( ( _, id ) => { + this.delete( id ); + } ) + } + + clearNewestNotification () { + this.delete( [ ...this.notifications.keys() ][0] ); + } + + subscribe(callback: (value: unknown) => void): () => void { + return this.subscriberData.subscribe( callback ); + } + + get() { + return this.subscriberData.get(); + } +} + +const notifiers: Map = new Map(); +const deleteHelper = ( id: number, instanceID: number ) => { + notifiers.get( instanceID )?.delete( id ); +} + +const openNotificationMenu = ( id: number ) => { + notifiers.get( id )?.openNotificationMenu(); +} + +const closeNotificationMenu = ( id: number ) => { + notifiers.get( id )?.hideNotifications(); +} + +const toggleNotificationMenu = ( id: number ) => { + notifiers.get( id )?.toggleNotificationMenu(); +} + +const clearAllNotifications = ( id: number ) => { + notifiers.get( id )?.clearAllNotifications(); +} + +const clearNewestNotifications = ( id: number ) => { + notifiers.get( id )?.clearNewestNotification(); +} + +const startNotificationHandler = (id: number, gdkmonitor: Gdk.Monitor) => { + const { TOP, RIGHT } = Astal.WindowAnchor + const notifier: Notifier = new Notifier( id ); + notifiers.set( id, notifier ); + + return + + {bind(notifier)} + + +} + + +export default { + startNotificationHandler, + openNotificationMenu, + closeNotificationMenu, + clearAllNotifications, + clearNewestNotifications, + toggleNotificationMenu +} diff --git a/config/ags/notifications/notifications/notifications.scss b/config/ags/notifications/notifications/notifications.scss new file mode 100644 index 0000000..a32f08b --- /dev/null +++ b/config/ags/notifications/notifications/notifications.scss @@ -0,0 +1,125 @@ +@use "sass:string"; + +@function gtkalpha($c, $a) { + @return string.unquote("alpha(#{$c},#{$a})"); +} + +// https://gitlab.gnome.org/GNOME/gtk/-/blob/gtk-3-24/gtk/theme/Adwaita/_colors-public.scss +$fg-color: #{"@theme_fg_color"}; +$bg-color: #{"@theme_bg_color"}; +$error: red; + +window.NotificationPopups { + all: unset; +} + +eventbox.Notification { + + &:first-child>box { + margin-top: 1rem; + } + + &:last-child>box { + margin-bottom: 1rem; + } + + // eventboxes can not take margins so we style its inner box instead + >box { + min-width: 400px; + border-radius: 13px; + background-color: $bg-color; + margin: .5rem 1rem .5rem 1rem; + box-shadow: 2px 3px 8px 0 gtkalpha(black, .4); + border: 1pt solid gtkalpha($fg-color, .03); + } + + &.critical>box { + border: 1pt solid gtkalpha($error, .4); + + .header { + + .app-name { + color: gtkalpha($error, .8); + + } + + .app-icon { + color: gtkalpha($error, .6); + } + } + } + + .header { + padding: .5rem; + color: gtkalpha($fg-color, 0.5); + + .app-icon { + margin: 0 .4rem; + } + + .app-name { + margin-right: .3rem; + font-weight: bold; + + &:first-child { + margin-left: .4rem; + } + } + + .time { + margin: 0 .4rem; + } + + button { + padding: .2rem; + min-width: 0; + min-height: 0; + } + } + + separator { + margin: 0 .4rem; + background-color: gtkalpha($fg-color, .1); + } + + .content { + margin: 1rem; + margin-top: .5rem; + + .summary { + font-size: 1.2em; + color: $fg-color; + } + + .body { + color: gtkalpha($fg-color, 0.8); + } + + .image { + border: 1px solid gtkalpha($fg-color, .02); + margin-right: .5rem; + border-radius: 9px; + min-width: 100px; + min-height: 100px; + background-size: cover; + background-position: center; + } + } + + .actions { + margin: 1rem; + margin-top: 0; + + button { + margin: 0 .3rem; + + &:first-child { + margin-left: 0; + } + + &:last-child { + margin-right: 0; + } + } + } +} diff --git a/config/ags/notifications/notifications/notifications.tsx b/config/ags/notifications/notifications/notifications.tsx new file mode 100644 index 0000000..de4e7b2 --- /dev/null +++ b/config/ags/notifications/notifications/notifications.tsx @@ -0,0 +1,112 @@ +// From astal examples + +import { GLib } from "astal" +import { Gtk, Astal } from "astal/gtk3" +import { type EventBox } from "astal/gtk3/widget" +import Notifd from "gi://AstalNotifd" + +const isIcon = (icon: string) => + !!Astal.Icon.lookup_icon(icon) + +const fileExists = (path: string) => + GLib.file_test(path, GLib.FileTest.EXISTS) + +const time = (time: number, format = "%H:%M") => GLib.DateTime + .new_from_unix_local(time) + .format(format)! + +const urgency = (n: Notifd.Notification) => { + const { LOW, NORMAL, CRITICAL } = Notifd.Urgency + // match operator when? + switch (n.urgency) { + case LOW: return "low" + case CRITICAL: return "critical" + case NORMAL: + default: return "normal" + } +} + +type Props = { + delete( id: number, instanceID: number ): void + setup(self: EventBox): void + onHoverLost(self: EventBox): void + notification: Notifd.Notification + id: number + instanceID: number +} + +export default function Notification(props: Props) { + const { notification: n, onHoverLost, setup, id: id, delete: del, instanceID: instance } = props + const { START, CENTER, END } = Gtk.Align + + return + + + {(n.appIcon || n.desktopEntry) && } + + + + {n.image && fileExists(n.image) && } + {n.image && isIcon(n.image) && + + } + + + + {n.get_actions().length > 0 && + {n.get_actions().map(({ label, id }) => ( + + ))} + } + + +} diff --git a/config/ags/notifications/package.json b/config/ags/notifications/package.json new file mode 100644 index 0000000..44226f2 --- /dev/null +++ b/config/ags/notifications/package.json @@ -0,0 +1,6 @@ +{ + "name": "astal-shell", + "dependencies": { + "astal": "/usr/share/astal/gjs" + } +} diff --git a/config/ags/notifications/style.scss b/config/ags/notifications/style.scss new file mode 100644 index 0000000..a1c9bb7 --- /dev/null +++ b/config/ags/notifications/style.scss @@ -0,0 +1,2 @@ +// Import notification box style +@use "./notifications/notifications.scss" diff --git a/config/ags/notifications/tsconfig.json b/config/ags/notifications/tsconfig.json new file mode 100644 index 0000000..9471e35 --- /dev/null +++ b/config/ags/notifications/tsconfig.json @@ -0,0 +1,14 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "compilerOptions": { + "experimentalDecorators": true, + "strict": true, + "target": "ES2022", + "module": "ES2022", + "moduleResolution": "Bundler", + // "checkJs": true, + // "allowJs": true, + "jsx": "react-jsx", + "jsxImportSource": "astal/gtk3", + } +} diff --git a/config/astal/.gitignore b/config/astal/.gitignore new file mode 100644 index 0000000..298eb4d --- /dev/null +++ b/config/astal/.gitignore @@ -0,0 +1,2 @@ +node_modules/ +@girs/ diff --git a/config/astal/app.ts b/config/astal/app.ts new file mode 100644 index 0000000..8ee082d --- /dev/null +++ b/config/astal/app.ts @@ -0,0 +1,103 @@ +import { App } from "astal/gtk4" +import style from "./style.scss" +import Bar from "./components/bar/Bar"; +import AstalHyprland from "gi://AstalHyprland?version=0.1"; +import { hyprToGdk } from "./util/hyprland"; +import Brightness from "./util/brightness"; + +App.start({ + instanceName: "runner", + css: style, + main() { + const hypr = AstalHyprland.get_default(); + const bars = new Map(); + + const barCreator = ( monitor: AstalHyprland.Monitor ) => { + const gdkMonitor = hyprToGdk( monitor ); + if ( gdkMonitor ) { + print( 'Bar added for screen ' + monitor.get_id() ); + bars.set( monitor.get_id(), Bar.BarLauncher( gdkMonitor ) ); + } + } + + for (const monitor of hypr.monitors) { + barCreator( monitor ); + } + + hypr.connect( 'monitor-added', ( _, monitor ) => { + barCreator( monitor ); + } ); + + hypr.connect( 'monitor-removed', ( _, monitor ) => { + const windowName = bars.get( monitor ); + if ( windowName ) { + const win = App.get_window( windowName ); + if ( win ) { + App.toggle_window( windowName ); + win.set_child( null ); + App.remove_window( win ); + print( 'Bar removed for screen', monitor ); + } + bars.delete( monitor ); + } + } ); + + // const monitors = App.get_monitors(); + // print( "adding bar to monitors" ); + // for (let index = 0; index < monitors.length; index++) { + // Bar.BarLauncher( monitors[ index ] ); + // } + // Launcher(); + }, + requestHandler(request, res) { + const args = request.trimStart().split( ' ' ); + + if ( args[ 0 ] === 'notifier' ) { + res( 'Not available here yet, run astal -i notifier ' + args[ 1 ] ); + // res( notifications.cliHandler( args ) ); + } else if ( args[ 0 ] === 'bar' ) { + res( Bar.cliHandler( args ) ); + } else if ( args[ 0 ] === 'brightness' ) { + try { + const brightness = Brightness.get_default(); + if ( brightness.screenAvailable ) { + if ( args[ 1 ] === 'increase' ) { + brightness.screen += args.length > 1 ? parseInt( args[ 2 ] ) / 100 : 1; + } else if ( args[ 1 ] === 'decrease' ) { + brightness.screen -= args.length > 1 ? parseInt( args[ 2 ] ) / 100 : 1; + } else if ( args[ 1 ] === 'set' ) { + if ( args.length > 1 ) { + brightness.screen = parseInt( args[ 2 ] ) / 100; + } else { + res( 'Argument unspecified' ); + return; + } + } else { + res( 'Unknown command ' + args[ 1 ] ); + return; + } + res( 'Ok' ); + } else { + res( 'No controllable screen available' ); + } + } catch ( e ) { + res( 'Error running brightness change' ); + } + } + // } else if ( args[ 0 ] === 'launcher' ) { + // if ( args[ 1 ] === 'show' ) { + // App.get_window( 'launcher' )?.show(); + // res( '[Launcher] Shown' ); + // } else if ( args[ 1 ] === 'hide' ) { + // App.get_window( 'launcher' )?.hide(); + // res( '[Launcher] Hidden' ); + // } else if ( args[ 1 ] === 'toggle' ) { + // App.toggle_window( 'launcher' ); + // res( '[Launcher] Toggled' ); + // } else { + // res( '[Launcher] unknown command' ); + // } + // } + }, +}) + diff --git a/config/astal/btconf b/config/astal/btconf new file mode 100644 index 0000000..02e4a84 --- /dev/null +++ b/config/astal/btconf @@ -0,0 +1 @@ +false \ No newline at end of file diff --git a/config/astal/components/QuickActions/QuickActions.tsx b/config/astal/components/QuickActions/QuickActions.tsx new file mode 100644 index 0000000..97dc7fb --- /dev/null +++ b/config/astal/components/QuickActions/QuickActions.tsx @@ -0,0 +1,76 @@ +import { Gtk } from "astal/gtk4"; +import Power from "./modules/Power"; +import Audio from "./modules/Audio/Audio"; +import Bluetooth from "./modules/Bluetooth/Bluetooth"; +import Brightness from "./modules/Brightness/Brightness"; +import Player from "./modules/Player/Player"; +import { BatteryBox } from "./modules/Battery"; +import { exec } from "astal"; +import Network from "./modules/Networking/Network"; + +const QuickActions = () => { + const popover = new Gtk.Popover({ cssClasses: ["quick-actions-wrapper"] }); + popover.set_child(renderQuickActions()); + return popover; +}; + +const renderQuickActions = () => { + const user = exec("/bin/sh -c whoami"); + const profile = exec("/bin/fish -c get-profile-picture"); + const cwd = exec("pwd"); + const um = Power.UserMenu(); + + return ( + + um.popup()} + cssClasses={["stealthy-button"]} + child={ + + {um} + + } + > + + + } + > + } + endWidget={ + + + + + } + > + + + + + + + + + + + ); +}; + +// TODO: Expose additional functions to be usable through CLI +export default { + QuickActions, +}; diff --git a/config/astal/components/QuickActions/dump b/config/astal/components/QuickActions/dump new file mode 100644 index 0000000..6305c6f --- /dev/null +++ b/config/astal/components/QuickActions/dump @@ -0,0 +1,35 @@ +import { Gtk } from "astal/gtk4"; +import Power from "./modules/Power"; +import Audio from "./modules/Audio/Audio"; +import Bluetooth from "./modules/Bluetooth/Bluetooth"; +import Brightness from "./modules/Brightness/Brightness"; +import Player from "./modules/Player/Player"; +import { BatteryBox } from "./modules/Battery"; + +const QuickActions = () => { + const popover = new Gtk.Overlay( { cssClasses: [ 'quick-actions-wrapper' ] } ); + popover.set_child(renderQuickActions()); + return popover; +}; + +const renderQuickActions = () => { + return ( + + + + + + + + + + + + + ); +}; + +// TODO: Expose additional functions to be usable through CLI +export default { + QuickActions, +}; diff --git a/config/astal/components/QuickActions/modules/Audio/Audio.scss b/config/astal/components/QuickActions/modules/Audio/Audio.scss new file mode 100644 index 0000000..2d35eb1 --- /dev/null +++ b/config/astal/components/QuickActions/modules/Audio/Audio.scss @@ -0,0 +1,3 @@ +.audio-box { + min-width: 320px; +} diff --git a/config/astal/components/QuickActions/modules/Audio/Audio.tsx b/config/astal/components/QuickActions/modules/Audio/Audio.tsx new file mode 100644 index 0000000..a583173 --- /dev/null +++ b/config/astal/components/QuickActions/modules/Audio/Audio.tsx @@ -0,0 +1,185 @@ +import { bind, Binding } from "astal"; +import { Gtk } from "astal/gtk4"; +import AstalWp from "gi://AstalWp"; + +const wp = AstalWp.get_default()!; + +const AudioModule = () => { + const setVolumeSpeaker = (volume: number) => { + wp.defaultSpeaker.set_volume(volume / 100); + }; + + const setVolumeMicrophone = (volume: number) => { + wp.defaultMicrophone.set_volume(volume / 100); + }; + + const speakerSelector = SinkSelectPopover(AstalWp.MediaClass.AUDIO_SPEAKER); + const micSelector = SinkSelectPopover(AstalWp.MediaClass.AUDIO_MICROPHONE); + + return ( + + + + + 100 * v)} + max={100} + min={0} + step={1} + hexpand + vexpand + onChangeValue={self => setVolumeSpeaker(self.value)} + > + + + + + + 100 * v, + )} + max={100} + min={0} + step={1} + hexpand + vexpand + onChangeValue={self => setVolumeMicrophone(self.value)} + > + + + + ); +}; + +const SinkPicker = (type: AstalWp.MediaClass) => { + const devices = bind(wp, "endpoints"); + + return ( + + + + + {devices.as(d => { + return d.map(device => { + if (device.get_media_class() !== type) { + return ; + } + return ( + + ); + }); + })} + + + ); +}; + +const SinkSelectPopover = (type: AstalWp.MediaClass) => { + const popover = new Gtk.Popover(); + + popover.set_child(SinkPicker(type)); + + return popover; +}; + +export default { + AudioModule, +}; diff --git a/config/astal/components/QuickActions/modules/Battery.tsx b/config/astal/components/QuickActions/modules/Battery.tsx new file mode 100644 index 0000000..b1c4468 --- /dev/null +++ b/config/astal/components/QuickActions/modules/Battery.tsx @@ -0,0 +1,55 @@ +import { bind } from "astal"; +import Battery from "gi://AstalBattery"; + +export const BatteryBox = () => { + const battery = Battery.get_default(); + const batteryEnergy = (energyRate: number) => { + return energyRate > 0.1 ? `${Math.round(energyRate * 10) / 10} W ` : ""; + }; + return ( + + + batteryEnergy(er), + )} + /> + + ); +}; + +const toTime = (time: number) => { + const MINUTE = 60; + const HOUR = MINUTE * 60; + + if (time > 24 * HOUR) return ""; + + const hours = Math.round(time / HOUR); + const minutes = Math.round((time - hours * HOUR) / MINUTE); + + const hoursDisplay = hours > 0 ? `${hours}h` : ""; + const minutesDisplay = minutes > 0 ? `${minutes}m` : ""; + + return `${hoursDisplay}${minutesDisplay}`; +}; diff --git a/config/astal/components/QuickActions/modules/Bluetooth/Bluetooth.tsx b/config/astal/components/QuickActions/modules/Bluetooth/Bluetooth.tsx new file mode 100644 index 0000000..35b35e6 --- /dev/null +++ b/config/astal/components/QuickActions/modules/Bluetooth/Bluetooth.tsx @@ -0,0 +1,222 @@ +import { bind, interval, readFile, timeout, writeFile } from "astal"; +import { Gtk } from "astal/gtk4"; +import AstalBluetooth from "gi://AstalBluetooth"; +import BTDevice from "./Device"; +const ALIGN = Gtk.Align; + +const bt = AstalBluetooth.get_default(); + +const BluetoothModule = () => { + const picker = BluetoothPicker(); + + const openBTPicker = () => { + try { + bt.adapter.start_discovery(); + } catch (e) { + printerr(e); + } + picker.popup(); + }; + + return ( + + + + + ); +}; + +const BluetoothPickerList = () => { + let btEnableState = false; + + try { + btEnableState = readFile("./btconf") === "true" ? true : false; + } catch (_) { } + + if (bt.get_adapter()) { + print('Setting BT state to ' + btEnableState); + bt.adapter.set_powered(btEnableState); + } else { + timeout(5000, () => { + if (bt.get_adapter()) { + print('Setting BT state to ' + btEnableState); + bt.adapter.set_powered(btEnableState); + } else { + timeout(5000, () => { + try { + bt.adapter.set_powered(btEnableState); + } catch (_) { } + }) + } + }) + } + + const updateState = () => { + btEnableState = !btEnableState; + writeFile("./btconf", "" + btEnableState); + }; + + return ( + { + try { + bt.adapter.stop_discovery() + } catch (_) { } + }} + cssClasses={["popover-box"]} + > + + + } + endWidget={ + updateState()} + > + } + > + + + + {bind(bt, "devices").as(devices => { + return devices + .filter(device => { + if (device.get_connected() || device.get_paired()) { + return device; + } + }) + .map(device => { + return ; + }); + })} + + + + + + {bind(bt, "devices").as(devices => { + return devices + .filter(data => { + if (!data.get_connected() && !data.get_paired()) { + return data; + } + }) + .map(device => { + return ; + }); + })} + + + + ); +}; + +const BluetoothPicker = () => { + const popover = new Gtk.Popover(); + + popover.set_child(BluetoothPickerList()); + popover.connect("closed", () => { + try { + bt.adapter.stop_discovery(); + } catch (e) { + printerr(e); + } + }); + + return popover; +}; + +export default { + BluetoothModule, +}; diff --git a/config/astal/components/QuickActions/modules/Bluetooth/Device.tsx b/config/astal/components/QuickActions/modules/Bluetooth/Device.tsx new file mode 100644 index 0000000..19bb8a0 --- /dev/null +++ b/config/astal/components/QuickActions/modules/Bluetooth/Device.tsx @@ -0,0 +1,72 @@ +import { bind } from "astal"; +import AstalBluetooth from "gi://AstalBluetooth"; + +const BTDevice = ({ device }: { device: AstalBluetooth.Device }) => { + return ( + + + } + > + } + onClicked={() => { + connectOrPair( device ); + }} + > + ); +}; + +const connectOrPair = (device: AstalBluetooth.Device) => { + if ( device.get_paired() ) { + device.connect_device(() => { }); + // Show failed message if tried to connect and failed + } else { + device.pair(); + } +}; + +export default BTDevice; diff --git a/config/astal/components/QuickActions/modules/Brightness/Brightness.tsx b/config/astal/components/QuickActions/modules/Brightness/Brightness.tsx new file mode 100644 index 0000000..fa5f501 --- /dev/null +++ b/config/astal/components/QuickActions/modules/Brightness/Brightness.tsx @@ -0,0 +1,30 @@ +import { bind } from "astal"; +import Brightness from "../../../../util/brightness"; + +const brightness = Brightness.get_default(); + +const BrightnessModule = () => { + print( brightness.screen * 100 ); + const setBrightness = (value: number) => { + brightness.screen = value; + } + return ( + + + + setBrightness(self.value)} + > + + ); +}; + +export default { + BrightnessModule +}; diff --git a/config/astal/components/QuickActions/modules/Networking-old/Networking.tsx b/config/astal/components/QuickActions/modules/Networking-old/Networking.tsx new file mode 100644 index 0000000..0b6acd0 --- /dev/null +++ b/config/astal/components/QuickActions/modules/Networking-old/Networking.tsx @@ -0,0 +1,221 @@ +import { execAsync, bind } from "astal"; +import Network from "gi://AstalNetwork"; +import { App, Gtk } from "astal/gtk4"; +import { NetworkItem } from "./modules/NetworkItem"; +import { PasswordDialog } from "./modules/PasswordDialog"; +import { + availableNetworks, + savedNetworks, + activeNetwork, + showPasswordDialog, + scanNetworks, + getSavedNetworks, + disconnectNetwork, + forgetNetwork, + isExpanded, + refreshIntervalId, +} from "./networkinghelper"; + +// Main WiFi Box component +export const WiFiBox = () => { + const network = Network.get_default(); + + // Initial scan when component is first used + setTimeout(() => { + scanNetworks(); + getSavedNetworks(); + }, 100); + + return ( + + {/* WiFi Toggle Header */} + + + + + + {/* Networks List Revealer */} + { + const clearScanInterval = () => { + if (refreshIntervalId.get()) { + clearInterval( parseInt( '' + refreshIntervalId.get() )); + refreshIntervalId.set(null); + } + }; + bind(isExpanded).subscribe((expanded) => { + // Clear existing interval + clearScanInterval(); + + if (expanded) { + // Scan networks + network.wifi?.scan(); + + // Set up new interval if WiFi is enabled + if (network.wifi?.enabled) { + refreshIntervalId.set( + setInterval(() => { + scanNetworks(); + getSavedNetworks(); + print("updated"); + }, 10000), + ); + } + } else { + // Apply revealer bug fix when collapsed + App.toggle_window("system-menu"); + App.toggle_window("system-menu"); + } + }); + + // Monitor window toggling + const windowListener = App.connect("window-toggled", (_, window) => { + if (window.name === "system-menu" && isExpanded.get()) { + isExpanded.set(false); + } + }); + + // Clean up resources when component is destroyed + return () => { + App.disconnect(windowListener); + clearScanInterval(); + }; + }} + > + + v )}> + + + + + + ); +}; diff --git a/config/astal/components/QuickActions/modules/Networking-old/README.md b/config/astal/components/QuickActions/modules/Networking-old/README.md new file mode 100644 index 0000000..ad95173 --- /dev/null +++ b/config/astal/components/QuickActions/modules/Networking-old/README.md @@ -0,0 +1,2 @@ +# Source +This is a modified version from [MatShell](https://github.com/Neurian/matshell) diff --git a/config/astal/components/QuickActions/modules/Networking-old/network.d.ts b/config/astal/components/QuickActions/modules/Networking-old/network.d.ts new file mode 100644 index 0000000..4be5e37 --- /dev/null +++ b/config/astal/components/QuickActions/modules/Networking-old/network.d.ts @@ -0,0 +1,14 @@ +import AstalNetwork from "gi://AstalNetwork?version=0.1"; + +interface CurrentWiFi { + ssid: string; + strength: number; + secured: boolean; +} + +interface WiFiDetails extends CurrentWiFi { + active: boolean; + accessPoint: AstalNetwork.AccessPoint; + iconName: string; +} + diff --git a/config/astal/components/QuickActions/modules/Networking-old/networkinghelper.ts b/config/astal/components/QuickActions/modules/Networking-old/networkinghelper.ts new file mode 100644 index 0000000..b4bd6aa --- /dev/null +++ b/config/astal/components/QuickActions/modules/Networking-old/networkinghelper.ts @@ -0,0 +1,161 @@ +// From https://github.com/Neurarian/matshell/blob/master/utils/wifi.ts + +import { execAsync, Variable } from "astal"; +import Network from "gi://AstalNetwork"; +import { CurrentWiFi, WiFiDetails } from "./network"; + +// State trackers +export const availableNetworks: Variable = Variable([]); +export const savedNetworks: Variable = Variable([]); +export const activeNetwork: Variable = Variable(null); +export const isConnecting: Variable = Variable(false); +export const showPasswordDialog: Variable = Variable(false); +export const errorMessage: Variable = Variable(""); +export const isExpanded: Variable = Variable(false); +export const passwordInput: Variable = Variable(""); +export const selectedNetwork: Variable = Variable(null); +export const refreshIntervalId: Variable< + number | null | ReturnType +> = Variable(null); + +// Function to scan for available networks +export const scanNetworks = () => { + const network = Network.get_default(); + if (network && network.wifi) { + network.wifi.scan(); + + // Get available networks from access points + const networks: WiFiDetails[] = network.wifi.accessPoints + .map(ap => ({ + ssid: ap.ssid, + strength: ap.strength, + secured: ap.flags !== 0, + active: network.wifi.activeAccessPoint?.ssid === ap.ssid, + accessPoint: ap, + iconName: ap.iconName, + })) + .filter(n => n.ssid); + + // Sort by signal strength + networks.sort((a, b) => b.strength - a.strength); + + // Remove duplicates (same SSID) + const uniqueNetworks: WiFiDetails[] = []; + const seen = new Set(); + networks.forEach(network => { + if (!seen.has(network.ssid)) { + seen.add(network.ssid); + uniqueNetworks.push(network); + } + }); + + availableNetworks.set(uniqueNetworks); + + // Update active network + if (network.wifi.activeAccessPoint) { + activeNetwork.set({ + ssid: network.wifi.activeAccessPoint.ssid, + strength: network.wifi.activeAccessPoint.strength, + secured: network.wifi.activeAccessPoint.flags !== 0, + }); + } else { + activeNetwork.set(null); + } + } +}; + +// Function to list saved networks +export const getSavedNetworks = () => { + execAsync(["bash", "-c", "nmcli -t -f NAME,TYPE connection show"]) + .then(output => { + if (typeof output === "string") { + const savedWifiNetworks = output + .split("\n") + .filter(line => line.includes("802-11-wireless")) + .map(line => line.split(":")[0].trim()); + savedNetworks.set(savedWifiNetworks); + } + }) + .catch(error => console.error("Error fetching saved networks:", error)); +}; + +// Function to connect to a network + +export const connectToNetwork = ( + ssid: string, + password: null | string = null, +) => { + isConnecting.set(true); + errorMessage.set(""); + const network = Network.get_default(); + const currentSsid = network.wifi.ssid; + + // Function to perform the actual connection + const performConnection = () => { + let command = ""; + if (password) { + // Connect with password + command = `echo '${password}' | nmcli device wifi connect "${ssid}" --ask`; + } else { + // Connect without password (saved or open network) + command = `nmcli connection up "${ssid}" || nmcli device wifi connect "${ssid}"`; + } + + execAsync(["bash", "-c", command]) + .then(() => { + showPasswordDialog.set(false); + isConnecting.set(false); + scanNetworks(); // Refresh network list + }) + .catch(error => { + console.error("Connection error:", error); + errorMessage.set("Failed to connect. Check password."); + isConnecting.set(false); + }); + }; + + // If already connected to a network, disconnect first + if (currentSsid && currentSsid !== ssid) { + console.log( + `Disconnecting from ${currentSsid} before connecting to ${ssid}`, + ); + execAsync(["bash", "-c", `nmcli connection down "${currentSsid}"`]) + .then(() => { + // Wait a moment for the disconnection to complete fully + setTimeout(() => { + performConnection(); + }, 500); // 500ms delay for clean disconnection + }) + .catch(error => { + console.error("Disconnect error:", error); + // Continue with connection attempt even if disconnect fails + performConnection(); + }); + } else { + // No active connection or connecting to same network (reconnect case) + performConnection(); + } +}; + +// Function to disconnect from a network +export const disconnectNetwork = (ssid: string) => { + execAsync(["bash", "-c", `nmcli connection down "${ssid}"`]) + .then(() => { + scanNetworks(); // Refresh network list + }) + .catch(error => { + console.error("Disconnect error:", error); + }); +}; + +// Function to forget a saved network +export const forgetNetwork = (ssid: string) => { + execAsync(["bash", "-c", `nmcli connection delete "${ssid}"`]) + .then(() => { + getSavedNetworks(); // Refresh saved networks list + scanNetworks(); // Refresh network list + }) + .catch(error => { + console.error("Forget network error:", error); + }); +}; diff --git a/config/astal/components/QuickActions/modules/Networking/Network.tsx b/config/astal/components/QuickActions/modules/Networking/Network.tsx new file mode 100644 index 0000000..b7d34a6 --- /dev/null +++ b/config/astal/components/QuickActions/modules/Networking/Network.tsx @@ -0,0 +1,106 @@ +import { bind } from "astal"; +import AstalNetwork from "gi://AstalNetwork"; +import networkHelper from "./network-helper"; +import NetworkMenu from "./NetworkMenu"; + +const net = AstalNetwork.get_default(); +const STATE = AstalNetwork.DeviceState; + +const Network = () => { + const netMenu = NetworkMenu.NetworkMenu(); + return ( + + + + + ); +}; + +export default { + Network, +}; diff --git a/config/astal/components/QuickActions/modules/Networking/NetworkMenu.tsx b/config/astal/components/QuickActions/modules/Networking/NetworkMenu.tsx new file mode 100644 index 0000000..6a02e31 --- /dev/null +++ b/config/astal/components/QuickActions/modules/Networking/NetworkMenu.tsx @@ -0,0 +1,18 @@ +import { Gtk } from "astal/gtk4"; + +const NetworkMenu = () => { + const popover = new Gtk.Popover(); + popover.set_child( renderMenu() ); + return popover; +}; + +const renderMenu = () => { + return + + + ; +}; + +export default { + NetworkMenu, +}; diff --git a/config/astal/components/QuickActions/modules/Networking/dump b/config/astal/components/QuickActions/modules/Networking/dump new file mode 100644 index 0000000..9c018dd --- /dev/null +++ b/config/astal/components/QuickActions/modules/Networking/dump @@ -0,0 +1,91 @@ +import { bind } from "astal"; +import { Gtk } from "astal/gtk4"; +import AstalNetwork from "gi://AstalNetwork"; +import networkHelper from "./network-helper"; + +const net = AstalNetwork.get_default(); +const STATE = AstalNetwork.DeviceState; + +const WiFiList = () => { + const popover = new Gtk.Popover({ cssClasses: ["WiFiPicker"] }); + + return popover; +}; + +const renderWiFiList = () => { + return + + +} + +const Network = () => { + const wifiList = WiFiList(); + + return ( + + + + + + + {wifiList} + + ); +}; + +export default Network; diff --git a/config/astal/components/QuickActions/modules/Networking/network-helper.ts b/config/astal/components/QuickActions/modules/Networking/network-helper.ts new file mode 100644 index 0000000..f876564 --- /dev/null +++ b/config/astal/components/QuickActions/modules/Networking/network-helper.ts @@ -0,0 +1,28 @@ +import { exec, Variable } from "astal"; +import AstalNetwork from "gi://AstalNetwork"; + +const networkEnabled = Variable( exec( 'nmcli networking connectivity' ) !== 'none' ); +const network = AstalNetwork.get_default(); + + +const setNetworking = ( status: boolean ) => { + if ( status === true ) { + exec( 'nmcli networking on' ); + networkEnabled.set( true ); + } else { + exec( 'nmcli networking off' ); + networkEnabled.set( false ); + } +} + + +const getIP = () => { + return exec( `/bin/bash -c "ip addr show | grep 'inet ' | awk '{print $2}' | grep -v '127'"` ).split( '/' )[ 0 ]; +} + + +export default { + networkEnabled, + setNetworking, + getIP +} diff --git a/config/astal/components/QuickActions/modules/Networking/network.d.ts b/config/astal/components/QuickActions/modules/Networking/network.d.ts new file mode 100644 index 0000000..4be5e37 --- /dev/null +++ b/config/astal/components/QuickActions/modules/Networking/network.d.ts @@ -0,0 +1,14 @@ +import AstalNetwork from "gi://AstalNetwork?version=0.1"; + +interface CurrentWiFi { + ssid: string; + strength: number; + secured: boolean; +} + +interface WiFiDetails extends CurrentWiFi { + active: boolean; + accessPoint: AstalNetwork.AccessPoint; + iconName: string; +} + diff --git a/config/astal/components/QuickActions/modules/Networking/wifi-helper.ts b/config/astal/components/QuickActions/modules/Networking/wifi-helper.ts new file mode 100644 index 0000000..b4bd6aa --- /dev/null +++ b/config/astal/components/QuickActions/modules/Networking/wifi-helper.ts @@ -0,0 +1,161 @@ +// From https://github.com/Neurarian/matshell/blob/master/utils/wifi.ts + +import { execAsync, Variable } from "astal"; +import Network from "gi://AstalNetwork"; +import { CurrentWiFi, WiFiDetails } from "./network"; + +// State trackers +export const availableNetworks: Variable = Variable([]); +export const savedNetworks: Variable = Variable([]); +export const activeNetwork: Variable = Variable(null); +export const isConnecting: Variable = Variable(false); +export const showPasswordDialog: Variable = Variable(false); +export const errorMessage: Variable = Variable(""); +export const isExpanded: Variable = Variable(false); +export const passwordInput: Variable = Variable(""); +export const selectedNetwork: Variable = Variable(null); +export const refreshIntervalId: Variable< + number | null | ReturnType +> = Variable(null); + +// Function to scan for available networks +export const scanNetworks = () => { + const network = Network.get_default(); + if (network && network.wifi) { + network.wifi.scan(); + + // Get available networks from access points + const networks: WiFiDetails[] = network.wifi.accessPoints + .map(ap => ({ + ssid: ap.ssid, + strength: ap.strength, + secured: ap.flags !== 0, + active: network.wifi.activeAccessPoint?.ssid === ap.ssid, + accessPoint: ap, + iconName: ap.iconName, + })) + .filter(n => n.ssid); + + // Sort by signal strength + networks.sort((a, b) => b.strength - a.strength); + + // Remove duplicates (same SSID) + const uniqueNetworks: WiFiDetails[] = []; + const seen = new Set(); + networks.forEach(network => { + if (!seen.has(network.ssid)) { + seen.add(network.ssid); + uniqueNetworks.push(network); + } + }); + + availableNetworks.set(uniqueNetworks); + + // Update active network + if (network.wifi.activeAccessPoint) { + activeNetwork.set({ + ssid: network.wifi.activeAccessPoint.ssid, + strength: network.wifi.activeAccessPoint.strength, + secured: network.wifi.activeAccessPoint.flags !== 0, + }); + } else { + activeNetwork.set(null); + } + } +}; + +// Function to list saved networks +export const getSavedNetworks = () => { + execAsync(["bash", "-c", "nmcli -t -f NAME,TYPE connection show"]) + .then(output => { + if (typeof output === "string") { + const savedWifiNetworks = output + .split("\n") + .filter(line => line.includes("802-11-wireless")) + .map(line => line.split(":")[0].trim()); + savedNetworks.set(savedWifiNetworks); + } + }) + .catch(error => console.error("Error fetching saved networks:", error)); +}; + +// Function to connect to a network + +export const connectToNetwork = ( + ssid: string, + password: null | string = null, +) => { + isConnecting.set(true); + errorMessage.set(""); + const network = Network.get_default(); + const currentSsid = network.wifi.ssid; + + // Function to perform the actual connection + const performConnection = () => { + let command = ""; + if (password) { + // Connect with password + command = `echo '${password}' | nmcli device wifi connect "${ssid}" --ask`; + } else { + // Connect without password (saved or open network) + command = `nmcli connection up "${ssid}" || nmcli device wifi connect "${ssid}"`; + } + + execAsync(["bash", "-c", command]) + .then(() => { + showPasswordDialog.set(false); + isConnecting.set(false); + scanNetworks(); // Refresh network list + }) + .catch(error => { + console.error("Connection error:", error); + errorMessage.set("Failed to connect. Check password."); + isConnecting.set(false); + }); + }; + + // If already connected to a network, disconnect first + if (currentSsid && currentSsid !== ssid) { + console.log( + `Disconnecting from ${currentSsid} before connecting to ${ssid}`, + ); + execAsync(["bash", "-c", `nmcli connection down "${currentSsid}"`]) + .then(() => { + // Wait a moment for the disconnection to complete fully + setTimeout(() => { + performConnection(); + }, 500); // 500ms delay for clean disconnection + }) + .catch(error => { + console.error("Disconnect error:", error); + // Continue with connection attempt even if disconnect fails + performConnection(); + }); + } else { + // No active connection or connecting to same network (reconnect case) + performConnection(); + } +}; + +// Function to disconnect from a network +export const disconnectNetwork = (ssid: string) => { + execAsync(["bash", "-c", `nmcli connection down "${ssid}"`]) + .then(() => { + scanNetworks(); // Refresh network list + }) + .catch(error => { + console.error("Disconnect error:", error); + }); +}; + +// Function to forget a saved network +export const forgetNetwork = (ssid: string) => { + execAsync(["bash", "-c", `nmcli connection delete "${ssid}"`]) + .then(() => { + getSavedNetworks(); // Refresh saved networks list + scanNetworks(); // Refresh network list + }) + .catch(error => { + console.error("Forget network error:", error); + }); +}; diff --git a/config/astal/components/QuickActions/modules/Player/Player.scss b/config/astal/components/QuickActions/modules/Player/Player.scss new file mode 100644 index 0000000..a26faac --- /dev/null +++ b/config/astal/components/QuickActions/modules/Player/Player.scss @@ -0,0 +1,56 @@ +$fg-color: #{"@theme_fg_color"}; +$bg-color: #{"@theme_bg_color"}; + +box.players-box { + margin-top: 20px; +} + +box.player { + padding: 0.6rem; + + .cover-art { + min-width: 100px; + min-height: 100px; + border-radius: 9px; + margin-right: 0.6rem; + background-size: contain; + background-position: center; + } + + .title { + font-weight: bold; + font-size: 1.1em; + } + + scale { + padding: 0; + margin: 0.4rem 0; + border-radius: 20px; + + trough { + min-height: 8px; + border-radius: 20px; + } + + highlight { + background-color: $fg-color; + border-radius: 20px; + } + + slider { + all: unset; + border-radius: 20px; + } + } + + centerbox.actions { + min-width: 220px; + + button { + min-width: 0; + min-height: 0; + padding: 0.4rem; + margin: 0 0.2rem; + } + } +} diff --git a/config/astal/components/QuickActions/modules/Player/Player.tsx b/config/astal/components/QuickActions/modules/Player/Player.tsx new file mode 100644 index 0000000..7e3516b --- /dev/null +++ b/config/astal/components/QuickActions/modules/Player/Player.tsx @@ -0,0 +1,154 @@ +import { bind } from "astal"; +import { Gtk } from "astal/gtk4"; +import AstalMpris from "gi://AstalMpris"; +import Pango from "gi://Pango?version=1.0"; +const ALIGN = Gtk.Align; + +const mpris = AstalMpris.get_default(); +mpris.connect("player-added", p => { + print("Player added:", p); +}); + +const PlayerModule = () => { + return ( + + + + + {bind(mpris, "players").as(players => { + return players.map(player => { + return ; + }); + })} + + + + ); +}; + +// TODO: Update widths +const pbStatus = AstalMpris.PlaybackStatus; +const PlayerItem = ({ player }: { player: AstalMpris.Player }) => { + return ( + + + + + + l > 0)} + value={bind(player, "position")} + min={0} + max={bind(player, "length")} + onChangeValue={v => + player.set_position(v.get_value()) + } + > + + secondsToFriendlyTime(v), + )} + hexpand + cssClasses={["position"]} + > + } + centerWidget={ + + + + + + } + endWidget={ + + } + > + + + ); +}; + +const secondsToFriendlyTime = (time: number) => { + const minutes = Math.floor(time / 60); + const hours = Math.floor(minutes / 60); + const seconds = Math.floor(time % 60); + if (hours > 0) { + return `${hours}:${expandTime(minutes)}:${expandTime(seconds)}`; + } else { + return `${minutes}:${expandTime(seconds)}`; + } +}; + +const expandTime = (time: number): string => { + return time < 10 ? `0${time}` : "" + time; +}; + +export default { + PlayerModule, +}; diff --git a/config/astal/components/QuickActions/modules/Power.tsx b/config/astal/components/QuickActions/modules/Power.tsx new file mode 100644 index 0000000..5402073 --- /dev/null +++ b/config/astal/components/QuickActions/modules/Power.tsx @@ -0,0 +1,85 @@ +import { exec } from "astal"; +import { Gtk } from "astal/gtk4"; + +const PowerMenu = (): Gtk.Popover => { + const popover = new Gtk.Popover({ cssClasses: ["PowerMenu"] }); + + const powerMenuBox = () => { + return ( + + + + + + ); + }; + + popover.set_child(powerMenuBox()); + return popover; +}; + +const Power = () => { + const pm = PowerMenu(); + return ( + + + + ); + }; + + popover.set_child(powerMenuBox()); + return popover; +}; + +export default { + Power, + UserMenu +}; diff --git a/config/astal/components/QuickActions/quickactions.scss b/config/astal/components/QuickActions/quickactions.scss new file mode 100644 index 0000000..8f0302d --- /dev/null +++ b/config/astal/components/QuickActions/quickactions.scss @@ -0,0 +1,56 @@ +@use "./modules/Player/Player.scss"; +@use "./modules/Audio/Audio.scss"; +@use "../../util/colours.scss" as *; + +.quick-actions-wrapper { + min-width: 520px; +} + +box.quick-actions { + padding: 10px; +} + +popover * { + border-radius: 20px; +} + +button { + margin: 4px; +} + +.button-no-margin { + margin-top: 0; + margin-bottom: 0; +} + +.devices-list { + margin-bottom: 20px; +} + +button.toggle-button { + min-width: 220px; + border-radius: 50px; + + &.toggle-on { + min-width: 190px; + margin-right: 0; + border-top-right-radius: 0; + border-bottom-right-radius: 0; + background-color: $accent-color; + } +} + +button.actions-button { + margin-left: 0; + border-radius: 0; + background-color: $accent-color; + border-top-right-radius: 50px; + border-bottom-right-radius: 50px; +} + +.avatar-icon { + border-radius: 100px; + min-height: 40px; + min-width: 40px; + margin-right: 10px; +} diff --git a/config/astal/components/bar/Bar.tsx b/config/astal/components/bar/Bar.tsx new file mode 100644 index 0000000..969c917 --- /dev/null +++ b/config/astal/components/bar/Bar.tsx @@ -0,0 +1,70 @@ +import { App, Astal, Gdk, Gtk } from "astal/gtk4"; +import Hyprland from "./modules/Hyprland"; +import Calendar from "./modules/Calendar"; +import QuickView from "./modules/QuickView"; +import SystemInfo from "./modules/SystemInfo"; +import { CenterBox } from "astal/gtk4/widget"; + +const Bar = ( { gdkmonitor, name }: { gdkmonitor: Gdk.Monitor, name: string } ) => { + const { TOP, LEFT, RIGHT } = Astal.WindowAnchor; + + return ( + + + + + + } + centerWidget={} + endWidget={ + + + + + } + > + } + > + ); +}; + +const cliHandler = (args: string[]): string => { + return "Not implemented"; +}; + +const BarLauncher = ( monitor: Gdk.Monitor ) => { + const windowName = `bar-${monitor.get_connector()}` + const createBar = () => { + return + } + + // Actually start the bar + createBar(); + + return windowName; +} + +export default { + BarLauncher, + cliHandler, +}; diff --git a/config/astal/components/bar/bar.scss b/config/astal/components/bar/bar.scss new file mode 100644 index 0000000..97deb83 --- /dev/null +++ b/config/astal/components/bar/bar.scss @@ -0,0 +1,66 @@ +@use "../../util/colours.scss" as *; + +window.Bar { + font-family: "Comfortaa, sans-serif"; + background: transparent; + color: $fg-color; + font-weight: bold; + + /* >centerbox { */ + /* background: $bg-color; */ + /* border-radius: 10px; */ + /* margin: 8px; */ + /* } */ + + .bar-button { + border-radius: 20px; + margin: 2px; + padding-left: 10px; + padding-right: 10px; + background-color: $bg-color; + + & button { + background-color: $bg-color; + } + } + + .quick-action-button { + border-radius: 20px; + margin: 2px; + padding-left: 10px; + padding-right: 10px; + background-color: $bg-color; + } + + button.workspace-button { + border-radius: 20px; + margin: 1px; + + &.focused-workspace-button { + color: $accent-color-2; + } + } + + .tray-item { + margin: 0; + padding: 0; + + & button { + margin: 2px; + box-shadow: none; + } + } + + .time { + min-width: 11rem; + padding: 3px; + & button { + box-shadow: none; + padding: 0; + } + } + + .quick-view-symbol { + margin: 4px; + } +} diff --git a/config/astal/components/bar/modules/Calendar.tsx b/config/astal/components/bar/modules/Calendar.tsx new file mode 100644 index 0000000..db6d06b --- /dev/null +++ b/config/astal/components/bar/modules/Calendar.tsx @@ -0,0 +1,26 @@ +import { GLib, Variable } from "astal"; +import { Gtk } from "astal/gtk4"; + +const Time = ({ format = "%a, %e.%m %H:%M:%S" }) => { + const time = Variable("").poll( + 1000, + () => GLib.DateTime.new_now_local().format(format)!, + ); + + return ( + + + + + + + ); +}; + +export default { + Time, +}; diff --git a/config/astal/components/bar/modules/Hyprland.tsx b/config/astal/components/bar/modules/Hyprland.tsx new file mode 100644 index 0000000..01ac80b --- /dev/null +++ b/config/astal/components/bar/modules/Hyprland.tsx @@ -0,0 +1,143 @@ +import AstalTray from "gi://AstalTray"; +import { bind, GObject } from "astal"; +import AstalHyprland from "gi://AstalHyprland"; +import { Gtk } from "astal/gtk4"; + +const hypr = AstalHyprland.get_default(); +const SYNC = GObject.BindingFlags.SYNC_CREATE; + +const SysTray = () => { + const trayBox = new Gtk.Box({ cssClasses: ["bar-button"] }); + const tray = AstalTray.get_default(); + + const trayItems = new Map(); + const trayAddedHandler = tray.connect("item-added", (_, id) => { + const item = tray.get_item(id); + const popover = Gtk.PopoverMenu.new_from_model(item.menu_model); + const icon = new Gtk.Image(); + const button = new Gtk.MenuButton({ + popover, + child: icon, + cssClasses: ["tray-item"], + }); + + item.bind_property("gicon", icon, "gicon", SYNC); + popover.insert_action_group("dbusmenu", item.action_group); + item.connect("notify::action-group", () => { + popover.insert_action_group("dbusmenu", item.action_group); + }); + + trayItems.set(id, button); + trayBox.append(button); + }); + + const trayRemovedHandler = tray.connect("item-removed", (_, id) => { + const button = trayItems.get(id); + if (button) { + trayBox.remove(button); + button.run_dispose(); + trayItems.delete(id); + } + }); + + trayBox.connect("destroy", () => { + tray.disconnect(trayAddedHandler); + tray.disconnect(trayRemovedHandler); + }); + + return trayBox; +}; + +const Workspace = () => { + return ( + + {bind(hypr, "workspaces").as(wss => + wss + .filter(ws => !(ws.id >= -99 && ws.id <= -2)) // filter out special workspaces + .sort((a, b) => a.id - b.id) + .map(ws => ( + + )), + )} + + ); +}; + +/** + * Displays the name of the currently active window and provides a popover for + * displaying all available clients + */ +const ActiveWindow = () => { + const focused = bind(hypr, "focusedClient"); + + const WindowPopover = (): Gtk.Popover => { + // Set up boxes + Popover + const popover = new Gtk.Popover(); + + const popoverBox = WindowPopoverBox(); + + popover.set_child(popoverBox); + return popover; + }; + + const windowPopover = WindowPopover(); + + // ─────────────────────────────────────────────────────────────────── + // Return fully assembled HyprlandFocusedClient box + // ─────────────────────────────────────────────────────────────────── + return ( + + + {windowPopover} + + ); +}; + +const WindowPopoverBox = () => { + return + + + + {bind(hypr, 'clients').as(clients => { + return clients.map(client => { + return + }) + })} + + +} + +export default { + Workspace, + ActiveWindow, + SysTray, +}; diff --git a/config/astal/components/bar/modules/QuickView.tsx b/config/astal/components/bar/modules/QuickView.tsx new file mode 100644 index 0000000..a883d2a --- /dev/null +++ b/config/astal/components/bar/modules/QuickView.tsx @@ -0,0 +1,188 @@ +import { bind } from "astal"; +import AstalBattery from "gi://AstalBattery"; +import AstalBluetooth from "gi://AstalBluetooth"; +import AstalNetwork from "gi://AstalNetwork"; +import AstalWp from "gi://AstalWp"; +import { Gtk } from "astal/gtk4"; +import Brightness from "../../../util/brightness"; +import QuickActions from "../../QuickActions/QuickActions"; + +const STATE = AstalNetwork.DeviceState; + +const QuickView = () => { + const qa = QuickActions.QuickActions(); + const showQuickActions = () => { + qa.popup(); + }; + + return ( + + ); +}; + +const NetworkWidget = () => { + const network = AstalNetwork.get_default(); + + return ( + + { + if (state === AstalNetwork.State.CONNECTING) { + return "chronometer-reset-symbolic"; + } else if ( + state === AstalNetwork.State.CONNECTED_LOCAL || + state === AstalNetwork.State.CONNECTED_SITE || + state === AstalNetwork.State.CONNECTED_GLOBAL + ) { + return "network-wired-activated-symbolic"; + } else { + return "paint-unknown-symbolic"; + } + })} + cssClasses={["network-widget", "quick-view-symbol"]} + visible={bind(network.wifi, "state").as( + state => state !== STATE.ACTIVATED, + )} + > + { + if (state === STATE.ACTIVATED) { + return network.wifi.iconName; + } else { + return ""; + } + })} + tooltipText={bind(network.wifi, 'ssid')} + cssClasses={["network-widget", "quick-view-symbol"]} + visible={bind(network.wifi, "state").as( + state => state === STATE.ACTIVATED, + )} + > + + ); +}; + +const BluetoothWidget = () => { + const bluetooth = AstalBluetooth.get_default(); + const enabled = bind(bluetooth, "isPowered"); + const connected = bind(bluetooth, "isConnected"); + + // For each connected BT device, render status + return ( + + e)}> + c)} + > + !c)} + > + + !e)} + > + + {bind(bluetooth, "devices").as(devices => { + return devices.map(device => { + return ( + icon, + )} + visible={bind(device, "connected")} + tooltipText={bind(device, "batteryPercentage").as( + n => { + return device.get_name() + ': ' + n + "%"; + }, + )} + > + ); + }); + })} + + + ); +}; + +const BatteryWidget = () => { + const battery = AstalBattery.get_default(); + if (battery.get_is_present()) { + return ( + icon)} + cssClasses={["quick-view-symbol"]} + tooltipText={bind(battery, 'percentage').as(p => `${Math.round(p * 100)}%`)} + > + ); + } else { + return ; + } + // Else, no battery available -> Don't show the widget +}; + +const BrightnessWidget = () => { + const brightness = Brightness.get_default(); + const screen_brightness = bind(brightness, "screen"); + + return ( + + + + + ); +}; + +const Audio = () => { + const wireplumber = AstalWp.get_default(); + if (wireplumber) { + return ( + + icon, + )} + cssClasses={["quick-view-symbol"]} + tooltipText={bind(wireplumber.defaultSpeaker, 'volume').as(v => Math.round(100 * v) + '%')} + > + icon)} + cssClasses={["quick-view-symbol"]} + tooltipText={bind(wireplumber.defaultMicrophone, 'volume').as(v => Math.round(100 * v) + '%')} + > + + ); + } else { + print( + "[ WirePlumber ] Could not connect, Audio support in bar will be missing", + ); + return ; + } +}; + +// cssClasses={[ 'quick-view-symbol' ]} + +export default { + QuickView, +}; diff --git a/config/astal/components/bar/modules/SystemInfo.tsx b/config/astal/components/bar/modules/SystemInfo.tsx new file mode 100644 index 0000000..00bfa88 --- /dev/null +++ b/config/astal/components/bar/modules/SystemInfo.tsx @@ -0,0 +1,101 @@ +import { execAsync } from "astal"; +import { Gtk } from "astal/gtk4"; +import sysinfo from "../sysinfo"; + +const info = () => { + return ( + + + + + + + + + ); +}; + +const SystemInformationPanel = () => { + const popover = new Gtk.Popover(); + + popover.set_child(info()); + + return popover; +}; + + +const panel = SystemInformationPanel(); + +const SystemInfo = () => { + sysinfo.startSysInfoFetcher(); + + const openSysInfo = async () => { + panel.popup(); + sysinfo.refreshStats(); + }; + + if (sysinfo.enabled) { + return ( + + ); + } else { + return ; + } +}; + +export default { + SystemInfo, + panel, +}; diff --git a/config/astal/components/bar/modules/stats.d.ts b/config/astal/components/bar/modules/stats.d.ts new file mode 100644 index 0000000..f27174e --- /dev/null +++ b/config/astal/components/bar/modules/stats.d.ts @@ -0,0 +1,9 @@ +interface Stats { + kernel: string; + cpuTemp: string; + cpuClk: string; + gpuTemp: string; + gpuClk: string; + vram: string; + availableVRAM: string; +} diff --git a/config/astal/components/bar/sysinfo.ts b/config/astal/components/bar/sysinfo.ts new file mode 100644 index 0000000..0b326d1 --- /dev/null +++ b/config/astal/components/bar/sysinfo.ts @@ -0,0 +1,137 @@ +import { exec, execAsync, interval, Variable } from "astal"; + +const FETCH_INTERVAL = 2000; +const cpuUtil = Variable("0%"); +const ramUtil = Variable("0%"); +const ramUsed = Variable("0MiB"); +const gpuUtil = Variable("0%"); +let gpuName = "card1"; +let enabled = true; + +const getStats = (): Stats => { + gpuName = exec(`/bin/bash -c "ls /sys/class/drm/ | grep '^card[0-9]*$'"`); + const cpuNameInSensors = "CPUTIN"; + const stats = { + kernel: exec("uname -sr"), + cpuTemp: exec( + `/bin/bash -c "sensors | grep -m1 ${cpuNameInSensors} | awk '{print $2}'"`, + ), + cpuClk: exec( + `awk '/cpu MHz/ {sum+=$4; ++n} END {print sum/n " MHz"}' /proc/cpuinfo`, + ), + gpuTemp: exec( + `/bin/bash -c "sensors | grep -E 'edge' | awk '{print $2}'"`, + ), + gpuClk: exec( + `/bin/bash -c "cat /sys/class/drm/${gpuName}/device/pp_dpm_sclk | grep '\\*' | awk '{print $2 $3}'"`, + ), + vram: + Math.round( + parseInt( + exec( + `cat /sys/class/drm/${gpuName}/device/mem_info_vram_used`, + ), + ) / + 1024 / + 1024, + ) + "MiB", + availableVRAM: + Math.round( + parseInt( + exec( + `cat /sys/class/drm/${gpuName}/device/mem_info_vram_total`, + ), + ) / + 1024 / + 1024, + ) + "MiB", + }; + + return stats; +}; + +const systemStats: Variable = Variable(getStats()); +const availableFeatures = { + cpu: true, + ram: true, +}; + +const refreshStats = () => { + systemStats.set(getStats()); +} + +const featureTest = () => { + print('[SysInfo] Feature test started...'); + // Check if awk & sed are available + try { + exec("awk -V"); + exec("sed --version"); + } catch (e) { + printerr( + "[ SysInfo ] AWK or SED missing! No system info will be available", + ); + enabled = false; + return; + } + + // Check if mpstat is available + try { + exec("mpstat -V"); + } catch (e) { + availableFeatures.cpu = false; + printerr( + "[ SysInfo ] Feature Test for CPU info failed. mpstat from the sysstat package missing!", + ); + } + print('[SysInfo] Feature test complete'); +}; + +const sysInfoFetcher = () => { + if (enabled) { + if (availableFeatures.cpu) { + execAsync(`/bin/fish -c cpu-utilization`).then(v => { + cpuUtil.set("" + Math.round(parseFloat(v))); + }).catch(e => { + console.error(e); + }); + } + if (availableFeatures.ram) { + execAsync( + `/bin/bash -c "free | awk '/Mem:/ {print $3 \\" \\" $2}'"`, + ).then(v => { + const util = parseInt(v.split(' ')[0]); + const available = parseInt(v.split(' ')[1]); + ramUtil.set("" + Math.round(util / available * 100)); + ramUsed.set(`${Math.round(util / 1024 / 1024 * 10) / 10} GiB of ${Math.round(available / 1024 / 1024 * 10) / 10} GiB used`); + }).catch(e => { + console.error(e); + }); + } + gpuUtil.set(exec("cat /sys/class/drm/card1/device/gpu_busy_percent")); + } +}; + +let sysInfoFetcherRunning = false; +const startSysInfoFetcher = () => { + if (!sysInfoFetcherRunning) { + sysInfoFetcherRunning = true; + + featureTest(); + + if (enabled) { + // Start interval + interval(FETCH_INTERVAL, sysInfoFetcher); + } + } +} + +export default { + startSysInfoFetcher, + enabled, + gpuUtil, + cpuUtil, + ramUsed, + ramUtil, + refreshStats, + systemStats +} diff --git a/config/astal/components/launcher/Launcher.tsx b/config/astal/components/launcher/Launcher.tsx new file mode 100644 index 0000000..9b13853 --- /dev/null +++ b/config/astal/components/launcher/Launcher.tsx @@ -0,0 +1,87 @@ +import { Variable } from "astal"; +import { App, Astal, Gdk, Gtk, hook } from "astal/gtk4"; +import AstalApps from "gi://AstalApps"; +import AppList from "./modules/Apps"; + +const prefixes = ['=']; + +function hide() { + App.get_window("launcher")!.hide(); +} + +const Launcher = () => { + const apps = new AstalApps.Apps(); + const width = Variable(1000); + const height = Variable(1000); + + const text = Variable(""); + const visible = Variable(false); + const onEnter = () => { + // TODO handle custom stuff + apps.fuzzy_query(text.get())?.[0].launch(); + hide(); + }; + return { + width.set(self.get_current_monitor().geometry.width); + height.set(self.get_current_monitor().geometry.height); + }} + onKeyPressed={(self, keyval) => { + if (keyval === Gdk.KEY_Escape) self.hide(); + }} + child={ + + + + + { + hook(self, App, 'window-toggled', (_, win) => { + if (win.name == 'launcher') { + self.set_text(''); + self.grab_focus(); + } + }) + }} + onNotifyText={self => text.set(self.text)} + primaryIconSensitive + onActivate={onEnter} + hexpand> + + { + return !prefixes.includes(v.slice(0, 1)); + })} + > + + + } + > + +} + +export default Launcher; diff --git a/config/astal/components/launcher/launcher.scss b/config/astal/components/launcher/launcher.scss new file mode 100644 index 0000000..8f67caf --- /dev/null +++ b/config/astal/components/launcher/launcher.scss @@ -0,0 +1,16 @@ +@use '../../util/colours.scss' as *; + +window { + background: transparent; +} + +box.app-launcher-wrapper { + background-color: $shadow-color; + + >box.app-launcher { + background-color: $bg-color; + border-radius: 30px; + padding: 20px; + border: 1px solid $accent-color-2; + } +} diff --git a/config/astal/components/launcher/modules/Apps.tsx b/config/astal/components/launcher/modules/Apps.tsx new file mode 100644 index 0000000..abae8a2 --- /dev/null +++ b/config/astal/components/launcher/modules/Apps.tsx @@ -0,0 +1,59 @@ +import { Binding, Variable } from "astal"; +import { Gtk } from "astal/gtk4"; +import AstalApps from "gi://AstalApps"; +import Pango from "gi://Pango?version=1.0"; + +const MAX_ITEMS = 8; + +const AppList = ({ hide, query, visible }: { hide: () => void, query: Variable, visible: Binding }) => { + const apps = new AstalApps.Apps(); + const list = query((text) => apps.fuzzy_query(text).slice(0, MAX_ITEMS)); + return + l.length > 0)} + > + {list.as(l => l.map(app => ))} + + l.length === 0)} + > + + + + +} + +const AppButton = ({ app, hide }: { app: AstalApps.Application, hide: () => void }) => { + return +} + +export default AppList; diff --git a/general/configs/wlogout/mclaren-style.css b/config/astal/components/launcher/modules/Calculation.tsx similarity index 100% rename from general/configs/wlogout/mclaren-style.css rename to config/astal/components/launcher/modules/Calculation.tsx diff --git a/config/astal/components/notifications-opt/README.md b/config/astal/components/notifications-opt/README.md new file mode 100644 index 0000000..c61b718 --- /dev/null +++ b/config/astal/components/notifications-opt/README.md @@ -0,0 +1,6 @@ +# Source +This has been copied from [matshell](https://github.com/Neurarian/matshell) + +It is not yet used, as it has not been adapted yet to feature a notification history. + +Potentially, a notification centre will be added to make this here work better. Styling is also missing diff --git a/config/astal/components/notifications-opt/main.tsx b/config/astal/components/notifications-opt/main.tsx new file mode 100644 index 0000000..2b86cbb --- /dev/null +++ b/config/astal/components/notifications-opt/main.tsx @@ -0,0 +1,32 @@ +import { Astal } from "astal/gtk4"; +import Notifd from "gi://AstalNotifd"; +import Hyprland from "gi://AstalHyprland"; +import { bind } from "astal"; +import { NotificationWidget } from "./modules/Notification"; +import { hyprToGdk } from "../../util/hyprland"; + +export default function Notifications() { + const notifd = Notifd.get_default(); + const hyprland = Hyprland.get_default(); + const { TOP, RIGHT } = Astal.WindowAnchor; + + return ( + hyprToGdk(focused), + )} + anchor={TOP | RIGHT} + visible={bind(notifd, "notifications").as( + (notifications) => notifications.length > 0, + )} + child={ + + {bind(notifd, "notifications").as((notifications) => + notifications.map((n) => ), + )} + + } + /> + ); +} diff --git a/config/astal/components/notifications-opt/modules/Icon.tsx b/config/astal/components/notifications-opt/modules/Icon.tsx new file mode 100644 index 0000000..4ef4e45 --- /dev/null +++ b/config/astal/components/notifications-opt/modules/Icon.tsx @@ -0,0 +1,25 @@ +import { Gtk } from "astal/gtk4"; +import Notifd from "gi://AstalNotifd"; +import { fileExists, isIcon } from "../../../util/notifd"; + + +export function NotificationIcon(notification: Notifd.Notification) { + if (notification.image || notification.appIcon || notification.desktopEntry) { + const icon = notification.image || notification.appIcon || notification.desktopEntry; + if (fileExists(icon)) { + return ( + + + + ); + } else if (isIcon(icon)) { + return ( + + + + ); + } + } + return null; +} + diff --git a/config/astal/components/notifications-opt/modules/Notification.tsx b/config/astal/components/notifications-opt/modules/Notification.tsx new file mode 100644 index 0000000..b533ea3 --- /dev/null +++ b/config/astal/components/notifications-opt/modules/Notification.tsx @@ -0,0 +1,126 @@ +import { bind } from "astal"; +import { Gtk } from "astal/gtk4"; +import Notifd from "gi://AstalNotifd"; +import { NotificationIcon } from "./Icon"; +import { createTimeoutManager } from "../../../util/notifd"; + +export function NotificationWidget({ + notification, +}: { + notification: Notifd.Notification; +}) { + const { START, CENTER, END } = Gtk.Align; + const actions = notification.actions || []; + const TIMEOUT_DELAY = 3000; + + // Keep track of notification validity + const notifd = Notifd.get_default(); + const timeoutManager = createTimeoutManager( + () => notification.dismiss(), + TIMEOUT_DELAY, + ); + return ( + { + // Set up timeout + timeoutManager.setupTimeout(); + const clickGesture = Gtk.GestureClick.new(); + clickGesture.set_button(0); // 0 means any button + clickGesture.connect("pressed", (gesture, _) => { + try { + // Get which button was pressed (1=left, 2=middle, 3=right) + const button = gesture.get_current_button(); + + if (button === 1) { + // PRIMARY/LEFT + if (actions.length > 0) n.invoke(actions[0]); + } else if (button === 2) { + // MIDDLE + notifd.notifications?.forEach((n) => { + n.dismiss(); + }); + } else if (button === 3) { + // SECONDARY/RIGHT + notification.dismiss(); + } + } catch (error) { + console.error(error); + } + }); + self.add_controller(clickGesture); + + self.connect("unrealize", () => { + timeoutManager.cleanup(); + }); + }} + onHoverEnter={timeoutManager.handleHover} + onHoverLeave={timeoutManager.handleHoverLost} + vertical + vexpand={false} + cssClasses={["notification", `${urgency(notification)}`]} + name={notification.id.toString()} + > + + + + + + {NotificationIcon(notification)} + + + + + {actions.length > 0 && ( + + {actions.map(({ label, action }) => ( + + ))} + + )} + + ); +} diff --git a/config/astal/components/notifications/handler.tsx b/config/astal/components/notifications/handler.tsx new file mode 100644 index 0000000..8468ae0 --- /dev/null +++ b/config/astal/components/notifications/handler.tsx @@ -0,0 +1,299 @@ +/* +* dotfiles - handler.ts +* +* Created by Janis Hutz 03/21/2025, Licensed under the GPL V3 License +* https://janishutz.com, development@janishutz.com +* +* +*/ + +import { App, Astal, Gdk } from "astal/gtk4" +import Notifd from "gi://AstalNotifd"; +import Notification from "./notifications"; +import { timeout, Variable } from "astal" + +// ─────────────────────────────────────────────────────────────────── +// Config +// ─────────────────────────────────────────────────────────────────── +const TIMEOUT_DELAY = 5000; +let isRunning = false; +let notificationMenuOpen = false; + +interface NotificationDetails { + notification: Notifd.Notification; + backendID: number; + notifdID: number; +} + + +// ─────────────────────────────────────────────────────────────────── +// ╭───────────────────────────────────────────────╮ +// │ Handler │ +// ╰───────────────────────────────────────────────╯ +// ─────────────────────────────────────────────────────────────────── +let ShownNotifications: Variable = Variable( [] ); +let Notifications: NotificationDetails[] = []; + +const notifd = Notifd.get_default(); +notifd.ignoreTimeout = true; + + +/** + * Delete a notification by its internal ID + * @param index The notifd ID of the notification + */ +const deleteNotification = ( index: number ): void => { + hideNotification( index ); + Notifications.splice( index, 1 ); + if ( Notifications.length === 0 ) { + notificationMenuOpen = false; + } +} + +// ─────────────────────────────────────────────────────────────────── + + +/** + * Delete a notification by notifd id + * @param id The notifd ID of the notification + */ +const deleteNotificationByNotificationID = ( id: number ): void => { + const index = findNotificationByNotificationID( id ); + if ( index > -1 ) { + deleteNotification( index ); + } +} + +// ─────────────────────────────────────────────────────────────────── + + +/** + * Find the internal ID from the notifd id for a notification (helper function) + * @param id The notifd ID of the notification + * @returns The internal ID or -1 if not found + */ +const findNotificationByNotificationID = ( id: number ): number => { + // Find index in Notifications array + for (let index = 0; index < Notifications.length; index++) { + if ( Notifications[ index ].notifdID === id ) { + return index; + } + } + + return -1; +} + +// ─────────────────────────────────────────────────────────────────── + + +/** + * Add a notification to the notification handler + * @param id The notifd ID of the notification + */ +const addNotification = ( id: number ): void => { + const currIndex = Notifications.length; + Notifications.push( { + notifdID: id, + backendID: currIndex, + notification: notifd.get_notification( id ) + } ); + + showNotification( currIndex ); +} + +// ─────────────────────────────────────────────────────────────────── + + +/** + * Start the notifd runner and handle notifications. + */ +const hookToNotificationDaemon = (): void => { + if ( isRunning ) { + printerr( '[ Notifications ] Error: Already running' ); + return; + } + isRunning = true; + + notifd.connect( 'notified', ( _, id ) => { + addNotification( id ); + } ); + + notifd.connect( 'resolved', ( _, id ) => { + deleteNotificationByNotificationID( id ); + } ); +} + +// ─────────────────────────────────────────────────────────────────── + + +/** + * Show a notification. It will stay on screen (regardless of removeAgain passed in), if + * critical urgency + * @param id The internal id (index in Notifications array) + * @param removeAgain = true If to remove the notification from the screen again automatically + */ +const showNotification = ( id: number, removeAgain: boolean = true ) => { + // Add notification to UI for display + const not = [...ShownNotifications.get()].reverse(); + not.push( id ); + ShownNotifications.set( not.reverse() ); + + // Set delay to remove the notification again + if ( removeAgain && Notifications[ id ].notification.get_urgency() !== Notifd.Urgency.CRITICAL ) { + timeout( TIMEOUT_DELAY, () => { + hideNotification( id ); + } ); + } +} + +// ─────────────────────────────────────────────────────────────────── + + +/** + * Stop displaying notification + * @param id The internal id (index in the Notifications array) + */ +const hideNotification = ( id: number ) => { + if ( !notificationMenuOpen ) { + const not = [...ShownNotifications.get()]; + not.splice( not.indexOf( id ), 1 ); + ShownNotifications.set( not ); + } +} + +// ─────────────────────────────────────────────────────────────────── + + +/** + * Open the notification menu. Called by toggleNotificationMenu too + */ +const openNotificationMenu = () => { + // Simply show all notifications + notificationMenuOpen = true; + const not = []; + for (let index = 0; index < Notifications.length; index++) { + not.push( index ); + } + ShownNotifications.set( not.reverse() ); +} + +// ─────────────────────────────────────────────────────────────────── + + +/** + * Close the notification menu. Called by toggleNotificationMenu too + */ +const closeNotificationMenu = () => { + // Hide all notifications + notificationMenuOpen = true; + ShownNotifications.set( [] ); +} + +// ─────────────────────────────────────────────────────────────────── + + +/** + * Toggle the notification menu (i.e. show all notifications) + */ +const toggleNotificationMenu = (): string => { + if ( notificationMenuOpen ) { + closeNotificationMenu(); + return 'Toggle notification menu closed'; + } else { + openNotificationMenu(); + return 'Toggled notification menu open'; + } +} + +// ─────────────────────────────────────────────────────────────────── + + +/** + * Delete all notifications + */ +const clearAllNotifications = () => { + Notifications = []; + ShownNotifications.set( [] ); + // TODO: Hiding for each individual deleteNotification + notificationMenuOpen = false; +} + +// ─────────────────────────────────────────────────────────────────── + + +/** + * Delete the newest notifications + */ +const clearNewestNotifications = () => { + const not = [...ShownNotifications.get()]; + not.splice( 0, 1 ); + ShownNotifications.set( not ); + + Notifications.splice( Notifications.length - 1, 1 ); +} + + + +// ─────────────────────────────────────────────────────────────────── +// ╭───────────────────────────────────────────────╮ +// │ User Interface │ +// ╰───────────────────────────────────────────────╯ +// ─────────────────────────────────────────────────────────────────── +const startNotificationHandler = (gdkmonitor: Gdk.Monitor) => { + const { TOP, RIGHT } = Astal.WindowAnchor + + hookToNotificationDaemon(); + + return list.length > 0 )} + application={App}> + + {ShownNotifications( list => list.map( i => { + // i is index in ShownNotifications array + return + } ) ) } + + +} + +const cliHandler = ( args: string[] ): string => { + if ( args[ 1 ] == 'show' ) { + openNotificationMenu(); + return 'Showing all open notifications'; + } else if ( args[ 1 ] == 'hide' ) { + closeNotificationMenu(); + return 'Hid all notifications'; + } else if ( args[ 1 ] == 'clear' ) { + clearAllNotifications(); + return 'Cleared all notifications'; + } else if ( args[ 1 ] == 'clear-newest' ) { + clearNewestNotifications(); + return 'Cleared newest notification'; + } else if ( args[ 1 ] == 'toggle' ) { + return toggleNotificationMenu(); + } else if ( args[ 1 ] == 'list' ){ + if ( Notifications.length > 0 ) { + let list = 'Currently unviewed notifications: '; + for (let index = 0; index < Notifications.length; index++) { + const element = Notifications[index]; + + list += `\n - (${element.notifdID}) ${element.notification.get_app_name()}: ${element.notification.get_summary()}`; + } + return list; + } else { + return 'No currently unviewed notifications' + } + } else { + return 'Unknown command!'; + } +} + + +export default { + startNotificationHandler, + cliHandler +} diff --git a/config/astal/components/notifications/helper.ts b/config/astal/components/notifications/helper.ts new file mode 100644 index 0000000..78883f5 --- /dev/null +++ b/config/astal/components/notifications/helper.ts @@ -0,0 +1,12 @@ +import { Gtk, Gdk } from "astal/gtk4"; +import { GLib } from "astal"; + +export const isIcon = (icon: string) => { + const display = Gdk.Display.get_default(); + if (!display) return false; + const iconTheme = Gtk.IconTheme.get_for_display(display); + return iconTheme.has_icon(icon); +}; + +export const fileExists = (path: string) => + GLib.file_test(path, GLib.FileTest.EXISTS); diff --git a/config/astal/components/notifications/icon.tsx b/config/astal/components/notifications/icon.tsx new file mode 100644 index 0000000..8d6b75b --- /dev/null +++ b/config/astal/components/notifications/icon.tsx @@ -0,0 +1,24 @@ +import { Gtk } from "astal/gtk4"; +import Notifd from "gi://AstalNotifd"; +import { fileExists, isIcon } from "./helper"; + + +export function NotificationIcon(notification: Notifd.Notification) { + if ( notification.image || notification.appIcon || notification.desktopEntry) { + const icon = notification.image || notification.appIcon || notification.desktopEntry; + if (fileExists(icon)) { + return ( + + + + ); + } else if (isIcon(icon)) { + return ( + + + + ); + } + } + return null; +} diff --git a/config/astal/components/notifications/notifications.scss b/config/astal/components/notifications/notifications.scss new file mode 100644 index 0000000..ddc08de --- /dev/null +++ b/config/astal/components/notifications/notifications.scss @@ -0,0 +1,124 @@ +@use "sass:string"; + +@function gtkalpha($c, $a) { + @return string.unquote("alpha(#{$c},#{$a})"); +} + +// https://gitlab.gnome.org/GNOME/gtk/-/blob/gtk-3-24/gtk/theme/Adwaita/_colors-public.scss +$fg-color: #{"@theme_fg_color"}; +$bg-color: #{"@theme_bg_color"}; +$error: red; + +window.NotificationHandler { + all: unset; +} + +box.notification { + + &:first-child { + margin-top: 1rem; + } + + &:last-child { + margin-bottom: 1rem; + } + + & { + min-width: 400px; + border-radius: 13px; + background-color: $bg-color; + margin: .5rem 1rem .5rem 1rem; + box-shadow: 2px 3px 8px 0 gtkalpha(black, .4); + border: 1pt solid gtkalpha($fg-color, .03); + } + + &.critical { + border: 1pt solid gtkalpha($error, .4); + + .header { + + .app-name { + color: gtkalpha($error, .8); + + } + + .app-icon { + color: gtkalpha($error, .6); + } + } + } + + .header { + padding: .5rem; + color: gtkalpha($fg-color, 0.5); + + .app-icon { + margin: 0 .4rem; + } + + .app-name { + margin-right: .3rem; + font-weight: bold; + + &:first-child { + margin-left: .4rem; + } + } + + .time { + margin: 0 .4rem; + } + + button { + padding: .2rem; + min-width: 0; + min-height: 0; + } + } + + separator { + margin: 0 .4rem; + background-color: gtkalpha($fg-color, .1); + } + + .content { + margin: 1rem; + margin-top: .5rem; + + .summary { + font-size: 1.2em; + color: $fg-color; + } + + .body { + color: gtkalpha($fg-color, 0.8); + } + + .image { + border: 1px solid gtkalpha($fg-color, .02); + margin-right: .5rem; + border-radius: 9px; + min-width: 100px; + min-height: 100px; + background-size: cover; + background-position: center; + } + } + + .actions { + margin: 1rem; + margin-top: 0; + + button { + margin: 0 .3rem; + + &:first-child { + margin-left: 0; + } + + &:last-child { + margin-right: 0; + } + } + } +} diff --git a/config/astal/components/notifications/notifications.tsx b/config/astal/components/notifications/notifications.tsx new file mode 100644 index 0000000..c63cb58 --- /dev/null +++ b/config/astal/components/notifications/notifications.tsx @@ -0,0 +1,113 @@ +// From astal examples + +import { bind, GLib } from "astal"; +import { Gtk } from "astal/gtk4"; +import Notifd from "gi://AstalNotifd"; +import { NotificationIcon } from "./icon"; +// import Pango from "gi://Pango?version=1.0" + +const fileExists = (path: string) => GLib.file_test(path, GLib.FileTest.EXISTS); + +const time = (time: number, format = "%H:%M") => + GLib.DateTime.new_from_unix_local(time).format(format)!; + +const urgency = (n: Notifd.Notification) => { + const { LOW, NORMAL, CRITICAL } = Notifd.Urgency; + // match operator when? + switch (n.urgency) { + case LOW: + return "low"; + case CRITICAL: + return "critical"; + case NORMAL: + default: + return "normal"; + } +}; + +type Props = { + delete: (id: number) => void; + notification: Notifd.Notification; + id: number; +}; + +export default function Notification(props: Props) { + const { notification: n, id: id, delete: del } = props; + const { START, CENTER, END } = Gtk.Align; + + return ( + + + {n.appIcon || n.desktopEntry ? ( + + ) : ( + + )} + + + + + {NotificationIcon(n)} + + + + + {n.get_actions().length > 0 ? ( + + {n.get_actions().map(({ label, id }) => ( + + ))} + + ) : ( + + )} + + ); +} diff --git a/config/astal/env.d.ts b/config/astal/env.d.ts new file mode 100644 index 0000000..7808a73 --- /dev/null +++ b/config/astal/env.d.ts @@ -0,0 +1,22 @@ +declare const SRC: string +declare const DATADIR: 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 +} diff --git a/config/astal/meson.build b/config/astal/meson.build new file mode 100644 index 0000000..fece377 --- /dev/null +++ b/config/astal/meson.build @@ -0,0 +1,28 @@ +project('bar-launcher-tools', version: '1.0') +pkgdatadir = get_option('prefix') / get_option('datadir') / meson.project_name() +main = meson.project_name() + '.built' + +custom_target( + command: [ + find_program('ags'), + 'bundle', + '--root', meson.project_source_root(), + meson.project_source_root() / 'app.ts', + main, + ], + output: main, + input: files('app.ts'), + install: true, + install_dir: pkgdatadir, +) + +configure_file( + input: files('wrapper.sh'), + output: meson.project_name(), + configuration: { + 'MAIN_PROGRAM': pkgdatadir / main, + 'LAYER_SHELL_LIBDIR': dependency('gtk4-layer-shell-0').get_variable('libdir'), + }, + install: true, + install_dir: get_option('prefix') / get_option('bindir'), +) diff --git a/config/astal/no-avatar-icon.jpg b/config/astal/no-avatar-icon.jpg new file mode 100644 index 0000000..87ecabf Binary files /dev/null and b/config/astal/no-avatar-icon.jpg differ diff --git a/config/astal/package.json b/config/astal/package.json new file mode 100644 index 0000000..44226f2 --- /dev/null +++ b/config/astal/package.json @@ -0,0 +1,6 @@ +{ + "name": "astal-shell", + "dependencies": { + "astal": "/usr/share/astal/gjs" + } +} diff --git a/config/astal/style.scss b/config/astal/style.scss new file mode 100644 index 0000000..1927633 --- /dev/null +++ b/config/astal/style.scss @@ -0,0 +1,24 @@ +/* @use './components/notifications/notifications.scss'; */ +@use "./components/bar/bar.scss"; +@use "./components/QuickActions/quickactions.scss"; +@use "./util/colours.scss" as *; +/* @use "./components/launcher/launcher.scss"; */ + +* { + font-size: 1rem; +} + +empty { + min-width: 0; + background-color: transparent; +} + +.title { + font-size: 1.5rem; + font-weight: bold; +} + +.title-2 { + font-size: 1.2rem; + font-weight: bold; +} diff --git a/config/astal/tsconfig.json b/config/astal/tsconfig.json new file mode 100644 index 0000000..a92bc43 --- /dev/null +++ b/config/astal/tsconfig.json @@ -0,0 +1,14 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "compilerOptions": { + "experimentalDecorators": true, + "strict": true, + "target": "ES2022", + "module": "ES2022", + "moduleResolution": "Bundler", + // "checkJs": true, + // "allowJs": true, + "jsx": "react-jsx", + "jsxImportSource": "astal/gtk4", + } +} diff --git a/config/astal/util/brightness.ts b/config/astal/util/brightness.ts new file mode 100644 index 0000000..cf3db5d --- /dev/null +++ b/config/astal/util/brightness.ts @@ -0,0 +1,82 @@ +import GObject, { register, property } from "astal/gobject" +import { monitorFile, readFileAsync } from "astal/file" +import { exec, execAsync } from "astal/process" + +const get = (args: string) => Number(exec(`brightnessctl ${args}`)) +const screen = exec(`bash -c "ls -w1 /sys/class/backlight | head -1"`) +const kbd = exec(`bash -c "ls -w1 /sys/class/leds | head -1"`) + +@register({ GTypeName: "Brightness" }) +export default class Brightness extends GObject.Object { + static instance: Brightness + static get_default() { + if (!this.instance) + this.instance = new Brightness() + + return this.instance + } + + #kbdMax = get(`--device ${kbd} max`) + #kbd = get(`--device ${kbd} get`) + #screenMax = get("max") + #screen = get("get") / (get("max") || 1) + #screenAvailable = true + + @property(Boolean) + get screenAvailable() { return this.#screenAvailable } + + @property(Number) + get kbd() { return this.#kbd } + + set kbd(value) { + if (value < 0 || value > this.#kbdMax) + return + + execAsync(`brightnessctl -d ${kbd} s ${value} -q`).then(() => { + this.#kbd = value + this.notify("kbd") + }) + } + + @property(Number) + get screen() { return this.#screen } + + set screen(percent) { + if (percent < 0) + percent = 0 + + if (percent > 1) + percent = 1 + + execAsync(`brightnessctl set ${Math.floor(percent * 100)}% -q`).then(() => { + this.#screen = percent + this.notify("screen") + }) + } + + constructor() { + super() + + const screenPath = `/sys/class/backlight/${screen}/brightness` + const kbdPath = `/sys/class/leds/${kbd}/brightness` + + monitorFile(screenPath, async f => { + const v = await readFileAsync(f) + this.#screen = Number(v) / this.#screenMax + this.notify("screen") + }) + + monitorFile(kbdPath, async f => { + const v = await readFileAsync(f) + this.#kbd = Number(v) / this.#kbdMax + this.notify("kbd") + }) + + // Check if there is a screen available + try { + get( 'g -c backlight' ); + } catch ( _ ) { + this.#screenAvailable = false; + } + } +} diff --git a/config/astal/util/colours.scss b/config/astal/util/colours.scss new file mode 100644 index 0000000..b8e21c1 --- /dev/null +++ b/config/astal/util/colours.scss @@ -0,0 +1,5 @@ +$fg-color: #E6E6E6; +$bg-color: #141414; +$accent-color: #591641; +$accent-color-2: #97103A; +$shadow-color: rgba(40, 40, 40, 0.3); diff --git a/config/astal/util/hyprland.ts b/config/astal/util/hyprland.ts new file mode 100644 index 0000000..2ef9fb6 --- /dev/null +++ b/config/astal/util/hyprland.ts @@ -0,0 +1,28 @@ +// ┌ ┐ +// │ From https://github.com/Neurarian/matshell │ +// └ ┘ +import { App, Gdk } from "astal/gtk4"; +import Hyprland from "gi://AstalHyprland"; + +/* Match Hyprland monitor to GDK monitor +THIS MAY NOT WORK AS INTENDED IF YOU HAVE MONITORS OF THE SAME MODEL +I did not find a more elegant solution to this. +On my setup GDK coordinates and hyprland coordinates are flipped, +so I cant match by coordinates. */ + +export function hyprToGdk(monitor: Hyprland.Monitor): Gdk.Monitor | null { + const monitors = App.get_monitors(); + if (!monitors || monitors.length === 0) return null; + + for (let gdkmonitor of monitors) { + if ( + monitor && + gdkmonitor && + monitor.get_name() === gdkmonitor.get_connector() + ) + return gdkmonitor; + } + + // Default monitor with null safety + return monitors.length > 0 ? monitors[0] : null; +} diff --git a/config/astal/util/notifd.ts b/config/astal/util/notifd.ts new file mode 100644 index 0000000..55884ab --- /dev/null +++ b/config/astal/util/notifd.ts @@ -0,0 +1,83 @@ +// ┌ ┐ +// │ From https://github.com/Neurarian/matshell │ +// └ ┘ + +import Notifd from "gi://AstalNotifd"; +import { GLib } from "astal"; +import { Gtk, Gdk } from "astal/gtk4"; + +type TimeoutManager = { + setupTimeout: () => void; + clearTimeout: () => void; + handleHover: () => void; + handleHoverLost: () => void; + cleanup: () => void; +}; + +export const createTimeoutManager = ( + dismissCallback: () => void, + timeoutDelay: number, +): TimeoutManager => { + let isHovered = false; + let timeoutId: number | null = null; + + const clearTimeout = () => { + if (timeoutId !== null) { + GLib.source_remove(timeoutId); + timeoutId = null; + } + }; + + const setupTimeout = () => { + clearTimeout(); + + if (!isHovered) { + timeoutId = GLib.timeout_add(GLib.PRIORITY_DEFAULT, timeoutDelay, () => { + clearTimeout(); + dismissCallback(); + return GLib.SOURCE_REMOVE; + }); + } + }; + + return { + setupTimeout, + clearTimeout, + handleHover: () => { + isHovered = true; + clearTimeout(); + }, + handleHoverLost: () => { + isHovered = false; + setupTimeout(); + }, + cleanup: clearTimeout, + }; +}; + +export const time = (time: number, format = "%H:%M") => + GLib.DateTime.new_from_unix_local(time).format(format)!; + +export const urgency = (notification: Notifd.Notification) => { + const { LOW, NORMAL, CRITICAL } = Notifd.Urgency; + + switch (notification.urgency) { + case LOW: + return "low"; + case CRITICAL: + return "critical"; + case NORMAL: + default: + return "normal"; + } +}; + +export const isIcon = (icon: string) => { + const display = Gdk.Display.get_default(); + if (!display) return false; + const iconTheme = Gtk.IconTheme.get_for_display(display); + return iconTheme.has_icon(icon); +}; + +export const fileExists = (path: string) => + GLib.file_test(path, GLib.FileTest.EXISTS); diff --git a/config/astal/util/state.ts b/config/astal/util/state.ts new file mode 100644 index 0000000..c1472c9 --- /dev/null +++ b/config/astal/util/state.ts @@ -0,0 +1,3 @@ +import { Variable } from "astal"; + +export const quickActionsState = Variable( false ); diff --git a/config/fastfetch/config.jsonc b/config/fastfetch/config.jsonc new file mode 100644 index 0000000..3bc2900 --- /dev/null +++ b/config/fastfetch/config.jsonc @@ -0,0 +1,137 @@ +{ + "$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json", + "logo": { + "padding": { + "top": 2, + "left": 1, + "right": 2, + }, + }, + "display": { + "separator": " ", + }, + "modules": [ + // Title + { + "type": "title", + "format": "{#1}╭───────────── {#}{user-name-colored}", + }, + // System Information + { + "type": "custom", + "format": "{#1}│ {#}System Information", + }, + { + "type": "os", + "key": "{#separator}│ {#keys}󰍹 OS", + }, + { + "type": "kernel", + "key": "{#separator}│ {#keys}󰒋 Kernel", + }, + { + "type": "uptime", + "key": "{#separator}│ {#keys}󰅐 Uptime", + }, + { + "type": "packages", + "key": "{#separator}│ {#keys}󰏖 Packages", + "format": "{all}", + }, + { + "type": "custom", + "format": "{#1}│", + }, + // Desktop Environment + { + "type": "custom", + "format": "{#1}│ {#}Desktop Environment", + }, + { + "type": "de", + "key": "{#separator}│ {#keys}󰧨 DE", + }, + { + "type": "wm", + "key": "{#separator}│ {#keys}󱂬 WM", + }, + { + "type": "wmtheme", + "key": "{#separator}│ {#keys}󰉼 Theme", + }, + { + "type": "display", + "key": "{#separator}│ {#keys}󰹑 Resolution", + }, + { + "type": "shell", + "key": "{#separator}│ {#keys}󰞷 Shell", + }, + { + "type": "terminalfont", + "key": "{#separator}│ {#keys}󰛖 Font", + }, + { + "type": "custom", + "format": "{#1}│", + }, + // Hardware Information + { + "type": "custom", + "format": "{#1}│ {#}Hardware Information", + }, + { + "type": "cpu", + "key": "{#separator}│ {#keys}󰻠 CPU", + }, + { + "type": "gpu", + "key": "{#separator}│ {#keys}󰢮 GPU", + }, + { + "type": "memory", + "key": "{#separator}│ {#keys}󰍛 Memory", + }, + { + "type": "disk", + "key": "{#separator}│ {#keys}󰋊 Disk (/)", + "folders": "/", + }, + { + "type": "custom", + "format": "{#1}│", + }, + // Network + { + "type": "custom", + "format": "{#1}│ {#}Network", + }, + { + "type": "wifi", + "key": "{#separator}│ {#keys}⮃ WiFi", + }, + { + "type": "dns", + "key": "{#separator}│ {#keys}🖧 DNS", + }, + { + "type": "localip", + "key": "{#separator}│ {#keys}⍰ IP", + }, + { + "type": "custom", + "format": "{#1}│", + }, + // Colors + { + "type": "colors", + "key": "{#separator}│", + "symbol": "circle", + }, + // Footer + { + "type": "custom", + "format": "{#1}╰───────────────────────────────╯", + }, + ], +} diff --git a/general/configs/fish/config.fish b/config/fish/config.fish similarity index 100% rename from general/configs/fish/config.fish rename to config/fish/config.fish diff --git a/laptop/configs/hypr/hypridle.conf b/config/hypr/hypridle.conf similarity index 100% rename from laptop/configs/hypr/hypridle.conf rename to config/hypr/hypridle.conf diff --git a/config/hypr/hyprland/binds.conf b/config/hypr/hyprland/binds.conf new file mode 100644 index 0000000..92bde67 --- /dev/null +++ b/config/hypr/hyprland/binds.conf @@ -0,0 +1,210 @@ +# ──────────────────────────────────────────────────────────────────── +# ╭────────────────────────────────────────────────╮ +# │ KEYBINDS │ +# ╰────────────────────────────────────────────────╯ +# ──────────────────────────────────────────────────────────────────── + +$mainMod = SUPER +# These key-binds are non-specific, laptop config has a separate file that includes +# extra config for it specifically +bind = $mainMod, Q, killactive +# bind = $mainMod SHIFT, Q, exit +bind = $mainMod, Return, exec, kitty +# bind = $mainMod, E, exec, thunar +bind = $mainMod SHIFT, E, exec, thunar +bind = $mainMod, E, exec, kitty --hold fish -c "y" +bind = $mainMod, V, togglefloating, +bind = $mainMod, F, fullscreen, + +# ──────────────────────────────────────────────────────────────────── +# ╭────────────────────────────────────────────────╮ +# │ AGS │ +# ╰────────────────────────────────────────────────╯ +# ──────────────────────────────────────────────────────────────────── + +# ┌ ┐ +# │ Notifications │ +# └ ┘ +bind = $mainMod, N, exec, astal -i notifier toggle +bind = $mainMod, C, exec, astal -i notifier clear-newest +bind = $mainMod SHIFT, C, exec, astal -i notifier clear +bind = $mainMod SHIFT, N, exec, astal -i notifier show +bind = $mainMod CTRL SHIFT, N, exec, astal -i notifier hide + + +# ──────────────────────────────────────────────────────────────────── +# ╭────────────────────────────────────────────────╮ +# │ General │ +# ╰────────────────────────────────────────────────╯ +# ──────────────────────────────────────────────────────────────────── + + +# ┌ ┐ +# │ Launch commands │ +# └ ┘ +bind = $mainMod SHIFT, L, exec, librewolf +bind = $mainMod SHIFT, D, exec, vesktop +bind = $mainMod SHIFT, V, exec, vscodium +bind = $mainMod SHIFT, T, exec, thunderbird +bind = $mainMod SHIFT, H, exec, heroic +bind = $mainMod SHIFT, Z, exec, zathura +bind = $mainMod SHIFT, I, exec, notify-send 'AirPlay video server starting...' --app-name="AirPlay Video" && terminator -e "systemctl start avahi-daemon && sleep 5 && uxplay -n LinuxVideoPlay -nh" +bind = $mainMod SHIFT, A, exec, notify-send 'AirPlay server starting...' --app-name="AirPlay Audio" && terminator -T "hidden-terminator" -e "systemctl start avahi-daemon && shairport-sync -a LinuxPlay" +bind = $mainMod SHIFT, G, exec, notify-send 'Preparing system for gaming...' --app-name="Util" && corectrl +bind = $mainMod SHIFT, P, exec, notify-send 'Steam is launching...' --app-name="Steam" && steam +bind = $mainMod SHIFT, R, exec, notify-send 'Launching in Remoteplay optimised session' --app-name="Steam" && steam -pipewire +bind = $mainMod CTRL, K, exec, notify-send 'Insta-Kill activated' --app-name="Hyprctl" && hyprctl kill +bind = $mainMod SHIFT, O, exec, terminator -e "~/projects/dotfiles/ai.sh" + +# ┌ ┐ +# │ Screenshots │ +# └ ┘ +bind = $mainMod SHIFT, S, exec, grimblast --notify copy area +bind = $mainMod CTRL, S, exec, grimblast --notify copysave area +bind = $mainMod ALT, S, exec, grimblast --notify save area +bind = , PRINT, exec, grimblast --notify copy screen +bind = CTRL, PRINT, exec, grimblast --notify copysave screen +bind = SHIFT, PRINT, exec, grimblast --notify save screen + +# ┌ ┐ +# │ Rofi commands │ +# └ ┘ +bind = $mainMod, Space, exec, killall rofi || rofi -show combi -modes combi -combi-modes "window,drun,run" + +# ┌ ┐ +# │ Logout commands │ +# └ ┘ +bind = $mainMod, escape, exec, wlogout +bind = $mainMod ALT CTRL, L, exec, hyprlock --immediate + + +# ──────────────────────────────────────────────────────────────────── +# ╭────────────────────────────────────────────────╮ +# │ Layout binds │ +# ╰────────────────────────────────────────────────╯ +# ──────────────────────────────────────────────────────────────────── + + +# ┌ ┐ +# │ Move focus with mainMod + arrow keys │ +# └ ┘ +bind = $mainMod, left, movefocus, l +bind = $mainMod, right, movefocus, r +bind = $mainMod, up, movefocus, u +bind = $mainMod, down, movefocus, d + +# ┌ ┐ +# │ Same with vim-motions │ +# └ ┘ +bind = $mainMod, h, movefocus, l +bind = $mainMod, l, movefocus, r +bind = $mainMod, j, movefocus, d +bind = $mainMod, k, movefocus, u + +# ┌ ┐ +# │ Switch workspaces with mainMod + [0-9] │ +# └ ┘ +bind = $mainMod, 1, workspace, 1 +bind = $mainMod, 2, workspace, 2 +bind = $mainMod, 3, workspace, 3 +bind = $mainMod, 4, workspace, 4 +bind = $mainMod, 5, workspace, 5 +bind = $mainMod, 6, workspace, 6 +bind = $mainMod, 7, workspace, 7 +bind = $mainMod, 8, workspace, 8 +bind = $mainMod, 9, workspace, 9 +bind = $mainMod, 0, workspace, 10 +bind = $mainMod CTRL, left, workspace, e-1 +bind = $mainMod CTRL, right, workspace, e+1 +bind = $mainMod CTRL, h, workspace, e-1 +bind = $mainMod CTRL, l, workspace, e+1 + + +# ┌ ┐ +# │ Move active window to a workspace with │ +# │ mainMod + SHIFT + [0-9] │ +# └ ┘ +bind = $mainMod SHIFT, 1, movetoworkspace, 1 +bind = $mainMod SHIFT, 2, movetoworkspace, 2 +bind = $mainMod SHIFT, 3, movetoworkspace, 3 +bind = $mainMod SHIFT, 4, movetoworkspace, 4 +bind = $mainMod SHIFT, 5, movetoworkspace, 5 +bind = $mainMod SHIFT, 6, movetoworkspace, 6 +bind = $mainMod SHIFT, 7, movetoworkspace, 7 +bind = $mainMod SHIFT, 8, movetoworkspace, 8 +bind = $mainMod SHIFT, 9, movetoworkspace, 9 +bind = $mainMod SHIFT, 0, movetoworkspace, 10 +bind = $mainMod SHIFT, left, movetoworkspace, e-1 +bind = $mainMod SHIFT, right, movetoworkspace, e+1 +bind = $mainMod SHIFT, j, movetoworkspace, e-1 +bind = $mainMod SHIFT, k, movetoworkspace, e+1 + + +# ┌ ┐ +# │ Scroll through existing workspaces with │ +# │ mainMod + scroll │ +# └ ┘ +bind = $mainMod, mouse_down, workspace, e+1 +bind = $mainMod, mouse_up, workspace, e-1 + + +# ┌ ┐ +# │ Tile window to a part of the screen │ +# └ ┘ +# bind = $mainMod CTRL, left, movewindow, left +# bind = $mainMod CTRL, right, movewindow, right + + +# ┌ ┐ +# │ move to next window / previous window with │ +# │ ALT + Tab / SHIFT + ALT + Tab │ +# └ ┘ +bind = ALT SHIFT, tab, cyclenext, prev +# bind = ALT, tab, cyclenext, next +# bind = ALT CTRL, tab, focusurgentorlast +bind = ALT, tab, focusurgentorlast + + +# ┌ ┐ +# │ Master layout commands │ +# └ ┘ +bind = $mainMod CTRL, M, layoutmsg, swapwithmaster +bind = $mainMod SHIFT, A, layoutmsg, addmaster +bind = $mainMod SHIFT CTRL, right, layoutmsg, orientationnext +bind = $mainMod SHIFT CTRL, left, layoutmsg, orientationprev + + +# ┌ ┐ +# │ Move/resize windows with mainMod + LMB/RMB │ +# │ and dragging │ +# └ ┘ +bindm = $mainMod, mouse:272, movewindow +bindm = $mainMod, mouse:273, resizewindow + + +# ┌ ┐ +# │ Freeze │ +# └ ┘ +bind = $mainMod SHIFT, escape, exec, hyprfreeze -a + + +# ┌ ┐ +# │ Volume control │ +# └ ┘ +bind = ,code:123, exec, pamixer -i 5 +bind = ,code:122, exec, pamixer -d 5 +bind = ,code:121, exec, pamixer -t + + +# ┌ ┐ +# │ Brightness-Control │ +# └ ┘ +bind = ,code:232, exec, light -U 5 && notify-send 'Display brightness decreased by 5%' --app-name="Brightness" +bind = ,code:233, exec, light -A 5 && notify-send 'Display brightness increased by 5%' --app-name="Brightness" + + +# ┌ ┐ +# │ Monitor config binds │ +# └ ┘ +bind = $mainMod CTRL, D, exec, hyprctl keyword monitor HDMI-A-1, 1280x720@60, 1920x0, 1, mirror, DP-1 && notify-send 'Set FPV goggles to mirror main screen' --app-name="Hyprctl" +bind = $mainMod CTRL, E, exec, hyprctl keyword monitor HDMI-A-1, 1280x720@60, 3840x0, 1 && notify-send 'Set to expand FPV goggles' --app-name="Hyprctl" diff --git a/config/hypr/hyprland/colors.conf b/config/hypr/hyprland/colors.conf new file mode 100644 index 0000000..2e5d227 --- /dev/null +++ b/config/hypr/hyprland/colors.conf @@ -0,0 +1,18 @@ +# ──────────────────────────────────────────────────────────────────── +# ╭────────────────────────────────────────────────╮ +# │ COLOURS │ +# ╰────────────────────────────────────────────────╯ +# ──────────────────────────────────────────────────────────────────── + +exec = swaybg -m fill -i /home/janis/NextCloud/Wallpapers/dark/colour-explosion.jpg + +general { + col.active_border = rgba(591641cc) rgba(97103acc) rgba(2d2057cc) 45deg + col.inactive_border = rgb(000000) +} + +decoration { + shadow { + color = rgb(282828) + } +} diff --git a/config/hypr/hyprland/general.conf b/config/hypr/hyprland/general.conf new file mode 100644 index 0000000..df594df --- /dev/null +++ b/config/hypr/hyprland/general.conf @@ -0,0 +1,137 @@ +# ──────────────────────────────────────────────────────────────────── +# ╭────────────────────────────────────────────────╮ +# │ LAUNCHING OF PROGRAMS │ +# ╰────────────────────────────────────────────────╯ +# ──────────────────────────────────────────────────────────────────── + +source = ./colors.conf +exec-once = ~/.config/hypr/xdg-portal-hyprland +exec-once = dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP XAUTHORITY DISPLAY +exec-once = systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP +exec-once = /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1 +# exec-once = waybar +exec-once = hypridle +exec-once = nm-applet +exec-once = nextcloud --background +# exec-once = sleep 2 && bash -c "ags run -d ~/projects/active/dotfiles/config/astal/ --gtk4 >> ~/log 2>&1" +exec-once = sleep 2 && bash -c "ags run -d ~/projects/active/dotfiles/config/astal/ --gtk4" +# exec-once = bash -c "ags run -d ~/projects/active/dotfiles/config/ags/notifications/ >> ~/logn 2>&1" +exec-once = bash -c "ags run -d ~/projects/active/dotfiles/config/ags/notifications/" + + + +exec = hyprctl setcursor oreo_spark_blue_cursors 24 +env = QT_QPA_PLATFORM,wayland +env = QT_QPA_PLATFORM_THEME,qt6ct +env = OLLAMA_HOST,0.0.0.0 + +# ──────────────────────────────────────────────────────────────────── +# ╭────────────────────────────────────────────────╮ +# │ INPUT │ +# ╰────────────────────────────────────────────────╯ +# ──────────────────────────────────────────────────────────────────── +input { + kb_layout = ch + kb_options = caps:swapescape + natural_scroll = true + + numlock_by_default = true + + follow_mouse = 2 + mouse_refocus = true + + touchpad { + disable_while_typing = true + natural_scroll = true + } + + focus_on_close = 1 + + sensitivity = 0 # -1.0 - 1.0, 0 means no modification. +} + +gestures { + # See https://wiki.hyprland.org/Configuring/Variables/ for more + workspace_swipe = true + workspace_swipe_distance = 300 +} + + +# ──────────────────────────────────────────────────────────────────── +# ╭────────────────────────────────────────────────╮ +# │ GENERAL CONFIG │ +# ╰────────────────────────────────────────────────╯ +# ──────────────────────────────────────────────────────────────────── +general { + # See https://wiki.hyprland.org/Configuring/Variables/ for more + + gaps_in = 3 + gaps_out = 4 + border_size = 1 + # col.active_border = rgba(cc5c00ff) rgba(cc5c00ff) rgba(ff0000ff) 45deg + # col.inactive_border = rgba(595959aa) + + layout = master + no_border_on_floating = false +} + +decoration { + # See https://wiki.hyprland.org/Configuring/Variables/ for more + inactive_opacity = 1 + rounding = 10 + + shadow { + enabled = true + range = 4 + # color = rgba(1a1a1aee) + } + + blur { + enabled = true + xray = true + new_optimizations = true + size = 1 + passes = 2 + } + dim_inactive = true + dim_strength = 0.1 +} + +animations { + enabled = yes + + # Some default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more + + bezier = myBezier, 0.05, 0.9, 0.1, 1.05 + + animation = windows, 1, 7, myBezier + animation = windowsOut, 1, 7, default, popin 80% + animation = border, 1, 10, default + animation = fade, 1, 7, default + animation = workspaces, 1, 6, default +} + +misc { + disable_hyprland_logo = true + disable_splash_rendering = false + vrr = 2 + allow_session_lock_restore = true +} + +dwindle { + # See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more + pseudotile = yes # master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below + preserve_split = yes # you probably want this +} + +master { + # See https://wiki.hyprland.org/Configuring/Master-Layout/ for more +# no_gaps_when_only = true +} + + +cursor { + no_warps = false + inactive_timeout = 60 +} + diff --git a/config/hypr/hyprland/windowrules.conf b/config/hypr/hyprland/windowrules.conf new file mode 100644 index 0000000..4537351 --- /dev/null +++ b/config/hypr/hyprland/windowrules.conf @@ -0,0 +1,121 @@ +# ──────────────────────────────────────────────────────────────────── +# ╭────────────────────────────────────────────────╮ +# │ WORKSPACE RULES │ +# ╰────────────────────────────────────────────────╯ +# ──────────────────────────────────────────────────────────────────── + +# Display full sized (without gaps), if only window on screen +# workspace = w[tv1], gapsout:0, gapsin:0 +# workspace = f[1], gapsout:0, gapsin:0 +# windowrule = bordersize 0, floating:0, onworkspace:w[tv1] +# windowrule = rounding 0, floating:0, onworkspace:w[tv1] +# windowrule = bordersize 0, floating:0, onworkspace:f[1] +# windowrule = rounding 0, floating:0, onworkspace:f[1] + +$mainMod = SUPER + +# ──────────────────────────────────────────────────────────────────── +# ╭────────────────────────────────────────────────╮ +# │ WINDOW RULES │ +# ╰────────────────────────────────────────────────╯ +# ──────────────────────────────────────────────────────────────────── +windowrule = float, title:.*(rofi).* +windowrule = animation popin, title:.*(rofi).* +windowrule = center, title:(rofi)(.*) + +windowrule = move 1450 50, title:^(.*)(Power menu)$ +windowrule = workspace 2, class:evince +windowrule = workspace 2, title:.*(Okular).* +windowrule = workspace 2, class:org.pwmt.zathura +windowrule = fullscreen, title:wlogout +windowrule = workspace 2, class:librewolf +windowrule = workspace 2, title:LibreWolf +windowrule = workspace 2, title:(.*)(Discord)(.*) +windowrule = workspace 3, title:^(Steam)(.*)$ +windowrule = workspace 1, title:^(.*)(VSCodium)$ +windowrule = center, title:^(.*)(VSCodium)$ +windowrule = workspace 3, class:minecraft-launcher +windowrule = tile, class:minecraft-launcher +windowrule = fullscreen, title:^(.*)(Minecraft)(.*)$ +windowrule = workspace 3, title:^(.*)(Minecraft)(.*)$ + +windowrule = workspace 1, title:^(.*)hidden-terminator*(.*)$ +windowrule = size 0 0, title:^(.*)hidden-terminator*(.*)$ +windowrule = move 0 0, title:^(.*)hidden-terminator*(.*)$ +windowrule = float, title:^(.*)hidden-terminator*(.*)$ + +# ┌ ┐ +# │ Set rule for yazi filepicker │ +# └ ┘ +windowrule = float, title:^(.*)termfilechooser*(.*)$ +windowrule = size 1400 800, title:^(.*)termfilechooser*(.*)$ +windowrule = center, title:^(.*)termfilechooser*(.*)$ + +# ┌ ┐ +# │ Set floating windows & position them centered │ +# └ ┘ +windowrule = float, class:file_progress +windowrule = center, class:file_progress + +windowrule = float, class:confirm +windowrule = center, class:confirm + +windowrule = float, class:dialog +windowrule = center, class:dialog + +windowrule = float, class:download +windowrule = center, class:download + +windowrule = float, class:notification +windowrule = center, class:notification + +windowrule = float, class:error +windowrule = center, class:error + +windowrule = float, class:splash +windowrule = center, class:splash + +windowrule = float, class:confirmreset +windowrule = center, class:confirmreset + +windowrule = float, title:Open File +windowrule = center, title:Open File + +windowrule = float, title:branchdialog +windowrule = center, title:branchdialog + +windowrule = float, class:Lxappearance +windowrule = center, class:Lxappearance + +windowrule = float, title:^(Media viewer)$ +windowrule = center, title:^(Media viewer)$ + +windowrule = float, title:^(Volume Control)$ +windowrule = center, title:^(Volume Control)$ + +windowrule = float, title:^(Picture-in-Picture)$ +windowrule = center, title:^(Picture-in-Picture)$ + +windowrule = float, title:^(File Operation Progress)$ +windowrule = center, title:^(File Operation Progress)$ + +windowrule = float, title:^(Loading)(.*)$ +windowrule = center, title:^(Loading)(.*)$ + +windowrule = float, class:pavucontrol-qt +windowrule = center, class:pavucontrol-qt + +windowrule = float, class:pavucontrol +windowrule = center, class:pavucontrol + +windowrule = float, class:file-roller +windowrule = center, class:file-roller + +windowrule = idleinhibit focus, title:^(Rocket League)(.*)$ +windowrule = fullscreen, title:^(Steam Big Picture)$ +windowrule = idleinhibit always, class:steam +windowrule = idleinhibit always, class:lutris +windowrule = idleinhibit focus, class:vlc +windowrule = idleinhibit focus, class:supertuxkart +windowrule = idleinhibit fullscreen, title:^(.*)(Discord)(.*)$ +windowrule = idleinhibit fullscreen, title:^(.*)(~)(.*)$ diff --git a/pc/configs/hypr/hyprland.conf b/config/hypr/hyprland_desktop.conf similarity index 75% rename from pc/configs/hypr/hyprland.conf rename to config/hypr/hyprland_desktop.conf index fd9ec71..b5b4114 100644 --- a/pc/configs/hypr/hyprland.conf +++ b/config/hypr/hyprland_desktop.conf @@ -11,9 +11,11 @@ -#----------# -# MONITORS # -#----------# +# ──────────────────────────────────────────────────────────────────── +# ╭────────────────────────────────────────────────╮ +# │ MONITORS │ +# ╰────────────────────────────────────────────────╯ +# ──────────────────────────────────────────────────────────────────── # monitor=DP-1, preferred, 0x0, 1, vrr, 2 monitor=DP-1, 1920x1080@144, 0x0, 1, vrr, 2 @@ -22,16 +24,17 @@ monitor=DP-2, 1920x1080@75, 1920x0, 1 # exec = swaybg -m fill -i /mnt/storage/SORTED/Pictures/Wallpapers/wallpaper/arch-bg-matterhorn.jpg -exec = swaybg -m fill -i /mnt/storage/SORTED/Pictures/Wallpapers/McLaren/main_livery_upscaled.jpg +# exec = swaybg -m fill -i /mnt/storage/SORTED/Pictures/Wallpapers/McLaren/main_livery_upscaled.jpg source=./hyprland/binds.conf source=./hyprland/general.conf source=./hyprland/windowrules.conf -#---------# -# DESKTOP # -#---------# + +# ┌ ┐ +# │ DESKTOP │ +# └ ┘ workspace = 1, monitor:DP-1, default:1 workspace = 2, monitor:DP-2, default:1 workspace = 3, monitor:DP-1 diff --git a/laptop/configs/hypr/hyprland.conf b/config/hypr/hyprland_laptop.conf similarity index 69% rename from laptop/configs/hypr/hyprland.conf rename to config/hypr/hyprland_laptop.conf index 0bab273..e81613a 100644 --- a/laptop/configs/hypr/hyprland.conf +++ b/config/hypr/hyprland_laptop.conf @@ -11,24 +11,27 @@ -#----------# -# MONITORS # -#----------# + +# ──────────────────────────────────────────────────────────────────── +# ╭────────────────────────────────────────────────╮ +# │ MONITORS │ +# ╰────────────────────────────────────────────────╯ +# ──────────────────────────────────────────────────────────────────── monitor=eDP-1, 2880x1800@60, 0x0, 1.5 # monitor=,highres highrr, auto, 1 -exec = swaybg -m fill -i /home/janis/Pictures/arch-bg.png +# exec = swaybg -m fill -i /home/janis/Pictures/arch-bg.png source=./hyprland/binds.conf source=./hyprland/general.conf source=./hyprland/windowrules.conf -#--------# -# LAPTOP # -#--------# +# ┌ ┐ +# │ LAPTOP │ +# └ ┘ exec = hyprctl setcursor oreo_spark_blue_cursors 36 env = HYPRCURSOR_THEME, Oreo_spark_blue_cursor env = X_CURSOR_THEME, Oreo_spark_blue_cursor @@ -45,26 +48,32 @@ xwayland { force_zero_scaling = true } -# Volume control +# ── Volume control ────────────────────────────────────────────────── bind = ,code:123, exec, pamixer -i 5 bind = ,code:122, exec, pamixer -d 5 bind = ,code:121, exec, pamixer -t -# Brightness-Control +# ── Brightness-Control ────────────────────────────────────────────── bind = ,code:232, exec, light -U 5 && notify-send 'Display brightness decreased by 5%' bind = ,code:233, exec, light -A 5 && notify-send 'Display brightness increased by 5%' -# Monitor config binds +# ── Monitor config binds ──────────────────────────────────────────── bind = $mainMod CTRL, D, exec, hyprctl keyword monitor HDMI-A-1, 1920x1080@60, 1920x0, 1, mirror, eDP-1 && notify-send 'Set to mirror internal display' bind = $mainMod CTRL, E, exec, hyprctl keyword monitor HDMI-A-1, 1920x1080@60, 1920x0, 1 && notify-send 'Set to expand external display' -# Internal display controls + +# ── Internal display controls ─────────────────────────────────────── bind = $mainMod ALT, E, exec, hyprctl keyword monitor eDP-1, 2880x1800@60, 0x0, 1.5 && cpupower-gui -b && notify-send 'Set to battery optimized settings' bind = $mainMod ALT, P, exec, hyprctl keyword monitor eDP-1, 2880x1800@120, 0x0, 1.5 && cpupower-gui -p && notify-send 'Set to performance optimized settings' +<<<<<<< HEAD:laptop/configs/hypr/hyprland.conf # Vivado inversion +======= + +# ── Vivado inversion ──────────────────────────────────────────────── +>>>>>>> v2:config/hypr/hyprland_laptop.conf windowrule = plugin:invertwindow, class:Vivado windowrule = tile, title:(.*)Vivado(.*) diff --git a/pc/configs/hypr/hyprlock.conf b/config/hypr/hyprlock.conf similarity index 87% rename from pc/configs/hypr/hyprlock.conf rename to config/hypr/hyprlock.conf index 57a8087..8150a2d 100644 --- a/pc/configs/hypr/hyprlock.conf +++ b/config/hypr/hyprlock.conf @@ -13,15 +13,19 @@ general { grace = 15 } -# BACKGROUND +# ┌ ┐ +# │ BACKGROUND │ +# └ ┘ background { monitor = - path = /mnt/storage/SORTED/Pictures/Wallpapers/McLaren/livery_3.jpg # Or screenshot + path = /home/janis/NextCloud/Wallpapers/dark/colour-splash.jpg # Or screenshot blur_passes = 1 } -# PASSWORD INPUT +# ┌ ┐ +# │ PASSWORD INPUT │ +# └ ┘ input-field { monitor = size = 300, 40 @@ -29,7 +33,7 @@ input-field { dots_size = 0.33 # Scale of input-field height, 0.2 - 0.8 dots_spacing = 0.15 # Scale of dots' absolute size, 0.0 - 1.0 dots_center = false - outer_color = rgb(204, 92, 0) + outer_color = rgb(89, 22, 65) inner_color = rgb(200, 200, 200) font_color = rgb(10, 10, 10) fade_on_empty = true @@ -44,9 +48,9 @@ input-field { label { monitor = text = $TIME - color = rgba(200, 200, 200, 1.0) + color = font_size = 100 - font_family = Source Code Pro + font_family = Comfortaa position = 0, 80 halign = center @@ -58,7 +62,7 @@ label { text = $LAYOUT color = rgba(200, 200, 200, 1.0) font_size = 12 - font_family = Source Code Pro + font_family = Comfortaa position = 0, 0 halign = right @@ -70,7 +74,7 @@ label { text = $USER color = rgba(200, 200, 200, 1.0) font_size = 12 - font_family = Source Code Pro + font_family = Comfortaa position = 0, 0 halign = left @@ -83,7 +87,7 @@ label { text = Failed attempts: $ATTEMPTS color = rgba(200, 0, 0, 1.0) font_size = 12 - font_family = Source Code Pro + font_family = Adwaita Sans position = 0, 20 halign = center diff --git a/laptop/configs/hypr/xdg-portal-hyprland b/config/hypr/xdg-portal-hyprland similarity index 100% rename from laptop/configs/hypr/xdg-portal-hyprland rename to config/hypr/xdg-portal-hyprland diff --git a/general/configs/kitty/current-theme.conf b/config/kitty/current-theme.conf similarity index 100% rename from general/configs/kitty/current-theme.conf rename to config/kitty/current-theme.conf diff --git a/config/kitty/kitty.conf b/config/kitty/kitty.conf new file mode 100644 index 0000000..db4cc82 --- /dev/null +++ b/config/kitty/kitty.conf @@ -0,0 +1,30 @@ +# ──────────────────────────────────────────────────────────────────── +# ╭────────────────────────────────────────────────╮ +# │ Kitty Config │ +# ╰────────────────────────────────────────────────╯ +# ──────────────────────────────────────────────────────────────────── + + +# ┌ ┐ +# │ FONTS │ +# └ ┘ +font_family Source Code Pro +font_size 12.0 + + + +# ┌ ┐ +# │ Cursor config │ +# └ ┘ +cursor_trail 1 + + +# ┌ ┐ +# │ Mouse config │ +# └ ┘ +mouse_hide_wait 3.0 +url_style curly +url_prefixes file ftp ftps gemini git gopher http https irc ircs kitty mailto news sftp ssh +detect_urls yes +show_hyperlink_targets yes +include current-theme.conf diff --git a/general/configs/kitty/kitty.conf.old b/config/kitty/kitty.conf.old similarity index 100% rename from general/configs/kitty/kitty.conf.old rename to config/kitty/kitty.conf.old diff --git a/config/lazygit/config.yml b/config/lazygit/config.yml new file mode 100644 index 0000000..e69de29 diff --git a/config/lint/eslint.config.mjs b/config/lint/eslint.config.mjs new file mode 100644 index 0000000..05f1e56 --- /dev/null +++ b/config/lint/eslint.config.mjs @@ -0,0 +1,65 @@ +// @ts-check + +import eslint from '@eslint/js'; +import tseslint from 'typescript-eslint'; +import stylistic from '@stylistic/eslint-plugin'; + +export default tseslint.config( + eslint.configs.recommended, + ...tseslint.configs.recommended, + { + 'plugins': { + '@stylistic/js': stylistic, + '@stylistic/ts': stylistic, + }, + 'rules': { + // Formatting + '@stylistic/js/array-bracket-newline': [ 'error', { 'multiline': true, 'minItems': 4 } ], + '@stylistic/js/array-bracket-spacing': [ 'error', 'always' ], + '@stylistic/js/array-element-newline': [ 'error', { 'multiline': true, 'minItems': 4 } ], + '@stylistic/js/arrow-parens': [ 'error', 'always' ], + '@stylistic/js/arrow-spacing': [ 'error', { 'before': true, 'after': true } ], + '@stylistic/js/block-spacing': [ 'error', 'always' ], + '@stylistic/js/brace-style': [ 'error', '1tbs' ], + '@stylistic/js/comma-spacing': [ 'error', { 'before': false, 'after': true } ], + '@stylistic/js/comma-style': [ 'error', 'last' ], + '@stylistic/js/dot-location': [ 'error', 'property' ], + '@stylistic/js/eol-last': [ 'error', 'always' ], + '@stylistic/js/function-call-spacing': [ 'error', 'never' ], + '@stylistic/js/implicit-arrow-linebreak': [ 'error', 'beside' ], + '@stylistic/js/indent': [ 'error', 4 ], + '@stylistic/js/key-spacing': [ 'error', { 'beforeColon': false, 'afterColon': true } ], + '@stylistic/js/keyword-spacing': [ 'error', { 'before': true, 'after': true } ], + '@stylistic/js/lines-between-class-members': [ 'error', 'always' ], + '@stylistic/js/new-parens': [ 'error', 'always' ], + '@stylistic/js/no-extra-parens': [ 'error', 'all' ], + '@stylistic/js/no-extra-semi': 'error', + '@stylistic/js/no-floating-decimal': 'error', + '@stylistic/js/no-mixed-operators': 'error', + '@stylistic/js/no-mixed-spaces-and-tabs': 'error', + '@stylistic/js/no-multi-spaces': 'error', + '@stylistic/js/no-trailing-spaces': 'error', + '@stylistic/js/no-whitespace-before-property': 'error', + '@stylistic/js/object-curly-newline': [ 'error', { 'multiline': true, 'minProperties': 3 } ], + '@stylistic/js/object-curly-spacing': [ 'error', 'always' ], + '@stylistic/js/one-var-declaration-per-line': 'error', + '@stylistic/js/quote-props': [ 'error', 'always' ], + '@stylistic/js/quotes': [ 'error', 'single' ], + '@stylistic/js/rest-spread-spacing': [ 'error', 'never' ], + '@stylistic/js/semi': [ 'error', 'always' ], + '@stylistic/js/semi-spacing': [ 'error', { 'before': false, 'after': true } ], + '@stylistic/js/semi-style': [ 'error', 'last' ], + '@stylistic/js/space-before-blocks': [ 'error', 'always' ], + '@stylistic/js/space-before-function-paren': [ 'error', 'always' ], + '@stylistic/js/space-in-parens': [ 'error', 'always' ], + '@stylistic/js/space-infix-ops': [ 'error', { 'int32Hint': false } ], + '@stylistic/js/space-unary-ops': 'error', + '@stylistic/js/spaced-comment': [ 'error', 'always' ], + '@stylistic/js/switch-colon-spacing': 'error', + '@stylistic/js/template-curly-spacing': [ 'error', 'always' ], + '@stylistic/js/wrap-iife': [ 'error', 'inside' ], + '@stylistic/js/wrap-regex': 'error', + '@stylistic/ts/type-annotation-spacing': 'error', + } + } +); diff --git a/general/configs/mpv/fonts/Material-Design-Iconic-Font.ttf b/config/mpv/fonts/Material-Design-Iconic-Font.ttf similarity index 100% rename from general/configs/mpv/fonts/Material-Design-Iconic-Font.ttf rename to config/mpv/fonts/Material-Design-Iconic-Font.ttf diff --git a/general/configs/mpv/scripts/modernx.lua b/config/mpv/scripts/modernx.lua similarity index 100% rename from general/configs/mpv/scripts/modernx.lua rename to config/mpv/scripts/modernx.lua diff --git a/pc/configs/rofi/config.rasi b/config/rofi/config_desktop.rasi old mode 100755 new mode 100644 similarity index 85% rename from pc/configs/rofi/config.rasi rename to config/rofi/config_desktop.rasi index 14a54c3..e0e9303 --- a/pc/configs/rofi/config.rasi +++ b/config/rofi/config_desktop.rasi @@ -9,4 +9,4 @@ configuration { display-combi: "🔎 "; } -@theme "themes/mcLarenTheme.rasi" +@theme "style.rasi" diff --git a/general/configs/rofi/config.rasi b/config/rofi/config_laptop.rasi old mode 100755 new mode 100644 similarity index 86% rename from general/configs/rofi/config.rasi rename to config/rofi/config_laptop.rasi index ab94e55..929cac5 --- a/general/configs/rofi/config.rasi +++ b/config/rofi/config_laptop.rasi @@ -10,4 +10,4 @@ configuration { dpi: 160; } -@theme "themes/mcLarenTheme.rasi" +@theme "style.rasi" diff --git a/general/configs/rofi/themes/mcLarenTheme.rasi b/config/rofi/style.rasi similarity index 70% rename from general/configs/rofi/themes/mcLarenTheme.rasi rename to config/rofi/style.rasi index 9db5700..b4376c3 100644 --- a/general/configs/rofi/themes/mcLarenTheme.rasi +++ b/config/rofi/style.rasi @@ -1,10 +1,11 @@ * { - background: rgba(0, 0, 0, 1); - foreground: #ffffff; - mclaren: #cc5c00; - border-color: @mclaren; - bg-selected: #282c34; - grey: #565c64; + background: #141414; + background-selected: #1E1E1E; + foreground: #E6E6E6; + accent: #591641; + accent-two: #97103A; + // border-color: #2D2057; + inactive: #C8C8C8; spacing: 2; width: 30em; margin: 0; @@ -13,7 +14,7 @@ #window { background-color: @background; - border-color: @mclaren; + border-color: @accent; border: 1px; border-radius: 10px; padding: 0; @@ -47,8 +48,8 @@ } element selected { - background-color: @bg-selected; - text-color: @mclaren; + background-color: @background-selected; + text-color: @accent; border: 1px; border-radius: 5px; } @@ -61,15 +62,15 @@ element-text { element-icon { background-color: inherit; margin: 0 4px 0 0; - size: 25px; + size: 35px; } #entry { background-color: @background; - text-color: @mclaren; + text-color: @accent; placeholder: "Search"; - placeholder-color: @grey; - font: "Sora Regular 20"; + placeholder-color: @inactive; + font: "Comfortaa Regular 20"; } #prompt { @@ -77,6 +78,6 @@ element-icon { padding: 0 4px; margin: 0 5px 0 0; text-color: @foreground; - font: "Sora Regular 20"; + font: "Adwaita Sans Regular 20"; } diff --git a/general/configs/wlogout/layout b/config/wlogout/layout similarity index 100% rename from general/configs/wlogout/layout rename to config/wlogout/layout diff --git a/general/configs/wlogout/lock-hover.png b/config/wlogout/lock-hover.png similarity index 100% rename from general/configs/wlogout/lock-hover.png rename to config/wlogout/lock-hover.png diff --git a/general/configs/wlogout/lock.png b/config/wlogout/lock.png similarity index 100% rename from general/configs/wlogout/lock.png rename to config/wlogout/lock.png diff --git a/general/configs/wlogout/logout-hover.png b/config/wlogout/logout-hover.png similarity index 100% rename from general/configs/wlogout/logout-hover.png rename to config/wlogout/logout-hover.png diff --git a/general/configs/wlogout/logout.png b/config/wlogout/logout.png similarity index 100% rename from general/configs/wlogout/logout.png rename to config/wlogout/logout.png diff --git a/general/configs/wlogout/power-hover.png b/config/wlogout/power-hover.png similarity index 100% rename from general/configs/wlogout/power-hover.png rename to config/wlogout/power-hover.png diff --git a/general/configs/wlogout/power.png b/config/wlogout/power.png similarity index 100% rename from general/configs/wlogout/power.png rename to config/wlogout/power.png diff --git a/general/configs/wlogout/restart-hover.png b/config/wlogout/restart-hover.png similarity index 100% rename from general/configs/wlogout/restart-hover.png rename to config/wlogout/restart-hover.png diff --git a/general/configs/wlogout/restart.png b/config/wlogout/restart.png similarity index 100% rename from general/configs/wlogout/restart.png rename to config/wlogout/restart.png diff --git a/general/configs/wlogout/sleep-hover.png b/config/wlogout/sleep-hover.png similarity index 100% rename from general/configs/wlogout/sleep-hover.png rename to config/wlogout/sleep-hover.png diff --git a/general/configs/wlogout/sleep.png b/config/wlogout/sleep.png similarity index 100% rename from general/configs/wlogout/sleep.png rename to config/wlogout/sleep.png diff --git a/general/configs/wlogout/style.css b/config/wlogout/style.css old mode 100755 new mode 100644 similarity index 62% rename from general/configs/wlogout/style.css rename to config/wlogout/style.css index 48b3a11..fc6beda --- a/general/configs/wlogout/style.css +++ b/config/wlogout/style.css @@ -1,8 +1,13 @@ +/* + * ╭───────────────────────────────────────────────╮ + * │ WLOGOUT │ + * ╰───────────────────────────────────────────────╯ +*/ window { font-family: monospace; font-size: 14pt; color: #ffffff; /* text */ - background-color: rgba(0, 0, 0, 0.6); + background-color: rgba(20, 20, 20, 0.5); } button { @@ -10,18 +15,19 @@ button { background-position: center; background-size: 25%; border: none; - background-color: rgba(30, 30, 46, 0); + background-color: transparent; margin: 5px; transition: box-shadow 0.2s ease-in-out, background-color 0.2s ease-in-out; + border-radius: 40px; } button:hover { - background-color: rgba(204, 92, 0, 0.3); + background-color: rgba(151, 16, 58, 0.5); } button:focus { - background-color: #cc5c00; - color: #1e1e2e; + background-color: rgb(151, 16, 58); + color: rgb(230, 230, 230); } #lock { diff --git a/config/yazi/flavors/dracula.yazi/LICENSE b/config/yazi/flavors/dracula.yazi/LICENSE new file mode 100644 index 0000000..fb5b1d6 --- /dev/null +++ b/config/yazi/flavors/dracula.yazi/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2023 yazi-rs + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/config/yazi/flavors/dracula.yazi/LICENSE-tmtheme b/config/yazi/flavors/dracula.yazi/LICENSE-tmtheme new file mode 100644 index 0000000..f9105d5 --- /dev/null +++ b/config/yazi/flavors/dracula.yazi/LICENSE-tmtheme @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2013-present Dracula Theme + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/config/yazi/flavors/dracula.yazi/README.md b/config/yazi/flavors/dracula.yazi/README.md new file mode 100644 index 0000000..33719f5 --- /dev/null +++ b/config/yazi/flavors/dracula.yazi/README.md @@ -0,0 +1,36 @@ +
+ Yazi logo +
+ +

+ Dracula Flavor for Yazi +

+ +## 👀 Preview + + + +## 🎨 Installation + +```sh +ya pack -a yazi-rs/flavors:dracula +``` + +## ⚙️ Usage + +Set the content of your `theme.toml` to enable it as your _dark_ flavor: + +```toml +[flavor] +dark = "dracula" +``` + +Make sure your `theme.toml` doesn't contain anything other than `[flavor]`, unless you want to override certain styles of this flavor. + +See the [Yazi flavor documentation](https://yazi-rs.github.io/docs/flavors/overview) for more details. + +## 📜 License + +The flavor is MIT-licensed, and the included tmTheme is also MIT-licensed. + +Check the [LICENSE](LICENSE) and [LICENSE-tmtheme](LICENSE-tmtheme) file for more details. diff --git a/config/yazi/flavors/dracula.yazi/flavor.toml b/config/yazi/flavors/dracula.yazi/flavor.toml new file mode 100644 index 0000000..01ded4a --- /dev/null +++ b/config/yazi/flavors/dracula.yazi/flavor.toml @@ -0,0 +1,170 @@ +# vim:fileencoding=utf-8:foldmethod=marker + +# : Manager {{{ + +[manager] +cwd = { fg = "#8be9fd" } + +# Hovered +hovered = { reversed = true } +preview_hovered = { underline = true } + +# Find +find_keyword = { fg = "#f1fa8c", bold = true, italic = true, underline = true } +find_position = { fg = "#ff79c6", bg = "reset", bold = true, italic = true } + +# Marker +marker_copied = { fg = "#50fa7b", bg = "#50fa7b" } +marker_cut = { fg = "#ff5555", bg = "#ff5555" } +marker_marked = { fg = "#8be9fd", bg = "#8be9fd" } +marker_selected = { fg = "#f1fa8c", bg = "#f1fa8c" } + +# Tab +tab_active = { reversed = true } +tab_inactive = {} +tab_width = 1 + +# Count +count_copied = { fg = "#282a36", bg = "#50fa7b" } +count_cut = { fg = "#282a36", bg = "#ff5555" } +count_selected = { fg = "#282a36", bg = "#f1fa8c" } + +# Border +border_symbol = "│" +border_style = { fg = "#7282b5" } + +# : }}} + + +# : Mode {{{ + +[mode] + +normal_main = { fg = "#282a36", bg = "#bd93f9", bold = true } +normal_alt = { fg = "#bd93f9", bg = "#44475a" } + +# Select mode +select_main = { fg = "#282a36", bg = "#8be9fd", bold = true } +select_alt = { fg = "#8be9fd", bg = "#44475a" } + +# Unset mode +unset_main = { fg = "#282a36", bg = "#ffb86c", bold = true } +unset_alt = { fg = "#ffb86c", bg = "#44475a" } + +# : }}} + + +# : Status bar {{{ + +[status] +# Permissions +perm_sep = { fg = "#7282b5" } +perm_type = { fg = "#bd93f9" } +perm_read = { fg = "#f1fa8c" } +perm_write = { fg = "#ff5555" } +perm_exec = { fg = "#50fa7b" } + +# Progress +progress_label = { fg = "#ffffff", bold = true } +progress_normal = { fg = "#bd93f9", bg = "#63667d" } +progress_error = { fg = "#ff5555", bg = "#63667d" } + +# : }}} + + +# : Pick {{{ + +[pick] +border = { fg = "#bd93f9" } +active = { fg = "#ff79c6", bold = true } +inactive = {} + +# : }}} + + +# : Input {{{ + +[input] +border = { fg = "#bd93f9" } +title = {} +value = {} +selected = { reversed = true } + +# : }}} + + +# : Completion {{{ + +[cmp] +border = { fg = "#bd93f9" } + +# : }}} + + +# : Tasks {{{ + +[tasks] +border = { fg = "#bd93f9" } +title = {} +hovered = { fg = "#ff79c6", underline = true } + +# : }}} + + +# : Which {{{ + +[which] +mask = { bg = "#44475a" } +cand = { fg = "#8be9fd" } +rest = { fg = "#8998c9" } +desc = { fg = "#ff79c6" } +separator = "  " +separator_style = { fg = "#83869c" } + +# : }}} + + +# : Help {{{ + +[help] +on = { fg = "#8be9fd" } +run = { fg = "#ff79c6" } +hovered = { reversed = true, bold = true } +footer = { fg = "#44475a", bg = "#f8f8f2" } + +# : }}} + + +# : Notify {{{ + +[notify] +title_info = { fg = "#50fa7b" } +title_warn = { fg = "#f1fa8c" } +title_error = { fg = "#ff5555" } + +# : }}} + + +# : File-specific styles {{{ + +[filetype] + +rules = [ + # Images + { mime = "image/*", fg = "#8be9fd" }, + + # Media + { mime = "{audio,video}/*", fg = "#f1fa8c" }, + + # Archives + { mime = "application/{zip,rar,7z*,tar,gzip,xz,zstd,bzip*,lzma,compress,archive,cpio,arj,xar,ms-cab*}", fg = "#ff79c6" }, + + # Documents + { mime = "application/{pdf,doc,rtf}", fg = "#50fa7b" }, + + # Fallback + { name = "*", fg = "#f8f8f2" }, + { name = "*/", fg = "#bd93f9" } +] + +# : }}} diff --git a/config/yazi/flavors/dracula.yazi/preview.png b/config/yazi/flavors/dracula.yazi/preview.png new file mode 100644 index 0000000..7d8adf3 Binary files /dev/null and b/config/yazi/flavors/dracula.yazi/preview.png differ diff --git a/config/yazi/flavors/dracula.yazi/tmtheme.xml b/config/yazi/flavors/dracula.yazi/tmtheme.xml new file mode 100644 index 0000000..c3434ec --- /dev/null +++ b/config/yazi/flavors/dracula.yazi/tmtheme.xml @@ -0,0 +1,940 @@ + + + + + + + + name + Dracula + settings + + + settings + + background + #282a36 + caret + #f8f8f0 + block_caret + #999a9e + foreground + #f8f8f2 + invisibles + #3B3A32 + lineHighlight + #44475a + selection + #44475a + findHighlight + #effb7b + findHighlightForeground + #000000 + selectionBorder + #222218 + activeGuide + #9D550FB0 + bracketsForeground + #F8F8F2A5 + bracketsOptions + underline + bracketContentsForeground + #F8F8F2A5 + bracketContentsOptions + underline + tagsOptions + stippled_underline + + + + name + Comment + scope + comment + settings + + foreground + #6272a4 + fontStyle + + + + + name + String + scope + string + settings + + foreground + #f1fa8c + + + + name + Number + scope + constant.numeric + settings + + foreground + #bd93f9 + + + + name + Built-in constant + scope + constant.language + settings + + foreground + #bd93f9 + + + + name + User-defined constant + scope + constant.character, constant.other + settings + + foreground + #bd93f9 + + + + name + Variable + scope + variable + settings + + fontStyle + + + + + name + Ruby's @variable + scope + variable.other.readwrite.instance + settings + + fontStyle + + foreground + #ffb86c + + + + name + String interpolation + scope + constant.character.escaped, constant.character.escape, string source, string source.ruby + settings + + fontStyle + + foreground + #ff79c6 + + + + name + Ruby Regexp + scope + source.ruby string.regexp.classic.ruby,source.ruby string.regexp.mod-r.ruby + settings + + fontStyle + + foreground + #ff5555 + + + + name + Keyword + scope + keyword + settings + + foreground + #ff79c6 + + + + name + Storage + scope + storage + settings + + fontStyle + + foreground + #ff79c6 + + + + name + Storage type + scope + storage.type + settings + + fontStyle + italic + foreground + #8be9fd + + + + name + Storage Type Namespace + scope + storage.type.namespace + settings + + fontStyle + italic + foreground + #8be9fd + + + + name + Storage Type Class + scope + storage.type.class + settings + + fontStyle + italic + foreground + #ff79c6 + + + + name + Class name + scope + entity.name.class + settings + + fontStyle + underline + foreground + #8be9fd + + + + name + Meta Path + scope + meta.path + settings + + fontStyle + underline + foreground + #66d9ef + + + + name + Inherited class + scope + entity.other.inherited-class + settings + + fontStyle + italic underline + foreground + #8be9fd + + + + name + Function name + scope + entity.name.function + settings + + fontStyle + + foreground + #50fa7b + + + + name + Function argument + scope + variable.parameter + settings + + fontStyle + italic + foreground + #ffb86c + + + + name + Tag name + scope + entity.name.tag + settings + + fontStyle + + foreground + #ff79c6 + + + + name + Tag attribute + scope + entity.other.attribute-name + settings + + fontStyle + + foreground + #50fa7b + + + + name + Library function + scope + support.function + settings + + fontStyle + + foreground + #8be9fd + + + + name + Library constant + scope + support.constant + settings + + fontStyle + + foreground + #6be5fd + + + + name + Library class/type + scope + support.type, support.class + settings + + fontStyle + italic + foreground + #66d9ef + + + + name + Library variable + scope + support.other.variable + settings + + fontStyle + + + + + name + Support Other Namespace + scope + support.other.namespace + settings + + fontStyle + italic + foreground + #66d9ef + + + + name + Invalid + scope + invalid + settings + + background + #ff79c6 + fontStyle + + foreground + #F8F8F0 + + + + name + Invalid deprecated + scope + invalid.deprecated + settings + + background + #bd93f9 + foreground + #F8F8F0 + + + + name + JSON String + scope + meta.structure.dictionary.json string.quoted.double.json + settings + + foreground + #CFCFC2 + + + + name + diff.header + scope + meta.diff, meta.diff.header + settings + + foreground + #6272a4 + + + + name + diff.deleted + scope + markup.deleted + settings + + foreground + #ff79c6 + + + + name + diff.inserted + scope + markup.inserted + settings + + foreground + #50fa7b + + + + name + diff.changed + scope + markup.changed + settings + + foreground + #E6DB74 + + + + scope + constant.numeric.line-number.find-in-files - match + settings + + foreground + #bd93f9 + + + + scope + entity.name.filename + settings + + foreground + #E6DB74 + + + + scope + message.error + settings + + foreground + #F83333 + + + + name + JSON Punctuation + scope + punctuation.definition.string.begin.json - meta.structure.dictionary.value.json, punctuation.definition.string.end.json - meta.structure.dictionary.value.json + settings + + foreground + #EEEEEE + + + + name + JSON Structure + scope + meta.structure.dictionary.json string.quoted.double.json + settings + + foreground + #8be9fd + + + + name + JSON String + scope + meta.structure.dictionary.value.json string.quoted.double.json + settings + + foreground + #f1fa8c + + + + name + JSON: 6 deep + scope + meta meta meta meta meta meta meta.structure.dictionary.value string + settings + + foreground + #50fa7b + + + + name + JSON: 5 deep + scope + meta meta meta meta meta meta.structure.dictionary.value string + settings + + foreground + #ffb86c + + + + name + JSON: 4 deep + scope + meta meta meta meta meta.structure.dictionary.value string + settings + + foreground + #ff79c6 + + + + name + JSON: 3 deep + scope + meta meta meta meta.structure.dictionary.value string + settings + + foreground + #bd93f9 + + + + name + JSON: 2 deep + scope + meta meta meta.structure.dictionary.value string + settings + + foreground + #50fa7b + + + + name + JSON: 1 deep + scope + meta meta.structure.dictionary.value string + settings + + foreground + #ffb86c + + + + + + name + Markup: strike + scope + markup.strike + settings + + fontStyle + italic + foreground + #FFB86C + + + + name + Markup: bold + scope + markup.bold + settings + + fontStyle + bold + foreground + #FFB86C + + + + name + Markup: italic + scope + markup.italic + settings + + fontStyle + italic + foreground + #FFB86C + + + + name + Markdown: heading + scope + markup.heading + settings + + foreground + #8BE9FD + + + + name + Markdown: List Items Punctuation + scope + punctuation.definition.list_item.markdown + settings + + foreground + #FF79C6 + + + + name + Markdown: Blockquote + scope + markup.quote + settings + + fontStyle + italic + foreground + #6272A4 + + + + name + Markdown: Blockquote Punctuation + scope + punctuation.definition.blockquote.markdown + settings + + fontStyle + italic + background + #6272A4 + foreground + #6272A4 + + + + name + Markdown: Separator + scope + meta.separator + settings + + foreground + #6272A4 + + + + name + Markup: raw inline + scope + text.html.markdown markup.raw.inline + settings + + foreground + #50FA7B + + + + name + Markup: underline + scope + markup.underline + settings + + fontStyle + underline + foreground + #BD93F9 + + + + name + Markup: Raw block + scope + markup.raw.block + settings + + foreground + #CFCFC2 + + + + name + Markdown: Raw Block fenced source + scope + markup.raw.block.fenced.markdown source + settings + + foreground + #F8F8F2 + + + + name + Markdown: Fenced Bode Block + scope + punctuation.definition.fenced.markdown, variable.language.fenced.markdown + settings + + fontStyle + italic + foreground + #6272A4 + + + + name + Markdown: Fenced Language + scope + variable.language.fenced.markdown + settings + + fontStyle + italic + foreground + #6272A4 + + + + name + Punctuation Accessor + scope + punctuation.accessor + settings + + foreground + #FF79C6 + + + + name + Meta Function Return Type + scope + meta.function.return-type + settings + + foreground + #FF79C6 + + + + name + Punctuation Section Block Begin + scope + punctuation.section.block.begin + settings + + foreground + #ffffff + + + + name + Punctuation Section Block End + scope + punctuation.section.block.end + settings + + foreground + #ffffff + + + + name + Punctuation Section Embedded Begin + scope + punctuation.section.embedded.begin + settings + + foreground + #ff79c6 + + + + name + Punctuation Section Embedded End + scope + punctuation.section.embedded.end + settings + + foreground + #ff79c6 + + + + name + Punctuation Separator Namespace + scope + punctuation.separator.namespace + settings + + foreground + #ff79c6 + + + + name + Variable Function + scope + variable.function + settings + + foreground + #50fa7b + + + + name + Variable Other + scope + variable.other + settings + + foreground + #ffffff + + + + name + Variable Language + scope + variable.language + settings + + foreground + #bd93f9 + + + + name + Entity Name Module Ruby + scope + entity.name.module.ruby + settings + + foreground + #8be9fd + + + + name + Entity Name Constant Ruby + scope + entity.name.constant.ruby + settings + + foreground + #bd93f9 + + + + name + Support Function Builtin Ruby + scope + support.function.builtin.ruby + settings + + foreground + #ffffff + + + + name + Storage Type Namespace CS + scope + storage.type.namespace.cs + settings + + foreground + #ff79c6 + + + + name + Entity Name Namespace CS + scope + entity.name.namespace.cs + settings + + foreground + #8be9fd + + + + uuid + 83091B89-765E-4F0D-9275-0EC6CB084126 + colorSpaceName + sRGB + semanticClass + theme.dracula + author + Zeno Rocha + + diff --git a/general/configs/yazi/flavors/tokyo-night.yazi/LICENSE b/config/yazi/flavors/tokyo-night.yazi/LICENSE similarity index 100% rename from general/configs/yazi/flavors/tokyo-night.yazi/LICENSE rename to config/yazi/flavors/tokyo-night.yazi/LICENSE diff --git a/general/configs/yazi/flavors/tokyo-night.yazi/LICENSE-tmtheme b/config/yazi/flavors/tokyo-night.yazi/LICENSE-tmtheme similarity index 100% rename from general/configs/yazi/flavors/tokyo-night.yazi/LICENSE-tmtheme rename to config/yazi/flavors/tokyo-night.yazi/LICENSE-tmtheme diff --git a/general/configs/yazi/flavors/tokyo-night.yazi/README.md b/config/yazi/flavors/tokyo-night.yazi/README.md similarity index 100% rename from general/configs/yazi/flavors/tokyo-night.yazi/README.md rename to config/yazi/flavors/tokyo-night.yazi/README.md diff --git a/general/configs/yazi/flavors/tokyo-night.yazi/flavor.toml b/config/yazi/flavors/tokyo-night.yazi/flavor.toml similarity index 100% rename from general/configs/yazi/flavors/tokyo-night.yazi/flavor.toml rename to config/yazi/flavors/tokyo-night.yazi/flavor.toml diff --git a/general/configs/yazi/flavors/tokyo-night.yazi/preview.png b/config/yazi/flavors/tokyo-night.yazi/preview.png similarity index 100% rename from general/configs/yazi/flavors/tokyo-night.yazi/preview.png rename to config/yazi/flavors/tokyo-night.yazi/preview.png diff --git a/general/configs/yazi/flavors/tokyo-night.yazi/tmtheme.xml b/config/yazi/flavors/tokyo-night.yazi/tmtheme.xml similarity index 100% rename from general/configs/yazi/flavors/tokyo-night.yazi/tmtheme.xml rename to config/yazi/flavors/tokyo-night.yazi/tmtheme.xml diff --git a/config/yazi/flavors/vscode-dark-modern.yazi/LICENSE b/config/yazi/flavors/vscode-dark-modern.yazi/LICENSE new file mode 100644 index 0000000..5436de3 --- /dev/null +++ b/config/yazi/flavors/vscode-dark-modern.yazi/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 Alexander Bays + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/config/yazi/flavors/vscode-dark-modern.yazi/LICENSE-tmtheme b/config/yazi/flavors/vscode-dark-modern.yazi/LICENSE-tmtheme new file mode 100644 index 0000000..5436de3 --- /dev/null +++ b/config/yazi/flavors/vscode-dark-modern.yazi/LICENSE-tmtheme @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 Alexander Bays + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/config/yazi/flavors/vscode-dark-modern.yazi/README.md b/config/yazi/flavors/vscode-dark-modern.yazi/README.md new file mode 100644 index 0000000..ce9c25f --- /dev/null +++ b/config/yazi/flavors/vscode-dark-modern.yazi/README.md @@ -0,0 +1,13 @@ +# vscode-dark-modern + +[themes/](../) · [vscode-dark-plus](../vscode-dark-plus.yazi/) · [vscode-light-modern](../vscode-light-modern.yazi/) · [vscode-light-plus](../vscode-light-plus.yazi/) + +![vscode-dark-modern](./img/1.png) + +![vscode-dark-modern](./img/2.png) + +![vscode-dark-modern](./img/3.png) + +![vscode-dark-modern](./img/4.png) + +![vscode-dark-modern](./img/5.png) diff --git a/config/yazi/flavors/vscode-dark-modern.yazi/flavor.toml b/config/yazi/flavors/vscode-dark-modern.yazi/flavor.toml new file mode 100644 index 0000000..648f9bb --- /dev/null +++ b/config/yazi/flavors/vscode-dark-modern.yazi/flavor.toml @@ -0,0 +1,186 @@ +# A TOML linter such as https://taplo.tamasfe.dev/ can use this schema to validate your config. +# If you encounter any issues, please make an issue at https://github.com/yazi-rs/schemas. +"$schema" = "https://yazi-rs.github.io/schemas/theme.json" + +# vscode-dark-modern +# https://github.com/956MB/vscode.yazi/blob/main/themes/vscode-dark-modern/ +# +# A theme inspired by Visual Studio Code's Dark Modern theme. + +[colors] +background = "#1F1F1F" +foreground = "#D4D4D4" +selection = "#264F78" +cursor = "#AEAFAD" +black = "#000000" +red = "#F44747" +green = "#6A9955" +yellow = "#D7BA7D" +blue = "#569CD6" +magenta = "#C586C0" +cyan = "#4EC9B0" +white = "#D4D4D4" +bright_black = "#808080" +bright_red = "#F44747" +bright_green = "#6A9955" +bright_yellow = "#DCDCAA" +bright_blue = "#569CD6" +bright_magenta = "#C586C0" +bright_cyan = "#4EC9B0" +bright_white = "#FFFFFF" + +[manager] +cwd = { fg = "cyan" } +# Hovered +hovered = { fg = "#D4D4D4", bg = "#264F78" } +preview_hovered = { underline = true } +# Find +find_keyword = { fg = "#DCDCAA", bold = true, italic = true, underline = true } +find_position = { fg = "#C586C0", bg = "#1F1F1F", bold = true, italic = true } +# Marker +marker_copied = { fg = "#73C991", bg = "#73C991" } +marker_cut = { fg = "#F44747", bg = "#F44747" } +marker_marked = { fg = "#4EC9B0", bg = "#4EC9B0" } +marker_selected = { fg = "#D7BA7D", bg = "#D7BA7D" } +# Tab +tab_active = { fg = "#D4D4D4", bg = "#1F1F1F" } +tab_inactive = { fg = "#D4D4D4", bg = "#2D2D2D" } +tab_width = 1 +# Count +count_copied = { fg = "#1F1F1F", bg = "#73C991" } +count_cut = { fg = "#1F1F1F", bg = "#F44747" } +count_selected = { fg = "#1F1F1F", bg = "#D7BA7D" } +# Border +border_symbol = "│" +border_style = { fg = "#444444" } +# Highlighting +syntect_theme = "./tmtheme.xml" +# Cursor +cursor_symbol = "█" +cursor = { fg = "#1F1F1F", bg = "#AEAFAD" } +# Executable +exe_symbol = "" +exe = { fg = "#4EC9B0", bg = "#1F1F1F" } +# Regular +file_symbol = "" +file = { } +# Directory +folder_symbol = "" +folder = { fg = "#569CD6", bg = "#1F1F1F" } +# Hidden +hidden_symbol = "" +hidden = { fg = "#808080" } +# Link +link_symbol = "" +link = { fg = "#4EC9B0", bg = "#1F1F1F" } +# Link (broken) +broken_symbol = "" +broken = { fg = "#F44747", bg = "#3A1212" } +# Selected +selected = { fg = "#FFFFFF", bg = "#264F78" } + +[status] +separator_open = "" +separator_close = "" +separator_style = { fg = "#444444", bg = "#444444" } +# Mode +mode_normal = { fg = "#1F1F1F", bg = "#569CD6", bold = true } +mode_select = { fg = "#1F1F1F", bg = "#FFAF00", bold = true } +mode_unset = { fg = "#1F1F1F", bg = "#F44747", bold = true } +# Progress +progress_label = { bold = true } +progress_normal = { fg = "#569CD6", bg = "#1F1F1F" } +progress_error = { fg = "#F44747", bg = "#1F1F1F" } +# Permissions +permissions_t = { fg = "#6A9955" } +permissions_r = { fg = "#D7BA7D" } +permissions_w = { fg = "#F44747" } +permissions_x = { fg = "#4EC9B0" } +permissions_s = { fg = "#808080" } + +[select] +border = { fg = "#569CD6" } +active = { fg = "#C586C0", bold = true } +inactive = {} + +[input] +border = { fg = "#569CD6" } +title = {} +value = {} +selected = { reversed = true } + +[completion] +border = { fg = "#569CD6" } +active = { bg = "#264F78" } +inactive = {} +# Icons +icon_file = "" +icon_folder = "" +icon_command = "" + +[tasks] +border = { fg = "#569CD6" } +title = {} +hovered = { underline = true } + +[which] +mask = { bg = "#1F1F1F" } +cand = { fg = "#4EC9B0" } +rest = { fg = "#808080" } +desc = { fg = "#C586C0" } +separator = " " +separator_style = { fg = "#808080" } + +[help] +on = { fg = "#4EC9B0" } +run = { fg = "#C586C0" } +desc = { fg = "#D4D4D4" } +hovered = { bg = "#264F78", bold = true } +footer = { fg = "#D4D4D4", bg = "#252526" } + +[filetype] +rules = [ + # Images + { mime = "image/*", fg = "#D7BA7D" }, + # Videos + { mime = "video/*", fg = "#C586C0" }, + # Audio + { mime = "audio/*", fg = "#C586C0" }, + # Archives + { mime = "application/zip", fg = "#F44747" }, + { mime = "application/gzip", fg = "#F44747" }, + { mime = "application/x-tar", fg = "#F44747" }, + { mime = "application/x-bzip", fg = "#F44747" }, + { mime = "application/x-bzip2", fg = "#F44747" }, + { mime = "application/x-7z-compressed", fg = "#F44747" }, + { mime = "application/x-rar", fg = "#F44747" }, + # Documents + { mime = "application/pdf", fg = "#4EC9B0" }, + { mime = "application/msword", fg = "#4EC9B0" }, + { mime = "application/vnd.openxmlformats-officedocument.*", fg = "#4EC9B0" }, + # Fallback + { name = "*", fg = "#D4D4D4" }, + { name = "*/", fg = "#569CD6" }, + # Executable + { name = "*", category = "executable", fg = "#4EC9B0", bg = "#1F1F1F" }, + # Directories + { name = "*/", fg = "#569CD6", bg = "#1F1F1F" }, + # Hidden files + { name = ".*", fg = "#808080" }, + # Symlinks + { name = "*", category = "link", fg = "#4EC9B0", bg = "#1F1F1F" }, + # Broken symlinks + { name = "*", category = "broken", fg = "#F44747", bg = "#3A1212" }, +] + +[icon] +rules = [ + { name = "Desktop", text = "" }, + { name = "Documents", text = "" }, + { name = "Downloads", text = "" }, + { name = "Pictures", text = "" }, + { name = "Music", text = "" }, + { name = "Videos", text = "" }, + { name = ".git", text = "" }, + { name = ".config", text = "" }, +] diff --git a/config/yazi/flavors/vscode-dark-modern.yazi/img/1.png b/config/yazi/flavors/vscode-dark-modern.yazi/img/1.png new file mode 100644 index 0000000..045985b Binary files /dev/null and b/config/yazi/flavors/vscode-dark-modern.yazi/img/1.png differ diff --git a/config/yazi/flavors/vscode-dark-modern.yazi/img/2.png b/config/yazi/flavors/vscode-dark-modern.yazi/img/2.png new file mode 100644 index 0000000..2cc6a33 Binary files /dev/null and b/config/yazi/flavors/vscode-dark-modern.yazi/img/2.png differ diff --git a/config/yazi/flavors/vscode-dark-modern.yazi/img/3.png b/config/yazi/flavors/vscode-dark-modern.yazi/img/3.png new file mode 100644 index 0000000..befbed9 Binary files /dev/null and b/config/yazi/flavors/vscode-dark-modern.yazi/img/3.png differ diff --git a/config/yazi/flavors/vscode-dark-modern.yazi/img/4.png b/config/yazi/flavors/vscode-dark-modern.yazi/img/4.png new file mode 100644 index 0000000..a645c27 Binary files /dev/null and b/config/yazi/flavors/vscode-dark-modern.yazi/img/4.png differ diff --git a/config/yazi/flavors/vscode-dark-modern.yazi/img/5.png b/config/yazi/flavors/vscode-dark-modern.yazi/img/5.png new file mode 100644 index 0000000..490dcec Binary files /dev/null and b/config/yazi/flavors/vscode-dark-modern.yazi/img/5.png differ diff --git a/config/yazi/flavors/vscode-dark-modern.yazi/tmtheme.xml b/config/yazi/flavors/vscode-dark-modern.yazi/tmtheme.xml new file mode 100644 index 0000000..de79514 --- /dev/null +++ b/config/yazi/flavors/vscode-dark-modern.yazi/tmtheme.xml @@ -0,0 +1,250 @@ + + + + + name + VSCode Dark Modern + settings + + + settings + + background + #1F1F1F + foreground + #D4D4D4 + caret + #AEAFAD + invisibles + #6E7681 + lineHighlight + #222222 + selection + #264F78 + + + + name + Comment + scope + comment + settings + + foreground + #6A9955 + + + + name + String + scope + string + settings + + foreground + #CE9178 + + + + name + Number + scope + constant.numeric + settings + + foreground + #B5CEA8 + + + + name + Built-in constant + scope + constant.language + settings + + foreground + #569CD6 + + + + name + User-defined constant + scope + constant.character, constant.other + settings + + foreground + #4FC1FF + + + + name + Variable + scope + variable + settings + + foreground + #9CDCFE + + + + name + Keyword + scope + keyword + settings + + foreground + #C586C0 + + + + name + Storage + scope + storage + settings + + foreground + #569CD6 + + + + name + Storage type + scope + storage.type + settings + + foreground + #569CD6 + + + + name + Class name + scope + entity.name.class + settings + + foreground + #4EC9B0 + + + + name + Inherited class + scope + entity.other.inherited-class + settings + + foreground + #4EC9B0 + + + + name + Function name + scope + entity.name.function + settings + + foreground + #DCDCAA + + + + name + Function argument + scope + variable.parameter + settings + + foreground + #9CDCFE + + + + name + Tag name + scope + entity.name.tag + settings + + foreground + #569CD6 + + + + name + Tag attribute + scope + entity.other.attribute-name + settings + + foreground + #9CDCFE + + + + name + Library function + scope + support.function + settings + + foreground + #DCDCAA + + + + name + Library constant + scope + support.constant + settings + + foreground + #4FC1FF + + + + name + Library class/type + scope + support.type, support.class + settings + + foreground + #4EC9B0 + + + + name + Invalid + scope + invalid + settings + + foreground + #F44747 + + + + name + Invalid deprecated + scope + invalid.deprecated + settings + + foreground + #F44747 + + + + uuid + 231D4441-F280-4D49-A647-E1FD7E84D1D8 + + diff --git a/config/yazi/flavors/vscode-light-modern.yazi/LICENSE b/config/yazi/flavors/vscode-light-modern.yazi/LICENSE new file mode 100644 index 0000000..5436de3 --- /dev/null +++ b/config/yazi/flavors/vscode-light-modern.yazi/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 Alexander Bays + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/config/yazi/flavors/vscode-light-modern.yazi/LICENSE-tmtheme b/config/yazi/flavors/vscode-light-modern.yazi/LICENSE-tmtheme new file mode 100644 index 0000000..5436de3 --- /dev/null +++ b/config/yazi/flavors/vscode-light-modern.yazi/LICENSE-tmtheme @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 Alexander Bays + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/config/yazi/flavors/vscode-light-modern.yazi/README.md b/config/yazi/flavors/vscode-light-modern.yazi/README.md new file mode 100644 index 0000000..99076ea --- /dev/null +++ b/config/yazi/flavors/vscode-light-modern.yazi/README.md @@ -0,0 +1,13 @@ +# vscode-light-modern + +[themes/](../) · [vscode-dark-modern](../vscode-dark-modern.yazi/) · [vscode-dark-plus](../vscode-dark-plus.yazi/) · [vscode-light-plus](../vscode-light-plus.yazi/) + +![vscode-light-modern](./img/1.png) + +![vscode-light-modern](./img/2.png) + +![vscode-light-modern](./img/3.png) + +![vscode-light-modern](./img/4.png) + +![vscode-light-modern](./img/5.png) diff --git a/config/yazi/flavors/vscode-light-modern.yazi/flavor.toml b/config/yazi/flavors/vscode-light-modern.yazi/flavor.toml new file mode 100644 index 0000000..21c8aa0 --- /dev/null +++ b/config/yazi/flavors/vscode-light-modern.yazi/flavor.toml @@ -0,0 +1,186 @@ +# A TOML linter such as https://taplo.tamasfe.dev/ can use this schema to validate your config. +# If you encounter any issues, please make an issue at https://github.com/yazi-rs/schemas. +"$schema" = "https://yazi-rs.github.io/schemas/theme.json" + +# vscode-light-modern +# https://github.com/956MB/vscode.yazi/blob/main/themes/vscode-light-modern/ +# +# A theme inspired by Visual Studio Code's Light Modern theme. + +[colors] +background = "#FFFFFF" +foreground = "#3B3B3B" +selection = "#ADD6FF" +cursor = "#005FB8" +black = "#000000" +red = "#F85149" +green = "#2EA043" +yellow = "#D7BA7D" +blue = "#005FB8" +magenta = "#AF00DB" +cyan = "#0598BC" +white = "#FFFFFF" +bright_black = "#6E7681" +bright_red = "#F85149" +bright_green = "#2EA043" +bright_yellow = "#D7BA7D" +bright_blue = "#005FB8" +bright_magenta = "#AF00DB" +bright_cyan = "#0598BC" +bright_white = "#FFFFFF" + +[manager] +cwd = { fg = "cyan" } +# Hovered +hovered = { fg = "#000000", bg = "#ADD6FF" } +preview_hovered = { underline = true } +# Find +find_keyword = { fg = "#795E26", bold = true, italic = true, underline = true } +find_position = { fg = "#AF00DB", bg = "#FFFFFF", bold = true, italic = true } +# Marker +marker_copied = { fg = "#2EA043", bg = "#2EA043" } +marker_cut = { fg = "#F85149", bg = "#F85149" } +marker_marked = { fg = "#0598BC", bg = "#0598BC" } +marker_selected = { fg = "#D7BA7D", bg = "#D7BA7D" } +# Tab +tab_active = { fg = "#3B3B3B", bg = "#FFFFFF" } +tab_inactive = { fg = "#3B3B3B", bg = "#F8F8F8" } +tab_width = 1 +# Count +count_copied = { fg = "#FFFFFF", bg = "#2EA043" } +count_cut = { fg = "#FFFFFF", bg = "#F85149" } +count_selected = { fg = "#FFFFFF", bg = "#D7BA7D" } +# Border +border_symbol = "│" +border_style = { fg = "#E5E5E5" } +# Highlighting +syntect_theme = "./tmtheme.xml" +# Cursor +cursor_symbol = "█" +cursor = { fg = "#FFFFFF", bg = "#005FB8" } +# Executable +exe_symbol = "" +exe = { fg = "#2EA043", bg = "#FFFFFF" } +# Regular +file_symbol = "" +file = { } +# Directory +folder_symbol = "" +folder = { fg = "#005FB8", bg = "#FFFFFF" } +# Hidden +hidden_symbol = "" +hidden = { fg = "#6E7681" } +# Link +link_symbol = "" +link = { fg = "#0598BC", bg = "#FFFFFF" } +# Link (broken) +broken_symbol = "" +broken = { fg = "#F85149", bg = "#FFF0F0" } +# Selected +selected = { fg = "#000000", bg = "#ADD6FF" } + +[status] +separator_open = "" +separator_close = "" +separator_style = { fg = "#E5E5E5", bg = "#E5E5E5" } +# Mode +mode_normal = { fg = "#FFFFFF", bg = "#005FB8", bold = true } +mode_select = { fg = "#FFFFFF", bg = "#FFAF00", bold = true } +mode_unset = { fg = "#FFFFFF", bg = "#F85149", bold = true } +# Progress +progress_label = { bold = true } +progress_normal = { fg = "#005FB8", bg = "#FFFFFF" } +progress_error = { fg = "#F85149", bg = "#FFFFFF" } +# Permissions +permissions_t = { fg = "#2EA043" } +permissions_r = { fg = "#D7BA7D" } +permissions_w = { fg = "#F85149" } +permissions_x = { fg = "#0598BC" } +permissions_s = { fg = "#6E7681" } + +[select] +border = { fg = "#005FB8" } +active = { fg = "#AF00DB", bold = true } +inactive = {} + +[input] +border = { fg = "#005FB8" } +title = {} +value = {} +selected = { reversed = true } + +[completion] +border = { fg = "#005FB8" } +active = { bg = "#ADD6FF" } +inactive = {} +# Icons +icon_file = "" +icon_folder = "" +icon_command = "" + +[tasks] +border = { fg = "#005FB8" } +title = {} +hovered = { underline = true } + +[which] +mask = { bg = "#FFFFFF" } +cand = { fg = "#0598BC" } +rest = { fg = "#6E7681" } +desc = { fg = "#AF00DB" } +separator = " " +separator_style = { fg = "#6E7681" } + +[help] +on = { fg = "#0598BC" } +run = { fg = "#AF00DB" } +desc = { fg = "#3B3B3B" } +hovered = { bg = "#ADD6FF", bold = true } +footer = { fg = "#3B3B3B", bg = "#F8F8F8" } + +[filetype] +rules = [ + # Images + { mime = "image/*", fg = "#D7BA7D" }, + # Videos + { mime = "video/*", fg = "#AF00DB" }, + # Audio + { mime = "audio/*", fg = "#AF00DB" }, + # Archives + { mime = "application/zip", fg = "#F85149" }, + { mime = "application/gzip", fg = "#F85149" }, + { mime = "application/x-tar", fg = "#F85149" }, + { mime = "application/x-bzip", fg = "#F85149" }, + { mime = "application/x-bzip2", fg = "#F85149" }, + { mime = "application/x-7z-compressed", fg = "#F85149" }, + { mime = "application/x-rar", fg = "#F85149" }, + # Documents + { mime = "application/pdf", fg = "#0598BC" }, + { mime = "application/msword", fg = "#0598BC" }, + { mime = "application/vnd.openxmlformats-officedocument.*", fg = "#0598BC" }, + # Fallback + { name = "*", fg = "#3B3B3B" }, + { name = "*/", fg = "#005FB8" }, + # Executable + { name = "*", category = "executable", fg = "#2EA043", bg = "#FFFFFF" }, + # Directories + { name = "*/", fg = "#005FB8", bg = "#FFFFFF" }, + # Hidden files + { name = ".*", fg = "#6E7681" }, + # Symlinks + { name = "*", category = "link", fg = "#0598BC", bg = "#FFFFFF" }, + # Broken symlinks + { name = "*", category = "broken", fg = "#F85149", bg = "#FFF0F0" }, +] + +[icon] +rules = [ + { name = "Desktop", text = "" }, + { name = "Documents", text = "" }, + { name = "Downloads", text = "" }, + { name = "Pictures", text = "" }, + { name = "Music", text = "" }, + { name = "Videos", text = "" }, + { name = ".git", text = "" }, + { name = ".config", text = "" }, +] diff --git a/config/yazi/flavors/vscode-light-modern.yazi/img/1.png b/config/yazi/flavors/vscode-light-modern.yazi/img/1.png new file mode 100644 index 0000000..6343c68 Binary files /dev/null and b/config/yazi/flavors/vscode-light-modern.yazi/img/1.png differ diff --git a/config/yazi/flavors/vscode-light-modern.yazi/img/2.png b/config/yazi/flavors/vscode-light-modern.yazi/img/2.png new file mode 100644 index 0000000..13b9122 Binary files /dev/null and b/config/yazi/flavors/vscode-light-modern.yazi/img/2.png differ diff --git a/config/yazi/flavors/vscode-light-modern.yazi/img/3.png b/config/yazi/flavors/vscode-light-modern.yazi/img/3.png new file mode 100644 index 0000000..9e726b9 Binary files /dev/null and b/config/yazi/flavors/vscode-light-modern.yazi/img/3.png differ diff --git a/config/yazi/flavors/vscode-light-modern.yazi/img/4.png b/config/yazi/flavors/vscode-light-modern.yazi/img/4.png new file mode 100644 index 0000000..5124fd4 Binary files /dev/null and b/config/yazi/flavors/vscode-light-modern.yazi/img/4.png differ diff --git a/config/yazi/flavors/vscode-light-modern.yazi/img/5.png b/config/yazi/flavors/vscode-light-modern.yazi/img/5.png new file mode 100644 index 0000000..6dc5d51 Binary files /dev/null and b/config/yazi/flavors/vscode-light-modern.yazi/img/5.png differ diff --git a/config/yazi/flavors/vscode-light-modern.yazi/tmtheme.xml b/config/yazi/flavors/vscode-light-modern.yazi/tmtheme.xml new file mode 100644 index 0000000..5aa76f8 --- /dev/null +++ b/config/yazi/flavors/vscode-light-modern.yazi/tmtheme.xml @@ -0,0 +1,250 @@ + + + + + name + VSCode Light Modern + settings + + + settings + + background + #FFFFFF + foreground + #000000 + caret + #000000 + invisibles + #D3D3D3 + lineHighlight + #E5EBF1 + selection + #ADD6FF + + + + name + Comment + scope + comment + settings + + foreground + #008000 + + + + name + String + scope + string + settings + + foreground + #A31515 + + + + name + Number + scope + constant.numeric + settings + + foreground + #098658 + + + + name + Built-in constant + scope + constant.language + settings + + foreground + #0000FF + + + + name + User-defined constant + scope + constant.character, constant.other + settings + + foreground + #0000FF + + + + name + Variable + scope + variable + settings + + foreground + #795E26 + + + + name + Keyword + scope + keyword + settings + + foreground + #AF00DB + + + + name + Storage + scope + storage + settings + + foreground + #0000FF + + + + name + Storage type + scope + storage.type + settings + + foreground + #0000FF + + + + name + Class name + scope + entity.name.class + settings + + foreground + #267F99 + + + + name + Inherited class + scope + entity.other.inherited-class + settings + + foreground + #267F99 + + + + name + Function name + scope + entity.name.function + settings + + foreground + #795E26 + + + + name + Function argument + scope + variable.parameter + settings + + foreground + #001080 + + + + name + Tag name + scope + entity.name.tag + settings + + foreground + #800000 + + + + name + Tag attribute + scope + entity.other.attribute-name + settings + + foreground + #E50000 + + + + name + Library function + scope + support.function + settings + + foreground + #795E26 + + + + name + Library constant + scope + support.constant + settings + + foreground + #0000FF + + + + name + Library class/type + scope + support.type, support.class + settings + + foreground + #267F99 + + + + name + Invalid + scope + invalid + settings + + foreground + #CD3131 + + + + name + Invalid deprecated + scope + invalid.deprecated + settings + + foreground + #CD3131 + + + + uuid + 231D4441-F280-4D49-A647-E1FD7E84D1D8 + + diff --git a/general/configs/yazi/keymap.toml b/config/yazi/keymap.toml similarity index 100% rename from general/configs/yazi/keymap.toml rename to config/yazi/keymap.toml diff --git a/general/configs/yazi/package.toml b/config/yazi/package.toml similarity index 100% rename from general/configs/yazi/package.toml rename to config/yazi/package.toml diff --git a/general/configs/yazi/plugins/ouch.yazi/LICENSE b/config/yazi/plugins/ouch.yazi/LICENSE similarity index 100% rename from general/configs/yazi/plugins/ouch.yazi/LICENSE rename to config/yazi/plugins/ouch.yazi/LICENSE diff --git a/general/configs/yazi/plugins/ouch.yazi/README.md b/config/yazi/plugins/ouch.yazi/README.md similarity index 100% rename from general/configs/yazi/plugins/ouch.yazi/README.md rename to config/yazi/plugins/ouch.yazi/README.md diff --git a/general/configs/yazi/plugins/ouch.yazi/main.lua b/config/yazi/plugins/ouch.yazi/main.lua similarity index 100% rename from general/configs/yazi/plugins/ouch.yazi/main.lua rename to config/yazi/plugins/ouch.yazi/main.lua diff --git a/general/configs/yazi/plugins/restore.yazi/LICENSE b/config/yazi/plugins/restore.yazi/LICENSE similarity index 100% rename from general/configs/yazi/plugins/restore.yazi/LICENSE rename to config/yazi/plugins/restore.yazi/LICENSE diff --git a/general/configs/yazi/plugins/restore.yazi/README.md b/config/yazi/plugins/restore.yazi/README.md similarity index 100% rename from general/configs/yazi/plugins/restore.yazi/README.md rename to config/yazi/plugins/restore.yazi/README.md diff --git a/general/configs/yazi/plugins/restore.yazi/main.lua b/config/yazi/plugins/restore.yazi/main.lua similarity index 100% rename from general/configs/yazi/plugins/restore.yazi/main.lua rename to config/yazi/plugins/restore.yazi/main.lua diff --git a/config/yazi/theme.toml b/config/yazi/theme.toml new file mode 100644 index 0000000..adcc78f --- /dev/null +++ b/config/yazi/theme.toml @@ -0,0 +1,2 @@ +[flavor] +use = "vscode-dark-modern" diff --git a/general/configs/yazi/yazi.toml b/config/yazi/yazi.toml similarity index 100% rename from general/configs/yazi/yazi.toml rename to config/yazi/yazi.toml diff --git a/config/zathura/zathurarc b/config/zathura/zathurarc new file mode 100644 index 0000000..62d8f2d --- /dev/null +++ b/config/zathura/zathurarc @@ -0,0 +1,3 @@ +set selection-clipboard clipboard +map D set "first-page-column 1:2" +map . nohlsearch diff --git a/fix-da-snippets.py b/fix-da-snippets.py deleted file mode 100644 index 5633425..0000000 --- a/fix-da-snippets.py +++ /dev/null @@ -1,73 +0,0 @@ -import os -import re -import json -import sys - -def clean_json(content): - # Step 1: Remove comments (lines starting with //) - content = re.sub(r'^//.*\n', '', content, flags=re.MULTILINE) - - # Step 2: Replace single quotes with double quotes for JSON compatibility - content = content.replace("'", '"') - - # Step 3: Remove trailing commas in both objects and arrays - # Remove trailing commas in arrays - content = re.sub(r',\s*([\]}])', r'\1', content) - # Remove trailing commas in objects - content = re.sub(r',\s*(\n|\})', r'\1', content) - - # Step 4: Escape backslashes in LaTeX snippets - content = content.replace("\\", "\\\\") # Double backslashes for JSON - - # Step 5: Parse and re-encode to ensure valid JSON (removes trailing commas) - try: - data = json.loads(content) # Parse the content into a Python dictionary - cleaned_json = json.dumps(data, indent=4) # Re-encode into JSON, pretty-printed - except json.JSONDecodeError as e: - print(f"Error parsing JSON: {e}") - return None - - return cleaned_json - -def process_directory(directory): - # Loop through files in the specified directory (non-recursively) - for filename in os.listdir(directory): - file_path = os.path.join(directory, filename) - - # Only process files that end with .json - if os.path.isfile(file_path) and filename.endswith('.json'): - print(f"Processing {file_path}") - - # Read the file content - with open(file_path, 'r', encoding='utf-8') as file: - content = file.read() - - # Clean the JSON content - cleaned_content = clean_json(content) - - if cleaned_content is not None: - # Write the cleaned content back to the file - with open(file_path, 'w', encoding='utf-8') as file: - file.write(cleaned_content) - print(f"Fixed formatting in {file_path}") - else: - print(f"Failed to fix {file_path} due to JSON parsing error.") - -def main(): - # Check if a directory was passed as an argument, otherwise read from stdin - if len(sys.argv) > 1: - directory = sys.argv[1] - else: - print("Please provide a directory path as an argument.") - sys.exit(1) - - # Check if the directory exists - if not os.path.isdir(directory): - print(f"The provided path '{directory}' is not a valid directory.") - sys.exit(1) - - # Process all .json files in the directory - process_directory(directory) - -if __name__ == '__main__': - main() diff --git a/fluentgen b/fluentgen new file mode 100644 index 0000000..67cfffc --- /dev/null +++ b/fluentgen @@ -0,0 +1,2210 @@ + access_time + accessibility + add + add_circle + airplane + airplane_take_off + alert + alert_off + alert_on + alert_snooze + alert_urgent + animal_dog + app_folder + app_generic + app_recent + app_store + app_title + approvals_app + apps + apps_add_in + apps_list + archive + arrow_clockwise + arrow_counterclockwise + arrow_down + arrow_down_left + arrow_download + arrow_expand + arrow_forward + arrow_import + arrow_left + arrow_maximize + arrow_maximize_vertical + arrow_minimize + arrow_minimize_vertical + arrow_move + arrow_next + arrow_previous + arrow_redo + arrow_repeat_all + arrow_repeat_all_off + arrow_reply + arrow_reply_all + arrow_reply_down + arrow_right + arrow_rotate_clockwise + arrow_rotate_counterclockwise + arrow_sort + arrow_swap + arrow_sync + arrow_sync_circle + arrow_trending + arrow_undo + arrow_up + arrow_up_left + arrow_up_right + arrow_upload + arrows_bidirectional + attach + autocorrect + autosum + backspace + badge + balloon + battery_0 + battery_1 + battery_2 + battery_3 + battery_4 + battery_5 + battery_6 + battery_7 + battery_8 + battery_9 + battery_charge + battery_saver + battery_warning + beaker + bed + bluetooth + bluetooth_connected + bluetooth_disabled + bluetooth_searching + board + book_globe + book_number + bookmark + bookmark_off + bot + bot_add + branch + briefcase + broad_activity_feed + broom + building + building_retail + calendar_3_day + calendar_add + calendar_agenda + calendar_assistant + calendar_cancel + calendar_clock + calendar_day + calendar_empty + calendar_month + calendar_multiple + calendar_reply + calendar_star + calendar_sync + calendar_today + calendar_week_numbers + calendar_week_start + calendar_work_week + call_add + call_end + call_forward + call_inbound + call_missed + call_outbound + call_park + calligraphy_pen + camera + camera_add + camera_switch + caret_down + caret_left + caret_right + cart + cast + cellular_3g + cellular_4g + cellular_data_1 + cellular_data_2 + cellular_data_3 + cellular_data_4 + cellular_data_5 + certificate + channel + chat + chat_bubbles_question + chat_help + chat_off + chat_warning + checkbox_checked + checkbox_unchecked + checkmark + checkmark_circle + checkmark_lock + checkmark_square + chevron_down + chevron_left + chevron_right + chevron_up + circle + circle_half_fill + circle_line + circle_small + city + class + classification + clear_formatting + clipboard + clipboard_code + clipboard_letter + clipboard_link + clipboard_more + clipboard_paste + clipboard_search + clock + clock_alarm + closed_caption + cloud + cloud_off + code + collections + collections_add + color + color_background + color_fill + color_line + column_triple + comment + comment_add + comment_mention + comment_multiple + communication + compass_northwest + compose + conference_room + connector + contact_card + contact_card_group + content_settings + cookies + copy + crop + crop_interim + crop_interim_off + cube + cut + dark_theme + data_area + data_bar_horizontal + data_bar_vertical + data_funnel + data_histogram + data_line + data_pie + data_scatter + data_sunburst + data_treemap + data_usage + data_waterfall + data_whisker + delete + delete_off + dentist + design_ideas + desktop + developer_board + device_eq + dialpad + dialpad_off + directions + dismiss + dismiss_circle + divider_short + divider_tall + dock + dock_row + doctor + document + document_briefcase + document_catch_up + document_copy + document_dismiss + document_edit + document_endnote + document_error + document_footer + document_header + document_header_footer + document_landscape + document_margins + document_one_page + document_page_bottom_center + document_page_bottom_left + document_page_bottom_right + document_page_break + document_page_number + document_page_top_center + document_page_top_left + document_page_top_right + document_pdf + document_search + document_toolbox + document_width + double_swipe_down + double_swipe_up + drafts + drag + drink_beer + drink_coffee + drink_margarita + drink_wine + dual_screen + dual_screen_add + dual_screen_arrow_right + dual_screen_clock + dual_screen_desktop + dual_screen_group + dual_screen_header + dual_screen_lock + dual_screen_mirror + dual_screen_pagination + dual_screen_settings + dual_screen_status_bar + dual_screen_tablet + dual_screen_update + dual_screen_vertical_scroll + dual_screen_vibrate + earth + edit + emoji + emoji_add + emoji_angry + emoji_laugh + emoji_meh + emoji_sad + emoji_surprise + eraser_tool + error_circle + extended_dock + fast_acceleration + fast_forward + filter + fingerprint + flag + flag_off + flash_auto + flash_off + flashlight + flashlight_off + folder + folder_add + folder_link + folder_open + folder_zip + font_decrease + font_increase + font_space_tracking_in + font_space_tracking_out + food + food_cake + food_egg + food_toast + form_new + fps_240 + fps_960 + games + gesture + gif + gift + glance + glasses + glasses_off + globe + globe_add + globe_clock + globe_desktop + globe_location + globe_search + globe_video + grid + group + group_list + guest + guest_add + handshake + hdr + headphones + headset + headset_vr + heart + highlight + history + home + home_add + home_checkmark + icons + image + image_add + image_alt_text + image_copy + image_edit + image_off + image_search + immersive_reader + important + incognito + info + inking_tool + inprivate_account + javascript + key + keyboard + keyboard_dock + keyboard_layout_float + keyboard_layout_one_handed_left + keyboard_layout_resize + keyboard_layout_split + keyboard_shift + keyboard_shift_uppercase + keyboard_tab + laptop + lasso + launcher_settings + layer + leaf_two + library + lightbulb + lightbulb_circle + lightbulb_filament + likert + link + link_edit + link_square + list + live + local_language + location + location_live + lock_shield + mail + mail_add + mail_copy + mail_inbox + mail_inbox_add + mail_inbox_dismiss + mail_read + mail_unread + map + map_drive + match_app_layout + meet_now + megaphone + megaphone_off + mention + merge + mic_off + mic_settings + midi + mobile_optimized + money + more_vertical + movies_and_tv + my_location + navigation + network_check + new + news + next + note + note_add + notebook + notebook_error + notebook_lightning + notebook_question_mark + notebook_section + notebook_sync + notepad + number_row + number_symbol + open + open_folder + options + organization + page_fit + paint_brush + paint_bucket + pair + password + patient + pause + payment + people + people_add + people_audience + people_community + people_community_add + people_search + people_team + person + person_accounts + person_add + person_arrow_left + person_arrow_right + person_available + person_board + person_call + person_delete + person_feedback + person_question_mark + person_support + person_swap + person_voice + phone + phone_desktop + phone_laptop + phone_link_setup + phone_page_header + phone_pagination + phone_screen_time + phone_shake + phone_status_bar + phone_tablet + phone_update + phone_vertical_scroll + phone_vibrate + photo_filter + picture_in_picture + pin + pin_off + play + play_circle + plug_disconnected + point_scan + poll + power + predictions + premium + presenter + presenter_off + preview_link + previous + print + prohibited + protocol_handler + qr_code + question + question_circle + quiz_new + radio_button + rating_mature + re_order + read_aloud + reading_list + reading_list_add + reading_mode_mobile + record + rename + resize_image + resize_table + resize_video + reward + rewind + rocket + router + row_triple + ruler + run + save + save_copy + savings + scale_fill + scale_fit + scan + scratchpad + screenshot + search + search_info + search_square + select_all_off + select_object + send + send_copy + serial_port + service_bell + settings + shapes + share + share_android + share_close_tray + share_ios + shield + shield_dismiss + shield_error + shield_keyhole + shield_prohibited + shifts + shifts_30_minutes + shifts_activity + shifts_add + shifts_availability + shifts_open + shifts_team + sign_out + signature + sim + sleep + slide_add + slide_hide + slide_layout + slide_microphone + slide_text + snooze + sound_source + spacebar + speaker_0 + speaker_1 + speaker_bluetooth + speaker_edit + speaker_off + speaker_settings + star + star_add + star_arrow_right_start + star_emphasis + star_off + star_prohibited + star_settings + status + stethoscope + sticker + sticker_add + stop + storage + store_microsoft + style_guide + sub_grid + surface_earbuds + surface_hub + swipe_down + swipe_right + swipe_up + symbols + system + tab + tab_desktop_arrow_clockwise + tab_desktop_image + tab_in_private + tab_inprivate_account + table + table_add + table_cells_merge + table_cells_split + table_edit + table_freeze_column + table_freeze_row + table_move_left + table_move_right + table_settings + table_switch + tablet + tabs + tag + tap_double + tap_single + target + target_edit + task_list_add + tasks_app + teddy + temperature + tent + text_add_space_after + text_add_space_before + text_align_center + text_align_distributed + text_align_justify + text_align_left + text_align_right + text_bold + text_bullet_list_add + text_bullet_list_square + text_bullet_list_square_warning + text_bullet_list_tree + text_change_case + text_clear_formatting + text_collapse + text_color + text_column_one + text_column_three + text_column_two + text_column_two_left + text_column_two_right + text_description + text_direction_vertical + text_edit_style + text_effects + text_expand + text_field + text_first_line + text_font + text_font_size + text_footnote + text_hanging + text_italic + text_line_spacing + text_number_format + text_number_list_ltr + text_number_list_rtl + text_proofing_tools + text_quote + text_subscript + text_superscript + text_underline + text_word_count + text_wrap + textbox + textbox_align_bottom + textbox_align_middle + textbox_align_top + thinking + thumb_dislike + thumb_like + time_and_weather + time_picker + timeline + timer_10 + timer + timer_2 + timer_off + toggle_right + toolbox + top_speed + translate + trophy + uninstall_app + usb_stick + vault + vehicle_bicycle + vehicle_bus + vehicle_cab + vehicle_car + vehicle_truck + video + video_background_effect + video_clip + video_off + video_person + video_person_off + video_person_star + video_play_pause + video_security + video_switch + view_desktop + view_desktop_mobile + voicemail + walkie_talkie + wallpaper + warning + weather_blowing_snow + weather_cloudy + weather_duststorm + weather_fog + weather_hail_day + weather_hail_night + weather_moon + weather_partly_cloudy_day + weather_partly_cloudy_night + weather_rain + weather_rain_showers_day + weather_rain_showers_night + weather_rain_snow + weather_snow + weather_snow_shower_day + weather_snow_shower_night + weather_snowflake + weather_squalls + weather_sunny + weather_thunderstorm + web_asset + whiteboard + wifi_1 + wifi_2 + wifi_3 + wifi_4 + window_dev_tools + window_shield + wrench + xbox_console + zoom_in + zoom_out + calendar_checkmark + add_square + arrow_autofit_height + arrow_autofit_width + arrow_hook_down_left + arrow_hook_down_right + arrow_hook_up_left + arrow_hook_up_right + attach_arrow_right + attach_text + backpack + blur + book + book_add + book_clock + book_coins + book_compass + book_database + book_exclamation_mark + book_information + book_letter + book_open + book_open_globe + book_pulse + book_question_mark + book_search + book_star + book_theta + border_all + border_bottom + border_bottom_double + border_bottom_thick + border_left + border_outside + border_outside_thick + border_right + border_top + border_top_bottom + border_top_bottom_double + border_top_bottom_thick + bug + building_bank + building_government + building_multiple + building_shop + building_skyscraper + calendar_person + calendar_question_mark + caret_up + channel_add + channel_alert + channel_arrow_left + channel_dismiss + clock_dismiss + color_background_accent + color_fill_accent + color_line_accent + comment_checkmark + comment_edit + comment_off + convert_range + copy_add + couch + currency_dollar_rupee + cursor + cursor_hover + cursor_hover_off + data_bar_vertical_add + decimal_arrow_left + decimal_arrow_right + document_add + document_arrow_left + document_landscape_data + dual_screen_span + edit_off + edit_settings + emoji_hand + eraser + eraser_medium + eraser_segment + eraser_small + eye_tracking_off + f_stop + fixed_width + flip_horizontal + flip_vertical + fluid + gavel + hand_right + hat_graduation + hd + heart_pulse + image_arrow_counterclockwise + location_off + lock_multiple + lottery + math_format_linear + math_format_professional + math_formula + maximize + mic_prohibited + navigation_unread + number_symbol_dismiss + open_off + paint_brush_arrow_down + paint_brush_arrow_up + people_swap + people_team_add + person_clock + person_mail + person_prohibited + pulse + real_estate + ribbon + ribbon_star + scales + shifts_day + slide_multiple_arrow_right + slide_search + slide_size + speaker_usb + sport + sport_american_football + sport_baseball + sport_basketball + sport_hockey + star_edit + tab_prohibited + table_simple + text_column_one_narrow + text_column_one_wide + text_continuous + ticket_diagonal + toggle_left + tv + vehicle_ship + vehicle_subway + vote + weather_drizzle + weather_haze + weather_moon_off + weather_sunny_high + weather_sunny_low + window_new + arrow_bounce + arrow_enter_up + desktop_arrow_right + desktop_speaker + desktop_speaker_off + learning_app + live_off + shifts_checkmark + slide_multiple + star_line_horizontal_3 + table_dismiss + video_360 + video_person_call + album + album_add + backpack_add + camera_off + draw_shape + draw_text + folder_arrow_up + fps_30 + fps_60 + leaf_three + pulse_square + rotate_left + rotate_right + door_tag + luggage + channel_share + people_error + puzzle_cube + arrow_circle_down_right + arrow_circle_right + arrow_circle_up + arrow_circle_up_left + arrow_enter_left + arrow_export_ltr + arrow_square_down + auto_fit_height + auto_fit_width + briefcase_medical + building_factory + calendar_arrow_down + call + call_prohibited + center_horizontal + center_vertical + chevron_circle_down + chevron_circle_right + clipboard_image + comment_arrow_left + comment_arrow_right + comment_dismiss + component_2_double_tap_swipe_down + component_2_double_tap_swipe_up + copy_arrow_right + currency_dollar_euro + delete_dismiss + document_prohibited + document_sync + drink_to_go + fluent + folder_arrow_right + folder_prohibited + folder_swap + full_screen_maximize + full_screen_minimize + image_multiple + leaf_one + location_dismiss + lock_closed + lock_open + mail_inbox_all + mail_inbox_arrow_right + mail_inbox_arrow_up + mail_off + more_horizontal + music_note_1 + music_note_2 + people_team_delete + phone_add + phone_arrow_right + phone_dismiss + phone_lock + phone_span_in + phone_span_out + position_backward + position_forward + position_to_back + position_to_front + resize_large + resize_small + save_edit + search_visual + select_all_on + share_screen_start + share_screen_stop + shifts_prohibited + shifts_question_mark + speaker_2 + speaker_mute + star_arrow_right_end + subtract + tab_add + tab_arrow_left + tab_shield_dismiss + table_delete_column + table_delete_row + table_freeze_column_and_row + table_insert_column + table_insert_row + table_move_above + table_move_below + table_resize_column + table_resize_row + table_stack_above + table_stack_below + table_stack_left + table_stack_right + tag_question_mark + text_grammar_arrow_left + text_grammar_arrow_right + text_grammar_checkmark + text_grammar_dismiss + text_grammar_settings + text_grammar_wand + text_paragraph + text_paragraph_direction + text_position_behind + text_position_front + text_position_line + text_position_square + text_position_through + text_position_tight + text_position_top_bottom + textbox_align_center + ticket_horizontal + wand + window_arrow_up + accessibility_checkmark + animal_rabbit + animal_turtle + book_contacts + cellular_5g + checkbox_1 + checkbox_2 + checkbox_arrow_right + checkbox_person + checkbox_warning + circle_edit + comment_note + document_arrow_right + document_checkmark + dual_screen_dismiss + dual_screen_speaker + filter_dismiss + filter_sync + globe_person + home_person + image_globe + line_style + notebook_add + notebook_section_arrow_right + notebook_subsection + person_note + phone_speaker + pi + receipt + rss + shape_exclude + shape_intersect + shape_subtract + shape_union + slide_settings + slide_transition + table_cell_edit + tablet_speaker + timer_3 + add_subtract_circle + beach + calendar_edit + calendar_ltr + calendar_rtl + clipboard_arrow_right + clipboard_text_ltr + clipboard_text_rtl + cube_sync + document_question_mark + drop + dumbbell + eyedropper + fps_120 + guitar + people_checkmark + re_order_dots_horizontal + re_order_dots_vertical + slide_eraser + split_horizontal + split_vertical + sport_soccer + task_list_ltr + task_list_rtl + tetris_app + text_bullet_list_ltr + text_bullet_list_rtl + vehicle_truck_profile + chart_person + tv_usb + video_prohibited + bookmark_multiple + branch_compare + branch_fork + food_pizza + multiplier_1_2x + multiplier_1_5x + multiplier_1_8x + multiplier_1x + multiplier_2x + skip_forward_10 + skip_forward_30 + text_sort_ascending + text_sort_descending + align_bottom + align_center_horizontal + align_center_vertical + align_left + align_right + align_top + calculator + group_dismiss + group_return + hand_left + mail_inbox_checkmark + number_symbol_square + person_tag + video_person_star_off + arrow_curve_down_left + board_split + chevron_up_down + closed_caption_off + desktop_pulse + dismiss_square + door_arrow_left + flash_checkmark + headphones_sound_wave + ink_stroke + multiplier_5x + premium_person + prohibited_multiple + shield_checkmark + book_open_microphone + briefcase_off + building_bank_link + cloud_sync + document_footer_dismiss + document_header_dismiss + document_ribbon + drive_train + engine + gas + gas_pump + mic_sparkle + notepad_person + skip_forward_tab + square_arrow_forward + transmission + wifi_off + animal_cat + arrow_circle_down + arrow_circle_down_double + arrow_circle_down_split + arrow_reset + barcode_scanner + beaker_edit + bookmark_add + bowl_chopsticks + call_dismiss + call_pause + chat_settings + comment_lightning + contract_down_left + device_meeting_room + device_meeting_room_remote + document_bullet_list + document_link + document_split_hint + document_split_hint_off + expand_up_left + expand_up_right + gauge + headset_add + mail_alert + mail_arrow_up + mail_clock + mail_dismiss + mail_error + mail_link + mail_prohibited + mail_template + microscope + molecule + padding_down + padding_left + padding_right + padding_top + patch + person_chat + pill + production + production_checkmark + ratio_one_to_one + record_stop + ribbon_add + server + shopping_bag + slide_multiple_search + smartwatch + smartwatch_dot + square_multiple + stack + subtract_circle + text_bullet_list_square_edit + wifi_warning + arrow_sort_down + arrow_sort_up + arrow_turn_bidirectional_down_right + arrow_turn_right + book_question_mark_rtl + brain_circuit + building_bank_toolbox + chat_multiple + column_edit + diagram + document_bullet_list_clock + document_bullet_list_off + document_pill + document_save + dual_screen_arrow_up + dual_screen_closed_alert + emoji_multiple + gantt_chart + gift_card_add + hand_draw + image_arrow_back + image_arrow_forward + image_reflection + image_shadow + orientation + people_money + person_pill + pivot + print_add + receipt_add + receipt_bag + receipt_cube + scan_object + shield_badge + slide_grid + steps + tab_desktop_bottom + tab_desktop_multiple_bottom + task_list_square_add + task_list_square_ltr + task_list_square_rtl + text_align_distributed_evenly + text_align_distributed_vertical + text_align_justify_low + textbox_more + arrow_autofit_height_dotted + arrow_autofit_width_dotted + arrow_clockwise_dashes + arrow_counterclockwise_dashes + arrow_export_up + bin_full + book_toolbox + braces_variable + building_retail_money + building_retail_shield + building_retail_toolbox + calculator_multiple + call_checkmark + camera_dome + clipboard_checkmark + clipboard_error + clipboard_heart + clipboard_task + clipboard_task_add + clipboard_task_list_ltr + column_triple_edit + communication_person + data_trending + data_usage_edit + database + database_search + document_heart + document_heart_pulse + document_multiple_prohibited + equal_off + globe_surface + image_prohibited + iot + note_edit + people_settings + people_team_toolbox + person_money + port_hdmi + port_micro_usb + port_usb_a + port_usb_c + receipt_play + stream + syringe + tag_dismiss + target_arrow + tooltip_quote + umbrella + video_add + xray + arrow_autofit_down + arrow_autofit_up + clipboard_task_list_rtl + comma + text_align_center_rotate_270 + text_align_justify_rotate_90 + text_align_left_rotate_270 + text_align_right_rotate_270 + text_strikethrough + textbox_align_bottom_rotate_90 + textbox_align_middle_rotate_90 + textbox_align_top_rotate_90 + battery_checkmark + check + cursor_click + pause_circle + receipt_money + text_direction_horizontal_left + text_direction_horizontal_right + text_direction_rotate_270_right + text_direction_rotate_90_left + text_direction_rotate_90_right + arrow_autofit_content + arrow_trending_lines + calendar_error + cellular_warning + cloud_arrow_down + cloud_arrow_up + cloud_checkmark + cloud_dismiss + grid_dots + ios_arrow_ltr + ios_arrow_rtl + mail_multiple + panel_left + panel_right + panel_right_contract + puzzle_piece + scan_table + scan_text + scan_type + shield_task + stack_star + text_add_t + text_more + text_t + usb_plug + wifi_lock + arrow_bidirectional_up_down + checkbox_indeterminate + clipboard_pulse + clock_arrow_download + cloud_flow + cloud_swap + comment_multiple_checkmark + document_chevron_double + document_css + document_javascript + document_percent + keyboard_123 + link_dismiss + text_header_1 + text_header_2 + text_header_3 + window + arrow_collapse_all + document_multiple + document_multiple_percent + document_table + arrow_circle_left + arrow_trending_checkmark + arrow_trending_settings + channel_subtract + clipboard_settings + cloud_words + control_button + credit_card_person + credit_card_toolbox + diversity + guardian + money_calculator + person_lock + road_cone + scan_thumb_up + vehicle_car_collision + wallet + desktop_keyboard + rectangle_landscape + scan_thumb_up_off + send_clock + share_screen_person + share_screen_person_overlay + share_screen_person_overlay_inside + tag_lock + text_indent_decrease_ltr + text_indent_decrease_rtl + text_indent_increase_ltr + text_indent_increase_rtl + apps_list_detail + box_edit + box_toolbox + chat_video + database_link + document_text + document_text_link + globe_shield + projection_screen + projection_screen_dismiss + save_arrow_right + shortpick + sparkle + subtract_square + text_case_lowercase + text_case_title + text_case_uppercase + video_person_sparkle + archive_multiple + box + box_dismiss + clipboard_clock + cloud_archive + document_table_arrow_right + document_table_checkmark + document_text_clock + flash_settings + money_dismiss + money_off + person_lightbulb + picture_in_picture_enter + picture_in_picture_exit + sanitize + shopping_bag_percent + shopping_bag_tag + stack_arrow_forward + table_lightning + table_link + bookmark_search + calendar_chat + calendar_toolbox + comment_multiple_link + contact_card_ribbon + database_person + document_flowchart + document_table_search + document_text_extract + flowchart + flowchart_circle + folder_sync + heart_circle + megaphone_loud + people_lock + person_circle + phone_update_checkmark + plug_connected + save_multiple + scan_type_checkmark + select_object_skew + select_object_skew_dismiss + select_object_skew_edit + shopping_bag_dismiss + shopping_bag_pause + tag_error + tag_multiple + text_column_one_wide_lightning + text_font_info + tray_item_add + tray_item_remove + vehicle_truck_bag + checkmark_starburst + arrow_sort_down_lines + branch_fork_hint + branch_fork_link + data_usage_toolbox + desktop_cursor + desktop_flow + desktop_signal + emoji_sad_slight + emoji_smile_slight + food_apple + mail_edit + person_edit + scan_dash + square_hint + tag_off + text_box_settings + vehicle_truck_cube + arrow_forward_down_lightning + arrow_forward_down_person + arrow_step_in_left + arrow_step_in_right + arrow_step_out + arrow_trending_text + arrow_trending_wrench + brightness_high + brightness_low + chat_dismiss + cube_tree + draw_image + drawer_add + drawer_arrow_download + drawer_dismiss + drawer_play + drawer_subtract + emoji_sparkle + food_grains + gift_card_arrow_right + money_hand + video_clip_multiple + wrench_screwdriver + arrow_between_down + arrow_sync_checkmark + arrow_sync_dismiss + calculator_arrow_clockwise + calendar_arrow_right + clock_pause + diamond + key_reset + line + line_dashes + oval + people_list + people_queue + rhombus + screen_search + settings_chat + share_screen_person_p + slide_arrow_right + sound_wave_circle + star_dismiss + trophy_off + window_apps + window_wrench + book_arrow_clockwise + box_arrow_left + box_arrow_up + box_checkmark + box_multiple + box_multiple_arrow_left + box_multiple_arrow_right + box_multiple_checkmark + box_multiple_search + box_search + chart_multiple + clock_toolbox + cube_multiple + desktop_toolbox + document_bullet_list_multiple + document_queue + document_queue_add + document_queue_multiple + document_table_cube + document_table_truck + document_text_toolbox + equal_circle + gift_card_money + gift_card_multiple + ribbon_off + shopping_bag_arrow_left + shopping_bag_play + square + square_hint_apps + square_hint_sparkles + tag_reset + tag_search + board_heart + braces + breakout_room + chevron_circle_left + chevron_circle_up + clipboard_data_bar + comment_error + document_lock + eyedropper_off + mail_open_person + resize + scan_camera + tab_desktop + arrow_export_rtl + arrow_step_in + battery_10 + border_none + caret_down_right + cellular_off + eye + eye_off + eye_tracking + flash + hdr_off + mic + multiselect_ltr + multiselect_rtl + panel_left_contract + shield_lock + skip_back_10 + textbox_rotate_90 + building_home + desktop_edit + desktop_mac + desktop_sync + developer_board_search + document_header_arrow_down + document_landscape_split + double_tap_swipe_down + double_tap_swipe_up + location_add + math_symbols + people_prohibited + video_chat + document_mention + gift_card + glance_horizontal + star_half + star_one_quarter + star_three_quarter + archive_settings + arrow_trending_down + border_left_right + cube_quick + edit_prohibited + emoji_edit + flash_flow + folder_arrow_left + key_command + mail_all_read + mail_list + mail_read_multiple + music_note_off_1 + music_note_off_2 + number_circle_1 + panel_left_expand + pen + pen_off + pen_prohibited + presence_available + presence_blocked + presence_dnd + presence_offline + presence_oof + presence_unknown + table_bottom_row + text_density + wallet_credit_card + archive_arrow_back + mail_warning + history_dismiss + person_sync + subtitles + alert_badge + folder_mail + mail_attach + phone_key + text_indent_decrease_rotate_270 + text_indent_decrease_rotate_90 + text_indent_increase_rotate_270 + text_indent_increase_rotate_90 + text_number_list_rotate_270 + text_number_list_rotate_90 + video_clip_off + arrow_split + catch_up + mic_pulse + mic_pulse_off + toggle_multiple + zoom_fit + arrow_outline_up_right + clipboard_text_edit + document_data + person_heart + text_align_center_rotate_90 + text_align_justify_rotate_270 + text_align_left_rotate_90 + text_align_right_rotate_90 + calendar_data_bar + clipboard_3_day + clipboard_day + clipboard_month + content_view_gallery + form + shield_globe + xbox_controller + arrow_paragraph + content_view + credit_card_clock + folder_people + hand_left_chat + home_database + home_more + pipeline + text_align_justify_low_rotate_270 + text_align_justify_low_rotate_90 + bowl_salad + building_retail_more + earth_leaf + feed + filmstrip + food_carrot + food_fish + hand_wave + person_star + slide_link + food_chicken_leg + form_multiple + shield_question + heart_broken + text_wrap_off + trophy_lock + arrow_repeat_1 + arrow_shuffle + arrow_shuffle_off + building_desktop + calendar_lock + calendar_settings + chat_add + chat_cursor + chat_empty + circle_image + desktop_checkmark + fire + hourglass + hourglass_half + hourglass_one_quarter + hourglass_three_quarter + ink_stroke_arrow_down + ink_stroke_arrow_up_down + megaphone_circle + person_alert + person_arrow_back + person_link + phone_chat + shield_add + sparkle_circle + text_direction_horizontal_ltr + text_direction_horizontal_rtl + text_direction_rotate_90_ltr + text_direction_rotate_90_rtl + code_block + data_bar_vertical_star + eye_lines + window_database + building_people + cloud_error + database_arrow_right + dishwasher + elevator + fireplace + oven + panel_left_add + panel_left_key + vehicle_car_parking + vehicle_car_profile_ltr + vehicle_car_profile_rtl + washer + building_townhouse + camera_sparkles + document_database + home_split + panel_right_cursor + person_square + person_starburst + receipt_sparkles + scan_qr_code + showerhead + slide_text_multiple + swimming_pool + vehicle_car_profile_ltr_clock + water + glance_horizontal_sparkles + grid_circles + heart_circle_hint + lightbulb_person + person_walking + table_simple_checkmark + text_underline_double + xbox_controller_error + calendar_arrow_counterclockwise + calendar_play + calendar_shield + call_transfer + cloud_add + cloud_edit + cloud_link + more_circle + people_star + slide_text_person + table_lock + video_person_clock + document_landscape_split_hint + person_search + text_align_justify_low_90 + text_bullet_list_ltr_90 + text_bullet_list_ltr_rotate_270 + text_description_ltr + text_description_rtl + text_indent_decrease_ltr_90 + text_indent_decrease_ltr_rotate_270 + text_indent_decrease_rtl_90 + text_indent_decrease_rtl_rotate_270 + text_indent_increase_ltr_90 + text_indent_increase_ltr_rotate_270 + text_indent_increase_rtl_90 + text_indent_increase_rtl_rotate_270 + text_number_list_ltr_90 + text_number_list_ltr_rotate_270 + text_number_list_rtl_90 + text_number_list_rtl_rotate_270 + textbox_settings + arrow_trending_sparkle + bot_sparkle + chat_multiple_heart + chat_sparkle + clock_lock + clover +󰀃 comment_link +󰀇 copy_select +󰀍 document_100 +󰀏 document_border +󰀒 document_border_print +󰀗 document_bullet_list_arrow_left +󰀚 document_bullet_list_cube +󰀝 document_data_link +󰀡 document_fit +󰀤 document_folder +󰀨 document_one_page_add +󰀪 document_one_page_columns +󰀭 document_one_page_link +󰀯 document_print +󰀺 filmstrip_play +󰀿 flag_clock +󰁉 image_border +󰁏 image_circle +󰁕 image_table +󰁞 iot_alert +󰁢 line_thickness +󰁦 location_arrow +󰁭 mail_arrow_double_back +󰁮 mail_checkmark +󰁵 panel_left_header +󰁻 panel_left_header_add +󰂁 panel_left_header_key +󰂂 people_call +󰂌 play_circle_hint +󰂏 poll_horizontal +󰂔 presence_away +󰂕 projection_screen_text +󰂟 slash_forward +󰂢 space_3d +󰂭 star_arrow_back +󰂯 table_simple_multiple +󰂲 text_column_one_semi_narrow +󰂶 text_position_square_left +󰂹 text_position_square_right +󰂼 text_underline_character_u +󰂿 translate_off +󰃆 video_background_effect_horizontal +󰃏 arrow_circle_up_right +󰃒 binder_triangle +󰃕 bow_tie +󰃙 document_one_page_sparkle +󰃞 frame +󰃡 lock_closed_key +󰃣 mountain_location_bottom +󰃦 mountain_location_top +󰃩 mountain_trail +󰃭 pen_dismiss +󰃲 phone_edit +󰃵 send_beaker +󰃻 slide_text_sparkle +󰄀 stack_vertical +󰄂 table_column_top_bottom +󰄄 table_offset +󰄆 table_offset_add +󰄈 table_offset_less_than_or_equal_to +󰄊 table_offset_settings +󰄌 vehicle_cable_car +󰄏 arrow_autofit_height_in +󰄔 code_circle +󰄙 desktop_arrow_down +󰄛 desktop_tower +󰄟 dust +󰄡 edit_arrow_back +󰄤 emoji_hint +󰄯 mold +󰄷 plant_grass +󰄺 plant_ragweed +󰄽 settings_cog_multiple +󰄾 slide_content +󰅁 slide_record +󰅅 stack_add +󰅈 star_checkmark +󰅐 table_simple_exclude +󰅖 table_simple_include +󰅜 tree_deciduous +󰅪 card_ui +󰅭 chevron_down_up +󰅰 crop_sparkle +󰅼 document_one_page_multiple +󰆃 filmstrip_split +󰆊 gift_open +󰆛 panel_left_text +󰆡 panel_left_text_add +󰆧 panel_left_text_dismiss +󰆱 text_bullet_list_square_sparkle +󰆴 translate_auto + airplane_landing + align_space_evenly_horizontal +󰆵 align_space_evenly_vertical +󰆷 align_straighten +󰆺 arrow_flow_diagonal_up_right +󰆾 arrow_flow_up_right +󰇁 arrow_flow_up_right_rectangle_multiple +󰇃 arrow_square_up_right +󰇅 bin_recycle +󰇇 bin_recycle_full +󰇉 briefcase_search +󰇌 desk +󰇐 flow +󰇗 home_heart +󰇞 money_settings +󰇠 people_edit +󰇧 arrow_routing +󰇩 arrow_routing_rectangle_multiple +󰇮 folder_lightning +󰇲 image_sparkle +󰇴 person_info +󰇺 text_direction_rotate_315_right +󰇼 text_direction_rotate_45_right +󰇿 arrow_outline_down_left +󰈅 arrow_step_in_diagonal_down_left +󰈇 arrow_up_square_settings +󰈈 briefcase_person +󰈉 building_cloud +󰈍 cloud_bidirectional +󰈏 crown +󰈐 crown_subtract +󰈙 hat_graduation_sparkle +󰈛 kiosk +󰈜 laptop_multiple +󰈝 link_add +󰈞 link_settings +󰈩 pen_sparkle +󰈭 person_phone +󰈮 person_subtract +󰈯 phone_briefcase +󰈰 phone_multiple +󰈱 phone_multiple_settings +󰈲 phone_person +󰈳 phone_subtract +󰈵 plug_connected_settings +󰈸 rectangle_landscape_hint_copy +󰈺 script +󰈼 server_link +󰉂 tab_desktop_link +󰉅 table_arrow_up +󰉆 tablet_laptop +󰉉 thumb_like_dislike +󰉐 number_circle_2 +󰉖 number_circle_3 +󰉜 number_circle_4 +󰉢 number_circle_5 +󰉦 add_square_multiple +󰉭 folder_open_vertical +󰉱 hand_right_off +󰉵 key_multiple +󰉸 link_multiple +󰊁 arrow_export +󰊅 calendar +󰊊 calendar_date +󰊎 ios_arrow +󰊑 text_bullet_list +󰊒 text_bullet_list_270 +󰊔 text_bullet_list_90 +󰊖 text_column_wide +󰊙 text_indent_decrease +󰊜 text_indent_increase +󰊟 vehicle_car_profile +󰊢 arrow_bidirectional_left_right +󰊩 building_mosque +󰊯 checkmark_circle_square +󰊲 heart_off +󰊸 line_horizontal_1 +󰊼 line_horizontal_1_dashes +󰋀 line_horizontal_2_dashes_solid +󰋃 mic_record +󰋈 remix_add +󰋋 video_person_sparkle_off +󰋍 voicemail_shield +󰋑 cast_multiple +󰋕 circle_hint_half_vertical +󰋗 flash_sparkle +󰋙 hexagon +󰋛 hexagon_three +󰋝 next_frame +󰋟 previous_frame +󰋢 textbox_align_bottom_center +󰋥 textbox_align_bottom_left +󰋨 textbox_align_bottom_right +󰋬 textbox_align_middle_left +󰋯 textbox_align_middle_right +󰋲 textbox_align_top_center +󰋵 textbox_align_top_left +󰋸 textbox_align_top_right +󰋹 triangle_down +󰌀 content_view_gallery_lightning +󰌄 globe_arrow_forward +󰌆 hard_drive +󰌈 hard_drive_call +󰌌 mail_rewind +󰌏 panel_right_gallery +󰌓 panel_top_gallery +󰌗 rectangle_landscape_sparkle +󰌜 scan_person +󰌦 document_lightning +󰌮 step +󰌵 text_grammar_lightning +󰌹 beaker_add +󰌻 beaker_dismiss +󰌽 document_cube +󰌿 drawer +󰍁 filmstrip_image +󰍄 number_circle_0 +󰍊 number_circle_6 +󰍐 number_circle_7 +󰍖 number_circle_8 +󰍜 number_circle_9 +󰍤 square_hint_hexagon +󰍫 target_add +󰍭 target_dismiss +󰍰 text_header_1_lines +󰍳 text_header_1_lines_caret +󰍶 text_header_2_lines +󰍹 text_header_2_lines_caret +󰍼 text_header_3_lines +󰍿 text_header_3_lines_caret +󰎏 folder_search +󰎙 shape_organic +󰎟 teardrop_bottom_right +󰎥 triangle +󰎪 arrow_download_off +󰎰 border_inside +󰎳 chat_lock +󰎼 link_person +󰏁 people_chat +󰏆 slide_text_edit +󰏋 subtract_parentheses +󰏓 arrow_fit +󰏔 arrow_fit_in +󰏝 building_government_search +󰏡 calendar_record +󰏨 clipboard_math_formula +󰏭 clipboard_number_123 +󰏳 communication_shield +󰏵 dialpad_question_mark +󰏻 folder_person +󰐁 hat_graduation_add +󰐍 person_warning +󰐑 scan_type_off +󰐕 screenshot_record +󰐚 vehicle_subway_clock +󰐝 video_clip_optimize +󰐡 video_person_pulse +󰐬 calendar_note +󰐮 checkmark_underline_circle +󰐰 data_bar_vertical_ascending +󰐸 globe_arrow_up +󰐻 globe_error +󰐽 globe_prohibited +󰑀 globe_sync +󰑃 globe_warning +󰑍 organization_horizontal +󰑔 person_square_checkmark +󰑗 phone_footer_arrow_down +󰑙 phone_header_arrow_up +󰑦 building_swap +󰑬 clipboard_brush +󰑱 cloud_beaker +󰑷 cloud_cube +󰑽 contract_up_right +󰒃 document_data_lock +󰒈 layout_cell_four +󰒋 layout_column_four +󰒎 layout_column_one_third_left +󰒑 layout_column_one_third_right +󰒔 layout_column_one_third_right_hint +󰒗 layout_column_three +󰒚 layout_column_two +󰒝 layout_column_two_split_left +󰒠 layout_column_two_split_right +󰒣 layout_row_four +󰒦 layout_row_three +󰒩 layout_row_two +󰒬 layout_row_two_split_bottom +󰒯 layout_row_two_split_top +󰒲 location_target_square +󰒾 text_arrow_down_right_column +󰓃 text_effects_sparkle +󰓇 whiteboard_off +󰓊 layer_diagonal +󰓋 layer_diagonal_person +󰓎 poll_off +󰓓 rectangle_landscape_sync +󰓗 rectangle_landscape_sync_off +󰓛 seat +󰓞 seat_add +󰓡 speaker_box +󰓣 window_ad +󰓥 wrench_settings +󰓦 building_lighthouse +󰓩 calendar_link +󰓫 calendar_video +󰓵 laptop_settings +󰓹 shopping_bag_add +󰓻 street_sign +󰓼 video_link +󰔁 calendar_sparkle +󰔆 calendar_template +󰔒 laptop_briefcase +󰔖 layer_diagonal_sparkle +󰔙 payment_wireless +󰔣 checkmark_circle_warning +󰔦 cloud_arrow_right +󰔧 document_arrow_down +󰔪 document_signature +󰔯 home_garage +󰔱 image_split +󰔵 line_flow_diagonal_up_right +󰔹 mail_arrow_clockwise +󰔼 person_passkey +󰕁 person_ribbon +󰕃 plant_cattail +󰕊 video_clip_wand +󰕍 window_fingerprint +󰕒 accessibility_error +󰕔 accessibility_question_mark +󰕕 arrow_down_exclamation +󰕘 arrow_sort_up_lines +󰕛 arrow_up_exclamation +󰕝 bench +󰕢 clock_bill +󰕦 data_usage_settings +󰕨 edit_person +󰕪 highway +󰕬 laptop_person +󰕰 location_ripple +󰕸 road +󰕺 tab_desktop_multiple +󰕽 tab_desktop_multiple_sparkle +󰕿 vehicle_tractor +󰖂 document_target +󰖆 emoji_meme +󰖉 hand_point +󰖏 people_subtract +󰖓 person_alert_off +󰖘 spatula_spoon +󰖤 data_bar_vertical_arrow_down +󰖧 haptic_strong +󰖪 haptic_weak +󰖬 hexagon_sparkle +󰖻 tab_group +󰗀 camera_arrow_up +󰗃 circle_highlight +󰗄 circle_hint +󰗆 circle_shadow +󰗐 share_multiple +󰗒 slide_play +󰗕 column +󰗛 paint_brush_sparkle +󰗠 person_tentative +󰗣 tab_desktop_search +󰗥 table_sparkle +󰗪 crop_arrow_rotate +󰗬 desktop_off +󰗰 layer_diagonal_add +󰗻 card_ui_portrait_flip +󰘂 notepad_sparkle +󰘈 paint_brush_subtract +󰘍 play_circle_sparkle +󰘏 replay +󰘔 send_person +󰘘 square_dovetail_joint +󰘞 table_cursor +󰘠 transparency_square +󰘤 arrow_expand_all +󰘧 chat_arrow_back_down +󰘭 edit_line_horizontal_3 +󰘱 prompt +󰘷 search_sparkle +󰘽 slide_text_call +󰙁 slide_text_cursor +󰙄 vehicle_motorcycle +󰙊 accessibility_more +󰙥 coin_stack +󰙯 person_home +󰙶 edit_lock +󰙸 layout_row_two_settings +󰙿 presence_tentative +󰚈 warning_lock_open +󰚌 person_square_add +󰚔 globe_off +󰚛 person_board_add +󰚦 teaching +󰚫 window_brush +󰚲 calendar_arrow_repeat_all +󰚽 document_globe +󰛁 line_style_sketch diff --git a/general/.bash_history b/general/.bash_history deleted file mode 100644 index e691e82..0000000 --- a/general/.bash_history +++ /dev/null @@ -1,500 +0,0 @@ -pyinstaller imagevideoupscaler.spec -./imagevideoupscaler -./imagevideoupscaler -pyinstaller imagevideoupscaler.spec -./imagevideoupscaler -pyinstaller imagevideoupscaler.spec -pyinstaller imagevideoupscaler.spec -./imagevideoupscaler -pyinstaller imagevideoupscaler.spec -./imagevideoupscaler -pyinstaller imagevideoupscaler-cli.py --onefile --name imagevideoupscaler --hidden-import "bin.engines" -./imagevideoupscaler -pyinstaller imagevideoupscaler-cli.py --onefile --name imagevideoupscaler -python3 imagevideoupscaler-cli.py -i ~/Downloads/test.mp4 -o ~/Downloads/test_us.mp4 -python3 imagevideoupscaler-cli.py -i ~/Downloads/test.mp4 -o ~/Downloads/test_us.mp4 -pyinstaller imagevideoupscaler-cli.py --name imagevideoupscaler -cd dist/imagevideoupscaler/ -./imagevideoupscaler -i -cd ../.. -cd ~/projects/FSRImageVideoUpscalerFrontend_New/ -ls -clear -ls -clear -yay -S rpm-build -yay -S rpm-tools -yay -S dpkg -yay -S fakeroot -clear -pip3 install py2deb -py2deb -r ./ -py2deb -r ~/projects/FSRImageVideoUpscalerFrontend_New/ -pip3 install symbol -clear -yay -S symbol -clear -pip3 install pyinstaller -yay -S python-pip -py2deb -python3 imagevideoupscaler-cli.py -clear -pip3 install symbol -pip3 install setuptools -yay -R python-pip -yay -S python-pip -pip install --upgrade pip -clear -pip install setuptools -yay -S setuptools -sudo pacman -Syu "pacman>=6.0.2-7" -pip3 -yay -S python-pip -yay -S python3-pip -clear -yay -S python-pip -pip3 install -python -m pip3 -python -m pip -pip -pip3 -clear -pip3 -pip3 install -python3 imagevideoupscaler-cli.py -i ~/Downloads/test.mp4 -o ~/Downloads/test_us.mp4 -python3 imagevideoupscaler-cli.py -i ~/Downloads/test.mp4 -o ~/Downloads/test_us.mp4 -python3 imagevideoupscaler-cli.py -i ~/Downloads/test.mp4 -o ~/Downloads/test_us.mp4 -python3 imagevideoupscaler-cli.py -i ~/Downloads/test.mp4 -o ~/Downloads/test_us.mp4 -s 2 -clear -python3 imagevideoupscaler-cli.py -i ~/Downloads/test.mp4 -o ~/Downloads/test_us.mp4 -E ss -python3 imagevideoupscaler-cli.py -i ~/Downloads/test.mp4 -o ~/Downloads/test_us.mp4 -E ss -python3 imagevideoupscaler-cli.py -i ~/Downloads/test.mp4 -o ~/Downloads/test_us.mp4 -E ss -python3 imagevideoupscaler-cli.py -i ~/Downloads/test.mp4 -o ~/Downloads/test_us.mp4 -E ss -s 2 -clear -python3 imagevideoupscaler-cli.py -i ~/Downloads/test.mp4 -o ~/Downloads/test_us.mp4 -E fsr -s 2 -python3 imagevideoupscaler-cli.py -i ~/Downloads/test.mp4 -o ~/Downloads/test_us.mp4 -E fsr -M c -s 2 -clear -python3 imagevideoupscaler-cli.py -i ~/Downloads/test.mp4 -o ~/Downloads/test_us.mp4 -E fsr -s 2 -python3 imagevideoupscaler-cli.py -i ~/Downloads/test.mp4 -o ~/Downloads/test_us.mp4 -E ss -s 2 -python3 imagevideoupscaler-cli.py -i ~/Downloads/test.mp4 -o ~/Downloads/test_us.mp4 -E ss -s 2 -npm run serve -npm run serve -npm run serve -npm i -npm run serve -clear -cd ../../website/ -cd dist/ -http-server -http-server -git pull origin main -git checkout origin master -git checkout origin main -cd frontend/ -npm run electron:serve -npm i -g @vue/cli -sudo npm i -g @vue/cli -npm audit fix --force -npm audit fix --force -npm audit fix --force -npm i -npm i -npm run electron:serve -npm run electron:serve -npm run electron:serve -npm i child_process -clear -npm run electron:serve -npm run serve -npm run serve -npm run serve -cd .. -ls -clear -python3 imagevideoupscaler-cli.py -h -python3 imagevideoupscaler-cli.py -p -python3 imagevideoupscaler-cli.py -h -python3 imagevideoupscaler-cli.py -d ss -cd frontend/ -npm run electron:serve -npm run electron:serve -npm run electron:serve -npm run electron:serve -npm run electron:serve -npm run electron:serve -npm run electron:serve -npm i --save-dev @electron-forge/cli -npm exec --package=@electron-forge/cli -c "electron-forge import" -npm run make -cd src/ -npm run make -clear -cd .. -npm run electron:build -npm run electron:build -- --linux deb --win nsis -clear -npm run electron:build -- --linux deb --win nsis -npm run electron:build -- --linux deb --win nsis -npm run electron:build -- --linux deb --win nsis -npm run electron:build -- --linux deb --win nsis -npm run electron:build -- --linux deb --win nsis -yay -S libcript -yay -S libssl -clear -npm run electron:build -- --linux deb --linux rpm --win nsis -npm run electron:build -- --linux deb rpm --win nsis -yay -S libxcrypt-compat -npm run electron:build -- --linux deb rpm --win nsis -npm run electron:build -- --linux deb rpm --win nsis -cd ../packaging/ -ls -sudo chmod +x package.sh -./package.sh -mv --help -pip3 install pyinstaller -./package.sh -./package.sh -./package.sh -./package.sh -./package.sh -./package.sh -./package.sh -./package.sh -./package.sh -./package.sh -cd packaging/ -ls -sudo chmod +x package.sh -sudo chmod +x package.sh -./package.sh -./package.sh -./package.sh -cd ../dist/imagevideoupscaler/ -cd ../../frontend/ -npm run electron:serve -npm run electron:serve -npm run electron:serve -npm run electron:serve -npm run electron:serve -npm run electron:serve -npm run electron:serve -npm run electron:serve -npm run electron:serve -cd ../packaging/ -./package.sh -clear -cd ../frontend/ -npm run electron:serve -cd ../packaging/ -./package.sh -cd ../frontend/ -npm run electron:serve -npm run electron:serve -cd ../packaging/ -./package.sh -clear -cd ../frontend/ -npm run electron:serve -npm run electron:serve -npm run electron:serve -./imagevideoupscaler -./imagevideoupscaler -i /home/janis/Downloads/test.mp4 -o ~/Downloads/test_us.mp4 -s 2 -S 0.25 -clear -npm run electron:serve -npm run electron:serve -npm run electron:serve -npm run electron:serve -npm run electron:serve -npm run electron:serve -npm run electron:serve -npm run electron:serve -npm run electron:serve -npm i socket.io -npm run electron:serve -npm run electron:serve -npm run electron:serve -npm i socket.io-client -npm run electron:serve -npm run electron:serve -npm run electron:serve -npm run electron:serve -npm run electron:serve -cd ../packaging/ -sudo chmod +x ./prepareWindowsPackaging.sh -./prepareWindowsPackaging.sh -wine python -m pip install pyinstaller -./package.sh -./package.sh -wine python -m PyInstaller -./package.sh -cd ../frontend/dist_electron/ -wine imagevideoupscaler\ Setup\ 2.0.0-dev1.exe -clear -cd ../../packaging/ -clear -cd ../frontend/ -npm run electron:serve -cd .. -python3 imagevideoupscaler-cli.py -d ss -cd frontend/ -npm run electron:serve -npm run electron:serve -cd ../packaging/ -./package.sh -sudo chmod +x packageWindows.sh -sudo chmod +x packageLinux.sh -./packageWindows.sh -./packageWindows.sh -cd .. -python3 imagevideoupscaler-cli.py -h -cd frontend/ -npm run serve -npm run electron:serve -npm run electron:serve -cd ../frontend/ -cd ../packaging/ -./packageWindows.sh -cd ../frontend/ -npm run electron:serve -npm run electron:serve -npm run electron:serve -npm run electron:serve -npm i electron -npm run electron:serve -npm run electron:serve -npm run electron:serve -npm run electron:serve -npm run electron:serve -npm run electron:serve -npm run electron:serve -npm run electron:serve -npm run electron:serve -npm run electron:serve -npm run electron:serve -npm run electron:serve -npm run electron:serve -npm run electron:serve -npm run electron:serve -npm run electron:serve -npm run electron:serve -npm run electron:serve -cd ../packaging/ -sudo chmod +x startTesting.sh -sudo chmod +x stopTesting.sh -clear -./startTesting.sh -cd ../frontend/ -npm run serve -npm run electron:serve -npm run electron:serve -cd ../packaging/ -./stopTesting.sh -./stopTesting.sh -./packageWindows.sh -cd .. -python3 imagevideoupscaler-cli.py -i /home/janis/projects/FSRImageVideoUpscalerFrontend_New/logo.png -python3 imagevideoupscaler-cli.py -i /home/janis/projects/FSRImageVideoUpscalerFrontend_New/logo.png -python3 imagevideoupscaler-cli.py -i /home/janis/projects/FSRImageVideoUpscalerFrontend_New/logo.png -python3 imagevideoupscaler-cli.py -i /home/janis/projects/FSRImageVideoUpscalerFrontend_New/logo.png -s 2 -cd ../fro -cd frontend/ -npm run serve -npm run electron:serve -cd ../packaging/ -./package.sh -./stopTesting.sh -./package.sh -./package.sh -cd ../frontend/ -npm run electron:serve -cd ../packaging/ -./packageWindows.sh -cd src/webapp/ -npm run serve -./packageWindows.sh -cd ../frontend/ -wine ./smuL-cli.exe -cd ../packaging/ -clear -./stopTesting.sh -./packageLinux.sh -cd ../frontend/ -./smuL-cli -clear -cd ../packaging/ -./stopTesting.sh -./packageWindows.sh -wine -m pip install importlib -clear -./stopTesting.sh -./prepareWindowsPackaging.sh -clear -cd ../ -wine python ./smuL-cli.py -wine python ./smuL-cli.py -wine python ./smuL-cli.py -wine python ./smuL-cli.py -wine python ./smuL-cli.py -wine python ./smuL-cli.py -wine python ./smuL-cli.py -cd packaging/ -./stopTesting.sh -./packageWindows.sh -cd ../frontend/dist_electron/ -wine ./SimpleMediaScalerLite\ Setup\ 2.0.0-dev1.exe -clear -cd ../../packaging/ -./packageWindows.sh -cd ../frontend/ -wine ./smuL-cli.exe -h -wine ./smuL-cli.exe -i ~/Downloads/test.png -s 2 -cd ../packaging/ -./stopTesting.sh -./packageWindows.sh -cd ../frontend/ -wine ./smuL-cli.exe -i ~/Downloads/test.png -s 2 -wine ./smuL-cli.exe -i ~/Downloads/test.png -s 2 -wine ./smuL-cli.exe -i ~/Downloads/test.png -s 2 -wine ./smuL-cli.exe -i ~/Downloads/test.png -s 2 -cd ../packaging/ -./stopTesting.sh -./packageWindows.sh -clear -cd ../frontend/ -wine ./smuL-cli.exe -i ~/Downloads/test.png -s 2 -clear -cd ../packaging/ -./stopTesting.sh -./packageWindows.sh -cd ../frontend/ -wine ./smuL-cli.exe -i ~/Downloads/test.png -s 2 -cd ../packaging/ -./stopTesting.sh -./packageWindows.sh -cd ../frontend/dist_electron/ -wine ./SimpleMediaScalerLite\ Setup\ 2.0.0-dev1.exe -wine ./SimpleMediaScalerLite\ Setup\ 2.0.0-dev1.exe -clear -cd ../../packaging/ -sudo chmod +x packageTesting.sh -./packageTesting.sh -cd ../frontend/dist_electron/linux-unpacked/ -ls -./simplemediascalerlite -cd ../../ -cd ../packag -cd ../packaging/ -./packageLinux.sh -./packageLinux.sh -./packageLinux.sh -./packageTesting.sh -./packageTesting.sh -./packageTesting.sh -./packageTesting.sh -./packageTesting.sh -./packageTesting.sh -./packageTesting.sh -./packageTesting.sh -./packageTesting.sh -./packageTesting.sh -./packageTesting.sh -./packageTesting.sh -./packageTesting.sh -./packageTesting.sh -./packageWindows.sh -cd ../frontend/dist_electron/ -wine SimpleMediaScalerLite\ Setup\ 2.0.0-dev1.exe -wine SimpleMediaScalerLite\ Setup\ 2.0.0-dev1.exe -clear -cd ../../packaging/ -./package.sh -cd .. -python3 smuL-cli.py -i /home/janis/Downloads/test.png -S 2 -python3 smuL-cli.py -i /home/janis/Downloads/test.mp4 -s 2 -python3 smuL-cli.py -i /home/janis/Downloads/test.mp4 -S 2 -python3 smuL-cli.py -i /home/janis/Downloads/test.mp4 -S 2 -python3 smuL-cli.py -i /home/janis/Downloads/test.mp4 -S 2 -python3 smuL-cli.py -i /home/janis/Downloads/test.mp4 -S 2 -python3 smuL-cli.py -i /home/janis/Downloads/test.mp4 -S 2 -python3 smuL-cli.py -i /home/janis/Downloads/test.mp4 -S 2 -python3 smuL-cli.py -i /home/janis/Downloads/test.mp4 -S 2 -python3 smuL-cli.py -i /home/janis/Downloads/test.mp4 -s 2 -clear -cd ./packaging/ -./packageWindows.sh -./packageWindows.sh -./packageWindows.sh -./packageWindows.sh -./package.sh -cd packag -cd packaging/ -./packageWindows.sh -./packageWindows.sh -cd ../../italian/ -http-server -node server.js -node server.js -node server.js -node server.js -node server.js -node server.js -node server.js -ls | grep -v jpg$ | while IFS= read -r FILENAME; do convert "${FILENAME}" "${FILENAME%.*}.jpg"; done -clear -for i in *.avi; do ffmpeg -i "$i" "${i%.*}.mp4"; done -for i in *.mov; do ffmpeg -i "$i" "${i%.*}.mp4"; done -rm ./*.mp4 -for i in *.mov; do ffmpeg -i "$i" "./Transcoded/${i%.*}.mp4"; done -for i in *.mov; do ffmpeg -i "$i" "./Transcoded/${i%.*}.mp4"; done -for i in *.mov; do ffmpeg -i "$i" "./Transcoded/${i%.*}.mp4"; done -file="/home/janis/dotfiles/config/vscode-extensions" -while read line; do vscodium --install-extension "${line}"; done < "${file}" -yay -S vscodium -clear -cp ./dotfiles/config/.bashrc .bashrc -clear -exit -clear -sudo plymouth-set-default-theme -R bgrt -cd dotfiles/ -sudo cp ./config/environment /etc/environment -sudo cp ./config/mkinitcpio.conf /etc/mkinitcpio.conf -sudo cp ./config/pacman.conf /etc/pacman.conf -clear -yay -Syu -clear -hugo -clear -cd /tmp -git clone https://github.com/rtlewis1/GTK/tree/Material-Black-Colors-Desktop -cd Material-Black-Colors-Desktop/ -sudo cp ./Material-Black-Blueberry /usr/share/themes -ls -git clone https://github.com/rtlewis1/GTK -cd gtk -cd GTK -git checkout Material-Black-Colors-Desktop -clear -ls -sudo cp ./Material-Black-Blueberry /usr/share/themes -sudo cp -r ./Material-Black-Blueberry /usr/share/themes -cd /tmp -git clone https://github.com/varlesh/oreo-cursors -cd oreo-cursors/generator -echo "black = #424242" > ./colours.conf -ruby convert.rb -cd .. -make build -sudo make install -ls -sudo make -sudo make build -make build -clear -cat build.sh -make build -clear -yay -S librewolf-bin -exit -file="/home/janis/dotfiles/config/vscode-extensions" -while read line; do vscodium --install-extension "${line}"; done < "${file}" diff --git a/general/.bashrc b/general/.bashrc deleted file mode 100644 index 95b0a32..0000000 --- a/general/.bashrc +++ /dev/null @@ -1,359 +0,0 @@ -# -# ~/.bashrc -# - -# If not running interactively, don't do anything -[[ $- != *i* ]] && return - -export PATH="/home/janis/.local/share/gem/ruby/3.0.0/bin: $PATH" -export PATH="/home/janis/.local/bin: $PATH" -alias editHyprlandConf='nano ~/.config/hypr/hyprland.conf' -alias ls='ls -l --color=auto' -alias ll='ls -la --color=auto' -alias sl='ls --color=auto' -alias start-httpd='sudo systemctl start httpd' -PS1='[\u@\h \W]\$ ' - -################################################################################ -## FUNCTIONS ## -################################################################################ - -## -## ARRANGE $PWD AND STORE IT IN $NEW_PWD -## * The home directory (HOME) is replaced with a ~ -## * The last pwdmaxlen characters of the PWD are displayed -## * Leading partial directory names are striped off -## /home/me/stuff -> ~/stuff (if USER=me) -## /usr/share/big_dir_name -> ../share/big_dir_name (if pwdmaxlen=20) -## -## Original source: WOLFMAN'S color bash promt -## https://wiki.chakralinux.org/index.php?title=Color_Bash_Prompt#Wolfman.27s -## -bash_prompt_command() { - # How many characters of the $PWD should be kept - local pwdmaxlen=25 - - # Indicate that there has been dir truncation - local trunc_symbol=".." - - # Store local dir - local dir=${PWD##*/} - - # Which length to use - pwdmaxlen=$(( ( pwdmaxlen < ${#dir} ) ? ${#dir} : pwdmaxlen )) - - NEW_PWD=${PWD/#$HOME/\~} - - local pwdoffset=$(( ${#NEW_PWD} - pwdmaxlen )) - - # Generate name - if [ ${pwdoffset} -gt "0" ] - then - NEW_PWD=${NEW_PWD:$pwdoffset:$pwdmaxlen} - NEW_PWD=${trunc_symbol}/${NEW_PWD#*/} - fi -} - - - - -## -## GENERATE A FORMAT SEQUENCE -## -format_font() -{ - ## FIRST ARGUMENT TO RETURN FORMAT STRING - local output=$1 - - - case $# in - 2) - eval $output="'\[\033[0;${2}m\]'" - ;; - 3) - eval $output="'\[\033[0;${2};${3}m\]'" - ;; - 4) - eval $output="'\[\033[0;${2};${3};${4}m\]'" - ;; - *) - eval $output="'\[\033[0m\]'" - ;; - esac -} - - - -## -## COLORIZE BASH PROMT -## -bash_prompt() { - - ############################################################################ - ## COLOR CODES ## - ## These can be used in the configuration below ## - ############################################################################ - - ## FONT EFFECT - local NONE='0' - local BOLD='1' - local DIM='2' - local UNDERLINE='4' - local BLINK='5' - local INVERT='7' - local HIDDEN='8' - - - ## COLORS - local DEFAULT='9' - local BLACK='0' - local RED='1' - local GREEN='2' - local YELLOW='3' - local BLUE='4' - local MAGENTA='5' - local CYAN='6' - local L_GRAY='7' - local D_GRAY='60' - local L_RED='61' - local L_GREEN='62' - local L_YELLOW='63' - local L_BLUE='64' - local L_MAGENTA='65' - local L_CYAN='66' - local WHITE='67' - - - ## TYPE - local RESET='0' - local EFFECT='0' - local COLOR='30' - local BG='40' - - - ## 256 COLOR CODES - local NO_FORMAT="\[\033[0m\]" - local ORANGE_BOLD="\[\033[1;38;5;208m\]" - local TOXIC_GREEN_BOLD="\[\033[1;38;5;118m\]" - local RED_BOLD="\[\033[1;38;5;1m\]" - local CYAN_BOLD="\[\033[1;38;5;87m\]" - local BLACK_BOLD="\[\033[1;38;5;0m\]" - local WHITE_BOLD="\[\033[1;38;5;15m\]" - local GRAY_BOLD="\[\033[1;90m\]" - local BLUE_BOLD="\[\033[1;38;5;74m\]" - - - - - - ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## - ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## - ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## - - - - ## CONFIGURE HERE ## - - - - ############################################################################ - ## CONFIGURATION ## - ## Choose your color combination here ## - ############################################################################ - local FONT_COLOR_1=$WHITE - local BACKGROUND_1=$RED - local TEXTEFFECT_1=$BOLD - - local FONT_COLOR_2=$WHITE - local BACKGROUND_2=$YELLOW - local TEXTEFFECT_2=$BOLD - - local FONT_COLOR_3=$D_GRAY - local BACKGROUND_3=$WHITE - local TEXTEFFECT_3=$BOLD - - local PROMT_FORMAT=$BLUE_BOLD - - - ############################################################################ - ## EXAMPLE CONFIGURATIONS ## - ## I use them for different hosts. Test them out ;) ## - ############################################################################ - - ## CONFIGURATION: BLUE-WHITE - if [ "$HOSTNAME" = dell ]; then - FONT_COLOR_1=$WHITE; BACKGROUND_1=$BLUE; TEXTEFFECT_1=$BOLD - FONT_COLOR_2=$WHITE; BACKGROUND_2=$L_BLUE; TEXTEFFECT_2=$BOLD - FONT_COLOR_3=$D_GRAY; BACKGROUND_3=$WHITE; TEXTEFFECT_3=$BOLD - PROMT_FORMAT=$CYAN_BOLD - fi - - ## CONFIGURATION: BLACK-RED - if [ "$HOSTNAME" = giraff6 ]; then - FONT_COLOR_1=$WHITE; BACKGROUND_1=$BLACK; TEXTEFFECT_1=$BOLD - FONT_COLOR_2=$WHITE; BACKGROUND_2=$D_GRAY; TEXTEFFECT_2=$BOLD - FONT_COLOR_3=$WHITE; BACKGROUND_3=$RED; TEXTEFFECT_3=$BOLD - PROMT_FORMAT=$RED_BOLD - fi - - ## CONFIGURATION: RED-BLACK - #FONT_COLOR_1=$WHITE; BACKGROUND_1=$RED; TEXTEFFECT_1=$BOLD - #FONT_COLOR_2=$WHITE; BACKGROUND_2=$D_GRAY; TEXTEFFECT_2=$BOLD - #FONT_COLOR_3=$WHITE; BACKGROUND_3=$BLACK; TEXTEFFECT_3=$BOLD - #PROMT_FORMAT=$RED_BOLD - - ## CONFIGURATION: CYAN-BLUE - if [ "$HOSTNAME" = sharkoon ]; then - FONT_COLOR_1=$BLACK; BACKGROUND_1=$L_CYAN; TEXTEFFECT_1=$BOLD - FONT_COLOR_2=$WHITE; BACKGROUND_2=$L_BLUE; TEXTEFFECT_2=$BOLD - FONT_COLOR_3=$WHITE; BACKGROUND_3=$BLUE; TEXTEFFECT_3=$BOLD - PROMT_FORMAT=$CYAN_BOLD - fi - - ## CONFIGURATION: GRAY-SCALE - if [ "$HOSTNAME" = giraff ]; then - FONT_COLOR_1=$WHITE; BACKGROUND_1=$BLACK; TEXTEFFECT_1=$BOLD - FONT_COLOR_2=$WHITE; BACKGROUND_2=$D_GRAY; TEXTEFFECT_2=$BOLD - FONT_COLOR_3=$WHITE; BACKGROUND_3=$L_GRAY; TEXTEFFECT_3=$BOLD - PROMT_FORMAT=$BLACK_BOLD - fi - - ## CONFIGURATION: GRAY-CYAN - if [ "$HOSTNAME" = light ]; then - FONT_COLOR_1=$WHITE; BACKGROUND_1=$BLACK; TEXTEFFECT_1=$BOLD - FONT_COLOR_2=$WHITE; BACKGROUND_2=$D_GRAY; TEXTEFFECT_2=$BOLD - FONT_COLOR_3=$BLACK; BACKGROUND_3=$L_CYAN; TEXTEFFECT_3=$BOLD - PROMT_FORMAT=$CYAN_BOLD - fi - - - ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## - ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## - ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## - - - - - ############################################################################ - ## TEXT FORMATING ## - ## Generate the text formating according to configuration ## - ############################################################################ - - ## CONVERT CODES: add offset - FC1=$(($FONT_COLOR_1+$COLOR)) - BG1=$(($BACKGROUND_1+$BG)) - FE1=$(($TEXTEFFECT_1+$EFFECT)) - - FC2=$(($FONT_COLOR_2+$COLOR)) - BG2=$(($BACKGROUND_2+$BG)) - FE2=$(($TEXTEFFECT_2+$EFFECT)) - - FC3=$(($FONT_COLOR_3+$COLOR)) - BG3=$(($BACKGROUND_3+$BG)) - FE3=$(($TEXTEFFECT_3+$EFFECT)) - - FC4=$(($FONT_COLOR_4+$COLOR)) - BG4=$(($BACKGROUND_4+$BG)) - FE4=$(($TEXTEFFECT_4+$EFFECT)) - - - ## CALL FORMATING HELPER FUNCTION: effect + font color + BG color - local TEXT_FORMAT_1 - local TEXT_FORMAT_2 - local TEXT_FORMAT_3 - local TEXT_FORMAT_4 - format_font TEXT_FORMAT_1 $FE1 $FC1 $BG1 - format_font TEXT_FORMAT_2 $FE2 $FC2 $BG2 - format_font TEXT_FORMAT_3 $FC3 $FE3 $BG3 - format_font TEXT_FORMAT_4 $FC4 $FE4 $BG4 - - - # GENERATE PROMT SECTIONS - local PROMT_USER=$"$TEXT_FORMAT_1 \u " - local PROMT_HOST=$"$TEXT_FORMAT_2 \h " - local PROMT_PWD=$"$TEXT_FORMAT_3 \${NEW_PWD} " - local PROMT_INPUT=$"$PROMT_FORMAT " - - - ############################################################################ - ## SEPARATOR FORMATING ## - ## Generate the separators between sections ## - ## Uses background colors of the sections ## - ############################################################################ - - ## CONVERT CODES - TSFC1=$(($BACKGROUND_1+$COLOR)) - TSBG1=$(($BACKGROUND_2+$BG)) - - TSFC2=$(($BACKGROUND_2+$COLOR)) - TSBG2=$(($BACKGROUND_3+$BG)) - - TSFC3=$(($BACKGROUND_3+$COLOR)) - TSBG3=$(($DEFAULT+$BG)) - - - ## CALL FORMATING HELPER FUNCTION: effect + font color + BG color - local SEPARATOR_FORMAT_1 - local SEPARATOR_FORMAT_2 - local SEPARATOR_FORMAT_3 - format_font SEPARATOR_FORMAT_1 $TSFC1 $TSBG1 - format_font SEPARATOR_FORMAT_2 $TSFC2 $TSBG2 - format_font SEPARATOR_FORMAT_3 $TSFC3 $TSBG3 - - - # GENERATE SEPARATORS WITH FANCY TRIANGLE - local TRIANGLE=$'\uE0B0' - local SEPARATOR_1=$SEPARATOR_FORMAT_1$TRIANGLE - local SEPARATOR_2=$SEPARATOR_FORMAT_2$TRIANGLE - local SEPARATOR_3=$SEPARATOR_FORMAT_3$TRIANGLE - - - - ############################################################################ - ## WINDOW TITLE ## - ## Prevent messed up terminal-window titles ## - ############################################################################ - case $TERM in - xterm*|rxvt*) - local TITLEBAR='\[\033]0;\u:${NEW_PWD}\007\]' - ;; - *) - local TITLEBAR="" - ;; - esac - - - - ############################################################################ - ## BASH PROMT ## - ## Generate promt and remove format from the rest ## - ############################################################################ - PS1="$TITLEBAR\n${PROMT_USER}${SEPARATOR_1}${PROMT_HOST}${SEPARATOR_2}${PROMT_PWD}${SEPARATOR_3}${PROMT_INPUT}" - - - - ## For terminal line coloring, leaving the rest standard - none="$(tput sgr0)" - trap 'echo -ne "${none}"' DEBUG -} - - - - -################################################################################ -## MAIN ## -################################################################################ - -## Bash provides an environment variable called PROMPT_COMMAND. -## The contents of this variable are executed as a regular Bash command -## just before Bash displays a prompt. -## We want it to call our own command to truncate PWD and store it in NEW_PWD -PROMPT_COMMAND=bash_prompt_command - -## Call bash_promnt only once, then unset it (not needed any more) -## It will set $PS1 with colors and relative to $NEW_PWD, -## which gets updated by $PROMT_COMMAND on behalf of the terminal -bash_prompt -unset bash_prompt - -### EOF ### diff --git a/general/configs/Kvantum/KvAdapta/KvAdapta.kvconfig b/general/configs/Kvantum/KvAdapta/KvAdapta.kvconfig deleted file mode 100644 index a820f58..0000000 --- a/general/configs/Kvantum/KvAdapta/KvAdapta.kvconfig +++ /dev/null @@ -1,536 +0,0 @@ -[%General] -author=Tsu Jan -comment=An uncomplicated theme inspired by the Adapta GTK theme -x11drag=menubar_and_primary_toolbar -alt_mnemonic=true -left_tabs=true -attach_active_tab=false -mirror_doc_tabs=true -group_toolbar_buttons=false -toolbar_item_spacing=0 -toolbar_interior_spacing=2 -spread_progressbar=true -composite=true -menu_shadow_depth=5 -tooltip_shadow_depth=6 -splitter_width=4 -scroll_width=9 -scroll_arrows=false -scroll_min_extent=60 -slider_width=2 -slider_handle_width=18 -slider_handle_length=15 -tickless_slider_handle_size=16 -center_toolbar_handle=true -check_size=14 -textless_progressbar=false -progressbar_thickness=4 -menubar_mouse_tracking=true -toolbutton_style=1 -click_behavior=0 -translucent_windows=false -blurring=false -popup_blurring=false -vertical_spin_indicators=false -spin_button_width=24 -fill_rubberband=false -merge_menubar_with_toolbar=true -small_icon_size=16 -large_icon_size=32 -button_icon_size=16 -toolbar_icon_size=22 -combo_as_lineedit=true -animate_states=true -combo_menu=true -hide_combo_checkboxes=true -combo_focus_rect=false -groupbox_top_label=true -inline_spin_indicators=true -joined_inactive_tabs=true -layout_spacing=6 -layout_margin=9 -scrollbar_in_view=true -transient_scrollbar=true -transient_groove=false -submenu_overlap=0 -tooltip_delay=-1 -tree_branch_line=true -no_window_pattern=false -opaque=kaffeine,kmplayer,subtitlecomposer,kdenlive,vlc,smplayer,smplayer2,avidemux,avidemux2_qt4,avidemux3_qt4,avidemux3_qt5,kamoso,QtCreator,VirtualBox,VirtualBoxVM,trojita,dragon,digikam,lyx -reduce_window_opacity=0 -respect_DE=true -submenu_delay=250 - -[GeneralColors] -window.color=#fafbfc -base.color=white -alt.base.color=#fafafa -button.color=#fafbfc -light.color=white -mid.light.color=#f0f0f0 -dark.color=#c8c8c8 -mid.color=#e1e1e196 -highlight.color=#00bcd4 -inactive.highlight.color=#00bcd4 -text.color=#000000c8 -window.text.color=#000000aa -button.text.color=#000000aa -disabled.text.color=#00000073 -tooltip.text.color=#eefcff -highlight.text.color=white -link.color=#0057AE -link.visited.color=#452886 -progress.indicator.text.color=white - -[Hacks] -transparent_ktitle_label=true -transparent_dolphin_view=false -transparent_pcmanfm_sidepane=true -blur_translucent=false -transparent_menutitle=true -respect_darkness=false -force_size_grip=true -iconless_pushbutton=true -iconless_menu=false -disabled_icon_opacity=100 -lxqtmainmenu_iconsize=22 -normal_default_pushbutton=true -single_top_toolbar=true -tint_on_mouseover=0 -transparent_pcmanfm_view=false -no_selection_tint=true -transparent_arrow_button=true -middle_click_scroll=false - -[PanelButtonCommand] -frame=true -frame.element=button -frame.top=4 -frame.bottom=4 -frame.left=4 -frame.right=4 -interior=true -interior.element=button -indicator.size=9 -text.normal.color=#000000b4 -text.focus.color=black -text.press.color=#000000b4 -text.toggle.color=white -text.shadow=0 -text.margin=1 -text.iconspacing=4 -indicator.element=arrow -text.margin.top=2 -text.margin.bottom=4 -text.margin.left=2 -text.margin.right=2 -min_width=+0.3font -min_height=+0.3font -frame.expansion=14 - -[PanelButtonTool] -inherits=PanelButtonCommand -text.normal.color=#00000096 -text.bold=true - -[ToolbarButton] -frame.element=tbutton -interior.element=tbutton -indicator.element=tarrow -text.normal.color=#ffffffb4 -text.focus.color=white -text.press.color=white -text.toggle.color=white -text.bold=true - -[ToolbarLineEdit] -frame.element=lineedit - -[ToolbarComboBox] -frame.element=combo -indicator.element=flat-arrow-down -text.normal.color=#ffffffb4 -text.focus.color=white -text.press.color=white -text.toggle.color=white -text.bold=true - -[Dock] -inherits=PanelButtonCommand -interior.element=dock -frame.element=dock -frame.top=1 -frame.bottom=1 -frame.left=1 -frame.right=1 -text.normal.color=#000000c8 - -[DockTitle] -inherits=PanelButtonCommand -frame=false -interior=false -text.normal.color=#00000096 -text.focus.color=black -text.bold=true - -[IndicatorSpinBox] -inherits=PanelButtonCommand -frame=true -interior=true -frame.top=2 -frame.bottom=2 -frame.left=2 -frame.right=2 -indicator.element=spin -indicator.size=10 -text.normal.color=#000000c8 -text.margin.top=2 -text.margin.bottom=2 -text.margin.left=2 -text.margin.right=2 - -[RadioButton] -inherits=PanelButtonCommand -frame=false -interior.element=radio -text.normal.color=#000000c8 -text.focus.color=black -min_width=+0.3font -min_height=+0.3font - -[CheckBox] -inherits=PanelButtonCommand -frame=false -interior.element=checkbox -text.normal.color=#000000c8 -text.focus.color=black -min_width=+0.3font -min_height=+0.3font - -[Focus] -inherits=PanelButtonCommand -frame=true -frame.element=focus -frame.top=1 -frame.bottom=1 -frame.left=1 -frame.right=1 -frame.patternsize=20 - -[GenericFrame] -inherits=PanelButtonCommand -frame=true -interior=false -frame.element=common -interior.element=common -frame.top=3 -frame.bottom=3 -frame.left=3 -frame.right=3 - -[LineEdit] -inherits=PanelButtonCommand -frame.element=lineedit -interior.element=lineedit -interior=false -frame.top=2 -frame.bottom=2 -frame.left=2 -frame.right=2 -text.margin.top=2 -text.margin.bottom=2 -text.margin.left=2 -text.margin.right=2 -frame.expansion=0 - -[DropDownButton] -inherits=PanelButtonCommand -indicator.element=arrow-down - -[IndicatorArrow] -indicator.element=arrow -indicator.size=9 - -[ToolboxTab] -inherits=PanelButtonCommand -text.normal.color=#000000c8 -text.press.color=#00000096 -text.focus.color=#007e8c - -[Tab] -inherits=PanelButtonCommand -interior.element=tab -text.margin.left=8 -text.margin.right=8 -text.margin.top=2 -text.margin.bottom=2 -frame.element=tab -indicator.element=tab -frame.top=2 -frame.bottom=2 -frame.left=2 -frame.right=2 -text.normal.color=#0000007d -text.focus.color=#000000b4 -text.toggle.color=#000000c8 -frame.expansion=0 -text.bold=true - -[TabFrame] -inherits=PanelButtonCommand -frame.element=tabframe -interior.element=tabframe -frame.top=2 -frame.bottom=2 -frame.left=2 -frame.right=2 - -[TreeExpander] -inherits=PanelButtonCommand -indicator.size=12 -indicator.element=tree - -[HeaderSection] -inherits=PanelButtonCommand -interior.element=header -frame.element=header -frame.top=1 -frame.bottom=1 -frame.left=1 -frame.right=1 -text.normal.color=#000000aa -text.focus.color=#007e8c -text.press.color=black -text.toggle.color=white -frame.expansion=0 - -[SizeGrip] -indicator.element=resize-grip - -[Toolbar] -inherits=PanelButtonCommand -indicator.element=toolbar -indicator.size=5 -text.margin=0 -interior.element=menubar -frame.element=menubar -text.normal.color=#ffffffa0 -text.focus.color=white -frame.left=0 -frame.right=0 -frame.top=0 -frame.bottom=4 -frame.expansion=0 - -[Slider] -inherits=PanelButtonCommand -frame.element=slider -interior.element=slider -frame.top=3 -frame.bottom=3 -frame.left=3 -frame.right=3 - -[SliderCursor] -inherits=PanelButtonCommand -frame=false -interior.element=slidercursor - -[Progressbar] -inherits=PanelButtonCommand -frame.element=progress -interior.element=progress -text.margin=0 -text.normal.color=#000000c8 -text.focus.color=black -text.press.color=black -text.toggle.color=black -text.bold=true -frame.expansion=8 - -[ProgressbarContents] -inherits=PanelButtonCommand -frame=true -frame.element=progress-pattern -interior.element=progress-pattern - -[ItemView] -inherits=PanelButtonCommand -text.margin=1 -frame.element=itemview -interior.element=itemview -frame.top=2 -frame.bottom=2 -frame.left=2 -frame.right=2 -text.margin.top=0 -text.margin.bottom=0 -text.margin.left=1 -text.margin.right=1 -text.normal.color=#000000c8 -text.focus.color=black -text.press.color=white -text.toggle.color=white -min_width=+0.3font -min_height=+0.3font -frame.expansion=0 - -[Splitter] -indicator.size=48 - -[Scrollbar] -inherits=PanelButtonCommand -indicator.element=arrow -indicator.size=10 - -[ScrollbarSlider] -inherits=PanelButtonCommand -interior.element=scrollbarslider -interior=true -frame=false -indicator.element=grip -indicator.size=13 -frame.expansion=48 - -[ScrollbarGroove] -inherits=PanelButtonCommand -interior=false -frame=false - -[MenuItem] -inherits=PanelButtonCommand -frame=true -frame.element=menuitem -interior.element=menuitem -indicator.element=menuitem -text.normal.color=#000000c8 -text.focus.color=black -text.margin.top=1 -text.margin.bottom=1 -text.margin.left=15 -text.margin.right=5 -frame.top=3 -frame.bottom=3 -frame.left=3 -frame.right=3 -text.bold=false -min_width=+0.3font -min_height=+0.3font -frame.expansion=0 - -[MenuBar] -inherits=PanelButtonCommand -frame.element=menubar -interior.element=menubar -frame.bottom=0 -text.normal.color=#ffffffa0 -frame.expansion=0 - -[MenuBarItem] -inherits=PanelButtonCommand -interior=true -interior.element=menubaritem -frame.element=menubaritem -frame.top=2 -frame.bottom=2 -frame.left=2 -frame.right=2 -text.margin.left=4 -text.margin.right=4 -text.margin.top=0 -text.margin.bottom=0 -text.normal.color=#ffffffb4 -text.focus.color=white -text.bold=false -min_width=+0.3font -min_height=+0.3font -frame.expansion=0 - -[TitleBar] -inherits=PanelButtonCommand -frame=false -text.margin.top=2 -text.margin.bottom=2 -text.margin.left=2 -text.margin.right=2 -interior.element=titlebar -indicator.size=12 -indicator.element=mdi -text.normal.color=#c8c8c8 -text.focus.color=white -text.bold=true -text.italic=true -frame.expansion=0 - -[ComboBox] -inherits=PanelButtonCommand -frame.element=combo -interior.element=combo -interior=false -frame.top=2 -frame.bottom=2 -frame.left=2 -frame.right=2 -text.margin.top=2 -text.margin.bottom=2 -text.margin.left=2 -text.margin.right=2 -text.focus.color=#007e8c -text.press.color=#005a64 -text.toggle.color=black -indicator.element=carrow -frame.expansion=0 - -[Menu] -inherits=PanelButtonCommand -frame.top=1 -frame.bottom=1 -frame.left=1 -frame.right=1 -frame.element=menu -interior.element=menu -text.normal.color=#000000c8 -text.shadow=false -frame.expansion=0 - -[GroupBox] -inherits=GenericFrame -frame=false -text.shadow=0 -text.margin=0 -text.normal.color=#00000096 -text.focus.color=#00bcd4 -text.bold=true -frame.expansion=0 - -[TabBarFrame] -inherits=GenericFrame -frame=true -frame.element=tabBarFrame -interior=false -frame.top=2 -frame.bottom=2 -frame.left=2 -frame.right=2 - -[ToolTip] -inherits=GenericFrame -frame.top=3 -frame.bottom=3 -frame.left=3 -frame.right=3 -interior=true -text.shadow=0 -text.margin=0 -interior.element=tooltip -frame.element=tooltip -frame.expansion=0 - -[StatusBar] -inherits=GenericFrame -frame=false -interior=false - -[Window] -interior=true -interior.element=window diff --git a/general/configs/Kvantum/KvAdapta/KvAdapta.svg b/general/configs/Kvantum/KvAdapta/KvAdapta.svg deleted file mode 100644 index 508a962..0000000 --- a/general/configs/Kvantum/KvAdapta/KvAdapta.svg +++ /dev/null @@ -1,924 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/general/configs/Kvantum/KvArc/KvArc.kvconfig b/general/configs/Kvantum/KvArc/KvArc.kvconfig deleted file mode 100644 index bb6e909..0000000 --- a/general/configs/Kvantum/KvArc/KvArc.kvconfig +++ /dev/null @@ -1,461 +0,0 @@ -[%General] -author=Tsu Jan -comment=A minimalistic theme inspired by the Arc GTK theme -x11drag=menubar_and_primary_toolbar -alt_mnemonic=true -left_tabs=true -attach_active_tab=true -mirror_doc_tabs=true -group_toolbar_buttons=false -toolbar_item_spacing=1 -toolbar_interior_spacing=3 -spread_progressbar=true -composite=true -menu_shadow_depth=7 -menu_separator_height=6 -tooltip_shadow_depth=6 -splitter_width=4 -scroll_width=9 -scroll_arrows=false -scroll_min_extent=60 -slider_width=6 -slider_handle_width=18 -slider_handle_length=18 -center_toolbar_handle=true -check_size=14 -textless_progressbar=false -progressbar_thickness=3font -menubar_mouse_tracking=true -toolbutton_style=1 -click_behavior=0 -translucent_windows=false -blurring=false -popup_blurring=false -vertical_spin_indicators=false -spin_button_width=32 -fill_rubberband=false -merge_menubar_with_toolbar=true -small_icon_size=16 -large_icon_size=32 -button_icon_size=16 -toolbar_icon_size=22 -combo_as_lineedit=true -animate_states=false -combo_menu=true -hide_combo_checkboxes=true -combo_focus_rect=true -groupbox_top_label=true -inline_spin_indicators=false -joined_inactive_tabs=false -layout_spacing=6 -layout_margin=9 -scrollbar_in_view=true -transient_scrollbar=true -transient_groove=true -submenu_overlap=3 -tooltip_delay=-1 -tree_branch_line=true - -[GeneralColors] -window.color=#f5f6f7 -base.color=white -alt.base.color=#f8f8f8 -button.color=#fbfbfc -light.color=white -mid.light.color=#f0f0f0 -dark.color=#c8c8c8 -mid.color=#e1e1e1 -highlight.color=#5294e2 -inactive.highlight.color=#5294e2 -text.color=#000000c8 -window.text.color=#000000c8 -button.text.color=#000000c8 -disabled.text.color=#00000073 -tooltip.text.color=#eefcff -highlight.text.color=white -link.color=#0057AE -link.visited.color=#452886 -progress.indicator.text.color=white - -[Hacks] -transparent_ktitle_label=true -transparent_dolphin_view=false -transparent_pcmanfm_sidepane=true -blur_translucent=false -transparent_menutitle=true -respect_darkness=false -force_size_grip=true -iconless_pushbutton=true -iconless_menu=false -disabled_icon_opacity=100 -lxqtmainmenu_iconsize=22 -normal_default_pushbutton=true -single_top_toolbar=true -tint_on_mouseover=0 -transparent_pcmanfm_view=false - -[PanelButtonCommand] -frame=true -frame.element=button -frame.top=3 -frame.bottom=3 -frame.left=3 -frame.right=3 -interior=true -interior.element=button -indicator.size=9 -text.normal.color=#000000c8 -text.focus.color=black -text.press.color=white -text.toggle.color=white -text.shadow=0 -text.margin=1 -text.iconspacing=4 -indicator.element=arrow -text.margin.top=2 -text.margin.bottom=2 -text.margin.left=2 -text.margin.right=2 -min_width=+0.3font -min_height=+0.3font -frame.expansion=6 - -[PanelButtonTool] -inherits=PanelButtonCommand - -[Dock] -inherits=PanelButtonCommand -interior.element=dock -frame.element=dock -frame.top=1 -frame.bottom=1 -frame.left=1 -frame.right=1 -text.normal.color=#000000c8 - -[DockTitle] -inherits=PanelButtonCommand -frame=false -interior=false -text.normal.color=#00000096 -text.focus.color=black -text.bold=true - -[IndicatorSpinBox] -inherits=PanelButtonCommand -frame=true -interior=true -frame.left=1 -indicator.element=spin -indicator.size=10 -text.normal.color=#000000c8 - -[RadioButton] -inherits=PanelButtonCommand -frame=false -interior.element=radio -text.normal.color=#000000c8 -text.focus.color=black - -[CheckBox] -inherits=PanelButtonCommand -frame=false -interior.element=checkbox -text.normal.color=#000000c8 -text.focus.color=black - -[Focus] -inherits=PanelButtonCommand -frame=true -frame.element=focus -frame.top=1 -frame.bottom=1 -frame.left=1 -frame.right=1 -frame.patternsize=20 - -[GenericFrame] -inherits=PanelButtonCommand -frame=true -interior=false -frame.element=common -interior.element=common -frame.top=3 -frame.bottom=3 -frame.left=3 -frame.right=3 - -[LineEdit] -inherits=PanelButtonCommand -frame.element=lineedit -interior.element=lineedit -text.margin.left=1 -text.margin.right=1 - -[DropDownButton] -inherits=PanelButtonCommand -indicator.element=arrow-down - -[IndicatorArrow] -indicator.element=arrow -indicator.size=9 - -[ToolboxTab] -inherits=PanelButtonCommand -text.normal.color=#000000c8 -text.press.color=#00000096 -text.focus.color=black - -[Tab] -inherits=PanelButtonCommand -interior.element=tab -text.margin.left=8 -text.margin.right=8 -text.margin.top=2 -text.margin.bottom=2 -frame.element=tab -indicator.element=tab -frame.top=4 -frame.bottom=4 -frame.left=4 -frame.right=4 -text.normal.color=#0000007d -text.focus.color=#000000b4 -text.toggle.color=#000000c8 -frame.expansion=0 - -[TabFrame] -inherits=PanelButtonCommand -frame.element=tabframe -interior.element=tabframe -frame.top=4 -frame.bottom=4 -frame.left=4 -frame.right=4 - -[TreeExpander] -inherits=PanelButtonCommand -indicator.size=12 -indicator.element=tree - -[HeaderSection] -inherits=PanelButtonCommand -interior.element=header -frame.element=header -frame.top=3 -frame.bottom=3 -frame.left=1 -frame.right=1 -text.bold=true -text.normal.color=#00000096 -text.focus.color=#4c85cb -text.toggle.color=black -indicator.element=harrow -frame.expansion=0 - -[SizeGrip] -indicator.element=resize-grip - -[Toolbar] -inherits=PanelButtonCommand -indicator.element=toolbar -indicator.size=5 -text.margin=0 -frame=false -interior.element=menubar -frame.element=menubar -text.normal.color=#000000c8 -text.focus.color=black -frame.bottom=0 -frame.expansion=0 - -[Slider] -inherits=PanelButtonCommand -frame.element=slider -interior.element=slider -frame.top=3 -frame.bottom=3 -frame.left=3 -frame.right=3 - -[SliderCursor] -inherits=PanelButtonCommand -frame=false -interior.element=slidercursor - -[Progressbar] -inherits=PanelButtonCommand -frame.element=progress -interior.element=progress -text.margin=0 -text.normal.color=#000000c8 -text.focus.color=black -text.press.color=black -text.toggle.color=black -text.bold=false -frame.expansion=8 - -[ProgressbarContents] -inherits=PanelButtonCommand -frame=true -frame.element=progress-pattern -interior.element=progress-pattern - -[ItemView] -inherits=PanelButtonCommand -text.margin=0 -frame.element=itemview -interior.element=itemview -frame.top=2 -frame.bottom=2 -frame.left=2 -frame.right=2 -text.margin.top=2 -text.margin.bottom=2 -text.margin.left=4 -text.margin.right=4 -text.normal.color=#000000c8 -text.focus.color=black -text.press.color=white -text.toggle.color=white -frame.expansion=0 - -[Splitter] -indicator.size=48 - -[Scrollbar] -inherits=PanelButtonCommand -indicator.element=arrow -indicator.size=10 - -[ScrollbarSlider] -inherits=PanelButtonCommand -frame.element=scrollbarslider -interior=false -frame.left=6 -frame.right=6 -frame.top=6 -frame.bottom=6 -indicator.element=grip -indicator.size=13 -frame.expansion=48 - -[ScrollbarGroove] -inherits=PanelButtonCommand -interior=false -frame=false - -[MenuItem] -inherits=PanelButtonCommand -frame=true -frame.element=menuitem -interior.element=menuitem -indicator.element=menuitem -text.normal.color=#000000c8 -text.focus.color=white -text.margin.top=1 -text.margin.bottom=1 -text.margin.left=15 -text.margin.right=5 -frame.top=3 -frame.bottom=3 -frame.left=3 -frame.right=3 -frame.expansion=0 - -[MenuBar] -inherits=PanelButtonCommand -frame.element=menubar -interior.element=menubar -frame.bottom=0 -frame.expansion=0 - -[MenuBarItem] -inherits=PanelButtonCommand -interior=true -interior.element=menubaritem -frame.element=menubaritem -frame.top=2 -frame.bottom=2 -frame.left=2 -frame.right=2 -text.margin.left=4 -text.margin.right=4 -text.margin.top=0 -text.margin.bottom=0 -text.normal.color=#000000b4 -text.focus.color=white -frame.expansion=0 - -[TitleBar] -inherits=PanelButtonCommand -frame=false -interior.element=titlebar -indicator.size=12 -indicator.element=mdi -text.normal.color=#787878 -text.focus.color=black -text.bold=true -text.italic=true -frame.expansion=0 - -[ComboBox] -inherits=PanelButtonCommand -interior.element=combo -frame.element=combo -text.press.color=#000000c8 -indicator.element=carrow - -[Menu] -inherits=PanelButtonCommand -frame.top=1 -frame.bottom=1 -frame.left=1 -frame.right=1 -frame.element=menu -interior.element=menu -text.normal.color=#000000c8 -text.shadow=false -frame.expansion=0 - -[GroupBox] -inherits=GenericFrame -frame=false -text.shadow=0 -text.margin=0 -text.normal.color=#00000096 -text.focus.color=black -text.bold=true -frame.expansion=0 - -[TabBarFrame] -inherits=GenericFrame -frame=true -frame.element=tabBarFrame -interior=false -frame.top=4 -frame.bottom=4 -frame.left=4 -frame.right=4 - -[ToolTip] -inherits=GenericFrame -frame.top=3 -frame.bottom=3 -frame.left=3 -frame.right=3 -interior=true -text.shadow=0 -text.margin=0 -interior.element=tooltip -frame.element=tooltip -frame.expansion=0 - -[StatusBar] -inherits=GenericFrame -frame=false -interior=false - -[Window] -interior=true -interior.element=window diff --git a/general/configs/Kvantum/KvArc/KvArc.svg b/general/configs/Kvantum/KvArc/KvArc.svg deleted file mode 100644 index 854239c..0000000 --- a/general/configs/Kvantum/KvArc/KvArc.svg +++ /dev/null @@ -1,1042 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/general/configs/Kvantum/KvMojave#/KvMojave#.kvconfig b/general/configs/Kvantum/KvMojave#/KvMojave#.kvconfig deleted file mode 100644 index 609e9f0..0000000 --- a/general/configs/Kvantum/KvMojave#/KvMojave#.kvconfig +++ /dev/null @@ -1,546 +0,0 @@ -[%General] -author=Tsu Jan -comment=A dark theme with translucency similar to the style of macOS Mojave -x11drag=all -alt_mnemonic=true -left_tabs=false -attach_active_tab=false -embedded_tabs=true -mirror_doc_tabs=false -group_toolbar_buttons=true -spread_progressbar=true -composite=true -menu_shadow_depth=7 -menu_blur_radius=2 -spread_menuitems=true -tooltip_shadow_depth=6 -scroll_width=12 -scroll_arrows=false -scroll_min_extent=50 -transient_scrollbar=true -slider_width=6 -slider_handle_width=16 -slider_handle_length=16 -center_toolbar_handle=true -check_size=18 -textless_progressbar=false -progressbar_thickness=6 -menubar_mouse_tracking=true -toolbutton_style=0 -click_behavior=0 -translucent_windows=false -blurring=false -popup_blurring=false -opaque=kaffeine,kmplayer,subtitlecomposer,kdenlive,vlc,smplayer,smplayer2,avidemux,avidemux2_qt4,avidemux3_qt4,avidemux3_qt5,kamoso,QtCreator,VirtualBox,VirtualBoxVM,trojita,dragon,digikam,lyx -vertical_spin_indicators=false -fill_rubberband=false -merge_menubar_with_toolbar=true -small_icon_size=16 -large_icon_size=32 -button_icon_size=16 -toolbar_interior_spacing=2 -toolbar_icon_size=16 -combo_as_lineedit=true -combo_menu=true -combo_focus_rect=true -groupbox_top_label=false -inline_spin_indicators=true -joined_inactive_tabs=true -remove_extra_frames=true -layout_spacing=3 -submenu_overlap=0 -tooltip_delay=-1 -animate_states=true -dark_titlebar=true -hide_combo_checkboxes=false -layout_margin=4 -no_window_pattern=false -reduce_window_opacity=0 -respect_DE=true -scrollbar_in_view=false -spin_button_width=16 -submenu_delay=250 -transient_groove=false -tree_branch_line=false -no_inactiveness=false -reduce_menu_opacity=0 -contrast=1.00 -dialog_button_layout=0 -drag_from_buttons=false -intensity=1.00 -saturation=1.00 -scrollable_menu=true -shadowless_popup=false -tooltip_blur_radius=0 - -[GeneralColors] -window.color=#302f2e -inactive.window.color=#2c2b2a -base.color=#242424cc -inactive.base.color=#1f1f1fcc -alt.base.color=#2d2d2d -inactive.alt.base.color=#282828 -button.color=#3e3e3e -light.color=#5a5a5a -mid.light.color=#555555 -dark.color=#171717 -mid.color=#3c3c3c -highlight.color=#c3c3c6 -inactive.highlight.color=#adadaf -tooltip.base.color=#313237 -text.color=#fafafa -inactive.text.color=#e1e1e1 -window.text.color=#fafafa -inactive.window.text.color=#e1e1e1 -button.text.color=#f5f5f5 -disabled.text.color=#A0A0A0 -tooltip.text.color=#fafafa -highlight.text.color=black -inactive.highlight.text.color=#141414 -link.color=#2EB8E6 -link.visited.color=#FF6666 - -[Hacks] -transparent_ktitle_label=true -transparent_dolphin_view=true -transparent_pcmanfm_sidepane=true -blur_translucent=true -transparent_menutitle=false -respect_darkness=true -force_size_grip=true -iconless_pushbutton=false -iconless_menu=false -disabled_icon_opacity=100 -lxqtmainmenu_iconsize=22 -normal_default_pushbutton=false -single_top_toolbar=false -tint_on_mouseover=0 -middle_click_scroll=false -no_selection_tint=true -transparent_pcmanfm_view=true -transparent_arrow_button=true -blur_only_active_window=false -centered_forms=false -kinetic_scrolling=false -noninteger_translucency=false -style_vertical_toolbars=false - -[PanelButtonCommand] -frame=true -frame.element=button -frame.top=3 -frame.bottom=3 -frame.left=3 -frame.right=3 -interior=true -interior.element=button -indicator.size=11 -text.normal.color=#fdfdfd -text.focus.color=white -text.press.color=#fdfdfd -text.toggle.color=#fdfdfd -text.normal.inactive.color=#ebebeb -text.toggle.inactive.color=#ebebeb -text.shadow=true -text.shadow.color=black -text.shadow.xshift=1 -text.shadow.yshift=1 -text.shadow.depth=1 -text.shadow.alpha=80 -text.margin=1 -text.iconspacing=4 -indicator.element=arrow -text.margin.top=2 -text.margin.bottom=2 -text.margin.left=4 -text.margin.right=4 -frame.expansion=12 -min_width=+4 - -[PanelButtonTool] -inherits=PanelButtonCommand - -[ToolbarButton] -inherits=PanelButtonCommand -frame.element=tbutton -interior.element=tbutton -text.press.color=black -text.toggle.color=black -text.toggle.inactive.color=#191919 -indicator.element=tarrow - -[ToolbarLineEdit] -frame.element=tlineedit -interior.element=tlineedit -indicator.element=carrow - -[Dock] -inherits=PanelButtonCommand -interior.element=dock -frame.element=dock -frame.top=1 -frame.bottom=1 -frame.left=1 -frame.right=1 -indicator.element=dock - -[DockTitle] -inherits=PanelButtonCommand -frame=false -interior=false -text.normal.color=#fafafa -text.focus.color=#fafafa -text.normal.inactive.color=#e1e1e1 -text.bold=true - -[IndicatorSpinBox] -inherits=PanelButtonCommand -indicator.element=arrow -frame.top=3 -frame.bottom=3 -frame.left=3 -frame.right=3 -indicator.size=11 -text.normal.color=#fafafa - -[RadioButton] -inherits=PanelButtonCommand -frame=false -interior.element=radio -text.normal.color=#fafafa -text.focus.color=#9bccff -text.press.color=#fdfdfd -text.toggle.color=#fafafa -text.normal.inactive.color=#e1e1e1 -text.toggle.inactive.color=#e1e1e1 - -[CheckBox] -inherits=PanelButtonCommand -frame=false -interior.element=checkbox -text.normal.color=#fafafa -text.focus.color=#9bccff -text.press.color=#fdfdfd -text.toggle.color=#fafafa -text.normal.inactive.color=#e1e1e1 -text.toggle.inactive.color=#e1e1e1 - -[GenericFrame] -inherits=PanelButtonCommand -frame=true -interior=false -frame.element=common -interior.element=common -frame.top=3 -frame.bottom=3 -frame.left=3 -frame.right=3 - -[LineEdit] -inherits=PanelButtonCommand -frame.element=le -interior.element=le -frame.expandedElement=lineedit -interior.expandedElement=lineedit -text.margin.left=2 -text.margin.right=2 -text.margin.top=2 -text.margin.bottom=2 -indicator.element=larrow - -[DropDownButton] -inherits=PanelButtonCommand -indicator.element=arrow-down - -[IndicatorArrow] -indicator.element=arrow -indicator.size=11 - -[ToolboxTab] -inherits=PanelButtonCommand -text.normal.color=#fafafa -text.press.color=#fafafa -text.focus.color=#9bccff -text.normal.inactive.color=#e1e1e1 -text.press.inactive.color=#e1e1e1 -text.boldness=2 - -[Tab] -inherits=PanelButtonCommand -interior.element=button -text.margin.left=6 -text.margin.right=6 -text.margin.top=2 -text.margin.bottom=2 -frame.element=button -focusFrame=true -indicator.element=tab -indicator.size=14 -text.normal.color=#fafafa -text.focus.color=#fafafa -text.toggle.color=#fafafa -text.normal.inactive.color=#e1e1e1 -text.toggle.inactive.color=#e1e1e1 -text.bold=true -text.boldness=2 -min_width=+0.2font - -[TabFrame] -inherits=PanelButtonCommand -frame=true -frame.element=tframe -frame.top=4 -frame.bottom=4 -frame.left=4 -frame.right=4 -interior=true -interior.element=tframe - -[TreeExpander] -inherits=PanelButtonCommand -frame=false -interior=false -indicator.size=12 -indicator.element=arrow - -[HeaderSection] -inherits=PanelButtonCommand -frame.top=2 -frame.bottom=2 -frame.left=2 -frame.right=2 -text.margin.top=2 -text.margin.bottom=2 -text.margin.left=2 -text.margin.right=2 - -[SizeGrip] -indicator.element=resize-grip - -[Toolbar] -inherits=PanelButtonCommand -indicator.element=toolbar -indicator.size=5 -text.margin=0 -interior.element=menubar -frame.element=menubar -text.normal.color=#fafafa -text.focus.color=#fafafa -text.normal.inactive.color=#e1e1e1 -frame.top=0 -frame.bottom=3 -frame.expansion=0 - -[Slider] -inherits=PanelButtonCommand -frame.element=slider -interior.element=slider -frame.top=3 -frame.bottom=3 -frame.left=3 -frame.right=3 -focusFrame=true - -[SliderCursor] -inherits=PanelButtonCommand -frame=false -interior.element=slidercursor - -[Progressbar] -inherits=PanelButtonCommand -frame.element=progress -frame.top=3 -frame.bottom=3 -frame.left=3 -frame.right=3 -interior.element=progress -text.margin=0 -text.normal.color=#fafafa -text.focus.color=#fafafa -text.press.color=#fafafa -text.toggle.color=#fafafa -text.normal.inactive.color=#e1e1e1 -text.toggle.inactive.color=#e1e1e1 -text.bold=true - -[ProgressbarContents] -inherits=PanelButtonCommand -frame=true -frame.element=progress-pattern -frame.top=3 -frame.bottom=3 -frame.left=3 -frame.right=3 -interior.element=progress-pattern - -[ItemView] -inherits=PanelButtonCommand -text.margin=true -frame.element=itemview -interior.element=itemview -frame.top=2 -frame.bottom=2 -frame.left=2 -frame.right=2 -text.margin.top=0 -text.margin.bottom=0 -text.margin.left=2 -text.margin.right=2 -text.normal.color=#fafafa -text.focus.color=#fafafa -text.press.color=black -text.toggle.color=black -text.normal.inactive.color=#e1e1e1 -text.toggle.inactive.color=#191919 -frame.expansion=0 - -[Splitter] -indicator.size=32 - -[Scrollbar] -inherits=PanelButtonCommand -indicator.element=arrow -indicator.size=11 - -[ScrollbarSlider] -inherits=PanelButtonCommand -frame.element=scrollbarslider -interior=false -frame.left=6 -frame.right=6 -frame.top=6 -frame.bottom=6 -indicator.element=grip -indicator.size=13 -frame.expansion=0 - -[ScrollbarGroove] -inherits=PanelButtonCommand -interior=false -frame=false - -[MenuItem] -inherits=PanelButtonCommand -frame=true -frame.element=menuitem -interior.element=menuitem -indicator.element=menuitem -text.normal.color=#fafafa -text.focus.color=white -text.margin.top=0 -text.margin.bottom=0 -text.margin.left=2 -text.margin.right=2 -frame.top=3 -frame.bottom=3 -frame.left=6 -frame.right=6 -text.shadow.alpha=80 -frame.expansion=0 - -[MenuBar] -inherits=PanelButtonCommand -frame.element=menubar -interior.element=menubar -frame.expansion=0 - -[MenuBarItem] -inherits=PanelButtonCommand -interior=true -frame=false -interior.element=menubaritem -frame.element=menubaritem -frame.top=3 -frame.bottom=2 -frame.left=2 -frame.right=2 -text.margin.left=4 -text.margin.right=4 -text.margin.top=3 -text.margin.bottom=3 -text.normal.color=#fafafa -text.focus.color=#fafafa -text.normal.inactive.color=#e1e1e1 -text.shadow=false -frame.expansion=0 - -[TitleBar] -inherits=PanelButtonCommand -frame=false -interior.element=titlebar -indicator.size=12 -indicator.element=mdi -text.normal.color=#969696 -text.focus.color=#fafafa -text.bold=true -text.italic=true -frame.expansion=0 - -[ComboBox] -inherits=PanelButtonCommand -indicator.element=carrow - -[Menu] -inherits=PanelButtonCommand -frame.top=3 -frame.bottom=3 -frame.left=3 -frame.right=3 -frame.element=menu -interior.element=menu -text.normal.color=#fafafa -frame.expansion=0 - -[GroupBox] -inherits=GenericFrame -frame=true -frame.element=group -text.shadow=0 -text.margin=0 -frame.top=4 -frame.bottom=4 -frame.left=4 -frame.right=4 -text.normal.color=#fafafa -text.press.color=#fafafa -text.focus.color=#9bccff -text.normal.inactive.color=#e1e1e1 -text.toggle.inactive.color=#e1e1e1 -text.bold=true -text.boldness=2 -frame.expansion=0 - -[TabBarFrame] -inherits=GenericFrame -frame=false -interior=false -text.shadow=0 - -[ToolTip] -inherits=GenericFrame -frame.top=6 -frame.bottom=6 -frame.left=6 -frame.right=6 -interior=true -text.shadow=0 -text.margin=0 -interior.element=tooltip -frame.element=tooltip -frame.expansion=0 - -[StatusBar] -inherits=GenericFrame -frame=false -interior=false - -[Window] -interior=true -interior.element=window - -[Dialog] -interior=true -interior.element=dialog - -[Focus] -frame=true diff --git a/general/configs/Kvantum/KvSimplicity/KvSimplicity.kvconfig b/general/configs/Kvantum/KvSimplicity/KvSimplicity.kvconfig deleted file mode 100644 index 3928a29..0000000 --- a/general/configs/Kvantum/KvSimplicity/KvSimplicity.kvconfig +++ /dev/null @@ -1,425 +0,0 @@ -[%General] -author=Tsu Jan -comment=A light theme with an emphasis on elegant simplicity -x11drag=true -alt_mnemonic=true -left_tabs=false -attach_active_tab=false -embedded_tabs=true -mirror_doc_tabs=false -group_toolbar_buttons=true -spread_progressbar=true -composite=true -menu_shadow_depth=7 -menu_blur_radius=2 -spread_menuitems=true -tooltip_shadow_depth=6 -tooltip_blur_radius=2 -scroll_width=12 -scroll_arrows=false -scroll_min_extent=50 -transient_scrollbar=true -transient_groove=true -slider_width=6 -slider_handle_width=18 -slider_handle_length=18 -center_toolbar_handle=true -check_size=16 -textless_progressbar=false -progressbar_thickness=8 -menubar_mouse_tracking=true -toolbutton_style=0 -click_behavior=0 -translucent_windows=false -blurring=false -popup_blurring=true -opaque=kaffeine,kmplayer,subtitlecomposer,kdenlive,vlc,smplayer,smplayer2,avidemux,avidemux2_qt4,avidemux3_qt4,avidemux3_qt5,kamoso,QtCreator,VirtualBox,VirtualBoxVM,trojita,dragon,digikam,lyx -vertical_spin_indicators=false -fill_rubberband=false -merge_menubar_with_toolbar=true -small_icon_size=16 -large_icon_size=32 -button_icon_size=16 -toolbar_icon_size=16 -combo_as_lineedit=true -combo_menu=true -combo_focus_rect=true -inline_spin_indicators=true -remove_extra_frames=true -animate_states=true - -[GeneralColors] -window.color=#F0F0F0 -base.color=#FAFAFA -alt.base.color=#F0F0F0 -button.color=#F0F0F0 -light.color=white -mid.light.color=#ECECEC -dark.color=#B4B4B4 -mid.color=#D9D9D9 -highlight.color=#3176bf -inactive.highlight.color=#828282 -text.color=black -window.text.color=black -button.text.color=black -disabled.text.color=#00000073 -tooltip.text.color=white -highlight.text.color=white -link.color=#0057AE -link.visited.color=#452886 -progress.indicator.text.color=white - -[Hacks] -transparent_ktitle_label=true -transparent_dolphin_view=false -transparent_pcmanfm_sidepane=true -blur_translucent=true -transparent_menutitle=true -respect_darkness=false -force_size_grip=true -iconless_pushbutton=false -iconless_menu=false -transparent_arrow_button=true -lxqtmainmenu_iconsize=22 -single_top_toolbar=true -no_selection_tint=true - -[PanelButtonCommand] -frame=true -frame.element=button -frame.top=3 -frame.bottom=3 -frame.left=3 -frame.right=3 -interior=true -interior.element=button -indicator.size=10 -text.normal.color=black -text.focus.color=#0052aa -text.press.color=black -text.toggle.color=white -text.shadow=0 -text.margin=1 -text.iconspacing=4 -indicator.element=arrow -text.margin.top=2 -text.margin.bottom=2 -text.margin.left=3 -text.margin.right=3 -frame.expansion=10 - -[PanelButtonTool] -inherits=PanelButtonCommand - -[Dock] -inherits=PanelButtonCommand -interior.element=dock -frame.element=dock -frame.top=1 -frame.bottom=1 -frame.left=1 -frame.right=1 -text.normal.color=black - -[DockTitle] -inherits=PanelButtonCommand -frame=false -interior=false -text.normal.color=black -text.focus.color=#0052aa -text.bold=true - -[IndicatorSpinBox] -inherits=PanelButtonCommand -indicator.element=arrow -frame.top=3 -frame.bottom=3 -frame.left=3 -frame.right=3 -indicator.size=10 -text.normal.color=black - -[RadioButton] -inherits=PanelButtonCommand -frame=false -interior.element=radio -text.normal.color=black -text.focus.color=#0052aa - -[CheckBox] -inherits=PanelButtonCommand -frame=false -interior.element=checkbox -text.normal.color=black -text.focus.color=#0052aa - -[GenericFrame] -inherits=PanelButtonCommand -frame=true -interior=false -frame.element=common -interior.element=common -frame.top=4 -frame.bottom=4 -frame.left=4 -frame.right=4 - -[LineEdit] -inherits=PanelButtonCommand -frame.element=lineedit -interior.element=lineedit -text.margin.left=1 -text.margin.right=1 - -[DropDownButton] -inherits=PanelButtonCommand -indicator.element=arrow-down - -[IndicatorArrow] -indicator.element=arrow -indicator.size=10 - -[ToolboxTab] -inherits=PanelButtonCommand -text.normal.color=black -text.press.color=black -text.focus.color=#0052aa - -[Tab] -inherits=PanelButtonCommand -interior.element=button -text.margin.left=6 -text.margin.right=6 -text.margin.top=3 -text.margin.bottom=3 -frame.element=button -focusFrame=true -indicator.element=tab -indicator.size=12 -text.normal.color=black -text.focus.color=#0052aa -min_width=4font -min_height=1.4font - -[TabFrame] -inherits=PanelButtonCommand -frame.element=tabframe -interior=false -frame.top=4 -frame.bottom=4 -frame.left=4 -frame.right=4 - -[TreeExpander] -inherits=PanelButtonCommand -frame=false -interior=false -indicator.size=10 -indicator.element=arrow - -[HeaderSection] -inherits=PanelButtonCommand - -[SizeGrip] -indicator.element=resize-grip - -[Toolbar] -inherits=PanelButtonCommand -indicator.element=toolbar -indicator.size=5 -text.margin=0 -interior.element=menubar -frame.element=menubar -text.normal.color=black -text.focus.color=#0052aa -frame.top=0 -frame.bottom=5 -frame.expansion=0 - -[Slider] -inherits=PanelButtonCommand -frame.element=slider -interior.element=slider -frame.top=3 -frame.bottom=3 -frame.left=3 -frame.right=3 - -[SliderCursor] -inherits=PanelButtonCommand -frame=false -interior.element=slidercursor - -[Progressbar] -inherits=PanelButtonCommand -frame.element=progress -frame.expandedElement=eprogress -interior.element=progress -text.margin=0 -text.normal.color=black -text.focus.color=black -text.press.color=black -text.toggle.color=black -text.bold=true -frame.expansion=10 - -[ProgressbarContents] -inherits=PanelButtonCommand -frame=true -frame.element=progress-pattern -frame.expandedElement=eprogress-pattern -interior.element=progress-pattern - -[ItemView] -inherits=PanelButtonCommand -text.margin=true -frame.element=itemview -interior.element=itemview -frame.top=2 -frame.bottom=2 -frame.left=2 -frame.right=2 -text.margin.top=0 -text.margin.bottom=0 -text.margin.left=2 -text.margin.right=2 -text.normal.color=black -text.focus.color=#0052aa -text.press.color=white -text.toggle.color=white -frame.expansion=6 - -[Splitter] -indicator.size=32 - -[Scrollbar] -inherits=PanelButtonCommand -indicator.element=arrow -indicator.size=10 - -[ScrollbarSlider] -inherits=PanelButtonCommand -frame.element=scrollbarslider -interior=false -frame.left=6 -frame.right=6 -frame.top=6 -frame.bottom=6 -indicator.element=grip -indicator.size=13 -frame.expansion=0 - -[ScrollbarGroove] -inherits=PanelButtonCommand -interior=false -frame=false - -[MenuItem] -inherits=PanelButtonCommand -frame=true -frame.element=menuitem -interior.element=menuitem -indicator.element=menuitem -text.normal.color=black -text.focus.color=white -text.margin.top=0 -text.margin.bottom=0 -text.margin.left=3 -text.margin.right=3 -frame.top=3 -frame.bottom=3 -frame.left=3 -frame.right=3 -frame.expansion=0 - -[MenuBar] -inherits=PanelButtonCommand -frame.element=none -interior.element=none -frame.expansion=0 - -[MenuBarItem] -inherits=PanelButtonCommand -interior=false -frame.element=menubaritem -frame.top=0 -frame.bottom=2 -frame.left=2 -frame.right=2 -text.margin.left=1 -text.margin.right=4 -text.margin.top=2 -text.normal.color=black -text.focus.color=#0052aa -frame.expansion=0 - -[TitleBar] -inherits=PanelButtonCommand -frame=false -interior.element=titlebar -indicator.size=12 -indicator.element=mdi -text.normal.color=#787878 -text.focus.color=black -text.bold=true -text.italic=true -frame.expansion=0 - -[ComboBox] -inherits=PanelButtonCommand - -[Menu] -inherits=PanelButtonCommand -frame.top=3 -frame.bottom=3 -frame.left=3 -frame.right=3 -frame.element=menu -interior.element=menu -text.normal.color=black -frame.expansion=0 - -[GroupBox] -inherits=GenericFrame -frame=true -frame.element=group -text.shadow=0 -text.margin=0 -frame.top=4 -frame.bottom=4 -frame.left=4 -frame.right=4 -text.normal.color=black -text.press.color=black -text.focus.color=#0052aa -text.bold=true -frame.expansion=0 - -[TabBarFrame] -inherits=GenericFrame -frame=false -interior=false -text.shadow=0 - -[ToolTip] -inherits=GenericFrame -frame.top=3 -frame.bottom=3 -frame.left=3 -frame.right=3 -interior=true -text.shadow=0 -text.margin=0 -interior.element=tooltip -frame.element=tooltip -frame.expansion=0 - -[StatusBar] -inherits=GenericFrame -frame=false -interior=false - -[Window] -interior=true -interior.element=window -min_height=16font diff --git a/general/configs/Kvantum/KvSimplicity/KvSimplicity.svg b/general/configs/Kvantum/KvSimplicity/KvSimplicity.svg deleted file mode 100644 index ac81cb8..0000000 --- a/general/configs/Kvantum/KvSimplicity/KvSimplicity.svg +++ /dev/null @@ -1,978 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/general/configs/Kvantum/kvantum.kvconfig b/general/configs/Kvantum/kvantum.kvconfig deleted file mode 100644 index 48b2498..0000000 --- a/general/configs/Kvantum/kvantum.kvconfig +++ /dev/null @@ -1,2 +0,0 @@ -[General] -theme=KvAdaptaDark diff --git a/general/configs/VSCodium/User/keybindings.json b/general/configs/VSCodium/User/keybindings.json deleted file mode 100755 index 23ca3db..0000000 --- a/general/configs/VSCodium/User/keybindings.json +++ /dev/null @@ -1 +0,0 @@ -// Empty \ No newline at end of file diff --git a/general/configs/VSCodium/User/settings.json b/general/configs/VSCodium/User/settings.json deleted file mode 100644 index b859cb5..0000000 --- a/general/configs/VSCodium/User/settings.json +++ /dev/null @@ -1,73 +0,0 @@ -{ - "workbench.colorTheme": "Community Material Theme Darker High Contrast", - "workbench.iconTheme": "eq-material-theme-icons-darker", - "editor.fontFamily": "Source Code Pro, FluentSystemIcons-Regular", - "python.languageServer": "Jedi", - "python.devOptions": ["DEBUG_ON_STARTUP"], - "python.analysis.logLevel": "Trace", - "git.enableSmartCommit": true, - "git.autofetch": true, - "ltex.language": "en-GB", - "[latex]": { - "editor.defaultFormatter": "James-Yu.latex-workshop" - }, - "latex-workshop.latex.tools": [ - { - "name": "latexmk", - "command": "latexmk", - "args": [ - "-synctex=1", - "-interaction=nonstopmode", - "-file-line-error", - "--shell-escape", - "-pdf", - "%DOC%" - ] - }, - { - "name": "pdflatex", - "command": "pdflatex", - "args": [ - "--shell-escape", - "-synctex=1", - "-interaction=nonstopmode", - "-file-line-error", - "%DOC%" - ] - }, - { - "name": "bibtex", - "command": "bibtex", - "args": [ - "%DOCFILE%" - ], - "env": {} - } - ], - "[vue]": { - "editor.defaultFormatter": "Vue.volar" - }, - "redhat.telemetry.enabled": false, - "editor.defaultFormatter": "vscode.typescript-language-features", - "[html]": { - "editor.defaultFormatter": "vscode.html-language-features" - }, - "cSpell.userWords": [ - "fulfillable", - "libreǝvent", - "unsatisfiable" - ], - "[java]": { - "editor.defaultFormatter": "redhat.java" - }, - "[xml]": { - "editor.defaultFormatter": "redhat.vscode-xml" - }, - "cSpell.language": "en-GB", - "git.openRepositoryInParentFolders": "never", - "[lua]": { - "editor.defaultFormatter": "yinfei.luahelper" - }, - "diffEditor.ignoreTrimWhitespace": false, - -} \ No newline at end of file diff --git a/general/configs/VSCodium/User/snippets/docSetup.code-snippets b/general/configs/VSCodium/User/snippets/docSetup.code-snippets deleted file mode 100755 index f818959..0000000 --- a/general/configs/VSCodium/User/snippets/docSetup.code-snippets +++ /dev/null @@ -1,22 +0,0 @@ -{ - // Place your global snippets here. Each snippet is defined under a snippet name and has a scope, prefix, body and - // description. Add comma separated ids of the languages where the snippet is applicable in the scope field. If scope - // is left empty or omitted, the snippet gets applied to all languages. The prefix is what is - // used to trigger the snippet and the body will be expanded and inserted. Possible variables are: - // $1, $2 for tab stops, $0 for the final cursor position, and ${1:label}, ${2:another} for placeholders. - // Placeholders with the same ids are connected. - // Example: - // "Print to console": { - // "scope": "javascript,typescript", - // "prefix": "log", - // "body": [ - // "console.log('$1');", - // "$2" - // ], - // "description": "Log output to console" - // } - "docTitle": { - "prefix": "prepareDoc", - "body": "$BLOCK_COMMENT_START\n*\t\t\t\t$WORKSPACE_NAME - $TM_FILENAME\n*\n*\tCreated by Janis Hutz $CURRENT_MONTH/$CURRENT_DATE/$CURRENT_YEAR, Licensed under ${1|the GPL V3,the MIT,a proprietary,the BSD,the LGPL V3,the Apache|} License\n*\t\t\thttps://janishutz.com, development@janishutz.com\n*\n*\n$BLOCK_COMMENT_END" - } -} \ No newline at end of file diff --git a/general/configs/VSCodium/User/snippets/html.json b/general/configs/VSCodium/User/snippets/html.json deleted file mode 100755 index adcf69c..0000000 --- a/general/configs/VSCodium/User/snippets/html.json +++ /dev/null @@ -1,58 +0,0 @@ -{ - // Place your snippets for html here. Each snippet is defined under a snippet name and has a prefix, body and - // description. The prefix is what is used to trigger the snippet and the body will be expanded and inserted. Possible variables are: - // $1, $2 for tab stops, $0 for the final cursor position, and ${1:label}, ${2:another} for placeholders. Placeholders with the - // same ids are connected. - // Example: - // "Print to console": { - // "prefix": "log", - // "body": [ - // "console.log('$1');", - // "$2" - // ], - // "description": "Log output to console" - // } - "impress": { - "prefix": "impress", - "body": [ - "", - "", - "\t\n\t\t$1\n\t\t\n\t", - "\t", - "\t\t
\n\t\t\t

Your browser doesn't support the features required by impress.js, so you are presented with a simplified version of this presentation.

\n\t\t\t

For the best experience please use the latest Chrome, Safari or Firefox browser.

\n\t\t
", - "\t\t
", - "\t\t\t
\n\t\t\t\t
", - "\t\t\t\t\t

$2

\n\t\t\t\t
", - "\t\t\t
\n\t\t
", - "\n\t\t\n\t", - "" - ] - }, - "impress-step": { - "prefix": "impressStep", - "body": [ - "\n
", - "\t
", - "\t\t

$2

\n\t
", - "
\n" - ] - }, - "html-basic": { - "prefix": "basic", - "body": [ - "", - "", - "\t\n\t\t$1\n\t\t\n\t\t\n\t\t\n\t", - "\t\n\t\t

$3

", - "\t\n" - ] - }, - "impress-notes": { - "prefix": "impressNotes", - "body": "
\n\t$1\n
" - }, - "impress-substep": { - "prefix": "impressSubstep", - "body": "
\n\t$1\n
" - } -} \ No newline at end of file diff --git a/general/configs/VSCodium/User/snippets/javascript.json b/general/configs/VSCodium/User/snippets/javascript.json deleted file mode 100755 index 4577ae3..0000000 --- a/general/configs/VSCodium/User/snippets/javascript.json +++ /dev/null @@ -1,106 +0,0 @@ -{ - // Place your snippets for javascript here. Each snippet is defined under a snippet name and has a prefix, body and - // description. The prefix is what is used to trigger the snippet and the body will be expanded and inserted. Possible variables are: - // $1, $2 for tab stops, $0 for the final cursor position, and ${1:label}, ${2:another} for placeholders. Placeholders with the - // same ids are connected. - // Example: - // "Print to console": { - // "prefix": "log", - // "body": [ - // "console.log('$1');", - // "$2" - // ], - // "description": "Log output to console" - // } - "JS-Class": { - "prefix": "jsSetupClass", - "body": "class $1 { \n\tconstructor () {} \n\n \t$2 () {\n\t$3\n\t}\n}", - "description": "Setup the basic structure of a class in JS" - }, - "ExpressJS": { - "prefix": "jsExpressSetup", - "body": [ - "const express = require( 'express' );", - "let app = express();", - "const path = require( 'path' );", - "const expressSession = require( 'express-session' );", - "const fs = require( 'fs' );", - "const bodyParser = require( 'body-parser' );", - "const cookieParser = require( 'cookie-parser' )", - "const favicon = require( 'serve-favicon' );", - "\napp.use( expressSession ( {\n\tsecret: $1,\n\tresave: true,\n\tsaveUninitialized: true\n} ) );", - "app.use( bodyParser.urlencoded( { extended: false } ) );", - "app.use( bodyParser.json() );", - "app.use( cookieParser() );", - "app.use( favicon( path.join( __dirname + '$2' ) ) );\n", - "app.use( ( request, response, next ) => {\n\tresponse.sendFile( path.join( __dirname + '$3' ) ) \n} );", - "\n\napp.get( '/', ( request, response ) => {\n$4\n} );", - "\n\nconst PORT = process.env.PORT || 8080;", - "http.createServer( app ).listen( PORT );" - ] - }, - "ExpressJS-Route": { - "prefix": "jsEjsRoute", - "body": "\n\napp.get( '$1', ( request, response ) => {\n$4\n} );" - }, - "JSAsync": { - "prefix": "jsAsync", - "body": "(async () => {\n$1\n} ) ();" - }, - "JSpromiseReturnFunc": { - "prefix": "jsPromise", - "body": "function $1 () {\n\treturn new Promise( ( resolve, reject ) => {\n\t$2\n\t} );\n}" - }, - "fetch from other url": { - "prefix": "remoteURL", - "body": [ - "localStorage.getItem( 'url' ) + '/$1'", - ], - "description": "remote URL fetching (get from base address from local storage)" - }, - "fetch post": { - "prefix": "fetchPost", - "body": [ - "const fetchOptions = {", - "\tmethod: 'post',", - "\tbody: JSON.stringify( $1 ),", - "\tcredentials: 'include',", - "\theaders: {", - "\t\t'Content-Type': 'application/json',", - "\t\t'charset': 'utf-8'", - "\t}", - "};", - "fetch( $2, fetchOptions ).then( res => {", - "\tif ( res.status === 200 ) {", - "\t\tres.json().then( json => {", - "\t\t\t$3", - "\t\t} );", - "\t}", - "} );", - "$4" - ], - "description": "POST request using fetch" - }, - "fetch get": { - "prefix": "fetchGet", - "body": [ - "fetch( $2, { credentials: 'include' } ).then( res => {", - "\tif ( res.status === 200 ) {", - "\t\tres.json().then( json => {", - "\t\t\t$3", - "\t\t} );", - "\t}", - "} );", - "$4" - ], - "description": "POST request using fetch" - }, - "promise": { - "prefix": "promise", - "body": [ - "return new Promise( ( resolve, reject ) => {", - "\t", - "} );" - ] - } -} \ No newline at end of file diff --git a/general/configs/VSCodium/User/snippets/latex.json b/general/configs/VSCodium/User/snippets/latex.json deleted file mode 100644 index 772352b..0000000 --- a/general/configs/VSCodium/User/snippets/latex.json +++ /dev/null @@ -1,361 +0,0 @@ -{ - // Place your snippets for latex here. Each snippet is defined under a snippet name and has a prefix, body and - // description. The prefix is what is used to trigger the snippet and the body will be expanded and inserted. Possible variables are: - // $1, $2 for tab stops, $0 for the final cursor position, and ${1:label}, ${2:another} for placeholders. Placeholders with the - // same ids are connected. - // Example: - // "Print to console": { - // "prefix": "log", - // "body": [ - // "console.log('$1');", - // "$2" - // ], - // "description": "Log output to console" - // } - // Place your snippets for tex here. Each snippet is defined under a snippet name and has a prefix, body and - // description. The prefix is what is used to trigger the snippet and the body will be expanded and inserted. Possible variables are: - // $1, $2 for tab stops, $0 for the final cursor position, and ${1:label}, ${2:another} for placeholders. Placeholders with the - // same ids are connected. - // Example: - // "Print to console": { - // "prefix": "log", - // "body": [ - // "console.log('$1');", - // "$2" - // ], - // "description": "Log output to console" - // } - "Formula (old)": { - "prefix": "formulaBare", - "body": [ - "\\begin{tcolorbox}[colback=red!5!white,colframe=red!75!black,title=Formula: $1]", - "\t$2", - "\\end{tcolorbox}", - ], - "description": "Red tcolorbox to provide a formula (without the default setup)" - }, - "Prepare Latex doc (old)": { - "prefix": "LaTeX-Prepare-Old", - "body": [ - "\\documentclass{article}\n", - "% Imports %", - "\\usepackage{amsmath}", - "\\usepackage{graphicx}", - "\\usepackage{subcaption}", - "\\usepackage[export]{adjustbox}", - "\\usepackage{tcolorbox}", - "\\usepackage{xcolor}", - "\\usepackage{cancel}", - "\\usepackage{dsfont}", - "\\usepackage{amssymb}", - "\\usepackage[a4paper]{geometry}", - "\\usepackage{parskip}\n", - "% Setup %", - "\\title{\\Huge \\textbf{$1}}", - "\\author{Janis Hutz}\n", - "% Configuring %", - "\\addtolength{\\oddsidemargin}{-0.75in}", - "\\addtolength{\\textwidth}{1.5in}", - "\\addtolength{\\evensidemargin}{-0.75in}", - "\\addtolength{\\topmargin}{-1in}", - "\\addtolength{\\textheight}{2in}\n", - "% Main doc %", - "\\begin{document}", - "\\maketitle", - "$2", - "\\end{document}", - ], - "description": "Prepare a LaTeX Document with all relevant imports" - }, - "prepare LaTeX Document (New)": { - "prefix": "latex-prepare", - "body": [ - "\\documentclass{article}\n", - "\\input{~/projects/generalSchool/helpers.tex}\n", - "\\setup{$1}\n", - "\\begin{document}", - "\\maketitle", - "\\pagestyle{fancy}", - "\\thispagestyle{fancy}\n\n", - "$2\n\n", - "\\end{document}" - ], - "description": "Prepares a full LaTeX Document for use and compiling" - }, - "Fancy table": { - "prefix": "table", - "body": [ - "\\begin{tabular}[h!]{|$1|}", - "\t\\hline", - "\t\\rowcolor{$2}\\multicolumn{$3}{|c|}{$4}\\", - "\t\\hline", - "\t$5\\\\\\", - "\t\\hline", - "\\end{tabular}" - ], - "description": "Inserts a tcolorbox to provide a formula (red)" - }, - "Formula (new)": { - "prefix": "formula", - "body": [ - "\\begin{formula}[]{$1}", - "\t$2", - "\\end{formula}" - ], - "description": "Inserts a tcolorbox to provide a formula (red)" - }, - "Definition (new)": { - "prefix": "definition", - "body": [ - "\\begin{definition}[]{$1}", - "\t$2", - "\\end{definition}" - ], - "description": "Inserts a tcolorbox to provide a definition (blue)" - }, - "Recall (new)": { - "prefix": "recall", - "body": [ - "\\begin{recall}[]{$1}", - "\t$2", - "\\end{recall}" - ], - "description": "Inserts a tcolorbox to provide a recall / revision of previous knowledge (yellow)" - }, - "Important Remarks (new)": { - "prefix": "remarks", - "body": [ - "\\begin{remarks}[]{$1}", - "\t$2", - "\\end{remarks}" - ], - "description": "Inserts a tcolorbox to provide remarks (green)" - }, - "Guides (new)": { - "prefix": "guides", - "body": [ - "\\begin{guides}[]{$1}{${2:Usage}}", - "\t$2", - "\\end{guides}" - ], - "description": "Inserts a tcolorbox to provide guides / instructions on how to use (purple)" - }, - "Properties (new)": { - "prefix": "properties", - "body": [ - "\\begin{properties}[]{$1}", - "\t$2", - "\\end{properties}" - ], - "description": "Inserts a tcolorbox to inform about properties / restrictions / limitations" - }, - "Restrictions (new)": { - "prefix": "restrictions", - "body": [ - "\\begin{restrictions}[]{$1}", - "\t$2", - "\\end{restrictions}" - ], - "description": "Inserts a tcolorbox to inform about restrictions" - }, - "Limitations (new)": { - "prefix": "limitations", - "body": [ - "\\begin{limitations}[]{$1}", - "\t$2", - "\\end{limitations}" - ], - "description": "Inserts a tcolorbox to inform about limitations" - }, - "Theorem (new)": { - "prefix": "theorem", - "body": [ - "\\begin{theorem}[]{$1}", - "\t$2", - "\\end{theorem}" - ], - "description": "Inserts a tcolorbox to inform about theorems" - }, - "Lemma (new)": { - "prefix": "lemma", - "body": [ - "\\begin{lemma}[]{$1}", - "\t$2", - "\\end{lemma}" - ], - "description": "Inserts a tcolorbox to inform about lemmas" - }, - "Corollary (new)": { - "prefix": "corollary", - "body": [ - "\\begin{corollary}[]{$1}", - "\t$2", - "\\end{corollary}" - ], - "description": "Inserts a tcolorbox to inform about corollaries" - }, - "Terms (new)": { - "prefix": "terms", - "body": [ - "\\begin{terms}[]{$1}", - "\t$2", - "\\end{terms}" - ], - "description": "Inserts a tcolorbox to inform about terms" - }, - "Proof (new)": { - "prefix": "proof", - "body": [ - "\\begin{proof}[]{$1}", - "\t$2", - "\\end{proof}" - ], - "description": "Inserts a tcolorbox to show a proof" - }, - "Axiom (new)": { - "prefix": "axiom", - "body": [ - "\\begin{axiom}[]{$1}", - "\t$2", - "\\end{axiom}" - ], - "description": "Inserts a tcolorbox to show an axiom" - }, - "Notation (new)": { - "prefix": "notation", - "body": [ - "\\begin{notation}[]{$1}", - "\t$2", - "\\end{notation}" - ], - "description": "Inserts a tcolorbox to show notation" - }, - "Example (new)": { - "prefix": "example", - "body": [ - "\\begin{example}[]{$1}", - "\t$2", - "\\end{example}" - ], - "description": "Inserts a tcolorbox to show example" - }, - "Usage (languages, new)": { - "prefix": "usage", - "body": [ - "\\begin{usage}[]{$1}", - "\t$2", - "\\end{usage}" - ], - "description": "Inserts a tcolorbox to inform about usage in a language context" - }, - "Conjugation (languages, new)": { - "prefix": "conjugation", - "body": [ - "\\begin{conjugation}[]{$1}", - "\t$2", - "\\end{conjugation}" - ], - "description": "Inserts a tcolorbox to inform about conjugation" - }, - "Forms (languages, new)": { - "prefix": "forms", - "body": [ - "\\begin{forms}[]{$1}", - "\t$2", - "\\end{forms}" - ], - "description": "Inserts a tcolorbox to inform about forms of e.g. grammatical structures" - }, - "General-Tcolorbox (new)": { - "prefix": "general-tcb", - "body": [ - "\\begin{general}[]{${1:title}}{${2:second title}}{${3|red,green,blue,cyan,magenta,yellow,black,gray,white,darkgray,lightgray,brown,lime,olive,orange,pink,purple,teal,violet|}}", - "\t$4", - "\\end{general}" - ], - "description": "Inserts a tcolorbox for general purposes. First bracket is title, second one is second title, third one colour" - }, - "Derivative": { - "prefix": "derivative", - "body": [ - "\\frac{\\mbox{d}}{\\mbox{d}x}$1" - ] - }, - "Example (inline)": { - "prefix": "example-inline", - "body": [ - "\\inlineex" - ] - }, - "bold": { - "prefix": "#bold", - "body": [ - "\\textbf{$1}" - ] - }, - "italic": { - "prefix": "#i", - "body": [ - "\\textit{$1}" - ] - }, - "bolditalic": { - "prefix": "#bi", - "body": [ - "\\textbf{\\textit{$1}}" - ] - }, - "underlinie": { - "prefix": "#u", - "body": [ - "\\underbar{$1}" - ] - }, - "algebra": { - "prefix": "algebra", - "body": [ - "\\langle $1 \\rangle" - ] - }, - "fill-width": { - "prefix": "#fill", - "body": [ - "\\hspace{\\fill}$1" - ] - }, - "Latex-Colour": { - "prefix": "colour", - "body": [ - "${1|red,green,blue,cyan,magenta,yellow,black,gray,white,darkgray,lightgray,brown,lime,olive,orange,pink,purple,teal,violet|}" - ] - }, - "Latex-Text-Colour": { - "prefix": "colour-text", - "body": [ - "\\color{${1|red,green,blue,cyan,magenta,yellow,black,gray,white,darkgray,lightgray,brown,lime,olive,orange,pink,purple,teal,violet|}}" - ] - }, - "German doc": { - "prefix": "latex-german", - "body": [ - "\\usepackage[ngerman]{babel}", - "\\setcounter{lang}{2} % Move below \\begin{document}", - ] - }, - "Letter": { - "prefix": "latex-letter", - "body": [ - "\\documentclass[12pt,a4paper]{scrlttr2}\n", - "\\input{~/projects/generalSchool/letter-helpers.tex}\n", - "% Subject", - "\\setkomavar{subject}{$1}", - "\\begin{document}\\raggedright", - "\t\\begin{letter}{Company \\\\\\ Name \\\\\\ Address \\\\\\ CH-Place}", - "\t\t\\opening{Intro}\n", - "\t\t$2\n", - "\t\t\\closing{Mit freundlichen Grüssen}", - "\t\\end{letter}", - "\\end{document}", - ] - }, -} \ No newline at end of file diff --git a/general/configs/VSCodium/User/snippets/tex.json b/general/configs/VSCodium/User/snippets/tex.json deleted file mode 100644 index 8f1f6fe..0000000 --- a/general/configs/VSCodium/User/snippets/tex.json +++ /dev/null @@ -1,124 +0,0 @@ -{ - // Place your snippets for tex here. Each snippet is defined under a snippet name and has a prefix, body and - // description. The prefix is what is used to trigger the snippet and the body will be expanded and inserted. Possible variables are: - // $1, $2 for tab stops, $0 for the final cursor position, and ${1:label}, ${2:another} for placeholders. Placeholders with the - // same ids are connected. - // Example: - // "Print to console": { - // "prefix": "log", - // "body": [ - // "console.log('$1');", - // "$2" - // ], - // "description": "Log output to console" - // } - "Formula (old)": { - "prefix": "formulaBare", - "body": [ - "\\begin{tcolorbox}[colback=red!5!white,colframe=red!75!black,title=Formula: $1]", - "\t$2", - "\\end{tcolorbox}", - ], - "description": "Red tcolorbox to provide a formula (without the default setup)" - }, - "Prepare Latex doc (old)": { - "prefix": "LaTeX-Prepare-Old", - "body": [ - "\\documentclass{article}\n", - "% Imports %", - "\\usepackage{amsmath}", - "\\usepackage{graphicx}", - "\\usepackage{subcaption}", - "\\usepackage[export]{adjustbox}", - "\\usepackage{tcolorbox}", - "\\usepackage{xcolor}", - "\\usepackage{cancel}", - "\\usepackage{dsfont}", - "\\usepackage{amssymb}", - "\\usepackage[a4paper]{geometry}", - "\\usepackage{parskip}\n", - "% Setup %", - "\\title{\\Huge \\textbf{$1}}", - "\\author{Janis Hutz}\n", - "% Configuring %", - "\\addtolength{\\oddsidemargin}{-0.75in}", - "\\addtolength{\\textwidth}{1.5in}", - "\\addtolength{\\evensidemargin}{-0.75in}", - "\\addtolength{\\topmargin}{-1in}", - "\\addtolength{\\textheight}{2in}\n", - "% Main doc %", - "\\begin{document}", - "\\maketitle", - "$2", - "\\end{document}" - ], - "description": "Prepare a LaTeX Document with all relevant imports" - }, - "prepare LaTeX Document (New)": { - "prefix": "latex-prepare", - "body": [ - "\\documentclass{article}\n", - "\\input{~/projects/generalSchool/helpers.tex}\n", - "\\setup{$1}\n", - "\\begin{document}", - "\\maketitle\n\n", - "$2\n\n", - "\\end{document}" - ], - "description": "Prepares a full LaTeX Document for use and compiling" - }, - "Formula (new)": { - "prefix": "formula", - "body": [ - "\\begin{formula}[]{$1}", - "\t$2", - "\\end{formula}" - ], - "description": "Inserts a tcolorbox to provide a formula (red)" - }, - "Definition (new)": { - "prefix": "definition", - "body": [ - "\\begin{definition}[]{$1}", - "\t$2", - "\\end{definition}" - ], - "description": "Inserts a tcolorbox to provide a definition (blue)" - }, - "Recall (new)": { - "prefix": "recall", - "body": [ - "\\begin{recall}[]{$1}", - "\t$2", - "\\end{recall}" - ], - "description": "Inserts a tcolorbox to provide a recall / revision of previous knowledge (yellow)" - }, - "Important Remarks (new)": { - "prefix": "remarks", - "body": [ - "\\begin{remarks}[]{$1}", - "\t$2", - "\\end{remarks}" - ], - "description": "Inserts a tcolorbox to provide remarks (green)" - }, - "Guides (new)": { - "prefix": "guides", - "body": [ - "\\begin{guides}[]{$1}", - "\t$2", - "\\end{guides}" - ], - "description": "Inserts a tcolorbox to provide guides / instructions on how to use (purple)" - }, - "Properties / Restrictions (new)": { - "prefix": "properties", - "body": [ - "\\begin{properties}[]{$1}", - "\t$2", - "\\end{properties}" - ], - "description": "Inserts a tcolorbox to inform about properties / restrictions / limitations" - } -} \ No newline at end of file diff --git a/general/configs/VSCodium/User/snippets/typescript.json b/general/configs/VSCodium/User/snippets/typescript.json deleted file mode 100644 index 88d8683..0000000 --- a/general/configs/VSCodium/User/snippets/typescript.json +++ /dev/null @@ -1,106 +0,0 @@ -{ - // Place your snippets for javascript here. Each snippet is defined under a snippet name and has a prefix, body and - // description. The prefix is what is used to trigger the snippet and the body will be expanded and inserted. Possible variables are: - // $1, $2 for tab stops, $0 for the final cursor position, and ${1:label}, ${2:another} for placeholders. Placeholders with the - // same ids are connected. - // Example: - // "Print to console": { - // "prefix": "log", - // "body": [ - // "console.log('$1');", - // "$2" - // ], - // "description": "Log output to console" - // } - "JS-Class": { - "prefix": "jsSetupClass", - "body": "class $1 { \n\tconstructor () {} \n\n \t$2 () {\n\t$3\n\t}\n}", - "description": "Setup the basic structure of a class in JS" - }, - "ExpressJS": { - "prefix": "jsExpressSetup", - "body": [ - "const express = require( 'express' );", - "let app = express();", - "const path = require( 'path' );", - "const expressSession = require( 'express-session' );", - "const fs = require( 'fs' );", - "const bodyParser = require( 'body-parser' );", - "const cookieParser = require( 'cookie-parser' )", - "const favicon = require( 'serve-favicon' );", - "\napp.use( expressSession ( {\n\tsecret: $1,\n\tresave: true,\n\tsaveUninitialized: true\n} ) );", - "app.use( bodyParser.urlencoded( { extended: false } ) );", - "app.use( bodyParser.json() );", - "app.use( cookieParser() );", - "app.use( favicon( path.join( __dirname + '$2' ) ) );\n", - "app.use( ( request, response, next ) => {\n\tresponse.sendFile( path.join( __dirname + '$3' ) ) \n} );", - "\n\napp.get( '/', ( request, response ) => {\n$4\n} );", - "\n\nconst PORT = process.env.PORT || 8080;", - "http.createServer( app ).listen( PORT );" - ] - }, - "ExpressJS-Route": { - "prefix": "jsEjsRoute", - "body": "\n\napp.get( '$1', ( request: express.Request, response: express.Response ) => {\n$4\n} );" - }, - "JSAsync": { - "prefix": "jsAsync", - "body": "(async () => {\n$1\n} ) ();" - }, - "JSpromiseReturnFunc": { - "prefix": "jsPromise", - "body": "function $1 () {\n\treturn new Promise( ( resolve, reject ) => {\n\t$2\n\t} );\n}" - }, - "fetch from other url": { - "prefix": "remoteURL", - "body": [ - "localStorage.getItem( 'url' ) + '/$1'", - ], - "description": "remote URL fetching (get from base address from local storage)" - }, - "fetch post": { - "prefix": "fetchPost", - "body": [ - "const fetchOptions = {", - "\tmethod: 'post',", - "\tbody: JSON.stringify( $1 ),", - "\tcredentials: 'include',", - "\theaders: {", - "\t\t'Content-Type': 'application/json',", - "\t\t'charset': 'utf-8'", - "\t}", - "};", - "fetch( $2, fetchOptions ).then( res => {", - "\tif ( res.status === 200 ) {", - "\t\tres.json().then( json => {", - "\t\t\t$3", - "\t\t} );", - "\t}", - "} );", - "$4" - ], - "description": "POST request using fetch" - }, - "fetch get": { - "prefix": "fetchGet", - "body": [ - "fetch( $2, { credentials: 'include' } ).then( res => {", - "\tif ( res.status === 200 ) {", - "\t\tres.json().then( json => {", - "\t\t\t$3", - "\t\t} );", - "\t}", - "} );", - "$4" - ], - "description": "POST request using fetch" - }, - "promise": { - "prefix": "promise", - "body": [ - "return new Promise( ( resolve, reject ) => {", - "\t", - "} );" - ] - } -} \ No newline at end of file diff --git a/general/configs/VSCodium/User/snippets/vue.json b/general/configs/VSCodium/User/snippets/vue.json deleted file mode 100755 index e7219f6..0000000 --- a/general/configs/VSCodium/User/snippets/vue.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - // Place your snippets for vue here. Each snippet is defined under a snippet name and has a prefix, body and - // description. The prefix is what is used to trigger the snippet and the body will be expanded and inserted. Possible variables are: - // $1, $2 for tab stops, $0 for the final cursor position, and ${1:label}, ${2:another} for placeholders. Placeholders with the - // same ids are connected. - // Example: - // "Print to console": { - // "prefix": "log", - // "body": [ - // "console.log( '$1' );", - // "$2" - // ], - // "description": "Log output to console" - // }, - "script:setup": { - "prefix": "script:setup", - "body": [ - "" - ], - "description": "Setup the basic structure of a class in JS" - }, -} \ No newline at end of file diff --git a/general/configs/VSCodium/User/syncLocalSettings.json b/general/configs/VSCodium/User/syncLocalSettings.json deleted file mode 100755 index 25554e0..0000000 --- a/general/configs/VSCodium/User/syncLocalSettings.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "ignoreUploadFiles": [ - "state.*", - "syncLocalSettings.json", - ".DS_Store", - "sync.lock", - "projects.json", - "projects_cache_vscode.json", - "projects_cache_git.json", - "projects_cache_svn.json", - "gpm_projects.json", - "gpm-recentItems.json" - ], - "ignoreUploadFolders": [ - "workspaceStorage" - ], - "ignoreExtensions": [], - "gistDescription": "Visual Studio Code Settings Sync Gist", - "version": 343, - "token": "", - "downloadPublicGist": false, - "supportedFileExtensions": [ - "json", - "code-snippets" - ], - "openTokenLink": true, - "disableUpdateMessage": false, - "lastUpload": null, - "lastDownload": null, - "githubEnterpriseUrl": null, - "askGistDescription": false, - "customFiles": {}, - "hostName": null, - "universalKeybindings": false, - "autoUploadDelay": 20 -} \ No newline at end of file diff --git a/general/configs/VSCodium/product.json b/general/configs/VSCodium/product.json deleted file mode 100755 index ba7257d..0000000 --- a/general/configs/VSCodium/product.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "extensionsGallery": { - "serviceUrl": "https://marketplace.visualstudio.com/_apis/public/gallery", - "itemUrl": "https://marketplace.visualstudio.com/items", - "cacheUrl": "https://vscode.blob.core.windows.net/gallery/index", - "controlUrl": "" - } -} diff --git a/general/configs/dunst/defaultDunst b/general/configs/dunst/defaultDunst deleted file mode 100644 index 60f79e2..0000000 --- a/general/configs/dunst/defaultDunst +++ /dev/null @@ -1,58 +0,0 @@ -[global] - follow = mouse - indicate_hidden = yes - - offset = 10x10 - - notification_height = 0 - - separator_height = 2 - - padding = 8 - horizontal_padding = 8 - text_icon_padding = 0 - frame_width = 2 - - frame_color = "#a6f7ad" - separator_color = frame - - sort = yes - idle_threshold = 120 - font = monospace 10 - line_height = 0 - markup = full - alignment = left - vertical_alignment = center - show_age_threshold = 60 - word_wrap = yes - stack_duplicates = true - hide_duplicate_count = false - - show_indicators = yes - - min_icon_size = 0 - max_icon_size = 64 - - icon_path = /usr/share/icons/candy-icons/16x16/status/:/usr/share/icons/candy-icons/16x16/devices/:/usr/share/icons/candy-icons/16x16/actions/:/usr/share/icons/candy-icons/16x16/animations/:/usr/share/icons/candy-icons/16x16/apps/:/usr/share/icons/candy-icons/16x16/categories/:/usr/share/icons/candy-icons/16x16/emblems/:/usr/share/icons/candy-icons/16x16/emotes/:/usr/share/icons/candy-icons/16x16/devices/mimetypes:/usr/share/icons/candy-icons/16x16/panel/:/usr/share/icons/candy-icons/16x16/places/ - - dmenu = /usr/bin/wofi -p dunst: - browser = /usr/bin/firefox --new-tab - - title = Dunst - class = Dunst - - corner_radius = 10 - timeout = 5 - -[urgency_low] - background = "#00003a" - foreground = "#CDD6F4" - -[urgency_normal] - background = "#00003a" - foreground = "#CDD6F4" - -[urgency_critical] - background = "#00003a" - foreground = "#CDD6F4" - frame_color = "#6c0000" diff --git a/general/configs/dunst/dunstrc b/general/configs/dunst/dunstrc deleted file mode 100755 index 32e0118..0000000 --- a/general/configs/dunst/dunstrc +++ /dev/null @@ -1,58 +0,0 @@ -[global] - follow = mouse - indicate_hidden = yes - - offset = 10x10 - - notification_height = 0 - - separator_height = 2 - - padding = 8 - horizontal_padding = 8 - text_icon_padding = 0 - frame_width = 2 - - frame_color = "#cc5c00" - separator_color = frame - - sort = yes - idle_threshold = 120 - font = monospace 10 - line_height = 0 - markup = full - alignment = left - vertical_alignment = center - show_age_threshold = 60 - word_wrap = yes - stack_duplicates = true - hide_duplicate_count = false - - show_indicators = yes - - min_icon_size = 0 - max_icon_size = 64 - - icon_path = /usr/share/icons/candy-icons/16x16/status/:/usr/share/icons/candy-icons/16x16/devices/:/usr/share/icons/candy-icons/16x16/actions/:/usr/share/icons/candy-icons/16x16/animations/:/usr/share/icons/candy-icons/16x16/apps/:/usr/share/icons/candy-icons/16x16/categories/:/usr/share/icons/candy-icons/16x16/emblems/:/usr/share/icons/candy-icons/16x16/emotes/:/usr/share/icons/candy-icons/16x16/devices/mimetypes:/usr/share/icons/candy-icons/16x16/panel/:/usr/share/icons/candy-icons/16x16/places/ - - dmenu = /usr/bin/wofi -p dunst: - browser = /usr/bin/firefox --new-tab - - title = Dunst - class = Dunst - - corner_radius = 10 - timeout = 5 - -[urgency_low] - background = "#000000" - foreground = "#CDD6F4" - -[urgency_normal] - background = "#000000" - foreground = "#CDD6F4" - -[urgency_critical] - background = "#000000" - foreground = "#CDD6F4" - frame_color = "#6c0000" diff --git a/general/configs/fish/fish_variables b/general/configs/fish/fish_variables deleted file mode 100755 index 6d13aee..0000000 --- a/general/configs/fish/fish_variables +++ /dev/null @@ -1,33 +0,0 @@ -# This file contains fish universal variable definitions. -# VERSION: 3.0 -SETUVAR __fish_initialized:3800 -SETUVAR fish_color_autosuggestion:555\x1ebrblack -SETUVAR fish_color_cancel:\x2dr -SETUVAR fish_color_command:blue -SETUVAR fish_color_comment:red -SETUVAR fish_color_cwd:green -SETUVAR fish_color_cwd_root:red -SETUVAR fish_color_end:green -SETUVAR fish_color_error:brred -SETUVAR fish_color_escape:brcyan -SETUVAR fish_color_history_current:\x2d\x2dbold -SETUVAR fish_color_host:normal -SETUVAR fish_color_host_remote:yellow -SETUVAR fish_color_normal:normal -SETUVAR fish_color_operator:brcyan -SETUVAR fish_color_param:cyan -SETUVAR fish_color_quote:yellow -SETUVAR fish_color_redirection:cyan\x1e\x2d\x2dbold -SETUVAR fish_color_search_match:white\x1e\x2d\x2dbackground\x3dbrblack -SETUVAR fish_color_selection:white\x1e\x2d\x2dbold\x1e\x2d\x2dbackground\x3dbrblack -SETUVAR fish_color_status:red -SETUVAR fish_color_user:brgreen -SETUVAR fish_color_valid_path:\x2d\x2dunderline -SETUVAR fish_greeting:\x1d -SETUVAR fish_key_bindings:fish_default_key_bindings -SETUVAR fish_pager_color_completion:normal -SETUVAR fish_pager_color_description:B3A06D\x1eyellow\x1e\x2di -SETUVAR fish_pager_color_prefix:normal\x1e\x2d\x2dbold\x1e\x2d\x2dunderline -SETUVAR fish_pager_color_progress:brwhite\x1e\x2d\x2dbackground\x3dcyan -SETUVAR fish_pager_color_selected_background:\x2dr -SETUVAR fish_user_paths:/usr/lib/python3\x2e11/site\x2dpackages\x1e/usr/lib/python3\x2e11\x1e/usr/lib/python3\x2e11/site\x2dpackages/\x1e/home/janis/\x2elocal/lib/python3\x2e11/site\x2dpackages/\x1e/home/janis/\x2elocal/lib/python3\x2e11/ diff --git a/general/configs/kitty/kitty.conf b/general/configs/kitty/kitty.conf deleted file mode 100644 index e5669bd..0000000 --- a/general/configs/kitty/kitty.conf +++ /dev/null @@ -1,29 +0,0 @@ -# ──────────────────────────────────────────────────────────────────── -# ╭────────────────────────────────────────────────╮ -# │ Kitty Config │ -# ╰────────────────────────────────────────────────╯ -# ──────────────────────────────────────────────────────────────────── - - -# ──────────────────────────────────────────────────────────────────── -# FONTS -# ──────────────────────────────────────────────────────────────────── -font_family Source Code Pro -font_size 12.0 - - -# ──────────────────────────────────────────────────────────────────── -# Cursor config -# ──────────────────────────────────────────────────────────────────── -cursor_trail 1 - - -# ──────────────────────────────────────────────────────────────────── -# Mouse config -# ──────────────────────────────────────────────────────────────────── -mouse_hide_wait 3.0 -url_style curly -url_prefixes file ftp ftps gemini git gopher http https irc ircs kitty mailto news sftp ssh -detect_urls yes -show_hyperlink_targets yes -include current-theme.conf diff --git a/general/configs/kitty/kitty.conf.bak b/general/configs/kitty/kitty.conf.bak deleted file mode 100644 index e285bcd..0000000 --- a/general/configs/kitty/kitty.conf.bak +++ /dev/null @@ -1,2639 +0,0 @@ -# vim:fileencoding=utf-8:foldmethod=marker - -Fonts {{{ - -#: kitty has very powerful font management. You can configure -#: individual font faces and even specify special fonts for particular -#: characters. - -font_family Source Code Pro -# bold_font auto -# italic_font auto -# bold_italic_font auto - -#: You can specify different fonts for the bold/italic/bold-italic -#: variants. The easiest way to select fonts is to run the `kitten -#: choose-fonts` command which will present a nice UI for you to -#: select the fonts you want with previews and support for selecting -#: variable fonts and font features. If you want to learn to select -#: fonts manually, read the font specification syntax -#: . - -font_size 12.0 - -#: Font size (in pts). - -# force_ltr no - -#: kitty does not support BIDI (bidirectional text), however, for RTL -#: scripts, words are automatically displayed in RTL. That is to say, -#: in an RTL script, the words "HELLO WORLD" display in kitty as -#: "WORLD HELLO", and if you try to select a substring of an RTL- -#: shaped string, you will get the character that would be there had -#: the string been LTR. For example, assuming the Hebrew word ירושלים, -#: selecting the character that on the screen appears to be ם actually -#: writes into the selection buffer the character י. kitty's default -#: behavior is useful in conjunction with a filter to reverse the word -#: order, however, if you wish to manipulate RTL glyphs, it can be -#: very challenging to work with, so this option is provided to turn -#: it off. Furthermore, this option can be used with the command line -#: program GNU FriBidi -#: to get BIDI support, because it will force kitty to always treat -#: the text as LTR, which FriBidi expects for terminals. - -# symbol_map - -#: E.g. symbol_map U+E0A0-U+E0A3,U+E0C0-U+E0C7 PowerlineSymbols - -#: Map the specified Unicode codepoints to a particular font. Useful -#: if you need special rendering for some symbols, such as for -#: Powerline. Avoids the need for patched fonts. Each Unicode code -#: point is specified in the form `U+`. You -#: can specify multiple code points, separated by commas and ranges -#: separated by hyphens. This option can be specified multiple times. -#: The syntax is:: - -#: symbol_map codepoints Font Family Name - -# narrow_symbols - -#: E.g. narrow_symbols U+E0A0-U+E0A3,U+E0C0-U+E0C7 1 - -#: Usually, for Private Use Unicode characters and some symbol/dingbat -#: characters, if the character is followed by one or more spaces, -#: kitty will use those extra cells to render the character larger, if -#: the character in the font has a wide aspect ratio. Using this -#: option you can force kitty to restrict the specified code points to -#: render in the specified number of cells (defaulting to one cell). -#: This option can be specified multiple times. The syntax is:: - -#: narrow_symbols codepoints [optionally the number of cells] - -# disable_ligatures never - -#: Choose how you want to handle multi-character ligatures. The -#: default is to always render them. You can tell kitty to not render -#: them when the cursor is over them by using cursor to make editing -#: easier, or have kitty never render them at all by using always, if -#: you don't like them. The ligature strategy can be set per-window -#: either using the kitty remote control facility or by defining -#: shortcuts for it in kitty.conf, for example:: - -#: map alt+1 disable_ligatures_in active always -#: map alt+2 disable_ligatures_in all never -#: map alt+3 disable_ligatures_in tab cursor - -#: Note that this refers to programming ligatures, typically -#: implemented using the calt OpenType feature. For disabling general -#: ligatures, use the font_features option. - -# font_features - -#: E.g. font_features none - -#: Choose exactly which OpenType features to enable or disable. Note -#: that for the main fonts, features can be specified when selecting -#: the font using the choose-fonts kitten. This setting is useful for -#: fallback fonts. - -#: Some fonts might have features worthwhile in a terminal. For -#: example, Fira Code includes a discretionary feature, zero, which in -#: that font changes the appearance of the zero (0), to make it more -#: easily distinguishable from Ø. Fira Code also includes other -#: discretionary features known as Stylistic Sets which have the tags -#: ss01 through ss20. - -#: For the exact syntax to use for individual features, see the -#: HarfBuzz documentation . - -#: Note that this code is indexed by PostScript name, and not the font -#: family. This allows you to define very precise feature settings; -#: e.g. you can disable a feature in the italic font but not in the -#: regular font. - -#: On Linux, font features are first read from the FontConfig database -#: and then this option is applied, so they can be configured in a -#: single, central place. - -#: To get the PostScript name for a font, use the `fc-scan file.ttf` -#: command on Linux or the `Font Book tool on macOS -#: `__. - -#: Enable alternate zero and oldstyle numerals:: - -#: font_features FiraCode-Retina +zero +onum - -#: Enable only alternate zero in the bold font:: - -#: font_features FiraCode-Bold +zero - -#: Disable the normal ligatures, but keep the calt feature which (in -#: this font) breaks up monotony:: - -#: font_features TT2020StyleB-Regular -liga +calt - -#: In conjunction with force_ltr, you may want to disable Arabic -#: shaping entirely, and only look at their isolated forms if they -#: show up in a document. You can do this with e.g.:: - -#: font_features UnifontMedium +isol -medi -fina -init - -# modify_font - -#: Modify font characteristics such as the position or thickness of -#: the underline and strikethrough. The modifications can have the -#: suffix px for pixels or % for percentage of original value. No -#: suffix means use pts. For example:: - -#: modify_font underline_position -2 -#: modify_font underline_thickness 150% -#: modify_font strikethrough_position 2px - -#: Additionally, you can modify the size of the cell in which each -#: font glyph is rendered and the baseline at which the glyph is -#: placed in the cell. For example:: - -#: modify_font cell_width 80% -#: modify_font cell_height -2px -#: modify_font baseline 3 - -#: Note that modifying the baseline will automatically adjust the -#: underline and strikethrough positions by the same amount. -#: Increasing the baseline raises glyphs inside the cell and -#: decreasing it lowers them. Decreasing the cell size might cause -#: rendering artifacts, so use with care. - -# box_drawing_scale 0.001, 1, 1.5, 2 - -#: The sizes of the lines used for the box drawing Unicode characters. -#: These values are in pts. They will be scaled by the monitor DPI to -#: arrive at a pixel value. There must be four values corresponding to -#: thin, normal, thick, and very thick lines. - -# undercurl_style thin-sparse - -#: The style with which undercurls are rendered. This option takes the -#: form (thin|thick)-(sparse|dense). Thin and thick control the -#: thickness of the undercurl. Sparse and dense control how often the -#: curl oscillates. With sparse the curl will peak once per character, -#: with dense twice. - -# text_composition_strategy platform - -#: Control how kitty composites text glyphs onto the background color. -#: The default value of platform tries for text rendering as close to -#: "native" for the platform kitty is running on as possible. - -#: A value of legacy uses the old (pre kitty 0.28) strategy for how -#: glyphs are composited. This will make dark text on light -#: backgrounds look thicker and light text on dark backgrounds -#: thinner. It might also make some text appear like the strokes are -#: uneven. - -#: You can fine tune the actual contrast curve used for glyph -#: composition by specifying up to two space-separated numbers for -#: this setting. - -#: The first number is the gamma adjustment, which controls the -#: thickness of dark text on light backgrounds. Increasing the value -#: will make text appear thicker. The default value for this is 1.0 on -#: Linux and 1.7 on macOS. Valid values are 0.01 and above. The result -#: is scaled based on the luminance difference between the background -#: and the foreground. Dark text on light backgrounds receives the -#: full impact of the curve while light text on dark backgrounds is -#: affected very little. - -#: The second number is an additional multiplicative contrast. It is -#: percentage ranging from 0 to 100. The default value is 0 on Linux -#: and 30 on macOS. - -#: If you wish to achieve similar looking thickness in light and dark -#: themes, a good way to experiment is start by setting the value to -#: 1.0 0 and use a dark theme. Then adjust the second parameter until -#: it looks good. Then switch to a light theme and adjust the first -#: parameter until the perceived thickness matches the dark theme. - -# text_fg_override_threshold 0 - -#: The minimum accepted difference in luminance between the foreground -#: and background color, below which kitty will override the -#: foreground color. It is percentage ranging from 0 to 100. If the -#: difference in luminance of the foreground and background is below -#: this threshold, the foreground color will be set to white if the -#: background is dark or black if the background is light. The default -#: value is 0, which means no overriding is performed. Useful when -#: working with applications that use colors that do not contrast well -#: with your preferred color scheme. - -#: WARNING: Some programs use characters (such as block characters) -#: for graphics display and may expect to be able to set the -#: foreground and background to the same color (or similar colors). -#: If you see unexpected stripes, dots, lines, incorrect color, no -#: color where you expect color, or any kind of graphic display -#: problem try setting text_fg_override_threshold to 0 to see if this -#: is the cause of the problem. - -}}} - -#: Text cursor customization {{{ - -# cursor #cccccc - -#: Default text cursor color. If set to the special value none the -#: cursor will be rendered with a "reverse video" effect. Its color -#: will be the color of the text in the cell it is over and the text -#: will be rendered with the background color of the cell. Note that -#: if the program running in the terminal sets a cursor color, this -#: takes precedence. Also, the cursor colors are modified if the cell -#: background and foreground colors have very low contrast. Note that -#: some themes set this value, so if you want to override it, place -#: your value after the lines where the theme file is included. - -# cursor_text_color #111111 - -#: The color of text under the cursor. If you want it rendered with -#: the background color of the cell underneath instead, use the -#: special keyword: `background`. Note that if cursor is set to none -#: then this option is ignored. Note that some themes set this value, -#: so if you want to override it, place your value after the lines -#: where the theme file is included. - -# cursor_shape block - -#: The cursor shape can be one of block, beam, underline. Note that -#: when reloading the config this will be changed only if the cursor -#: shape has not been set by the program running in the terminal. This -#: sets the default cursor shape, applications running in the terminal -#: can override it. In particular, shell integration -#: in kitty sets -#: the cursor shape to beam at shell prompts. You can avoid this by -#: setting shell_integration to no-cursor. - -# cursor_shape_unfocused hollow - -#: Defines the text cursor shape when the OS window is not focused. -#: The unfocused cursor shape can be one of block, beam, underline, -#: hollow and unchanged (leave the cursor shape as it is). - -# cursor_beam_thickness 1.5 - -#: The thickness of the beam cursor (in pts). - -# cursor_underline_thickness 2.0 - -#: The thickness of the underline cursor (in pts). - -# cursor_blink_interval -1 - -#: The interval to blink the cursor (in seconds). Set to zero to -#: disable blinking. Negative values mean use system default. Note -#: that the minimum interval will be limited to repaint_delay. You can -#: also animate the cursor blink by specifying an easing function. For -#: example, setting this to option to 0.5 ease-in-out will cause the -#: cursor blink to be animated over a second, in the first half of the -#: second it will go from opaque to transparent and then back again -#: over the next half. You can specify different easing functions for -#: the two halves, for example: -1 linear ease-out. kitty supports all -#: the CSS easing functions . Note that turning on animations -#: uses extra power as it means the screen is redrawn multiple times -#: per blink interval. See also, cursor_stop_blinking_after. - -# cursor_stop_blinking_after 15.0 - -#: Stop blinking cursor after the specified number of seconds of -#: keyboard inactivity. Set to zero to never stop blinking. - -# cursor_trail 0 - -#: Set this to a value larger than zero to enable a "cursor trail" -#: animation. This is an animation that shows a "trail" following the -#: movement of the text cursor. It makes it easy to follow large -#: cursor jumps and makes for a cool visual effect of the cursor -#: zooming around the screen. The actual value of this option controls -#: when the animation is trigerred. It is a number of milliseconds. -#: The trail animation only follows cursors that have stayed in their -#: position for longer than the specified number of milliseconds. This -#: prevents trails from appearing for cursors that rapidly change -#: their positions during UI updates in complex applications. See -#: cursor_trail_decay to control the animation speed and -#: cursor_trail_start_threshold to control when a cursor trail is -#: started. - -# cursor_trail_decay 0.1 0.4 - -#: Controls the decay times for the cursor trail effect when the -#: cursor_trail is enabled. This option accepts two positive float -#: values specifying the fastest and slowest decay times in seconds. -#: The first value corresponds to the fastest decay time (minimum), -#: and the second value corresponds to the slowest decay time -#: (maximum). The second value must be equal to or greater than the -#: first value. Smaller values result in a faster decay of the cursor -#: trail. Adjust these values to control how quickly the cursor trail -#: fades away. - -# cursor_trail_start_threshold 2 - -#: Set the distance threshold for starting the cursor trail. This -#: option accepts a positive integer value that represents the minimum -#: number of cells the cursor must move before the trail is started. -#: When the cursor moves less than this threshold, the trail is -#: skipped, reducing unnecessary cursor trail animation. - -#: }}} - -#: Scrollback {{{ - -# scrollback_lines 2000 - -#: Number of lines of history to keep in memory for scrolling back. -#: Memory is allocated on demand. Negative numbers are (effectively) -#: infinite scrollback. Note that using very large scrollback is not -#: recommended as it can slow down performance of the terminal and -#: also use large amounts of RAM. Instead, consider using -#: scrollback_pager_history_size. Note that on config reload if this -#: is changed it will only affect newly created windows, not existing -#: ones. - -# scrollback_indicator_opacity 1.0 - -#: The opacity of the scrollback indicator which is a small colored -#: rectangle that moves along the right hand side of the window as you -#: scroll, indicating what fraction you have scrolled. The default is -#: one which means fully opaque, aka visible. Set to a value between -#: zero and one to make the indicator less visible. - -# scrollback_pager less --chop-long-lines --RAW-CONTROL-CHARS +INPUT_LINE_NUMBER - -#: Program with which to view scrollback in a new window. The -#: scrollback buffer is passed as STDIN to this program. If you change -#: it, make sure the program you use can handle ANSI escape sequences -#: for colors and text formatting. INPUT_LINE_NUMBER in the command -#: line above will be replaced by an integer representing which line -#: should be at the top of the screen. Similarly CURSOR_LINE and -#: CURSOR_COLUMN will be replaced by the current cursor position or -#: set to 0 if there is no cursor, for example, when showing the last -#: command output. - -# scrollback_pager_history_size 0 - -#: Separate scrollback history size (in MB), used only for browsing -#: the scrollback buffer with pager. This separate buffer is not -#: available for interactive scrolling but will be piped to the pager -#: program when viewing scrollback buffer in a separate window. The -#: current implementation stores the data in UTF-8, so approximately -#: 10000 lines per megabyte at 100 chars per line, for pure ASCII, -#: unformatted text. A value of zero or less disables this feature. -#: The maximum allowed size is 4GB. Note that on config reload if this -#: is changed it will only affect newly created windows, not existing -#: ones. - -# scrollback_fill_enlarged_window no - -#: Fill new space with lines from the scrollback buffer after -#: enlarging a window. - -# wheel_scroll_multiplier 5.0 - -#: Multiplier for the number of lines scrolled by the mouse wheel. -#: Note that this is only used for low precision scrolling devices, -#: not for high precision scrolling devices on platforms such as macOS -#: and Wayland. Use negative numbers to change scroll direction. See -#: also wheel_scroll_min_lines. - -# wheel_scroll_min_lines 1 - -#: The minimum number of lines scrolled by the mouse wheel. The scroll -#: multiplier wheel_scroll_multiplier only takes effect after it -#: reaches this number. Note that this is only used for low precision -#: scrolling devices like wheel mice that scroll by very small amounts -#: when using the wheel. With a negative number, the minimum number of -#: lines will always be added. - -# touch_scroll_multiplier 1.0 - -#: Multiplier for the number of lines scrolled by a touchpad. Note -#: that this is only used for high precision scrolling devices on -#: platforms such as macOS and Wayland. Use negative numbers to change -#: scroll direction. - -#: }}} - -Mouse {{{ - -mouse_hide_wait 3.0 - -#: Hide mouse cursor after the specified number of seconds of the -#: mouse not being used. Set to zero to disable mouse cursor hiding. -#: Set to a negative value to hide the mouse cursor immediately when -#: typing text. Disabled by default on macOS as getting it to work -#: robustly with the ever-changing sea of bugs that is Cocoa is too -#: much effort. - -url_color #0087bd -url_style curly - -#: The color and style for highlighting URLs on mouse-over. url_style -#: can be one of: none, straight, double, curly, dotted, dashed. - -# open_url_with default - -#: The program to open clicked URLs. The special value default will -#: first look for any URL handlers defined via the open_actions -#: facility and if non -#: are found, it will use the Operating System's default URL handler -#: (open on macOS and xdg-open on Linux). - -url_prefixes file ftp ftps gemini git gopher http https irc ircs kitty mailto news sftp ssh - -#: The set of URL prefixes to look for when detecting a URL under the -#: mouse cursor. - -detect_urls yes - -#: Detect URLs under the mouse. Detected URLs are highlighted with an -#: underline and the mouse cursor becomes a hand over them. Even if -#: this option is disabled, URLs are still clickable. See also the -#: underline_hyperlinks option to control how hyperlinks (as opposed -#: to plain text URLs) are displayed. - -# url_excluded_characters - -#: Additional characters to be disallowed from URLs, when detecting -#: URLs under the mouse cursor. By default, all characters that are -#: legal in URLs are allowed. Additionally, newlines are allowed (but -#: stripped). This is to accommodate programs such as mutt that add -#: hard line breaks even for continued lines. \n can be added to this -#: option to disable this behavior. Special characters can be -#: specified using backslash escapes, to specify a backslash use a -#: double backslash. - -show_hyperlink_targets yes - -#: When the mouse hovers over a terminal hyperlink, show the actual -#: URL that will be activated when the hyperlink is clicked. - -# underline_hyperlinks hover - -#: Control how hyperlinks are underlined. They can either be -#: underlined on mouse hover, always (i.e. permanently underlined) or -#: never which means that kitty will not apply any underline styling -#: to hyperlinks. Note that the value of always only applies to real -#: (OSC 8) hyperlinks not text that is detected to be a URL on mouse -#: hover. Uses the url_style and url_color settings for the underline -#: style. Note that reloading the config and changing this value -#: to/from always will only affect text subsequently received by -#: kitty. - -# copy_on_select no - -#: Copy to clipboard or a private buffer on select. With this set to -#: clipboard, selecting text with the mouse will cause the text to be -#: copied to clipboard. Useful on platforms such as macOS that do not -#: have the concept of primary selection. You can instead specify a -#: name such as a1 to copy to a private kitty buffer. Map a shortcut -#: with the paste_from_buffer action to paste from this private -#: buffer. For example:: - -#: copy_on_select a1 -#: map shift+cmd+v paste_from_buffer a1 - -#: Note that copying to the clipboard is a security risk, as all -#: programs, including websites open in your browser can read the -#: contents of the system clipboard. - -# paste_actions quote-urls-at-prompt,confirm - -#: A comma separated list of actions to take when pasting text into -#: the terminal. The supported paste actions are: - -#: quote-urls-at-prompt: -#: If the text being pasted is a URL and the cursor is at a shell prompt, -#: automatically quote the URL (needs shell_integration). -#: replace-dangerous-control-codes -#: Replace dangerous control codes from pasted text, without confirmation. -#: replace-newline -#: Replace the newline character from pasted text, without confirmation. -#: confirm: -#: Confirm the paste if the text to be pasted contains any terminal control codes -#: as this can be dangerous, leading to code execution if the shell/program running -#: in the terminal does not properly handle these. -#: confirm-if-large -#: Confirm the paste if it is very large (larger than 16KB) as pasting -#: large amounts of text into shells can be very slow. -#: filter: -#: Run the filter_paste() function from the file paste-actions.py in -#: the kitty config directory on the pasted text. The text returned by the -#: function will be actually pasted. -#: no-op: -#: Has no effect. - -# strip_trailing_spaces never - -#: Remove spaces at the end of lines when copying to clipboard. A -#: value of smart will do it when using normal selections, but not -#: rectangle selections. A value of always will always do it. - -# select_by_word_characters @-./_~?&=%+# - -#: Characters considered part of a word when double clicking. In -#: addition to these characters any character that is marked as an -#: alphanumeric character in the Unicode database will be matched. - -# select_by_word_characters_forward - -#: Characters considered part of a word when extending the selection -#: forward on double clicking. In addition to these characters any -#: character that is marked as an alphanumeric character in the -#: Unicode database will be matched. - -#: If empty (default) select_by_word_characters will be used for both -#: directions. - -# click_interval -1.0 - -#: The interval between successive clicks to detect double/triple -#: clicks (in seconds). Negative numbers will use the system default -#: instead, if available, or fallback to 0.5. - -# focus_follows_mouse no - -#: Set the active window to the window under the mouse when moving the -#: mouse around. On macOS, this will also cause the OS Window under -#: the mouse to be focused automatically when the mouse enters it. - -# pointer_shape_when_grabbed arrow - -#: The shape of the mouse pointer when the program running in the -#: terminal grabs the mouse. - -# default_pointer_shape beam - -#: The default shape of the mouse pointer. - -# pointer_shape_when_dragging beam - -#: The default shape of the mouse pointer when dragging across text. - -#: Mouse actions {{{ - -#: Mouse buttons can be mapped to perform arbitrary actions. The -#: syntax is: - -#: .. code-block:: none - -#: mouse_map button-name event-type modes action - -#: Where button-name is one of left, middle, right, b1 ... b8 with -#: added keyboard modifiers. For example: ctrl+shift+left refers to -#: holding the Ctrl+Shift keys while clicking with the left mouse -#: button. The value b1 ... b8 can be used to refer to up to eight -#: buttons on a mouse. - -#: event-type is one of press, release, doublepress, triplepress, -#: click, doubleclick. modes indicates whether the action is performed -#: when the mouse is grabbed by the program running in the terminal, -#: or not. The values are grabbed or ungrabbed or a comma separated -#: combination of them. grabbed refers to when the program running in -#: the terminal has requested mouse events. Note that the click and -#: double click events have a delay of click_interval to disambiguate -#: from double and triple presses. - -#: You can run kitty with the kitty --debug-input command line option -#: to see mouse events. See the builtin actions below to get a sense -#: of what is possible. - -#: If you want to unmap a button, map it to nothing. For example, to -#: disable opening of URLs with a plain click:: - -#: mouse_map left click ungrabbed - -#: See all the mappable actions including mouse actions here -#: . - -#: .. note:: -#: Once a selection is started, releasing the button that started it will -#: automatically end it and no release event will be dispatched. - -# clear_all_mouse_actions no - -#: Remove all mouse action definitions up to this point. Useful, for -#: instance, to remove the default mouse actions. - -#: Click the link under the mouse or move the cursor - -# mouse_map left click ungrabbed mouse_handle_click selection link prompt - -#:: First check for a selection and if one exists do nothing. Then -#:: check for a link under the mouse cursor and if one exists, click -#:: it. Finally check if the click happened at the current shell -#:: prompt and if so, move the cursor to the click location. Note -#:: that this requires shell integration -#:: to work. - -#: Click the link under the mouse or move the cursor even when grabbed - -# mouse_map shift+left click grabbed,ungrabbed mouse_handle_click selection link prompt - -#:: Same as above, except that the action is performed even when the -#:: mouse is grabbed by the program running in the terminal. - -#: Click the link under the mouse cursor - -# mouse_map ctrl+shift+left release grabbed,ungrabbed mouse_handle_click link - -#:: Variant with Ctrl+Shift is present because the simple click based -#:: version has an unavoidable delay of click_interval, to -#:: disambiguate clicks from double clicks. - -#: Discard press event for link click - -# mouse_map ctrl+shift+left press grabbed discard_event - -#:: Prevent this press event from being sent to the program that has -#:: grabbed the mouse, as the corresponding release event is used to -#:: open a URL. - -#: Paste from the primary selection - -# mouse_map middle release ungrabbed paste_from_selection - -#: Start selecting text - -# mouse_map left press ungrabbed mouse_selection normal - -#: Start selecting text in a rectangle - -# mouse_map ctrl+alt+left press ungrabbed mouse_selection rectangle - -#: Select a word - -# mouse_map left doublepress ungrabbed mouse_selection word - -#: Select a line - -# mouse_map left triplepress ungrabbed mouse_selection line - -#: Select line from point - -# mouse_map ctrl+alt+left triplepress ungrabbed mouse_selection line_from_point - -#:: Select from the clicked point to the end of the line. If you -#:: would like to select the word at the point and then extend to the -#:: rest of the line, change `line_from_point` to -#:: `word_and_line_from_point`. - -#: Extend the current selection - -# mouse_map right press ungrabbed mouse_selection extend - -#:: If you want only the end of the selection to be moved instead of -#:: the nearest boundary, use move-end instead of extend. - -#: Paste from the primary selection even when grabbed - -# mouse_map shift+middle release ungrabbed,grabbed paste_selection -# mouse_map shift+middle press grabbed discard_event - -#: Start selecting text even when grabbed - -# mouse_map shift+left press ungrabbed,grabbed mouse_selection normal - -#: Start selecting text in a rectangle even when grabbed - -# mouse_map ctrl+shift+alt+left press ungrabbed,grabbed mouse_selection rectangle - -#: Select a word even when grabbed - -# mouse_map shift+left doublepress ungrabbed,grabbed mouse_selection word - -#: Select a line even when grabbed - -# mouse_map shift+left triplepress ungrabbed,grabbed mouse_selection line - -#: Select line from point even when grabbed - -# mouse_map ctrl+shift+alt+left triplepress ungrabbed,grabbed mouse_selection line_from_point - -#:: Select from the clicked point to the end of the line even when -#:: grabbed. If you would like to select the word at the point and -#:: then extend to the rest of the line, change `line_from_point` to -#:: `word_and_line_from_point`. - -#: Extend the current selection even when grabbed - -# mouse_map shift+right press ungrabbed,grabbed mouse_selection extend - -#: Show clicked command output in pager - -# mouse_map ctrl+shift+right press ungrabbed mouse_show_command_output - -#:: Requires shell integration -#:: to work. - -#: }}} -}}} - -#: Performance tuning {{{ - -# repaint_delay 10 - -#: Delay between screen updates (in milliseconds). Decreasing it, -#: increases frames-per-second (FPS) at the cost of more CPU usage. -#: The default value yields ~100 FPS which is more than sufficient for -#: most uses. Note that to actually achieve 100 FPS, you have to -#: either set sync_to_monitor to no or use a monitor with a high -#: refresh rate. Also, to minimize latency when there is pending input -#: to be processed, this option is ignored. - -# input_delay 3 - -#: Delay before input from the program running in the terminal is -#: processed (in milliseconds). Note that decreasing it will increase -#: responsiveness, but also increase CPU usage and might cause flicker -#: in full screen programs that redraw the entire screen on each loop, -#: because kitty is so fast that partial screen updates will be drawn. -#: This setting is ignored when the input buffer is almost full. - -# sync_to_monitor yes - -#: Sync screen updates to the refresh rate of the monitor. This -#: prevents screen tearing -#: when scrolling. -#: However, it limits the rendering speed to the refresh rate of your -#: monitor. With a very high speed mouse/high keyboard repeat rate, -#: you may notice some slight input latency. If so, set this to no. - -#: }}} - -#: Terminal bell {{{ - -# enable_audio_bell yes - -#: The audio bell. Useful to disable it in environments that require -#: silence. - -# visual_bell_duration 0.0 - -#: The visual bell duration (in seconds). Flash the screen when a bell -#: occurs for the specified number of seconds. Set to zero to disable. -#: The flash is animated, fading in and out over the specified -#: duration. The easing function used for the fading can be -#: controlled. For example, 2.0 linear will casuse the flash to fade -#: in and out linearly. The default if unspecified is to use ease-in- -#: out which fades slowly at the start, middle and end. You can -#: specify different easing functions for the fade-in and fade-out -#: parts, like this: 2.0 ease-in linear. kitty supports all the CSS -#: easing functions . - -# visual_bell_color none - -#: The color used by visual bell. Set to none will fall back to -#: selection background color. If you feel that the visual bell is too -#: bright, you can set it to a darker color. - -# window_alert_on_bell yes - -#: Request window attention on bell. Makes the dock icon bounce on -#: macOS or the taskbar flash on Linux. - -# bell_on_tab "🔔 " - -#: Some text or a Unicode symbol to show on the tab if a window in the -#: tab that does not have focus has a bell. If you want to use leading -#: or trailing spaces, surround the text with quotes. See -#: tab_title_template for how this is rendered. - -#: For backwards compatibility, values of yes, y and true are -#: converted to the default bell symbol and no, n, false and none are -#: converted to the empty string. - -# command_on_bell none - -#: Program to run when a bell occurs. The environment variable -#: KITTY_CHILD_CMDLINE can be used to get the program running in the -#: window in which the bell occurred. - -# bell_path none - -#: Path to a sound file to play as the bell sound. If set to none, the -#: system default bell sound is used. Must be in a format supported by -#: the operating systems sound API, such as WAV or OGA on Linux -#: (libcanberra) or AIFF, MP3 or WAV on macOS (NSSound). - -# linux_bell_theme __custom - -#: The XDG Sound Theme kitty will use to play the bell sound. Defaults -#: to the custom theme name specified in the XDG Sound theme -#: specification , falling back to the default -#: freedesktop theme if it does not exist. To change your sound theme -#: desktop wide, create -#: :file:~/.local/share/sounds/__custom/index.theme` with the -#: contents: - -#: [Sound Theme] - -#: Inherits=name-of-the-sound-theme-you-want-to-use - -#: Replace name-of-the-sound-theme-you-want-to-use with the actual -#: theme name. Now all compliant applications should use sounds from -#: this theme. - -#: }}} - -#: Window layout {{{ - -# remember_window_size yes -# initial_window_width 640 -# initial_window_height 400 - -#: If enabled, the OS Window size will be remembered so that new -#: instances of kitty will have the same size as the previous -#: instance. If disabled, the OS Window will initially have size -#: configured by initial_window_width/height, in pixels. You can use a -#: suffix of "c" on the width/height values to have them interpreted -#: as number of cells instead of pixels. - -# enabled_layouts * - -#: The enabled window layouts. A comma separated list of layout names. -#: The special value all means all layouts. The first listed layout -#: will be used as the startup layout. Default configuration is all -#: layouts in alphabetical order. For a list of available layouts, see -#: the layouts . - -# window_resize_step_cells 2 -# window_resize_step_lines 2 - -#: The step size (in units of cell width/cell height) to use when -#: resizing kitty windows in a layout with the shortcut -#: start_resizing_window. The cells value is used for horizontal -#: resizing, and the lines value is used for vertical resizing. - -# window_border_width 0.5pt - -#: The width of window borders. Can be either in pixels (px) or pts -#: (pt). Values in pts will be rounded to the nearest number of pixels -#: based on screen resolution. If not specified, the unit is assumed -#: to be pts. Note that borders are displayed only when more than one -#: window is visible. They are meant to separate multiple windows. - -# draw_minimal_borders yes - -#: Draw only the minimum borders needed. This means that only the -#: borders that separate the window from a neighbor are drawn. Note -#: that setting a non-zero window_margin_width overrides this and -#: causes all borders to be drawn. - -# window_margin_width 0 - -#: The window margin (in pts) (blank area outside the border). A -#: single value sets all four sides. Two values set the vertical and -#: horizontal sides. Three values set top, horizontal and bottom. Four -#: values set top, right, bottom and left. - -# single_window_margin_width -1 - -#: The window margin to use when only a single window is visible (in -#: pts). Negative values will cause the value of window_margin_width -#: to be used instead. A single value sets all four sides. Two values -#: set the vertical and horizontal sides. Three values set top, -#: horizontal and bottom. Four values set top, right, bottom and left. - -# window_padding_width 0 - -#: The window padding (in pts) (blank area between the text and the -#: window border). A single value sets all four sides. Two values set -#: the vertical and horizontal sides. Three values set top, horizontal -#: and bottom. Four values set top, right, bottom and left. - -# single_window_padding_width -1 - -#: The window padding to use when only a single window is visible (in -#: pts). Negative values will cause the value of window_padding_width -#: to be used instead. A single value sets all four sides. Two values -#: set the vertical and horizontal sides. Three values set top, -#: horizontal and bottom. Four values set top, right, bottom and left. - -# placement_strategy center - -#: When the window size is not an exact multiple of the cell size, the -#: cell area of the terminal window will have some extra padding on -#: the sides. You can control how that padding is distributed with -#: this option. Using a value of center means the cell area will be -#: placed centrally. A value of top-left means the padding will be -#: only at the bottom and right edges. The value can be one of: top- -#: left, top, top-right, left, center, right, bottom-left, bottom, -#: bottom-right. - -# active_border_color #00ff00 - -#: The color for the border of the active window. Set this to none to -#: not draw borders around the active window. - -# inactive_border_color #cccccc - -#: The color for the border of inactive windows. - -# bell_border_color #ff5a00 - -#: The color for the border of inactive windows in which a bell has -#: occurred. - -# inactive_text_alpha 1.0 - -#: Fade the text in inactive windows by the specified amount (a number -#: between zero and one, with zero being fully faded). - -# hide_window_decorations no - -#: Hide the window decorations (title-bar and window borders) with -#: yes. On macOS, titlebar-only and titlebar-and-corners can be used -#: to only hide the titlebar and the rounded corners. Whether this -#: works and exactly what effect it has depends on the window -#: manager/operating system. Note that the effects of changing this -#: option when reloading config are undefined. When using titlebar- -#: only, it is useful to also set window_margin_width and -#: placement_strategy to prevent the rounded corners from clipping -#: text. Or use titlebar-and-corners. - -# window_logo_path none - -#: Path to a logo image. Must be in PNG/JPEG/WEBP/GIF/TIFF/BMP format. -#: Relative paths are interpreted relative to the kitty config -#: directory. The logo is displayed in a corner of every kitty window. -#: The position is controlled by window_logo_position. Individual -#: windows can be configured to have different logos either using the -#: launch action or the remote control -#: facility. - -# window_logo_position bottom-right - -#: Where to position the window logo in the window. The value can be -#: one of: top-left, top, top-right, left, center, right, bottom-left, -#: bottom, bottom-right. - -# window_logo_alpha 0.5 - -#: The amount the logo should be faded into the background. With zero -#: being fully faded and one being fully opaque. - -# window_logo_scale 0 - -#: The percentage (0-100] of the window size to which the logo should -#: scale. Using a single number means the logo is scaled to that -#: percentage of the shortest window dimension, while preseving aspect -#: ratio of the logo image. - -#: Using two numbers means the width and height of the logo are scaled -#: to the respective percentage of the window's width and height. - -#: Using zero as the percentage disables scaling in that dimension. A -#: single zero (the default) disables all scaling of the window logo. - -# resize_debounce_time 0.1 0.5 - -#: The time to wait (in seconds) before asking the program running in -#: kitty to resize and redraw the screen during a live resize of the -#: OS window, when no new resize events have been received, i.e. when -#: resizing is either paused or finished. On platforms such as macOS, -#: where the operating system sends events corresponding to the start -#: and end of a live resize, the second number is used for redraw- -#: after-pause since kitty can distinguish between a pause and end of -#: resizing. On such systems the first number is ignored and redraw is -#: immediate after end of resize. On other systems only the first -#: number is used so that kitty is "ready" quickly after the end of -#: resizing, while not also continuously redrawing, to save energy. - -# resize_in_steps no - -#: Resize the OS window in steps as large as the cells, instead of -#: with the usual pixel accuracy. Combined with initial_window_width -#: and initial_window_height in number of cells, this option can be -#: used to keep the margins as small as possible when resizing the OS -#: window. Note that this does not currently work on Wayland. - -# visual_window_select_characters 1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ - -#: The list of characters for visual window selection. For example, -#: for selecting a window to focus on with focus_visible_window. The -#: value should be a series of unique numbers or alphabets, case -#: insensitive, from the set 0-9A-Z\-=[];',./\\`. Specify your -#: preference as a string of characters. - -# confirm_os_window_close -1 - -#: Ask for confirmation when closing an OS window or a tab with at -#: least this number of kitty windows in it by window manager (e.g. -#: clicking the window close button or pressing the operating system -#: shortcut to close windows) or by the close_tab action. A value of -#: zero disables confirmation. This confirmation also applies to -#: requests to quit the entire application (all OS windows, via the -#: quit action). Negative values are converted to positive ones, -#: however, with shell_integration enabled, using negative values -#: means windows sitting at a shell prompt are not counted, only -#: windows where some command is currently running. Note that if you -#: want confirmation when closing individual windows, you can map the -#: close_window_with_confirmation action. - -#: }}} - -#: Tab bar {{{ - -# tab_bar_edge bottom - -#: The edge to show the tab bar on, top or bottom. - -# tab_bar_margin_width 0.0 - -#: The margin to the left and right of the tab bar (in pts). - -# tab_bar_margin_height 0.0 0.0 - -#: The margin above and below the tab bar (in pts). The first number -#: is the margin between the edge of the OS Window and the tab bar. -#: The second number is the margin between the tab bar and the -#: contents of the current tab. - -# tab_bar_style fade - -#: The tab bar style, can be one of: - -#: fade -#: Each tab's edges fade into the background color. (See also tab_fade) -#: slant -#: Tabs look like the tabs in a physical file. -#: separator -#: Tabs are separated by a configurable separator. (See also -#: tab_separator) -#: powerline -#: Tabs are shown as a continuous line with "fancy" separators. -#: (See also tab_powerline_style) -#: custom -#: A user-supplied Python function called draw_tab is loaded from the file -#: tab_bar.py in the kitty config directory. For examples of how to -#: write such a function, see the functions named draw_tab_with_* in -#: kitty's source code: kitty/tab_bar.py. See also -#: this discussion -#: for examples from kitty users. -#: hidden -#: The tab bar is hidden. If you use this, you might want to create -#: a mapping for the select_tab action which presents you with a list of -#: tabs and allows for easy switching to a tab. - -# tab_bar_align left - -#: The horizontal alignment of the tab bar, can be one of: left, -#: center, right. - -# tab_bar_min_tabs 2 - -#: The minimum number of tabs that must exist before the tab bar is -#: shown. - -# tab_switch_strategy previous - -#: The algorithm to use when switching to a tab when the current tab -#: is closed. The default of previous will switch to the last used -#: tab. A value of left will switch to the tab to the left of the -#: closed tab. A value of right will switch to the tab to the right of -#: the closed tab. A value of last will switch to the right-most tab. - -# tab_fade 0.25 0.5 0.75 1 - -#: Control how each tab fades into the background when using fade for -#: the tab_bar_style. Each number is an alpha (between zero and one) -#: that controls how much the corresponding cell fades into the -#: background, with zero being no fade and one being full fade. You -#: can change the number of cells used by adding/removing entries to -#: this list. - -# tab_separator " ┇" - -#: The separator between tabs in the tab bar when using separator as -#: the tab_bar_style. - -# tab_powerline_style angled - -#: The powerline separator style between tabs in the tab bar when -#: using powerline as the tab_bar_style, can be one of: angled, -#: slanted, round. - -# tab_activity_symbol none - -#: Some text or a Unicode symbol to show on the tab if a window in the -#: tab that does not have focus has some activity. If you want to use -#: leading or trailing spaces, surround the text with quotes. See -#: tab_title_template for how this is rendered. - -# tab_title_max_length 0 - -#: The maximum number of cells that can be used to render the text in -#: a tab. A value of zero means that no limit is applied. - -# tab_title_template "{fmt.fg.red}{bell_symbol}{activity_symbol}{fmt.fg.tab}{title}" - -#: A template to render the tab title. The default just renders the -#: title with optional symbols for bell and activity. If you wish to -#: include the tab-index as well, use something like: {index}:{title}. -#: Useful if you have shortcuts mapped for goto_tab N. If you prefer -#: to see the index as a superscript, use {sup.index}. All data -#: available is: - -#: title -#: The current tab title. -#: index -#: The tab index usable with goto_tab N goto_tab shortcuts. -#: layout_name -#: The current layout name. -#: num_windows -#: The number of windows in the tab. -#: num_window_groups -#: The number of window groups (a window group is a window and all of its overlay windows) in the tab. -#: tab.active_wd -#: The working directory of the currently active window in the tab -#: (expensive, requires syscall). Use active_oldest_wd to get -#: the directory of the oldest foreground process rather than the newest. -#: tab.active_exe -#: The name of the executable running in the foreground of the currently -#: active window in the tab (expensive, requires syscall). Use -#: active_oldest_exe for the oldest foreground process. -#: max_title_length -#: The maximum title length available. -#: keyboard_mode -#: The name of the current keyboard mode or the empty string if no keyboard mode is active. - -#: Note that formatting is done by Python's string formatting -#: machinery, so you can use, for instance, {layout_name[:2].upper()} -#: to show only the first two letters of the layout name, upper-cased. -#: If you want to style the text, you can use styling directives, for -#: example: -#: `{fmt.fg.red}red{fmt.fg.tab}normal{fmt.bg._00FF00}greenbg{fmt.bg.tab}`. -#: Similarly, for bold and italic: -#: `{fmt.bold}bold{fmt.nobold}normal{fmt.italic}italic{fmt.noitalic}`. -#: The 256 eight terminal colors can be used as `fmt.fg.color0` -#: through `fmt.fg.color255`. Note that for backward compatibility, if -#: {bell_symbol} or {activity_symbol} are not present in the template, -#: they are prepended to it. - -# active_tab_title_template none - -#: Template to use for active tabs. If not specified falls back to -#: tab_title_template. - -# active_tab_foreground #000 -# active_tab_background #eee -# active_tab_font_style bold-italic -# inactive_tab_foreground #444 -# inactive_tab_background #999 -# inactive_tab_font_style normal - -#: Tab bar colors and styles. - -# tab_bar_background none - -#: Background color for the tab bar. Defaults to using the terminal -#: background color. - -# tab_bar_margin_color none - -#: Color for the tab bar margin area. Defaults to using the terminal -#: background color for margins above and below the tab bar. For side -#: margins the default color is chosen to match the background color -#: of the neighboring tab. - -#: }}} - -#: Color scheme {{{ - -# foreground #dddddd -# background #000000 - -#: The foreground and background colors. - -# background_opacity 1.0 - -#: The opacity of the background. A number between zero and one, where -#: one is opaque and zero is fully transparent. This will only work if -#: supported by the OS (for instance, when using a compositor under -#: X11). Note that it only sets the background color's opacity in -#: cells that have the same background color as the default terminal -#: background, so that things like the status bar in vim, powerline -#: prompts, etc. still look good. But it means that if you use a color -#: theme with a background color in your editor, it will not be -#: rendered as transparent. Instead you should change the default -#: background color in your kitty config and not use a background -#: color in the editor color scheme. Or use the escape codes to set -#: the terminals default colors in a shell script to launch your -#: editor. See also transparent_background_colors. Be aware that using -#: a value less than 1.0 is a (possibly significant) performance hit. -#: When using a low value for this setting, it is desirable that you -#: set the background color to a color the matches the general color -#: of the desktop background, for best text rendering. If you want to -#: dynamically change transparency of windows, set -#: dynamic_background_opacity to yes (this is off by default as it has -#: a performance cost). Changing this option when reloading the config -#: will only work if dynamic_background_opacity was enabled in the -#: original config. - -# background_blur 0 - -#: Set to a positive value to enable background blur (blurring of the -#: visuals behind a transparent window) on platforms that support it. -#: Only takes effect when background_opacity is less than one. On -#: macOS, this will also control the blur radius (amount of blurring). -#: Setting it to too high a value will cause severe performance issues -#: and/or rendering artifacts. Usually, values up to 64 work well. -#: Note that this might cause performance issues, depending on how the -#: platform implements it, so use with care. Currently supported on -#: macOS and KDE. - -# background_image none - -#: Path to a background image. Must be in PNG/JPEG/WEBP/TIFF/GIF/BMP -#: format. - -# background_image_layout tiled - -#: Whether to tile, scale or clamp the background image. The value can -#: be one of tiled, mirror-tiled, scaled, clamped, centered or -#: cscaled. The scaled and cscaled values scale the image to the -#: window size, with cscaled preserving the image aspect ratio. - -# background_image_linear no - -#: When background image is scaled, whether linear interpolation -#: should be used. - -# transparent_background_colors - -#: A space separated list of upto 7 colors, with opacity. When the -#: background color of a cell matches one of these colors, it is -#: rendered semi-transparent using the specified opacity. - -#: Useful in more complex UIs like editors where you could want more -#: than a single background color to be rendered as transparent, for -#: instance, for a cursor highlight line background or a highlighted -#: block. Terminal applications can set this color using The kitty -#: color control escape code. - -#: The syntax for specifiying colors is: color@opacity, where the -#: @opacity part is optional. When unspecified, the value of -#: background_opacity is used. For example:: - -#: transparent_background_colors red@0.5 #00ff00@0.3 - -# dynamic_background_opacity no - -#: Allow changing of the background_opacity dynamically, using either -#: keyboard shortcuts (increase_background_opacity and -#: decrease_background_opacity) or the remote control facility. -#: Changing this option by reloading the config is not supported. - -# background_tint 0.0 - -#: How much to tint the background image by the background color. This -#: option makes it easier to read the text. Tinting is done using the -#: current background color for each window. This option applies only -#: if background_opacity is set and transparent windows are supported -#: or background_image is set. - -# background_tint_gaps 1.0 - -#: How much to tint the background image at the window gaps by the -#: background color, after applying background_tint. Since this is -#: multiplicative with background_tint, it can be used to lighten the -#: tint over the window gaps for a *separated* look. - -# dim_opacity 0.4 - -#: How much to dim text that has the DIM/FAINT attribute set. One -#: means no dimming and zero means fully dimmed (i.e. invisible). - -# selection_foreground #000000 -# selection_background #fffacd - -#: The foreground and background colors for text selected with the -#: mouse. Setting both of these to none will cause a "reverse video" -#: effect for selections, where the selection will be the cell text -#: color and the text will become the cell background color. Setting -#: only selection_foreground to none will cause the foreground color -#: to be used unchanged. Note that these colors can be overridden by -#: the program running in the terminal. - -#: The color table {{{ - -#: The 256 terminal colors. There are 8 basic colors, each color has a -#: dull and bright version, for the first 16 colors. You can set the -#: remaining 240 colors as color16 to color255. - -# color0 #000000 -# color8 #767676 - -#: black - -# color1 #cc0403 -# color9 #f2201f - -#: red - -# color2 #19cb00 -# color10 #23fd00 - -#: green - -# color3 #cecb00 -# color11 #fffd00 - -#: yellow - -# color4 #0d73cc -# color12 #1a8fff - -#: blue - -# color5 #cb1ed1 -# color13 #fd28ff - -#: magenta - -# color6 #0dcdcd -# color14 #14ffff - -#: cyan - -# color7 #dddddd -# color15 #ffffff - -#: white - -# mark1_foreground black - -#: Color for marks of type 1 - -# mark1_background #98d3cb - -#: Color for marks of type 1 (light steel blue) - -# mark2_foreground black - -#: Color for marks of type 2 - -# mark2_background #f2dcd3 - -#: Color for marks of type 1 (beige) - -# mark3_foreground black - -#: Color for marks of type 3 - -# mark3_background #f274bc - -#: Color for marks of type 3 (violet) - -#: }}} - -#: }}} - -#: Advanced {{{ - -# shell . - -#: The shell program to execute. The default value of . means to use -#: the value of of the SHELL environment variable or if unset, -#: whatever shell is set as the default shell for the current user. -#: Note that on macOS if you change this, you might need to add -#: --login and --interactive to ensure that the shell starts in -#: interactive mode and reads its startup rc files. Environment -#: variables are expanded in this setting. - -# editor . - -#: The terminal based text editor (such as vim or nano) to use when -#: editing the kitty config file or similar tasks. - -#: The default value of . means to use the environment variables -#: VISUAL and EDITOR in that order. If these variables aren't set, -#: kitty will run your shell ($SHELL -l -i -c env) to see if your -#: shell startup rc files set VISUAL or EDITOR. If that doesn't work, -#: kitty will cycle through various known editors (vim, emacs, etc.) -#: and take the first one that exists on your system. - -# close_on_child_death no - -#: Close the window when the child process (usually the shell) exits. -#: With the default value no, the terminal will remain open when the -#: child exits as long as there are still other processes outputting -#: to the terminal (for example disowned or backgrounded processes). -#: When enabled with yes, the window will close as soon as the child -#: process exits. Note that setting it to yes means that any -#: background processes still using the terminal can fail silently -#: because their stdout/stderr/stdin no longer work. - -# remote_control_password - -#: Allow other programs to control kitty using passwords. This option -#: can be specified multiple times to add multiple passwords. If no -#: passwords are present kitty will ask the user for permission if a -#: program tries to use remote control with a password. A password can -#: also *optionally* be associated with a set of allowed remote -#: control actions. For example:: - -#: remote_control_password "my passphrase" get-colors set-colors focus-window focus-tab - -#: Only the specified actions will be allowed when using this -#: password. Glob patterns can be used too, for example:: - -#: remote_control_password "my passphrase" set-tab-* resize-* - -#: To get a list of available actions, run:: - -#: kitten @ --help - -#: A set of actions to be allowed when no password is sent can be -#: specified by using an empty password. For example:: - -#: remote_control_password "" *-colors - -#: Finally, the path to a python module can be specified that provides -#: a function is_cmd_allowed that is used to check every remote -#: control command. For example:: - -#: remote_control_password "my passphrase" my_rc_command_checker.py - -#: Relative paths are resolved from the kitty configuration directory. -#: See rc_custom_auth for details. - -# allow_remote_control no - -#: Allow other programs to control kitty. If you turn this on, other -#: programs can control all aspects of kitty, including sending text -#: to kitty windows, opening new windows, closing windows, reading the -#: content of windows, etc. Note that this even works over SSH -#: connections. The default setting of no prevents any form of remote -#: control. The meaning of the various values are: - -#: password -#: Remote control requests received over both the TTY device and the socket -#: are confirmed based on passwords, see remote_control_password. - -#: socket-only -#: Remote control requests received over a socket are accepted -#: unconditionally. Requests received over the TTY are denied. -#: See listen_on. - -#: socket -#: Remote control requests received over a socket are accepted -#: unconditionally. Requests received over the TTY are confirmed based on -#: password. - -#: no -#: Remote control is completely disabled. - -#: yes -#: Remote control requests are always accepted. - -# listen_on none - -#: Listen to the specified socket for remote control connections. Note -#: that this will apply to all kitty instances. It can be overridden -#: by the kitty --listen-on command line option. For UNIX sockets, -#: such as unix:${TEMP}/mykitty or unix:@mykitty (on Linux). -#: Environment variables are expanded and relative paths are resolved -#: with respect to the temporary directory. If {kitty_pid} is present, -#: then it is replaced by the PID of the kitty process, otherwise the -#: PID of the kitty process is appended to the value, with a hyphen. -#: For TCP sockets such as tcp:localhost:0 a random port is always -#: used even if a non-zero port number is specified. See the help for -#: kitty --listen-on for more details. Note that this will be ignored -#: unless allow_remote_control is set to either: yes, socket or -#: socket-only. Changing this option by reloading the config is not -#: supported. - -# env - -#: Specify the environment variables to be set in all child processes. -#: Using the name with an equal sign (e.g. env VAR=) will set it to -#: the empty string. Specifying only the name (e.g. env VAR) will -#: remove the variable from the child process' environment. Note that -#: environment variables are expanded recursively, for example:: - -#: env VAR1=a -#: env VAR2=${HOME}/${VAR1}/b - -#: The value of VAR2 will be /a/b. - -# filter_notification - -#: Specify rules to filter out notifications sent by applications -#: running in kitty. Can be specified multiple times to create -#: multiple filter rules. A rule specification is of the form -#: field:regexp. A filter rule can match on any of the fields: title, -#: body, app, type. The special value of all filters out all -#: notifications. Rules can be combined using Boolean operators. Some -#: examples:: - -#: filter_notification title:hello or body:"abc.*def" -#: # filter out notification from vim except for ones about updates, (?i) -#: # makes matching case insesitive. -#: filter_notification app:"[ng]?vim" and not body:"(?i)update" -#: # filter out all notifications -#: filter_notification all - -#: The field app is the name of the application sending the -#: notification and type is the type of the notification. Not all -#: applications will send these fields, so you can also match on the -#: title and body of the notification text. More sophisticated -#: programmatic filtering and custom actions on notifications can be -#: done by creating a notifications.py file in the kitty config -#: directory (~/.config/kitty). An annotated sample is available -#: . - -# watcher - -#: Path to python file which will be loaded for watchers -#: . Can be -#: specified more than once to load multiple watchers. The watchers -#: will be added to every kitty window. Relative paths are resolved -#: relative to the kitty config directory. Note that reloading the -#: config will only affect windows created after the reload. - -# exe_search_path - -#: Control where kitty finds the programs to run. The default search -#: order is: First search the system wide PATH, then ~/.local/bin and -#: ~/bin. If still not found, the PATH defined in the login shell -#: after sourcing all its startup files is tried. Finally, if present, -#: the PATH specified by the env option is tried. - -#: This option allows you to prepend, append, or remove paths from -#: this search order. It can be specified multiple times for multiple -#: paths. A simple path will be prepended to the search order. A path -#: that starts with the + sign will be append to the search order, -#: after ~/bin above. A path that starts with the - sign will be -#: removed from the entire search order. For example:: - -#: exe_search_path /some/prepended/path -#: exe_search_path +/some/appended/path -#: exe_search_path -/some/excluded/path - -# update_check_interval 24 - -#: The interval to periodically check if an update to kitty is -#: available (in hours). If an update is found, a system notification -#: is displayed informing you of the available update. The default is -#: to check every 24 hours, set to zero to disable. Update checking is -#: only done by the official binary builds. Distro packages or source -#: builds do not do update checking. Changing this option by reloading -#: the config is not supported. - -# startup_session none - -#: Path to a session file to use for all kitty instances. Can be -#: overridden by using the kitty --session =none command line option -#: for individual instances. See sessions -#: in the kitty -#: documentation for details. Note that relative paths are interpreted -#: with respect to the kitty config directory. Environment variables -#: in the path are expanded. Changing this option by reloading the -#: config is not supported. Note that if kitty is invoked with command -#: line arguments specifying a command to run, this option is ignored. - -# clipboard_control write-clipboard write-primary read-clipboard-ask read-primary-ask - -#: Allow programs running in kitty to read and write from the -#: clipboard. You can control exactly which actions are allowed. The -#: possible actions are: write-clipboard, read-clipboard, write- -#: primary, read-primary, read-clipboard-ask, read-primary-ask. The -#: default is to allow writing to the clipboard and primary selection -#: and to ask for permission when a program tries to read from the -#: clipboard. Note that disabling the read confirmation is a security -#: risk as it means that any program, even the ones running on a -#: remote server via SSH can read your clipboard. See also -#: clipboard_max_size. - -# clipboard_max_size 512 - -#: The maximum size (in MB) of data from programs running in kitty -#: that will be stored for writing to the system clipboard. A value of -#: zero means no size limit is applied. See also clipboard_control. - -# file_transfer_confirmation_bypass - -#: The password that can be supplied to the file transfer kitten -#: to skip the -#: transfer confirmation prompt. This should only be used when -#: initiating transfers from trusted computers, over trusted networks -#: or encrypted transports, as it allows any programs running on the -#: remote machine to read/write to the local filesystem, without -#: permission. - -# allow_hyperlinks yes - -#: Process hyperlink escape sequences (OSC 8). If disabled OSC 8 -#: escape sequences are ignored. Otherwise they become clickable -#: links, that you can click with the mouse or by using the hints -#: kitten . The -#: special value of ask means that kitty will ask before opening the -#: link when clicked. - -# shell_integration enabled - -#: Enable shell integration on supported shells. This enables features -#: such as jumping to previous prompts, browsing the output of the -#: previous command in a pager, etc. on supported shells. Set to -#: disabled to turn off shell integration, completely. It is also -#: possible to disable individual features, set to a space separated -#: list of these values: no-rc, no-cursor, no-title, no-cwd, no- -#: prompt-mark, no-complete, no-sudo. See Shell integration -#: for details. - -# allow_cloning ask - -#: Control whether programs running in the terminal can request new -#: windows to be created. The canonical example is clone-in-kitty -#: . -#: By default, kitty will ask for permission for each clone request. -#: Allowing cloning unconditionally gives programs running in the -#: terminal (including over SSH) permission to execute arbitrary code, -#: as the user who is running the terminal, on the computer that the -#: terminal is running on. - -# clone_source_strategies venv,conda,env_var,path - -#: Control what shell code is sourced when running clone-in-kitty in -#: the newly cloned window. The supported strategies are: - -#: venv -#: Source the file $VIRTUAL_ENV/bin/activate. This is used by the -#: Python stdlib venv module and allows cloning venvs automatically. -#: conda -#: Run conda activate $CONDA_DEFAULT_ENV. This supports the virtual -#: environments created by conda. -#: env_var -#: Execute the contents of the environment variable -#: KITTY_CLONE_SOURCE_CODE with eval. -#: path -#: Source the file pointed to by the environment variable -#: KITTY_CLONE_SOURCE_PATH. - -#: This option must be a comma separated list of the above values. -#: Only the first valid match, in the order specified, is sourced. - -# notify_on_cmd_finish never - -#: Show a desktop notification when a long-running command finishes -#: (needs shell_integration). The possible values are: - -#: never -#: Never send a notification. - -#: unfocused -#: Only send a notification when the window does not have keyboard focus. - -#: invisible -#: Only send a notification when the window both is unfocused and not visible -#: to the user, for example, because it is in an inactive tab or its OS window -#: is not currently active. - -#: always -#: Always send a notification, regardless of window state. - -#: There are two optional arguments: - -#: First, the minimum duration for what is considered a long running -#: command. The default is 5 seconds. Specify a second argument to set -#: the duration. For example: invisible 15. Do not set the value too -#: small, otherwise a command that launches a new OS Window and exits -#: will spam a notification. - -#: Second, the action to perform. The default is notify. The possible -#: values are: - -#: notify -#: Send a desktop notification. - -#: bell -#: Ring the terminal bell. - -#: command -#: Run a custom command. All subsequent arguments are the cmdline to run. - -#: Some more examples:: - -#: # Send a notification when a command takes more than 5 seconds in an unfocused window -#: notify_on_cmd_finish unfocused -#: # Send a notification when a command takes more than 10 seconds in a invisible window -#: notify_on_cmd_finish invisible 10.0 -#: # Ring a bell when a command takes more than 10 seconds in a invisible window -#: notify_on_cmd_finish invisible 10.0 bell -#: # Run 'notify-send' when a command takes more than 10 seconds in a invisible window -#: # Here %c is replaced by the current command line and %s by the job exit code -#: notify_on_cmd_finish invisible 10.0 command notify-send "job finished with status: %s" %c - -# term xterm-kitty - -#: The value of the TERM environment variable to set. Changing this -#: can break many terminal programs, only change it if you know what -#: you are doing, not because you read some advice on "Stack Overflow" -#: to change it. The TERM variable is used by various programs to get -#: information about the capabilities and behavior of the terminal. If -#: you change it, depending on what programs you run, and how -#: different the terminal you are changing it to is, various things -#: from key-presses, to colors, to various advanced features may not -#: work. Changing this option by reloading the config will only affect -#: newly created windows. - -# terminfo_type path - -#: The value of the TERMINFO environment variable to set. This -#: variable is used by programs running in the terminal to search for -#: terminfo databases. The default value of path causes kitty to set -#: it to a filesystem location containing the kitty terminfo database. -#: A value of direct means put the entire database into the env var -#: directly. This can be useful when connecting to containers, for -#: example. But, note that not all software supports this. A value of -#: none means do not touch the variable. - -# forward_stdio no - -#: Forward STDOUT and STDERR of the kitty process to child processes. -#: This is useful for debugging as it allows child processes to print -#: to kitty's STDOUT directly. For example, echo hello world -#: >&$KITTY_STDIO_FORWARDED in a shell will print to the parent -#: kitty's STDOUT. Sets the KITTY_STDIO_FORWARDED=fdnum environment -#: variable so child processes know about the forwarding. Note that on -#: macOS this prevents the shell from being run via the login utility -#: so getlogin() will not work in programs run in this session. - -# menu_map - -#: Specify entries for various menus in kitty. Currently only the -#: global menubar on macOS is supported. For example:: - -#: menu_map global "Actions::Launch something special" launch --hold --type=os-window sh -c "echo hello world" - -#: This will create a menu entry named "Launch something special" in -#: an "Actions" menu in the macOS global menubar. Sub-menus can be -#: created by adding more levels separated by the :: characters. - -#: }}} - -#: OS specific tweaks {{{ - -# wayland_titlebar_color system - -#: The color of the kitty window's titlebar on Wayland systems with -#: client side window decorations such as GNOME. A value of system -#: means to use the default system colors, a value of background means -#: to use the background color of the currently active kitty window -#: and finally you can use an arbitrary color, such as #12af59 or red. - -# macos_titlebar_color system - -#: The color of the kitty window's titlebar on macOS. A value of -#: system means to use the default system color, light or dark can -#: also be used to set it explicitly. A value of background means to -#: use the background color of the currently active window and finally -#: you can use an arbitrary color, such as #12af59 or red. WARNING: -#: This option works by using a hack when arbitrary color (or -#: background) is configured, as there is no proper Cocoa API for it. -#: It sets the background color of the entire window and makes the -#: titlebar transparent. As such it is incompatible with -#: background_opacity. If you want to use both, you are probably -#: better off just hiding the titlebar with hide_window_decorations. - -# macos_option_as_alt no - -#: Use the Option key as an Alt key on macOS. With this set to no, -#: kitty will use the macOS native Option+Key to enter Unicode -#: character behavior. This will break any Alt+Key keyboard shortcuts -#: in your terminal programs, but you can use the macOS Unicode input -#: technique. You can use the values: left, right or both to use only -#: the left, right or both Option keys as Alt, instead. Note that -#: kitty itself always treats Option the same as Alt. This means you -#: cannot use this option to configure different kitty shortcuts for -#: Option+Key vs. Alt+Key. Also, any kitty shortcuts using -#: Option/Alt+Key will take priority, so that any such key presses -#: will not be passed to terminal programs running inside kitty. -#: Changing this option by reloading the config is not supported. - -# macos_hide_from_tasks no - -#: Hide the kitty window from running tasks on macOS (⌘+Tab and the -#: Dock). Changing this option by reloading the config is not -#: supported. - -# macos_quit_when_last_window_closed no - -#: Have kitty quit when all the top-level windows are closed on macOS. -#: By default, kitty will stay running, even with no open windows, as -#: is the expected behavior on macOS. - -# macos_window_resizable yes - -#: Disable this if you want kitty top-level OS windows to not be -#: resizable on macOS. - -# macos_thicken_font 0 - -#: Draw an extra border around the font with the given width, to -#: increase legibility at small font sizes on macOS. For example, a -#: value of 0.75 will result in rendering that looks similar to sub- -#: pixel antialiasing at common font sizes. Note that in modern kitty, -#: this option is obsolete (although still supported). Consider using -#: text_composition_strategy instead. - -# macos_traditional_fullscreen no - -#: Use the macOS traditional full-screen transition, that is faster, -#: but less pretty. - -# macos_show_window_title_in all - -#: Control where the window title is displayed on macOS. A value of -#: window will show the title of the currently active window at the -#: top of the macOS window. A value of menubar will show the title of -#: the currently active window in the macOS global menu bar, making -#: use of otherwise wasted space. A value of all will show the title -#: in both places, and none hides the title. See -#: macos_menubar_title_max_length for how to control the length of the -#: title in the menu bar. - -# macos_menubar_title_max_length 0 - -#: The maximum number of characters from the window title to show in -#: the macOS global menu bar. Values less than one means that there is -#: no maximum limit. - -# macos_custom_beam_cursor no - -#: Use a custom mouse cursor for macOS that is easier to see on both -#: light and dark backgrounds. Nowadays, the default macOS cursor -#: already comes with a white border. WARNING: this might make your -#: mouse cursor invisible on dual GPU machines. Changing this option -#: by reloading the config is not supported. - -# macos_colorspace srgb - -#: The colorspace in which to interpret terminal colors. The default -#: of srgb will cause colors to match those seen in web browsers. The -#: value of default will use whatever the native colorspace of the -#: display is. The value of displayp3 will use Apple's special -#: snowflake display P3 color space, which will result in over -#: saturated (brighter) colors with some color shift. Reloading -#: configuration will change this value only for newly created OS -#: windows. - -# linux_display_server auto - -#: Choose between Wayland and X11 backends. By default, an appropriate -#: backend based on the system state is chosen automatically. Set it -#: to x11 or wayland to force the choice. Changing this option by -#: reloading the config is not supported. - -# wayland_enable_ime yes - -#: Enable Input Method Extension on Wayland. This is typically used -#: for inputting text in East Asian languages. However, its -#: implementation in Wayland is often buggy and introduces latency -#: into the input loop, so disable this if you know you dont need it. -#: Changing this option by reloading the config is not supported, it -#: will not have any effect. - -#: }}} - -#: Keyboard shortcuts {{{ - -#: Keys are identified simply by their lowercase Unicode characters. -#: For example: a for the A key, [ for the left square bracket key, -#: etc. For functional keys, such as Enter or Escape, the names are -#: present at Functional key definitions -#: . -#: For modifier keys, the names are ctrl (control, ⌃), shift (⇧), alt -#: (opt, option, ⌥), super (cmd, command, ⌘). - -#: Simple shortcut mapping is done with the map directive. For full -#: details on advanced mapping including modal and per application -#: maps, see mapping . Some -#: quick examples to illustrate common tasks:: - -#: # unmap a keyboard shortcut, passing it to the program running in kitty -#: map kitty_mod+space -#: # completely ignore a keyboard event -#: map ctrl+alt+f1 discard_event -#: # combine multiple actions -#: map kitty_mod+e combine : new_window : next_layout -#: # multi-key shortcuts -#: map ctrl+x>ctrl+y>z action - -#: The full list of actions that can be mapped to key presses is -#: available here . - -# kitty_mod ctrl+shift - -#: Special modifier key alias for default shortcuts. You can change -#: the value of this option to alter all default shortcuts that use -#: kitty_mod. - -# clear_all_shortcuts no - -#: Remove all shortcut definitions up to this point. Useful, for -#: instance, to remove the default shortcuts. - -# action_alias - -#: E.g. action_alias launch_tab launch --type=tab --cwd=current - -#: Define action aliases to avoid repeating the same options in -#: multiple mappings. Aliases can be defined for any action and will -#: be expanded recursively. For example, the above alias allows you to -#: create mappings to launch a new tab in the current working -#: directory without duplication:: - -#: map f1 launch_tab vim -#: map f2 launch_tab emacs - -#: Similarly, to alias kitten invocation:: - -#: action_alias hints kitten hints --hints-offset=0 - -# kitten_alias - -#: E.g. kitten_alias hints hints --hints-offset=0 - -#: Like action_alias above, but specifically for kittens. Generally, -#: prefer to use action_alias. This option is a legacy version, -#: present for backwards compatibility. It causes all invocations of -#: the aliased kitten to be substituted. So the example above will -#: cause all invocations of the hints kitten to have the --hints- -#: offset=0 option applied. - -#: Clipboard {{{ - -#: Copy to clipboard - -# map kitty_mod+c copy_to_clipboard -# map cmd+c copy_to_clipboard - -#:: There is also a copy_or_interrupt action that can be optionally -#:: mapped to Ctrl+C. It will copy only if there is a selection and -#:: send an interrupt otherwise. Similarly, -#:: copy_and_clear_or_interrupt will copy and clear the selection or -#:: send an interrupt if there is no selection. - -#: Paste from clipboard - -# map kitty_mod+v paste_from_clipboard -# map cmd+v paste_from_clipboard - -#: Paste from selection - -# map kitty_mod+s paste_from_selection -# map shift+insert paste_from_selection - -#: Pass selection to program - -# map kitty_mod+o pass_selection_to_program - -#:: You can also pass the contents of the current selection to any -#:: program with pass_selection_to_program. By default, the system's -#:: open program is used, but you can specify your own, the selection -#:: will be passed as a command line argument to the program. For -#:: example:: - -#:: map kitty_mod+o pass_selection_to_program firefox - -#:: You can pass the current selection to a terminal program running -#:: in a new kitty window, by using the @selection placeholder:: - -#:: map kitty_mod+y new_window less @selection - -#: }}} - -#: Scrolling {{{ - -#: Scroll line up - -# map kitty_mod+up scroll_line_up -# map kitty_mod+k scroll_line_up -# map opt+cmd+page_up scroll_line_up -# map cmd+up scroll_line_up - -#: Scroll line down - -# map kitty_mod+down scroll_line_down -# map kitty_mod+j scroll_line_down -# map opt+cmd+page_down scroll_line_down -# map cmd+down scroll_line_down - -#: Scroll page up - -# map kitty_mod+page_up scroll_page_up -# map cmd+page_up scroll_page_up - -#: Scroll page down - -# map kitty_mod+page_down scroll_page_down -# map cmd+page_down scroll_page_down - -#: Scroll to top - -# map kitty_mod+home scroll_home -# map cmd+home scroll_home - -#: Scroll to bottom - -# map kitty_mod+end scroll_end -# map cmd+end scroll_end - -#: Scroll to previous shell prompt - -# map kitty_mod+z scroll_to_prompt -1 - -#:: Use a parameter of 0 for scroll_to_prompt to scroll to the last -#:: jumped to or the last clicked position. Requires shell -#:: integration -#:: to work. - -#: Scroll to next shell prompt - -# map kitty_mod+x scroll_to_prompt 1 - -#: Browse scrollback buffer in pager - -# map kitty_mod+h show_scrollback - -#:: You can pipe the contents of the current screen and history -#:: buffer as STDIN to an arbitrary program using launch --stdin- -#:: source. For example, the following opens the scrollback buffer in -#:: less in an overlay window:: - -#:: map f1 launch --stdin-source=@screen_scrollback --stdin-add-formatting --type=overlay less +G -R - -#:: For more details on piping screen and buffer contents to external -#:: programs, see launch . - -#: Browse output of the last shell command in pager - -# map kitty_mod+g show_last_command_output - -#:: You can also define additional shortcuts to get the command -#:: output. For example, to get the first command output on screen:: - -#:: map f1 show_first_command_output_on_screen - -#:: To get the command output that was last accessed by a keyboard -#:: action or mouse action:: - -#:: map f1 show_last_visited_command_output - -#:: You can pipe the output of the last command run in the shell -#:: using the launch action. For example, the following opens the -#:: output in less in an overlay window:: - -#:: map f1 launch --stdin-source=@last_cmd_output --stdin-add-formatting --type=overlay less +G -R - -#:: To get the output of the first command on the screen, use -#:: @first_cmd_output_on_screen. To get the output of the last jumped -#:: to command, use @last_visited_cmd_output. - -#:: Requires shell integration -#:: to work. - -#: }}} - -#: Window management {{{ - -#: New window - -# map kitty_mod+enter new_window -# map cmd+enter new_window - -#:: You can open a new kitty window running an arbitrary program, for -#:: example:: - -#:: map kitty_mod+y launch mutt - -#:: You can open a new window with the current working directory set -#:: to the working directory of the current window using:: - -#:: map ctrl+alt+enter launch --cwd=current - -#:: You can open a new window that is allowed to control kitty via -#:: the kitty remote control facility with launch --allow-remote- -#:: control. Any programs running in that window will be allowed to -#:: control kitty. For example:: - -#:: map ctrl+enter launch --allow-remote-control some_program - -#:: You can open a new window next to the currently active window or -#:: as the first window, with:: - -#:: map ctrl+n launch --location=neighbor -#:: map ctrl+f launch --location=first - -#:: For more details, see launch -#:: . - -#: New OS window - -# map kitty_mod+n new_os_window -# map cmd+n new_os_window - -#:: Works like new_window above, except that it opens a top-level OS -#:: window. In particular you can use new_os_window_with_cwd to open -#:: a window with the current working directory. - -#: Close window - -# map kitty_mod+w close_window -# map shift+cmd+d close_window - -#: Next window - -# map kitty_mod+] next_window - -#: Previous window - -# map kitty_mod+[ previous_window - -#: Move window forward - -# map kitty_mod+f move_window_forward - -#: Move window backward - -# map kitty_mod+b move_window_backward - -#: Move window to top - -# map kitty_mod+` move_window_to_top - -#: Start resizing window - -# map kitty_mod+r start_resizing_window -# map cmd+r start_resizing_window - -#: First window - -# map kitty_mod+1 first_window -# map cmd+1 first_window - -#: Second window - -# map kitty_mod+2 second_window -# map cmd+2 second_window - -#: Third window - -# map kitty_mod+3 third_window -# map cmd+3 third_window - -#: Fourth window - -# map kitty_mod+4 fourth_window -# map cmd+4 fourth_window - -#: Fifth window - -# map kitty_mod+5 fifth_window -# map cmd+5 fifth_window - -#: Sixth window - -# map kitty_mod+6 sixth_window -# map cmd+6 sixth_window - -#: Seventh window - -# map kitty_mod+7 seventh_window -# map cmd+7 seventh_window - -#: Eighth window - -# map kitty_mod+8 eighth_window -# map cmd+8 eighth_window - -#: Ninth window - -# map kitty_mod+9 ninth_window -# map cmd+9 ninth_window - -#: Tenth window - -# map kitty_mod+0 tenth_window - -#: Visually select and focus window - -# map kitty_mod+f7 focus_visible_window - -#:: Display overlay numbers and alphabets on the window, and switch -#:: the focus to the window when you press the key. When there are -#:: only two windows, the focus will be switched directly without -#:: displaying the overlay. You can change the overlay characters and -#:: their order with option visual_window_select_characters. - -#: Visually swap window with another - -# map kitty_mod+f8 swap_with_window - -#:: Works like focus_visible_window above, but swaps the window. - -#: }}} - -#: Tab management {{{ - -#: Next tab - -# map kitty_mod+right next_tab -# map shift+cmd+] next_tab -# map ctrl+tab next_tab - -#: Previous tab - -# map kitty_mod+left previous_tab -# map shift+cmd+[ previous_tab -# map ctrl+shift+tab previous_tab - -#: New tab - -# map kitty_mod+t new_tab -# map cmd+t new_tab - -#: Close tab - -# map kitty_mod+q close_tab -# map cmd+w close_tab - -#: Close OS window - -# map shift+cmd+w close_os_window - -#: Move tab forward - -# map kitty_mod+. move_tab_forward - -#: Move tab backward - -# map kitty_mod+, move_tab_backward - -#: Set tab title - -# map kitty_mod+alt+t set_tab_title -# map shift+cmd+i set_tab_title - - -#: You can also create shortcuts to go to specific tabs, with 1 being -#: the first tab, 2 the second tab and -1 being the previously active -#: tab, -2 being the tab active before the previously active tab and -#: so on. Any number larger than the number of tabs goes to the last -#: tab and any number less than the number of previously used tabs in -#: the history goes to the oldest previously used tab in the history:: - -#: map ctrl+alt+1 goto_tab 1 -#: map ctrl+alt+2 goto_tab 2 - -#: Just as with new_window above, you can also pass the name of -#: arbitrary commands to run when using new_tab and new_tab_with_cwd. -#: Finally, if you want the new tab to open next to the current tab -#: rather than at the end of the tabs list, use:: - -#: map ctrl+t new_tab !neighbor [optional cmd to run] -#: }}} - -#: Layout management {{{ - -#: Next layout - -# map kitty_mod+l next_layout - - -#: You can also create shortcuts to switch to specific layouts:: - -#: map ctrl+alt+t goto_layout tall -#: map ctrl+alt+s goto_layout stack - -#: Similarly, to switch back to the previous layout:: - -#: map ctrl+alt+p last_used_layout - -#: There is also a toggle_layout action that switches to the named -#: layout or back to the previous layout if in the named layout. -#: Useful to temporarily "zoom" the active window by switching to the -#: stack layout:: - -#: map ctrl+alt+z toggle_layout stack -#: }}} - -#: Font sizes {{{ - -#: You can change the font size for all top-level kitty OS windows at -#: a time or only the current one. - -#: Increase font size - -# map kitty_mod+equal change_font_size all +2.0 -# map kitty_mod+plus change_font_size all +2.0 -# map kitty_mod+kp_add change_font_size all +2.0 -# map cmd+plus change_font_size all +2.0 -# map cmd+equal change_font_size all +2.0 -# map shift+cmd+equal change_font_size all +2.0 - -#: Decrease font size - -# map kitty_mod+minus change_font_size all -2.0 -# map kitty_mod+kp_subtract change_font_size all -2.0 -# map cmd+minus change_font_size all -2.0 -# map shift+cmd+minus change_font_size all -2.0 - -#: Reset font size - -# map kitty_mod+backspace change_font_size all 0 -# map cmd+0 change_font_size all 0 - - -#: To setup shortcuts for specific font sizes:: - -#: map kitty_mod+f6 change_font_size all 10.0 - -#: To setup shortcuts to change only the current OS window's font -#: size:: - -#: map kitty_mod+f6 change_font_size current 10.0 -#: }}} - -#: Select and act on visible text {{{ - -#: Use the hints kitten to select text and either pass it to an -#: external program or insert it into the terminal or copy it to the -#: clipboard. - -#: Open URL - -# map kitty_mod+e open_url_with_hints - -#:: Open a currently visible URL using the keyboard. The program used -#:: to open the URL is specified in open_url_with. - -#: Insert selected path - -# map kitty_mod+p>f kitten hints --type path --program - - -#:: Select a path/filename and insert it into the terminal. Useful, -#:: for instance to run git commands on a filename output from a -#:: previous git command. - -#: Open selected path - -# map kitty_mod+p>shift+f kitten hints --type path - -#:: Select a path/filename and open it with the default open program. - -#: Insert selected line - -# map kitty_mod+p>l kitten hints --type line --program - - -#:: Select a line of text and insert it into the terminal. Useful for -#:: the output of things like: `ls -1`. - -#: Insert selected word - -# map kitty_mod+p>w kitten hints --type word --program - - -#:: Select words and insert into terminal. - -#: Insert selected hash - -# map kitty_mod+p>h kitten hints --type hash --program - - -#:: Select something that looks like a hash and insert it into the -#:: terminal. Useful with git, which uses SHA1 hashes to identify -#:: commits. - -#: Open the selected file at the selected line - -# map kitty_mod+p>n kitten hints --type linenum - -#:: Select something that looks like filename:linenum and open it in -#:: your default editor at the specified line number. - -#: Open the selected hyperlink - -# map kitty_mod+p>y kitten hints --type hyperlink - -#:: Select a hyperlink (i.e. a URL that has been marked as such by -#:: the terminal program, for example, by `ls --hyperlink=auto`). - - -#: The hints kitten has many more modes of operation that you can map -#: to different shortcuts. For a full description see hints kitten -#: . -#: }}} - -#: Miscellaneous {{{ - -#: Show documentation - -# map kitty_mod+f1 show_kitty_doc overview - -#: Toggle fullscreen - -# map kitty_mod+f11 toggle_fullscreen -# map ctrl+cmd+f toggle_fullscreen - -#: Toggle maximized - -# map kitty_mod+f10 toggle_maximized - -#: Toggle macOS secure keyboard entry - -# map opt+cmd+s toggle_macos_secure_keyboard_entry - -#: Unicode input - -# map kitty_mod+u kitten unicode_input -# map ctrl+cmd+space kitten unicode_input - -#: Edit config file - -# map kitty_mod+f2 edit_config_file -# map cmd+, edit_config_file - -#: Open the kitty command shell - -# map kitty_mod+escape kitty_shell window - -#:: Open the kitty shell in a new window / tab / overlay / os_window -#:: to control kitty using commands. - -#: Increase background opacity - -# map kitty_mod+a>m set_background_opacity +0.1 - -#: Decrease background opacity - -# map kitty_mod+a>l set_background_opacity -0.1 - -#: Make background fully opaque - -# map kitty_mod+a>1 set_background_opacity 1 - -#: Reset background opacity - -# map kitty_mod+a>d set_background_opacity default - -#: Reset the terminal - -# map kitty_mod+delete clear_terminal reset active -# map opt+cmd+r clear_terminal reset active - -#:: You can create shortcuts to clear/reset the terminal. For -#:: example:: - -#:: # Reset the terminal -#:: map f1 clear_terminal reset active -#:: # Clear the terminal screen by erasing all contents -#:: map f1 clear_terminal clear active -#:: # Clear the terminal scrollback by erasing it -#:: map f1 clear_terminal scrollback active -#:: # Scroll the contents of the screen into the scrollback -#:: map f1 clear_terminal scroll active -#:: # Clear everything on screen up to the line with the cursor or the start of the current prompt (needs shell integration) -#:: map f1 clear_terminal to_cursor active -#:: # Same as above except cleared lines are moved into scrollback -#:: map f1 clear_terminal to_cursor_scroll active - -#:: If you want to operate on all kitty windows instead of just the -#:: current one, use all instead of active. - -#:: Some useful functions that can be defined in the shell rc files -#:: to perform various kinds of clearing of the current window: - -#:: .. code-block:: sh - -#:: clear-only-screen() { -#:: printf "\e[H\e[2J" -#:: } - -#:: clear-screen-and-scrollback() { -#:: printf "\e[H\e[3J" -#:: } - -#:: clear-screen-saving-contents-in-scrollback() { -#:: printf "\e[H\e[22J" -#:: } - -#:: For instance, using these escape codes, it is possible to remap -#:: Ctrl+L to both scroll the current screen contents into the -#:: scrollback buffer and clear the screen, instead of just clearing -#:: the screen. For ZSH, in ~/.zshrc, add: - -#:: .. code-block:: zsh - -#:: ctrl_l() { -#:: builtin print -rn -- $'\r\e[0J\e[H\e[22J' >"$TTY" -#:: builtin zle .reset-prompt -#:: builtin zle -R -#:: } -#:: zle -N ctrl_l -#:: bindkey '^l' ctrl_l - -#:: Alternatively, you can just add map ctrl+l clear_terminal -#:: to_cursor_scroll active to kitty.conf which works with no changes -#:: to the shell rc files, but only clears up to the prompt, it does -#:: not clear anytext at the prompt itself. - -#: Clear up to cursor line - -# map cmd+k clear_terminal to_cursor active - -#: Reload kitty.conf - -# map kitty_mod+f5 load_config_file -# map ctrl+cmd+, load_config_file - -#:: Reload kitty.conf, applying any changes since the last time it -#:: was loaded. Note that a handful of options cannot be dynamically -#:: changed and require a full restart of kitty. Particularly, when -#:: changing shortcuts for actions located on the macOS global menu -#:: bar, a full restart is needed. You can also map a keybinding to -#:: load a different config file, for example:: - -#:: map f5 load_config /path/to/alternative/kitty.conf - -#:: Note that all options from the original kitty.conf are discarded, -#:: in other words the new configuration *replace* the old ones. - -#: Debug kitty configuration - -# map kitty_mod+f6 debug_config -# map opt+cmd+, debug_config - -#:: Show details about exactly what configuration kitty is running -#:: with and its host environment. Useful for debugging issues. - -#: Send arbitrary text on key presses - -#:: E.g. map ctrl+shift+alt+h send_text all Hello World - -#:: You can tell kitty to send arbitrary (UTF-8) encoded text to the -#:: client program when pressing specified shortcut keys. For -#:: example:: - -#:: map ctrl+alt+a send_text all Special text - -#:: This will send "Special text" when you press the Ctrl+Alt+A key -#:: combination. The text to be sent decodes ANSI C escapes -#:: so you can use escapes like \e to send control -#:: codes or \u21fb to send Unicode characters (or you can just input -#:: the Unicode characters directly as UTF-8 text). You can use -#:: `kitten show-key` to get the key escape codes you want to -#:: emulate. - -#:: The first argument to send_text is the keyboard modes in which to -#:: activate the shortcut. The possible values are normal, -#:: application, kitty or a comma separated combination of them. The -#:: modes normal and application refer to the DECCKM cursor key mode -#:: for terminals, and kitty refers to the kitty extended keyboard -#:: protocol. The special value all means all of them. - -#:: Some more examples:: - -#:: # Output a word and move the cursor to the start of the line (like typing and pressing Home) -#:: map ctrl+alt+a send_text normal Word\e[H -#:: map ctrl+alt+a send_text application Word\eOH -#:: # Run a command at a shell prompt (like typing the command and pressing Enter) -#:: map ctrl+alt+a send_text normal,application some command with arguments\r - -#: Open kitty Website - -# map shift+cmd+/ open_url https://sw.kovidgoyal.net/kitty/ - -#: Hide macOS kitty application - -# map cmd+h hide_macos_app - -#: Hide macOS other applications - -# map opt+cmd+h hide_macos_other_apps - -#: Minimize macOS window - -# map cmd+m minimize_macos_window - -#: Quit kitty - -# map cmd+q quit - -#: }}} - -#: }}} diff --git a/general/configs/rofi/spotlight/README.md b/general/configs/rofi/spotlight/README.md deleted file mode 100644 index 3414477..0000000 --- a/general/configs/rofi/spotlight/README.md +++ /dev/null @@ -1,107 +0,0 @@ -## rofi: *spotlight* - -A spotlight-like rofi. Supports file and web search. - -

- rofi: spotlight -
- - rofi: spotlight - -

- -#### Dependencies - -+ `rofi-git master branch` -+ `python3` -+ `bash` -+ `fd (optional)` -+ `an icon theme (optional)` - -#### Icon themes used: - -+ Papirus -+ Tela Blue - -#### Run it by: - -```bash -$ rofi -modi "Global Search":"rofi-spotlight/rofi-spotlight.sh" -show "Global Search" \ --config rofi-spotlight/rofi.rasi -``` - -#### Recommendation - -+ Install `fd` for faster file searching. Defaults to `find` if not installed. - -#### Configuration: - -You can change the following variables in the `rofi-spotlight.sh` -+ Terminal Emulator -+ File Manager -+ Bluetooth sender - -You can change the following variables in the `web-search.py` -+ Search engine -+ Web browser -+ Terminal Emulator - -#### Available commands: - -Just type them on rofi search bar: - -+ **`:help`** to print the help message -+ **`:h`** or **`:hidden`** to show hidden files/directories -+ **`:xdg XDGDIR`** to jump to an xdg directory - -Examples: - -``` -:xdg DOCUMENTS -:xdg DOWNLOADS - -# Also supports incomplete path. Examples: - -:xdg doc # Same as :xdg DOCUMENTS -:xdg down # Same as :xdg DOWNLOADS - -# For more info about XDG dirs, see: -# man xdg-user-dir -``` - -**File search syntaxes:** -+ **`!`** to search for a file and web suggestions -+ **`?`** to search parent directories - -Examples: - -``` -!half-life 3 -?portal 3 -``` - -**Web search syntaxes:** - -+ **`!`** to get a search suggestions -+ **`:web `** to also to gets search suggestions -+ **`:webbro `** to search directly from your browser - -Examples: - -``` -!how to install archlinux -:web how to install gentoo -:webbro how to install wine in windowsxp -``` - -#### TODOs: - -- [x] Web search support -- [x] Cleaner bash script - -#### Notes: - -+ This is not a file manager nor a web browser. This is a file/web-searching rofi. Nothing else. -+ Default rofi design is better with blur. Rofi's appearance can be change in `rofi.rasi`. It uses CSS syntax. More info by executing `man rofi-theme` in your terminal emulator. - -#### Credits to [these people](https://github.com/manilarome/rofi-spotlight/graphs/contributors) diff --git a/general/configs/rofi/spotlight/icons/ddg.svg b/general/configs/rofi/spotlight/icons/ddg.svg deleted file mode 100644 index 20ea387..0000000 --- a/general/configs/rofi/spotlight/icons/ddg.svg +++ /dev/null @@ -1,615 +0,0 @@ - - - - - - - - image/svg+xml - - - - - - - - - diff --git a/general/configs/rofi/spotlight/icons/google.svg b/general/configs/rofi/spotlight/icons/google.svg deleted file mode 100644 index 21e5bf3..0000000 --- a/general/configs/rofi/spotlight/icons/google.svg +++ /dev/null @@ -1,365 +0,0 @@ - - - - - - - - image/svg+xml - - - - - - - - - diff --git a/general/configs/rofi/spotlight/icons/history.svg b/general/configs/rofi/spotlight/icons/history.svg deleted file mode 100644 index 872bac8..0000000 --- a/general/configs/rofi/spotlight/icons/history.svg +++ /dev/null @@ -1,75 +0,0 @@ - - - - - - image/svg+xml - - - - - - - - - - - - diff --git a/general/configs/rofi/spotlight/icons/result.svg b/general/configs/rofi/spotlight/icons/result.svg deleted file mode 100644 index 0f4d883..0000000 --- a/general/configs/rofi/spotlight/icons/result.svg +++ /dev/null @@ -1,57 +0,0 @@ - - - - - - image/svg+xml - - - - - - - - - diff --git a/general/configs/rofi/spotlight/rofi-spotlight.sh b/general/configs/rofi/spotlight/rofi-spotlight.sh deleted file mode 100755 index d0b76aa..0000000 --- a/general/configs/rofi/spotlight/rofi-spotlight.sh +++ /dev/null @@ -1,692 +0,0 @@ -#!/usr/bin/env bash - -TMP_DIR="/tmp/rofi/${USER}/" - -PREV_LOC_FILE="${TMP_DIR}rofi_fb_prevloc" -CURRENT_FILE="${TMP_DIR}rofi_fb_current_file" - -MY_PATH="$(realpath "$0" | xargs dirname)" -HIST_FILE="${MY_PATH}/history.txt" - -OPENER=xdg-open -TERM_EMU=kitty -TEXT_EDITOR=$EDITOR -FILE_MANAGER=y -BLUETOOTH_SEND=blueman-sendto - -CUR_DIR=$PWD -NEXT_DIR="" -FD_INSTALLED=$(command -v fd) - -SHOW_HIDDEN=false - -# Setup menu options -declare -a OPEN_FILE_LOCATION=( - "Open file location in ${TERM_EMU}" - "Open file location in ${FILE_MANAGER}" -) -declare -a RUN_COMMANDS=( - "Run" - "Execute in ${TERM_EMU}" -) -declare -a STANDARD_CONTROLS=( - "Move to trash" - "Delete" - "Back" -) -declare -a SHELL_NO_X_OPTIONS=( - "Edit" - "${OPEN_FILE_LOCATION[@]}" - "${STANDARD_CONTROLS[@]}" -) -declare -a SHELL_OPTIONS=( - "${RUN_COMMANDS[@]}" - "${SHELL_NO_X_OPTIONS[@]}" -) -declare -a BIN_NO_X_OPTIONS=( - "${OPEN_FILE_LOCATION[@]}" - "Back" -) -declare -a BIN_OPTIONS=( - "${RUN_COMMANDS[@]}" - "${BIN_NO_X_OPTIONS[@]}" -) -declare -a TEXT_OPTIONS=("${SHELL_NO_X_OPTIONS[@]}") -declare -a HTML_OPTIONS=( - "Open" - "Edit" - "${OPEN_FILE_LOCATION[@]}" - "${STANDARD_CONTROLS[@]}" -) -declare -a XCF_SVG_OPTIONS=( - "Open" - "${OPEN_FILE_LOCATION[@]}" - "${STANDARD_CONTROLS[@]}" -) -declare -a IMAGE_OPTIONS=( - "Open" - "Send via Bluetooth" - "${OPEN_FILE_LOCATION[@]}" - "${STANDARD_CONTROLS[@]}" -) - -declare -a ALL_OPTIONS=() - -# Combine all context menu -COMBINED_OPTIONS=( - "${SHELL_OPTIONS[@]}" - "${IMAGE_OPTIONS[@]}" -) - -# Remove duplicates -ALL_OPTIONS=("$(printf '%s\n' "${COMBINED_OPTIONS[@]}" | sort -u)") - -# Create tmp dir for rofi -[ ! -d "${TMP_DIR}" ] && mkdir -p "${TMP_DIR}"; - -# Create hist file if it doesn't exist -[ ! -f "${HIST_FILE}" ] && touch "${HIST_FILE}" - -# Help message -if [ -n "$*" ] && [[ "$*" = ":help" ]] -then - echo -en "Rofi Spotlight -A Rofi with file and web searching functionality - -Commands: -:help to print this help message -:h or :hidden to show hidden files/dirs -:sh or :show_hist to show search history -:ch or :clear_hist to clear search history -:xdg to jump to an xdg directory -Examples: - :xdg DOCUMENTS - :xdg DOWNLOADS -Also supports incomplete path: -Examples: - :xdg doc - :xdg down -For more info about XDG dirs, see: -\`man xdg-user-dir\` - -File search syntaxes: -! to search for a file and web suggestions -? to search parent directories -Examples: - !half-life 3 - ?portal 3 - -Web search syntaxes: -! to gets search suggestions -:web/:w to also to gets search suggestions -:webbro/:wb to search directly from your browser -Examples: - !how to install archlinux - :web how to install gentoo - :w how to make a nuclear fission - :webbro how to install wine in windowsxp -Back\0icon\x1fdraw-arrow-back\n" - - exit -fi - -# Return the icon string -function icon_file_type(){ - icon_name="" - mime_type=$(file --mime-type -b "${1}") - - case "${mime_type}" in - "inode/directory") - case "${1}" in - "Desktop/" ) - icon_name='folder-blue-desktop' - ;; - "Documents/" ) - icon_name='folder-blue-documents' - ;; - "Downloads/" ) - icon_name='folder-blue-downloads' - ;; - "Music/" ) - icon_name='folder-blue-music' - ;; - "Pictures/" ) - icon_name='folder-blue-pictures' - ;; - "Public/" ) - icon_name='folder-blue-public' - ;; - "Templates/" ) - icon_name='folder-blue-templates' - ;; - "Videos/" ) - icon_name='folder-blue-videos' - ;; - "root/" ) - icon_name='folder-root' - ;; - "home/" | "${USER}/") - icon_name='folder-home' - ;; - *"$" ) - icon_name='folder-blue' - ;; - *) - icon_name='folder-blue' - ;; - esac - ;; - "inode/symlink" ) - icon_name='inode-symlink' - ;; - "audio/flac" | "audio/mpeg" ) - icon_name='music' - ;; - "video/mp4" ) - icon_name='video-mp4' - ;; - "video/x-matroska" ) - icon_name=video-x-matroska - ;; - "image/x-xcf" ) - # notify-send '123' - icon_name='image-x-xcf' - ;; - "image/jpeg" | "image/png" | "image/svg+xml") - icon_name="${CUR_DIR}/${1}" - ;; - "image/gif" ) - icon_name='gif' - ;; - "image/vnd.adobe.photoshop" ) - icon_name='image-vnd.adobe.photoshop' - ;; - "image/webp" ) - icon_name='gif' - ;; - "application/x-pie-executable" ) - icon_name='binary' - ;; - "application/pdf" ) - icon_name='pdf' - ;; - "application/zip" ) - icon_name='application-zip' - ;; - "application/x-xz" ) - icon_name='application-x-xz-compressed-tar' - ;; - "application/x-7z-compressed" ) - icon_name='application-x-7zip' - ;; - "application/x-rar" ) - icon_name='application-x-rar' - ;; - "application/octet-stream" | "application/x-iso9660-image" ) - icon_name='application-x-iso' - ;; - "application/x-dosexec" ) - icon_name='application-x-ms-dos-executable' - ;; - "text/plain" ) - icon_name='application-text' - ;; - "text/x-shellscript" ) - icon_name='application-x-shellscript' - ;; - "text/html" ) - icon_name='text-html' - ;; - "font/sfnt" | "application/vnd.ms-opentype" ) - icon_name='application-x-font-ttf' - ;; - * ) - case "${1}" in - *."docx" | *".doc" ) - icon_name='application-msword' - ;; - *."apk" ) - icon_name='android-package-archive' - ;; - * ) - icon_name='unknown' - ;; - esac - ;; - esac - - echo -en "$1\0icon\x1f$icon_name\n" -} - -export -f icon_file_type - -# Pass the argument to python script -function web_search() { - # Pass the search query to web-search script - "${MY_PATH}/web-search.py" "${1}" - exit; -} - -# Handles the web search method -if [ ! -z "$@" ] && ([[ "$@" == ":webbro"* ]] || [[ "$@" == ":wb"* ]]) -then - remove='' - [[ "$*" = ":webbro"* ]] && remove=":webbro" || remove=":wb" - - # Search directly from your web browser - web_search "$(printf '%s\n' "${1//$remove/}")" - exit; - -elif [ ! -z "$@" ] && ([[ "$@" == ":web"* ]] || [[ "$@" == ":w"* ]]) -then - remove='' - [[ "$*" = ":web"* ]] && remove=":web" || remove=":w" - - # Get search suggestions - web_search "!$(printf '%s\n' "${1//$remove/}")" - exit; -fi - -function find_query() { - QUERY=${1} - if [[ ! "${QUERY}" =~ ( |\') ]] - then - if [ -z "$FD_INSTALLED" ]; - then - find "${HOME}" -iname *"${QUERY}"* | sed "s/\/home\/$USER/\~/" | - awk -v MY_PATH="${MY_PATH}" '{print $0"\0icon\x1f"MY_PATH"/icons/result.svg\n"}' - else - fd -H ${QUERY} ${HOME} | sed "s/\/home\/$USER/\~/" | - awk -v MY_PATH="${MY_PATH}" '{print $0"\0icon\x1f"MY_PATH"/icons/result.svg\n"}' - fi - fi -} - -# File and calls to the web search -if [ ! -z "$@" ] && ([[ "$@" == ?(\~)/* ]] || [[ "$@" == \?* ]] || [[ "$@" == \!* ]]) -then - QUERY=$@ - - echo "${QUERY}" >> "${HIST_FILE}" - - if [[ "$@" == ?(\~)/* ]] - then - [[ "$*" = \~* ]] && QUERY="${QUERY//"~"/"$HOME"}" - - coproc ${OPENER} "${QUERY}" > /dev/null 2>&1 - exec 1>&- - exit - - elif [[ "$@" == \?* ]] - then - find_query ${QUERY#\?} - - else - # Find the file - find_query ${QUERY#!} - - # Web search - web_search "! ${QUERY#!}" - fi - exit; -fi - -# Create notification if there's an error -function create_notification() { - case "${1}" in - "denied" ) - notify-send -a "Global Search" "Permission denied!" \ - 'You have no permission to access '"${CUR_DIR}!" - ;; - "deleted" ) - notify-send -a "Global Search" "Success!" \ - 'File deleted!' - ;; - "trashed" ) - notify-send -a "Global Search" "Success!" \ - 'The file has been moved to trash!' - ;; - "cleared" ) - notify-send -a "Global Search" "Success!" \ - 'Search history has been successfully cleared!' - ;; - * ) - notify-send -a "Global Search" "Somethings wrong I can feel it!" \ - 'This incident will be reported!' - ;; - esac -} - -# Show the files in the current directory -function navigate_to() { - # process current dir. - if [ -n "${CUR_DIR}" ] - then - CUR_DIR=$(readlink -e "${CUR_DIR}") - if [ ! -d "${CUR_DIR}" ] || [ ! -r "${CUR_DIR}" ] - then - create_notification "denied" - CUR_DIR=$(realpath ${CUR_DIR} | xargs dirname) - echo "${CUR_DIR}" > "${PREV_LOC_FILE}" - else - echo "${CUR_DIR}/" > "${PREV_LOC_FILE}" - fi - pushd "${CUR_DIR}" >/dev/null || exit - fi - - printf "..\0icon\x1fup\n" - - if [[ -z "$FD_INSTALLED" ]] - then - #Group directories - if [[ ${SHOW_HIDDEN} == true ]] - then - for i in .*/ - do - [[ -d "${i}" ]] && ([[ "${i}" != "./" ]] && [[ "${i}" != "../"* ]]) && icon_file_type "${i}" - done - fi - for i in */ - do - [[ -d "${i}" ]] && icon_file_type "${i}" - done - #Group files - if [[ ${SHOW_HIDDEN} = true ]] - then - for i in .* - do - [[ -f "${i}" ]] && icon_file_type "${i}" - done - fi - for i in * - do - [[ -f "${i}" ]] && icon_file_type "${i}" - done - else - THREADS=$(getconf _NPROCESSORS_ONLN) - export CUR_DIR - if [[ ${SHOW_HIDDEN} == true ]] - then - fd -Ht d -d 1 -x bash -c 'icon_file_type "$1/"' _ {} \ | sort -V --parallel=$THREADS - fd -Ht f -d 1 -x bash -c 'icon_file_type "$1"' _ {} \ | sort -V --parallel=$THREADS - else - fd -t d -d 1 -x bash -c 'icon_file_type "$1/"' _ {} \ | sort -V --parallel=$THREADS - fd -t f -d 1 -x bash -c 'icon_file_type "$1"' _ {} \ | sort -V --parallel=$THREADS - fi - fi -} - -# Set XDG dir -function return_xdg_dir() { - target_dir=${1^^} - - if [[ "HOME" == *"${target_dir}"* ]] - then - CUR_DIR=$(xdg-user-dir) - - elif [[ "DESKTOP" == *"${target_dir}"* ]] - then - CUR_DIR=$(xdg-user-dir DESKTOP) - - elif [[ "DOCUMENTS" == *"${target_dir}"* ]] - then - CUR_DIR=$(xdg-user-dir DOCUMENTS) - - elif [[ "DOWNLOADS" == *"${target_dir}"* ]] - then - CUR_DIR=$(xdg-user-dir DOWNLOAD) - - elif [[ "MUSIC" == *"${target_dir}"* ]] - then - CUR_DIR=$(xdg-user-dir MUSIC) - - elif [[ "PICTURES" == *"${target_dir}"* ]] - then - CUR_DIR=$(xdg-user-dir PICTURES) - - elif [[ "PUBLICSHARE" == *"${target_dir}"* ]] - then - CUR_DIR=$(xdg-user-dir PUBLICSHARE) - - elif [[ "TEMPLATES" == *"${target_dir}"* ]] - then - CUR_DIR=$(xdg-user-dir TEMPLATES) - - elif [[ "VIDEOS" == *"${target_dir}"* ]] - then - CUR_DIR=$(xdg-user-dir VIDEOS) - - elif [[ "ROOT" == *"${target_dir}"* ]] - then - CUR_DIR="/" - - else - CUR_DIR="${HOME}" - fi - navigate_to - exit; -} - -# Show and Clear History -if [ ! -z "$@" ] && ([[ "$@" == ":sh" ]] || [[ "$@" == ":show_hist" ]]) -then - hist=$(tac "${HIST_FILE}") - - echo -en "Back\0icon\x1fdraw-arrow-back\n" - [ -z "${hist}" ] && echo -en "No History Yet\0icon\x1ftext-plain\n" - - while IFS= read -r line; - do - echo -en "${line}\0icon\x1f${MY_PATH}/icons/history.svg\n"; - done <<< "${hist}" - - exit; -elif [ ! -z "$@" ] && ([[ "$@" == ":ch" ]] || [[ "$@" == ":clear_hist" ]]) -then - :> "${HIST_FILE}" - create_notification "cleared" - - CUR_DIR="${HOME}" - navigate_to - exit; -fi - -# Accepts XDG command -if [[ ! -z "$@" ]] && [[ "$@" == ":xdg"* ]] -then - NEXT_DIR=${*//":xdg "/} - - [[ -n "$NEXT_DIR" ]] && return_xdg_dir "${NEXT_DIR}" || return_xdg_dir "${HOME}" -fi - -# Read last location, otherwise we default to PWD. -[ -f "${PREV_LOC_FILE}" ] && CUR_DIR=$(< "${PREV_LOC_FILE}") - -if [[ ! -z "$@" ]] && ([[ "$@" == ":h" ]] || [[ "$@" == ":hidden" ]]) -then - SHOW_HIDDEN=true - navigate_to - exit; -fi - -# Handle argument. -[ -n "$*" ] && CUR_DIR="${CUR_DIR}/$*" - -# Context Menu -if [ -n "$*" ] && [[ "${ALL_OPTIONS[*]} " = *"$*"* ]] -then - case "${1}" in - "Run" ) - coproc ( eval "$(< ${CURRENT_FILE})" & > /dev/null 2>&1 ) - kill -9 $(pgrep rofi) - ;; - "Execute in ${TERM_EMU}" ) - coproc ( eval "${TERM_EMU} \"$(< ${CURRENT_FILE})\"" & > /dev/null 2>&1 ) - kill -9 $(pgrep rofi) - ;; - "Open" ) - coproc ( eval "${OPENER} \"$(< ${CURRENT_FILE})\"" & > /dev/null 2>&1 ) - kill -9 $(pgrep rofi) - ;; - "Open file location in ${TERM_EMU}" ) - file_path="$(< ${CURRENT_FILE})" - coproc ( ${TERM_EMU} bash -c "cd ${file_path%/*} ; ${SHELL}" & > /dev/null 2>&1 ) - kill -9 $(pgrep rofi) - ;; - "Open file location in ${FILE_MANAGER}" ) - file_path="$(< "${CURRENT_FILE}")" - coproc ( eval "${FILE_MANAGER} "${file_path%/*}"" & > /dev/null 2>&1 ) - kill -9 $(pgrep rofi) - ;; - "Edit" ) - coproc ( eval "${TERM_EMU} ${TEXT_EDITOR} \"$(< ${CURRENT_FILE})\"" & > /dev/null 2>&1 ) - kill -9 $(pgrep rofi) - ;; - "Move to trash" ) - coproc( gio trash "$(< ${CURRENT_FILE})" & > /dev/null 2>&1 ) - create_notification "trashed" - CUR_DIR="$(dirname "$(< ${CURRENT_FILE})")" - navigate_to - ;; - "Delete" ) - shred "$(< ${CURRENT_FILE})" - rm "$(< ${CURRENT_FILE})" - create_notification "deleted" - CUR_DIR="$(dirname "$(< ${CURRENT_FILE})")" - navigate_to - ;; - "Send via Bluetooth" ) - rfkill unblock bluetooth && bluetoothctl power on - sleep 1 - blueman-sendto "$(< ${CURRENT_FILE})" & > /dev/null 2>&1 - kill -9 $(pgrep rofi) - ;; - "Back" ) - CUR_DIR="$(< ${PREV_LOC_FILE})" - navigate_to - ;; - esac - exit; -fi - -function context_menu_icons() { - - if [[ "${1}" == "Run" ]] - then - echo '\0icon\x1fsystem-run\n' - - elif [[ "${1}" == "Execute in ${TERM_EMU}" ]] - then - echo "\0icon\x1f${TERM_EMU}\n" - - elif [[ "${1}" == "Open" ]] - then - echo "\0icon\x1futilities-x-terminal\n" - - elif [[ "${1}" == "Open file location in ${TERM_EMU}" ]] - then - echo "\0icon\x1f${TERM_EMU}\n" - - elif [[ "${1}" == "Open file location in ${FILE_MANAGER}" ]] - then - echo "\0icon\x1fblue-folder-open\n" - - elif [[ "${1}" == "Edit" ]] - then - echo "\0icon\x1faccessories-text-editor\n" - - elif [[ "${1}" == "Move to trash" ]] - then - echo "\0icon\x1fapplication-x-trash\n" - - elif [[ "${1}" == "Delete" ]] - then - echo "\0icon\x1findicator-trashindicator\n" - - elif [[ "${1}" == "Send via Bluetooth" ]] - then - echo "\0icon\x1fbluetooth\n" - - elif [[ "${1}" == "Back" ]] - then - echo "\0icon\x1fback\n" - fi -} - -function print_context_menu() { - declare -a arg_arr=("${!1}") - - for menu in "${arg_arr[@]}" - do - printf "$menu$(context_menu_icons "${menu}")\n" - done -} - -function context_menu() { - - type="$(file --mime-type -b "${CUR_DIR}")" - - if [ -w "${CUR_DIR}" ] && [[ "${type}" == "text/x-shellscript" ]] - then - if [ -x "${CUR_DIR}" ]; - then - print_context_menu SHELL_OPTIONS[@] - else - print_context_menu SHELL_NO_X_OPTIONS[@] - fi - - elif [[ "${type}" == "application/x-executable" ]] || [[ "${type}" == "application/x-pie-executable" ]] - then - if [ -x "${CUR_DIR}" ] - then - print_context_menu BIN_OPTIONS[@] - else - print_context_menu BIN_NO_X_OPTIONS[@] - fi - - elif [[ "${type}" == "text/plain" ]] - then - print_context_menu TEXT_OPTIONS[@] - - elif [[ "${type}" == "text/html" ]] - then - print_context_menu HTML_OPTIONS[@] - - elif [[ "${type}" == "image/jpeg" ]] || [[ "${type}" == "image/png" ]] - then - print_context_menu IMAGE_OPTIONS[@] - - elif [[ "${type}" == "image/x-xcf" ]] || [[ "${type}" == "image/svg+xml" ]] - then - print_context_menu XCF_SVG_OPTIONS[@] - - elif [ ! -w "${CUR_DIR}" ] && [[ "${type}" == "text/x-shellscript" ]] - then - coproc ( exec "${CUR_DIR}" & > /dev/null 2>&1 ) - - else - if [ ! -d "${CUR_DIR}" ] && [ ! -f "${CUR_DIR}" ] - then - QUERY="${CUR_DIR//*\/\//}" - - echo "${QUERY}" >> "${HIST_FILE}" - - find_query "${QUERY#!}" - - web_search "!${QUERY}" - else - coproc ( ${OPENER} "${CUR_DIR}" & > /dev/null 2>&1 ) - fi - fi - exit; -} - -# If argument is not a directory/folder -if [ ! -d "${CUR_DIR}" ] -then - echo "${CUR_DIR}" > "${CURRENT_FILE}" - context_menu - exit; -fi - -navigate_to diff --git a/general/configs/rofi/spotlight/rofi.rasi b/general/configs/rofi/spotlight/rofi.rasi deleted file mode 100644 index 1c154bf..0000000 --- a/general/configs/rofi/spotlight/rofi.rasi +++ /dev/null @@ -1,152 +0,0 @@ -configuration { - font: "Inter Regular 10"; - show-icons: true; - drun-display-format: "{name}"; - fullscreen: false; - threads: 0; - matching: "fuzzy"; - scroll-method: 0; - disable-history: false; - fullscreen: false; - window-thumbnail: true; -} - -* { - transparent: #00000000; - foreground: #F2F2F2EE; - background-selected: #F2F2F245; - background-active: #F2F2F230; - background-white: #F2F2F211; - background-black: #00000066; - urgent: #E91E6366; - urgent-selected: #E91E6377; -} - -window { - transparency: "real"; - background-color: @transparent; - location: center; - anchor: center; - x-offset: 0px; - height: 500px; - width: 750px; - orientation: vertical; - border-radius: 12px; -} - -prompt { - enabled: false; -} - -button { - action: "ok"; - str: " "; - font: "FantasqueSansMono Nerd Font 11"; - expand: false; - text-color: @foreground; - background-color: @transparent; - vertical-align: 0.7; - horizontal-align: 0.5; -} - -entry { - font: "Inter Regular 11"; - background-color: @transparent; - text-color: @foreground; - expand: true; - vertical-align: 0.5; - horizontal-align: 0.5; - placeholder: "Type to search"; - placeholder-color: @foreground; - blink: true; -} - -case-indicator { - background-color: @transparent; - text-color: @foreground; - vertical-align: 0.5; - horizontal-align: 0.5; -} - -entry-wrapper { - orientation: horizontal; - vertical-align: 0.5; - spacing: 4px; - background-color: @transparent; - children: [ button, entry, case-indicator ]; -} - -inputbar { - background-color: @background-white; - text-color: @foreground; - expand: false; - border-radius: 24px; - margin: 0px 225px 0px 225px; - padding: 10px 10px 10px 10px; - position: north; - children: [ entry-wrapper ]; -} - -listview { - background-color: @transparent; - columns: 2; - spacing: 5px; - cycle: false; - dynamic: true; - layout: vertical; -} - -mainbox { - background-color: @background-black; - children: [ inputbar, listview ]; - spacing: 25px; - padding: 40px 25px 25px 25px; -} - -element { - background-color: @transparent; - text-color: @foreground; - orientation: horizontal; - border-radius: 6px; - padding: 5px 10px 5px 10px; -} - -element-icon { - size: 36px; - border: 0; -} - -element-text { - expand: true; - horizontal-align: 0; - vertical-align: 0.5; - margin: 0 10px 0 10px; -} - -element normal.urgent, -element alternate.urgent { - background-color: @urgent; - text-color: @foreground; - border-radius: 9px; -} - -element normal.active, -element alternate.active { - background-color: @background-active; - text-color: @foreground; -} - -element selected { - background-color: @background-selected; - text-color: @foreground; -} - -element selected.urgent { - background-color: @urgent-selected; - text-color: @foreground; -} - -element selected.active { - background-color: @background-active; - color: @foreground-selected; -} diff --git a/general/configs/rofi/spotlight/web-search.py b/general/configs/rofi/spotlight/web-search.py deleted file mode 100755 index 733f8d9..0000000 --- a/general/configs/rofi/spotlight/web-search.py +++ /dev/null @@ -1,167 +0,0 @@ -#!/usr/bin/env python3 - -# MIT License - -# Copyright (c) 2019 Paolo Donadeo - -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: - -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - -import json -import re -import urllib.parse -import urllib.request -import sys -import os -import datetime -import gzip - -import subprocess as sp - -import html - - -################################################################################ -##### C O N F I G U R A T I O N ###### -################################################################################ -SEARCH_ENGINE = 'duckduckgo' # or 'duckduckgo' -BROWSER = 'firefox' # or 'firefox', 'chromium', 'brave', 'lynx' -TERMINAL = ['kitty', '--'] # or ['st', '-e'] or something like that -################################################################################ - -CONFIG = { - 'BROWSER_PATH' : { - 'chrome' : ['google-chrome-stable'], - 'firefox' : ['firefox'], - 'chromium' : ['chromium-browser'], - 'brave' : ['brave-browser'], - 'lynx' : TERMINAL + ['lynx'] - }, - 'USER_AGENT' : { - 'chrome' : 'Mozilla/5.0 (X11; Fedora; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36', - 'firefox' : 'Mozilla/5.0 (X11; Fedora; Linux x86_64; rv:69.0) Gecko/20100101 Firefox/69.0', - 'chromium' : 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/76.0.3809.100 Chrome/76.0.3809.100 Safari/537.36', - 'brave' : 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36', - 'lynx' : 'Lynx/2.8.9rel.1 libwww-FM/2.14 SSL-MM/1.4.1 OpenSSL/1.1.1d' - }, - 'SEARCH_ENGINE_NAME' : { - 'google' : 'Google', - 'duckduckgo' : 'DuckDuckGo' - }, - 'SEARCH_URL' : { - 'google' : 'https://www.google.com/search?q=', - 'duckduckgo' : 'https://duckduckgo.com/?q=' - }, - 'SUGGESTION_URL' : { - 'google' : 'https://www.google.com/complete/search?', - 'duckduckgo' : 'https://duckduckgo.com/ac/?' - } -} - -def cleanhtml(txt): - return re.sub(r'<.*?>', '', txt) - -def fetch_suggestions(search_string): - if SEARCH_ENGINE == 'google': - r = { - 'q' : search_string, - 'cp' : '11', - 'client' : 'psy-ab', - 'xssi' : 't', - 'gs_ri' : 'gws-wiz', - 'hl' : 'en-IT', - 'authuser' : '0' - } - url = CONFIG['SUGGESTION_URL'][SEARCH_ENGINE] + urllib.parse.urlencode(r) - headers = { - 'sec-fetch-mode' : 'cors', - 'dnt' : '1', - 'accept-encoding' : 'gzip', - 'accept-language' : 'en-US;q=0.9,en;q=0.8', - 'pragma' : 'no-cache', - 'user-agent' : CONFIG['USER_AGENT'][BROWSER], - 'accept' : '*/*', - 'cache-control' : 'no-cache', - 'authority' : 'www.google.com', - 'referer' : 'https://www.google.com/', - 'sec-fetch-site' : 'same-origin' - } - req = urllib.request.Request(url, headers=headers, method='GET') - - reply_data = gzip.decompress(urllib.request.urlopen(req).read()).split(b'\n')[1] - reply_data = json.loads(reply_data) - return [ cleanhtml(res[0]).strip() for res in reply_data[0] ] - else: # 'duckduckgo' - if search_string.startswith('!'): - bang_search = True - search_string = search_string.lstrip('!') - else: - bang_search = False - r = { - 'q' : search_string, - 'callback' : 'autocompleteCallback', - 'kl' : 'wt-wt', - '_' : str(int((datetime.datetime.now().timestamp())*1000)) - } - url = CONFIG['SUGGESTION_URL'][SEARCH_ENGINE] + urllib.parse.urlencode(r) - if bang_search: - url = url.replace('?q=', '?q=!') - headers = { - 'pragma' : 'no-cache', - 'dnt' : '1', - 'accept-encoding' : 'gzip', - 'accept-language' : 'en-US;q=0.9,en;q=0.8', - 'user-agent' : CONFIG['USER_AGENT'][BROWSER], - 'sec-fetch-mode' : 'no-cors', - 'accept' : '*/*', - 'cache-control' : 'no-cache', - 'authority' : 'duckduckgo.com', - 'referer' : 'https://duckduckgo.com/', - 'sec-fetch-site' : 'same-origin', - } - req = urllib.request.Request(url, headers=headers, method='GET') - reply_data = gzip.decompress(urllib.request.urlopen(req).read()).decode('utf8') - reply_data = json.loads(re.match(r'autocompleteCallback\((.*)\);', reply_data).group(1)) - return [ cleanhtml(res['phrase']).strip() for res in reply_data ] - -def main(): - search_string = html.unescape((' '.join(sys.argv[1:])).strip()) - - path_str = os.path.dirname(os.path.realpath(__file__)) + '/' - icon_path_str = path_str + 'icons/' - icon_name = icon_path_str - - if SEARCH_ENGINE == 'google': - icon_name += 'google.svg' - else: - icon_name += 'ddg.svg' - - if search_string.startswith('!'): - search_string = search_string.rstrip('!').strip() - results = fetch_suggestions(search_string) - for r in results: - print(":wb " + html.unescape(r) + "\0icon\x1f"+icon_name+"\n") - else: - url = CONFIG['SEARCH_URL'][SEARCH_ENGINE] + urllib.parse.quote_plus(search_string) - sp.Popen(CONFIG['BROWSER_PATH'][BROWSER] + [url], stdout=sp.DEVNULL, stderr=sp.DEVNULL, shell=False) - -if __name__ == "__main__": - try: - main() - except Exception as e: - if e: - sys.exit(1) diff --git a/general/configs/rofi/themes/arc_dark_transparent_colors.rasi b/general/configs/rofi/themes/arc_dark_transparent_colors.rasi deleted file mode 100755 index 4dc8195..0000000 --- a/general/configs/rofi/themes/arc_dark_transparent_colors.rasi +++ /dev/null @@ -1,34 +0,0 @@ -/******************************************************* - * ROFI Arch Dark Transparent colors for EndeavourOS - * Maintainer: joekamprad - *******************************************************/ -* { - selected-normal-foreground: rgba ( 255, 147, 5, 100 % ); - foreground: rgba ( 196, 203, 212, 100 % ); - normal-foreground: @foreground; - alternate-normal-background: rgba ( 45, 48, 59, 1 % ); - red: rgba ( 220, 50, 47, 100 % ); - selected-urgent-foreground: rgba ( 249, 249, 249, 100 % ); - blue: rgba ( 38, 139, 210, 100 % ); - urgent-foreground: rgba ( 204, 102, 102, 100 % ); - alternate-urgent-background: rgba ( 75, 81, 96, 90 % ); - active-foreground: rgba ( 101, 172, 255, 100 % ); - lightbg: rgba ( 238, 232, 213, 100 % ); - selected-active-foreground: rgba ( 249, 249, 249, 100 % ); - alternate-active-background: rgba ( 45, 48, 59, 88 % ); - background: rgba ( 45, 48, 59, 88 % ); - alternate-normal-foreground: @foreground; - normal-background: rgba ( 45, 48, 59, 1 % ); - lightfg: rgba ( 88, 104, 117, 100 % ); - selected-normal-background: rgba ( 24, 26, 32, 100 % ); - border-color: rgba ( 124, 131, 137, 100 % ); - spacing: 2; - separatorcolor: rgba ( 45, 48, 59, 1 % ); - urgent-background: rgba ( 45, 48, 59, 15 % ); - selected-urgent-background: rgba ( 165, 66, 66, 100 % ); - alternate-urgent-foreground: @urgent-foreground; - background-color: rgba ( 0, 0, 0, 0 % ); - alternate-active-foreground: @active-foreground; - active-background: rgba ( 29, 31, 33, 17 % ); - selected-active-background: rgba ( 26, 28, 35, 100 % ); -} diff --git a/general/configs/rofi/themes/nord.rasi b/general/configs/rofi/themes/nord.rasi deleted file mode 100755 index e81b5eb..0000000 --- a/general/configs/rofi/themes/nord.rasi +++ /dev/null @@ -1,127 +0,0 @@ -/** - * Nordic rofi theme - * Adapted by undiabler - * - * Nord Color palette imported from https://www.nordtheme.com/ - * - */ - - -* { - nord0: #2e3440; - nord1: #3b4252; - nord2: #434c5e; - nord3: #4c566a; - - nord4: #d8dee9; - nord5: #e5e9f0; - nord6: #eceff4; - - nord7: #8fbcbb; - nord8: #88c0d0; - nord9: #81a1c1; - nord10: #5e81ac; - nord11: #bf616a; - - nord12: #d08770; - nord13: #ebcb8b; - nord14: #a3be8c; - nord15: #b48ead; - - foreground: @nord9; - backlight: #ccffeedd; - background-color: transparent; - - highlight: underline bold #eceff4; - - transparent: rgba(46,52,64,0); -} - -window { - location: center; - anchor: center; - transparency: "screenshot"; - padding: 10px; - border: 0px; - border-radius: 6px; - - background-color: @transparent; - spacing: 0; - children: [mainbox]; - orientation: horizontal; -} - -mainbox { - spacing: 0; - children: [ inputbar, message, listview ]; -} - -message { - color: @nord0; - padding: 5; - border-color: @foreground; - border: 0px 2px 2px 2px; - background-color: @nord7; -} - -inputbar { - color: @nord6; - padding: 11px; - background-color: #3b4252; - - border: 1px; - border-radius: 6px 6px 0px 0px; - border-color: @nord10; -} - -entry, prompt, case-indicator { - text-font: inherit; - text-color:inherit; -} - -prompt { - margin: 0px 1em 0em 0em ; -} - -listview { - padding: 8px; - border-radius: 0px 0px 6px 6px; - border-color: @nord10; - border: 0px 1px 1px 1px; - background-color: rgba(46,52,64,0.9); - dynamic: false; -} - -element { - padding: 3px; - vertical-align: 0.5; - border-radius: 4px; - background-color: transparent; - color: @foreground; - text-color: rgb(216, 222, 233); -} - -element selected.normal { - background-color: @nord7; - text-color: #2e3440; -} - -element-text, element-icon { - background-color: inherit; - text-color: inherit; -} - -button { - padding: 6px; - color: @foreground; - horizontal-align: 0.5; - - border: 2px 0px 2px 2px; - border-radius: 4px 0px 0px 4px; - border-color: @foreground; -} - -button selected normal { - border: 2px 0px 2px 2px; - border-color: @foreground; -} \ No newline at end of file diff --git a/general/configs/rofi/themes/power.rasi b/general/configs/rofi/themes/power.rasi deleted file mode 100755 index 8c70407..0000000 --- a/general/configs/rofi/themes/power.rasi +++ /dev/null @@ -1,78 +0,0 @@ -* { - background: rgba(0, 30, 50, 1); - foreground: #ffffff; - border-color: @background; - bg-selected: #282c34; - grey: #565c64; - spacing: 2; - width: 20em; - margin: 0; - padding: 0; -} - -#window { - background-color: @background; - border: 0; - padding: 0; - location: west; - anchor: west; - height: 40%; - margin: 0; -} - -#mainbox { - background-color: @background; - spacing: 10px; - margin: 10px 0 0 0; - width: 200px; -} - -#inputbar { - children: [prompt,entry]; - background-color: @background; -} - -#listview { - background-color: @background; - fixed-height: true; - margin: 5px 0 0 10px; -} - -#element { - padding: 5px; - background-color: @background; - text-color: @foreground; -} - -element selected { - background-color: @bg-selected; - text-color: @foreground; -} - -element-text { - background-color: inherit; - text-color: inherit; -} - -element-icon { - background-color: inherit; - margin: 0 4px 0 0; - size: 25px; -} - -#entry { - background-color: @background; - text-color: @foreground; - placeholder: "Search"; - placeholder-color: @grey; - font: "Sora Regular 20"; -} - -#prompt { - background-color: @background; - padding: 0 4px; - margin: 0 5px 0 0; - text-color: @foreground; - font: "Sora Regular 20"; -} - diff --git a/general/configs/rofi/themes/runnerTheme.rasi b/general/configs/rofi/themes/runnerTheme.rasi deleted file mode 100755 index 7d4774c..0000000 --- a/general/configs/rofi/themes/runnerTheme.rasi +++ /dev/null @@ -1,78 +0,0 @@ -* { - background: rgba(0, 30, 50, 1); - foreground: #ffffff; - border-color: @background; - bg-selected: #282c34; - grey: #565c64; - spacing: 2; - width: 30em; - margin: 0; - padding: 0; -} - -#window { - background-color: @background; - border: 0; - padding: 0; - location: west; - anchor: west; - height: 70%; - margin: 0; -} - -#mainbox { - background-color: @background; - spacing: 10px; - margin: 10px 0 0 0; - width: 200px; -} - -#inputbar { - children: [prompt,entry]; - background-color: @background; -} - -#listview { - background-color: @background; - fixed-height: true; - margin: 5px 0 0 10px; -} - -#element { - padding: 5px; - background-color: @background; - text-color: @foreground; -} - -element selected { - background-color: @bg-selected; - text-color: @foreground; -} - -element-text { - background-color: inherit; - text-color: inherit; -} - -element-icon { - background-color: inherit; - margin: 0 4px 0 0; - size: 25px; -} - -#entry { - background-color: @background; - text-color: @foreground; - placeholder: "Search"; - placeholder-color: @grey; - font: "Sora Regular 20"; -} - -#prompt { - background-color: @background; - padding: 0 4px; - margin: 0 5px 0 0; - text-color: @foreground; - font: "Sora Regular 20"; -} - diff --git a/general/configs/rofi/themes/sidetab-nord.rasi b/general/configs/rofi/themes/sidetab-nord.rasi deleted file mode 100755 index 49a1f49..0000000 --- a/general/configs/rofi/themes/sidetab-nord.rasi +++ /dev/null @@ -1,78 +0,0 @@ -* { - background: #1e222a; - foreground: #E5E9F0; - border-color: @background; - bg-selected: #282c34; - grey: #565c64; - spacing: 2; - width: 30em; - margin: 0; - padding: 0; -} - -#window { - background-color: @background; - border: 0; - padding: 0; - location: west; - anchor: west; - height: 100%; - margin: 0; -} - -#mainbox { - background-color: @background; - spacing: 10px; - margin: 10px 0 0 0; - width: 200px; -} - -#inputbar { - children: [prompt,entry]; - background-color: @background; -} - -#listview { - background-color: @background; - fixed-height: true; - margin: 5px 0 0 10px; -} - -#element { - padding: 5px; - background-color: @background; - text-color: @foreground; -} - -element selected { - background-color: @bg-selected; - text-color: @foreground; -} - -element-text { - background-color: inherit; - text-color: inherit; -} - -element-icon { - background-color: inherit; - margin: 0 4px 0 0; - size: 25px; -} - -#entry { - background-color: @background; - text-color: @foreground; - placeholder: "Search"; - placeholder-color: @grey; - font: "Sora Regular 20"; -} - -#prompt { - background-color: @background; - padding: 0 4px; - margin: 0 5px 0 0; - text-color: @foreground; - font: "Sora Regular 20"; -} - diff --git a/general/configs/rofi/themes/sidetab.rasi b/general/configs/rofi/themes/sidetab.rasi deleted file mode 100755 index 507e3c4..0000000 --- a/general/configs/rofi/themes/sidetab.rasi +++ /dev/null @@ -1,135 +0,0 @@ -/******************************************************* - * ROFI configs i3 Apps menu for EndeavourOS - * Maintainer: joekamprad - *******************************************************/ -configuration { - font: "Sourcecode Pro Regular 10"; - show-icons: true; - icon-theme: "Arc-X-D"; - display-drun: "Apps"; - drun-display-format: "{name}"; - scroll-method: 0; - disable-history: false; - sidebar-mode: false; -} - -@import "~/.config/rofi/arc_dark_transparent_colors.rasi" - -window { - background-color: @background; - border: 0; - padding: 30; -} -listview { - lines: 10; - columns: 3; -} -mainbox { - border: 0; - padding: 0; -} -message { - border: 2px 0px 0px ; - border-color: @separatorcolor; - padding: 1px ; -} -textbox { - text-color: @foreground; -} -listview { - fixed-height: 0; - border: 8px 0px 0px ; - border-color: @separatorcolor; - spacing: 8px ; - scrollbar: false; - padding: 2px 0px 0px ; -} -element { - border: 0; - padding: 1px ; -} -element-text { - background-color: inherit; - text-color: inherit; -} -element.normal.normal { - background-color: @normal-background; - text-color: @normal-foreground; -} -element.normal.urgent { - background-color: @urgent-background; - text-color: @urgent-foreground; -} -element.normal.active { - background-color: @active-background; - text-color: @active-foreground; -} -element.selected.normal { - background-color: @selected-normal-background; - text-color: @selected-normal-foreground; -} -element.selected.urgent { - background-color: @selected-urgent-background; - text-color: @selected-urgent-foreground; -} -element.selected.active { - background-color: @selected-active-background; - text-color: @selected-active-foreground; -} -element.alternate.normal { - background-color: @alternate-normal-background; - text-color: @alternate-normal-foreground; -} -element.alternate.urgent { - background-color: @alternate-urgent-background; - text-color: @alternate-urgent-foreground; -} -element.alternate.active { - background-color: @alternate-active-background; - text-color: @alternate-active-foreground; -} -scrollbar { - width: 4px ; - border: 0; - handle-color: @normal-foreground; - handle-width: 8px ; - padding: 0; -} -mode-switcher { - border: 2px 0px 0px ; - border-color: @separatorcolor; -} -button { - spacing: 0; - text-color: @normal-foreground; -} -button.selected { - background-color: @selected-normal-background; - text-color: @selected-normal-foreground; -} -inputbar { - spacing: 0; - text-color: @normal-foreground; - padding: 1px ; -} -case-indicator { - spacing: 0; - text-color: @normal-foreground; -} -entry { - spacing: 0; - text-color: @normal-foreground; -} -prompt { - spacing: 0; - text-color: @normal-foreground; -} -inputbar { - children: [ prompt,textbox-prompt-colon,entry,case-indicator ]; -} -textbox-prompt-colon { - expand: false; - str: ":"; - margin: 0px 0.3em 0em 0em ; - text-color: @normal-foreground; -} \ No newline at end of file diff --git a/general/configs/terminator/config b/general/configs/terminator/config deleted file mode 100755 index 6a401a1..0000000 --- a/general/configs/terminator/config +++ /dev/null @@ -1,21 +0,0 @@ -[global_config] -[keybindings] -[profiles] - [[default]] - background_darkness = 0.9 - background_type = transparent - font = Source Code Pro 10 - foreground_color = "#cc5c00" - custom_command = fish - use_system_font = False - title_transmit_fg_color = "#000000" - title_transmit_bg_color = "#cc5c00" -[layouts] - [[default]] - [[[window0]]] - type = Window - parent = "" - [[[child1]]] - type = Terminal - parent = window0 -[plugins] diff --git a/general/configs/yazi/theme.toml b/general/configs/yazi/theme.toml deleted file mode 100644 index a1460bf..0000000 --- a/general/configs/yazi/theme.toml +++ /dev/null @@ -1,2 +0,0 @@ -[flavor] -use = "tokyo-night" diff --git a/general/docker/daemon.json b/general/docker/daemon.json deleted file mode 100644 index 581de36..0000000 --- a/general/docker/daemon.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "data-root": "/mnt/storage/docker" -} diff --git a/general/kmonad/swap-esc-caps.kbd b/general/kmonad/swap-esc-caps.kbd deleted file mode 100644 index 3c21dc4..0000000 --- a/general/kmonad/swap-esc-caps.kbd +++ /dev/null @@ -1,14 +0,0 @@ -(defcfg - input (device-file "/dev/input/event4") - fallthrough true) - -(defsrc - esc f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 f12 ptsc del - -) - -(deflayer main - (switchesc capslock escape) - (switchcaps escape capslock)) - -(defoutput uinput-sink) diff --git a/general/vscode-extensions b/general/vscode-extensions deleted file mode 100644 index d61326c..0000000 --- a/general/vscode-extensions +++ /dev/null @@ -1,49 +0,0 @@ -aaron-bond.better-comments -abusaidm.html-snippets -bmewburn.vscode-intelephense-client -bungcip.better-toml -dbaeumer.vscode-eslint -dlasagno.rasi -donjayamanne.jquerysnippets -ecmel.vscode-html-css -equinusocio.vsc-community-material-theme -equinusocio.vsc-material-theme -equinusocio.vsc-material-theme-icons -eww-yuck.yuck -fivethree.vscode-hugo-snippets -formulahendry.auto-rename-tag -gitlab.gitlab-workflow -golang.go -hollowtree.vue-snippets -ionic.ionic -james-yu.latex-workshop -lllllllqw.jsdoc -mads-hartmann.bash-ide-vscode -mathematic.vscode-latex -mathiasfrohlich.kotlin -mechatroner.rainbow-csv -ms-python.debugpy -ms-python.python -ms-vscode.cpptools -nadim-vscode.html-meta-tags-hero -nilssoderman.sitemap-generator -pwabuilder.pwa-studio -quicktype.quicktype -redhat.java -redhat.vscode-xml -rust-lang.rust-analyzer -sbsnippets.pytorch-snippets -spences10.robots-txt -streetsidesoftware.code-spell-checker -streetsidesoftware.code-spell-checker-german -svelte.svelte-vscode -tecosaur.latex-utilities -valentjn.vscode-ltex -vitest.explorer -vscjava.vscode-java-debug -vscjava.vscode-java-test -vscodevim.vim -vue.volar -wayou.vscode-todo-highlight -xdebug.php-debug -yinfei.luahelper diff --git a/gtk-theme/dist/colours.css b/gtk-theme/dist/colours.css new file mode 100644 index 0000000..29d1bd0 --- /dev/null +++ b/gtk-theme/dist/colours.css @@ -0,0 +1,149 @@ +/* + * ╭───────────────────────────────────────────────╮ + * │ GTK Theme Colours │ + * ╰───────────────────────────────────────────────╯ +*/ + + + +/* + * Replace the colours with variable names + */ + +/* + * ┌ ┐ + * │ Foreground │ + * └ ┘ +*/ + +/* + * ── Foreground color, main interface text colour ───────────────────── +*/ +@define-color fg #E6E6E6; +@define-color fg_rgba_07 rgba(230, 230, 230, 0.7); +@define-color fg_rgba_06 rgba(230, 230, 230, 0.6); +@define-color fg_rgba_05 rgba(230, 230, 230, 0.5); +@define-color fg_rgba_03 rgba(230, 230, 230, 0.3); +@define-color fg_rgba_02 rgba(230, 230, 230, 0.2); +@define-color fg_rgba_01 rgba(230, 230, 230, 0.1); + +/* + * ── Foreground accent, usually brighter or darker than default ─────── +*/ +@define-color fg_accent #FFFFFF; +@define-color fg_accent_rgba_07 rgba(255, 255, 255, 0.7); +@define-color fg_accent_rgba_06 rgba(255, 255, 255, 0.6); +@define-color fg_accent_rgba_05 rgba(255, 255, 255, 0.5); +@define-color fg_accent_rgba_03 rgba(255, 255, 255, 0.3); +@define-color fg_accent_rgba_02 rgba(255, 255, 255, 0.2); + +/* + * ── Accent colour ──────────────────────────────────────────────────── +*/ +@define-color accent #591641; +@define-color accent_rgba_05 rgba(89, 22, 65, 0.5); +@define-color accent_rgba_03 rgba(89, 22, 65, 0.3); +@define-color accent_rgba_02 rgba(89, 22, 65, 0.2); +@define-color accent_rgba_015 rgba(89, 22, 65, 0.15); +@define-color accent_rgba_011 rgba(89, 22, 65, 0.11); +@define-color accent_rgba_007 rgba(89, 22, 65, 0.07); + +/* + * ── Accent Gradient ────────────────────────────────────────────────── +*/ +@define-color accent_gradient_1 #390E2A; +@define-color accent_gradient_2 #2E0B21; +@define-color accent_gradient_3 #24091B; +@define-color accent_gradient_4 #1D0715; +@define-color accent_gradient_5 #170611; +@define-color accent_gradient_inverse_1 #8B2266; +@define-color accent_gradient_inverse_2 #8B2266; +@define-color accent_gradient_inverse_3 #8B2266; + +/* + * ── Secondary accent colour ────────────────────────────────────────── +*/ +@define-color accent2 #97103A; +@define-color accent2_rgba_05 rgba(151, 16, 58, 0.5); +@define-color accent2_rgba_03 rgba(151, 16, 58, 0.3); +@define-color accent2_rgba_02 rgba(151, 16, 58, 0.2); +@define-color accent2_rgba_015 rgba(151, 16, 58, 0.15); +@define-color accent2_rgba_01 rgba(151, 16, 58, 0.1); + +/* + * ── Tertiary accent colour ─────────────────────────────────────────── +*/ +@define-color accent3 #2D2057; + +/* + * ── Inactive Colour ────────────────────────────────────────────────── +*/ +@define-color inactive #C8C8C8; +@define-color inactive_rgba_07 rgba(200, 200, 200, 0.7); +@define-color inactive_rgba_05 rgba(200, 200, 200, 0.5); +@define-color inactive_rgba_03 rgba(200, 200, 200, 0.3); +@define-color inactive_rgba_02 rgba(200, 200, 200, 0.2); +@define-color inactive_rgba_015 rgba(200, 200, 200, 0.15); + + + + +/* + * ┌ ┐ + * │ Background │ + * └ ┘ +*/ + +/* + * ── Background color, main interface background ────────────────────── +*/ +@define-color bg #141414; +@define-color bg_rgba_07 rgba(20, 20, 20, 0.7); +@define-color bg_rgba_05 rgba(20, 20, 20, 0.5); +@define-color bg_rgba_03 rgba(20, 20, 20, 0.3); +@define-color bg_rgba_02 rgba(20, 20, 20, 0.2); +@define-color bg_rgba_015 rgba(20, 20, 20, 0.15); +@define-color bg_rgba_011 rgba(20, 20, 20, 0.11); + +/* + * ── Accent background color ────────────────────────────────────────── +*/ +@define-color bg_accent #1E1E1E; +@define-color bg_accent_rgba_07 rgba(30, 30, 30, 0.7); +@define-color bg_accent_rgba_06 rgba(30, 30, 30, 0.6); +@define-color bg_accent_rgba_05 rgba(30, 30, 30, 0.5); +@define-color bg_accent_rgba_04 rgba(30, 30, 30, 0.4); +@define-color bg_accent_rgba_03 rgba(30, 30, 30, 0.3); +@define-color bg_accent_rgba_02 rgba(30, 30, 30, 0.2); +@define-color bg_accent_rgba_015 rgba(30, 30, 30, 0.15); +@define-color bg_accent_rgba_01 rgba(30, 30, 30, 0.1); + +/* + * ── Tertiary background colour ─────────────────────────────────────── +*/ +@define-color bg_tertiary #2D2D2D; +@define-color bg_tertiary_rgba_05 rgba(45, 45, 45, 0.5); +@define-color bg_tertiary_rgba_02 rgba(45, 45, 45, 0.2); + +/* + * ── Inactive background colour ─────────────────────────────────────── +*/ +@define-color bg_inactive #000000; +@define-color bg_inactive_rgba_07 rgba(0, 0, 0, 0.7); +@define-color bg_inactive_rgba_05 rgba(0, 0, 0, 0.5); +@define-color bg_inactive_rgba_04 rgba(0, 0, 0, 0.4); +@define-color bg_inactive_rgba_03 rgba(0, 0, 0, 0.3); +@define-color bg_inactive_rgba_02 rgba(0, 0, 0, 0.2); +@define-color bg_inactive_rgba_015 rgba(0, 0, 0, 0.15); +@define-color bg_inactive_rgba_01 rgba(0, 0, 0, 0.1); + +/* + * ── Shadow colours ─────────────────────────────────────────────────── +*/ +@define-color shadow #282828; +@define-color shadow_rgba_07 rgba(40, 40, 40, 0.7); +@define-color shadow_rgba_05 rgba(40, 40, 40, 0.5); +@define-color shadow_rgba_03 rgba(40, 40, 40, 0.3); +@define-color shadow_rgba_02 rgba(40, 40, 40, 0.2); +@define-color shadow_rgba_015 rgba(40, 40, 40, 0.15); +@define-color shadow_rgba_011 rgba(40, 40, 40, 0.11); diff --git a/gtk-theme/dist/gtk-3.0/assets/scale-horz-marks-after-slider-dark.png b/gtk-theme/dist/gtk-3.0/assets/scale-horz-marks-after-slider-dark.png new file mode 100644 index 0000000..5f3b9f3 Binary files /dev/null and b/gtk-theme/dist/gtk-3.0/assets/scale-horz-marks-after-slider-dark.png differ diff --git a/gtk-theme/dist/gtk-3.0/assets/scale-horz-marks-after-slider-dark@2.png b/gtk-theme/dist/gtk-3.0/assets/scale-horz-marks-after-slider-dark@2.png new file mode 100644 index 0000000..bb1bff9 Binary files /dev/null and b/gtk-theme/dist/gtk-3.0/assets/scale-horz-marks-after-slider-dark@2.png differ diff --git a/gtk-theme/dist/gtk-3.0/assets/scale-horz-marks-after-slider-disabled-dark.png b/gtk-theme/dist/gtk-3.0/assets/scale-horz-marks-after-slider-disabled-dark.png new file mode 100644 index 0000000..b911ab1 Binary files /dev/null and b/gtk-theme/dist/gtk-3.0/assets/scale-horz-marks-after-slider-disabled-dark.png differ diff --git a/gtk-theme/dist/gtk-3.0/assets/scale-horz-marks-after-slider-disabled-dark@2.png b/gtk-theme/dist/gtk-3.0/assets/scale-horz-marks-after-slider-disabled-dark@2.png new file mode 100644 index 0000000..1ae692f Binary files /dev/null and b/gtk-theme/dist/gtk-3.0/assets/scale-horz-marks-after-slider-disabled-dark@2.png differ diff --git a/gtk-theme/dist/gtk-3.0/assets/scale-horz-marks-after-slider-disabled.png b/gtk-theme/dist/gtk-3.0/assets/scale-horz-marks-after-slider-disabled.png new file mode 100644 index 0000000..f45ca31 Binary files /dev/null and b/gtk-theme/dist/gtk-3.0/assets/scale-horz-marks-after-slider-disabled.png differ diff --git a/gtk-theme/dist/gtk-3.0/assets/scale-horz-marks-after-slider-disabled@2.png b/gtk-theme/dist/gtk-3.0/assets/scale-horz-marks-after-slider-disabled@2.png new file mode 100644 index 0000000..ed5ccf4 Binary files /dev/null and b/gtk-theme/dist/gtk-3.0/assets/scale-horz-marks-after-slider-disabled@2.png differ diff --git a/gtk-theme/dist/gtk-3.0/assets/scale-horz-marks-after-slider.png b/gtk-theme/dist/gtk-3.0/assets/scale-horz-marks-after-slider.png new file mode 100644 index 0000000..31c4902 Binary files /dev/null and b/gtk-theme/dist/gtk-3.0/assets/scale-horz-marks-after-slider.png differ diff --git a/gtk-theme/dist/gtk-3.0/assets/scale-horz-marks-after-slider@2.png b/gtk-theme/dist/gtk-3.0/assets/scale-horz-marks-after-slider@2.png new file mode 100644 index 0000000..dd48d78 Binary files /dev/null and b/gtk-theme/dist/gtk-3.0/assets/scale-horz-marks-after-slider@2.png differ diff --git a/gtk-theme/dist/gtk-3.0/assets/scale-horz-marks-before-slider-dark.png b/gtk-theme/dist/gtk-3.0/assets/scale-horz-marks-before-slider-dark.png new file mode 100644 index 0000000..263f4e0 Binary files /dev/null and b/gtk-theme/dist/gtk-3.0/assets/scale-horz-marks-before-slider-dark.png differ diff --git a/gtk-theme/dist/gtk-3.0/assets/scale-horz-marks-before-slider-dark@2.png b/gtk-theme/dist/gtk-3.0/assets/scale-horz-marks-before-slider-dark@2.png new file mode 100644 index 0000000..88311a4 Binary files /dev/null and b/gtk-theme/dist/gtk-3.0/assets/scale-horz-marks-before-slider-dark@2.png differ diff --git a/gtk-theme/dist/gtk-3.0/assets/scale-horz-marks-before-slider-disabled-dark.png b/gtk-theme/dist/gtk-3.0/assets/scale-horz-marks-before-slider-disabled-dark.png new file mode 100644 index 0000000..a0452f1 Binary files /dev/null and b/gtk-theme/dist/gtk-3.0/assets/scale-horz-marks-before-slider-disabled-dark.png differ diff --git a/gtk-theme/dist/gtk-3.0/assets/scale-horz-marks-before-slider-disabled-dark@2.png b/gtk-theme/dist/gtk-3.0/assets/scale-horz-marks-before-slider-disabled-dark@2.png new file mode 100644 index 0000000..c50691a Binary files /dev/null and b/gtk-theme/dist/gtk-3.0/assets/scale-horz-marks-before-slider-disabled-dark@2.png differ diff --git a/gtk-theme/dist/gtk-3.0/assets/scale-horz-marks-before-slider-disabled.png b/gtk-theme/dist/gtk-3.0/assets/scale-horz-marks-before-slider-disabled.png new file mode 100644 index 0000000..ead0682 Binary files /dev/null and b/gtk-theme/dist/gtk-3.0/assets/scale-horz-marks-before-slider-disabled.png differ diff --git a/gtk-theme/dist/gtk-3.0/assets/scale-horz-marks-before-slider-disabled@2.png b/gtk-theme/dist/gtk-3.0/assets/scale-horz-marks-before-slider-disabled@2.png new file mode 100644 index 0000000..d56e1fa Binary files /dev/null and b/gtk-theme/dist/gtk-3.0/assets/scale-horz-marks-before-slider-disabled@2.png differ diff --git a/gtk-theme/dist/gtk-3.0/assets/scale-horz-marks-before-slider.png b/gtk-theme/dist/gtk-3.0/assets/scale-horz-marks-before-slider.png new file mode 100644 index 0000000..0799636 Binary files /dev/null and b/gtk-theme/dist/gtk-3.0/assets/scale-horz-marks-before-slider.png differ diff --git a/gtk-theme/dist/gtk-3.0/assets/scale-horz-marks-before-slider@2.png b/gtk-theme/dist/gtk-3.0/assets/scale-horz-marks-before-slider@2.png new file mode 100644 index 0000000..6826ada Binary files /dev/null and b/gtk-theme/dist/gtk-3.0/assets/scale-horz-marks-before-slider@2.png differ diff --git a/gtk-theme/dist/gtk-3.0/assets/scale-slider-dark.png b/gtk-theme/dist/gtk-3.0/assets/scale-slider-dark.png new file mode 100644 index 0000000..73d7b17 Binary files /dev/null and b/gtk-theme/dist/gtk-3.0/assets/scale-slider-dark.png differ diff --git a/gtk-theme/dist/gtk-3.0/assets/scale-slider-dark@2.png b/gtk-theme/dist/gtk-3.0/assets/scale-slider-dark@2.png new file mode 100644 index 0000000..9cb6201 Binary files /dev/null and b/gtk-theme/dist/gtk-3.0/assets/scale-slider-dark@2.png differ diff --git a/gtk-theme/dist/gtk-3.0/assets/scale-slider-disabled-dark.png b/gtk-theme/dist/gtk-3.0/assets/scale-slider-disabled-dark.png new file mode 100644 index 0000000..c84ec15 Binary files /dev/null and b/gtk-theme/dist/gtk-3.0/assets/scale-slider-disabled-dark.png differ diff --git a/gtk-theme/dist/gtk-3.0/assets/scale-slider-disabled-dark@2.png b/gtk-theme/dist/gtk-3.0/assets/scale-slider-disabled-dark@2.png new file mode 100644 index 0000000..f84e161 Binary files /dev/null and b/gtk-theme/dist/gtk-3.0/assets/scale-slider-disabled-dark@2.png differ diff --git a/gtk-theme/dist/gtk-3.0/assets/scale-slider-disabled.png b/gtk-theme/dist/gtk-3.0/assets/scale-slider-disabled.png new file mode 100644 index 0000000..9ad3045 Binary files /dev/null and b/gtk-theme/dist/gtk-3.0/assets/scale-slider-disabled.png differ diff --git a/gtk-theme/dist/gtk-3.0/assets/scale-slider-disabled@2.png b/gtk-theme/dist/gtk-3.0/assets/scale-slider-disabled@2.png new file mode 100644 index 0000000..4a836b3 Binary files /dev/null and b/gtk-theme/dist/gtk-3.0/assets/scale-slider-disabled@2.png differ diff --git a/gtk-theme/dist/gtk-3.0/assets/scale-slider.png b/gtk-theme/dist/gtk-3.0/assets/scale-slider.png new file mode 100644 index 0000000..870df4b Binary files /dev/null and b/gtk-theme/dist/gtk-3.0/assets/scale-slider.png differ diff --git a/gtk-theme/dist/gtk-3.0/assets/scale-slider@2.png b/gtk-theme/dist/gtk-3.0/assets/scale-slider@2.png new file mode 100644 index 0000000..49578aa Binary files /dev/null and b/gtk-theme/dist/gtk-3.0/assets/scale-slider@2.png differ diff --git a/gtk-theme/dist/gtk-3.0/assets/scale-vert-marks-after-slider-dark.png b/gtk-theme/dist/gtk-3.0/assets/scale-vert-marks-after-slider-dark.png new file mode 100644 index 0000000..76b3f00 Binary files /dev/null and b/gtk-theme/dist/gtk-3.0/assets/scale-vert-marks-after-slider-dark.png differ diff --git a/gtk-theme/dist/gtk-3.0/assets/scale-vert-marks-after-slider-dark@2.png b/gtk-theme/dist/gtk-3.0/assets/scale-vert-marks-after-slider-dark@2.png new file mode 100644 index 0000000..f292e2e Binary files /dev/null and b/gtk-theme/dist/gtk-3.0/assets/scale-vert-marks-after-slider-dark@2.png differ diff --git a/gtk-theme/dist/gtk-3.0/assets/scale-vert-marks-after-slider-disabled-dark.png b/gtk-theme/dist/gtk-3.0/assets/scale-vert-marks-after-slider-disabled-dark.png new file mode 100644 index 0000000..080770e Binary files /dev/null and b/gtk-theme/dist/gtk-3.0/assets/scale-vert-marks-after-slider-disabled-dark.png differ diff --git a/gtk-theme/dist/gtk-3.0/assets/scale-vert-marks-after-slider-disabled-dark@2.png b/gtk-theme/dist/gtk-3.0/assets/scale-vert-marks-after-slider-disabled-dark@2.png new file mode 100644 index 0000000..de79037 Binary files /dev/null and b/gtk-theme/dist/gtk-3.0/assets/scale-vert-marks-after-slider-disabled-dark@2.png differ diff --git a/gtk-theme/dist/gtk-3.0/assets/scale-vert-marks-after-slider-disabled.png b/gtk-theme/dist/gtk-3.0/assets/scale-vert-marks-after-slider-disabled.png new file mode 100644 index 0000000..71d1eff Binary files /dev/null and b/gtk-theme/dist/gtk-3.0/assets/scale-vert-marks-after-slider-disabled.png differ diff --git a/gtk-theme/dist/gtk-3.0/assets/scale-vert-marks-after-slider-disabled@2.png b/gtk-theme/dist/gtk-3.0/assets/scale-vert-marks-after-slider-disabled@2.png new file mode 100644 index 0000000..3f66c32 Binary files /dev/null and b/gtk-theme/dist/gtk-3.0/assets/scale-vert-marks-after-slider-disabled@2.png differ diff --git a/gtk-theme/dist/gtk-3.0/assets/scale-vert-marks-after-slider.png b/gtk-theme/dist/gtk-3.0/assets/scale-vert-marks-after-slider.png new file mode 100644 index 0000000..afedbf0 Binary files /dev/null and b/gtk-theme/dist/gtk-3.0/assets/scale-vert-marks-after-slider.png differ diff --git a/gtk-theme/dist/gtk-3.0/assets/scale-vert-marks-after-slider@2.png b/gtk-theme/dist/gtk-3.0/assets/scale-vert-marks-after-slider@2.png new file mode 100644 index 0000000..fe406cf Binary files /dev/null and b/gtk-theme/dist/gtk-3.0/assets/scale-vert-marks-after-slider@2.png differ diff --git a/gtk-theme/dist/gtk-3.0/assets/scale-vert-marks-before-slider-dark.png b/gtk-theme/dist/gtk-3.0/assets/scale-vert-marks-before-slider-dark.png new file mode 100644 index 0000000..88fc888 Binary files /dev/null and b/gtk-theme/dist/gtk-3.0/assets/scale-vert-marks-before-slider-dark.png differ diff --git a/gtk-theme/dist/gtk-3.0/assets/scale-vert-marks-before-slider-dark@2.png b/gtk-theme/dist/gtk-3.0/assets/scale-vert-marks-before-slider-dark@2.png new file mode 100644 index 0000000..6275b1c Binary files /dev/null and b/gtk-theme/dist/gtk-3.0/assets/scale-vert-marks-before-slider-dark@2.png differ diff --git a/gtk-theme/dist/gtk-3.0/assets/scale-vert-marks-before-slider-disabled-dark.png b/gtk-theme/dist/gtk-3.0/assets/scale-vert-marks-before-slider-disabled-dark.png new file mode 100644 index 0000000..0eb02cf Binary files /dev/null and b/gtk-theme/dist/gtk-3.0/assets/scale-vert-marks-before-slider-disabled-dark.png differ diff --git a/gtk-theme/dist/gtk-3.0/assets/scale-vert-marks-before-slider-disabled-dark@2.png b/gtk-theme/dist/gtk-3.0/assets/scale-vert-marks-before-slider-disabled-dark@2.png new file mode 100644 index 0000000..8e07d09 Binary files /dev/null and b/gtk-theme/dist/gtk-3.0/assets/scale-vert-marks-before-slider-disabled-dark@2.png differ diff --git a/gtk-theme/dist/gtk-3.0/assets/scale-vert-marks-before-slider-disabled.png b/gtk-theme/dist/gtk-3.0/assets/scale-vert-marks-before-slider-disabled.png new file mode 100644 index 0000000..9d9570e Binary files /dev/null and b/gtk-theme/dist/gtk-3.0/assets/scale-vert-marks-before-slider-disabled.png differ diff --git a/gtk-theme/dist/gtk-3.0/assets/scale-vert-marks-before-slider-disabled@2.png b/gtk-theme/dist/gtk-3.0/assets/scale-vert-marks-before-slider-disabled@2.png new file mode 100644 index 0000000..0a1bcb8 Binary files /dev/null and b/gtk-theme/dist/gtk-3.0/assets/scale-vert-marks-before-slider-disabled@2.png differ diff --git a/gtk-theme/dist/gtk-3.0/assets/scale-vert-marks-before-slider.png b/gtk-theme/dist/gtk-3.0/assets/scale-vert-marks-before-slider.png new file mode 100644 index 0000000..0c165af Binary files /dev/null and b/gtk-theme/dist/gtk-3.0/assets/scale-vert-marks-before-slider.png differ diff --git a/gtk-theme/dist/gtk-3.0/assets/scale-vert-marks-before-slider@2.png b/gtk-theme/dist/gtk-3.0/assets/scale-vert-marks-before-slider@2.png new file mode 100644 index 0000000..79ed0ec Binary files /dev/null and b/gtk-theme/dist/gtk-3.0/assets/scale-vert-marks-before-slider@2.png differ diff --git a/gtk-theme/dist/gtk-3.0/assets/selectionmode-checkbox-checked-dark.png b/gtk-theme/dist/gtk-3.0/assets/selectionmode-checkbox-checked-dark.png new file mode 100644 index 0000000..dc8a047 Binary files /dev/null and b/gtk-theme/dist/gtk-3.0/assets/selectionmode-checkbox-checked-dark.png differ diff --git a/gtk-theme/dist/gtk-3.0/assets/selectionmode-checkbox-checked-dark@2.png b/gtk-theme/dist/gtk-3.0/assets/selectionmode-checkbox-checked-dark@2.png new file mode 100644 index 0000000..9e043af Binary files /dev/null and b/gtk-theme/dist/gtk-3.0/assets/selectionmode-checkbox-checked-dark@2.png differ diff --git a/gtk-theme/dist/gtk-3.0/assets/selectionmode-checkbox-checked.png b/gtk-theme/dist/gtk-3.0/assets/selectionmode-checkbox-checked.png new file mode 100644 index 0000000..90df2a7 Binary files /dev/null and b/gtk-theme/dist/gtk-3.0/assets/selectionmode-checkbox-checked.png differ diff --git a/gtk-theme/dist/gtk-3.0/assets/selectionmode-checkbox-checked@2.png b/gtk-theme/dist/gtk-3.0/assets/selectionmode-checkbox-checked@2.png new file mode 100644 index 0000000..007e28e Binary files /dev/null and b/gtk-theme/dist/gtk-3.0/assets/selectionmode-checkbox-checked@2.png differ diff --git a/gtk-theme/dist/gtk-3.0/assets/selectionmode-checkbox-unchecked-dark.png b/gtk-theme/dist/gtk-3.0/assets/selectionmode-checkbox-unchecked-dark.png new file mode 100644 index 0000000..54de797 Binary files /dev/null and b/gtk-theme/dist/gtk-3.0/assets/selectionmode-checkbox-unchecked-dark.png differ diff --git a/gtk-theme/dist/gtk-3.0/assets/selectionmode-checkbox-unchecked-dark@2.png b/gtk-theme/dist/gtk-3.0/assets/selectionmode-checkbox-unchecked-dark@2.png new file mode 100644 index 0000000..9cec4dc Binary files /dev/null and b/gtk-theme/dist/gtk-3.0/assets/selectionmode-checkbox-unchecked-dark@2.png differ diff --git a/gtk-theme/dist/gtk-3.0/assets/selectionmode-checkbox-unchecked.png b/gtk-theme/dist/gtk-3.0/assets/selectionmode-checkbox-unchecked.png new file mode 100644 index 0000000..0263623 Binary files /dev/null and b/gtk-theme/dist/gtk-3.0/assets/selectionmode-checkbox-unchecked.png differ diff --git a/gtk-theme/dist/gtk-3.0/assets/selectionmode-checkbox-unchecked@2.png b/gtk-theme/dist/gtk-3.0/assets/selectionmode-checkbox-unchecked@2.png new file mode 100644 index 0000000..af5b395 Binary files /dev/null and b/gtk-theme/dist/gtk-3.0/assets/selectionmode-checkbox-unchecked@2.png differ diff --git a/gtk-theme/dist/gtk-3.0/gtk.css b/gtk-theme/dist/gtk-3.0/gtk.css new file mode 100644 index 0000000..b1c9b7b --- /dev/null +++ b/gtk-theme/dist/gtk-3.0/gtk.css @@ -0,0 +1,7993 @@ +@import '../colours.css'; + +/* + * Replace the colours with variable names. See build/util.js for translation + * This CSS file here is from Material-Black-Blueberry + */ + + +@keyframes ripple { + to { + background-size: 1000% 1000%; + } +} + +@keyframes ripple-on-slider { + to { + background-size: auto, 1000% 1000%; + } +} + +@keyframes ripple-on-headerbar { + from { + background-image: radial-gradient(circle, @accent 0%, transparent 0%); + } + + to { + background-image: radial-gradient(circle, @accent 100%, transparent 0%); + } +} + +button, +modelbutton.flat, +.menuitem.button.flat, +notebook>header>tabs>arrow, +check, +radio, +row.activatable { + transition-property: all, border-image, background-size, background-image; + transition-duration: 75ms, 225ms, 300ms, 1200ms; + transition-timing-function: cubic-bezier(0, 0, 0.2, 1); + outline: none; + background-image: radial-gradient(circle, transparent 10%, transparent 0%); + background-repeat: no-repeat; + background-position: center; + background-size: 1000% 1000%; +} + +button:active, +modelbutton.flat:active, +.menuitem.button.flat:active, +notebook>header>tabs>arrow:active, +check:active, +radio:active, +row.activatable:active { + transition-duration: 75ms, 225ms, 0ms, 0ms; + animation: ripple 225ms cubic-bezier(0, 0, 0.2, 1) forwards; + background-size: 0% 0%; +} + +* { + -GtkToolButton-icon-spacing: 0; + -GtkTextView-error-underline-color: #f44336; + -GtkScrolledWindow-scrollbar-spacing: 0; + -GtkToolItemGroup-expander-size: 11; + -GtkWidget-text-handle-width: 24; + -GtkWidget-text-handle-height: 24; + -GtkDialog-button-spacing: 4; + -GtkDialog-action-area-border: 4; + -gtk-secondary-caret-color: @accent; + outline: 2px solid transparent; + outline-offset: -4px; + -gtk-outline-radius: 2px; +} + +*:focus { + outline-color: rgba(158, 158, 158, 0.08); +} + +/** + * Base States + */ +.background { + background-color: @bg; + color: @fg; +} + +/* + These wildcard seems unavoidable, need to investigate. + Wildcards are bad and troublesome, use them with care, + or better, just don't. + Everytime a wildcard is used a kitten dies, painfully. +*/ +*:disabled { + -gtk-icon-effect: dim; +} + +.gtkstyle-fallback { + background-color: @bg; + color: @fg; +} + +.gtkstyle-fallback:hover { + background-color: #1a1b1c; +} + +.gtkstyle-fallback:active { + background-color: #202122; +} + +.gtkstyle-fallback:disabled { + color: @fg_rgba_05; +} + +.gtkstyle-fallback:selected { + background-color: @accent; + color: @fg_accent; +} + +.view:hover { + background-color: rgba(158, 158, 158, 0.04); +} + +.view:selected:hover { + background-color: rgba(56, 125, 183, 0.3744); +} + +.view:disabled { + color: @fg_rgba_05; +} + +.view:hover, +.view:selected { + border-radius: 2px; +} + +.view selection, +.view:selected { + background-color: @accent_rgba_03; +} + +textview text { + background-color: @bg; + caret-color: @accent; +} + +frame:not(.flat) textview text, +.frame textview text { + background-color: #1a1c1e; +} + +popover.background textview text { + background-color: #141416; +} + +messagedialog.background textview text { + background-color: #141416; +} + +textview border { + color: @fg_rgba_07; +} + +.nemo-desktop.nemo-canvas-item, +.caja-desktop.caja-canvas-item, +.nautilus-desktop.nautilus-canvas-item { + color: @fg_accent; + text-shadow: 0 1px 1px rgba(0, 0, 0, 0.2), 0 1px 2px rgba(0, 0, 0, 0.14), 0 1px 3px @bg_accent_rgba_015; +} + +.nemo-desktop.nemo-canvas-item .rubberband, +.caja-desktop.caja-canvas-item .rubberband, +.nautilus-desktop.nautilus-canvas-item .rubberband, +.nemo-desktop.nemo-canvas-item rubberband, +.caja-desktop.caja-canvas-item rubberband, +.nautilus-desktop.nautilus-canvas-item rubberband { + border: 1px solid @accent; + background-color: rgba(56, 125, 183, 0.3); +} + +XfdesktopIconView.view .rubberband, +.content-view rubberband, +.content-view .rubberband, +treeview.view rubberband, +flowbox rubberband, +.rubberband, +rubberband { + border: 1px solid @accent; + background-color: @accent_rgba_02; +} + +flowbox flowboxchild { + padding: 4px; + border-radius: 2px; +} + +flowbox flowboxchild:selected { + background-color: @accent_rgba_03; +} + +.content-view .tile:selected { + background-color: transparent; +} + +label { + caret-color: @accent; +} + +label.separator { + color: @fg_rgba_07; +} + +label.error { + color: #f44336; +} + +label selection { + background-color: @accent_rgba_03; +} + +label:disabled { + color: @fg_rgba_05; +} + +headerbar label:disabled, +menuitem label:disabled, +tab label:disabled, +button label:disabled { + color: inherit; +} + +label.osd { + border-radius: 2px; + background-color: @bg_inactive; + color: @inactive; +} + +.dim-label { + color: @fg_rgba_07; +} + +assistant .sidebar { + padding: 4px 0; +} + +assistant .sidebar label { + min-height: 32px; + margin: 0 4px; + padding: 0 8px; + border-radius: 2px; + color: @fg_rgba_05; + font-weight: 500; +} + +assistant .sidebar label.highlight { + background-color: @accent_rgba_015; + color: @accent; +} + +/** + * Spinner Animation + */ +@keyframes spin { + to { + -gtk-icon-transform: rotate(1turn); + } +} + +spinner { + background: none; + opacity: 0; + color: @accent; + -gtk-icon-source: -gtk-icontheme("process-working-symbolic"); + transition: opacity 300ms cubic-bezier(0, 0, 0.2, 1); + animation: spin 1s linear infinite; +} + +spinner:checked { + opacity: 1; +} + +spinner:disabled { + color: @fg_rgba_03; +} + +/** + * General Typography + */ +.large-title { + font-weight: 400; + font-size: 36pt; +} + +.title-1, +.nautilus-empty-state-icon+.large-title { + font-weight: 400; + font-size: 25.5pt; + letter-spacing: 0.1875pt; +} + +.title-2 { + font-weight: 400; + font-size: 18pt; +} + +.title-3 { + font-weight: 500; + font-size: 15pt; + letter-spacing: 0.1125pt; +} + +.title-4 { + font-weight: 400; + font-size: 12pt; + letter-spacing: 0.375pt; +} + +.heading { + font-weight: 500; + font-size: 1em; +} + +.body { + font-weight: 400; + font-size: 1em; +} + +.caption-heading { + font-weight: 500; + font-size: 9pt; + letter-spacing: 1.125pt; +} + +.caption { + font-weight: 400; + font-size: 9pt; + letter-spacing: 0.3pt; +} + +/** + * Text Entries + */ +spinbutton:not(.vertical), +entry { + min-height: 32px; + padding: 0 8px; + border-radius: 2px 2px 0 0; + transition: all 75ms cubic-bezier(0, 0, 0.2, 1), border-image 225ms cubic-bezier(0, 0, 0.2, 1); + border-image: radial-gradient(circle closest-corner at center calc(100% - 1px), @accent 0%, transparent 0%) 2/0 0 0; + box-shadow: inset 0 -1px @fg_rgba_03; + background-color: rgba(158, 158, 158, 0.04); + color: @fg; + caret-color: @accent; +} + +spinbutton:focus:not(.vertical), +entry:focus { + border-image: radial-gradient(circle closest-corner at center calc(100% - 1px), @accent 100%, transparent 0%) 2/0 0 2px; + box-shadow: inset 0 -1px @fg_rgba_03; + background-color: @fg_rgba_01; +} + +spinbutton:drop(active):not(.vertical), +entry:drop(active) { + box-shadow: inset 0 -1px @fg_rgba_03; + background-color: rgba(158, 158, 158, 0.0784); +} + +spinbutton:disabled:not(.vertical), +entry:disabled { + box-shadow: inset 0 -1px @fg_rgba_02; + background-color: rgba(158, 158, 158, 0.04); + color: @fg_rgba_05; +} + +spinbutton.flat:not(.vertical), +entry.flat { + min-height: 0; + padding: 2px; + border-radius: 0; + background-color: transparent; +} + +spinbutton:not(.vertical) image, +entry image { + color: @fg_rgba_07; +} + +spinbutton:not(.vertical) image:hover, +spinbutton:not(.vertical) image:active, +entry image:hover, +entry image:active { + color: @fg; +} + +spinbutton:not(.vertical) image:disabled, +entry image:disabled { + color: @fg_rgba_05; +} + +spinbutton:not(.vertical) image.left, +entry image.left { + margin-left: 0px; + margin-right: 6px; +} + +spinbutton:not(.vertical) image.right, +entry image.right { + margin-left: 6px; + margin-right: 0px; +} + +spinbutton:not(.vertical) selection, +entry selection { + background-color: @accent_rgba_03; +} + +spinbutton.error:not(.vertical), +entry.error { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1), border-image 225ms cubic-bezier(0, 0, 0.2, 1); + border-image: radial-gradient(circle closest-corner at center calc(100% - 1px), #f44336 0%, transparent 0%) 2/0 0 0; + box-shadow: inset 0 -1px #f44336; + background-color: rgba(158, 158, 158, 0.04); + color: @fg; + caret-color: #f44336; +} + +spinbutton.error:focus:not(.vertical), +entry.error:focus { + border-image: radial-gradient(circle closest-corner at center calc(100% - 1px), #f44336 100%, transparent 0%) 2/0 0 2px; + box-shadow: inset 0 -1px #f44336; + background-color: @fg_rgba_01; +} + +spinbutton.error:disabled:not(.vertical), +entry.error:disabled { + box-shadow: inset 0 -1px @fg_rgba_02; + background-color: rgba(158, 158, 158, 0.04); + color: @fg_rgba_05; +} + +spinbutton.warning:not(.vertical), +entry.warning { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1), border-image 225ms cubic-bezier(0, 0, 0.2, 1); + border-image: radial-gradient(circle closest-corner at center calc(100% - 1px), #ffeb3b 0%, transparent 0%) 2/0 0 0; + box-shadow: inset 0 -1px #ffeb3b; + background-color: rgba(158, 158, 158, 0.04); + color: @fg; + caret-color: #ffeb3b; +} + +spinbutton.warning:focus:not(.vertical), +entry.warning:focus { + border-image: radial-gradient(circle closest-corner at center calc(100% - 1px), #ffeb3b 100%, transparent 0%) 2/0 0 2px; + box-shadow: inset 0 -1px #ffeb3b; + background-color: @fg_rgba_01; +} + +spinbutton.warning:disabled:not(.vertical), +entry.warning:disabled { + box-shadow: inset 0 -1px @fg_rgba_02; + background-color: rgba(158, 158, 158, 0.04); + color: @fg_rgba_05; +} + +spinbutton:not(.vertical) progress, +entry progress { + margin: 0 -8px -4px; + border-bottom: 2px solid @accent; + background-color: transparent; +} + +.gedit-search-slider .linked:not(.vertical)>entry, +spinbutton.vertical entry { + border-radius: 2px; + transition: all 75ms cubic-bezier(0, 0, 0.2, 1); + border-image: none; + box-shadow: 0 2px 2px -2px @bg_accent_rgba_03, 0 1px 2px -1px rgba(0, 0, 0, 0.24), 0 1px 2px -0.6px rgba(0, 0, 0, 0.17); + background-color: #141416; + color: @fg; + caret-color: @accent; +} + +.gedit-search-slider .linked:not(.vertical)>entry:focus, +spinbutton.vertical entry:focus { + border-image: none; + box-shadow: 0 3px 2px -2px rgba(0, 0, 0, 0.2), 0 3px 2.4px 0 rgba(0, 0, 0, 0.14), 0 1px 4.8px 0 @bg_accent_rgba_015; +} + +.gedit-search-slider .linked:not(.vertical)>entry:drop(active), +spinbutton.vertical entry:drop(active) { + box-shadow: 0 3px 2px -2px rgba(0, 0, 0, 0.2), 0 3px 2.4px 0 rgba(0, 0, 0, 0.14), 0 1px 4.8px 0 @bg_accent_rgba_015; +} + +.gedit-search-slider .linked:not(.vertical)>entry:disabled, +spinbutton.vertical entry:disabled { + box-shadow: 0 2px 2px -2px @bg_accent_rgba_03, 0 1px 2px -1px rgba(0, 0, 0, 0.24), 0 1px 2px -0.6px rgba(0, 0, 0, 0.17); + background-color: #1a1c1e; + color: @fg_rgba_05; +} + +.gedit-search-slider .linked:not(.vertical)>entry.error, +spinbutton.vertical entry.error { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1); + border-image: none; + box-shadow: 0 2px 2px -2px @bg_accent_rgba_03, 0 1px 2px -1px rgba(0, 0, 0, 0.24), 0 1px 2px -0.6px rgba(0, 0, 0, 0.17); + background-color: #f44336; + color: @fg_accent; + caret-color: @fg_accent; +} + +.gedit-search-slider .linked:not(.vertical)>entry.error:focus, +spinbutton.vertical entry.error:focus { + border-image: none; + box-shadow: 0 3px 2px -2px rgba(0, 0, 0, 0.2), 0 3px 2.4px 0 rgba(0, 0, 0, 0.14), 0 1px 4.8px 0 @bg_accent_rgba_015; +} + +.gedit-search-slider .linked:not(.vertical)>entry.error:disabled, +spinbutton.vertical entry.error:disabled { + box-shadow: 0 2px 2px -2px @bg_accent_rgba_03, 0 1px 2px -1px rgba(0, 0, 0, 0.24), 0 1px 2px -0.6px rgba(0, 0, 0, 0.17); + background-color: #1a1c1e; + color: @fg_rgba_05; +} + +.gedit-search-slider .linked:not(.vertical)>entry.error image, +spinbutton.vertical entry.error image { + color: @fg_accent_rgba_07; +} + +.gedit-search-slider .linked:not(.vertical)>entry.error image:hover, +spinbutton.vertical entry.error image:hover, +.gedit-search-slider .linked:not(.vertical)>entry.error image:active, +spinbutton.vertical entry.error image:active { + color: @fg_accent; +} + +.gedit-search-slider .linked:not(.vertical)>entry.error image:disabled, +spinbutton.vertical entry.error image:disabled { + color: @fg_accent_rgba_05; +} + +.gedit-search-slider .linked:not(.vertical)>entry.warning, +spinbutton.vertical entry.warning { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1); + border-image: none; + box-shadow: 0 2px 2px -2px @bg_accent_rgba_03, 0 1px 2px -1px rgba(0, 0, 0, 0.24), 0 1px 2px -0.6px rgba(0, 0, 0, 0.17); + background-color: #ffeb3b; + color: @bg_accent; + caret-color: @bg_accent; +} + +.gedit-search-slider .linked:not(.vertical)>entry.warning:focus, +spinbutton.vertical entry.warning:focus { + border-image: none; + box-shadow: 0 3px 2px -2px rgba(0, 0, 0, 0.2), 0 3px 2.4px 0 rgba(0, 0, 0, 0.14), 0 1px 4.8px 0 @bg_accent_rgba_015; +} + +.gedit-search-slider .linked:not(.vertical)>entry.warning:disabled, +spinbutton.vertical entry.warning:disabled { + box-shadow: 0 2px 2px -2px @bg_accent_rgba_03, 0 1px 2px -1px rgba(0, 0, 0, 0.24), 0 1px 2px -0.6px rgba(0, 0, 0, 0.17); + background-color: #1a1c1e; + color: @fg_rgba_05; +} + +.gedit-search-slider .linked:not(.vertical)>entry.warning image, +spinbutton.vertical entry.warning image { + color: @bg_accent_rgba_07; +} + +.gedit-search-slider .linked:not(.vertical)>entry.warning image:hover, +spinbutton.vertical entry.warning image:hover, +.gedit-search-slider .linked:not(.vertical)>entry.warning image:active, +spinbutton.vertical entry.warning image:active { + color: @bg_accent; +} + +.gedit-search-slider .linked:not(.vertical)>entry.warning image:disabled, +spinbutton.vertical entry.warning image:disabled { + color: @bg_accent_rgba_05; +} + +treeview entry, +treeview entry.flat { + background-color: #1a1c1e; +} + +treeview entry, +treeview entry:focus, +treeview entry.flat, +treeview entry.flat:focus { + border-image: none; + box-shadow: none; +} + +.entry-tag, +.documents-entry-tag, +.photos-entry-tag { + margin: 2px; + border-radius: 9999px; + box-shadow: none; + background-color: rgba(158, 158, 158, 0.08); + color: @fg; +} + +.entry-tag:hover, +.documents-entry-tag:hover, +.photos-entry-tag:hover { + background-image: image(rgba(158, 158, 158, 0.08)); +} + +:dir(ltr) .entry-tag, +:dir(ltr) .documents-entry-tag, +:dir(ltr) .photos-entry-tag { + margin-left: 4px; + margin-right: 0; + padding-left: 12px; + padding-right: 8px; +} + +:dir(rtl) .entry-tag, +:dir(rtl) .documents-entry-tag, +:dir(rtl) .photos-entry-tag { + margin-left: 0; + margin-right: 4px; + padding-left: 8px; + padding-right: 12px; +} + +.entry-tag.button, +.button.documents-entry-tag, +.button.photos-entry-tag { + box-shadow: none; + background-color: transparent; + color: @fg_rgba_07; +} + +/** + * Buttons + */ +@keyframes needs-attention { + from { + background-image: -gtk-gradient(radial, center center, 0, center center, 0.001, to(@accent), to(transparent)); + } + + to { + background-image: -gtk-gradient(radial, center center, 0, center center, 0.5, to(@accent), to(transparent)); + } +} + +button { + min-height: 24px; + min-width: 16px; + padding: 4px 8px; + border-radius: 2px; + color: @fg; + font-weight: 500; + box-shadow: 0 3px 2px -3px @bg_accent_rgba_03, 0 2px 2px -1px rgba(0, 0, 0, 0.24), 0 1px 3px 0 @bg_accent_rgba_015; + background-color: #141416; +} + +button:drop(active), +button:hover { + box-shadow: 0 2px 2.4px -1px rgba(0, 0, 0, 0.2), 0 4px 3px 0 rgba(0, 0, 0, 0.14), 0 1px 6px 0 @bg_accent_rgba_015; + background-color: @accent_gradient_5; +} + +button:focus { + box-shadow: 0 2px 2.4px -1px rgba(0, 0, 0, 0.2), 0 4px 3px 0 rgba(0, 0, 0, 0.14), 0 1px 6px 0 @bg_accent_rgba_015; + background-color: @accent_gradient_4; +} + +button:active { + box-shadow: 0 5px 3px -3px rgba(0, 0, 0, 0.2), 0 8px 6px 1px rgba(0, 0, 0, 0.14), 0 3px 8.4px 2px @bg_accent_rgba_015; + background-image: radial-gradient(circle, rgba(158, 158, 158, 0.12) 10%, transparent 0%); +} + +button:disabled { + box-shadow: none; + background-color: rgba(158, 158, 158, 0.08); + color: @fg_rgba_05; +} + +button:checked { + color: @accent; + box-shadow: 0 3px 2px -3px @bg_accent_rgba_03, 0 2px 2px -1px rgba(0, 0, 0, 0.24), 0 1px 3px 0 @bg_accent_rgba_015; + background-color: @accent_gradient_3; +} + +button:checked:drop(active), +button:checked:hover { + box-shadow: 0 2px 2.4px -1px rgba(0, 0, 0, 0.2), 0 4px 3px 0 rgba(0, 0, 0, 0.14), 0 1px 6px 0 @bg_accent_rgba_015; + background-color: @accent_gradient_2; +} + +button:checked:focus { + box-shadow: 0 2px 2.4px -1px rgba(0, 0, 0, 0.2), 0 4px 3px 0 rgba(0, 0, 0, 0.14), 0 1px 6px 0 @bg_accent_rgba_015; + background-color: @accent_gradient_1; +} + +button:checked:active { + box-shadow: 0 5px 3px -3px rgba(0, 0, 0, 0.2), 0 8px 6px 1px rgba(0, 0, 0, 0.14), 0 3px 8.4px 2px @bg_accent_rgba_015; + background-image: radial-gradient(circle, @accent_rgba_015 10%, transparent 0%); +} + +button:checked:disabled { + box-shadow: none; + background-color: rgba(158, 158, 158, 0.1904); + color: @fg_rgba_05; +} + +button.text-button { + min-width: 32px; + padding-left: 16px; + padding-right: 16px; +} + +button.image-button { + min-width: 24px; + padding: 4px; + border-radius: 9999px; +} + +button.text-button.image-button { + min-width: 24px; + padding: 4px; + border-radius: 2px; +} + +button.text-button.image-button label:first-child { + margin-left: 12px; +} + +button.text-button.image-button label:last-child { + margin-right: 12px; +} + +button.text-button.image-button image:not(:only-child) { + margin: 0 4px; +} + +.budgie-settings-window buttonbox.inline-toolbar button, +#MatePanelPopupWindow button, +#mate-menu button, +.gedit-search-slider .linked:not(.vertical)>button, +popover.messagepopover .popover-action-area button, +button.sidebar-button, +scrollbar button, +combobox>.linked:not(.vertical)>button:not(:only-child), +spinbutton.vertical button, +spinbutton:not(.vertical) button, +.nemo-window .toolbar button, +.raven .raven-header.top stackswitcher.linked>button, +.caja-navigation-window box.horizontal>button.toggle.image-button, +#CanvasTable button, +layouttabbar button, +.message-input-area button, +filechooser #pathbarbox>stack>box>button, +#buttonbox_frame button, +.drop-shadow button, +.budgie-session-dialog .linked.horizontal>button, +#caja-extra-view-widget button, +.lock-dialog button, +infobar.info>revealer>box button, +infobar.question>revealer>box button, +messagedialog .dialog-action-box button, +.app-notification button, +actionbar>revealer>box button:not(.suggested-action):not(.destructive-action), +popover.background.menu button, +popover.background button.model, +.titlebar button:not(.suggested-action):not(.destructive-action), +toolbar button, +button.flat { + color: @fg_rgba_07; + box-shadow: none; + background-color: transparent; +} + +.budgie-settings-window buttonbox.inline-toolbar button:drop(active), +#MatePanelPopupWindow button:drop(active), +#mate-menu button:drop(active), +.gedit-search-slider .linked:not(.vertical)>button:drop(active), +popover.messagepopover .popover-action-area button:drop(active), +button.sidebar-button:drop(active), +scrollbar button:drop(active), +combobox>.linked:not(.vertical)>button:drop(active):not(:only-child), +spinbutton.vertical button:drop(active), +spinbutton:not(.vertical) button:drop(active), +.nemo-window .toolbar button:drop(active), +.raven .raven-header.top stackswitcher.linked>button:drop(active), +.caja-navigation-window box.horizontal>button.toggle.image-button:drop(active), +#CanvasTable button:drop(active), +layouttabbar button:drop(active), +.message-input-area button:drop(active), +filechooser #pathbarbox>stack>box>button:drop(active), +#buttonbox_frame button:drop(active), +.drop-shadow button:drop(active), +.budgie-session-dialog .linked.horizontal>button:drop(active), +#caja-extra-view-widget button:drop(active), +.lock-dialog button:drop(active), +infobar.info>revealer>box button:drop(active), +infobar.question>revealer>box button:drop(active), +messagedialog .dialog-action-box button:drop(active), +.app-notification button:drop(active), +actionbar>revealer>box button:drop(active):not(.suggested-action):not(.destructive-action), +popover.background.menu button:drop(active), +popover.background button.model:drop(active), +.titlebar button:drop(active):not(.suggested-action):not(.destructive-action), +toolbar button:drop(active), +button.flat:drop(active), +.budgie-settings-window buttonbox.inline-toolbar button:hover, +#MatePanelPopupWindow button:hover, +#mate-menu button:hover, +.gedit-search-slider .linked:not(.vertical)>button:hover, +popover.messagepopover .popover-action-area button:hover, +button.sidebar-button:hover, +scrollbar button:hover, +combobox>.linked:not(.vertical)>button:hover:not(:only-child), +spinbutton.vertical button:hover, +spinbutton:not(.vertical) button:hover, +.nemo-window .toolbar button:hover, +.raven .raven-header.top stackswitcher.linked>button:hover, +.caja-navigation-window box.horizontal>button.toggle.image-button:hover, +#CanvasTable button:hover, +layouttabbar button:hover, +.message-input-area button:hover, +filechooser #pathbarbox>stack>box>button:hover, +#buttonbox_frame button:hover, +.drop-shadow button:hover, +.budgie-session-dialog .linked.horizontal>button:hover, +#caja-extra-view-widget button:hover, +.lock-dialog button:hover, +infobar.info>revealer>box button:hover, +infobar.question>revealer>box button:hover, +messagedialog .dialog-action-box button:hover, +.app-notification button:hover, +actionbar>revealer>box button:hover:not(.suggested-action):not(.destructive-action), +popover.background.menu button:hover, +popover.background button.model:hover, +.titlebar button:hover:not(.suggested-action):not(.destructive-action), +toolbar button:hover, +button.flat:hover { + box-shadow: none; + background-color: rgba(158, 158, 158, 0.08); +} + +.budgie-settings-window buttonbox.inline-toolbar button:focus, +#MatePanelPopupWindow button:focus, +#mate-menu button:focus, +.gedit-search-slider .linked:not(.vertical)>button:focus, +popover.messagepopover .popover-action-area button:focus, +button.sidebar-button:focus, +scrollbar button:focus, +combobox>.linked:not(.vertical)>button:focus:not(:only-child), +spinbutton.vertical button:focus, +spinbutton:not(.vertical) button:focus, +.nemo-window .toolbar button:focus, +.raven .raven-header.top stackswitcher.linked>button:focus, +.caja-navigation-window box.horizontal>button.toggle.image-button:focus, +#CanvasTable button:focus, +layouttabbar button:focus, +.message-input-area button:focus, +filechooser #pathbarbox>stack>box>button:focus, +#buttonbox_frame button:focus, +.drop-shadow button:focus, +.budgie-session-dialog .linked.horizontal>button:focus, +#caja-extra-view-widget button:focus, +.lock-dialog button:focus, +infobar.info>revealer>box button:focus, +infobar.question>revealer>box button:focus, +messagedialog .dialog-action-box button:focus, +.app-notification button:focus, +actionbar>revealer>box button:focus:not(.suggested-action):not(.destructive-action), +popover.background.menu button:focus, +popover.background button.model:focus, +.titlebar button:focus:not(.suggested-action):not(.destructive-action), +toolbar button:focus, +button.flat:focus { + box-shadow: none; + background-color: rgba(158, 158, 158, 0.08); +} + +.budgie-settings-window buttonbox.inline-toolbar button:active, +#MatePanelPopupWindow button:active, +#mate-menu button:active, +.gedit-search-slider .linked:not(.vertical)>button:active, +popover.messagepopover .popover-action-area button:active, +button.sidebar-button:active, +scrollbar button:active, +combobox>.linked:not(.vertical)>button:active:not(:only-child), +spinbutton.vertical button:active, +spinbutton:not(.vertical) button:active, +.nemo-window .toolbar button:active, +.raven .raven-header.top stackswitcher.linked>button:active, +.caja-navigation-window box.horizontal>button.toggle.image-button:active, +#CanvasTable button:active, +layouttabbar button:active, +.message-input-area button:active, +filechooser #pathbarbox>stack>box>button:active, +#buttonbox_frame button:active, +.drop-shadow button:active, +.budgie-session-dialog .linked.horizontal>button:active, +#caja-extra-view-widget button:active, +.lock-dialog button:active, +infobar.info>revealer>box button:active, +infobar.question>revealer>box button:active, +messagedialog .dialog-action-box button:active, +.app-notification button:active, +actionbar>revealer>box button:active:not(.suggested-action):not(.destructive-action), +popover.background.menu button:active, +popover.background button.model:active, +.titlebar button:active:not(.suggested-action):not(.destructive-action), +toolbar button:active, +button.flat:active { + box-shadow: none; + background-image: radial-gradient(circle, rgba(158, 158, 158, 0.12) 10%, transparent 0%); +} + +.budgie-settings-window buttonbox.inline-toolbar button:disabled, +#MatePanelPopupWindow button:disabled, +#mate-menu button:disabled, +.gedit-search-slider .linked:not(.vertical)>button:disabled, +popover.messagepopover .popover-action-area button:disabled, +button.sidebar-button:disabled, +scrollbar button:disabled, +combobox>.linked:not(.vertical)>button:disabled:not(:only-child), +spinbutton.vertical button:disabled, +spinbutton:not(.vertical) button:disabled, +.nemo-window .toolbar button:disabled, +.raven .raven-header.top stackswitcher.linked>button:disabled, +.caja-navigation-window box.horizontal>button.toggle.image-button:disabled, +#CanvasTable button:disabled, +layouttabbar button:disabled, +.message-input-area button:disabled, +filechooser #pathbarbox>stack>box>button:disabled, +#buttonbox_frame button:disabled, +.drop-shadow button:disabled, +.budgie-session-dialog .linked.horizontal>button:disabled, +#caja-extra-view-widget button:disabled, +.lock-dialog button:disabled, +infobar.info>revealer>box button:disabled, +infobar.question>revealer>box button:disabled, +messagedialog .dialog-action-box button:disabled, +.app-notification button:disabled, +actionbar>revealer>box button:disabled:not(.suggested-action):not(.destructive-action), +popover.background.menu button:disabled, +popover.background button.model:disabled, +.titlebar button:disabled:not(.suggested-action):not(.destructive-action), +toolbar button:disabled, +button.flat:disabled { + background-color: transparent; + color: @fg_rgba_03; +} + +.nemo-window .toolbar button:checked, +.raven .raven-header.top stackswitcher.linked>button:checked, +.caja-navigation-window box.horizontal>button.toggle.image-button:checked, +#CanvasTable button:checked, +layouttabbar button:checked, +.message-input-area button:checked, +filechooser #pathbarbox>stack>box>button:checked, +#buttonbox_frame button:checked, +.drop-shadow button:checked, +.budgie-session-dialog .linked.horizontal>button:checked, +#caja-extra-view-widget button:checked, +.lock-dialog button:checked, +infobar.info>revealer>box button:checked, +infobar.question>revealer>box button:checked, +messagedialog .dialog-action-box button:checked, +.app-notification button:checked, +actionbar>revealer>box button:checked:not(.suggested-action):not(.destructive-action), +popover.background.menu button:checked, +popover.background button.model:checked, +.titlebar button:checked:not(.suggested-action):not(.destructive-action), +toolbar button:checked, +button.flat:checked { + color: @accent; + box-shadow: none; + background-color: @accent_rgba_015; +} + +.nemo-window .toolbar button:checked:drop(active), +.raven .raven-header.top stackswitcher.linked>button:checked:drop(active), +.caja-navigation-window box.horizontal>button.toggle.image-button:checked:drop(active), +#CanvasTable button:checked:drop(active), +layouttabbar button:checked:drop(active), +.message-input-area button:checked:drop(active), +filechooser #pathbarbox>stack>box>button:checked:drop(active), +#buttonbox_frame button:checked:drop(active), +.drop-shadow button:checked:drop(active), +.budgie-session-dialog .linked.horizontal>button:checked:drop(active), +#caja-extra-view-widget button:checked:drop(active), +.lock-dialog button:checked:drop(active), +infobar.info>revealer>box button:checked:drop(active), +infobar.question>revealer>box button:checked:drop(active), +messagedialog .dialog-action-box button:checked:drop(active), +.app-notification button:checked:drop(active), +actionbar>revealer>box button:checked:drop(active):not(.suggested-action):not(.destructive-action), +popover.background.menu button:checked:drop(active), +popover.background button.model:checked:drop(active), +.titlebar button:checked:drop(active):not(.suggested-action):not(.destructive-action), +toolbar button:checked:drop(active), +button.flat:checked:drop(active), +.nemo-window .toolbar button:checked:hover, +.raven .raven-header.top stackswitcher.linked>button:checked:hover, +.caja-navigation-window box.horizontal>button.toggle.image-button:checked:hover, +#CanvasTable button:checked:hover, +layouttabbar button:checked:hover, +.message-input-area button:checked:hover, +filechooser #pathbarbox>stack>box>button:checked:hover, +#buttonbox_frame button:checked:hover, +.drop-shadow button:checked:hover, +.budgie-session-dialog .linked.horizontal>button:checked:hover, +#caja-extra-view-widget button:checked:hover, +.lock-dialog button:checked:hover, +infobar.info>revealer>box button:checked:hover, +infobar.question>revealer>box button:checked:hover, +messagedialog .dialog-action-box button:checked:hover, +.app-notification button:checked:hover, +actionbar>revealer>box button:checked:hover:not(.suggested-action):not(.destructive-action), +popover.background.menu button:checked:hover, +popover.background button.model:checked:hover, +.titlebar button:checked:hover:not(.suggested-action):not(.destructive-action), +toolbar button:checked:hover, +button.flat:checked:hover { + box-shadow: none; + background-color: rgba(56, 125, 183, 0.2608); +} + +.nemo-window .toolbar button:checked:focus, +.raven .raven-header.top stackswitcher.linked>button:checked:focus, +.caja-navigation-window box.horizontal>button.toggle.image-button:checked:focus, +#CanvasTable button:checked:focus, +layouttabbar button:checked:focus, +.message-input-area button:checked:focus, +filechooser #pathbarbox>stack>box>button:checked:focus, +#buttonbox_frame button:checked:focus, +.drop-shadow button:checked:focus, +.budgie-session-dialog .linked.horizontal>button:checked:focus, +#caja-extra-view-widget button:checked:focus, +.lock-dialog button:checked:focus, +infobar.info>revealer>box button:checked:focus, +infobar.question>revealer>box button:checked:focus, +messagedialog .dialog-action-box button:checked:focus, +.app-notification button:checked:focus, +actionbar>revealer>box button:checked:focus:not(.suggested-action):not(.destructive-action), +popover.background.menu button:checked:focus, +popover.background button.model:checked:focus, +.titlebar button:checked:focus:not(.suggested-action):not(.destructive-action), +toolbar button:checked:focus, +button.flat:checked:focus { + box-shadow: none; + background-color: rgba(56, 125, 183, 0.2608); +} + +.nemo-window .toolbar button:checked:active, +.raven .raven-header.top stackswitcher.linked>button:checked:active, +.caja-navigation-window box.horizontal>button.toggle.image-button:checked:active, +#CanvasTable button:checked:active, +layouttabbar button:checked:active, +.message-input-area button:checked:active, +filechooser #pathbarbox>stack>box>button:checked:active, +#buttonbox_frame button:checked:active, +.drop-shadow button:checked:active, +.budgie-session-dialog .linked.horizontal>button:checked:active, +#caja-extra-view-widget button:checked:active, +.lock-dialog button:checked:active, +infobar.info>revealer>box button:checked:active, +infobar.question>revealer>box button:checked:active, +messagedialog .dialog-action-box button:checked:active, +.app-notification button:checked:active, +actionbar>revealer>box button:checked:active:not(.suggested-action):not(.destructive-action), +popover.background.menu button:checked:active, +popover.background button.model:checked:active, +.titlebar button:checked:active:not(.suggested-action):not(.destructive-action), +toolbar button:checked:active, +button.flat:checked:active { + box-shadow: none; + background-image: radial-gradient(circle, @accent_rgba_015 10%, transparent 0%); +} + +.nemo-window .toolbar button:checked:disabled, +.raven .raven-header.top stackswitcher.linked>button:checked:disabled, +.caja-navigation-window box.horizontal>button.toggle.image-button:checked:disabled, +#CanvasTable button:checked:disabled, +layouttabbar button:checked:disabled, +.message-input-area button:checked:disabled, +filechooser #pathbarbox>stack>box>button:checked:disabled, +#buttonbox_frame button:checked:disabled, +.drop-shadow button:checked:disabled, +.budgie-session-dialog .linked.horizontal>button:checked:disabled, +#caja-extra-view-widget button:checked:disabled, +.lock-dialog button:checked:disabled, +infobar.info>revealer>box button:checked:disabled, +infobar.question>revealer>box button:checked:disabled, +messagedialog .dialog-action-box button:checked:disabled, +.app-notification button:checked:disabled, +actionbar>revealer>box button:checked:disabled:not(.suggested-action):not(.destructive-action), +popover.background.menu button:checked:disabled, +popover.background button.model:checked:disabled, +.titlebar button:checked:disabled:not(.suggested-action):not(.destructive-action), +toolbar button:checked:disabled, +button.flat:checked:disabled { + color: @fg_rgba_05; +} + +#buttonbox_frame button.text-button, +.drop-shadow button.text-button, +.budgie-session-dialog .linked.horizontal>button.text-button, +#caja-extra-view-widget button.text-button, +.lock-dialog button.text-button, +infobar.info>revealer>box button.text-button, +infobar.question>revealer>box button.text-button, +messagedialog .dialog-action-box button.text-button, +.app-notification button.text-button, +actionbar>revealer>box button.text-button:not(.suggested-action):not(.destructive-action), +popover.background.menu button.text-button, +popover.background button.text-button.model, +.titlebar button.text-button:not(.suggested-action):not(.destructive-action), +toolbar button.text-button, +button.flat.text-button { + min-width: 48px; + padding-left: 8px; + padding-right: 8px; +} + +#buttonbox_frame button.text-button.image-button, +.drop-shadow button.text-button.image-button, +.budgie-session-dialog .linked.horizontal>button.text-button.image-button, +#caja-extra-view-widget button.text-button.image-button, +.lock-dialog button.text-button.image-button, +infobar.info>revealer>box button.text-button.image-button, +infobar.question>revealer>box button.text-button.image-button, +messagedialog .dialog-action-box button.text-button.image-button, +.app-notification button.text-button.image-button, +actionbar>revealer>box button.text-button.image-button:not(.suggested-action):not(.destructive-action), +popover.background.menu button.text-button.image-button, +popover.background button.text-button.image-button.model, +.titlebar button.text-button.image-button:not(.suggested-action):not(.destructive-action), +toolbar button.text-button.image-button, +button.flat.text-button.image-button { + min-width: 24px; + padding: 4px; +} + +#buttonbox_frame button.text-button.image-button label:first-child, +.drop-shadow button.text-button.image-button label:first-child, +.budgie-session-dialog .linked.horizontal>button.text-button.image-button label:first-child, +#caja-extra-view-widget button.text-button.image-button label:first-child, +.lock-dialog button.text-button.image-button label:first-child, +infobar.info>revealer>box button.text-button.image-button label:first-child, +infobar.question>revealer>box button.text-button.image-button label:first-child, +messagedialog .dialog-action-box button.text-button.image-button label:first-child, +.app-notification button.text-button.image-button label:first-child, +actionbar>revealer>box button.text-button.image-button:not(.suggested-action):not(.destructive-action) label:first-child, +popover.background.menu button.text-button.image-button label:first-child, +popover.background button.text-button.image-button.model label:first-child, +.titlebar button.text-button.image-button:not(.suggested-action):not(.destructive-action) label:first-child, +toolbar button.text-button.image-button label:first-child, +button.flat.text-button.image-button label:first-child { + margin-left: 8px; +} + +#buttonbox_frame button.text-button.image-button label:last-child, +.drop-shadow button.text-button.image-button label:last-child, +.budgie-session-dialog .linked.horizontal>button.text-button.image-button label:last-child, +#caja-extra-view-widget button.text-button.image-button label:last-child, +.lock-dialog button.text-button.image-button label:last-child, +infobar.info>revealer>box button.text-button.image-button label:last-child, +infobar.question>revealer>box button.text-button.image-button label:last-child, +messagedialog .dialog-action-box button.text-button.image-button label:last-child, +.app-notification button.text-button.image-button label:last-child, +actionbar>revealer>box button.text-button.image-button:not(.suggested-action):not(.destructive-action) label:last-child, +popover.background.menu button.text-button.image-button label:last-child, +popover.background button.text-button.image-button.model label:last-child, +.titlebar button.text-button.image-button:not(.suggested-action):not(.destructive-action) label:last-child, +toolbar button.text-button.image-button label:last-child, +button.flat.text-button.image-button label:last-child { + margin-right: 8px; +} + +#buttonbox_frame .linked:not(.vertical)>button:not(:only-child), +.drop-shadow .linked:not(.vertical)>button:not(:only-child), +.budgie-session-dialog .linked.horizontal:not(.vertical)>button:not(:only-child), +#caja-extra-view-widget .linked:not(.vertical)>button:not(:only-child), +.lock-dialog .linked:not(.vertical)>button:not(:only-child), +infobar.info>revealer>box .linked:not(.vertical)>button:not(:only-child), +infobar.question>revealer>box .linked:not(.vertical)>button:not(:only-child), +messagedialog .dialog-action-box .linked:not(.vertical)>button:not(:only-child), +.app-notification .linked:not(.vertical)>button:not(:only-child), +actionbar>revealer>box .linked:not(.vertical)>button:not(:only-child):not(.suggested-action):not(.destructive-action), +popover.background.menu .linked:not(.vertical)>button:not(:only-child), +popover.background .linked:not(.vertical)>button.model:not(:only-child), +.titlebar .linked:not(.vertical)>button:not(:only-child):not(.suggested-action):not(.destructive-action), +toolbar .linked:not(.vertical)>button:not(:only-child), +#buttonbox_frame .linked.vertical>button:not(:only-child), +.drop-shadow .linked.vertical>button:not(:only-child), +.budgie-session-dialog .linked.horizontal.vertical>button:not(:only-child), +#caja-extra-view-widget .linked.vertical>button:not(:only-child), +.lock-dialog .linked.vertical>button:not(:only-child), +infobar.info>revealer>box .linked.vertical>button:not(:only-child), +infobar.question>revealer>box .linked.vertical>button:not(:only-child), +messagedialog .dialog-action-box .linked.vertical>button:not(:only-child), +.app-notification .linked.vertical>button:not(:only-child), +actionbar>revealer>box .linked.vertical>button:not(:only-child):not(.suggested-action):not(.destructive-action), +popover.background.menu .linked.vertical>button:not(:only-child), +popover.background .linked.vertical>button.model:not(:only-child), +.titlebar .linked.vertical>button:not(:only-child):not(.suggested-action):not(.destructive-action), +toolbar .linked.vertical>button:not(:only-child), +.linked:not(.vertical)>button.flat:not(:only-child), +.linked.vertical>button.flat:not(:only-child) { + border-radius: 2px; +} + +#buttonbox_frame .linked:not(.vertical)>button:not(:only-child).image-button:not(.text-button), +.drop-shadow .linked:not(.vertical)>button:not(:only-child).image-button:not(.text-button), +.budgie-session-dialog .linked.horizontal:not(.vertical)>button:not(:only-child).image-button:not(.text-button), +#caja-extra-view-widget .linked:not(.vertical)>button:not(:only-child).image-button:not(.text-button), +.lock-dialog .linked:not(.vertical)>button:not(:only-child).image-button:not(.text-button), +infobar.info>revealer>box .linked:not(.vertical)>button:not(:only-child).image-button:not(.text-button), +infobar.question>revealer>box .linked:not(.vertical)>button:not(:only-child).image-button:not(.text-button), +messagedialog .dialog-action-box .linked:not(.vertical)>button:not(:only-child).image-button:not(.text-button), +.app-notification .linked:not(.vertical)>button:not(:only-child).image-button:not(.text-button), +actionbar>revealer>box .linked:not(.vertical)>button:not(:only-child).image-button:not(.text-button):not(.suggested-action):not(.destructive-action), +popover.background.menu .linked:not(.vertical)>button:not(:only-child).image-button:not(.text-button), +popover.background .linked:not(.vertical)>button.model:not(:only-child).image-button:not(.text-button), +.titlebar .linked:not(.vertical)>button:not(:only-child).image-button:not(.text-button):not(.suggested-action):not(.destructive-action), +toolbar .linked:not(.vertical)>button:not(:only-child).image-button:not(.text-button), +#buttonbox_frame .linked.vertical>button:not(:only-child).image-button:not(.text-button), +.drop-shadow .linked.vertical>button:not(:only-child).image-button:not(.text-button), +.budgie-session-dialog .linked.horizontal.vertical>button:not(:only-child).image-button:not(.text-button), +#caja-extra-view-widget .linked.vertical>button:not(:only-child).image-button:not(.text-button), +.lock-dialog .linked.vertical>button:not(:only-child).image-button:not(.text-button), +infobar.info>revealer>box .linked.vertical>button:not(:only-child).image-button:not(.text-button), +infobar.question>revealer>box .linked.vertical>button:not(:only-child).image-button:not(.text-button), +messagedialog .dialog-action-box .linked.vertical>button:not(:only-child).image-button:not(.text-button), +.app-notification .linked.vertical>button:not(:only-child).image-button:not(.text-button), +actionbar>revealer>box .linked.vertical>button:not(:only-child).image-button:not(.text-button):not(.suggested-action):not(.destructive-action), +popover.background.menu .linked.vertical>button:not(:only-child).image-button:not(.text-button), +popover.background .linked.vertical>button.model:not(:only-child).image-button:not(.text-button), +.titlebar .linked.vertical>button:not(:only-child).image-button:not(.text-button):not(.suggested-action):not(.destructive-action), +toolbar .linked.vertical>button:not(:only-child).image-button:not(.text-button), +.linked:not(.vertical)>button.flat:not(:only-child).image-button:not(.text-button), +.linked.vertical>button.flat:not(:only-child).image-button:not(.text-button) { + border-radius: 9999px; +} + +button.osd { + padding: 8px 12px; +} + +button.osd.image-button { + padding: 8px; +} + +button.osd:disabled { + opacity: 0; +} + +button.suggested-action { + color: @fg_accent; + box-shadow: 0 3px 2px -3px @bg_accent_rgba_03, 0 2px 2px -1px rgba(0, 0, 0, 0.24), 0 1px 3px 0 @bg_accent_rgba_015; + background-color: @accent; +} + +button.suggested-action:drop(active), +button.suggested-action:hover { + box-shadow: 0 2px 2.4px -1px rgba(0, 0, 0, 0.2), 0 4px 3px 0 rgba(0, 0, 0, 0.14), 0 1px 6px 0 @bg_accent_rgba_015; + background-color: @accent_gradient_inverse_1; +} + +button.suggested-action:focus { + box-shadow: 0 2px 2.4px -1px rgba(0, 0, 0, 0.2), 0 4px 3px 0 rgba(0, 0, 0, 0.14), 0 1px 6px 0 @bg_accent_rgba_015; + background-color: @accent_gradient_inverse_2; +} + +button.suggested-action:active { + box-shadow: 0 5px 3px -3px rgba(0, 0, 0, 0.2), 0 8px 6px 1px rgba(0, 0, 0, 0.14), 0 3px 8.4px 2px @bg_accent_rgba_015; + background-image: radial-gradient(circle, rgba(255, 255, 255, 0.12) 10%, transparent 0%); +} + +button.suggested-action:disabled { + box-shadow: none; + background-color: rgba(158, 158, 158, 0.08); + color: @fg_rgba_05; +} + +button.suggested-action:checked { + box-shadow: 0 3px 2px -3px @bg_accent_rgba_03, 0 2px 2px -1px rgba(0, 0, 0, 0.24), 0 1px 3px 0 @bg_accent_rgba_015; + background-color: @accent_gradient_inverse_3; +} + +button.suggested-action:checked:drop(active), +button.suggested-action:checked:hover { + box-shadow: 0 2px 2.4px -1px rgba(0, 0, 0, 0.2), 0 4px 3px 0 rgba(0, 0, 0, 0.14), 0 1px 6px 0 @bg_accent_rgba_015; + background-color: #5f96c5; +} + +button.suggested-action:checked:focus { + box-shadow: 0 2px 2.4px -1px rgba(0, 0, 0, 0.2), 0 4px 3px 0 rgba(0, 0, 0, 0.14), 0 1px 6px 0 @bg_accent_rgba_015; + background-color: #659bc8; +} + +button.suggested-action:checked:active { + box-shadow: 0 5px 3px -3px rgba(0, 0, 0, 0.2), 0 8px 6px 1px rgba(0, 0, 0, 0.14), 0 3px 8.4px 2px @bg_accent_rgba_015; + background-image: radial-gradient(circle, rgba(255, 255, 255, 0.12) 10%, transparent 0%); +} + +button.suggested-action.flat { + color: @accent; + box-shadow: none; + background-color: transparent; +} + +button.suggested-action.flat:drop(active), +button.suggested-action.flat:hover { + box-shadow: none; + background-color: @accent_rgba_011; +} + +button.suggested-action.flat:focus { + box-shadow: none; + background-color: @accent_rgba_011; +} + +button.suggested-action.flat:active { + box-shadow: none; + background-image: radial-gradient(circle, @accent_rgba_015 10%, transparent 0%); +} + +button.suggested-action.flat:disabled { + box-shadow: none; + background-color: transparent; + color: @fg_rgba_03; +} + +button.suggested-action.flat:checked { + box-shadow: none; + background-color: @accent_rgba_015; +} + +button.suggested-action.flat:checked:drop(active), +button.suggested-action.flat:checked:hover { + box-shadow: none; + background-color: rgba(56, 125, 183, 0.2608); +} + +button.suggested-action.flat:checked:focus { + box-shadow: none; + background-color: rgba(56, 125, 183, 0.2608); +} + +button.suggested-action.flat:checked:active { + box-shadow: none; + background-image: radial-gradient(circle, @accent_rgba_015 10%, transparent 0%); +} + +button.destructive-action { + color: @fg_accent; + box-shadow: 0 3px 2px -3px @bg_accent_rgba_03, 0 2px 2px -1px rgba(0, 0, 0, 0.24), 0 1px 3px 0 @bg_accent_rgba_015; + background-color: #f44336; +} + +button.destructive-action:drop(active), +button.destructive-action:hover { + box-shadow: 0 2px 2.4px -1px rgba(0, 0, 0, 0.2), 0 4px 3px 0 rgba(0, 0, 0, 0.14), 0 1px 6px 0 @bg_accent_rgba_015; + background-color: #f55246; +} + +button.destructive-action:focus { + box-shadow: 0 2px 2.4px -1px rgba(0, 0, 0, 0.2), 0 4px 3px 0 rgba(0, 0, 0, 0.14), 0 1px 6px 0 @bg_accent_rgba_015; + background-color: #f55a4e; +} + +button.destructive-action:active { + box-shadow: 0 5px 3px -3px rgba(0, 0, 0, 0.2), 0 8px 6px 1px rgba(0, 0, 0, 0.14), 0 3px 8.4px 2px @bg_accent_rgba_015; + background-image: radial-gradient(circle, rgba(255, 255, 255, 0.12) 10%, transparent 0%); +} + +button.destructive-action:disabled { + box-shadow: none; + background-color: rgba(158, 158, 158, 0.08); + color: @fg_rgba_05; +} + +button.destructive-action:checked { + box-shadow: 0 3px 2px -3px @bg_accent_rgba_03, 0 2px 2px -1px rgba(0, 0, 0, 0.24), 0 1px 3px 0 @bg_accent_rgba_015; + background-color: #f66156; +} + +button.destructive-action:checked:drop(active), +button.destructive-action:checked:hover { + box-shadow: 0 2px 2.4px -1px rgba(0, 0, 0, 0.2), 0 4px 3px 0 rgba(0, 0, 0, 0.14), 0 1px 6px 0 @bg_accent_rgba_015; + background-color: #f76e64; +} + +button.destructive-action:checked:focus { + box-shadow: 0 2px 2.4px -1px rgba(0, 0, 0, 0.2), 0 4px 3px 0 rgba(0, 0, 0, 0.14), 0 1px 6px 0 @bg_accent_rgba_015; + background-color: #f7746a; +} + +button.destructive-action:checked:active { + box-shadow: 0 5px 3px -3px rgba(0, 0, 0, 0.2), 0 8px 6px 1px rgba(0, 0, 0, 0.14), 0 3px 8.4px 2px @bg_accent_rgba_015; + background-image: radial-gradient(circle, rgba(255, 255, 255, 0.12) 10%, transparent 0%); +} + +button.destructive-action.flat { + color: #f44336; + box-shadow: none; + background-color: transparent; +} + +button.destructive-action.flat:drop(active), +button.destructive-action.flat:hover { + box-shadow: none; + background-color: rgba(244, 67, 54, 0.12); +} + +button.destructive-action.flat:focus { + box-shadow: none; + background-color: rgba(244, 67, 54, 0.12); +} + +button.destructive-action.flat:active { + box-shadow: none; + background-image: radial-gradient(circle, rgba(244, 67, 54, 0.16) 10%, transparent 0%); +} + +button.destructive-action.flat:disabled { + box-shadow: none; + background-color: transparent; + color: @fg_rgba_03; +} + +button.destructive-action.flat:checked { + box-shadow: none; + background-color: rgba(244, 67, 54, 0.16); +} + +button.destructive-action.flat:checked:drop(active), +button.destructive-action.flat:checked:hover { + box-shadow: none; + background-color: rgba(244, 67, 54, 0.2608); +} + +button.destructive-action.flat:checked:focus { + box-shadow: none; + background-color: rgba(244, 67, 54, 0.2608); +} + +button.destructive-action.flat:checked:active { + box-shadow: none; + background-image: radial-gradient(circle, rgba(244, 67, 54, 0.16) 10%, transparent 0%); +} + +.stack-switcher>button>label { + margin: 0 -6px; + padding: 0 6px; +} + +.stack-switcher>button>image { + margin: -3px -6px; + padding: 3px 6px; +} + +.stack-switcher>button.needs-attention:checked>label, +.stack-switcher>button.needs-attention:checked>image { + animation: none; + background-image: none; +} + +.inline-toolbar button:not(.text-button) { + border-radius: 9999px; +} + +.primary-toolbar button { + -gtk-icon-shadow: none; +} + +button.close, +button.circular { + border-radius: 9999px; +} + +.pluma-window paned.horizontal box.vertical box.horizontal button.flat, +.nautilus-window .floating-bar button, +.gedit-document-panel row button.flat, +.gedit-search-slider .linked:not(.vertical)>button, +button.sidebar-button, +notebook>header>tabs>tab button.flat, +spinbutton:not(.vertical) button { + min-height: 24px; + min-width: 24px; + padding: 0; + border-radius: 9999px; +} + +stacksidebar.sidebar row.needs-attention>label, +.stack-switcher>button.needs-attention>label, +.stack-switcher>button.needs-attention>image { + animation: needs-attention 225ms cubic-bezier(0, 0, 0.2, 1) forwards; + background-repeat: no-repeat; + background-position: right 3px; + background-size: 6px 6px; +} + +stacksidebar.sidebar row.needs-attention>label:dir(rtl), +.stack-switcher>button.needs-attention>label:dir(rtl), +.stack-switcher>button.needs-attention>image:dir(rtl) { + background-position: left 3px; +} + +.linked:not(.vertical)>combobox:not(:first-child)>box>button.combo, +.linked:not(.vertical)>spinbutton:not(:first-child):not(.vertical), +.linked:not(.vertical)>entry:not(:first-child), +.linked:not(.vertical)>button:not(:first-child) { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} + +.linked:not(.vertical)>combobox:not(:last-child)>box>button.combo, +.linked:not(.vertical)>spinbutton:not(:last-child):not(.vertical), +.linked:not(.vertical)>entry:not(:last-child), +.linked:not(.vertical)>button:not(:last-child) { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} + +.linked.vertical>combobox:not(:first-child)>box>button.combo, +.linked.vertical>spinbutton:not(:first-child):not(.vertical), +.linked.vertical>entry:not(:first-child), +.linked.vertical>button:not(:first-child) { + border-top-left-radius: 0; + border-top-right-radius: 0; +} + +.linked.vertical>combobox:not(:last-child)>box>button.combo, +.linked.vertical>spinbutton:not(:last-child):not(.vertical), +.linked.vertical>entry:not(:last-child), +.linked.vertical>button:not(:last-child) { + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; +} + +.linked:not(.vertical)>button.image-button:first-child:not(.text-button) { + border-top-left-radius: 2px; + border-bottom-left-radius: 2px; +} + +.linked:not(.vertical)>button.image-button:last-child:not(.text-button) { + border-top-right-radius: 2px; + border-bottom-right-radius: 2px; +} + +.linked:not(.vertical)>button.image-button:only-child:not(.text-button) { + border-radius: 9999px; +} + +.linked.vertical>button.image-button:first-child:not(.text-button) { + border-top-left-radius: 2px; + border-top-right-radius: 2px; +} + +.linked.vertical>button.image-button:last-child:not(.text-button) { + border-bottom-left-radius: 2px; + border-bottom-right-radius: 2px; +} + +.linked.vertical>button.image-button:only-child:not(.text-button) { + border-radius: 9999px; +} + +/* menu buttons */ +modelbutton.flat, +.menuitem.button.flat { + min-height: 28px; + padding: 0 8px; + border-radius: 2px; +} + +modelbutton.flat:drop(active), +modelbutton.flat:hover, +.menuitem.button.flat:drop(active), +.menuitem.button.flat:hover { + background-color: rgba(158, 158, 158, 0.08); +} + +modelbutton.flat:focus, +.menuitem.button.flat:focus { + background-color: rgba(158, 158, 158, 0.08); +} + +modelbutton.flat:active, +.menuitem.button.flat:active { + background-image: radial-gradient(circle, rgba(158, 158, 158, 0.12) 10%, transparent 0%); +} + +modelbutton.flat:selected, +.menuitem.button.flat:selected { + background-color: @accent_rgba_03; +} + +modelbutton.flat arrow { + transition: color 75ms cubic-bezier(0, 0, 0.2, 1); + color: @fg_rgba_07; +} + +modelbutton.flat arrow:disabled { + color: @fg_rgba_03; +} + +modelbutton.flat arrow.left { + -gtk-icon-source: -gtk-icontheme("pan-start-symbolic"); +} + +modelbutton.flat arrow.right { + -gtk-icon-source: -gtk-icontheme("pan-end-symbolic"); +} + +button.color { + min-height: 24px; + min-width: 24px; + padding: 4px; +} + +/** + * Links + */ +*:link { + color: @accent; +} + +*:link:disabled { + color: @fg_rgba_05; +} + +*:visited { + color: @accent2; +} + +*:visited:disabled { + color: @fg_rgba_05; +} + +button.link:link { + color: @accent; + box-shadow: none; + background-color: transparent; +} + +button.link:link:drop(active), +button.link:link:hover { + box-shadow: none; + background-color: @accent_rgba_011; +} + +button.link:link:focus { + box-shadow: none; + background-color: @accent_rgba_011; +} + +button.link:link:active { + box-shadow: none; + background-image: radial-gradient(circle, @accent_rgba_015 10%, transparent 0%); +} + +button.link:visited { + color: @accent2; + box-shadow: none; + background-color: transparent; +} + +button.link:visited:drop(active), +button.link:visited:hover { + box-shadow: none; + background-color: @accent2_rgba_015; +} + +button.link:visited:focus { + box-shadow: none; + background-color: @accent2_rgba_015; +} + +button.link:visited:active { + box-shadow: none; + background-image: radial-gradient(circle, rgba(103, 58, 183, 0.16) 10%, transparent 0%); +} + +button.link:disabled { + color: @fg_rgba_05; +} + +button.link>label { + text-decoration-line: underline; +} + +/** + * GtkSpinButton + */ +spinbutton:not(.vertical) { + padding: 0; +} + +spinbutton:not(.vertical) entry { + min-width: 24px; + margin: 0; + border-image: none; + border-radius: 0; + box-shadow: none; + background-color: transparent; +} + +spinbutton:not(.vertical) button { + border: solid 4px transparent; + background-clip: padding-box; +} + +spinbutton:not(.vertical) button:focus:not(:hover):not(:active) { + background-color: transparent; +} + +spinbutton:not(.vertical) button.up:dir(ltr), +spinbutton:not(.vertical) button.down:dir(rtl) { + margin-left: -2px; +} + +spinbutton:not(.vertical) button.up:dir(rtl), +spinbutton:not(.vertical) button.down:dir(ltr) { + margin-right: -2px; +} + +spinbutton.vertical { + caret-color: @accent; +} + +spinbutton.vertical:disabled { + color: @fg_rgba_05; +} + +spinbutton.vertical entry { + min-height: 32px; + min-width: 40px; + padding: 0; +} + +spinbutton.vertical button { + min-height: 32px; + min-width: 40px; + padding: 0; +} + +spinbutton.vertical button:focus:not(:hover):not(:active) { + background-color: transparent; +} + +spinbutton.vertical button.up { + border-radius: 2px 2px 0 0; +} + +spinbutton.vertical button.down { + border-radius: 0 0 2px 2px; +} + +treeview spinbutton:not(.vertical) { + min-height: 0; + border-style: none; + border-radius: 0; +} + +treeview spinbutton:not(.vertical) entry { + min-height: 0; + padding: 1px 2px; +} + +/** + * ComboBoxes + */ +combobox arrow { + transition: -gtk-icon-transform 75ms cubic-bezier(0, 0, 0.2, 1); + -gtk-icon-source: -gtk-icontheme("pan-down-symbolic"); + min-height: 16px; + min-width: 16px; +} + +combobox button.combo:checked arrow { + -gtk-icon-transform: rotate(-0.5turn); +} + +combobox decoration { + transition: none; +} + +combobox cellview { + margin: -2px; +} + +combobox button.combo cellview:dir(ltr) { + margin-left: -2px; +} + +combobox button.combo cellview:dir(rtl) { + margin-right: -2px; +} + +combobox menu { + padding: 2px 0; +} + +combobox menu menuitem { + min-height: 28px; + padding: 0 8px; +} + +combobox menu>arrow.top { + margin-top: -2px; +} + +combobox menu>arrow.bottom { + margin-top: 4px; + margin-bottom: -6px; +} + +combobox>.linked:not(.vertical)>entry:not(:only-child) { + border-radius: 2px 2px 0 0; +} + +combobox>.linked:not(.vertical)>entry:not(:only-child):first-child { + margin-right: -32px; + padding-right: 32px; +} + +combobox>.linked:not(.vertical)>entry:not(:only-child):last-child { + margin-left: -32px; + padding-left: 32px; +} + +combobox>.linked:not(.vertical)>button:not(:only-child) { + min-height: 16px; + min-width: 16px; + margin: 4px; + padding: 4px; + border-radius: 9999px; +} + +button.combo:only-child { + border-radius: 2px 2px 0 0; + font-weight: normal; + transition: all 75ms cubic-bezier(0, 0, 0.2, 1), border-image 225ms cubic-bezier(0, 0, 0.2, 1); + border-image: radial-gradient(circle closest-corner at center calc(100% - 1px), @accent 0%, transparent 0%) 2/0 0 0; + box-shadow: inset 0 -1px @fg_rgba_03; + background-color: rgba(158, 158, 158, 0.04); + color: @fg; + caret-color: @accent; +} + +button.combo:only-child:focus { + box-shadow: inset 0 -1px @fg_rgba_03; + background-color: @fg_rgba_01; +} + +button.combo:only-child:drop(active), +button.combo:only-child:hover { + box-shadow: inset 0 -1px @fg_rgba_03; + background-color: rgba(158, 158, 158, 0.0784); +} + +button.combo:only-child:checked { + border-image: radial-gradient(circle closest-corner at center calc(100% - 1px), @accent 100%, transparent 0%) 2/0 0 2px; + box-shadow: inset 0 -1px @fg_rgba_03; + background-color: @fg_rgba_01; +} + +button.combo:only-child:disabled { + box-shadow: inset 0 -1px @fg_rgba_02; + background-color: rgba(158, 158, 158, 0.04); + color: @fg_rgba_05; +} + +button.combo:only-child arrow { + transition: color 75ms cubic-bezier(0, 0, 0.2, 1); + color: @fg_rgba_07; +} + +button.combo:only-child arrow:disabled { + color: @fg_rgba_03; +} + +/** + * Toolbars + */ +toolbar { + -GtkWidget-window-dragging: true; + padding: 2px; +} + +toolbar.osd.left, +toolbar.osd.right, +toolbar.osd.top, +toolbar.osd.bottom { + border-radius: 0; +} + +toolbar.osd.bottom { + box-shadow: none; + background-color: transparent; + background-image: linear-gradient(to bottom, transparent, rgba(0, 0, 0, 0.1) 30%, rgba(0, 0, 0, 0.2) 50%, @bg_accent_rgba_04); +} + +toolbar.horizontal>separator { + margin: 2px; +} + +toolbar.vertical>separator { + margin: 2px; +} + +toolbar:not(.inline-toolbar):not(.osd) scale, +toolbar:not(.inline-toolbar):not(.osd) entry, +toolbar:not(.inline-toolbar):not(.osd) spinbutton, +toolbar:not(.inline-toolbar):not(.osd) button { + margin: 2px; +} + +toolbar:not(.inline-toolbar):not(.osd) .linked entry:not(:first-child), +toolbar:not(.inline-toolbar):not(.osd) .linked spinbutton:not(:first-child), +toolbar:not(.inline-toolbar):not(.osd) .linked button:not(:first-child) { + margin-left: 0; +} + +toolbar:not(.inline-toolbar):not(.osd) .linked entry:not(:last-child), +toolbar:not(.inline-toolbar):not(.osd) .linked spinbutton:not(:last-child), +toolbar:not(.inline-toolbar):not(.osd) .linked button:not(:last-child) { + margin-right: 0; +} + +toolbar:not(.inline-toolbar):not(.osd) spinbutton entry, +toolbar:not(.inline-toolbar):not(.osd) spinbutton button { + margin: 0; +} + +toolbar:not(.inline-toolbar):not(.osd) switch { + margin: 6px 2px; +} + +frame.documents-dropdown, +.app-notification, +toolbar.osd { + transition: box-shadow 75ms cubic-bezier(0, 0, 0.2, 1); + padding: 4px; + border-radius: 2px; + box-shadow: 0 2px 2.4px -1px rgba(0, 0, 0, 0.2), 0 4px 3px 0 rgba(0, 0, 0, 0.14), 0 1px 6px 0 @bg_accent_rgba_015, inset 0 1px rgba(255, 255, 255, 0.05); + background-color: #141416; +} + +frame.documents-dropdown:backdrop, +.app-notification:backdrop, +toolbar.osd:backdrop { + box-shadow: 0 3px 2px -3px @bg_accent_rgba_03, 0 2px 2px -1px rgba(0, 0, 0, 0.24), 0 1px 3px 0 @bg_accent_rgba_015, inset 0 1px rgba(255, 255, 255, 0.05); +} + +.inline-toolbar { + padding: 4px; + border-style: solid; + border-width: 0 1px 1px; + border-color: @fg_rgba_02; + background-color: #1a1c1e; + background-clip: padding-box; +} + +searchbar>revealer>box, +.location-bar { + padding: 4px; + border-style: solid; + border-width: 0 0 1px; + border-color: @fg_rgba_02; +} + +searchbar>revealer>box { + margin: -6px; + padding: 4px; +} + +/** + * Header bars + */ +.titlebar { + transition: background-color 75ms cubic-bezier(0, 0, 0.2, 1), color 75ms cubic-bezier(0, 0, 0.2, 1); + border-radius: 2px 2px 0 0; + box-shadow: 0 2px 2px -2px @bg_accent_rgba_03, 0 1px 2px -1px rgba(0, 0, 0, 0.24), 0 1px 2px -0.6px rgba(0, 0, 0, 0.17), inset 0 1px rgba(255, 255, 255, 0.05); + background-color: #09090a; + color: @inactive; +} + +.titlebar:disabled { + color: @inactive_rgba_05; +} + +.titlebar:backdrop { + background-color: @bg_accent000; + color: @inactive_rgba_07; +} + +.titlebar:backdrop:disabled { + color: @inactive_rgba_03; +} + +.titlebar .title { + padding-left: 12px; + padding-right: 12px; + font-weight: bold; +} + +.titlebar .subtitle { + padding-left: 12px; + padding-right: 12px; + font-size: smaller; +} + +.titlebar .subtitle, +.titlebar .dim-label { + transition: color 75ms cubic-bezier(0, 0, 0.2, 1); + color: @inactive_rgba_07; +} + +.titlebar .subtitle:backdrop, +.titlebar .dim-label:backdrop { + color: @inactive_rgba_05; +} + +.titlebar .titlebar { + background-color: transparent; + box-shadow: none; +} + +.titlebar headerbar+separator { + background-color: @inactive_rgba_02; +} + +.titlebar entry { + box-shadow: inset 0 -1px @inactive_rgba_03; + background-color: rgba(128, 134, 139, 0.04); + color: @inactive; +} + +.titlebar entry:disabled { + box-shadow: inset 0 -1px @inactive_rgba_02; + background-color: rgba(128, 134, 139, 0.04); + color: @inactive_rgba_05; +} + +.titlebar entry image { + color: @inactive_rgba_07; +} + +.titlebar entry image:hover, +.titlebar entry image:active { + color: @inactive; +} + +.titlebar entry image:disabled { + color: @inactive_rgba_05; +} + +.titlebar .linked:not(.vertical)>entry:not(:only-child) { + border-radius: 2px 2px 0 0; +} + +.titlebar button:not(.suggested-action):not(.destructive-action) { + border-image: radial-gradient(circle closest-corner at center calc(100% - 1px), currentcolor 0%, transparent 0%) 0 0 0/0 0 0; + background-color: transparent; + color: @inactive_rgba_07; + box-shadow: none; + background-color: transparent; +} + +.titlebar button:not(.suggested-action):not(.destructive-action):drop(active), +.titlebar button:not(.suggested-action):not(.destructive-action):hover { + box-shadow: none; + background-color: rgba(128, 134, 139, 0.08); +} + +.titlebar button:not(.suggested-action):not(.destructive-action):focus { + box-shadow: none; + background-color: rgba(128, 134, 139, 0.08); +} + +.titlebar button:not(.suggested-action):not(.destructive-action):active { + box-shadow: none; + background-image: radial-gradient(circle, rgba(128, 134, 139, 0.12) 10%, transparent 0%); +} + +.titlebar button:not(.suggested-action):not(.destructive-action):disabled { + color: @inactive_rgba_03; +} + +.path-bar-box .nautilus-path-bar button:not(.suggested-action):not(.destructive-action):last-child:dir(ltr), +.path-bar-box .nautilus-path-bar button:not(.suggested-action):not(.destructive-action):first-child:dir(rtl), +.titlebar button:not(.suggested-action):not(.destructive-action):checked { + border-image: radial-gradient(circle closest-corner at center calc(100% - 1px), currentcolor 100%, transparent 0%) 0 0 2/0 0 2px; + background-color: transparent; + color: @inactive; + box-shadow: none; + background-color: transparent; +} + +.path-bar-box .nautilus-path-bar button:drop(active):not(.suggested-action):not(.destructive-action):last-child:dir(ltr), +.path-bar-box .nautilus-path-bar button:drop(active):not(.suggested-action):not(.destructive-action):first-child:dir(rtl), +.path-bar-box .nautilus-path-bar button:hover:not(.suggested-action):not(.destructive-action):last-child:dir(ltr), +.path-bar-box .nautilus-path-bar button:hover:not(.suggested-action):not(.destructive-action):first-child:dir(rtl), +.titlebar button:not(.suggested-action):not(.destructive-action):checked:drop(active), +.titlebar button:not(.suggested-action):not(.destructive-action):checked:hover { + box-shadow: none; + background-color: rgba(128, 134, 139, 0.08); +} + +.path-bar-box .nautilus-path-bar button:focus:not(.suggested-action):not(.destructive-action):last-child:dir(ltr), +.path-bar-box .nautilus-path-bar button:focus:not(.suggested-action):not(.destructive-action):first-child:dir(rtl), +.titlebar button:not(.suggested-action):not(.destructive-action):checked:focus { + box-shadow: none; + background-color: rgba(128, 134, 139, 0.08); +} + +.path-bar-box .nautilus-path-bar button:active:not(.suggested-action):not(.destructive-action):last-child:dir(ltr), +.path-bar-box .nautilus-path-bar button:active:not(.suggested-action):not(.destructive-action):first-child:dir(rtl), +.titlebar button:not(.suggested-action):not(.destructive-action):checked:active { + box-shadow: none; + background-image: radial-gradient(circle, rgba(128, 134, 139, 0.12) 10%, transparent 0%); +} + +.path-bar-box .nautilus-path-bar button:disabled:not(.suggested-action):not(.destructive-action):last-child:dir(ltr), +.path-bar-box .nautilus-path-bar button:disabled:not(.suggested-action):not(.destructive-action):first-child:dir(rtl), +.titlebar button:not(.suggested-action):not(.destructive-action):checked:disabled { + background-color: transparent; + color: @inactive_rgba_05; +} + +.titlebar button:not(.suggested-action):not(.destructive-action):backdrop { + color: @inactive_rgba_05; +} + +.titlebar button:not(.suggested-action):not(.destructive-action):backdrop:disabled { + color: @inactive_rgba_03; +} + +.titlebar button:not(.suggested-action):not(.destructive-action):backdrop:checked { + color: @inactive_rgba_07; +} + +.titlebar button:not(.suggested-action):not(.destructive-action):backdrop:checked:disabled { + color: @inactive_rgba_03; +} + +.titlebar button.suggested-action:disabled, +.titlebar button.destructive-action:disabled { + background-color: rgba(128, 134, 139, 0.08); + color: @inactive_rgba_05; +} + +.titlebar stackswitcher button:not(.suggested-action):not(.destructive-action).text-button { + min-width: 104px; +} + +.titlebar .path-bar button:not(.suggested-action):not(.destructive-action).text-button { + min-width: 0; + padding-left: 4px; + padding-right: 4px; +} + +.titlebar.selection-mode { + transition: background-color 0.1ms 225ms, color 75ms cubic-bezier(0, 0, 0.2, 1); + animation: ripple-on-headerbar 225ms cubic-bezier(0, 0, 0.2, 1); + box-shadow: 0 2px 2px -2px @bg_accent_rgba_03, 0 1px 2px -1px rgba(0, 0, 0, 0.24), 0 1px 2px -0.6px rgba(0, 0, 0, 0.17), inset 0 1px @fg_accent_rgba_02; + background-color: @accent; + color: @fg_accent; +} + +.titlebar.selection-mode:backdrop { + color: @fg_accent_rgba_07; +} + +.titlebar.selection-mode .subtitle:link { + color: @fg_accent; +} + +.titlebar.selection-mode button:not(.suggested-action):not(.destructive-action) { + border-image: radial-gradient(circle closest-corner at center calc(100% - 1px), currentcolor 0%, transparent 0%) 0 0 0/0 0 0; + color: @fg_accent; +} + +.titlebar.selection-mode button:not(.suggested-action):not(.destructive-action):disabled { + color: @fg_accent_rgba_05; +} + +.titlebar.selection-mode button:not(.suggested-action):not(.destructive-action):checked { + border-image: radial-gradient(circle closest-corner at center calc(100% - 1px), currentcolor 100%, transparent 0%) 0 0 2/0 0 2px; + color: @fg_accent; +} + +.titlebar.selection-mode button:not(.suggested-action):not(.destructive-action):checked:disabled { + color: @fg_accent_rgba_05; +} + +.titlebar.selection-mode button:not(.suggested-action):not(.destructive-action):backdrop { + color: @fg_accent_rgba_07; +} + +.titlebar.selection-mode button:not(.suggested-action):not(.destructive-action):backdrop:disabled { + color: @fg_accent_rgba_03; +} + +.titlebar.selection-mode button:not(.suggested-action):not(.destructive-action):backdrop:checked { + color: @fg_accent_rgba_07; +} + +.titlebar.selection-mode button:not(.suggested-action):not(.destructive-action):backdrop:checked:disabled { + color: @fg_accent_rgba_03; +} + +.titlebar.selection-mode .selection-menu { + padding-left: 16px; + padding-right: 16px; +} + +.titlebar.selection-mode .selection-menu arrow { + -GtkArrow-arrow-scaling: 1; +} + +.titlebar.selection-mode .selection-menu .arrow { + -gtk-icon-source: -gtk-icontheme("pan-down-symbolic"); +} + +.titlebar .selection-mode { + box-shadow: inset 0 1px @fg_accent_rgba_02; + background-color: @accent; +} + +.tiled .titlebar, +.tiled-top .titlebar, +.tiled-right .titlebar, +.tiled-bottom .titlebar, +.tiled-left .titlebar, +.maximized .titlebar, +.fullscreen .titlebar { + border-radius: 0; + box-shadow: 0 2px 2px -2px @bg_accent_rgba_03, 0 1px 2px -1px rgba(0, 0, 0, 0.24), 0 1px 2px -0.6px rgba(0, 0, 0, 0.17); +} + +.titlebar.default-decoration { + min-height: 24px; + padding: 4px; + box-shadow: inset 0 1px rgba(255, 255, 255, 0.05); +} + +.tiled .titlebar.default-decoration, +.maximized .titlebar.default-decoration, +.fullscreen .titlebar.default-decoration { + box-shadow: none; +} + +.titlebar.default-decoration button.titlebutton { + min-height: 24px; + min-width: 24px; + margin: 0; + padding: 0; +} + +.background:not(.csd) .titlebar.default-decoration button.titlebutton:active { + background-size: 1000% 1000%; +} + +.solid-csd .titlebar:dir(rtl), +.solid-csd .titlebar:dir(ltr) { + border-radius: 0; + box-shadow: 0 2px 2px -2px @bg_accent_rgba_03, 0 1px 2px -1px rgba(0, 0, 0, 0.24), 0 1px 2px -0.6px rgba(0, 0, 0, 0.17); +} + +headerbar { + min-height: 40px; + padding: 0 4px; +} + +headerbar entry, +headerbar spinbutton, +headerbar button { + margin-top: 4px; + margin-bottom: 4px; +} + +headerbar separator.titlebutton { + margin-top: 10px; + margin-bottom: 10px; + background-color: @inactive_rgba_02; +} + +headerbar switch { + margin-top: 8px; + margin-bottom: 8px; +} + +headerbar spinbutton button { + margin-top: 0; + margin-bottom: 0; +} + +headerbar .entry-tag, +headerbar .documents-entry-tag, +headerbar .photos-entry-tag { + margin-top: 5px; + margin-bottom: 5px; +} + +/** + * Pathbars + */ +.caja-pathbar button, +.path-bar.linked:not(.vertical)>button { + padding-left: 4px; + padding-right: 4px; + border-image: radial-gradient(circle closest-corner at center calc(100% - 1px), @accent 0%, transparent 0%) 0 0 0/0 0 0; + border-radius: 2px; + color: @fg_rgba_07; + box-shadow: none; + background-color: transparent; +} + +.caja-pathbar button:drop(active), +.caja-pathbar button:hover, +.path-bar.linked:not(.vertical)>button:drop(active), +.path-bar.linked:not(.vertical)>button:hover { + box-shadow: none; + background-color: rgba(158, 158, 158, 0.08); +} + +.caja-pathbar button:focus, +.path-bar.linked:not(.vertical)>button:focus { + box-shadow: none; + background-color: rgba(158, 158, 158, 0.08); +} + +.caja-pathbar button:active, +.path-bar.linked:not(.vertical)>button:active { + box-shadow: none; + background-image: radial-gradient(circle, rgba(158, 158, 158, 0.12) 10%, transparent 0%); +} + +.caja-pathbar button:disabled, +.path-bar.linked:not(.vertical)>button:disabled { + background-color: transparent; + color: @fg_rgba_03; +} + +.caja-pathbar button:checked, +.path-bar.linked:not(.vertical)>button:checked { + border-image: radial-gradient(circle closest-corner at center calc(100% - 1px), @accent 100%, transparent 0%) 0 0 2/0 0 2px; + color: @accent; + box-shadow: none; + background-color: transparent; +} + +.caja-pathbar button:checked:drop(active), +.caja-pathbar button:checked:hover, +.path-bar.linked:not(.vertical)>button:checked:drop(active), +.path-bar.linked:not(.vertical)>button:checked:hover { + box-shadow: none; + background-color: @accent_rgba_011; +} + +.caja-pathbar button:checked:focus, +.path-bar.linked:not(.vertical)>button:checked:focus { + box-shadow: none; + background-color: @accent_rgba_011; +} + +.caja-pathbar button:checked:active, +.path-bar.linked:not(.vertical)>button:checked:active { + box-shadow: none; + background-image: radial-gradient(circle, @accent_rgba_015 10%, transparent 0%); +} + +.caja-pathbar button:checked:disabled, +.path-bar.linked:not(.vertical)>button:checked:disabled { + background-color: transparent; + color: @fg_rgba_05; +} + +.caja-pathbar button label:not(:only-child):first-child, +.path-bar.linked:not(.vertical)>button label:not(:only-child):first-child { + margin-left: 0; +} + +.caja-pathbar button label:not(:only-child):last-child, +.path-bar.linked:not(.vertical)>button label:not(:only-child):last-child { + margin-right: 0; +} + +.caja-pathbar button.text-button, +.path-bar.linked:not(.vertical)>button.text-button { + min-width: 0; +} + +.caja-pathbar button.slider-button, +.path-bar.linked:not(.vertical)>button.slider-button { + padding-left: 4px; + padding-right: 4px; +} + +/** + * Tree Views + */ +treeview.view { + border-left-color: @fg_rgba_03; + border-top-color: @fg_rgba_02; +} + +* { + -GtkTreeView-horizontal-separator: 4; + -GtkTreeView-grid-line-width: 1; + -GtkTreeView-grid-line-pattern: ""; + -GtkTreeView-tree-line-width: 1; + -GtkTreeView-tree-line-pattern: ""; + -GtkTreeView-expander-size: 16; +} + +treeview.view:hover, +treeview.view:selected { + border-radius: 0; +} + +treeview.view.separator { + min-height: 5px; + color: @fg_rgba_02; +} + +treeview.view:drop(active) { + border-style: solid none; + border-width: 9999px; + border-color: rgba(158, 158, 158, 0.08); +} + +treeview.view:drop(active).after { + border-top-style: none; +} + +treeview.view:drop(active).before { + border-bottom-style: none; +} + +treeview.view.expander { + -gtk-icon-source: -gtk-icontheme("pan-down-symbolic"); + -gtk-icon-transform: rotate(-90deg); + color: @fg_rgba_07; +} + +treeview.view.expander:dir(rtl) { + -gtk-icon-transform: rotate(90deg); +} + +treeview.view.expander:checked { + -gtk-icon-transform: unset; +} + +treeview.view.expander:hover, +treeview.view.expander:active { + color: @fg; +} + +treeview.view.expander:disabled { + color: @fg_rgba_03; +} + +treeview.view.progressbar { + border-bottom: 4px solid @accent; + background-color: transparent; +} + +treeview.view.progressbar:selected:hover { + background-color: transparent; +} + +treeview.view.trough { + border-bottom: 4px solid @fg_rgba_02; + background-color: transparent; +} + +treeview.view.trough:selected:hover { + background-color: transparent; +} + +treeview.view header button { + padding: 2px 6px; + border-style: none solid solid none; + border-width: 1px; + border-color: @fg_rgba_02; + border-radius: 0; + background-clip: padding-box; + color: @fg_rgba_07; + box-shadow: none; + background-color: transparent; +} + +treeview.view header button:drop(active), +treeview.view header button:hover { + box-shadow: none; + background-color: rgba(158, 158, 158, 0.04); +} + +treeview.view header button:focus { + box-shadow: none; + background-color: rgba(158, 158, 158, 0.08); +} + +treeview.view header button:active { + box-shadow: none; + background-image: radial-gradient(circle, rgba(158, 158, 158, 0.12) 10%, transparent 0%); +} + +treeview.view header button:drop(active):not(:active), +treeview.view header button:hover:not(:active) { + transition-property: all, border-image, background-size, background-image, background-color; + transition-duration: 75ms, 225ms, 300ms, 1200ms, 0ms; +} + +treeview.view header button:disabled { + background-color: transparent; + color: @fg_rgba_03; +} + +treeview.view header button:last-child { + border-right-style: none; +} + +treeview.view button.dnd, +treeview.view header.button.dnd { + padding: 2px 6px; + border-style: none solid solid; + border-width: 1px; + border-color: @fg_rgba_02; + border-radius: 0; + box-shadow: none; + background-clip: padding-box; + background-color: #141416; + color: @accent; +} + +treeview.view acceleditor>label { + background-color: @accent; +} + +/** + * Menus + */ +menubar, +.menubar { + -GtkWidget-window-dragging: true; + padding: 0; + background-color: #09090a; + color: @inactive; +} + +menubar:backdrop, +.menubar:backdrop { + background-color: @bg_accent000; + color: @inactive_rgba_07; +} + +.csd menubar, +.csd .menubar { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1); +} + +menubar>menuitem, +.menubar>menuitem { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1); + min-height: 20px; + padding: 4px 8px; + color: @inactive_rgba_07; +} + +menubar>menuitem:hover, +.menubar>menuitem:hover { + transition: none; + background-color: rgba(128, 134, 139, 0.12); + color: @inactive; +} + +menubar>menuitem:disabled, +.menubar>menuitem:disabled { + color: @inactive_rgba_03; +} + +.background.popup { + background-color: transparent; +} + +menu, +.menu, +.context-menu { + margin: 4px 0; + padding: 4px 0; + border: 1px solid @fg_rgba_02; + box-shadow: inset 0 1px rgba(255, 255, 255, 0.05); + background-color: #141416; + color: @fg; + font: initial; + text-shadow: none; +} + +.csd menu, +.csd .menu, +.csd .context-menu { + border: none; + border-radius: 2px; +} + +menu menuitem, +.menu menuitem, +.context-menu menuitem { + transition: background-color 75ms cubic-bezier(0, 0, 0.2, 1); + min-height: 20px; + min-width: 40px; + padding: 4px 8px; +} + +menu menuitem:hover, +.menu menuitem:hover, +.context-menu menuitem:hover { + transition: none; + background-color: rgba(158, 158, 158, 0.08); +} + +menu menuitem:disabled, +.menu menuitem:disabled, +.context-menu menuitem:disabled { + color: @fg_rgba_05; +} + +menu menuitem arrow, +.menu menuitem arrow, +.context-menu menuitem arrow { + min-height: 16px; + min-width: 16px; + color: @fg_rgba_07; +} + +menu menuitem arrow:disabled, +.menu menuitem arrow:disabled, +.context-menu menuitem arrow:disabled { + color: @fg_rgba_03; +} + +menu menuitem arrow:dir(ltr), +.menu menuitem arrow:dir(ltr), +.context-menu menuitem arrow:dir(ltr) { + -gtk-icon-source: -gtk-icontheme("pan-end-symbolic"); + margin-left: 8px; +} + +menu menuitem arrow:dir(rtl), +.menu menuitem arrow:dir(rtl), +.context-menu menuitem arrow:dir(rtl) { + -gtk-icon-source: -gtk-icontheme("pan-end-symbolic-rtl"); + margin-right: 8px; +} + +menu>arrow, +.menu>arrow, +.context-menu>arrow { + min-height: 16px; + min-width: 16px; + padding: 4px; + background-color: #141416; + color: @fg_rgba_07; +} + +menu>arrow.top, +.menu>arrow.top, +.context-menu>arrow.top { + margin-top: -4px; + border-bottom: 1px solid @fg_rgba_02; + border-radius: 2px 2px 0 0; + -gtk-icon-source: -gtk-icontheme("pan-up-symbolic"); +} + +menu>arrow.bottom, +.menu>arrow.bottom, +.context-menu>arrow.bottom { + margin-top: 8px; + margin-bottom: -12px; + border-top: 1px solid @fg_rgba_02; + border-radius: 0 0 2px 2px; + -gtk-icon-source: -gtk-icontheme("pan-down-symbolic"); +} + +menu>arrow:hover, +.menu>arrow:hover, +.context-menu>arrow:hover { + background-image: image(rgba(158, 158, 158, 0.08)); +} + +menu>arrow:disabled, +.menu>arrow:disabled, +.context-menu>arrow:disabled { + border-color: transparent; + background-color: transparent; + color: transparent; +} + +menu separator, +.menu separator, +.context-menu separator { + margin: 4px 0; +} + +menuitem accelerator { + color: @fg_rgba_07; +} + +menuitem:disabled accelerator { + color: @fg_rgba_03; +} + +/** + * Popovers + */ +popover.background { + transition: box-shadow 75ms cubic-bezier(0, 0, 0.2, 1); + padding: 2px; + box-shadow: 0 2px 2.4px -1px rgba(0, 0, 0, 0.2), 0 4px 3px 0 rgba(0, 0, 0, 0.14), 0 1px 6px 0 @bg_accent_rgba_015; + background-color: #141416; +} + +popover.background:backdrop { + box-shadow: 0 3px 2px -3px @bg_accent_rgba_03, 0 2px 2px -1px rgba(0, 0, 0, 0.24), 0 1px 3px 0 @bg_accent_rgba_015; +} + +popover.background, +.csd popover.background { + border-style: solid; + border-width: 1px; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.2) @bg_accent_rgba_03; + border-radius: 3px; + background-clip: padding-box; +} + +popover.background>stack { + margin: -4px; +} + +popover.background>toolbar { + margin: -2px; +} + +popover.background>list, +popover.background>.view, +popover.background>toolbar { + border-style: none; + box-shadow: none; + background-color: transparent; +} + +popover.background.menu button, +popover.background button.model { + min-height: 32px; + padding: 0 8px; + border-radius: 2px; +} + +popover.background separator { + margin: 4px 0; +} + +popover.background list separator { + margin: 0; +} + +/** + * Notebooks + */ +notebook:focus>header>tabs>tab:checked { + background-color: @accent_rgba_011; +} + +notebook>header.top { + box-shadow: inset 0 -1px @fg_rgba_02; +} + +notebook>header.top>tabs>tab { + box-shadow: inset 0 -2px transparent; +} + +notebook>header.top>tabs>tab:checked { + box-shadow: inset 0 -2px @accent; +} + +notebook>header.bottom { + box-shadow: inset 0 1px @fg_rgba_02; +} + +notebook>header.bottom>tabs>tab { + box-shadow: inset 0 2px transparent; +} + +notebook>header.bottom>tabs>tab:checked { + box-shadow: inset 0 2px @accent; +} + +notebook>header.left { + box-shadow: inset -1px 0 @fg_rgba_02; +} + +notebook>header.left>tabs>tab { + box-shadow: inset -2px 0 transparent; +} + +notebook>header.left>tabs>tab:checked { + box-shadow: inset -2px 0 @accent; +} + +notebook>header.right { + box-shadow: inset 1px 0 @fg_rgba_02; +} + +notebook>header.right>tabs>tab { + box-shadow: inset 2px 0 transparent; +} + +notebook>header.right>tabs>tab:checked { + box-shadow: inset 2px 0 @accent; +} + +notebook>header.top>tabs>arrow.down, +notebook>header.bottom>tabs>arrow.down { + -gtk-icon-source: -gtk-icontheme("pan-start-symbolic"); +} + +notebook>header.top>tabs>arrow.up, +notebook>header.bottom>tabs>arrow.up { + -gtk-icon-source: -gtk-icontheme("pan-end-symbolic"); +} + +notebook>header.left>tabs>arrow.down, +notebook>header.right>tabs>arrow.down { + -gtk-icon-source: -gtk-icontheme("pan-up-symbolic"); +} + +notebook>header.left>tabs>arrow.up, +notebook>header.right>tabs>arrow.up { + -gtk-icon-source: -gtk-icontheme("pan-down-symbolic"); +} + +notebook>header>tabs>arrow { + min-height: 16px; + min-width: 16px; + padding: 4px; + border-radius: 0; + color: @fg_rgba_07; +} + +notebook>header>tabs>arrow:drop(active), +notebook>header>tabs>arrow:hover { + background-color: rgba(158, 158, 158, 0.04); +} + +notebook>header>tabs>arrow:focus { + background-color: rgba(158, 158, 158, 0.08); +} + +notebook>header>tabs>arrow:active { + background-image: radial-gradient(circle, rgba(158, 158, 158, 0.12) 10%, transparent 0%); +} + +notebook>header>tabs>arrow:disabled { + color: @fg_rgba_03; +} + +notebook>header>tabs>tab { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1), background-size 0ms, background-image 0ms; + min-height: 24px; + min-width: 24px; + padding: 4px 16px; + outline: none; + background-image: radial-gradient(circle, @accent 10%, transparent 0%); + background-repeat: no-repeat; + background-position: center; + background-size: 0% 0%; + color: @fg_rgba_07; + font-weight: 500; +} + +notebook>header>tabs>tab:hover { + background-color: rgba(158, 158, 158, 0.04); +} + +notebook>header>tabs>tab:disabled { + color: @fg_rgba_03; +} + +notebook>header>tabs>tab:checked { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1), background-size 225ms cubic-bezier(0, 0, 0.2, 1), background-image 525ms cubic-bezier(0, 0, 0.2, 1); + background-color: transparent; + background-image: radial-gradient(circle, transparent 10%, transparent 0%); + background-size: 1000% 1000%; + color: @accent; +} + +notebook>header>tabs>tab:checked:disabled { + color: @fg_rgba_05; +} + +notebook>header>tabs>tab:checked.dnd { + background-color: @accent_rgba_011; +} + +notebook>header>tabs>tab>box { + transition: background-color 75ms cubic-bezier(0, 0, 0.2, 1); + margin: -4px -16px; + padding: 4px 16px; +} + +notebook>header>tabs>tab>box:drop(active) { + background-color: rgba(158, 158, 158, 0.08); +} + +notebook>header>tabs>tab button.flat:last-child { + margin-left: 4px; + margin-right: -12px; +} + +notebook>header>tabs>tab button.flat:first-child { + margin-left: -12px; + margin-right: 4px; +} + +/** + * Scrollbars + */ +scrollbar { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1); + background-clip: padding-box; +} + +* { + -GtkScrollbar-has-backward-stepper: false; + -GtkScrollbar-has-forward-stepper: false; +} + +scrollbar.top { + border-bottom: 1px solid @fg_rgba_02; +} + +scrollbar.bottom { + border-top: 1px solid @fg_rgba_02; +} + +scrollbar.left { + border-right: 1px solid @fg_rgba_02; +} + +scrollbar.right { + border-left: 1px solid @fg_rgba_02; +} + +scrollbar slider { + transition: background-color 75ms cubic-bezier(0, 0, 0.2, 1); + min-width: 8px; + min-height: 8px; + border: 4px solid transparent; + border-radius: 9999px; + background-clip: padding-box; + background-color: @fg_rgba_05; +} + +scrollbar slider:hover { + background-color: @fg_rgba_06; +} + +scrollbar slider:active { + background-color: @fg_rgba_07; +} + +scrollbar slider:disabled { + background-color: @fg_rgba_03; +} + +scrollbar.fine-tune slider { + min-width: 4px; + min-height: 4px; +} + +scrollbar.fine-tune.horizontal slider { + margin: 2px 0; +} + +scrollbar.fine-tune.vertical slider { + margin: 0 2px; +} + +scrollbar.overlay-indicator:not(.fine-tune) slider { + transition-property: background-color, min-height, min-width; +} + +scrollbar.overlay-indicator:not(.dragging):not(.hovering) { + border-color: transparent; + background-color: transparent; +} + +scrollbar.overlay-indicator:not(.dragging):not(.hovering) slider { + min-width: 4px; + min-height: 4px; + margin: 3px; + border: 1px solid @bg_rgba_05; +} + +scrollbar.overlay-indicator:not(.dragging):not(.hovering) button { + min-width: 4px; + min-height: 4px; + margin: 3px; + border: 1px solid @bg_rgba_05; + border-radius: 9999px; + background-color: @fg_rgba_05; + background-clip: padding-box; + -gtk-icon-source: none; +} + +scrollbar.overlay-indicator:not(.dragging):not(.hovering) button:disabled { + background-color: @fg_rgba_03; +} + +scrollbar.overlay-indicator:not(.dragging):not(.hovering).horizontal slider { + min-width: 24px; +} + +scrollbar.overlay-indicator:not(.dragging):not(.hovering).horizontal button { + min-width: 8px; +} + +scrollbar.overlay-indicator:not(.dragging):not(.hovering).vertical slider { + min-height: 24px; +} + +scrollbar.overlay-indicator:not(.dragging):not(.hovering).vertical button { + min-height: 8px; +} + +scrollbar.overlay-indicator.dragging, +scrollbar.overlay-indicator.hovering { + background-color: #141416; +} + +scrollbar.horizontal slider { + min-width: 24px; +} + +scrollbar.vertical slider { + min-height: 24px; +} + +scrollbar button { + min-width: 16px; + min-height: 16px; + padding: 0; + border-radius: 0; +} + +scrollbar.vertical button.down { + -gtk-icon-source: -gtk-icontheme("pan-down-symbolic"); +} + +scrollbar.vertical button.up { + -gtk-icon-source: -gtk-icontheme("pan-up-symbolic"); +} + +scrollbar.horizontal button.down { + -gtk-icon-source: -gtk-icontheme("pan-end-symbolic"); +} + +scrollbar.horizontal button.up { + -gtk-icon-source: -gtk-icontheme("pan-start-symbolic"); +} + +/** + * Switch + */ +switch { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1); + margin: 4px 0; + padding: 0 2px; + border: 5px solid transparent; + border-radius: 9999px; + background-color: @fg_rgba_03; + background-clip: padding-box; + font-size: 0; +} + +switch:checked { + background-color: @accent_rgba_05; +} + +switch:disabled { + opacity: 0.5; +} + +switch image { + margin: -8px; + -gtk-icon-transform: scale(0); +} + +switch slider { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1); + min-width: 20px; + min-height: 20px; + margin: -3px -2px; + border-radius: 9999px; + outline: none; + box-shadow: 0 0 0 10px transparent, 0 2px 2px -2px @bg_accent_rgba_03, 0 1px 2px -1px rgba(0, 0, 0, 0.24), 0 1px 2px -0.6px rgba(0, 0, 0, 0.17); + background-color: #141416; +} + +switch:hover slider { + box-shadow: 0 0 0 10px rgba(158, 158, 158, 0.08), 0 2px 2px -2px @bg_accent_rgba_03, 0 1px 2px -1px rgba(0, 0, 0, 0.24), 0 1px 2px -0.6px rgba(0, 0, 0, 0.17); +} + +switch:focus slider { + box-shadow: 0 0 0 10px rgba(158, 158, 158, 0.08), 0 2px 2px -2px @bg_accent_rgba_03, 0 1px 2px -1px rgba(0, 0, 0, 0.24), 0 1px 2px -0.6px rgba(0, 0, 0, 0.17); +} + +switch:checked slider { + background-color: @accent; +} + +switch:checked:hover slider { + box-shadow: 0 0 0 10px @accent_rgba_011, 0 2px 2px -2px @bg_accent_rgba_03, 0 1px 2px -1px rgba(0, 0, 0, 0.24), 0 1px 2px -0.6px rgba(0, 0, 0, 0.17); +} + +switch:checked:focus slider { + box-shadow: 0 0 0 10px @accent_rgba_011, 0 2px 2px -2px @bg_accent_rgba_03, 0 1px 2px -1px rgba(0, 0, 0, 0.24), 0 1px 2px -0.6px rgba(0, 0, 0, 0.17); +} + +/** + * Check and Radio items + */ +.view.content-view.check:not(list), +.content-view:not(list) check { + min-height: 40px; + min-width: 40px; + margin: 0; + padding: 0; + background-color: transparent; + background-image: none; + -gtk-icon-shadow: 0 1px 1px rgba(0, 0, 0, 0.2), 0 2px 2px rgba(0, 0, 0, 0.14), 0 1px 3px @bg_accent_rgba_015; +} + +.view.content-view.check:not(list):hover, +.view.content-view.check:not(list):active, +.content-view:not(list) check:hover, +.content-view:not(list) check:active { + -gtk-icon-shadow: 0 2px 2px rgba(0, 0, 0, 0.2), 0 4px 3px rgba(0, 0, 0, 0.14), 0 1px 6px @bg_accent_rgba_015; +} + +.view.content-view.check:not(list), +.content-view:not(list) check { + -gtk-icon-source: -gtk-scaled(url("assets/selectionmode-checkbox-unchecked-dark.png"), url("assets/selectionmode-checkbox-unchecked-dark@2.png")); +} + +.view.content-view.check:not(list):checked, +.content-view:not(list) check:checked { + -gtk-icon-source: -gtk-scaled(url("assets/selectionmode-checkbox-checked-dark.png"), url("assets/selectionmode-checkbox-checked-dark@2.png")); +} + +checkbutton, +radiobutton { + outline: none; +} + +checkbutton.text-button, +radiobutton.text-button { + padding: 2px; +} + +checkbutton.text-button label:not(:only-child), +radiobutton.text-button label:not(:only-child) { + margin: 0 4px; +} + +check, +radio { + min-height: 24px; + min-width: 24px; + margin: -8px; + padding: 8px; + border-radius: 9999px; + color: @fg_rgba_07; +} + +check:drop(active), +check:hover, +radio:drop(active), +radio:hover { + background-color: rgba(158, 158, 158, 0.08); +} + +check:focus, +radio:focus { + background-color: rgba(158, 158, 158, 0.08); +} + +check:active, +radio:active { + background-image: radial-gradient(circle, rgba(158, 158, 158, 0.12) 10%, transparent 0%); +} + +check:checked, +check:indeterminate, +radio:checked, +radio:indeterminate { + color: @accent; +} + +check:checked:drop(active), +check:checked:hover, +check:indeterminate:drop(active), +check:indeterminate:hover, +radio:checked:drop(active), +radio:checked:hover, +radio:indeterminate:drop(active), +radio:indeterminate:hover { + background-color: @accent_rgba_011; +} + +check:checked:focus, +check:indeterminate:focus, +radio:checked:focus, +radio:indeterminate:focus { + background-color: @accent_rgba_011; +} + +check:checked:active, +check:indeterminate:active, +radio:checked:active, +radio:indeterminate:active { + background-image: radial-gradient(circle, @accent_rgba_015 10%, transparent 0%); +} + +check:disabled, +radio:disabled { + color: @fg_rgba_03; +} + +popover modelbutton.flat check, +popover modelbutton.flat check:focus, +popover modelbutton.flat check:hover, +popover modelbutton.flat check:focus:hover, +popover modelbutton.flat check:active, +popover modelbutton.flat check:disabled, +popover modelbutton.flat radio, +popover modelbutton.flat radio:focus, +popover modelbutton.flat radio:hover, +popover modelbutton.flat radio:focus:hover, +popover modelbutton.flat radio:active, +popover modelbutton.flat radio:disabled { + transition: none; + background-color: transparent; + background-image: none; +} + +popover modelbutton.flat check.left:dir(rtl), +popover modelbutton.flat radio.left:dir(rtl) { + margin-left: -12px; + margin-right: -4px; +} + +popover modelbutton.flat check.right:dir(ltr), +popover modelbutton.flat radio.right:dir(ltr) { + margin-left: -4px; + margin-right: -12px; +} + +menu menuitem check, +menu menuitem radio { + transition: none; + margin: 0; + padding: 0; +} + +menu menuitem check:dir(ltr), +menu menuitem radio:dir(ltr) { + margin-right: 8px; +} + +menu menuitem check:dir(rtl), +menu menuitem radio:dir(rtl) { + margin-left: 8px; +} + +menu menuitem check:hover, +menu menuitem check:focus, +menu menuitem check:checked:hover, +menu menuitem check:checked:focus, +menu menuitem check:indeterminate:hover, +menu menuitem check:indeterminate:focus, +menu menuitem radio:hover, +menu menuitem radio:focus, +menu menuitem radio:checked:hover, +menu menuitem radio:checked:focus, +menu menuitem radio:indeterminate:hover, +menu menuitem radio:indeterminate:focus { + background-color: transparent; +} + +check { + -gtk-icon-source: -gtk-recolor(url("icons/checkbox-unchecked-symbolic.svg")); +} + +check:checked { + -gtk-icon-source: -gtk-recolor(url("icons/checkbox-checked-symbolic.svg")); +} + +check:indeterminate { + -gtk-icon-source: -gtk-recolor(url("icons/checkbox-mixed-symbolic.svg")); +} + +radio { + -gtk-icon-source: -gtk-recolor(url("icons/radio-unchecked-symbolic.svg")); + border-image-slice: 20; + border-image-width: 20px; + border-image-source: -gtk-gradient(radial, center center, 0, center center, 0.001, to(@accent), to(transparent)); +} + +radio:indeterminate { + -gtk-icon-source: -gtk-recolor(url("icons/radio-mixed-symbolic.svg")); +} + +radio:checked:not(:indeterminate) { + border-image-source: -gtk-gradient(radial, center center, 0, center center, 0.125, to(@accent), to(transparent)); +} + +radio:checked:not(:indeterminate):disabled { + border-image-source: -gtk-gradient(radial, center center, 0, center center, 0.125, to(@fg_rgba_03), to(transparent)); +} + +#MozillaGtkWidget>widget>checkbutton>check, +menu menuitem check { + min-height: 16px; + min-width: 16px; + border-radius: 2px; + -gtk-icon-source: -gtk-recolor(url("icons/small-checkbox-unchecked-symbolic.svg")); +} + +#MozillaGtkWidget>widget>checkbutton>check:checked, +menu menuitem check:checked { + -gtk-icon-source: -gtk-recolor(url("icons/small-checkbox-checked-symbolic.svg")); +} + +#MozillaGtkWidget>widget>checkbutton>check:indeterminate, +menu menuitem check:indeterminate { + -gtk-icon-source: -gtk-recolor(url("icons/small-checkbox-mixed-symbolic.svg")); +} + +#MozillaGtkWidget>widget>radiobutton>radio, +menu menuitem radio { + min-height: 16px; + min-width: 16px; + border-image: none; + -gtk-icon-source: -gtk-recolor(url("icons/small-radio-unchecked-symbolic.svg")); +} + +#MozillaGtkWidget>widget>radiobutton>radio:checked, +menu menuitem radio:checked { + -gtk-icon-source: -gtk-recolor(url("icons/small-radio-checked-symbolic.svg")); +} + +#MozillaGtkWidget>widget>radiobutton>radio:indeterminate, +menu menuitem radio:indeterminate { + -gtk-icon-source: -gtk-recolor(url("icons/small-radio-mixed-symbolic.svg")); +} + +treeview.view check, +treeview.view radio { + padding: 0; + color: @fg_rgba_07; +} + +treeview.view check:checked, +treeview.view check:indeterminate, +treeview.view radio:checked, +treeview.view radio:indeterminate { + color: @accent; +} + +treeview.view check:disabled, +treeview.view radio:disabled { + color: @fg_rgba_03; +} + +treeview.view check, +treeview.view check:hover, +treeview.view check:selected, +treeview.view check:selected:hover, +treeview.view radio, +treeview.view radio:hover, +treeview.view radio:selected, +treeview.view radio:selected:hover { + box-shadow: none; + background-color: transparent; +} + +treeview.view radio:checked { + -gtk-icon-source: -gtk-recolor(url("icons/radio-checked-symbolic.svg")); + border-image: none; +} + +/** + * GtkScale + */ +scale { + min-height: 2px; + min-width: 2px; +} + +scale.horizontal { + padding: 15px 12px; +} + +scale.vertical { + padding: 12px 15px; +} + +scale slider { + min-height: 32px; + min-width: 32px; + margin: -15px; +} + +scale.fine-tune.horizontal { + min-height: 4px; + padding-top: 14px; + padding-bottom: 14px; +} + +scale.fine-tune.vertical { + min-width: 4px; + padding-left: 14px; + padding-right: 14px; +} + +scale.fine-tune slider { + margin: -14px; +} + +scale trough { + transition: background-color 75ms cubic-bezier(0, 0, 0.2, 1); + outline: none; + background-color: @fg_rgba_03; +} + +scale trough:disabled { + background-color: @fg_rgba_02; +} + +scale highlight { + transition: background-image 75ms cubic-bezier(0, 0, 0.2, 1); + background-image: image(@accent); +} + +scale highlight:disabled { + background-color: @bg; + background-image: image(@fg_rgba_03); +} + +scale fill { + transition: background-color 75ms cubic-bezier(0, 0, 0.2, 1); + background-color: @fg_rgba_03; +} + +scale fill:disabled { + background-color: transparent; +} + +scale slider { + transition: background-color 75ms cubic-bezier(0, 0, 0.2, 1), background-size 300ms cubic-bezier(0, 0, 0.2, 1), background-image 1200ms cubic-bezier(0, 0, 0.2, 1); + background-repeat: no-repeat; + background-position: center; + background-size: auto, 1000% 1000%; + border-radius: 50%; + color: @accent; +} + +scale slider { + background-image: -gtk-scaled(url("assets/scale-slider-dark.png"), url("assets/scale-slider-dark@2.png")), radial-gradient(circle, transparent 10%, transparent 0%); +} + +scale slider:disabled { + background-image: -gtk-scaled(url("assets/scale-slider-disabled-dark.png"), url("assets/scale-slider-disabled-dark@2.png")), radial-gradient(circle, transparent 10%, transparent 0%); +} + +scale slider:hover { + background-color: @accent_rgba_011; +} + +scale slider:focus { + background-color: @accent_rgba_011; +} + +scale slider:active { + transition: background-color 75ms cubic-bezier(0, 0, 0.2, 1), background-size 0ms, background-image 0ms; + animation: ripple-on-slider 225ms cubic-bezier(0, 0, 0.2, 1) forwards; + background-image: -gtk-scaled(url("assets/scale-slider-dark.png"), url("assets/scale-slider-dark@2.png")), radial-gradient(circle, @accent_rgba_015 10%, transparent 0%); + background-size: auto, 0% 0%; +} + +scale marks, +scale value { + color: @fg_rgba_07; +} + +scale indicator { + background-color: @fg_rgba_03; + color: transparent; +} + +scale.horizontal marks.top { + margin-bottom: 7px; + margin-top: -15px; +} + +scale.horizontal.fine-tune marks.top { + margin-bottom: 6px; + margin-top: -14px; +} + +scale.horizontal marks.bottom { + margin-top: 7px; + margin-bottom: -15px; +} + +scale.horizontal.fine-tune marks.bottom { + margin-top: 6px; + margin-bottom: -14px; +} + +scale.vertical marks.top { + margin-right: 7px; + margin-left: -15px; +} + +scale.vertical.fine-tune marks.top { + margin-right: 6px; + margin-left: -14px; +} + +scale.vertical marks.bottom { + margin-left: 7px; + margin-right: -15px; +} + +scale.vertical.fine-tune marks.bottom { + margin-left: 6px; + margin-right: -14px; +} + +scale.horizontal indicator { + min-height: 8px; + min-width: 1px; +} + +scale.vertical indicator { + min-height: 1px; + min-width: 8px; +} + +scale.horizontal.marks-before:not(.marks-after) slider { + background-image: -gtk-scaled(url("assets/scale-horz-marks-before-slider-dark.png"), url("assets/scale-horz-marks-before-slider-dark@2.png")), radial-gradient(circle, transparent 10%, transparent 0%); +} + +scale.horizontal.marks-before:not(.marks-after) slider:disabled { + background-image: -gtk-scaled(url("assets/scale-horz-marks-before-slider-disabled-dark.png"), url("assets/scale-horz-marks-before-slider-disabled-dark@2.png")), radial-gradient(circle, transparent 10%, transparent 0%); +} + +scale.horizontal.marks-before:not(.marks-after) slider:active { + background-image: -gtk-scaled(url("assets/scale-horz-marks-before-slider-dark.png"), url("assets/scale-horz-marks-before-slider-dark@2.png")), radial-gradient(circle, @accent_rgba_015 10%, transparent 0%); +} + +scale.horizontal.marks-after:not(.marks-before) slider { + background-image: -gtk-scaled(url("assets/scale-horz-marks-after-slider-dark.png"), url("assets/scale-horz-marks-after-slider-dark@2.png")), radial-gradient(circle, transparent 10%, transparent 0%); +} + +scale.horizontal.marks-after:not(.marks-before) slider:disabled { + background-image: -gtk-scaled(url("assets/scale-horz-marks-after-slider-disabled-dark.png"), url("assets/scale-horz-marks-after-slider-disabled-dark@2.png")), radial-gradient(circle, transparent 10%, transparent 0%); +} + +scale.horizontal.marks-after:not(.marks-before) slider:active { + background-image: -gtk-scaled(url("assets/scale-horz-marks-after-slider-dark.png"), url("assets/scale-horz-marks-after-slider-dark@2.png")), radial-gradient(circle, @accent_rgba_015 10%, transparent 0%); +} + +scale.vertical.marks-before:not(.marks-after) slider { + background-image: -gtk-scaled(url("assets/scale-vert-marks-before-slider-dark.png"), url("assets/scale-vert-marks-before-slider-dark@2.png")), radial-gradient(circle, transparent 10%, transparent 0%); +} + +scale.vertical.marks-before:not(.marks-after) slider:disabled { + background-image: -gtk-scaled(url("assets/scale-vert-marks-before-slider-disabled-dark.png"), url("assets/scale-vert-marks-before-slider-disabled-dark@2.png")), radial-gradient(circle, transparent 10%, transparent 0%); +} + +scale.vertical.marks-before:not(.marks-after) slider:active { + background-image: -gtk-scaled(url("assets/scale-vert-marks-before-slider-dark.png"), url("assets/scale-vert-marks-before-slider-dark@2.png")), radial-gradient(circle, @accent_rgba_015 10%, transparent 0%); +} + +scale.vertical.marks-after:not(.marks-before) slider { + background-image: -gtk-scaled(url("assets/scale-vert-marks-after-slider-dark.png"), url("assets/scale-vert-marks-after-slider-dark@2.png")), radial-gradient(circle, transparent 10%, transparent 0%); +} + +scale.vertical.marks-after:not(.marks-before) slider:disabled { + background-image: -gtk-scaled(url("assets/scale-vert-marks-after-slider-disabled-dark.png"), url("assets/scale-vert-marks-after-slider-disabled-dark@2.png")), radial-gradient(circle, transparent 10%, transparent 0%); +} + +scale.vertical.marks-after:not(.marks-before) slider:active { + background-image: -gtk-scaled(url("assets/scale-vert-marks-after-slider-dark.png"), url("assets/scale-vert-marks-after-slider-dark@2.png")), radial-gradient(circle, @accent_rgba_015 10%, transparent 0%); +} + +scale.color { + min-height: 0; + min-width: 0; +} + +scale.color.horizontal { + padding: 0 0 12px 0; +} + +scale.color.horizontal slider:dir(ltr), +scale.color.horizontal slider:dir(rtl) { + margin-bottom: -24px; + margin-top: 8px; +} + +scale.color.vertical:dir(ltr) { + padding: 0 0 0 12px; +} + +scale.color.vertical:dir(ltr) slider { + margin-left: -24px; + margin-right: 8px; +} + +scale.color.vertical:dir(rtl) { + padding: 0 12px 0 0; +} + +scale.color.vertical:dir(rtl) slider { + margin-right: -24px; + margin-left: 8px; +} + +/** + * Progress bars + */ +progressbar { + color: @fg_rgba_07; + font-size: smaller; +} + +progressbar.horizontal trough, +progressbar.horizontal progress { + min-height: 4px; +} + +progressbar.vertical trough, +progressbar.vertical progress { + min-width: 4px; +} + +progressbar trough { + background-color: @fg_rgba_02; +} + +progressbar progress { + background-color: @accent; +} + +progressbar trough.empty progress { + all: unset; +} + +/** + * Level Bar + */ +levelbar.horizontal block { + min-height: 4px; +} + +levelbar.horizontal.discrete block { + min-width: 32px; +} + +levelbar.horizontal.discrete block:not(:last-child) { + margin-right: 2px; +} + +levelbar.vertical block { + min-width: 4px; +} + +levelbar.vertical.discrete block { + min-height: 32px; +} + +levelbar.vertical.discrete block:not(:last-child) { + margin-bottom: 2px; +} + +levelbar block.low { + background-color: #ffeb3b; +} + +levelbar block.high, +levelbar block:not(.empty) { + background-color: @accent; +} + +levelbar block.full { + background-color: #00e676; +} + +levelbar block.empty { + background-color: @fg_rgba_02; +} + +/** + * Print dialog + */ +printdialog paper { + padding: 0; + border: 1px solid @fg_rgba_02; + background-clip: padding-box; + background-color: #1a1c1e; + color: @fg; +} + +printdialog .dialog-action-box { + margin: 12px; +} + +/** + * Frames + */ +frame>border, +.frame { + margin: 0; + padding: 0; + border: 1px solid @fg_rgba_02; + border-radius: 0; + box-shadow: none; + background-clip: padding-box; + background-color: #1a1c1e; +} + +frame>border.flat, +.frame.flat { + border-style: none; + background-color: transparent; +} + +frame.flat>border { + border-style: none; + background-color: transparent; +} + +actionbar>revealer>box { + padding: 4px; + border-top: 1px solid @fg_rgba_02; +} + +actionbar>revealer>box .linked:not(.vertical)>entry:not(:only-child) { + border-radius: 2px 2px 0 0; +} + +scrolledwindow viewport.frame { + border-style: none; + background-color: transparent; +} + +overshoot.top { + background-image: -gtk-gradient(radial, center top, 0, center top, 0.75, to(@accent_rgba_02), to(transparent)); + background-repeat: no-repeat; + background-position: center top; + background-color: transparent; + border: none; + box-shadow: none; +} + +overshoot.bottom { + background-image: -gtk-gradient(radial, center bottom, 0, center bottom, 0.75, to(@accent_rgba_02), to(transparent)); + background-repeat: no-repeat; + background-position: center bottom; + background-color: transparent; + border: none; + box-shadow: none; +} + +overshoot.left { + background-image: -gtk-gradient(radial, left center, 0, left center, 0.75, to(@accent_rgba_02), to(transparent)); + background-repeat: no-repeat; + background-position: left center; + background-color: transparent; + border: none; + box-shadow: none; +} + +overshoot.right { + background-image: -gtk-gradient(radial, right center, 0, right center, 0.75, to(@accent_rgba_02), to(transparent)); + background-repeat: no-repeat; + background-position: right center; + background-color: transparent; + border: none; + box-shadow: none; +} + +junction { + border-style: solid none none solid; + border-width: 1px; + border-color: @fg_rgba_02; +} + +junction:dir(rtl) { + border-style: solid solid none none; +} + +separator { + min-width: 1px; + min-height: 1px; + background-color: @fg_rgba_02; +} + +.tweak-categories separator, +preferences stacksidebar.sidebar list separator, +stacksidebar.sidebar+separator.vertical, +stacksidebar.sidebar separator.horizontal, +button.font separator, +button.file separator { + min-width: 0; + min-height: 0; + background-color: transparent; +} + +/** + * Lists + */ +list { + border-color: @fg_rgba_02; +} + +list row { + padding: 2px; +} + +row { + background-clip: padding-box; +} + +row.activatable:drop(active), +row.activatable:hover { + background-color: rgba(158, 158, 158, 0.04); +} + +row.activatable:focus { + background-color: rgba(158, 158, 158, 0.08); +} + +row.activatable:active { + background-image: radial-gradient(circle, rgba(158, 158, 158, 0.12) 10%, transparent 0%); +} + +row.activatable:drop(active):not(:active), +row.activatable:hover:not(:active) { + transition-property: all, border-image, background-size, background-image, background-color; + transition-duration: 75ms, 225ms, 300ms, 1200ms, 0ms; +} + +row.activatable.has-open-popup { + background-color: rgba(158, 158, 158, 0.12); +} + +row:selected { + background-color: @accent_rgba_03; +} + +row:selected:drop(active), +row:selected:hover { + background-color: rgba(56, 125, 183, 0.3744); +} + +row:selected:focus { + background-color: rgba(56, 125, 183, 0.4016); +} + +row:selected:active { + background-image: radial-gradient(circle, @accent_rgba_015 10%, transparent 0%); +} + +row:selected.has-open-popup { + background-color: rgba(56, 125, 183, 0.4288); +} + +/** + * App Notifications + */ +.app-notification { + margin: 8px; +} + +.app-notification button.text-button:not(:disabled) { + color: @accent; + box-shadow: none; + background-color: transparent; +} + +.app-notification button.text-button:not(:disabled):drop(active), +.app-notification button.text-button:not(:disabled):hover { + box-shadow: none; + background-color: @accent_rgba_011; +} + +.app-notification button.text-button:not(:disabled):focus { + box-shadow: none; + background-color: @accent_rgba_011; +} + +.app-notification button.text-button:not(:disabled):active { + box-shadow: none; + background-image: radial-gradient(circle, @accent_rgba_015 10%, transparent 0%); +} + +.app-notification.frame { + border-style: none; +} + +.app-notification border { + border-style: none; + background-color: transparent; +} + +/** + * Expanders + */ +expander title>arrow { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1); + min-width: 16px; + min-height: 16px; + -gtk-icon-source: -gtk-icontheme("pan-down-symbolic"); + color: @fg_rgba_07; +} + +expander title>arrow:checked:dir(ltr) { + -gtk-icon-transform: rotate(-180deg); +} + +expander title>arrow:checked:dir(rtl) { + -gtk-icon-transform: rotate(180deg); +} + +expander title>arrow:hover, +expander title>arrow:active { + color: @fg; +} + +expander title>arrow:disabled { + color: @fg_rgba_03; +} + +/** + * Calendar + */ +calendar { + padding: 1px; + border: 1px solid @fg_rgba_02; + background-clip: padding-box; + background-color: #1a1c1e; + color: @fg; +} + +calendar:disabled { + color: @fg_rgba_05; +} + +calendar:selected { + border-radius: 3px; + background-color: @accent_rgba_03; +} + +calendar.header { + border-style: none none solid; + border-color: @fg_rgba_02; + border-radius: 0; +} + +calendar.button { + border-radius: 3px; + color: @fg_rgba_07; +} + +calendar.button:hover { + background-image: image(rgba(158, 158, 158, 0.08)); +} + +calendar.button:disabled { + color: @fg_rgba_03; +} + +calendar.highlight { + color: @fg_rgba_07; + font-weight: 500; +} + +calendar:indeterminate { + color: @fg_rgba_03; +} + +/** + * Dialogs + */ +messagedialog.background { + background-color: #141416; +} + +messagedialog .titlebar { + min-height: 24px; + border-style: none; + box-shadow: inset 0 1px rgba(255, 255, 255, 0.05); + background-color: #141416; + color: @fg; +} + +messagedialog .titlebar:backdrop { + background-color: #141416; + color: @fg_rgba_07; +} + +messagedialog.csd.background { + border-bottom-left-radius: 2px; + border-bottom-right-radius: 2px; +} + +messagedialog box.vertical>label+label { + color: @fg_rgba_07; +} + +messagedialog .dialog-action-box { + margin-top: -4px; +} + +messagedialog .dialog-action-box button:not(:last-child) { + margin-right: 4px; +} + +messagedialog .dialog-action-box button:not(:disabled) { + color: @accent; + box-shadow: none; + background-color: transparent; +} + +messagedialog .dialog-action-box button:not(:disabled):drop(active), +messagedialog .dialog-action-box button:not(:disabled):hover { + box-shadow: none; + background-color: @accent_rgba_011; +} + +messagedialog .dialog-action-box button:not(:disabled):focus { + box-shadow: none; + background-color: @accent_rgba_011; +} + +messagedialog .dialog-action-box button:not(:disabled):active { + box-shadow: none; + background-image: radial-gradient(circle, @accent_rgba_015 10%, transparent 0%); +} + +messagedialog .dialog-action-box button.destructive-action:not(:disabled) { + color: #f44336; + box-shadow: none; + background-color: transparent; +} + +messagedialog .dialog-action-box button.destructive-action:not(:disabled):drop(active), +messagedialog .dialog-action-box button.destructive-action:not(:disabled):hover { + box-shadow: none; + background-color: rgba(244, 67, 54, 0.12); +} + +messagedialog .dialog-action-box button.destructive-action:not(:disabled):focus { + box-shadow: none; + background-color: rgba(244, 67, 54, 0.12); +} + +messagedialog .dialog-action-box button.destructive-action:not(:disabled):active { + box-shadow: none; + background-image: radial-gradient(circle, rgba(244, 67, 54, 0.16) 10%, transparent 0%); +} + +filechooser .dialog-action-box { + border-top: 1px solid @fg_rgba_02; +} + +filechooser #pathbarbox { + border-bottom: 1px solid @fg_rgba_02; +} + +filechooser #pathbarbox>stack>box>button { + border-radius: 9999px; +} + +/** + * Sidebar + */ +.sidebar { + border-style: none; + background-color: transparent; +} + +stacksidebar.sidebar:dir(ltr) list, +stacksidebar.sidebar.left list, +stacksidebar.sidebar.left:dir(rtl) list, +.sidebar:not(separator):dir(ltr), +.sidebar:not(separator).left, +.sidebar:not(separator).left:dir(rtl) { + border-right: 1px solid @fg_rgba_02; + border-left-style: none; +} + +stacksidebar.sidebar:dir(rtl) list, +stacksidebar.sidebar.right list, +.sidebar:not(separator):dir(rtl), +.sidebar:not(separator).right { + border-left: 1px solid @fg_rgba_02; + border-right-style: none; +} + +paned .sidebar, +paned .sidebar.left, +paned .sidebar.right, +paned .sidebar.left:dir(rtl), +paned .sidebar:dir(rtl), +paned .sidebar:dir(ltr) { + border-style: none; +} + +stacksidebar.sidebar list { + padding: 4px; +} + +stacksidebar.sidebar row { + min-height: 32px; + padding: 0 2px; + border-radius: 2px; + color: @fg_rgba_07; + font-weight: 500; +} + +stacksidebar.sidebar row:selected { + color: @accent; + background-color: @accent_rgba_015; +} + +stacksidebar.sidebar row:selected:drop(active), +stacksidebar.sidebar row:selected:hover { + background-color: rgba(56, 125, 183, 0.2272); +} + +stacksidebar.sidebar row:selected:focus { + background-color: rgba(56, 125, 183, 0.2608); +} + +stacksidebar.sidebar row:selected:active { + background-image: radial-gradient(circle, @accent_rgba_015 10%, transparent 0%); +} + +stacksidebar.sidebar row+row { + margin-top: 4px; +} + +stacksidebar.sidebar row>label { + padding-left: 6px; + padding-right: 6px; +} + +separator.sidebar { + background-color: @fg_rgba_02; +} + +/** + * File chooser + */ +row image.sidebar-icon { + transition: color 75ms cubic-bezier(0, 0, 0.2, 1); + color: @fg_rgba_07; +} + +row image.sidebar-icon:disabled { + color: @fg_rgba_03; +} + +placessidebar.sidebar>viewport.frame { + border-style: none; + background-color: transparent; +} + +placessidebar.sidebar list { + padding: 1px 0 4px; +} + +placessidebar.sidebar row { + min-height: 32px; + margin: -1px 4px; + padding: 0; + border-radius: 2px; +} + +placessidebar.sidebar row>revealer { + padding: 0 8px; +} + +placessidebar.sidebar row:selected { + color: @accent; + font-weight: 500; + background-color: @accent_rgba_015; +} + +placessidebar.sidebar row:selected:drop(active), +placessidebar.sidebar row:selected:hover { + background-color: rgba(56, 125, 183, 0.2272); +} + +placessidebar.sidebar row:selected:focus { + background-color: rgba(56, 125, 183, 0.2608); +} + +placessidebar.sidebar row:selected:active { + background-image: radial-gradient(circle, @accent_rgba_015 10%, transparent 0%); +} + +placessidebar.sidebar row:selected image.sidebar-icon { + color: @accent; +} + +placessidebar.sidebar row:disabled { + color: @fg_rgba_05; +} + +placessidebar.sidebar row image.sidebar-icon:dir(ltr) { + padding-right: 8px; +} + +placessidebar.sidebar row image.sidebar-icon:dir(rtl) { + padding-left: 8px; +} + +placessidebar.sidebar row label.sidebar-label:dir(ltr) { + padding-right: 2px; +} + +placessidebar.sidebar row label.sidebar-label:dir(rtl) { + padding-left: 2px; +} + +placessidebar.sidebar row.sidebar-placeholder-row { + background-color: rgba(158, 158, 158, 0.08); +} + +placessidebar.sidebar row.sidebar-new-bookmark-row { + color: @accent; +} + +placessidebar.sidebar row.sidebar-new-bookmark-row image.sidebar-icon { + color: @accent; +} + +placesview .server-list-button>image { + -gtk-icon-transform: rotate(-0.5turn); +} + +placesview .server-list-button:checked>image { + -gtk-icon-transform: rotate(0turn); +} + +placesview>actionbar>revealer>box>label { + padding-left: 8px; + padding-right: 8px; +} + +/** + * Paned + */ +paned>separator { + min-width: 1px; + min-height: 1px; + -gtk-icon-source: none; + border-style: none; + background-color: transparent; + background-image: image(@fg_rgba_02); + background-size: 1px 1px; + background-clip: content-box; +} + +paned>separator.wide { + min-width: 6px; + min-height: 6px; + background-image: image(@fg_rgba_02), image(@fg_rgba_02); + background-size: 1px 1px, 1px 1px; +} + +paned.horizontal>separator { + background-repeat: repeat-y; +} + +paned.horizontal>separator:dir(ltr) { + margin: 0 -8px 0 0; + padding: 0 8px 0 0; + background-position: left; +} + +paned.horizontal>separator:dir(rtl) { + margin: 0 0 0 -8px; + padding: 0 0 0 8px; + background-position: right; +} + +paned.horizontal>separator.wide { + margin: 0; + padding: 0; + background-repeat: repeat-y, repeat-y; + background-position: left, right; +} + +paned.vertical>separator { + margin: 0 0 -8px 0; + padding: 0 0 8px 0; + background-repeat: repeat-x; + background-position: top; +} + +paned.vertical>separator.wide { + margin: 0; + padding: 0; + background-repeat: repeat-x, repeat-x; + background-position: bottom, top; +} + +/** + * GtkInfoBar + */ +infobar { + border-style: none; +} + +infobar.action:hover>revealer>box { + background-image: image(rgba(158, 158, 158, 0.08)); +} + +infobar.info>revealer>box, +infobar.question>revealer>box { + border-bottom: 1px solid @fg_rgba_02; +} + +infobar.info>revealer>box button.text-button:not(:disabled), +infobar.question>revealer>box button.text-button:not(:disabled) { + color: @accent; + box-shadow: none; + background-color: transparent; +} + +infobar.info>revealer>box button.text-button:not(:disabled):drop(active), +infobar.info>revealer>box button.text-button:not(:disabled):hover, +infobar.question>revealer>box button.text-button:not(:disabled):drop(active), +infobar.question>revealer>box button.text-button:not(:disabled):hover { + box-shadow: none; + background-color: @accent_rgba_011; +} + +infobar.info>revealer>box button.text-button:not(:disabled):focus, +infobar.question>revealer>box button.text-button:not(:disabled):focus { + box-shadow: none; + background-color: @accent_rgba_011; +} + +infobar.info>revealer>box button.text-button:not(:disabled):active, +infobar.question>revealer>box button.text-button:not(:disabled):active { + box-shadow: none; + background-image: radial-gradient(circle, @accent_rgba_015 10%, transparent 0%); +} + +infobar.warning>revealer>box { + background-color: #ffeb3b; + color: @bg_accent; +} + +infobar.warning>revealer>box button.flat { + color: @bg_accent; + box-shadow: none; + background-color: transparent; +} + +infobar.warning>revealer>box button.flat:drop(active), +infobar.warning>revealer>box button.flat:hover { + box-shadow: none; + background-color: @bg_accent_rgba_01; +} + +infobar.warning>revealer>box button.flat:focus { + box-shadow: none; + background-color: @bg_accent_rgba_01; +} + +infobar.warning>revealer>box button.flat:active { + box-shadow: none; + background-image: radial-gradient(circle, @bg_accent_rgba_015 10%, transparent 0%); +} + +infobar.warning>revealer>box *:link { + color: @bg_accent; +} + +infobar.error>revealer>box { + background-color: #f44336; + color: @fg_accent; +} + +infobar.error>revealer>box button.flat { + color: @fg_accent; + box-shadow: none; + background-color: transparent; +} + +infobar.error>revealer>box button.flat:drop(active), +infobar.error>revealer>box button.flat:hover { + box-shadow: none; + background-color: rgba(255, 255, 255, 0.08); +} + +infobar.error>revealer>box button.flat:focus { + box-shadow: none; + background-color: rgba(255, 255, 255, 0.08); +} + +infobar.error>revealer>box button.flat:active { + box-shadow: none; + background-image: radial-gradient(circle, rgba(255, 255, 255, 0.12) 10%, transparent 0%); +} + +infobar.error>revealer>box *:link { + color: @fg_accent; +} + +infobar button label { + margin: 0 -4px; +} + +/** + * Tooltips + */ +tooltip { + border-radius: 2px; + box-shadow: none; +} + +tooltip.background { + background-color: @bg_inactive; + color: @inactive; +} + +tooltip decoration { + background-color: transparent; +} + +tooltip>box { + margin: -6px; + min-height: 24px; + padding: 4px 8px; +} + +tooltip .dim-label { + color: @inactive_rgba_07; +} + +/** + * Color Chooser + */ +colorswatch.top { + border-top-left-radius: 2.5px; + border-top-right-radius: 2.5px; +} + +colorswatch.top overlay { + border-top-left-radius: 2px; + border-top-right-radius: 2px; +} + +colorswatch.bottom { + border-bottom-left-radius: 2.5px; + border-bottom-right-radius: 2.5px; +} + +colorswatch.bottom overlay { + border-bottom-left-radius: 2px; + border-bottom-right-radius: 2px; +} + +colorswatch.left, +colorswatch:first-child:not(.top) { + border-top-left-radius: 2.5px; + border-bottom-left-radius: 2.5px; +} + +colorswatch.left overlay, +colorswatch:first-child:not(.top) overlay { + border-top-left-radius: 2px; + border-bottom-left-radius: 2px; +} + +colorswatch.right, +colorswatch:last-child:not(.bottom) { + border-top-right-radius: 2.5px; + border-bottom-right-radius: 2.5px; +} + +colorswatch.right overlay, +colorswatch:last-child:not(.bottom) overlay { + border-top-right-radius: 2px; + border-bottom-right-radius: 2px; +} + +colorswatch.dark { + color: @fg_accent; +} + +colorswatch.light { + color: @bg_accent; +} + +colorswatch overlay { + transition: box-shadow 75ms cubic-bezier(0, 0, 0.2, 1); + box-shadow: 0 2px 2px -2px @bg_accent_rgba_03, 0 1px 2px -1px rgba(0, 0, 0, 0.24), 0 1px 2px -0.6px rgba(0, 0, 0, 0.17); +} + +colorswatch overlay:drop(active), +colorswatch overlay:hover { + box-shadow: 0 3px 2px -2px rgba(0, 0, 0, 0.2), 0 3px 2.4px 0 rgba(0, 0, 0, 0.14), 0 1px 4.8px 0 @bg_accent_rgba_015; +} + +colorswatch#add-color-button { + border-radius: 2px 2px 0 0; + color: @fg; +} + +colorswatch#add-color-button:only-child { + border-radius: 2px; +} + +colorswatch#add-color-button overlay { + background-color: #141416; +} + +colorswatch:disabled { + opacity: 0.5; +} + +colorswatch:disabled overlay { + box-shadow: none; +} + +colorswatch#editor-color-sample { + border-radius: 2.5px; +} + +colorswatch#editor-color-sample overlay { + border-radius: 2px; +} + +colorchooser .popover.osd { + transition: box-shadow 75ms cubic-bezier(0, 0, 0.2, 1); + border-radius: 2px; + box-shadow: 0 2px 2.4px -1px rgba(0, 0, 0, 0.2), 0 4px 3px 0 rgba(0, 0, 0, 0.14), 0 1px 6px 0 @bg_accent_rgba_015, inset 0 1px rgba(255, 255, 255, 0.05); + background-color: #141416; +} + +colorchooser .popover.osd:backdrop { + box-shadow: 0 3px 2px -3px @bg_accent_rgba_03, 0 2px 2px -1px rgba(0, 0, 0, 0.24), 0 1px 3px 0 @bg_accent_rgba_015, inset 0 1px rgba(255, 255, 255, 0.05); +} + +/** + * Misc + */ +/** + * Window Decorations + */ +decoration { + transition: box-shadow 75ms cubic-bezier(0, 0, 0.2, 1); + border-radius: 2px 2px 0 0; + box-shadow: 0 8px 6px -5px rgba(0, 0, 0, 0.2), 0 16px 14.4px 2px rgba(0, 0, 0, 0.14), 0 6px 18px 5px @bg_accent_rgba_015, 0 16px 14.4px 2px transparent, 0 6px 18px 5px transparent; + margin: 8px; +} + +decoration:backdrop { + box-shadow: 0 2px 2.4px -1px rgba(0, 0, 0, 0.2), 0 4px 3px 0 rgba(0, 0, 0, 0.14), 0 1px 6px 0 @bg_accent_rgba_015, 0 16px 14.4px 2px transparent, 0 6px 18px 5px transparent; +} + +.maximized decoration, +.fullscreen decoration, +.tiled decoration, +.tiled-top decoration, +.tiled-right decoration, +.tiled-bottom decoration, +.tiled-left decoration { + border-radius: 0; +} + +.popup decoration { + box-shadow: none; +} + +.ssd decoration { + box-shadow: 0 3px 3px rgba(0, 0, 0, 0.16); +} + +.csd.popup decoration { + border-radius: 2px; + box-shadow: 0 2px 2.4px -1px rgba(0, 0, 0, 0.2), 0 4px 3px 0 rgba(0, 0, 0, 0.14), 0 1px 6px 0 @bg_accent_rgba_015; +} + +tooltip.csd decoration { + border-radius: 2px; + box-shadow: none; +} + +messagedialog.csd decoration { + border-radius: 2px; +} + +.solid-csd decoration { + margin: 0; + padding: 2px; + border-radius: 0; + box-shadow: none; + box-shadow: inset 0 1px rgba(255, 255, 255, 0.05); + background-color: #09090a; +} + +.solid-csd decoration:backdrop { + background-color: @bg_accent000; +} + +button.titlebutton { + border-radius: 9999px; +} + +.monospace { + font-family: monospace; +} + +/** + * Touch Copy & Paste + */ +cursor-handle { + color: @accent; + -gtk-icon-source: -gtk-recolor(url("icons/cursor-handle-symbolic.svg")); +} + +cursor-handle.top:dir(ltr), +cursor-handle.bottom:dir(rtl) { + -gtk-icon-transform: rotate(90deg); +} + +cursor-handle.bottom:dir(ltr), +cursor-handle.top:dir(rtl) { + -gtk-icon-transform: unset; +} + +cursor-handle.insertion-cursor:dir(ltr), +cursor-handle.insertion-cursor:dir(rtl) { + padding-top: 6px; + -gtk-icon-transform: rotate(45deg); +} + +.context-menu { + font: initial; +} + +.keycap { + min-width: 12px; + min-height: 28px; + padding-left: 8px; + padding-right: 8px; + border-radius: 2px; + box-shadow: 0 2px 2px -2px @bg_accent_rgba_03, 0 1px 2px -1px rgba(0, 0, 0, 0.24), 0 1px 2px -0.6px rgba(0, 0, 0, 0.17); + background-color: #141416; + color: @fg; + font-size: smaller; +} + +shortcut:last-child { + margin-bottom: 4px; +} + +stackswitcher button.text-button { + min-width: 100px; +} + +stackswitcher button.circular, +stackswitcher button.text-button.circular { + min-width: 32px; + min-height: 32px; + padding: 0; +} + +/** + * App Icons + */ +/** + * Emoji + */ +popover.emoji-picker { + padding: 0; +} + +popover.emoji-picker entry { + border-bottom: 1px solid @fg_rgba_02; + border-image: none; + border-radius: 0; + box-shadow: none; + background-color: transparent; +} + +popover.emoji-picker scrolledwindow { + border-bottom: 1px solid @fg_rgba_02; +} + +button.emoji-section { + margin: 4px; +} + +button.emoji-section:not(:last-child) { + margin-right: 0; +} + +popover.emoji-picker .emoji { + min-width: 3em; + min-height: 3em; + padding: 0 8px; +} + +popover.emoji-picker .emoji widget { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1); + border-radius: 2px; +} + +popover.emoji-picker .emoji widget:hover { + background-color: rgba(158, 158, 158, 0.08); +} + +popover.emoji-completion { + padding: 8px 0; +} + +popover.emoji-completion arrow { + border: none; + background: none; +} + +popover.emoji-completion .emoji-completion-row { + min-height: 28px; + padding: 0 12px; +} + +popover.emoji-completion .emoji:hover { + background-color: rgba(158, 158, 158, 0.08); +} + +/** + * libhandy + */ +popover.combo { + padding: 8px 0; +} + +popover.combo list { + border-style: none; + background-color: transparent; +} + +popover.combo list>row { + min-height: 32px; + padding: 0 12px; +} + +keypad .digit { + font-size: 200%; + font-weight: bold; +} + +keypad .letters { + font-size: 70%; +} + +keypad .symbol { + font-size: 160%; +} + +viewswitcher button { + margin: 0; + padding: 0; + border-radius: 0; +} + +viewswitcher button>stack>box.narrow image, +viewswitcher button>stack>box.narrow label { + padding-left: 8px; + padding-right: 8px; +} + +viewswitcher button>stack>box.wide { + padding: 8px 12px; +} + +viewswitcher button>stack>box.wide label:dir(ltr) { + padding-right: 8px; +} + +viewswitcher button>stack>box.wide label:dir(rtl) { + padding-left: 8px; +} + +list.content { + border: 1px solid @fg_rgba_02; + background-clip: padding-box; + background-color: #1a1c1e; +} + +list.content>row:not(:first-child) { + border-top: 1px solid @fg_rgba_02; +} + +window.csd.unified:not(.solid-csd):not(.maximized):not(.fullscreen):not(.tiled):not(.tiled-top):not(.tiled-bottom):not(.tiled-left):not(.tiled-right) headerbar { + box-shadow: 0 2px 2px -2px @bg_accent_rgba_03, 0 1px 2px -1px rgba(0, 0, 0, 0.24), 0 1px 2px -0.6px rgba(0, 0, 0, 0.17); +} + +window.csd.unified:not(.solid-csd):not(.maximized):not(.fullscreen):not(.tiled):not(.tiled-top):not(.tiled-bottom):not(.tiled-left):not(.tiled-right)>decoration-overlay { + box-shadow: inset 0 1px rgba(255, 255, 255, 0.05); +} + +window.csd.unified:not(.solid-csd):not(.maximized):not(.fullscreen):not(.tiled):not(.tiled-top):not(.tiled-bottom):not(.tiled-left):not(.tiled-right), +window.csd.unified:not(.solid-csd):not(.maximized):not(.fullscreen):not(.tiled):not(.tiled-top):not(.tiled-bottom):not(.tiled-left):not(.tiled-right)>decoration, +window.csd.unified:not(.solid-csd):not(.maximized):not(.fullscreen):not(.tiled):not(.tiled-top):not(.tiled-bottom):not(.tiled-left):not(.tiled-right)>decoration-overlay { + border-radius: 2px; +} + +/** + * Nautilus + */ +.nautilus-canvas-item.dim-label, +.nautilus-list-dim-label { + color: @fg_rgba_07; +} + +@keyframes nautilus-operations-button-needs-attention { + to { + background-color: rgba(128, 134, 139, 0.08); + } +} + +.nautilus-operations-button-needs-attention { + animation: nautilus-operations-button-needs-attention 300ms cubic-bezier(0.4, 0, 0.2, 1) 2 alternate; +} + +.nautilus-operations-button-needs-attention-multiple { + animation: nautilus-operations-button-needs-attention 300ms cubic-bezier(0.4, 0, 0.2, 1) 6 alternate; +} + +.linked:not(.vertical)>button:not(.suggested-action):not(.destructive-action):not(:only-child).disclosure-button { + border-radius: 9999px; +} + +.path-bar-box { + transition: background-color 75ms cubic-bezier(0, 0, 0.2, 1); + margin: 4px 0; + border-radius: 2px; +} + +.path-bar-box button { + margin: 0; +} + +.path-bar-box.width-maximized { + background-color: rgba(128, 134, 139, 0.04); +} + +.path-bar-box.background.frame { + border-style: none; + background-color: rgba(128, 134, 139, 0.04); +} + +.path-bar-box .path-bar button label:not(:only-child):first-child { + margin-left: 0; +} + +.path-bar-box .path-bar button label:not(:only-child):last-child { + margin-right: 0; +} + +.path-bar-box .nautilus-path-bar button:not(.suggested-action):not(.destructive-action) { + padding-left: 4px; + padding-right: 4px; +} + +.path-bar-box .nautilus-path-bar button:not(.suggested-action):not(.destructive-action).text-button { + min-width: 0; +} + +.path-bar-box .nautilus-path-bar button:not(.suggested-action):not(.destructive-action) label:not(:only-child):first-child { + margin-left: 0; +} + +.path-bar-box .nautilus-path-bar button:not(.suggested-action):not(.destructive-action) label:not(:only-child):last-child { + margin-right: 0; +} + +.path-bar-box .nautilus-path-bar button:not(.suggested-action):not(.destructive-action).text-button.image-button image:not(:only-child) { + margin: 0; +} + +.nautilus-window .floating-bar { + min-height: 32px; + padding: 0; + border-style: solid solid none; + border-width: 1px; + border-color: @fg_rgba_02; + border-radius: 3px 3px 0 0; + background-clip: padding-box; + background-color: #141416; +} + +.nautilus-window .floating-bar.bottom.left { + margin-right: 7px; + border-left-style: none; + border-top-left-radius: 0; +} + +.nautilus-window .floating-bar.bottom.right { + margin-left: 7px; + border-right-style: none; + border-top-right-radius: 0; +} + +.nautilus-window .floating-bar button { + margin: 4px; +} + +.disk-space-display.unknown { + background-color: @fg_rgba_03; + color: @fg_rgba_03; +} + +.disk-space-display.used { + background-color: @accent; + color: @accent; +} + +.disk-space-display.free { + background-color: rgba(158, 158, 158, 0.08); + color: rgba(158, 158, 158, 0.08); +} + +.nautilus-empty-state-icon+.large-title { + color: @fg_rgba_07; +} + +.search-information { + padding: 2px; + border-bottom: 1px solid @fg_rgba_02; +} + +.conflict-row:not(:selected) { + background-color: #5f5a27; +} + +.nautilus-window flowboxchild .icon-item-background { + padding: 4px; + border-radius: 2px; +} + +.nautilus-window flowboxchild:selected { + background-color: transparent; +} + +.nautilus-window flowboxchild:selected .icon-item-background { + background-color: @accent_rgba_03; +} + +dialog.background>box.dialog-vbox.vertical>grid.horizontal>scrolledwindow.frame { + border-style: none; +} + +dialog.background>box.dialog-vbox.vertical>grid.horizontal>box.horizontal:last-child { + margin: -6px 0 0 -6px; + border-top: 1px solid @fg_rgba_02; +} + +dialog.background>box.dialog-vbox.vertical>grid.horizontal>box.horizontal:last-child>label { + margin: 0 8px; +} + +dialog.background>box.dialog-vbox.vertical>grid.horizontal>box.horizontal:last-child>box>button { + border-radius: 0; +} + +.nautilus-window>popover.menu:not(:last-child) { + padding: 3px; +} + +.nautilus-window>popover.menu:not(:last-child)>stack>box>box>box { + margin-top: -6px; +} + +.nautilus-window>popover.menu:not(:last-child)>stack>box>box>box>box { + margin-bottom: -6px; +} + +.nautilus-window>popover.menu:not(:last-child)>stack>box>box>box>box.linked { + margin-top: 1px; +} + +.nautilus-window>popover.menu:not(:last-child) separator { + margin-bottom: -2px; +} + +.nautilus-menu-sort-heading { + margin: 1px 3px; + font-weight: 500; +} + +.nautilus-menu-sort-heading:disabled { + color: @fg_rgba_07; +} + +.nautilus-window headerbar revealer>button { + border-radius: 9999px; +} + +.nautilus-window paned>separator { + background-color: @bg; +} + +/** + * gedit + */ +.open-document-selector-path-label { + color: @fg_rgba_07; + font-size: smaller; +} + +.open-document-selector-match { + background-color: #ffeb3b; + color: @bg_accent; +} + +.gedit-document-panel row button.flat { + margin-top: 8px; + margin-bottom: 8px; +} + +.gedit-document-panel-group-row:not(:first-child) { + border-top: 1px solid @fg_rgba_02; +} + +.gedit-side-panel-paned statusbar { + border-top: 1px solid @fg_rgba_02; +} + +.gedit-search-slider { + margin: 4px 4px 8px; +} + +.gedit-search-slider .linked:not(.vertical)>entry { + border-radius: 2px; +} + +.gedit-search-slider .linked:not(.vertical)>entry .gedit-search-entry-occurrences-tag { + all: unset; + color: @fg_rgba_07; +} + +.gedit-search-slider .linked:not(.vertical)>entry:dir(ltr) { + margin-right: -60px; + padding-right: 60px; +} + +.gedit-search-slider .linked:not(.vertical)>entry:dir(ltr) .gedit-search-entry-occurrences-tag { + margin-left: 4px; +} + +.gedit-search-slider .linked:not(.vertical)>entry:dir(ltr) image.right { + margin-right: 0; +} + +.gedit-search-slider .linked:not(.vertical)>entry:dir(rtl) { + margin-left: -60px; + padding-left: 60px; +} + +.gedit-search-slider .linked:not(.vertical)>entry:dir(rtl) .gedit-search-entry-occurrences-tag { + margin-right: 4px; +} + +.gedit-search-slider .linked:not(.vertical)>entry:dir(rtl) image.left { + margin-left: 0; +} + +.gedit-search-slider .linked:not(.vertical)>entry:not(.error) { + background-color: #141416; +} + +.gedit-search-slider .linked:not(.vertical)>entry.error~button { + color: @fg_accent_rgba_07; + box-shadow: none; + background-color: transparent; +} + +.gedit-search-slider .linked:not(.vertical)>entry.error~button:drop(active), +.gedit-search-slider .linked:not(.vertical)>entry.error~button:hover { + box-shadow: none; + background-color: rgba(255, 255, 255, 0.08); +} + +.gedit-search-slider .linked:not(.vertical)>entry.error~button:focus { + box-shadow: none; + background-color: rgba(255, 255, 255, 0.08); +} + +.gedit-search-slider .linked:not(.vertical)>entry.error~button:active { + box-shadow: none; + background-image: radial-gradient(circle, rgba(255, 255, 255, 0.12) 10%, transparent 0%); +} + +.gedit-search-slider .linked:not(.vertical)>entry.error~button:disabled { + color: @fg_accent_rgba_03; +} + +.gedit-search-slider .linked:not(.vertical)>button { + border: solid 4px transparent; + border-radius: 9999px; + background-clip: padding-box; +} + +.gedit-search-slider .linked:not(.vertical)>button:last-child:dir(ltr), +.gedit-search-slider .linked:not(.vertical)>button:not(:first-child):dir(rtl) { + margin-left: -2px; +} + +.gedit-search-slider .linked:not(.vertical)>button:first-child:dir(rtl), +.gedit-search-slider .linked:not(.vertical)>button:not(:last-child):dir(ltr) { + margin-right: -2px; +} + +frame.gedit-map-frame>border:dir(ltr) { + border-style: none none none solid; +} + +frame.gedit-map-frame>border:dir(rtl) { + border-style: none solid none none; +} + +/** + * Tweaks + */ +.tweak-categories { + background-image: image(@bg); +} + +.tweak { + padding: 3px; +} + +.tweak.title:hover { + box-shadow: none; +} + +.tweak-group-white, +.tweak-white, +.tweak-white:hover { + background-image: image(#1a1c1e); +} + +.tweak-startup, +.tweak-startup:hover { + background-image: image(#1a1c1e); +} + +.tweak-group-startup { + border: 1px solid @fg_rgba_02; + background-clip: padding-box; + background-image: image(#1a1c1e); +} + +row#Focus, +row#ClickMethod, +row#StaticWorkspaceTweak, +row#dynamic-workspaces, +row#PrimaryWorkspaceTweak, +row#workspaces-only-on-primary { + padding: 0; + border: 1px solid @fg_rgba_02; + background-clip: padding-box; + background-image: image(#1a1c1e); +} + +row#Focus row:not(:last-child), +row#ClickMethod row:not(:last-child), +row#StaticWorkspaceTweak row:not(:last-child), +row#dynamic-workspaces row:not(:last-child), +row#PrimaryWorkspaceTweak row:not(:last-child), +row#workspaces-only-on-primary row:not(:last-child) { + border-bottom: 1px solid @fg_rgba_02; +} + +row#Focus.tweak>list, +row#ClickMethod.tweak>list, +row#StaticWorkspaceTweak.tweak>list, +row#dynamic-workspaces.tweak>list, +row#PrimaryWorkspaceTweak.tweak>list, +row#workspaces-only-on-primary.tweak>list { + margin-top: -3px; +} + +row#Focus, +row#ClickMethod, +row#PrimaryWorkspaceTweak, +row#workspaces-only-on-primary { + margin-top: 4px; +} + +leaflet.titlebar>.titlebar.tweak-titlebar-left, +leaflet.titlebar>.titlebar.tweak-titlebar-right, +hdyleaflet.titlebar>.titlebar.tweak-titlebar-left, +hdyleaflet.titlebar>.titlebar.tweak-titlebar-right { + background-color: inherit; + box-shadow: inherit; + transition: color 75ms cubic-bezier(0, 0, 0.2, 1); +} + +leaflet.titlebar>.titlebar.tweak-titlebar-left+separator, +leaflet.titlebar>.titlebar.tweak-titlebar-right+separator, +hdyleaflet.titlebar>.titlebar.tweak-titlebar-left+separator, +hdyleaflet.titlebar>.titlebar.tweak-titlebar-right+separator { + background-color: inherit; + background-image: image(@inactive_rgba_02); +} + +/** + * Builder + */ +layouttabbar { + border-bottom: 1px solid @fg_rgba_02; + background-color: @bg; +} + +layouttabbar>box>button { + margin: 4px 0; +} + +layouttab { + margin: 0 8px; + border-style: none solid; + border-width: 1px; + border-color: @fg_rgba_02; + box-shadow: inset 0 -2px @accent; + background-color: #1a1c1e; +} + +layouttab separator.vertical { + margin: 8px 4px; +} + +layouttab button, +layouttab button.text-button, +layouttab button.image-button { + margin-top: 8px; + margin-bottom: 8px; + padding: 0 4px; +} + +layout { + border: 1px solid @fg_rgba_02; + -PnlDockBin-handle-size: 1; +} + +entry.search-missing { + background-color: #f44336; + color: @fg_accent; +} + +window.workbench treeview.image { + color: @fg_rgba_07; +} + +popover.popover-selector list { + padding: 6px; +} + +popover.popover-selector list row { + border-radius: 2px; +} + +popover.popover-selector list row image:dir(ltr) { + margin-right: 6px; +} + +popover.popover-selector list row image:dir(rtl) { + margin-left: 6px; +} + +popover.popover-selector list row .accel:dir(ltr) { + margin-left: 6px; +} + +popover.popover-selector list row .accel:dir(rtl) { + margin-right: 6px; +} + +omnibar.linked:not(.vertical) entry { + border-radius: 2px; +} + +omnibar entry { + color: @fg_rgba_07; +} + +popover.omnibar list row:not(:last-child) { + border-bottom: 1px solid @fg_rgba_02; +} + +entry.preferences-search { + border-bottom: 1px solid @fg_rgba_02; + box-shadow: none; + background-color: transparent; +} + +preferences stacksidebar.sidebar:dir(ltr) list, +preferences stacksidebar.sidebar:dir(rtl) list { + border-style: none; +} + +preferences>box>box:dir(ltr) { + border-right: 1px solid @fg_rgba_02; +} + +preferences>box>box:dir(rtl) { + border-left: 1px solid @fg_rgba_02; +} + +popover.messagepopover.background { + padding: 0; +} + +popover.messagepopover .popover-action-area button { + padding: 8px 16px; + border-top: 1px solid @fg_rgba_02; + border-radius: 0; +} + +popover.messagepopover .popover-action-area button:first-child { + border-bottom-left-radius: 2px; +} + +popover.messagepopover .popover-action-area button:last-child { + border-bottom-right-radius: 2px; +} + +popover.messagepopover .popover-content-area { + margin: 16px; +} + +popover.transfers list { + background-color: transparent; +} + +popover.transfers list row:not(:first-child) { + border-top: 1px solid @fg_rgba_02; +} + +popover.transfers list row>box { + padding: 10px; +} + +dockbin { + border: 1px solid @fg_rgba_02; + -PnlDockBin-handle-size: 1; +} + +dockpaned { + border: 1px solid @fg_rgba_02; +} + +eggsearchbar box.search-bar { + padding: 0 8px; + border-bottom: 1px solid @fg_rgba_02; + background-color: @bg; +} + +docktabstrip { + padding: 0 8px; + border-bottom: 1px solid @fg_rgba_02; + background-color: @bg; +} + +docktab { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1), background-size 0ms, background-image 0ms; + min-height: 24px; + min-width: 24px; + margin-bottom: -1px; + padding: 4px 6px; + border-width: 1px; + border-color: transparent; + box-shadow: inset 0 -2px transparent; + background-image: radial-gradient(circle, @accent 10%, transparent 0%); + background-repeat: no-repeat; + background-position: center; + background-size: 0% 0%; + color: @fg_rgba_07; + font-weight: 500; +} + +docktab:hover { + background-color: rgba(158, 158, 158, 0.08); +} + +docktab:checked { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1), background-size 225ms cubic-bezier(0, 0, 0.2, 1), background-image 525ms cubic-bezier(0, 0, 0.2, 1); + box-shadow: inset 0 -2px @accent; + background-color: transparent; + background-image: radial-gradient(circle, transparent 10%, transparent 0%); + background-size: 1000% 1000%; + color: @fg; +} + +dockoverlayedge { + background-color: @bg; +} + +dockoverlayedge docktabstrip { + padding: 0; + border: none; +} + +dockoverlayedge.left-edge docktab:checked { + box-shadow: inset -2px 0 @accent; +} + +dockoverlayedge.right-edge docktab:checked { + box-shadow: inset 2px 0 @accent; +} + +pillbox { + background-color: @bg; + border-radius: 2px; +} + +layoutpane entry.search { + border-bottom: 1px solid @fg_rgba_02; + box-shadow: none; + background-color: #1a1c1e; +} + +editortweak entry.search { + margin-bottom: -1px; + box-shadow: none; + background-color: transparent; +} + +.gb-search-entry-occurrences-tag { + box-shadow: none; + background-color: transparent; +} + +docktabstrip { + min-height: 39px; +} + +window.workbench preferences preferencesgroup list entry { + padding-top: 8px; + padding-bottom: 8px; +} + +button.run-arrow-button { + padding-left: 8px; + padding-right: 8px; +} + +button.dzlmenubutton image { + min-width: 26px; +} + +button.dzlmenubutton image.arrow { + min-width: 23px; +} + +button.dzlmenubuttonitem { + color: @fg; + font-weight: normal; +} + +button.dzlmenubuttonitem:disabled { + color: @fg_rgba_05; +} + +idelayoutstackheader { + border-bottom: 1px solid @fg_rgba_02; +} + +idelayoutstackheader button:checked { + color: @fg; +} + +ideeditorutilities>dzldockpaned>box>stackswitcher { + padding: 8px 0; + background-color: @bg; +} + +ideeditorutilities>dzldockpaned>box>stackswitcher:dir(ltr) { + border-right: 1px solid @fg_rgba_02; +} + +ideeditorutilities>dzldockpaned>box>stackswitcher:dir(rtl) { + border-left: 1px solid @fg_rgba_02; +} + +ideeditorutilities>dzldockpaned>box>stackswitcher button { + border-radius: 0; + box-shadow: none; + background-color: transparent; +} + +ideeditorutilities>dzldockpaned>box>stackswitcher button:active { + background-image: radial-gradient(circle, rgba(56, 125, 183, 0.7) 10%, transparent 0%); +} + +ideeditorutilities>dzldockpaned>box>stackswitcher button:checked { + background-color: transparent; + color: @fg; +} + +ideeditorutilities>dzldockpaned>box>stackswitcher button:dir(ltr) { + margin-right: -1px; +} + +ideeditorutilities>dzldockpaned>box>stackswitcher button:dir(ltr):checked { + box-shadow: inset -2px 0 @accent; +} + +ideeditorutilities>dzldockpaned>box>stackswitcher button:dir(rtl) { + margin-left: -1px; +} + +ideeditorutilities>dzldockpaned>box>stackswitcher button:dir(rtl):checked { + box-shadow: inset 2px 0 @accent; +} + +ideeditorsidebar notebook header { + background: transparent; +} + +popover.messagepopover list { + border: 1px solid @fg_rgba_02; + background-clip: padding-box; +} + +popover.messagepopover list row:not(:last-child) { + border-bottom: 1px solid @fg_rgba_02; +} + +dzlsuggestionpopover>revealer>box>elastic>scrolledwindow>viewport>list>row:selected { + background-color: @accent; + color: @fg_accent; +} + +#titlebar_container .suggestionbutton button { + padding: 0; + border-radius: 0; + box-shadow: inset 0 0 0 9999px #09090a; +} + +#titlebar_container .suggestionbutton button:backdrop { + box-shadow: inset 0 0 0 9999px @bg_accent000; +} + +#titlebar_container .suggestionbutton button image { + transition: box-shadow 75ms cubic-bezier(0, 0, 0.2, 1), background-color 225ms cubic-bezier(0, 0, 0.2, 1); + min-width: 32px; + min-height: 32px; + border-radius: 9999px; + box-shadow: inset 0 0 0 9999px transparent; +} + +#titlebar_container .suggestionbutton button:hover image { + box-shadow: inset 0 0 0 9999px rgba(128, 134, 139, 0.08); +} + +#titlebar_container .suggestionbutton button:focus image { + box-shadow: inset 0 0 0 9999px rgba(128, 134, 139, 0.08); +} + +#titlebar_container .suggestionbutton button:active image { + background-color: rgba(128, 134, 139, 0.12); +} + +/** + * Photos + */ +GdMainIconView.content-view { + -GdMainIconView-icon-size: 48; +} + +.documents-counter { + margin: 8px; + border-radius: 9999px; + box-shadow: 0 2px 2.4px -1px rgba(0, 0, 0, 0.2), 0 4px 3px 0 rgba(0, 0, 0, 0.14), 0 1px 6px 0 @bg_accent_rgba_015; + background-color: @accent; + color: @fg_accent; + font-weight: bold; +} + +.documents-scrolledwin.frame { + border-style: none; + background-color: transparent; +} + +.documents-scrolledwin.frame frame.content-view>border { + border-style: none; + background-color: transparent; +} + +.photos-fade-in { + opacity: 1; + transition: opacity 75ms cubic-bezier(0, 0, 0.2, 1); +} + +.photos-fade-out { + opacity: 0; + transition: opacity 75ms cubic-bezier(0, 0, 0.2, 1); +} + +button.photos-filter-preview { + color: @fg; + font-weight: normal; +} + +button.photos-filter-preview:checked { + background-color: @accent_rgba_03; + color: @fg; +} + +button.photos-filter-preview:checked image { + color: @fg_accent; + -gtk-icon-shadow: 0 1px 1px rgba(0, 0, 0, 0.2), 0 1px 2px rgba(0, 0, 0, 0.14), 0 1px 3px @bg_accent_rgba_015; +} + +overlay grid.horizontal>revealer>scrolledwindow.frame { + border-style: none; + background-color: transparent; +} + +overlay grid.horizontal>revealer>scrolledwindow.frame:dir(ltr) { + border-left-style: solid; +} + +overlay grid.horizontal>revealer>scrolledwindow.frame:dir(rtl) { + border-right-style: solid; +} + +/** + * Music + */ +.side-panel:dir(ltr) { + border-style: solid; + border-color: @fg_rgba_02; +} + +.side-panel:dir(rtl) { + border-style: solid; + border-color: @fg_rgba_02; +} + +.side-panel .view { + background-image: image(@bg); +} + +.side-panel .view:hover { + background-image: image(#1a1b1c); +} + +.side-panel .view:selected { + background-image: image(@accent); +} + +.side-panel .view:selected:hover { + background-image: image(@accent_gradient_inverse_2); +} + +.songs-list:hover { + background-image: image(rgba(158, 158, 158, 0.08)); +} + +frame.documents-dropdown { + margin: 8px; +} + +frame.documents-dropdown>border { + border: none; +} + +box.vertical>revealer>toolbar.search-bar { + border-bottom: 1px solid @fg_rgba_02; +} + +box.vertical>revealer>toolbar.search-bar button>widget { + -gtk-icon-source: -gtk-icontheme("pan-down-symbolic"); +} + +/** + * Terminal + */ +terminal-window notebook>header>box { + margin: -2px; +} + +terminal-window notebook>header>box button { + border-radius: 0; +} + +/** + * To Do + */ +task-list-view taskrow { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1); + margin: 0 -8px; +} + +task-list-view taskrow:hover { + transition: none; +} + +task-list-view taskrow label { + margin: 0 8px; +} + +task-list-view taskrow image.dim-label { + min-width: 16px; +} + +task-list-view>box>revealer>box>button { + margin: -4px; +} + +task-list-view>box>revealer>box>button .dim-label { + color: inherit; +} + +tasklistview taskrow { + outline: none; +} + +tasklistview taskrow entry, +tasklistview taskrow entry:focus, +tasklistview taskrow entry:disabled { + box-shadow: none; +} + +tasklistview taskrow image.dim-label { + min-width: 16px; +} + +tasklistview>box>revealer>box>button { + margin: -4px; +} + +tasklistview>box>revealer>box>button .dim-label { + color: inherit; +} + +/** + * eog + */ +#eog-thumb-nav scrolledwindow.frame { + border-top: none; +} + +/** + * Evolution + */ +frame.taskbar>border { + border-style: solid none none; +} + +box.vertical>paned.horizontal notebook widget .frame { + border-style: none; +} + +/** + * gitg + */ +frame.commit-frame>border { + border-style: solid none none; +} + +/** + * Characters + */ +box.dialog-vbox scrolledwindow.related { + border: 1px solid @fg_rgba_02; + background-clip: padding-box; + background-color: #1a1c1e; +} + +list.categories { + background-image: image(@bg); +} + +/** + * Boxes + */ +.transparent-bg+stack overlay>label { + min-height: 24px; + padding: 0 4px; + border-radius: 2px; + background-color: @bg_accent_rgba_06; + color: @fg_accent; +} + +/** + * Evince + */ +evview.content-view.view:selected { + background-color: @accent; + color: @fg_accent; +} + +/** + * Polari + */ +.polari-room-list row:selected { + background-color: @accent_rgba_05; +} + +/** + * Fractal + */ +button.osd.scroll_button { + margin: 4px; +} + +/** + * Mines + */ +grid.minefield>button.tile { + border-style: solid; +} + +/** + * Tilix + */ +overlay>revealer.left>scrolledwindow.frame, +overlay>revealer.right>scrolledwindow.frame { + border-style: none; + box-shadow: 0 8px 6px -5px rgba(0, 0, 0, 0.2), 0 16px 14.4px 2px rgba(0, 0, 0, 0.14), 0 6px 18px 5px @bg_accent_rgba_015; +} + +overlay>revealer.left>scrolledwindow.frame { + margin-right: 32px; +} + +overlay>revealer.right>scrolledwindow.frame { + margin-left: 32px; +} + +.terminix-session-sidebar, +.tilix-session-sidebar { + background-image: image(#141416); +} + +.terminal-titlebar button { + border-radius: 0; +} + +button.image-button.session-new-button { + min-width: 28px; +} + +notebook.tilix-background tab>box>stack { + margin: -6px; +} + +button.flat.tilix-small-button { + min-height: 20px; + min-width: 16px; +} + +/** + * Terminator + */ +.terminator-terminal-window paned>separator { + background-color: @bg; +} + +.terminator-terminal-window notebook.frame { + border-style: none; + background-color: transparent; +} + +/** + * Ubitquity + */ +#live_installer .menubar progressbar trough { + border-radius: 4px; + background-color: @inactive_rgba_02; +} + +/** + * Eclipse + */ +window.background>box.vertical>scrolledwindow>widget toolbar { + padding: 2px; +} + +window.background>box.vertical>scrolledwindow>widget toolbar separator, +window.background>box.vertical>scrolledwindow>widget toolbar button { + margin: 2px; +} + +window.background>box.vertical>scrolledwindow>widget toolbar button { + border-radius: 2px; +} + +/** + * FileZilla + */ +window.background>box.vertical>widget>widget>widget>widget>widget>widget>widget>scrolledwindow>widget>entry { + all: unset; + padding: 5px; + box-shadow: inset 0 0 0 1px @accent_rgba_03; + background-color: #1a1c1e; +} + +window.background>box.vertical>widget>widget>widget>widget>widget>widget>widget>scrolledwindow>widget>widget>entry { + all: unset; + padding: 0 3px 1px; + box-shadow: inset 0 0 0 1px @accent_rgba_03; + background-color: #1a1c1e; +} + +/** + * Chromium + */ +window.background.chromium { + background-color: #141416; +} + +window.background.chromium entry, +window.background.chromium>button { + border: 1px solid @fg_rgba_03; +} + +window.background.chromium>button { + color: @accent; +} + +window.background.chromium>button:disabled { + color: @fg_rgba_03; +} + +window.background.chromium menubar, +window.background.chromium headerbar { + color: @inactive_rgba_07; +} + +window.background.chromium headerbar button:active { + background-color: rgba(128, 134, 139, 0.12); +} + +window.background.chromium textview.view { + background-color: transparent; +} + +window.background.chromium treeview.view.cell:selected:focus { + background-color: @accent; + color: @fg_accent; +} + +window.background.chromium treeview.view button { + border: 1px solid @fg_rgba_03; + background-color: #1a1c1e; +} + +tooltip.background.chromium { + background-color: #09090a; +} + +/** + * Firefox + */ +#MozillaGtkWidget>widget text { + background-color: #141416; +} + +#MozillaGtkWidget>widget text:selected { + background-color: @accent; + color: @fg_accent; +} + +#MozillaGtkWidget>widget>separator { + color: @fg_rgba_02; +} + +#MozillaGtkWidget>widget>frame>border { + border-color: #3a3b3b; +} + +#MozillaGtkWidget>widget>entry, +#MozillaGtkWidget>widget>button>button { + border: 1px solid @fg_rgba_03; + border-radius: 2px; + box-shadow: none; +} + +#MozillaGtkWidget>widget>entry:disabled, +#MozillaGtkWidget>widget>button>button:disabled { + border-color: @fg_rgba_02; +} + +#MozillaGtkWidget>widget>entry { + min-height: 30px; + background-color: #1a1c1e; +} + +#MozillaGtkWidget>widget>entry:focus { + border-color: @accent; + box-shadow: inset 0 0 0 1px @accent; +} + +#MozillaGtkWidget>widget>entry:disabled { + background-color: #1a1c1e; +} + +#MozillaGtkWidget>widget>button>button { + padding: 4px 8px; +} + +#MozillaGtkWidget>widget>button>button:active { + background-size: 1000% 1000%; +} + +#MozillaGtkWidget>widget>checkbutton>check, +#MozillaGtkWidget>widget>radiobutton>radio { + margin: 0; + padding: 0; +} + +#MozillaGtkWidget>widget>checkbutton>check:not(:checked):not(:indeterminate), +#MozillaGtkWidget>widget>radiobutton>radio:not(:checked):not(:indeterminate) { + color: #757575; +} + +#MozillaGtkWidget>widget>checkbutton>check:not(:checked):not(:indeterminate):disabled, +#MozillaGtkWidget>widget>radiobutton>radio:not(:checked):not(:indeterminate):disabled { + color: rgba(117, 117, 117, 0.5); +} + +#MozillaGtkWidget menuitem label:disabled { + color: @fg_rgba_05; +} + +#MozillaGtkWidget>widget>menubar { + color: @inactive_rgba_07; +} + +#MozillaGtkWidget>widget>menubar:hover { + color: @inactive; +} + +#MozillaGtkWidget>widget>menubar:disabled { + color: @inactive_rgba_03; +} + +#MozillaGtkWidget>widget>frame { + color: @fg_rgba_03; +} + +#MozillaGtkWidget menu>separator { + color: @fg_rgba_02; +} + +/** + * Inkscape + */ +#ToolboxCommon>#AuxToolbox #StyleSwatch { + font-size: smaller; +} + +#ToolboxCommon>#AuxToolbox #Kludge { + padding: 0; +} + +#ToolboxCommon>#AuxToolbox spinbutton, +#ToolboxCommon>#AuxToolbox entry { + min-height: 32px; +} + +#ToolboxCommon>#AuxToolbox button:not(.up):not(.down) { + min-height: 24px; + min-width: 16px; + padding: 4px 8px; + border-radius: 2px; +} + +#ToolboxCommon>#AuxToolbox spinbutton button { + border-width: 4px; +} + +#ToolboxCommon>toolbar.vertical { + margin-top: -4px; +} + +#ToolboxCommon>toolbar.vertical button { + min-height: 24px; + min-width: 24px; + padding: 4px; + border-radius: 2px; +} + +#CanvasTable button { + min-height: 16px; + min-width: 16px; + padding: 0; + border-radius: 0; +} + +#CanvasTable #HorizontalScrollbar { + border-top: 1px solid @fg_rgba_02; +} + +#CanvasTable #VerticalScrollbar:dir(ltr) { + border-left: 1px solid @fg_rgba_02; +} + +#CanvasTable #VerticalScrollbar:dir(rtl) { + border-right: 1px solid @fg_rgba_02; +} + +#Canvas_and_Dock frame>border { + border: none; + background-color: transparent; +} + +#Canvas_and_Dock widget>widget>button.flat { + min-height: 16px; + min-width: 16px; + padding: 4px; +} + +#Canvas_and_Dock widget>widget>box.horizontal image { + padding: 4px; +} + +#Canvas_and_Dock box.horizontal>box.vertical>button.flat { + min-height: 16px; + min-width: 24px; + padding: 8px 4px; +} + +/** + * Synapse + */ +box.vertical>widget>widget:selected { + background-color: @accent_rgba_03; +} + +/** + * Unity + */ +UnityDecoration { + -UnityDecoration-extents: 28px 0 0 0; + -UnityDecoration-input-extents: 8px; + -UnityDecoration-shadow-offset-x: 0; + -UnityDecoration-shadow-offset-y: 3px; + -UnityDecoration-active-shadow-color: rgba(0, 0, 0, 0.48); + -UnityDecoration-active-shadow-radius: 18px; + -UnityDecoration-inactive-shadow-color: rgba(0, 0, 0, 0.32); + -UnityDecoration-inactive-shadow-radius: 6px; + -UnityDecoration-glow-size: 8px; + -UnityDecoration-glow-color: @accent; + -UnityDecoration-title-indent: 4px; + -UnityDecoration-title-fade: 32px; + -UnityDecoration-title-alignment: 0; +} + +UnityDecoration .top { + padding: 0 2px; + border-style: none; + border-radius: 2px 2px 0 0; + box-shadow: inset 0 1px rgba(255, 255, 255, 0.05); + background-color: #09090a; + color: @inactive; +} + +UnityDecoration .top:backdrop { + background-color: @bg_accent000; + color: @inactive_rgba_07; +} + +UnityDecoration .menuitem { + border-radius: 2px 2px 0 0; + box-shadow: none; + color: @inactive_rgba_07; +} + +UnityDecoration .menuitem:hover { + background-color: rgba(128, 134, 139, 0.12); + color: @inactive; +} + +.background:not(.csd) headerbar:not(.titlebar) { + border-radius: 0; + box-shadow: 0 2px 2px -2px @bg_accent_rgba_03, 0 1px 2px -1px rgba(0, 0, 0, 0.24), 0 1px 2px -0.6px rgba(0, 0, 0, 0.17); +} + +.background:not(.csd) headerbar:not(.titlebar).inline-toolbar { + border-style: none; +} + +UnityPanelWidget, +.unity-panel { + background-color: @bg_accent000; + color: @inactive; +} + +UnityPanelWidget:backdrop, +.unity-panel:backdrop { + color: @inactive_rgba_07; +} + +.unity-panel.menuitem, +.unity-panel .menuitem { + color: @inactive_rgba_07; +} + +.unity-panel.menubar.menuitem:hover, +.unity-panel.menubar .menuitem *:hover { + background-color: rgba(128, 134, 139, 0.12); + color: @inactive; +} + +.menu IdoPlaybackMenuItem.menuitem:active { + -gtk-icon-source: -gtk-icontheme("process-working-symbolic"); + animation: spin 1s linear infinite; + color: @accent; +} + +/** + * Mate-Panel + */ +.mate-panel-menu-bar menubar, +#PanelApplet-window-menu-applet-button { + background-color: transparent; +} + +.mate-panel-menu-bar { + background-color: @bg_accent000; + color: @inactive_rgba_07; + font-weight: 500; +} + +.mate-panel-menu-bar button { + min-height: 16px; + min-width: 16px; + padding: 0; + border-radius: 0; + color: @inactive_rgba_07; + box-shadow: none; + background-color: transparent; +} + +.mate-panel-menu-bar button:drop(active), +.mate-panel-menu-bar button:hover { + box-shadow: none; + background-color: rgba(128, 134, 139, 0.08); +} + +.mate-panel-menu-bar button:focus { + box-shadow: none; + background-color: rgba(128, 134, 139, 0.08); +} + +.mate-panel-menu-bar button:active { + box-shadow: none; + background-image: radial-gradient(circle, rgba(128, 134, 139, 0.12) 10%, transparent 0%); +} + +.mate-panel-menu-bar button:disabled { + background-color: transparent; + color: @inactive_rgba_03; +} + +.mate-panel-menu-bar button:checked { + color: @inactive; + box-shadow: none; + background-color: rgba(128, 134, 139, 0.12); +} + +.mate-panel-menu-bar button:checked:drop(active), +.mate-panel-menu-bar button:checked:hover { + box-shadow: none; + background-color: rgba(128, 134, 139, 0.1904); +} + +.mate-panel-menu-bar button:checked:focus { + box-shadow: none; + background-color: rgba(128, 134, 139, 0.1904); +} + +.mate-panel-menu-bar button:checked:active { + box-shadow: none; + background-image: radial-gradient(circle, rgba(128, 134, 139, 0.12) 10%, transparent 0%); +} + +.mate-panel-menu-bar button:checked:disabled { + background-color: rgba(128, 134, 139, 0.12); + color: @inactive_rgba_05; +} + +PanelToplevel.horizontal>grid>button { + min-width: 24px; +} + +PanelToplevel.vertical>grid>button { + min-height: 24px; +} + +PanelSeparator { + color: @inactive_rgba_02; +} + +MatePanelAppletFrameDBus>MatePanelAppletFrameDBus { + background-image: repeating-linear-gradient(currentcolor, currentcolor 4px, transparent 4px, transparent 6px); + background-repeat: no-repeat; + background-size: 4px 10px; + color: @inactive_rgba_03; +} + +MatePanelAppletFrameDBus>MatePanelAppletFrameDBus:dir(ltr) { + background-position: 3px; +} + +MatePanelAppletFrameDBus>MatePanelAppletFrameDBus:dir(rtl) { + background-position: calc(100% - 3px); +} + +.mate-panel-menu-bar menubar>menuitem { + color: @inactive_rgba_07; +} + +.mate-panel-menu-bar menubar>menuitem:hover { + background-color: rgba(128, 134, 139, 0.12); + color: @inactive; +} + +.mate-panel-menu-bar menubar>menuitem:disabled { + color: @inactive_rgba_03; +} + +.mate-panel-menu-bar.horizontal menubar>menuitem { + padding: 0 8px; +} + +.mate-panel-menu-bar.vertical menubar>menuitem { + padding: 8px 0; +} + +.mate-panel-menu-bar menubar menu>menuitem { + min-height: 28px; + padding: 0 6px; +} + +.mate-panel-menu-bar #PanelApplet button { + -GtkWidget-window-dragging: true; +} + +.mate-panel-menu-bar #tasklist-button { + border-image: radial-gradient(circle closest-corner at center calc(100% - 1px), currentcolor 0%, transparent 0%) 0 0 0/0 0 0; +} + +.mate-panel-menu-bar #tasklist-button:checked { + border-image: radial-gradient(circle closest-corner at center calc(100% - 1px), currentcolor 100%, transparent 0%) 0 0 2/0 0 2px; +} + +.mate-panel-menu-bar #tasklist-button image:dir(ltr), +.mate-panel-menu-bar #tasklist-button label:dir(rtl) { + padding-left: 4px; +} + +.mate-panel-menu-bar #tasklist-button label:dir(ltr), +.mate-panel-menu-bar #tasklist-button image:dir(rtl) { + padding-right: 4px; +} + +.mate-panel-menu-bar.vertical #tasklist-button { + min-height: 32px; +} + +.mate-panel-menu-bar.horizontal #showdesktop-button image { + min-width: 24px; + padding: 0 4px; +} + +.mate-panel-menu-bar.vertical #showdesktop-button image { + min-height: 24px; + padding: 4px 0; +} + +PanelApplet.wnck-applet .wnck-pager { + background-color: transparent; + color: @accent; +} + +PanelApplet.wnck-applet .wnck-pager:hover { + background-color: rgba(128, 134, 139, 0.08); +} + +PanelApplet.wnck-applet .wnck-pager:active { + background-color: rgba(128, 134, 139, 0.12); +} + +PanelApplet.wnck-applet .wnck-pager:selected { + background-color: @accent; +} + +.mate-panel-menu-bar.horizontal #clock-applet-button label { + padding: 0 8px; +} + +.mate-panel-menu-bar.vertical #clock-applet-button label { + padding: 8px 0; +} + +#MatePanelPopupWindow { + border: 1px solid @fg_rgba_02; + border-radius: 3px; + box-shadow: inset 0 1px rgba(255, 255, 255, 0.05); + background-clip: padding-box; + background-color: #141416; +} + +#MatePanelPopupWindow frame>border { + border-style: none; + background-color: transparent; +} + +#MatePanelPopupWindow calendar { + border-style: none; +} + +#MatePanelPopupWindow calendar:not(:selected) { + background-color: transparent; +} + +#MatePanelPopupWindow calendar+box { + margin-top: -5px; + padding-top: 5px; + border-top: 1px solid @fg_rgba_02; +} + +#MatePanelPopupWindow expander>title { + min-height: 32px; +} + +#MatePanelPopupWindow button { + padding: 4px 16px; +} + +#MatePanelPopupWindow>frame>box>box>box>widget { + color: @fg_rgba_02; +} + +na-tray-applet { + -NaTrayApplet-icon-padding: 3px; + -NaTrayApplet-icon-size: 16; +} + +.mate-panel-menu-bar { + -PanelMenuBar-icon-visible: true; +} + +.mate-panel-applet-slider { + border: 1px solid @fg_rgba_02; + border-radius: 3px; + box-shadow: inset 0 1px rgba(255, 255, 255, 0.05); + background-clip: padding-box; + background-color: #141416; +} + +.mate-panel-applet-slider frame>border { + border-style: none; + background-color: transparent; +} + +#PanelApplet:not(:selected)>box { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1); +} + +#PanelApplet:selected>box { + background-color: rgba(128, 134, 139, 0.12); + color: @inactive; +} + +#mate-menu { + border: 1px solid @fg_rgba_02; + box-shadow: inset 0 1px rgba(255, 255, 255, 0.05); + background-clip: padding-box; + background-color: #141416; +} + +#mate-menu button { + min-height: 24px; + min-width: 24px; + padding: 4px 0; + color: @fg; + font-weight: normal; +} + +#mate-menu button:not(.flat) { + background-color: rgba(158, 158, 158, 0.12); +} + +#mate-menu button image, +#mate-menu button label+label { + color: @fg_rgba_07; +} + +#mate-menu entry { + margin: 0 0 4px; +} + +#mate-menu entry image { + margin: 0; +} + +#mate-menu entry+button { + margin: 0 4px 4px; + padding: 4px; +} + +.brisk-menu { + box-shadow: inset 0 1px rgba(255, 255, 255, 0.05); + background-color: #141416; +} + +.brisk-menu entry { + margin-bottom: -2px; + border-bottom: 1px solid @fg_rgba_02; + border-image: none; + box-shadow: none; + background-color: transparent; +} + +.brisk-menu entry+box>box:dir(ltr) { + margin-right: -2px; + border-right: 1px solid @fg_rgba_02; +} + +.brisk-menu entry+box>box:dir(rtl) { + margin-left: -2px; + border-left: 1px solid @fg_rgba_02; +} + +.brisk-menu .categories-list { + padding-top: 4px; +} + +.brisk-menu .categories-list button { + margin: 0 4px; +} + +.brisk-menu .session-button { + padding: 8px; +} + +.brisk-menu .frame { + border-style: none; + background-color: transparent; +} + +.brisk-menu .apps-list { + padding: 4px 0; + background-color: transparent; +} + +.brisk-menu .apps-list row { + padding: 0; +} + +.brisk-menu .apps-list row:hover { + box-shadow: none; +} + +.brisk-menu .apps-list button { + border-radius: 0; + color: @fg; + font-weight: normal; +} + +/** + * CAJA File manager + */ +.caja-navigation-window box.horizontal>button.toggle.image-button { + border-radius: 2px; +} + +.caja-pathbar button { + margin: 0 -1px 0 -2px; +} + +.caja-pathbar button.slider-button { + min-width: 24px; +} + +.caja-pathbar button>widget { + -gtk-icon-source: -gtk-icontheme("pan-down-symbolic"); + -GtkArrow-arrow-scaling: 1; +} + +.caja-side-pane notebook, +.caja-notebook { + border-top: 1px solid @fg_rgba_02; +} + +.caja-side-pane notebook .frame, +.caja-notebook .frame { + border-style: none; + background-color: transparent; +} + +.caja-canvas-item { + border-radius: 2px; +} + +.caja-desktop.view .entry, +.caja-navigation-window .view .entry { + border: none; + border-radius: 2px; + background-color: rgba(158, 158, 158, 0.04); + background-image: none; + color: @fg; +} + +.caja-desktop.view .entry:selected, +.caja-navigation-window .view .entry:selected { + background-color: @accent_rgba_03; +} + +.caja-desktop.view .entry { + background-color: @bg_accent_rgba_03; + color: @fg_accent; + text-shadow: 0 1px 1px rgba(0, 0, 0, 0.2), 0 1px 2px rgba(0, 0, 0, 0.14), 0 1px 3px @bg_accent_rgba_015; + caret-color: currentcolor; +} + +.caja-desktop.view .entry:selected { + background-color: @accent_rgba_03; +} + +.caja-navigation-window statusbar { + margin: 0 -10px; + padding: 0 4px; + border-top: 1px solid @fg_rgba_02; +} + +.caja-notebook frame>border { + border-style: none; + background-color: transparent; +} + +#caja-extra-view-widget { + border-bottom: 1px solid @fg_rgba_02; +} + +#caja-extra-view-widget>box>box>label { + font-weight: bold; +} + +#caja-extra-view-widget button:not(:disabled) { + color: @accent; + box-shadow: none; + background-color: transparent; +} + +#caja-extra-view-widget button:not(:disabled):drop(active), +#caja-extra-view-widget button:not(:disabled):hover { + box-shadow: none; + background-color: @accent_rgba_011; +} + +#caja-extra-view-widget button:not(:disabled):focus { + box-shadow: none; + background-color: @accent_rgba_011; +} + +#caja-extra-view-widget button:not(:disabled):active { + box-shadow: none; + background-image: radial-gradient(circle, @accent_rgba_015 10%, transparent 0%); +} + +/** + * Pluma + */ +.pluma-window statusbar { + margin: 0 -10px; + padding: 0 4px; + border-top: 1px solid @fg_rgba_02; +} + +.pluma-window statusbar frame>border { + border-style: none; + background-color: transparent; +} + +.pluma-window statusbar frame button.flat { + padding: 0 4px; + border-radius: 0; +} + +.pluma-window statusbar frame button.flat widget { + -gtk-icon-source: -gtk-icontheme("pan-down-symbolic"); + -GtkArrow-arrow-scaling: 1; +} + +.pluma-print-preview toolbar { + border-bottom: 1px solid @fg_rgba_02; +} + +.pluma-window paned.horizontal box.vertical box.horizontal button.flat { + margin: 1px; +} + +.pluma-window paned.horizontal box.vertical .frame { + border-style: none; + background-color: transparent; +} + +.pluma-window paned.horizontal box.vertical notebook.frame { + margin-top: -1px; + border-top: 1px solid @fg_rgba_02; +} + +.pluma-window paned.horizontal box.vertical notebook.frame box.vertical toolbar.horizontal { + border-bottom: 1px solid @fg_rgba_02; +} + +/** + * Atril + */ +.atril-window paned.horizontal box.vertical .frame { + border-style: none; + background-color: transparent; +} + +.atril-window paned.horizontal box.vertical notebook .frame { + border-top: 1px solid @fg_rgba_02; +} + +/* mate-screensaver lock dialog */ +.lock-dialog { + border: 1px solid @fg_rgba_02; + border-radius: 3px; + box-shadow: 0 3px 3px -1px rgba(0, 0, 0, 0.2), 0 6px 6px 0 rgba(0, 0, 0, 0.14), 0 1px 10.8px 0 @bg_accent_rgba_015, inset 0 1px rgba(255, 255, 255, 0.05); + background-clip: padding-box; + background-color: #141416; +} + +.lock-dialog frame>border { + border-style: none; + background-color: transparent; +} + +.lock-dialog button:not(:disabled) { + color: @accent; + box-shadow: none; + background-color: transparent; +} + +.lock-dialog button:not(:disabled):drop(active), +.lock-dialog button:not(:disabled):hover { + box-shadow: none; + background-color: @accent_rgba_011; +} + +.lock-dialog button:not(:disabled):focus { + box-shadow: none; + background-color: @accent_rgba_011; +} + +.lock-dialog button:not(:disabled):active { + box-shadow: none; + background-image: radial-gradient(circle, @accent_rgba_015 10%, transparent 0%); +} + +/* multimedia OSD */ +MsdOsdWindow.background.osd { + border-radius: 2px; + background-color: @bg_inactive; + color: @inactive; +} + +MsdOsdWindow.background.osd .trough { + border-radius: 0; + background-color: @inactive_rgba_02; +} + +MsdOsdWindow.background.osd .progressbar { + border-radius: 0; + background-color: @inactive; +} + +/** + * Budgie Desktop + */ +.budgie-container { + background-color: transparent; +} + +.budgie-settings-window buttonbox.inline-toolbar { + border-style: none none solid; +} + +.budgie-settings-window buttonbox.inline-toolbar button { + border-radius: 2px; +} + +.budgie-popover { + border-style: solid; + border-width: 1px; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.2) @bg_accent_rgba_03; + border-radius: 3px; + box-shadow: 0 2px 2.4px -1px rgba(0, 0, 0, 0.2), 0 4px 3px 0 rgba(0, 0, 0, 0.14), 0 1px 6px 0 @bg_accent_rgba_015; + background-clip: padding-box; + background-color: #141416; +} + +.budgie-popover .container { + padding: 2px; +} + +.budgie-popover border { + border: none; + background-color: transparent; +} + +.budgie-popover row { + padding: 0; +} + +.budgie-popover row:hover { + box-shadow: none; +} + +.budgie-popover button.flat:not(.image-button) { + min-height: 28px; + padding: 0 8px; + color: @fg; + font-weight: normal; +} + +.budgie-popover button.flat:not(.image-button):disabled { + color: @fg_rgba_05; +} + +.budgie-popover.budgie-menu .container { + padding: 0; +} + +.budgie-popover.budgie-menu scrollbar, +.budgie-popover.budgie-menu entry.search { + background-color: transparent; +} + +.budgie-popover.budgie-menu entry.search { + border-bottom: 1px solid @fg_rgba_02; + border-image: none; + border-radius: 0; + box-shadow: none; + font-size: 120%; +} + +.budgie-popover.budgie-menu button.flat:not(.image-button) { + min-height: 32px; + padding: 0 8px; + border-radius: 0; +} + +.budgie-popover.budgie-menu button.flat:not(.image-button):drop(active):not(:active), +.budgie-popover.budgie-menu button.flat:not(.image-button):hover:not(:active) { + transition-property: all, border-image, background-size, background-image, background-color; + transition-duration: 75ms, 225ms, 300ms, 1200ms, 0ms; +} + +.budgie-popover.budgie-menu button.flat:not(.image-button):checked { + background-color: @accent_rgba_03; +} + +.budgie-popover.budgie-menu button.flat:not(.image-button):checked:disabled { + background-color: transparent; +} + +.budgie-popover.user-menu .container { + padding: 8px; +} + +.budgie-popover.user-menu separator { + margin: 4px 0; +} + +.budgie-popover.sound-popover separator { + margin: 3px 0; +} + +.budgie-popover.night-light-indicator .container { + padding: 8px; +} + +.budgie-popover.places-menu .container { + padding: 8px; +} + +.budgie-popover.places-menu .name-button image:dir(ltr) { + margin-right: 3px; +} + +.budgie-popover.places-menu .name-button image:dir(rtl) { + margin-left: 3px; +} + +.budgie-popover.places-menu .unmount-button { + margin: 2px; + padding: 0; +} + +.budgie-popover.places-menu .places-list:not(.always-expand) { + margin-top: 4px; + padding-top: 4px; + border-top: 1px solid @fg_rgba_02; +} + +.budgie-popover.places-menu .alternative-label { + padding: 3px; + font-size: 15px; +} + +.budgie-popover.workspace-popover .container { + padding: 8px; +} + +.budgie-popover.workspace-popover separator { + margin: 4px 0; +} + +.budgie-popover.workspace-popover flowboxchild { + padding: 0; +} + +.workspace-switcher .workspace-layout { + border: 0 solid @inactive_rgba_02; +} + +.top .workspace-switcher .workspace-layout:dir(ltr), +.bottom .workspace-switcher .workspace-layout:dir(ltr) { + border-left-width: 1px; +} + +.top .workspace-switcher .workspace-layout:dir(rtl), +.bottom .workspace-switcher .workspace-layout:dir(rtl) { + border-right-width: 1px; +} + +.left .workspace-switcher .workspace-layout, +.right .workspace-switcher .workspace-layout { + border-top-width: 1px; +} + +.workspace-switcher .workspace-item, +.workspace-switcher .workspace-add-button { + border: 0 solid @inactive_rgba_02; +} + +.top .workspace-switcher .workspace-item:dir(ltr), +.bottom .workspace-switcher .workspace-item:dir(ltr), +.top .workspace-switcher .workspace-add-button:dir(ltr), +.bottom .workspace-switcher .workspace-add-button:dir(ltr) { + border-right-width: 1px; +} + +.top .workspace-switcher .workspace-item:dir(rtl), +.bottom .workspace-switcher .workspace-item:dir(rtl), +.top .workspace-switcher .workspace-add-button:dir(rtl), +.bottom .workspace-switcher .workspace-add-button:dir(rtl) { + border-left-width: 1px; +} + +.left .workspace-switcher .workspace-item, +.right .workspace-switcher .workspace-item, +.left .workspace-switcher .workspace-add-button, +.right .workspace-switcher .workspace-add-button { + border-bottom-width: 1px; +} + +.workspace-switcher .workspace-item { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1); +} + +.workspace-switcher .workspace-item.current-workspace { + background-color: rgba(128, 134, 139, 0.12); +} + +.workspace-switcher .workspace-add-button:hover { + box-shadow: none; +} + +.workspace-switcher .workspace-add-button:active { + background-image: none; +} + +.workspace-switcher .workspace-add-button:active image { + margin: 1px 0 -1px; +} + +.budgie-panel .workspace-switcher .workspace-icon-button { + min-height: 24px; + min-width: 24px; + padding: 0; + border-radius: 2px; +} + +.budgie-panel { + transition: background-color 75ms cubic-bezier(0, 0, 0.2, 1); + background-color: @bg_accent000; + color: @inactive_rgba_07; + font-weight: 500; +} + +.budgie-panel.transparent { + background-color: @bg_accent_rgba_06; + color: @fg_accent_rgba_07; +} + +.budgie-panel button { + min-height: 16px; + min-width: 16px; + padding: 0; + border-radius: 0; + color: @inactive_rgba_07; + box-shadow: none; + background-color: transparent; +} + +.budgie-panel button:drop(active), +.budgie-panel button:hover { + box-shadow: none; + background-color: rgba(128, 134, 139, 0.08); +} + +.budgie-panel button:focus { + box-shadow: none; + background-color: rgba(128, 134, 139, 0.08); +} + +.budgie-panel button:active { + box-shadow: none; + background-image: radial-gradient(circle, rgba(128, 134, 139, 0.12) 10%, transparent 0%); +} + +.budgie-panel button:disabled { + background-color: transparent; + color: @inactive_rgba_03; +} + +.budgie-panel button:checked { + color: @inactive; + box-shadow: none; + background-color: rgba(128, 134, 139, 0.12); +} + +.budgie-panel button:checked:drop(active), +.budgie-panel button:checked:hover { + box-shadow: none; + background-color: rgba(128, 134, 139, 0.1904); +} + +.budgie-panel button:checked:focus { + box-shadow: none; + background-color: rgba(128, 134, 139, 0.1904); +} + +.budgie-panel button:checked:active { + box-shadow: none; + background-image: radial-gradient(circle, rgba(128, 134, 139, 0.12) 10%, transparent 0%); +} + +.budgie-panel button:checked:disabled { + background-color: rgba(128, 134, 139, 0.12); + color: @inactive_rgba_05; +} + +.budgie-panel.horizontal button { + padding: 0 4px; +} + +.budgie-panel.vertical button { + padding: 4px 0; +} + +.budgie-panel separator { + background-color: @inactive_rgba_03; +} + +.budgie-panel .alert { + color: #f44336; +} + +.budgie-panel .titlebar:not(headerbar) { + min-height: 0; + padding: 0; + box-shadow: none; + background-color: transparent; + color: @inactive; +} + +.budgie-panel .titlebar:not(headerbar) button:not(.suggested-action):not(.destructive-action) { + color: @inactive_rgba_07; +} + +.budgie-panel #tasklist-button { + padding: 0 4px; +} + +.budgie-panel.vertical #tasklist-button { + min-height: 32px; +} + +.budgie-panel button.flat.launcher { + padding: 0; +} + +.budgie-panel button.flat.launcher:not(:checked) { + color: @inactive_rgba_05; +} + +.budgie-panel button.flat.launcher:not(:checked):disabled { + color: @inactive_rgba_03; +} + +.top .budgie-panel #tasklist-button, +.budgie-panel .top #tasklist-button, +.top .budgie-panel button.flat.launcher, +.budgie-panel .top button.flat.launcher { + border-image: radial-gradient(circle closest-corner at center calc(1px), currentcolor 0%, transparent 0%) 0 0 0 0/0 0 0 0; +} + +.budgie-panel .unpinned button.flat.launcher, +.budgie-panel .pinned button.flat.launcher.running, +.top .budgie-panel #tasklist-button:checked, +.budgie-panel .top #tasklist-button:checked, +.top .budgie-panel button.flat.launcher:checked, +.budgie-panel .top button.flat.launcher:checked { + border-image: radial-gradient(circle closest-corner at center calc(1px), currentcolor 100%, transparent 0%) 2 0 0 0/2px 0 0 0; +} + +.bottom .budgie-panel #tasklist-button, +.budgie-panel .bottom #tasklist-button, +.bottom .budgie-panel button.flat.launcher, +.budgie-panel .bottom button.flat.launcher { + border-image: radial-gradient(circle closest-corner at center calc(100% - 1px), currentcolor 0%, transparent 0%) 0 0 0 0/0 0 0 0; +} + +.budgie-panel .unpinned button.flat.launcher, +.budgie-panel .pinned button.flat.launcher.running, +.bottom .budgie-panel #tasklist-button:checked, +.budgie-panel .bottom #tasklist-button:checked, +.bottom .budgie-panel button.flat.launcher:checked, +.budgie-panel .bottom button.flat.launcher:checked { + border-image: radial-gradient(circle closest-corner at center calc(100% - 1px), currentcolor 100%, transparent 0%) 0 0 2 0/0 0 2px 0; +} + +.left .budgie-panel #tasklist-button, +.budgie-panel .left #tasklist-button, +.left .budgie-panel button.flat.launcher, +.budgie-panel .left button.flat.launcher { + border-image: radial-gradient(circle closest-corner at calc(1px) center, currentcolor 0%, transparent 0%) 0 0 0 0/0 0 0 0; +} + +.budgie-panel .unpinned button.flat.launcher, +.budgie-panel .pinned button.flat.launcher.running, +.left .budgie-panel #tasklist-button:checked, +.budgie-panel .left #tasklist-button:checked, +.left .budgie-panel button.flat.launcher:checked, +.budgie-panel .left button.flat.launcher:checked { + border-image: radial-gradient(circle closest-corner at calc(1px) center, currentcolor 100%, transparent 0%) 0 0 0 2/0 0 0 2px; +} + +.right .budgie-panel #tasklist-button, +.budgie-panel .right #tasklist-button, +.right .budgie-panel button.flat.launcher, +.budgie-panel .right button.flat.launcher { + border-image: radial-gradient(circle closest-corner at calc(100% - 1px) center, currentcolor 0%, transparent 0%) 0 0 0 0/0 0 0 0; +} + +.budgie-panel .unpinned button.flat.launcher, +.budgie-panel .pinned button.flat.launcher.running, +.right .budgie-panel #tasklist-button:checked, +.budgie-panel .right #tasklist-button:checked, +.right .budgie-panel button.flat.launcher:checked, +.budgie-panel .right button.flat.launcher:checked { + border-image: radial-gradient(circle closest-corner at calc(100% - 1px) center, currentcolor 100%, transparent 0%) 0 2 0 0/0 2px 0 0; +} + +frame.raven-frame>border { + border-style: none; + box-shadow: 0 8px 6px -5px rgba(0, 0, 0, 0.2), 0 16px 14.4px 2px rgba(0, 0, 0, 0.14), 0 6px 18px 5px @bg_accent_rgba_015; +} + +.top frame.raven-frame>border { + margin-bottom: 32px; +} + +.bottom frame.raven-frame>border { + margin-top: 32px; +} + +.left frame.raven-frame>border { + margin-right: 32px; +} + +.right frame.raven-frame>border { + margin-left: 32px; +} + +.raven { + background-color: #141416; +} + +.raven>box:not(:only-child) { + margin-bottom: -10px; +} + +.raven .raven-header { + min-height: 32px; + padding: 3px; +} + +.raven .raven-header.top { + padding: 0; + border-bottom: 1px solid @fg_rgba_02; +} + +.raven .raven-header.top stackswitcher.linked>button { + margin: -4px 0 -5px; + padding: 0 16px; + min-height: 40px; + border-image: radial-gradient(circle closest-corner at center calc(100% - 1px), @accent 0%, transparent 0%) 0 0 0/0 0 0; + border-radius: 0; +} + +.raven .raven-header.top stackswitcher.linked>button:checked { + border-image: radial-gradient(circle closest-corner at center calc(100% - 1px), @accent 100%, transparent 0%) 0 0 2/0 0 2px; + background-color: transparent; +} + +.raven .raven-header.bottom { + border-top: 1px solid @fg_rgba_02; +} + +.raven stack .raven-header { + margin-top: -6px; +} + +.raven stack scrolledwindow .raven-header { + margin-top: -8px; +} + +.raven .expander-button { + border-radius: 9999px; +} + +.raven .raven-background stackswitcher.linked>button { + margin: -2px 8px 9px; + padding: 0 12px; + min-height: 32px; + border-radius: 9999px; + color: @fg_rgba_07; + font-weight: normal; + box-shadow: none; + background-color: rgba(158, 158, 158, 0.08); +} + +.raven .raven-background stackswitcher.linked>button:drop(active), +.raven .raven-background stackswitcher.linked>button:hover { + box-shadow: none; + background-color: rgba(158, 158, 158, 0.1536); +} + +.raven .raven-background stackswitcher.linked>button:focus { + box-shadow: none; + background-color: rgba(158, 158, 158, 0.1536); +} + +.raven .raven-background stackswitcher.linked>button:active { + box-shadow: none; + background-image: radial-gradient(circle, rgba(158, 158, 158, 0.12) 10%, transparent 0%); +} + +.raven .raven-background stackswitcher.linked>button:checked { + color: @accent; + box-shadow: none; + background-color: @accent_rgba_015; +} + +.raven .raven-background stackswitcher.linked>button:checked:drop(active), +.raven .raven-background stackswitcher.linked>button:checked:hover { + box-shadow: none; + background-color: rgba(56, 125, 183, 0.2608); +} + +.raven .raven-background stackswitcher.linked>button:checked:focus { + box-shadow: none; + background-color: rgba(56, 125, 183, 0.2608); +} + +.raven .raven-background stackswitcher.linked>button:checked:active { + box-shadow: none; + background-image: radial-gradient(circle, @accent_rgba_015 10%, transparent 0%); +} + +.raven .raven-background stackswitcher.linked>button:not(:first-child) { + margin-left: 0; +} + +.raven .raven-background>overlay>widget>image { + color: rgba(158, 158, 158, 0.08); +} + +.raven revealer>.raven-background { + border-bottom: 1px solid @fg_rgba_02; +} + +.raven .raven-header+.raven-background { + border-top: 1px solid @fg_rgba_02; +} + +.raven viewport.frame>list>row { + padding: 0; + box-shadow: none; + background: none; +} + +.raven viewport.frame>list>row:not(:first-child) { + border-top: 1px solid @fg_rgba_02; +} + +.raven viewport.frame>list>row>box { + margin-top: -5px; + margin-left: -5px; + margin-bottom: -5px; +} + +.raven viewport.frame>list>row>box>box { + padding: 6px; + margin-bottom: -10px; +} + +.raven viewport.frame>list>row>box>list>row { + padding: 8px; +} + +.raven viewport.frame>list>row>box>list>row>box { + margin-bottom: -5px; +} + +.raven viewport.frame>list>row>box>list>row>box>box>label { + font-weight: bold; +} + +.raven viewport.frame>list>row>box>list>row>box>box>button.image-button { + padding: 0; +} + +.raven viewport.frame>list>row>box>list>row>box>label { + margin-top: -6px; + font-size: smaller; +} + +.raven .powerstrip button { + margin: 2px 0 1px; + padding: 8px; +} + +.raven .option-subtitle { + font-size: smaller; +} + +calendar.raven-calendar { + border-style: none; + background-color: transparent; +} + +calendar.raven-calendar:selected { + border-radius: 2px; + background-color: @accent_rgba_03; +} + +.raven-mpris { + background-color: @bg_accent_rgba_06; + color: @fg_accent; +} + +.raven-mpris label { + min-height: 24px; +} + +.raven-mpris button.image-button { + padding: 8px; + color: @fg_accent_rgba_07; + box-shadow: none; + background-color: transparent; +} + +.raven-mpris button.image-button:drop(active), +.raven-mpris button.image-button:hover { + box-shadow: none; + background-color: rgba(255, 255, 255, 0.08); +} + +.raven-mpris button.image-button:focus { + box-shadow: none; + background-color: rgba(255, 255, 255, 0.08); +} + +.raven-mpris button.image-button:active { + box-shadow: none; + background-image: radial-gradient(circle, rgba(255, 255, 255, 0.12) 10%, transparent 0%); +} + +.budgie-notification-window, +.budgie-switcher-window, +.budgie-osd-window { + background-color: transparent; +} + +.budgie-notification .notification-title, +.budgie-switcher .notification-title { + font-size: 120%; +} + +.budgie-notification .notification-body, +.budgie-switcher .notification-body { + color: @fg_rgba_07; +} + +.budgie-osd .budgie-osd-text { + font-size: 120%; +} + +.drop-shadow { + margin: 5px 9px; + padding: 3px; + border-radius: 2px; + box-shadow: 0 2px 2.4px -1px rgba(0, 0, 0, 0.2), 0 4px 3px 0 rgba(0, 0, 0, 0.14), 0 1px 6px 0 @bg_accent_rgba_015, inset 0 1px rgba(255, 255, 255, 0.05); + background-color: #141416; +} + +.drop-shadow button.text-button:not(:disabled) { + color: @accent; + box-shadow: none; + background-color: transparent; +} + +.drop-shadow button.text-button:not(:disabled):drop(active), +.drop-shadow button.text-button:not(:disabled):hover { + box-shadow: none; + background-color: @accent_rgba_011; +} + +.drop-shadow button.text-button:not(:disabled):focus { + box-shadow: none; + background-color: @accent_rgba_011; +} + +.drop-shadow button.text-button:not(:disabled):active { + box-shadow: none; + background-image: radial-gradient(circle, @accent_rgba_015 10%, transparent 0%); +} + +.drop-shadow .linked>button { + margin-right: 4px; +} + +.budgie-run-dialog, +.budgie-polkit-dialog, +.budgie-session-dialog { + border-radius: 2px; + box-shadow: inset 0 1px rgba(255, 255, 255, 0.05); + background-color: #141416; +} + +.budgie-run-dialog decoration, +.budgie-polkit-dialog decoration, +.budgie-session-dialog decoration { + border-radius: 2px; +} + +.budgie-session-dialog>box { + padding: 8px; +} + +.budgie-session-dialog image { + margin: -8px; + -gtk-icon-transform: scale(0); +} + +.budgie-session-dialog label:not(:last-child), +.budgie-session-dialog .dialog-title { + margin-bottom: 8px; + font-size: 20px; + font-weight: 500; +} + +.budgie-session-dialog .dialog-title+label { + color: @fg_rgba_07; +} + +.budgie-session-dialog .linked.horizontal>button:not(:last-child) { + margin-right: 8px; +} + +.budgie-session-dialog .linked.horizontal>button:not(:disabled) { + color: @accent; + box-shadow: none; + background-color: transparent; +} + +.budgie-session-dialog .linked.horizontal>button:not(:disabled):drop(active), +.budgie-session-dialog .linked.horizontal>button:not(:disabled):hover { + box-shadow: none; + background-color: @accent_rgba_011; +} + +.budgie-session-dialog .linked.horizontal>button:not(:disabled):focus { + box-shadow: none; + background-color: @accent_rgba_011; +} + +.budgie-session-dialog .linked.horizontal>button:not(:disabled):active { + box-shadow: none; + background-image: radial-gradient(circle, @accent_rgba_015 10%, transparent 0%); +} + +.budgie-polkit-dialog .message { + color: @fg_rgba_07; +} + +.budgie-polkit-dialog .failure { + color: #f44336; +} + +.budgie-run-dialog entry.search { + font-size: 120%; + padding: 4px 12px; + border-image: none; + box-shadow: none; + background-color: transparent; +} + +.budgie-run-dialog list { + padding: 4px 0; +} + +.budgie-run-dialog list .dim-label { + color: inherit; +} + +.budgie-run-dialog scrolledwindow { + border-top: 1px solid @fg_rgba_02; +} + +.budgie-run-dialog scrollbar.right, +.budgie-run-dialog scrollbar.bottom { + border-bottom-right-radius: 2px; +} + +.budgie-run-dialog scrollbar.left, +.budgie-run-dialog scrollbar.bottom { + border-bottom-left-radius: 2px; +} + +/** + * Xfce4 Apps + */ +/** + * xfce4-panel + */ +.xfce4-panel.background { + border: none; + background-color: @bg_accent000; + color: @inactive_rgba_07; + font-weight: 500; +} + +.xfce4-panel.background button { + min-height: 16px; + min-width: 16px; + padding: 0; + border-radius: 0; + color: @inactive_rgba_07; + box-shadow: none; + background-color: transparent; +} + +.xfce4-panel.background button:drop(active), +.xfce4-panel.background button:hover { + box-shadow: none; + background-color: rgba(128, 134, 139, 0.08); +} + +.xfce4-panel.background button:focus { + box-shadow: none; + background-color: rgba(128, 134, 139, 0.08); +} + +.xfce4-panel.background button:active { + box-shadow: none; + background-image: radial-gradient(circle, rgba(128, 134, 139, 0.12) 10%, transparent 0%); +} + +.xfce4-panel.background button:disabled { + background-color: transparent; + color: @inactive_rgba_03; +} + +.xfce4-panel.background button:checked { + color: @inactive; + box-shadow: none; + background-color: rgba(128, 134, 139, 0.12); +} + +.xfce4-panel.background button:checked:drop(active), +.xfce4-panel.background button:checked:hover { + box-shadow: none; + background-color: rgba(128, 134, 139, 0.1904); +} + +.xfce4-panel.background button:checked:focus { + box-shadow: none; + background-color: rgba(128, 134, 139, 0.1904); +} + +.xfce4-panel.background button:checked:active { + box-shadow: none; + background-image: radial-gradient(circle, rgba(128, 134, 139, 0.12) 10%, transparent 0%); +} + +.xfce4-panel.background button:checked:disabled { + background-color: rgba(128, 134, 139, 0.12); + color: @inactive_rgba_05; +} + +.xfce4-panel.background .tasklist button { + border-image: image(transparent) 0 0 2/0 0 2px; +} + +.xfce4-panel.background .tasklist button:checked { + border-image: image(currentcolor) 0 0 2/0 0 2px; +} + +.xfce4-panel.background .tasklist button image { + padding: 4px; +} + +.xfce4-panel.background frame>border { + border-style: none; + background-color: transparent; +} + +.xfce4-panel.background progressbar progress { + background-color: @accent; +} + +.xfce4-panel.background progressbar trough { + background-color: @inactive_rgba_02; +} + +wnck-pager:hover { + background-color: rgba(128, 134, 139, 0.08); +} + +wnck-pager:active { + background-color: rgba(128, 134, 139, 0.12); +} + +wnck-pager:selected { + background-color: @accent; +} + +XfdesktopIconView.view { + border-radius: 2px; + color: @fg_accent; + text-shadow: 0 1px 1px rgba(0, 0, 0, 0.2), 0 1px 2px rgba(0, 0, 0, 0.14), 0 1px 3px @bg_accent_rgba_015; +} + +XfdesktopIconView.view:active { + box-shadow: none; + background-color: @accent_rgba_03; +} + +XfdesktopIconView.view .rubberband { + border-radius: 0; +} + +#XfceNotifyWindow { + border-radius: 2px; + box-shadow: 0 2px 2.4px -1px rgba(0, 0, 0, 0.2), 0 4px 3px 0 rgba(0, 0, 0, 0.14), 0 1px 6px 0 @bg_accent_rgba_015, inset 0 1px rgba(255, 255, 255, 0.05); + background-color: #141416; + color: @fg; +} + +#XfceNotifyWindow buttonbox button:not(:disabled) { + color: @accent; + box-shadow: none; + background-color: transparent; +} + +#XfceNotifyWindow buttonbox button:not(:disabled):drop(active), +#XfceNotifyWindow buttonbox button:not(:disabled):hover { + box-shadow: none; + background-color: @accent_rgba_011; +} + +#XfceNotifyWindow buttonbox button:not(:disabled):focus { + box-shadow: none; + background-color: @accent_rgba_011; +} + +#XfceNotifyWindow buttonbox button:not(:disabled):active { + box-shadow: none; + background-image: radial-gradient(circle, @accent_rgba_015 10%, transparent 0%); +} + +#XfceNotifyWindow label#summary { + font-weight: bold; +} + +#XfceNotifyWindow label#summary+label { + color: @fg_rgba_07; +} + +#xfwm-tabwin { + padding: 12px; + border-radius: 2px; + -XfwmTabwinWidget-icon-size: 64px; + -XfwmTabwinWidget-preview-size: 64px; +} + +/** + * Thunar + */ +.thunar #location-toolbar { + border-bottom: 1px solid @fg_rgba_02; +} + +.thunar #location-toolbar>toolitem>button { + min-width: 24px; + padding: 4px; + border-radius: 9999px; +} + +.thunar .shortcuts-pane.frame, +.thunar .standard-view.frame { + border-width: 0; + background-color: transparent; +} + +.thunar statusbar { + margin: 0 -10px; + padding: 0 4px; + border-top: 1px solid @fg_rgba_02; +} + +/** + * LightDM GTK+ Greeter + */ +#panel_window { + background-color: @bg_accent_rgba_03; + color: @fg_accent; +} + +#panel_window menubar, +#panel_window separator { + background-color: transparent; +} + +#panel_window separator { + padding: 0 4px; +} + +#panel_window separator:first-child { + padding: 0 8px; +} + +#panel_window menubar>menuitem { + color: @fg_accent_rgba_07; +} + +#panel_window menubar>menuitem:hover { + background-color: rgba(255, 255, 255, 0.12); + color: @fg_accent; +} + +#panel_window menubar>menuitem:disabled { + color: @fg_accent_rgba_03; +} + +#login_window, +#shutdown_dialog, +#restart_dialog { + margin: 8px; + border-radius: 2px; + box-shadow: 0 3px 3px -1px rgba(0, 0, 0, 0.2), 0 6px 6px 0 rgba(0, 0, 0, 0.14), 0 1px 10.8px 0 @bg_accent_rgba_015, inset 0 1px rgba(255, 255, 255, 0.05); + background-color: #141416; + color: @fg; +} + +#content_frame { + padding-bottom: 16px; +} + +#buttonbox_frame { + padding-top: 24px; +} + +#buttonbox_frame>box, +#buttonbox_frame>buttonbox { + margin: -16px; +} + +#buttonbox_frame button:not(:disabled) { + color: @accent; + box-shadow: none; + background-color: transparent; +} + +#buttonbox_frame button:not(:disabled):drop(active), +#buttonbox_frame button:not(:disabled):hover { + box-shadow: none; + background-color: @accent_rgba_011; +} + +#buttonbox_frame button:not(:disabled):focus { + box-shadow: none; + background-color: @accent_rgba_011; +} + +#buttonbox_frame button:not(:disabled):active { + box-shadow: none; + background-image: radial-gradient(circle, @accent_rgba_015 10%, transparent 0%); +} + +/** + * Nemo + */ +.nemo-window .primary-toolbar { + border-bottom: 1px solid @fg_rgba_02; +} + +.nemo-window .primary-toolbar stack>box { + margin: -2px; +} + +.nemo-window .primary-toolbar button.text-button { + padding-left: 8px; + padding-right: 8px; +} + +.nemo-window .primary-toolbar button:not(.text-button):not(.image-button) { + padding-left: 4px; + padding-right: 4px; +} + +.nemo-window scrolledwindow.frame { + border-style: none; + background-color: transparent; +} + +.nemo-window .nemo-window-pane widget.entry { + border-radius: 2px; + background-color: rgba(158, 158, 158, 0.04); +} + +.nemo-window .nemo-window-pane widget.entry:selected { + background-color: @accent_rgba_03; +} + +.places-treeview { + -NemoPlacesTreeView-disk-full-bg-color: #2c2c2d; + -NemoPlacesTreeView-disk-full-fg-color: @accent; + -NemoPlacesTreeView-disk-full-bar-width: 2px; + -NemoPlacesTreeView-disk-full-bar-radius: 0; + -NemoPlacesTreeView-disk-full-bottom-padding: 1px; + -NemoPlacesTreeView-disk-full-max-length: 80px; +} + +/* GTK NAMED COLORS + ---------------- + use responsibly! */ +/* +widget text/foreground color */ +@define-color theme_fg_color @fg; +/* +text color for entries, views and content in general */ +@define-color theme_text_color @fg; +/* +widget base background color */ +@define-color theme_bg_color @bg; +/* +text widgets and the like base background color */ +@define-color theme_base_color #1a1c1e; +/* +base background color of selections */ +@define-color theme_selected_bg_color @accent; +/* +text/foreground color of selections */ +@define-color theme_selected_fg_color @fg_accent; +/* +base background color of insensitive widgets */ +@define-color insensitive_bg_color @bg; +/* +text foreground color of insensitive widgets */ +@define-color insensitive_fg_color @fg_rgba_05; +/* +insensitive text widgets and the like base background color */ +@define-color insensitive_base_color #1a1c1e; +/* +widget text/foreground color on backdrop windows */ +@define-color theme_unfocused_fg_color @fg; +/* +text color for entries, views and content in general on backdrop windows */ +@define-color theme_unfocused_text_color @fg; +/* +widget base background color on backdrop windows */ +@define-color theme_unfocused_bg_color @bg; +/* +text widgets and the like base background color on backdrop windows */ +@define-color theme_unfocused_base_color #1a1c1e; +/* +base background color of selections on backdrop windows */ +@define-color theme_unfocused_selected_bg_color @accent; +/* +text/foreground color of selections on backdrop windows */ +@define-color theme_unfocused_selected_fg_color @fg_accent; +/* +insensitive color on backdrop windows */ +@define-color unfocused_insensitive_color @fg_rgba_05; +/* +widgets main borders color */ +@define-color borders @fg_rgba_02; +/* +widgets main borders color on backdrop windows */ +@define-color unfocused_borders @fg_rgba_02; +/* +these are pretty self explicative */ +@define-color warning_color #ffeb3b; +@define-color error_color #f44336; +@define-color success_color #00e676; +/* +these colors are exported for the window manager and shouldn't be used in applications, +read if you used those and something break with a version upgrade you're on your own... */ +@define-color wm_title @inactive; +@define-color wm_unfocused_title @inactive_rgba_07; +@define-color wm_highlight rgba(255, 255, 255, 0.05); +@define-color wm_bg #09090a; +@define-color wm_unfocused_bg @bg_accent000; +@define-color xfwm4_title @inactive; +@define-color xfwm4_unfocused_title #5a5e61; +/* content view background such as thumbnails view in Photos or Boxes */ +@define-color content_view_bg @bg; +/* Very contrasty background for text views (@theme_text_color foreground) */ +@define-color text_view_bg @bg; +/* placeholder for entries */ +@define-color placeholder_text_color #767778; diff --git a/gtk-theme/dist/gtk-3.0/icons/checkbox-checked-symbolic.svg b/gtk-theme/dist/gtk-3.0/icons/checkbox-checked-symbolic.svg new file mode 100644 index 0000000..8067c11 --- /dev/null +++ b/gtk-theme/dist/gtk-3.0/icons/checkbox-checked-symbolic.svg @@ -0,0 +1,3 @@ + + + diff --git a/gtk-theme/dist/gtk-3.0/icons/checkbox-mixed-symbolic.svg b/gtk-theme/dist/gtk-3.0/icons/checkbox-mixed-symbolic.svg new file mode 100644 index 0000000..76e69c9 --- /dev/null +++ b/gtk-theme/dist/gtk-3.0/icons/checkbox-mixed-symbolic.svg @@ -0,0 +1,3 @@ + + + diff --git a/gtk-theme/dist/gtk-3.0/icons/checkbox-unchecked-symbolic.svg b/gtk-theme/dist/gtk-3.0/icons/checkbox-unchecked-symbolic.svg new file mode 100644 index 0000000..97dbb89 --- /dev/null +++ b/gtk-theme/dist/gtk-3.0/icons/checkbox-unchecked-symbolic.svg @@ -0,0 +1,3 @@ + + + diff --git a/gtk-theme/dist/gtk-3.0/icons/cursor-handle-symbolic.svg b/gtk-theme/dist/gtk-3.0/icons/cursor-handle-symbolic.svg new file mode 100644 index 0000000..e2a252b --- /dev/null +++ b/gtk-theme/dist/gtk-3.0/icons/cursor-handle-symbolic.svg @@ -0,0 +1,3 @@ + + + diff --git a/gtk-theme/dist/gtk-3.0/icons/radio-checked-symbolic.svg b/gtk-theme/dist/gtk-3.0/icons/radio-checked-symbolic.svg new file mode 100644 index 0000000..7b82c3d --- /dev/null +++ b/gtk-theme/dist/gtk-3.0/icons/radio-checked-symbolic.svg @@ -0,0 +1,3 @@ + + + diff --git a/gtk-theme/dist/gtk-3.0/icons/radio-mixed-symbolic.svg b/gtk-theme/dist/gtk-3.0/icons/radio-mixed-symbolic.svg new file mode 100644 index 0000000..55d8916 --- /dev/null +++ b/gtk-theme/dist/gtk-3.0/icons/radio-mixed-symbolic.svg @@ -0,0 +1,3 @@ + + + diff --git a/gtk-theme/dist/gtk-3.0/icons/radio-unchecked-symbolic.svg b/gtk-theme/dist/gtk-3.0/icons/radio-unchecked-symbolic.svg new file mode 100644 index 0000000..6d97559 --- /dev/null +++ b/gtk-theme/dist/gtk-3.0/icons/radio-unchecked-symbolic.svg @@ -0,0 +1,3 @@ + + + diff --git a/gtk-theme/dist/gtk-3.0/icons/small-checkbox-checked-symbolic.svg b/gtk-theme/dist/gtk-3.0/icons/small-checkbox-checked-symbolic.svg new file mode 100644 index 0000000..7ad27d5 --- /dev/null +++ b/gtk-theme/dist/gtk-3.0/icons/small-checkbox-checked-symbolic.svg @@ -0,0 +1,3 @@ + + + diff --git a/gtk-theme/dist/gtk-3.0/icons/small-checkbox-mixed-symbolic.svg b/gtk-theme/dist/gtk-3.0/icons/small-checkbox-mixed-symbolic.svg new file mode 100644 index 0000000..0f80850 --- /dev/null +++ b/gtk-theme/dist/gtk-3.0/icons/small-checkbox-mixed-symbolic.svg @@ -0,0 +1,3 @@ + + + diff --git a/gtk-theme/dist/gtk-3.0/icons/small-checkbox-unchecked-symbolic.svg b/gtk-theme/dist/gtk-3.0/icons/small-checkbox-unchecked-symbolic.svg new file mode 100644 index 0000000..bfe0a56 --- /dev/null +++ b/gtk-theme/dist/gtk-3.0/icons/small-checkbox-unchecked-symbolic.svg @@ -0,0 +1,3 @@ + + + diff --git a/gtk-theme/dist/gtk-3.0/icons/small-radio-checked-symbolic.svg b/gtk-theme/dist/gtk-3.0/icons/small-radio-checked-symbolic.svg new file mode 100644 index 0000000..04a9a21 --- /dev/null +++ b/gtk-theme/dist/gtk-3.0/icons/small-radio-checked-symbolic.svg @@ -0,0 +1,3 @@ + + + diff --git a/gtk-theme/dist/gtk-3.0/icons/small-radio-mixed-symbolic.svg b/gtk-theme/dist/gtk-3.0/icons/small-radio-mixed-symbolic.svg new file mode 100644 index 0000000..31aac91 --- /dev/null +++ b/gtk-theme/dist/gtk-3.0/icons/small-radio-mixed-symbolic.svg @@ -0,0 +1,3 @@ + + + diff --git a/gtk-theme/dist/gtk-3.0/icons/small-radio-unchecked-symbolic.svg b/gtk-theme/dist/gtk-3.0/icons/small-radio-unchecked-symbolic.svg new file mode 100644 index 0000000..f870381 --- /dev/null +++ b/gtk-theme/dist/gtk-3.0/icons/small-radio-unchecked-symbolic.svg @@ -0,0 +1,3 @@ + + + diff --git a/gtk-theme/dist/gtk-4.0/assets/scale-horz-marks-after-slider-dark.png b/gtk-theme/dist/gtk-4.0/assets/scale-horz-marks-after-slider-dark.png new file mode 100644 index 0000000..5f3b9f3 Binary files /dev/null and b/gtk-theme/dist/gtk-4.0/assets/scale-horz-marks-after-slider-dark.png differ diff --git a/gtk-theme/dist/gtk-4.0/assets/scale-horz-marks-after-slider-dark@2.png b/gtk-theme/dist/gtk-4.0/assets/scale-horz-marks-after-slider-dark@2.png new file mode 100644 index 0000000..bb1bff9 Binary files /dev/null and b/gtk-theme/dist/gtk-4.0/assets/scale-horz-marks-after-slider-dark@2.png differ diff --git a/gtk-theme/dist/gtk-4.0/assets/scale-horz-marks-after-slider-disabled-dark.png b/gtk-theme/dist/gtk-4.0/assets/scale-horz-marks-after-slider-disabled-dark.png new file mode 100644 index 0000000..b911ab1 Binary files /dev/null and b/gtk-theme/dist/gtk-4.0/assets/scale-horz-marks-after-slider-disabled-dark.png differ diff --git a/gtk-theme/dist/gtk-4.0/assets/scale-horz-marks-after-slider-disabled-dark@2.png b/gtk-theme/dist/gtk-4.0/assets/scale-horz-marks-after-slider-disabled-dark@2.png new file mode 100644 index 0000000..1ae692f Binary files /dev/null and b/gtk-theme/dist/gtk-4.0/assets/scale-horz-marks-after-slider-disabled-dark@2.png differ diff --git a/gtk-theme/dist/gtk-4.0/assets/scale-horz-marks-after-slider-disabled.png b/gtk-theme/dist/gtk-4.0/assets/scale-horz-marks-after-slider-disabled.png new file mode 100644 index 0000000..f45ca31 Binary files /dev/null and b/gtk-theme/dist/gtk-4.0/assets/scale-horz-marks-after-slider-disabled.png differ diff --git a/gtk-theme/dist/gtk-4.0/assets/scale-horz-marks-after-slider-disabled@2.png b/gtk-theme/dist/gtk-4.0/assets/scale-horz-marks-after-slider-disabled@2.png new file mode 100644 index 0000000..ed5ccf4 Binary files /dev/null and b/gtk-theme/dist/gtk-4.0/assets/scale-horz-marks-after-slider-disabled@2.png differ diff --git a/gtk-theme/dist/gtk-4.0/assets/scale-horz-marks-after-slider.png b/gtk-theme/dist/gtk-4.0/assets/scale-horz-marks-after-slider.png new file mode 100644 index 0000000..31c4902 Binary files /dev/null and b/gtk-theme/dist/gtk-4.0/assets/scale-horz-marks-after-slider.png differ diff --git a/gtk-theme/dist/gtk-4.0/assets/scale-horz-marks-after-slider@2.png b/gtk-theme/dist/gtk-4.0/assets/scale-horz-marks-after-slider@2.png new file mode 100644 index 0000000..dd48d78 Binary files /dev/null and b/gtk-theme/dist/gtk-4.0/assets/scale-horz-marks-after-slider@2.png differ diff --git a/gtk-theme/dist/gtk-4.0/assets/scale-horz-marks-before-slider-dark.png b/gtk-theme/dist/gtk-4.0/assets/scale-horz-marks-before-slider-dark.png new file mode 100644 index 0000000..263f4e0 Binary files /dev/null and b/gtk-theme/dist/gtk-4.0/assets/scale-horz-marks-before-slider-dark.png differ diff --git a/gtk-theme/dist/gtk-4.0/assets/scale-horz-marks-before-slider-dark@2.png b/gtk-theme/dist/gtk-4.0/assets/scale-horz-marks-before-slider-dark@2.png new file mode 100644 index 0000000..88311a4 Binary files /dev/null and b/gtk-theme/dist/gtk-4.0/assets/scale-horz-marks-before-slider-dark@2.png differ diff --git a/gtk-theme/dist/gtk-4.0/assets/scale-horz-marks-before-slider-disabled-dark.png b/gtk-theme/dist/gtk-4.0/assets/scale-horz-marks-before-slider-disabled-dark.png new file mode 100644 index 0000000..a0452f1 Binary files /dev/null and b/gtk-theme/dist/gtk-4.0/assets/scale-horz-marks-before-slider-disabled-dark.png differ diff --git a/gtk-theme/dist/gtk-4.0/assets/scale-horz-marks-before-slider-disabled-dark@2.png b/gtk-theme/dist/gtk-4.0/assets/scale-horz-marks-before-slider-disabled-dark@2.png new file mode 100644 index 0000000..c50691a Binary files /dev/null and b/gtk-theme/dist/gtk-4.0/assets/scale-horz-marks-before-slider-disabled-dark@2.png differ diff --git a/gtk-theme/dist/gtk-4.0/assets/scale-horz-marks-before-slider-disabled.png b/gtk-theme/dist/gtk-4.0/assets/scale-horz-marks-before-slider-disabled.png new file mode 100644 index 0000000..ead0682 Binary files /dev/null and b/gtk-theme/dist/gtk-4.0/assets/scale-horz-marks-before-slider-disabled.png differ diff --git a/gtk-theme/dist/gtk-4.0/assets/scale-horz-marks-before-slider-disabled@2.png b/gtk-theme/dist/gtk-4.0/assets/scale-horz-marks-before-slider-disabled@2.png new file mode 100644 index 0000000..d56e1fa Binary files /dev/null and b/gtk-theme/dist/gtk-4.0/assets/scale-horz-marks-before-slider-disabled@2.png differ diff --git a/gtk-theme/dist/gtk-4.0/assets/scale-horz-marks-before-slider.png b/gtk-theme/dist/gtk-4.0/assets/scale-horz-marks-before-slider.png new file mode 100644 index 0000000..0799636 Binary files /dev/null and b/gtk-theme/dist/gtk-4.0/assets/scale-horz-marks-before-slider.png differ diff --git a/gtk-theme/dist/gtk-4.0/assets/scale-horz-marks-before-slider@2.png b/gtk-theme/dist/gtk-4.0/assets/scale-horz-marks-before-slider@2.png new file mode 100644 index 0000000..6826ada Binary files /dev/null and b/gtk-theme/dist/gtk-4.0/assets/scale-horz-marks-before-slider@2.png differ diff --git a/gtk-theme/dist/gtk-4.0/assets/scale-slider-dark.png b/gtk-theme/dist/gtk-4.0/assets/scale-slider-dark.png new file mode 100644 index 0000000..73d7b17 Binary files /dev/null and b/gtk-theme/dist/gtk-4.0/assets/scale-slider-dark.png differ diff --git a/gtk-theme/dist/gtk-4.0/assets/scale-slider-dark@2.png b/gtk-theme/dist/gtk-4.0/assets/scale-slider-dark@2.png new file mode 100644 index 0000000..9cb6201 Binary files /dev/null and b/gtk-theme/dist/gtk-4.0/assets/scale-slider-dark@2.png differ diff --git a/gtk-theme/dist/gtk-4.0/assets/scale-slider-disabled-dark.png b/gtk-theme/dist/gtk-4.0/assets/scale-slider-disabled-dark.png new file mode 100644 index 0000000..c84ec15 Binary files /dev/null and b/gtk-theme/dist/gtk-4.0/assets/scale-slider-disabled-dark.png differ diff --git a/gtk-theme/dist/gtk-4.0/assets/scale-slider-disabled-dark@2.png b/gtk-theme/dist/gtk-4.0/assets/scale-slider-disabled-dark@2.png new file mode 100644 index 0000000..f84e161 Binary files /dev/null and b/gtk-theme/dist/gtk-4.0/assets/scale-slider-disabled-dark@2.png differ diff --git a/gtk-theme/dist/gtk-4.0/assets/scale-slider-disabled.png b/gtk-theme/dist/gtk-4.0/assets/scale-slider-disabled.png new file mode 100644 index 0000000..9ad3045 Binary files /dev/null and b/gtk-theme/dist/gtk-4.0/assets/scale-slider-disabled.png differ diff --git a/gtk-theme/dist/gtk-4.0/assets/scale-slider-disabled@2.png b/gtk-theme/dist/gtk-4.0/assets/scale-slider-disabled@2.png new file mode 100644 index 0000000..4a836b3 Binary files /dev/null and b/gtk-theme/dist/gtk-4.0/assets/scale-slider-disabled@2.png differ diff --git a/gtk-theme/dist/gtk-4.0/assets/scale-slider.png b/gtk-theme/dist/gtk-4.0/assets/scale-slider.png new file mode 100644 index 0000000..870df4b Binary files /dev/null and b/gtk-theme/dist/gtk-4.0/assets/scale-slider.png differ diff --git a/gtk-theme/dist/gtk-4.0/assets/scale-slider@2.png b/gtk-theme/dist/gtk-4.0/assets/scale-slider@2.png new file mode 100644 index 0000000..49578aa Binary files /dev/null and b/gtk-theme/dist/gtk-4.0/assets/scale-slider@2.png differ diff --git a/gtk-theme/dist/gtk-4.0/assets/scale-vert-marks-after-slider-dark.png b/gtk-theme/dist/gtk-4.0/assets/scale-vert-marks-after-slider-dark.png new file mode 100644 index 0000000..76b3f00 Binary files /dev/null and b/gtk-theme/dist/gtk-4.0/assets/scale-vert-marks-after-slider-dark.png differ diff --git a/gtk-theme/dist/gtk-4.0/assets/scale-vert-marks-after-slider-dark@2.png b/gtk-theme/dist/gtk-4.0/assets/scale-vert-marks-after-slider-dark@2.png new file mode 100644 index 0000000..f292e2e Binary files /dev/null and b/gtk-theme/dist/gtk-4.0/assets/scale-vert-marks-after-slider-dark@2.png differ diff --git a/gtk-theme/dist/gtk-4.0/assets/scale-vert-marks-after-slider-disabled-dark.png b/gtk-theme/dist/gtk-4.0/assets/scale-vert-marks-after-slider-disabled-dark.png new file mode 100644 index 0000000..080770e Binary files /dev/null and b/gtk-theme/dist/gtk-4.0/assets/scale-vert-marks-after-slider-disabled-dark.png differ diff --git a/gtk-theme/dist/gtk-4.0/assets/scale-vert-marks-after-slider-disabled-dark@2.png b/gtk-theme/dist/gtk-4.0/assets/scale-vert-marks-after-slider-disabled-dark@2.png new file mode 100644 index 0000000..de79037 Binary files /dev/null and b/gtk-theme/dist/gtk-4.0/assets/scale-vert-marks-after-slider-disabled-dark@2.png differ diff --git a/gtk-theme/dist/gtk-4.0/assets/scale-vert-marks-after-slider-disabled.png b/gtk-theme/dist/gtk-4.0/assets/scale-vert-marks-after-slider-disabled.png new file mode 100644 index 0000000..71d1eff Binary files /dev/null and b/gtk-theme/dist/gtk-4.0/assets/scale-vert-marks-after-slider-disabled.png differ diff --git a/gtk-theme/dist/gtk-4.0/assets/scale-vert-marks-after-slider-disabled@2.png b/gtk-theme/dist/gtk-4.0/assets/scale-vert-marks-after-slider-disabled@2.png new file mode 100644 index 0000000..3f66c32 Binary files /dev/null and b/gtk-theme/dist/gtk-4.0/assets/scale-vert-marks-after-slider-disabled@2.png differ diff --git a/gtk-theme/dist/gtk-4.0/assets/scale-vert-marks-after-slider.png b/gtk-theme/dist/gtk-4.0/assets/scale-vert-marks-after-slider.png new file mode 100644 index 0000000..afedbf0 Binary files /dev/null and b/gtk-theme/dist/gtk-4.0/assets/scale-vert-marks-after-slider.png differ diff --git a/gtk-theme/dist/gtk-4.0/assets/scale-vert-marks-after-slider@2.png b/gtk-theme/dist/gtk-4.0/assets/scale-vert-marks-after-slider@2.png new file mode 100644 index 0000000..fe406cf Binary files /dev/null and b/gtk-theme/dist/gtk-4.0/assets/scale-vert-marks-after-slider@2.png differ diff --git a/gtk-theme/dist/gtk-4.0/assets/scale-vert-marks-before-slider-dark.png b/gtk-theme/dist/gtk-4.0/assets/scale-vert-marks-before-slider-dark.png new file mode 100644 index 0000000..88fc888 Binary files /dev/null and b/gtk-theme/dist/gtk-4.0/assets/scale-vert-marks-before-slider-dark.png differ diff --git a/gtk-theme/dist/gtk-4.0/assets/scale-vert-marks-before-slider-dark@2.png b/gtk-theme/dist/gtk-4.0/assets/scale-vert-marks-before-slider-dark@2.png new file mode 100644 index 0000000..6275b1c Binary files /dev/null and b/gtk-theme/dist/gtk-4.0/assets/scale-vert-marks-before-slider-dark@2.png differ diff --git a/gtk-theme/dist/gtk-4.0/assets/scale-vert-marks-before-slider-disabled-dark.png b/gtk-theme/dist/gtk-4.0/assets/scale-vert-marks-before-slider-disabled-dark.png new file mode 100644 index 0000000..0eb02cf Binary files /dev/null and b/gtk-theme/dist/gtk-4.0/assets/scale-vert-marks-before-slider-disabled-dark.png differ diff --git a/gtk-theme/dist/gtk-4.0/assets/scale-vert-marks-before-slider-disabled-dark@2.png b/gtk-theme/dist/gtk-4.0/assets/scale-vert-marks-before-slider-disabled-dark@2.png new file mode 100644 index 0000000..8e07d09 Binary files /dev/null and b/gtk-theme/dist/gtk-4.0/assets/scale-vert-marks-before-slider-disabled-dark@2.png differ diff --git a/gtk-theme/dist/gtk-4.0/assets/scale-vert-marks-before-slider-disabled.png b/gtk-theme/dist/gtk-4.0/assets/scale-vert-marks-before-slider-disabled.png new file mode 100644 index 0000000..9d9570e Binary files /dev/null and b/gtk-theme/dist/gtk-4.0/assets/scale-vert-marks-before-slider-disabled.png differ diff --git a/gtk-theme/dist/gtk-4.0/assets/scale-vert-marks-before-slider-disabled@2.png b/gtk-theme/dist/gtk-4.0/assets/scale-vert-marks-before-slider-disabled@2.png new file mode 100644 index 0000000..0a1bcb8 Binary files /dev/null and b/gtk-theme/dist/gtk-4.0/assets/scale-vert-marks-before-slider-disabled@2.png differ diff --git a/gtk-theme/dist/gtk-4.0/assets/scale-vert-marks-before-slider.png b/gtk-theme/dist/gtk-4.0/assets/scale-vert-marks-before-slider.png new file mode 100644 index 0000000..0c165af Binary files /dev/null and b/gtk-theme/dist/gtk-4.0/assets/scale-vert-marks-before-slider.png differ diff --git a/gtk-theme/dist/gtk-4.0/assets/scale-vert-marks-before-slider@2.png b/gtk-theme/dist/gtk-4.0/assets/scale-vert-marks-before-slider@2.png new file mode 100644 index 0000000..79ed0ec Binary files /dev/null and b/gtk-theme/dist/gtk-4.0/assets/scale-vert-marks-before-slider@2.png differ diff --git a/gtk-theme/dist/gtk-4.0/assets/selectionmode-checkbox-checked-dark.png b/gtk-theme/dist/gtk-4.0/assets/selectionmode-checkbox-checked-dark.png new file mode 100644 index 0000000..dc8a047 Binary files /dev/null and b/gtk-theme/dist/gtk-4.0/assets/selectionmode-checkbox-checked-dark.png differ diff --git a/gtk-theme/dist/gtk-4.0/assets/selectionmode-checkbox-checked-dark@2.png b/gtk-theme/dist/gtk-4.0/assets/selectionmode-checkbox-checked-dark@2.png new file mode 100644 index 0000000..9e043af Binary files /dev/null and b/gtk-theme/dist/gtk-4.0/assets/selectionmode-checkbox-checked-dark@2.png differ diff --git a/gtk-theme/dist/gtk-4.0/assets/selectionmode-checkbox-checked.png b/gtk-theme/dist/gtk-4.0/assets/selectionmode-checkbox-checked.png new file mode 100644 index 0000000..90df2a7 Binary files /dev/null and b/gtk-theme/dist/gtk-4.0/assets/selectionmode-checkbox-checked.png differ diff --git a/gtk-theme/dist/gtk-4.0/assets/selectionmode-checkbox-checked@2.png b/gtk-theme/dist/gtk-4.0/assets/selectionmode-checkbox-checked@2.png new file mode 100644 index 0000000..007e28e Binary files /dev/null and b/gtk-theme/dist/gtk-4.0/assets/selectionmode-checkbox-checked@2.png differ diff --git a/gtk-theme/dist/gtk-4.0/assets/selectionmode-checkbox-unchecked-dark.png b/gtk-theme/dist/gtk-4.0/assets/selectionmode-checkbox-unchecked-dark.png new file mode 100644 index 0000000..54de797 Binary files /dev/null and b/gtk-theme/dist/gtk-4.0/assets/selectionmode-checkbox-unchecked-dark.png differ diff --git a/gtk-theme/dist/gtk-4.0/assets/selectionmode-checkbox-unchecked-dark@2.png b/gtk-theme/dist/gtk-4.0/assets/selectionmode-checkbox-unchecked-dark@2.png new file mode 100644 index 0000000..9cec4dc Binary files /dev/null and b/gtk-theme/dist/gtk-4.0/assets/selectionmode-checkbox-unchecked-dark@2.png differ diff --git a/gtk-theme/dist/gtk-4.0/assets/selectionmode-checkbox-unchecked.png b/gtk-theme/dist/gtk-4.0/assets/selectionmode-checkbox-unchecked.png new file mode 100644 index 0000000..0263623 Binary files /dev/null and b/gtk-theme/dist/gtk-4.0/assets/selectionmode-checkbox-unchecked.png differ diff --git a/gtk-theme/dist/gtk-4.0/assets/selectionmode-checkbox-unchecked@2.png b/gtk-theme/dist/gtk-4.0/assets/selectionmode-checkbox-unchecked@2.png new file mode 100644 index 0000000..af5b395 Binary files /dev/null and b/gtk-theme/dist/gtk-4.0/assets/selectionmode-checkbox-unchecked@2.png differ diff --git a/gtk-theme/dist/gtk-4.0/gtk.css b/gtk-theme/dist/gtk-4.0/gtk.css new file mode 100644 index 0000000..f7d462d --- /dev/null +++ b/gtk-theme/dist/gtk-4.0/gtk.css @@ -0,0 +1,4570 @@ +@import '../colours.css'; + +/* + * Replace the colours with variable names. See build/util.js for translation + * This CSS file here is from Material-Black-Blueberry + */ + +@keyframes ripple { + to { + background-size: 1000% 1000%; + } +} + +@keyframes ripple-on-slider { + to { + background-size: auto, 1000% 1000%; + } +} + +@keyframes ripple-on-headerbar { + from { + background-image: radial-gradient(circle, @accent 0%, transparent 0%); + } + + to { + background-image: radial-gradient(circle, @accent 100%, transparent 100%); + } +} + +flowbox>flowboxchild, +gridview>child, +entry>image, +button, +modelbutton.flat, +spinbutton:not(.vertical)>image, +menubar>item, +notebook>header>tabs>arrow, +notebook>header>tabs>tab, +check, +radio, +row.activatable, +listview>row, +expander, +calendar>grid>label.day-number, +popover.emoji-picker>contents emoji, +popover.emoji-completion>contents emoji-completion-row, +popover.emoji-completion>contents emoji { + transition-property: all, border-image, background-size, background-image; + transition-duration: 75ms, 225ms, 300ms, 1200ms; + transition-timing-function: cubic-bezier(0, 0, 0.2, 1); + background-image: radial-gradient(circle, transparent 10%, transparent 10%); + background-repeat: no-repeat; + background-position: center; + background-size: 1000% 1000%; +} + +flowbox>flowboxchild:active, +gridview>child:active, +entry>image:active, +button:active, +modelbutton.flat:active, +spinbutton:not(.vertical)>image:active, +menubar>item:active, +notebook>header>tabs>arrow:active, +notebook>header>tabs>tab:active, +check:active, +radio:active, +row.activatable:active, +listview>row:active, +expander:active, +calendar>grid>label.day-number:active, +popover.emoji-picker>contents emoji:active, +popover.emoji-completion>contents emoji-completion-row:active, +popover.emoji-completion>contents emoji:active { + transition-duration: 75ms, 225ms, 0ms, 0ms; + animation: ripple 225ms cubic-bezier(0, 0, 0.2, 1) forwards; + background-size: 0% 0%; +} + +/** + * Base States + */ +.background { + background-color: @bg; + color: @fg; +} + +dnd { + color: @fg; +} + +.normal-icons { + -gtk-icon-size: 16px; +} + +.large-icons { + -gtk-icon-size: 32px; +} + +image:disabled { + -gtk-icon-filter: opacity(0.5); +} + +.view>.cell:hover { + background-color: rgba(158, 158, 158, 0.04); +} + +.view:disabled { + color: @fg_rgba_05; +} + +.view:selected { + background-color: @accent_rgba_03; +} + +.view>.cell:selected:hover { + background-color: rgba(56, 125, 183, 0.3744); +} + +textview { + caret-color: @accent; +} + +textview>text>selection { + background-color: @accent_rgba_03; +} + +textview>border { + color: @fg_rgba_07; +} + +iconview>.cell { + border-radius: 2px; +} + +iconview>dndtarget:drop(active) { + box-shadow: inset 0 0 0 2px @accent; +} + +rubberband, +columnview.view>rubberband, +treeview.view>rubberband { + border: 1px solid @accent; + background-color: @accent_rgba_02; +} + +flowbox { + padding: 4px; + border-spacing: 4px; +} + +flowbox>flowboxchild { + padding: 4px; + border-radius: 2px; +} + +flowbox>flowboxchild:drop(active), +flowbox>flowboxchild:hover { + background-color: rgba(158, 158, 158, 0.04); +} + +flowbox>flowboxchild:focus { + background-color: rgba(158, 158, 158, 0.08); +} + +flowbox>flowboxchild:active { + background-image: radial-gradient(circle, rgba(158, 158, 158, 0.12) 10%, transparent 10%); +} + +flowbox>flowboxchild:selected { + background-color: @accent_rgba_03; + background-color: @accent_rgba_03; +} + +flowbox>flowboxchild:selected:drop(active), +flowbox>flowboxchild:selected:hover { + background-color: rgba(56, 125, 183, 0.3744); +} + +flowbox>flowboxchild:selected:focus { + background-color: rgba(56, 125, 183, 0.4016); +} + +flowbox>flowboxchild:selected:active { + background-image: radial-gradient(circle, @accent_rgba_015 10%, transparent 10%); +} + +gridview { + padding: 4px; + border-spacing: 4px; +} + +gridview>child { + padding: 4px; + border-radius: 2px; +} + +gridview>child:drop(active), +gridview>child:hover { + background-color: rgba(158, 158, 158, 0.04); +} + +gridview>child:focus { + background-color: rgba(158, 158, 158, 0.08); +} + +gridview>child:active { + background-image: radial-gradient(circle, rgba(158, 158, 158, 0.12) 10%, transparent 10%); +} + +gridview>child:selected { + background-color: @accent_rgba_03; + background-color: @accent_rgba_03; +} + +gridview>child:selected:drop(active), +gridview>child:selected:hover { + background-color: rgba(56, 125, 183, 0.3744); +} + +gridview>child:selected:focus { + background-color: rgba(56, 125, 183, 0.4016); +} + +gridview>child:selected:active { + background-image: radial-gradient(circle, @accent_rgba_015 10%, transparent 10%); +} + +coverflow>cover { + box-shadow: 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 @bg_accent_rgba_015; + background-color: #141416; + color: @fg; +} + +.content-view .tile:selected { + background-color: transparent; +} + +label { + caret-color: @accent; +} + +label.separator { + color: @fg_rgba_07; +} + +label.error { + color: #f44336; +} + +label>selection { + background-color: @accent_rgba_03; +} + +label:disabled { + color: @fg_rgba_05; +} + +headerbar label:disabled, +modelbutton label:disabled, +tab label:disabled, +button label:disabled { + color: inherit; +} + +label.osd { + border-radius: 2px; + background-color: @bg_inactive; + color: @inactive; +} + +.dim-label { + color: @fg_rgba_07; +} + +window.assistant .sidebar { + padding: 4px 0; +} + +window.assistant .sidebar>label { + min-height: 32px; + padding: 0 12px; + color: @fg_rgba_05; + font-weight: 500; +} + +window.assistant .sidebar>label.highlight { + color: @fg; +} + +window.aboutdialog>box>box>image.large-icons { + -gtk-icon-size: 128px; +} + +/** + * Spinner Animation + */ +@keyframes spin { + to { + transform: rotate(1turn); + } +} + +spinner { + opacity: 0; + color: @accent; + -gtk-icon-source: -gtk-icontheme("process-working-symbolic"); + transition: opacity 300ms cubic-bezier(0, 0, 0.2, 1); + animation: spin 1s linear infinite; +} + +spinner:checked { + opacity: 1; +} + +spinner:disabled { + color: @fg_rgba_03; +} + +/** + * General Typography + */ +.large-title { + font-weight: 400; + font-size: 36pt; +} + +.title-1 { + font-weight: 400; + font-size: 25.5pt; + letter-spacing: 0.1875pt; +} + +.title-2 { + font-weight: 400; + font-size: 18pt; +} + +.title-3 { + font-weight: 500; + font-size: 15pt; + letter-spacing: 0.1125pt; +} + +.title-4 { + font-weight: 400; + font-size: 12pt; + letter-spacing: 0.375pt; +} + +.heading { + font-weight: 500; + font-size: 1em; +} + +.body { + font-weight: 400; + font-size: 1em; +} + +.caption-heading { + font-weight: 500; + font-size: 9pt; + letter-spacing: 1.125pt; +} + +.caption { + font-weight: 400; + font-size: 9pt; + letter-spacing: 0.3pt; +} + +/** + * Text Entries + */ +spinbutton:not(.vertical), +entry { + min-height: 32px; + padding: 0 8px; + border-spacing: 4px; + border-radius: 2px 2px 0 0; + transition: all 75ms cubic-bezier(0, 0, 0.2, 1), border-image 225ms cubic-bezier(0, 0, 0.2, 1); + border-image: radial-gradient(circle closest-corner at center calc(100% - 1px), @accent 0%, transparent 0%) 2/0 0 0px; + box-shadow: inset 0 -1px @fg_rgba_03; + background-color: rgba(158, 158, 158, 0.04); + color: @fg; + caret-color: @accent; +} + +spinbutton:hover:not(.vertical), +spinbutton:drop(active):not(.vertical), +entry:hover, +entry:drop(active) { + box-shadow: inset 0 -1px @fg_rgba_03; + background-color: rgba(158, 158, 158, 0.0784); +} + +spinbutton:focus-within:not(.vertical), +entry:focus-within { + border-image: radial-gradient(circle closest-corner at center calc(100% - 1px), @accent 100%, transparent 100%) 2/0 0 2px; + box-shadow: inset 0 -1px @fg_rgba_03; + background-color: @fg_rgba_01; +} + +spinbutton:focus-within:not(.vertical)>text>placeholder, +entry:focus-within>text>placeholder { + opacity: 0; +} + +spinbutton:disabled:not(.vertical), +entry:disabled { + box-shadow: inset 0 -1px @fg_rgba_02; + background-color: rgba(158, 158, 158, 0.04); + color: @fg_rgba_05; +} + +spinbutton.flat:not(.vertical), +entry.flat { + min-height: 0; + padding: 2px; + border-radius: 0; + background-color: transparent; +} + +spinbutton:not(.vertical)>text>placeholder, +entry>text>placeholder { + color: @fg_rgba_07; +} + +spinbutton:not(.vertical)>text>selection, +entry>text>selection { + background-color: @accent_rgba_03; +} + +spinbutton:not(.vertical)>text>block-cursor, +entry>text>block-cursor { + background-color: @accent; + color: @fg_accent; +} + +spinbutton:not(.vertical)>image, +entry>image { + min-width: 24px; + min-height: 24px; + border-radius: 9999px; + color: @fg_rgba_07; + margin-top: 4px; + margin-bottom: 4px; +} + +spinbutton:not(.vertical)>image:drop(active), +spinbutton:not(.vertical)>image:hover, +entry>image:drop(active), +entry>image:hover { + background-color: rgba(158, 158, 158, 0.08); +} + +spinbutton:not(.vertical)>image:focus, +entry>image:focus { + background-color: rgba(158, 158, 158, 0.08); +} + +spinbutton:not(.vertical)>image:active, +entry>image:active { + background-image: radial-gradient(circle, rgba(158, 158, 158, 0.12) 10%, transparent 10%); +} + +spinbutton:not(.vertical)>image:disabled, +entry>image:disabled { + color: @fg_rgba_05; +} + +spinbutton:not(.vertical)>image.left, +entry>image.left { + margin-left: -4px; +} + +spinbutton:not(.vertical)>image.right, +entry>image.right { + margin-right: -4px; +} + +spinbutton.error:not(.vertical), +entry.error { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1), border-image 225ms cubic-bezier(0, 0, 0.2, 1); + border-image: radial-gradient(circle closest-corner at center calc(100% - 1px), #f44336 0%, transparent 0%) 2/0 0 0px; + box-shadow: inset 0 -1px #f44336; + background-color: rgba(158, 158, 158, 0.04); + color: @fg; + caret-color: #f44336; +} + +spinbutton.error:focus-within:not(.vertical), +entry.error:focus-within { + border-image: radial-gradient(circle closest-corner at center calc(100% - 1px), #f44336 100%, transparent 100%) 2/0 0 2px; + box-shadow: inset 0 -1px #f44336; + background-color: @fg_rgba_01; +} + +spinbutton.error:disabled:not(.vertical), +entry.error:disabled { + box-shadow: inset 0 -1px @fg_rgba_02; + background-color: rgba(158, 158, 158, 0.04); + color: @fg_rgba_05; +} + +spinbutton.warning:not(.vertical), +entry.warning { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1), border-image 225ms cubic-bezier(0, 0, 0.2, 1); + border-image: radial-gradient(circle closest-corner at center calc(100% - 1px), #ffeb3b 0%, transparent 0%) 2/0 0 0px; + box-shadow: inset 0 -1px #ffeb3b; + background-color: rgba(158, 158, 158, 0.04); + color: @fg; + caret-color: #ffeb3b; +} + +spinbutton.warning:focus-within:not(.vertical), +entry.warning:focus-within { + border-image: radial-gradient(circle closest-corner at center calc(100% - 1px), #ffeb3b 100%, transparent 100%) 2/0 0 2px; + box-shadow: inset 0 -1px #ffeb3b; + background-color: @fg_rgba_01; +} + +spinbutton.warning:disabled:not(.vertical), +entry.warning:disabled { + box-shadow: inset 0 -1px @fg_rgba_02; + background-color: rgba(158, 158, 158, 0.04); + color: @fg_rgba_05; +} + +spinbutton:not(.vertical)>progress>trough>progress, +entry>progress>trough>progress { + margin: 0 -8px; + margin-bottom: -4px; + border-bottom: 2px solid @accent; + background-color: transparent; +} + +spinbutton.vertical>text { + border-radius: 2px; + transition: all 75ms cubic-bezier(0, 0, 0.2, 1); + border-image: none; + box-shadow: 0 2px 1px -1px rgba(0, 0, 0, 0.2), 0 1px 1px 0 rgba(0, 0, 0, 0.14), 0 1px 3px 0 @bg_accent_rgba_015; + background-color: #141416; + color: @fg; + caret-color: @accent; +} + +spinbutton.vertical>text:focus-within { + border-image: none; + box-shadow: 0 3px 3px -2px rgba(0, 0, 0, 0.2), 0 3px 4px 0 rgba(0, 0, 0, 0.14), 0 1px 8px 0 @bg_accent_rgba_015; +} + +spinbutton.vertical>text:drop(active) { + box-shadow: 0 3px 3px -2px rgba(0, 0, 0, 0.2), 0 3px 4px 0 rgba(0, 0, 0, 0.14), 0 1px 8px 0 @bg_accent_rgba_015; +} + +spinbutton.vertical>text:disabled { + box-shadow: 0 2px 1px -1px rgba(0, 0, 0, 0.2), 0 1px 1px 0 rgba(0, 0, 0, 0.14), 0 1px 3px 0 @bg_accent_rgba_015; + background-color: #1a1c1e; + color: @fg_rgba_05; +} + +spinbutton.vertical>text.error { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1); + border-image: none; + box-shadow: 0 2px 1px -1px rgba(0, 0, 0, 0.2), 0 1px 1px 0 rgba(0, 0, 0, 0.14), 0 1px 3px 0 @bg_accent_rgba_015; + background-color: #f44336; + color: @fg_accent; + caret-color: @fg_accent; +} + +spinbutton.vertical>text.error:focus-within { + border-image: none; + box-shadow: 0 3px 3px -2px rgba(0, 0, 0, 0.2), 0 3px 4px 0 rgba(0, 0, 0, 0.14), 0 1px 8px 0 @bg_accent_rgba_015; +} + +spinbutton.vertical>text.error:disabled { + box-shadow: 0 2px 1px -1px rgba(0, 0, 0, 0.2), 0 1px 1px 0 rgba(0, 0, 0, 0.14), 0 1px 3px 0 @bg_accent_rgba_015; + background-color: #1a1c1e; + color: @fg_rgba_05; +} + +spinbutton.vertical>text.error image { + color: @fg_accent_rgba_07; +} + +spinbutton.vertical>text.error image:hover, +spinbutton.vertical>text.error image:active { + color: @fg_accent; +} + +spinbutton.vertical>text.error image:disabled { + color: @fg_accent_rgba_05; +} + +spinbutton.vertical>text.warning { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1); + border-image: none; + box-shadow: 0 2px 1px -1px rgba(0, 0, 0, 0.2), 0 1px 1px 0 rgba(0, 0, 0, 0.14), 0 1px 3px 0 @bg_accent_rgba_015; + background-color: #ffeb3b; + color: @bg_accent; + caret-color: @bg_accent; +} + +spinbutton.vertical>text.warning:focus-within { + border-image: none; + box-shadow: 0 3px 3px -2px rgba(0, 0, 0, 0.2), 0 3px 4px 0 rgba(0, 0, 0, 0.14), 0 1px 8px 0 @bg_accent_rgba_015; +} + +spinbutton.vertical>text.warning:disabled { + box-shadow: 0 2px 1px -1px rgba(0, 0, 0, 0.2), 0 1px 1px 0 rgba(0, 0, 0, 0.14), 0 1px 3px 0 @bg_accent_rgba_015; + background-color: #1a1c1e; + color: @fg_rgba_05; +} + +spinbutton.vertical>text.warning image { + color: @bg_accent_rgba_07; +} + +spinbutton.vertical>text.warning image:hover, +spinbutton.vertical>text.warning image:active { + color: @bg_accent; +} + +spinbutton.vertical>text.warning image:disabled { + color: @bg_accent_rgba_05; +} + +treeview entry, +treeview entry.flat { + background-color: #1a1c1e; +} + +treeview entry, +treeview entry:focus-within, +treeview entry.flat, +treeview entry.flat:focus-within { + border-image: none; + box-shadow: none; +} + +.entry-tag { + margin: 2px; + border-radius: 9999px; + box-shadow: none; + background-color: rgba(158, 158, 158, 0.08); + color: @fg; +} + +.entry-tag:hover { + background-image: image(rgba(158, 158, 158, 0.08)); +} + +:dir(ltr) .entry-tag { + margin-left: 4px; + margin-right: 0; + padding-left: 12px; + padding-right: 8px; +} + +:dir(rtl) .entry-tag { + margin-left: 0; + margin-right: 4px; + padding-left: 8px; + padding-right: 12px; +} + +.entry-tag.button { + box-shadow: none; + background-color: transparent; + color: @fg_rgba_07; +} + +/** + * Buttons + */ +@keyframes needs-attention { + from { + background-image: radial-gradient(farthest-side, @accent 0%, transparent 0%); + } + + to { + background-image: radial-gradient(farthest-side, @accent 100%, transparent 100%); + } +} + +button { + min-height: 24px; + min-width: 16px; + padding: 4px 8px; + border-radius: 2px; + background-color: #141416; + color: @fg; + font-weight: 500; + box-shadow: 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 @bg_accent_rgba_015; + background-color: #141416; +} + +button:drop(active), +button:hover { + box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 @bg_accent_rgba_015; + background-color: @accent_gradient_5; +} + +button:focus { + box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 @bg_accent_rgba_015; + background-color: @accent_gradient_4; +} + +button:active { + box-shadow: 0 5px 5px -3px rgba(0, 0, 0, 0.2), 0 8px 10px 1px rgba(0, 0, 0, 0.14), 0 3px 14px 2px @bg_accent_rgba_015; + background-image: radial-gradient(circle, rgba(158, 158, 158, 0.12) 10%, transparent 10%); +} + +button:disabled { + box-shadow: none; + background-color: rgba(158, 158, 158, 0.08); + color: @fg_rgba_05; +} + +button:checked { + color: @accent; + box-shadow: 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 @bg_accent_rgba_015; + background-color: @accent_gradient_3; +} + +button:checked:drop(active), +button:checked:hover { + box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 @bg_accent_rgba_015; + background-color: @accent_gradient_2; +} + +button:checked:focus { + box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 @bg_accent_rgba_015; + background-color: @accent_gradient_1; +} + +button:checked:active { + box-shadow: 0 5px 5px -3px rgba(0, 0, 0, 0.2), 0 8px 10px 1px rgba(0, 0, 0, 0.14), 0 3px 14px 2px @bg_accent_rgba_015; + background-image: radial-gradient(circle, @accent_rgba_015 10%, transparent 10%); +} + +button:checked:disabled { + box-shadow: none; + background-color: rgba(158, 158, 158, 0.1904); + color: @fg_rgba_05; +} + +button.text-button { + min-width: 32px; + padding-left: 16px; + padding-right: 16px; +} + +button.image-button { + min-width: 24px; + padding: 4px; + border-radius: 9999px; +} + +button.text-button.image-button { + min-width: 32px; + padding-left: 16px; + padding-right: 16px; + border-radius: 2px; +} + +button.text-button.image-button image:first-child { + margin-left: -4px; + margin-right: 8px; +} + +button.text-button.image-button image:last-child { + margin-left: 8px; + margin-right: -4px; +} + +frame button, +.frame button, +popover button { + background-color: transparent; + box-shadow: inset 0 0 0 1px @fg_rgba_03; + background-color: transparent; +} + +frame button:drop(active), +.frame button:drop(active), +popover button:drop(active), +frame button:hover, +.frame button:hover, +popover button:hover { + box-shadow: inset 0 0 0 1px @fg_rgba_03; + background-color: rgba(158, 158, 158, 0.04); +} + +frame button:focus, +.frame button:focus, +popover button:focus { + box-shadow: inset 0 0 0 1px @fg_rgba_03; + background-color: rgba(158, 158, 158, 0.08); +} + +frame button:active, +.frame button:active, +popover button:active { + box-shadow: inset 0 0 0 1px @fg_rgba_03; + background-image: radial-gradient(circle, rgba(158, 158, 158, 0.12) 10%, transparent 10%); +} + +button.sidebar-button, +pathbar.linked:not(.vertical)>button, +spinbutton.vertical button, +spinbutton:not(.vertical)>button, +combobox>.linked:not(.vertical)>button:not(:only-child), +infobar.info>revealer>box button, +infobar.question>revealer>box button, +filechooser #pathbarbox>stack>box>button, +window.dialog.message .dialog-action-area>button, +.app-notification button, +actionbar>revealer>box button:not(.suggested-action):not(.destructive-action), +popover.menu button.model, +.titlebar button:not(.suggested-action):not(.destructive-action), +.toolbar button, +button.flat { + background-color: transparent; + color: @fg_rgba_07; + box-shadow: none; + background-color: transparent; +} + +button.sidebar-button:drop(active), +pathbar.linked:not(.vertical)>button:drop(active), +spinbutton.vertical button:drop(active), +spinbutton:not(.vertical)>button:drop(active), +combobox>.linked:not(.vertical)>button:drop(active):not(:only-child), +infobar.info>revealer>box button:drop(active), +infobar.question>revealer>box button:drop(active), +filechooser #pathbarbox>stack>box>button:drop(active), +window.dialog.message .dialog-action-area>button:drop(active), +.app-notification button:drop(active), +actionbar>revealer>box button:drop(active):not(.suggested-action):not(.destructive-action), +popover.menu button.model:drop(active), +.titlebar button:drop(active):not(.suggested-action):not(.destructive-action), +.toolbar button:drop(active), +button.flat:drop(active), +button.sidebar-button:hover, +pathbar.linked:not(.vertical)>button:hover, +spinbutton.vertical button:hover, +spinbutton:not(.vertical)>button:hover, +combobox>.linked:not(.vertical)>button:hover:not(:only-child), +infobar.info>revealer>box button:hover, +infobar.question>revealer>box button:hover, +filechooser #pathbarbox>stack>box>button:hover, +window.dialog.message .dialog-action-area>button:hover, +.app-notification button:hover, +actionbar>revealer>box button:hover:not(.suggested-action):not(.destructive-action), +popover.menu button.model:hover, +.titlebar button:hover:not(.suggested-action):not(.destructive-action), +.toolbar button:hover, +button.flat:hover { + box-shadow: none; + background-color: rgba(158, 158, 158, 0.08); +} + +button.sidebar-button:focus, +pathbar.linked:not(.vertical)>button:focus, +spinbutton.vertical button:focus, +spinbutton:not(.vertical)>button:focus, +combobox>.linked:not(.vertical)>button:focus:not(:only-child), +infobar.info>revealer>box button:focus, +infobar.question>revealer>box button:focus, +filechooser #pathbarbox>stack>box>button:focus, +window.dialog.message .dialog-action-area>button:focus, +.app-notification button:focus, +actionbar>revealer>box button:focus:not(.suggested-action):not(.destructive-action), +popover.menu button.model:focus, +.titlebar button:focus:not(.suggested-action):not(.destructive-action), +.toolbar button:focus, +button.flat:focus { + box-shadow: none; + background-color: rgba(158, 158, 158, 0.08); +} + +button.sidebar-button:active, +pathbar.linked:not(.vertical)>button:active, +spinbutton.vertical button:active, +spinbutton:not(.vertical)>button:active, +combobox>.linked:not(.vertical)>button:active:not(:only-child), +infobar.info>revealer>box button:active, +infobar.question>revealer>box button:active, +filechooser #pathbarbox>stack>box>button:active, +window.dialog.message .dialog-action-area>button:active, +.app-notification button:active, +actionbar>revealer>box button:active:not(.suggested-action):not(.destructive-action), +popover.menu button.model:active, +.titlebar button:active:not(.suggested-action):not(.destructive-action), +.toolbar button:active, +button.flat:active { + box-shadow: none; + background-image: radial-gradient(circle, rgba(158, 158, 158, 0.12) 10%, transparent 10%); +} + +button.sidebar-button:disabled, +pathbar.linked:not(.vertical)>button:disabled, +spinbutton.vertical button:disabled, +spinbutton:not(.vertical)>button:disabled, +combobox>.linked:not(.vertical)>button:disabled:not(:only-child), +infobar.info>revealer>box button:disabled, +infobar.question>revealer>box button:disabled, +filechooser #pathbarbox>stack>box>button:disabled, +window.dialog.message .dialog-action-area>button:disabled, +.app-notification button:disabled, +actionbar>revealer>box button:disabled:not(.suggested-action):not(.destructive-action), +popover.menu button.model:disabled, +.titlebar button:disabled:not(.suggested-action):not(.destructive-action), +.toolbar button:disabled, +button.flat:disabled { + background-color: transparent; + color: @fg_rgba_03; +} + +combobox>.linked:not(.vertical)>button:checked:not(:only-child), +infobar.info>revealer>box button:checked, +infobar.question>revealer>box button:checked, +filechooser #pathbarbox>stack>box>button:checked, +window.dialog.message .dialog-action-area>button:checked, +.app-notification button:checked, +actionbar>revealer>box button:checked:not(.suggested-action):not(.destructive-action), +popover.menu button.model:checked, +.titlebar button:checked:not(.suggested-action):not(.destructive-action), +.toolbar button:checked, +button.flat:checked { + color: @accent; + box-shadow: none; + background-color: @accent_rgba_015; +} + +combobox>.linked:not(.vertical)>button:checked:drop(active):not(:only-child), +infobar.info>revealer>box button:checked:drop(active), +infobar.question>revealer>box button:checked:drop(active), +filechooser #pathbarbox>stack>box>button:checked:drop(active), +window.dialog.message .dialog-action-area>button:checked:drop(active), +.app-notification button:checked:drop(active), +actionbar>revealer>box button:checked:drop(active):not(.suggested-action):not(.destructive-action), +popover.menu button.model:checked:drop(active), +.titlebar button:checked:drop(active):not(.suggested-action):not(.destructive-action), +.toolbar button:checked:drop(active), +button.flat:checked:drop(active), +combobox>.linked:not(.vertical)>button:checked:hover:not(:only-child), +infobar.info>revealer>box button:checked:hover, +infobar.question>revealer>box button:checked:hover, +filechooser #pathbarbox>stack>box>button:checked:hover, +window.dialog.message .dialog-action-area>button:checked:hover, +.app-notification button:checked:hover, +actionbar>revealer>box button:checked:hover:not(.suggested-action):not(.destructive-action), +popover.menu button.model:checked:hover, +.titlebar button:checked:hover:not(.suggested-action):not(.destructive-action), +.toolbar button:checked:hover, +button.flat:checked:hover { + box-shadow: none; + background-color: rgba(56, 125, 183, 0.2608); +} + +combobox>.linked:not(.vertical)>button:checked:focus:not(:only-child), +infobar.info>revealer>box button:checked:focus, +infobar.question>revealer>box button:checked:focus, +filechooser #pathbarbox>stack>box>button:checked:focus, +window.dialog.message .dialog-action-area>button:checked:focus, +.app-notification button:checked:focus, +actionbar>revealer>box button:checked:focus:not(.suggested-action):not(.destructive-action), +popover.menu button.model:checked:focus, +.titlebar button:checked:focus:not(.suggested-action):not(.destructive-action), +.toolbar button:checked:focus, +button.flat:checked:focus { + box-shadow: none; + background-color: rgba(56, 125, 183, 0.2608); +} + +combobox>.linked:not(.vertical)>button:checked:active:not(:only-child), +infobar.info>revealer>box button:checked:active, +infobar.question>revealer>box button:checked:active, +filechooser #pathbarbox>stack>box>button:checked:active, +window.dialog.message .dialog-action-area>button:checked:active, +.app-notification button:checked:active, +actionbar>revealer>box button:checked:active:not(.suggested-action):not(.destructive-action), +popover.menu button.model:checked:active, +.titlebar button:checked:active:not(.suggested-action):not(.destructive-action), +.toolbar button:checked:active, +button.flat:checked:active { + box-shadow: none; + background-image: radial-gradient(circle, @accent_rgba_015 10%, transparent 10%); +} + +combobox>.linked:not(.vertical)>button:checked:disabled:not(:only-child), +infobar.info>revealer>box button:checked:disabled, +infobar.question>revealer>box button:checked:disabled, +filechooser #pathbarbox>stack>box>button:checked:disabled, +window.dialog.message .dialog-action-area>button:checked:disabled, +.app-notification button:checked:disabled, +actionbar>revealer>box button:checked:disabled:not(.suggested-action):not(.destructive-action), +popover.menu button.model:checked:disabled, +.titlebar button:checked:disabled:not(.suggested-action):not(.destructive-action), +.toolbar button:checked:disabled, +button.flat:checked:disabled { + color: @fg_rgba_05; +} + +infobar.info>revealer>box button.text-button, +infobar.question>revealer>box button.text-button, +filechooser #pathbarbox>stack>box>button.text-button, +window.dialog.message .dialog-action-area>button.text-button, +.app-notification button.text-button, +actionbar>revealer>box button.text-button:not(.suggested-action):not(.destructive-action), +popover.menu button.text-button.model, +.titlebar button.text-button:not(.suggested-action):not(.destructive-action), +.toolbar button.text-button, +button.flat.text-button { + min-width: 48px; + padding-left: 8px; + padding-right: 8px; +} + +infobar.info>revealer>box button.text-button.image-button, +infobar.question>revealer>box button.text-button.image-button, +filechooser #pathbarbox>stack>box>button.text-button.image-button, +window.dialog.message .dialog-action-area>button.text-button.image-button, +.app-notification button.text-button.image-button, +actionbar>revealer>box button.text-button.image-button:not(.suggested-action):not(.destructive-action), +popover.menu button.text-button.image-button.model, +.titlebar button.text-button.image-button:not(.suggested-action):not(.destructive-action), +.toolbar button.text-button.image-button, +button.flat.text-button.image-button { + min-width: 24px; + padding: 4px; +} + +infobar.info>revealer>box button.text-button.image-button label:first-child, +infobar.question>revealer>box button.text-button.image-button label:first-child, +filechooser #pathbarbox>stack>box>button.text-button.image-button label:first-child, +window.dialog.message .dialog-action-area>button.text-button.image-button label:first-child, +.app-notification button.text-button.image-button label:first-child, +actionbar>revealer>box button.text-button.image-button:not(.suggested-action):not(.destructive-action) label:first-child, +popover.menu button.text-button.image-button.model label:first-child, +.titlebar button.text-button.image-button:not(.suggested-action):not(.destructive-action) label:first-child, +.toolbar button.text-button.image-button label:first-child, +button.flat.text-button.image-button label:first-child { + margin-left: 8px; +} + +infobar.info>revealer>box button.text-button.image-button label:last-child, +infobar.question>revealer>box button.text-button.image-button label:last-child, +filechooser #pathbarbox>stack>box>button.text-button.image-button label:last-child, +window.dialog.message .dialog-action-area>button.text-button.image-button label:last-child, +.app-notification button.text-button.image-button label:last-child, +actionbar>revealer>box button.text-button.image-button:not(.suggested-action):not(.destructive-action) label:last-child, +popover.menu button.text-button.image-button.model label:last-child, +.titlebar button.text-button.image-button:not(.suggested-action):not(.destructive-action) label:last-child, +.toolbar button.text-button.image-button label:last-child, +button.flat.text-button.image-button label:last-child { + margin-right: 8px; +} + +infobar.info>revealer>box .linked:not(.vertical)>button:not(:only-child), +infobar.question>revealer>box .linked:not(.vertical)>button:not(:only-child), +filechooser #pathbarbox>stack>box.linked:not(.vertical)>button:not(:only-child), +window.dialog.message .dialog-action-area.linked:not(.vertical)>button:not(:only-child), +.app-notification .linked:not(.vertical)>button:not(:only-child), +actionbar>revealer>box .linked:not(.vertical)>button:not(:only-child):not(.suggested-action):not(.destructive-action), +popover.menu .linked:not(.vertical)>button.model:not(:only-child), +.titlebar .linked:not(.vertical)>button:not(:only-child):not(.suggested-action):not(.destructive-action), +.toolbar .linked:not(.vertical)>button:not(:only-child), +infobar.info>revealer>box .linked.vertical>button:not(:only-child), +infobar.question>revealer>box .linked.vertical>button:not(:only-child), +filechooser #pathbarbox>stack>box.linked.vertical>button:not(:only-child), +window.dialog.message .dialog-action-area.linked.vertical>button:not(:only-child), +.app-notification .linked.vertical>button:not(:only-child), +actionbar>revealer>box .linked.vertical>button:not(:only-child):not(.suggested-action):not(.destructive-action), +popover.menu .linked.vertical>button.model:not(:only-child), +.titlebar .linked.vertical>button:not(:only-child):not(.suggested-action):not(.destructive-action), +.toolbar .linked.vertical>button:not(:only-child), +.linked:not(.vertical)>button.flat:not(:only-child), +.linked.vertical>button.flat:not(:only-child) { + border-radius: 2px; +} + +infobar.info>revealer>box .linked:not(.vertical)>button:not(:only-child).image-button:not(.text-button), +infobar.question>revealer>box .linked:not(.vertical)>button:not(:only-child).image-button:not(.text-button), +filechooser #pathbarbox>stack>box.linked:not(.vertical)>button:not(:only-child).image-button:not(.text-button), +window.dialog.message .dialog-action-area.linked:not(.vertical)>button:not(:only-child).image-button:not(.text-button), +.app-notification .linked:not(.vertical)>button:not(:only-child).image-button:not(.text-button), +actionbar>revealer>box .linked:not(.vertical)>button:not(:only-child).image-button:not(.text-button):not(.suggested-action):not(.destructive-action), +popover.menu .linked:not(.vertical)>button.model:not(:only-child).image-button:not(.text-button), +.titlebar .linked:not(.vertical)>button:not(:only-child).image-button:not(.text-button):not(.suggested-action):not(.destructive-action), +.toolbar .linked:not(.vertical)>button:not(:only-child).image-button:not(.text-button), +infobar.info>revealer>box .linked.vertical>button:not(:only-child).image-button:not(.text-button), +infobar.question>revealer>box .linked.vertical>button:not(:only-child).image-button:not(.text-button), +filechooser #pathbarbox>stack>box.linked.vertical>button:not(:only-child).image-button:not(.text-button), +window.dialog.message .dialog-action-area.linked.vertical>button:not(:only-child).image-button:not(.text-button), +.app-notification .linked.vertical>button:not(:only-child).image-button:not(.text-button), +actionbar>revealer>box .linked.vertical>button:not(:only-child).image-button:not(.text-button):not(.suggested-action):not(.destructive-action), +popover.menu .linked.vertical>button.model:not(:only-child).image-button:not(.text-button), +.titlebar .linked.vertical>button:not(:only-child).image-button:not(.text-button):not(.suggested-action):not(.destructive-action), +.toolbar .linked.vertical>button:not(:only-child).image-button:not(.text-button), +.linked:not(.vertical)>button.flat:not(:only-child).image-button:not(.text-button), +.linked.vertical>button.flat:not(:only-child).image-button:not(.text-button) { + border-radius: 9999px; +} + +button.osd { + padding: 8px 12px; +} + +button.osd.image-button { + padding: 8px; +} + +button.osd:disabled { + opacity: 0; +} + +button.suggested-action { + background-color: @accent; + color: @fg_accent; + box-shadow: 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 @bg_accent_rgba_015; + background-color: @accent; +} + +button.suggested-action:drop(active), +button.suggested-action:hover { + box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 @bg_accent_rgba_015; + background-color: @accent_gradient_inverse_1; +} + +button.suggested-action:focus { + box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 @bg_accent_rgba_015; + background-color: @accent_gradient_inverse_2; +} + +button.suggested-action:active { + box-shadow: 0 5px 5px -3px rgba(0, 0, 0, 0.2), 0 8px 10px 1px rgba(0, 0, 0, 0.14), 0 3px 14px 2px @bg_accent_rgba_015; + background-image: radial-gradient(circle, rgba(255, 255, 255, 0.12) 10%, transparent 10%); +} + +button.suggested-action:disabled { + box-shadow: none; + background-color: rgba(158, 158, 158, 0.08); + color: @fg_rgba_05; +} + +button.suggested-action:checked { + background-color: @accent_gradient_inverse_3; +} + +button.suggested-action.flat { + background-color: transparent; +} + +button.suggested-action.flat:drop(active), +button.suggested-action.flat:hover { + background-color: @accent_rgba_011; +} + +button.suggested-action.flat:focus { + background-color: @accent_rgba_011; +} + +button.suggested-action.flat:active { + background-image: radial-gradient(circle, @accent_rgba_015 10%, transparent 10%); +} + +button.suggested-action.flat:disabled { + box-shadow: none; + background-color: transparent; + color: @fg_rgba_03; +} + +button.suggested-action.flat:checked { + background-color: @accent_rgba_015; +} + +button.destructive-action { + background-color: #f44336; + color: @fg_accent; + box-shadow: 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 @bg_accent_rgba_015; + background-color: #f44336; +} + +button.destructive-action:drop(active), +button.destructive-action:hover { + box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 @bg_accent_rgba_015; + background-color: #f55246; +} + +button.destructive-action:focus { + box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 @bg_accent_rgba_015; + background-color: #f55a4e; +} + +button.destructive-action:active { + box-shadow: 0 5px 5px -3px rgba(0, 0, 0, 0.2), 0 8px 10px 1px rgba(0, 0, 0, 0.14), 0 3px 14px 2px @bg_accent_rgba_015; + background-image: radial-gradient(circle, rgba(255, 255, 255, 0.12) 10%, transparent 10%); +} + +button.destructive-action:disabled { + box-shadow: none; + background-color: rgba(158, 158, 158, 0.08); + color: @fg_rgba_05; +} + +button.destructive-action:checked { + background-color: #f66156; +} + +button.destructive-action.flat { + background-color: transparent; +} + +button.destructive-action.flat:drop(active), +button.destructive-action.flat:hover { + background-color: rgba(244, 67, 54, 0.12); +} + +button.destructive-action.flat:focus { + background-color: rgba(244, 67, 54, 0.12); +} + +button.destructive-action.flat:active { + background-image: radial-gradient(circle, rgba(244, 67, 54, 0.16) 10%, transparent 10%); +} + +button.destructive-action.flat:disabled { + box-shadow: none; + background-color: transparent; + color: @fg_rgba_03; +} + +button.destructive-action.flat:checked { + background-color: rgba(244, 67, 54, 0.16); +} + +stackswitcher>button>label { + margin: 0 -6px; + padding: 0 6px; +} + +stackswitcher>button>image { + margin: -3px -6px; + padding: 3px 6px; +} + +stackswitcher>button.needs-attention:checked>label, +stackswitcher>button.needs-attention:checked>image { + animation: none; + background-image: none; +} + +button.font>box { + border-spacing: 6px; +} + +button.close, +menubutton.circular>button, +button.circular { + border-radius: 9999px; +} + +button.sidebar-button, +notebook>header>tabs>tab button.flat, +spinbutton:not(.vertical)>button { + min-height: 24px; + min-width: 24px; + padding: 0; + border-radius: 9999px; +} + +stacksidebar.sidebar row.needs-attention>label, +stackswitcher>button.needs-attention>label, +stackswitcher>button.needs-attention>image { + animation: needs-attention 225ms cubic-bezier(0, 0, 0.2, 1) forwards; + background-repeat: no-repeat; + background-position: right 3px; + background-size: 6px 6px; +} + +stacksidebar.sidebar row.needs-attention>label:dir(rtl), +stackswitcher>button.needs-attention>label:dir(rtl), +stackswitcher>button.needs-attention>image:dir(rtl) { + background-position: left 3px; +} + +.linked:not(stackswitcher) { + border-spacing: 4px; +} + +.linked:not(.vertical)>button.radio { + border-radius: 0; +} + +.linked:not(.vertical)>button.radio:first-child { + border-top-left-radius: 2px; + border-bottom-left-radius: 2px; +} + +.linked:not(.vertical)>button.radio:last-child { + border-top-right-radius: 2px; + border-bottom-right-radius: 2px; +} + +.linked:not(.vertical)>button.radio:not(:first-child) { + margin-left: -4px; +} + +.linked.vertical>button.radio { + border-radius: 0; +} + +.linked.vertical>button.radio:first-child { + border-top-left-radius: 2px; + border-top-right-radius: 2px; +} + +.linked.vertical>button.radio:last-child { + border-bottom-left-radius: 2px; + border-bottom-right-radius: 2px; +} + +.linked.vertical>button.radio:not(:first-child) { + margin-top: -4px; +} + +/* menu buttons */ +modelbutton.flat:drop(active), +modelbutton.flat:hover { + background-color: rgba(158, 158, 158, 0.08); +} + +modelbutton.flat:focus { + background-color: rgba(158, 158, 158, 0.08); +} + +modelbutton.flat:active { + background-image: radial-gradient(circle, rgba(158, 158, 158, 0.12) 10%, transparent 10%); +} + +modelbutton.flat arrow { + min-width: 16px; + min-height: 16px; + color: @fg_rgba_07; +} + +modelbutton.flat arrow:disabled { + color: @fg_rgba_03; +} + +modelbutton.flat arrow.left { + -gtk-icon-source: -gtk-icontheme("pan-start-symbolic"); +} + +modelbutton.flat arrow.right { + -gtk-icon-source: -gtk-icontheme("pan-end-symbolic"); +} + +button.color { + min-width: 24px; + min-height: 24px; + padding: 4px; +} + +menubutton>button>box>arrow { + min-height: 16px; + min-width: 16px; +} + +menubutton>button>box>arrow.none { + -gtk-icon-source: -gtk-icontheme("open-menu-symbolic"); +} + +menubutton>button>box>arrow.down { + -gtk-icon-source: -gtk-icontheme("pan-down-symbolic"); +} + +menubutton>button>box>arrow.up { + -gtk-icon-source: -gtk-icontheme("pan-up-symbolic"); +} + +menubutton>button>box>arrow.left { + -gtk-icon-source: -gtk-icontheme("pan-start-symbolic"); +} + +menubutton>button>box>arrow.right { + -gtk-icon-source: -gtk-icontheme("pan-end-symbolic"); +} + +/** + * Links + */ +link { + color: @accent; +} + +link:visited { + color: @accent2; +} + +button.link { + color: @accent; +} + +button.link:drop(active), +button.link:hover { + background-color: @accent_rgba_011; +} + +button.link:focus { + background-color: @accent_rgba_011; +} + +button.link:active { + background-image: radial-gradient(circle, @accent_rgba_015 10%, transparent 10%); +} + +button.link:visited { + color: @accent2; +} + +button.link:visited:drop(active), +button.link:visited:hover { + background-color: @accent2_rgba_015; +} + +button.link:visited:focus { + background-color: @accent2_rgba_015; +} + +button.link:visited:active { + background-image: radial-gradient(circle, rgba(103, 58, 183, 0.16) 10%, transparent 10%); +} + +button.link>label { + text-decoration-line: underline; +} + +/** + * GtkSpinButton + */ +spinbutton { + font-feature-settings: "tnum"; +} + +spinbutton:not(.vertical)>text { + min-width: 32px; +} + +spinbutton:not(.vertical)>button { + margin: 4px 0; +} + +spinbutton:not(.vertical)>button.up:dir(ltr) { + margin-right: -4px; +} + +spinbutton:not(.vertical)>button.up:dir(rtl) { + margin-left: -4px; +} + +spinbutton.vertical>text { + min-height: 32px; + min-width: 40px; + padding: 0; +} + +spinbutton.vertical>text>selection { + background-color: @accent_rgba_03; +} + +spinbutton.vertical button { + min-height: 32px; + min-width: 40px; + padding: 0; +} + +spinbutton.vertical button:focus:not(:hover):not(:active) { + box-shadow: inset 0 0 0 9999px transparent; +} + +spinbutton.vertical button.up { + border-radius: 2px 2px 0 0; +} + +spinbutton.vertical button.down { + border-radius: 0 0 2px 2px; +} + +treeview spinbutton:not(.vertical) { + min-height: 0; + border-style: none; + border-radius: 0; +} + +treeview spinbutton:not(.vertical)>text { + min-height: 0; + padding: 1px 2px; +} + +/** + * ComboBoxes + */ +dropdown arrow, +combobox arrow { + min-width: 16px; + min-height: 16px; + -gtk-icon-source: -gtk-icontheme("pan-down-symbolic"); + transition: -gtk-icon-transform 75ms cubic-bezier(0, 0, 0.2, 1); +} + +dropdown button:checked arrow, +combobox button:checked arrow { + color: @accent; + -gtk-icon-transform: rotate(-0.5turn); +} + +dropdown>button>box { + border-spacing: 6px; +} + +dropdown>popover.menu>contents { + padding: 0; +} + +dropdown>popover.menu>contents listview { + padding: 6px 0; +} + +dropdown>popover.menu>contents listview>row { + min-height: 24px; + padding: 4px 8px; +} + +dropdown>popover.menu>contents listview>row:selected { + background-color: rgba(158, 158, 158, 0.08); +} + +.dropdown-searchbar { + border-bottom: 1px solid @fg_rgba_02; +} + +.dropdown-searchbar>entry.search { + border-image: none; + border-radius: 0; + box-shadow: none; + background-color: transparent; +} + +combobox>box>button>box { + border-spacing: 6px; +} + +combobox cellview { + margin: -2px; +} + +combobox>popover.menu>contents modelbutton { + padding-left: 8px; + padding-right: 8px; +} + +combobox>.linked:not(.vertical)>entry:not(:only-child):first-child { + margin-right: -36px; + padding-right: 32px; +} + +combobox>.linked:not(.vertical)>entry:not(:only-child):last-child { + margin-left: -36px; + padding-left: 32px; +} + +combobox>.linked:not(.vertical)>button:not(:only-child) { + min-height: 16px; + min-width: 16px; + margin: 4px; + padding: 4px; + border-radius: 9999px; +} + +dropdown>button.toggle, +button.combo:only-child { + padding-left: 8px; + padding-right: 8px; + border-radius: 2px 2px 0 0; + font-weight: normal; + transition: all 75ms cubic-bezier(0, 0, 0.2, 1), border-image 225ms cubic-bezier(0, 0, 0.2, 1); + border-image: radial-gradient(circle closest-corner at center calc(100% - 1px), @accent 0%, transparent 0%) 2/0 0 0px; + box-shadow: inset 0 -1px @fg_rgba_03; + background-color: rgba(158, 158, 158, 0.04); + color: @fg; + caret-color: @accent; +} + +dropdown>button.toggle:focus, +button.combo:only-child:focus { + box-shadow: inset 0 -1px @fg_rgba_03; + background-color: @fg_rgba_01; +} + +dropdown>button.toggle:drop(active), +dropdown>button.toggle:hover, +button.combo:only-child:drop(active), +button.combo:only-child:hover { + box-shadow: inset 0 -1px @fg_rgba_03; + background-color: rgba(158, 158, 158, 0.0784); +} + +dropdown>button.toggle:checked, +button.combo:only-child:checked { + border-image: radial-gradient(circle closest-corner at center calc(100% - 1px), @accent 100%, transparent 100%) 2/0 0 2px; + box-shadow: inset 0 -1px @fg_rgba_03; + background-color: @fg_rgba_01; +} + +dropdown>button.toggle:disabled, +button.combo:only-child:disabled { + box-shadow: inset 0 -1px @fg_rgba_02; + background-color: rgba(158, 158, 158, 0.04); + color: @fg_rgba_05; +} + +dropdown>button.toggle arrow, +button.combo:only-child arrow { + transition: color 75ms cubic-bezier(0, 0, 0.2, 1); + color: @fg_rgba_07; +} + +dropdown>button.toggle arrow:disabled, +button.combo:only-child arrow:disabled { + color: @fg_rgba_03; +} + +/** + * Toolbars + */ +.toolbar { + padding: 4px; + border-spacing: 4px; +} + +.toolbar.top { + border-bottom: 1px solid @fg_rgba_02; +} + +.toolbar.bottom { + border-top: 1px solid @fg_rgba_02; +} + +.toolbar.start { + border-right: 1px solid @fg_rgba_02; +} + +.toolbar.end { + border-left: 1px solid @fg_rgba_02; +} + +.toolbar.osd.left, +.toolbar.osd.right, +.toolbar.osd.top, +.toolbar.osd.bottom { + border-radius: 0; +} + +.toolbar.osd.bottom { + box-shadow: none; + background-color: transparent; + background-image: linear-gradient(to bottom, transparent, rgba(0, 0, 0, 0.1) 30%, rgba(0, 0, 0, 0.2) 50%, @bg_accent_rgba_04); +} + +.toolbar.horizontal>separator { + margin: 4px 0; +} + +.toolbar.vertical>separator { + margin: 0 4px; +} + +.app-notification, +.toolbar.osd { + transition: box-shadow 75ms cubic-bezier(0, 0, 0.2, 1); + padding: 4px; + border-spacing: 4px; + border-radius: 2px; + box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 @bg_accent_rgba_015, inset 0 1px rgba(255, 255, 255, 0.05); + background-color: #141416; +} + +.app-notification:backdrop, +.toolbar.osd:backdrop { + box-shadow: 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 @bg_accent_rgba_015, inset 0 1px rgba(255, 255, 255, 0.05); +} + +.inline-toolbar { + padding: 4px; + border-style: solid; + border-width: 0 1px 1px; + border-color: @fg_rgba_02; + background-color: #1a1c1e; +} + +searchbar>revealer>box { + padding: 4px; + border-spacing: 4px; + border-bottom: 1px solid @fg_rgba_02; +} + +/** + * Title buttons + */ +windowcontrols { + border-spacing: 4px; +} + +windowcontrols:not(:only-child):not(.empty) { + border-image: linear-gradient(to bottom, transparent 12px, @inactive_rgba_02 12px, @inactive_rgba_02 calc(100% - 12px), transparent calc(100% - 12px)) 1; +} + +windowcontrols:not(:only-child):not(.empty).start:dir(ltr), +windowcontrols:not(:only-child):not(.empty).end:dir(rtl) { + padding-right: 4px; + border-right: 1px solid; +} + +windowcontrols:not(:only-child):not(.empty).start:dir(rtl), +windowcontrols:not(:only-child):not(.empty).end:dir(ltr) { + padding-left: 4px; + border-left: 1px solid; +} + +/** + * Header bars + */ +.titlebar { + transition: background-color 75ms cubic-bezier(0, 0, 0.2, 1), color 75ms cubic-bezier(0, 0, 0.2, 1); + border-radius: 2px 2px 0 0; + box-shadow: 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 @bg_accent_rgba_015, inset 0 1px rgba(255, 255, 255, 0.05); + background-color: #09090a; + color: @inactive; +} + +.titlebar:disabled { + color: @inactive_rgba_05; +} + +.titlebar:backdrop { + background-color: @bg_accent000; + color: @inactive_rgba_07; +} + +.titlebar:backdrop:disabled { + color: @inactive_rgba_03; +} + +.titlebar box.start, +.titlebar box.end { + border-spacing: 4px; +} + +.titlebar .title { + padding-left: 12px; + padding-right: 12px; + font-weight: bold; +} + +.titlebar .subtitle { + padding-left: 12px; + padding-right: 12px; + font-size: smaller; +} + +.titlebar .subtitle, +.titlebar .dim-label { + transition: color 75ms cubic-bezier(0, 0, 0.2, 1); + color: @inactive_rgba_07; +} + +.titlebar .subtitle:backdrop, +.titlebar .dim-label:backdrop { + color: @inactive_rgba_05; +} + +.titlebar headerbar+separator { + background-color: @inactive_rgba_02; +} + +.titlebar entry { + box-shadow: inset 0 -1px @inactive_rgba_03; + background-color: rgba(128, 134, 139, 0.04); + color: @inactive; +} + +.titlebar entry:disabled { + box-shadow: inset 0 -1px @inactive_rgba_02; + background-color: rgba(128, 134, 139, 0.04); + color: @inactive_rgba_05; +} + +.titlebar entry image { + color: @inactive_rgba_07; +} + +.titlebar entry image:hover, +.titlebar entry image:active { + color: @inactive; +} + +.titlebar entry image:disabled { + color: @inactive_rgba_05; +} + +.titlebar .linked:not(.vertical)>entry:not(:only-child) { + border-radius: 2px 2px 0 0; +} + +.titlebar button:not(.suggested-action):not(.destructive-action) { + border-image: radial-gradient(circle closest-corner at center calc(100% - 1px), currentcolor 0%, transparent 0%) 0 0 0/0 0 0px; + background-color: transparent; + color: @inactive_rgba_07; +} + +.titlebar button:not(.suggested-action):not(.destructive-action):drop(active), +.titlebar button:not(.suggested-action):not(.destructive-action):hover { + background-color: rgba(128, 134, 139, 0.08); +} + +.titlebar button:not(.suggested-action):not(.destructive-action):focus { + background-color: rgba(128, 134, 139, 0.08); +} + +.titlebar button:not(.suggested-action):not(.destructive-action):active { + background-image: radial-gradient(circle, rgba(128, 134, 139, 0.12) 10%, transparent 10%); +} + +.titlebar button:not(.suggested-action):not(.destructive-action):disabled { + color: @inactive_rgba_03; +} + +.titlebar button:not(.suggested-action):not(.destructive-action):checked { + border-image: radial-gradient(circle closest-corner at center calc(100% - 1px), currentcolor 100%, transparent 100%) 0 0 2/0 0 2px; + background-color: transparent; + color: @inactive; +} + +.titlebar button:not(.suggested-action):not(.destructive-action):checked:drop(active), +.titlebar button:not(.suggested-action):not(.destructive-action):checked:hover { + background-color: rgba(128, 134, 139, 0.08); +} + +.titlebar button:not(.suggested-action):not(.destructive-action):checked:focus { + background-color: rgba(128, 134, 139, 0.08); +} + +.titlebar button:not(.suggested-action):not(.destructive-action):checked:active { + background-image: radial-gradient(circle, rgba(128, 134, 139, 0.12) 10%, transparent 10%); +} + +.titlebar button:not(.suggested-action):not(.destructive-action):checked:disabled { + background-color: transparent; + color: @inactive_rgba_05; +} + +.titlebar button:not(.suggested-action):not(.destructive-action):backdrop { + color: @inactive_rgba_05; +} + +.titlebar button:not(.suggested-action):not(.destructive-action):backdrop:disabled { + color: @inactive_rgba_03; +} + +.titlebar button:not(.suggested-action):not(.destructive-action):backdrop:checked { + color: @inactive_rgba_07; +} + +.titlebar button:not(.suggested-action):not(.destructive-action):backdrop:checked:disabled { + color: @inactive_rgba_03; +} + +.titlebar button.suggested-action:disabled, +.titlebar button.destructive-action:disabled { + background-color: rgba(128, 134, 139, 0.08); + color: @inactive_rgba_05; +} + +.titlebar stackswitcher button:not(.suggested-action):not(.destructive-action).text-button { + min-width: 104px; +} + +.titlebar .path-bar button:not(.suggested-action):not(.destructive-action).text-button { + min-width: 0; + padding-left: 4px; + padding-right: 4px; +} + +.titlebar.selection-mode { + transition: background-color 0.1ms 225ms, color 75ms cubic-bezier(0, 0, 0.2, 1); + animation: ripple-on-headerbar 225ms cubic-bezier(0, 0, 0.2, 1); + box-shadow: 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 @bg_accent_rgba_015, inset 0 1px @fg_accent_rgba_02; + background-color: @accent; + color: @fg_accent; +} + +.titlebar.selection-mode:backdrop { + color: @fg_accent_rgba_07; +} + +.titlebar.selection-mode .subtitle:link { + color: @fg_accent; +} + +.titlebar.selection-mode button:not(.suggested-action):not(.destructive-action) { + border-image: radial-gradient(circle closest-corner at center calc(100% - 1px), currentColor 0%, transparent 0%) 0 0 0/0 0 0px; + color: @fg_accent; +} + +.titlebar.selection-mode button:not(.suggested-action):not(.destructive-action):disabled { + color: @fg_accent_rgba_05; +} + +.titlebar.selection-mode button:not(.suggested-action):not(.destructive-action):checked { + border-image: radial-gradient(circle closest-corner at center calc(100% - 1px), currentColor 100%, transparent 100%) 0 0 2/0 0 2px; + color: @fg_accent; +} + +.titlebar.selection-mode button:not(.suggested-action):not(.destructive-action):checked:disabled { + color: @fg_accent_rgba_05; +} + +.titlebar.selection-mode button:not(.suggested-action):not(.destructive-action):backdrop { + color: @fg_accent_rgba_07; +} + +.titlebar.selection-mode button:not(.suggested-action):not(.destructive-action):backdrop:disabled { + color: @fg_accent_rgba_03; +} + +.titlebar.selection-mode button:not(.suggested-action):not(.destructive-action):backdrop:checked { + color: @fg_accent_rgba_07; +} + +.titlebar.selection-mode button:not(.suggested-action):not(.destructive-action):backdrop:checked:disabled { + color: @fg_accent_rgba_03; +} + +.titlebar.selection-mode .selection-menu { + padding-left: 16px; + padding-right: 16px; +} + +.titlebar.selection-mode .selection-menu .arrow { + -gtk-icon-source: -gtk-icontheme("pan-down-symbolic"); +} + +.titlebar .selection-mode { + box-shadow: inset 0 1px @fg_accent_rgba_02; + background-color: @accent; +} + +.tiled .titlebar, +.tiled-top .titlebar, +.tiled-right .titlebar, +.tiled-bottom .titlebar, +.tiled-left .titlebar, +.maximized .titlebar, +.fullscreen .titlebar { + border-radius: 0; + box-shadow: 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 @bg_accent_rgba_015; +} + +.titlebar.default-decoration { + min-height: 24px; + padding: 4px; + box-shadow: inset 0 1px rgba(255, 255, 255, 0.05); +} + +.tiled .titlebar.default-decoration, +.maximized .titlebar.default-decoration, +.fullscreen .titlebar.default-decoration { + box-shadow: none; +} + +.titlebar.default-decoration button.titlebutton { + min-height: 24px; + min-width: 24px; + margin: 0; + padding: 0; +} + +.background:not(.csd) .titlebar.default-decoration button.titlebutton:active { + background-size: 1000% 1000%; +} + +.solid-csd .titlebar:dir(rtl), +.solid-csd .titlebar:dir(ltr) { + border-radius: 0; + box-shadow: 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 @bg_accent_rgba_015; +} + +headerbar>windowhandle>box { + min-height: 40px; + padding: 0 4px; + border-spacing: 4px; +} + +headerbar>windowhandle>box entry, +headerbar>windowhandle>box spinbutton, +headerbar>windowhandle>box button { + margin-top: 4px; + margin-bottom: 4px; +} + +headerbar>windowhandle>box separator.titlebutton { + margin-top: 10px; + margin-bottom: 10px; + background-color: @inactive_rgba_02; +} + +headerbar>windowhandle>box switch { + margin-top: 8px; + margin-bottom: 8px; +} + +headerbar>windowhandle>box spinbutton button { + margin-top: 0; + margin-bottom: 0; +} + +headerbar>windowhandle>box .entry-tag { + margin-top: 5px; + margin-bottom: 5px; +} + +/** + * Pathbars + */ +pathbar.linked:not(.vertical)>button { + padding-left: 4px; + padding-right: 4px; + border-image: radial-gradient(circle closest-corner at center calc(100% - 1px), @accent 0%, transparent 0%) 0 0 0/0 0 0px; + border-radius: 2px; +} + +pathbar.linked:not(.vertical)>button:checked { + border-image: radial-gradient(circle closest-corner at center calc(100% - 1px), @accent 100%, transparent 100%) 0 0 2/0 0 2px; + color: @fg; +} + +pathbar.linked:not(.vertical)>button:checked, +pathbar.linked:not(.vertical)>button:checked:disabled { + background-color: transparent; +} + +pathbar.linked:not(.vertical)>button label:not(:only-child):first-child { + margin-left: 0; +} + +pathbar.linked:not(.vertical)>button label:not(:only-child):last-child { + margin-right: 0; +} + +pathbar.linked:not(.vertical)>button.text-button { + min-width: 0; +} + +pathbar.linked:not(.vertical)>button.slider-button { + padding-left: 4px; + padding-right: 4px; +} + +/** + * Tree Views + */ +columnview.view, +treeview.view { + border-left-color: @fg_rgba_03; + border-top-color: @fg_rgba_02; +} + +columnview.view.separator, +treeview.view.separator { + min-height: 5px; + color: @fg_rgba_02; +} + +columnview.view:drop(active), +treeview.view:drop(active) { + box-shadow: none; +} + +columnview.view>dndtarget:drop(active), +treeview.view>dndtarget:drop(active) { + border-style: solid none; + border-width: 9999px; + border-color: rgba(158, 158, 158, 0.08); +} + +columnview.view>dndtarget:drop(active).after, +treeview.view>dndtarget:drop(active).after { + border-top-style: none; +} + +columnview.view>dndtarget:drop(active).before, +treeview.view>dndtarget:drop(active).before { + border-bottom-style: none; +} + +columnview.view.expander, +treeview.view.expander { + min-width: 16px; + min-height: 16px; + -gtk-icon-source: -gtk-icontheme("pan-down-symbolic"); + -gtk-icon-transform: rotate(-90deg); + color: @fg_rgba_07; +} + +columnview.view.expander:dir(rtl), +treeview.view.expander:dir(rtl) { + -gtk-icon-transform: rotate(90deg); +} + +columnview.view.expander:checked, +treeview.view.expander:checked { + -gtk-icon-transform: unset; +} + +columnview.view.expander:hover, +columnview.view.expander:active, +treeview.view.expander:hover, +treeview.view.expander:active { + color: @fg; +} + +columnview.view.expander:disabled, +treeview.view.expander:disabled { + color: @fg_rgba_03; +} + +columnview.view.progressbar, +treeview.view.progressbar { + border-bottom: 4px solid @accent; + background-color: transparent; +} + +columnview.view.progressbar:selected:hover, +treeview.view.progressbar:selected:hover { + background-color: transparent; +} + +columnview.view.trough, +treeview.view.trough { + border-bottom: 4px solid @fg_rgba_02; + background-color: transparent; +} + +columnview.view.trough:selected:hover, +treeview.view.trough:selected:hover { + background-color: transparent; +} + +columnview.view>header>button, +treeview.view>header>button { + padding: 2px 6px; + border-style: none solid solid none; + border-width: 1px; + border-color: @fg_rgba_02; + border-radius: 0; + background-clip: padding-box; + background-color: transparent; + color: @fg_rgba_07; + box-shadow: none; + background-color: transparent; +} + +columnview.view>header>button:drop(active), +columnview.view>header>button:hover, +treeview.view>header>button:drop(active), +treeview.view>header>button:hover { + box-shadow: none; + background-color: rgba(158, 158, 158, 0.04); +} + +columnview.view>header>button:focus, +treeview.view>header>button:focus { + box-shadow: none; + background-color: rgba(158, 158, 158, 0.08); +} + +columnview.view>header>button:active, +treeview.view>header>button:active { + box-shadow: none; + background-image: radial-gradient(circle, rgba(158, 158, 158, 0.12) 10%, transparent 10%); +} + +columnview.view>header>button:drop(active):not(:active), +columnview.view>header>button:hover:not(:active), +treeview.view>header>button:drop(active):not(:active), +treeview.view>header>button:hover:not(:active) { + transition-property: all, border-image, background-size, background-image, background-color; + transition-duration: 75ms, 225ms, 300ms, 1200ms, 0ms; +} + +columnview.view>header>button:disabled, +treeview.view>header>button:disabled { + color: @fg_rgba_03; +} + +columnview.view>header>button:last-child, +treeview.view>header>button:last-child { + border-right-style: none; +} + +columnview.view>header>button>box>sort-indicator, +treeview.view>header>button>box>sort-indicator { + min-height: 16px; + min-width: 16px; +} + +columnview.view>header>button>box>sort-indicator.ascending, +treeview.view>header>button>box>sort-indicator.ascending { + -gtk-icon-source: -gtk-icontheme("pan-up-symbolic"); +} + +columnview.view>header>button>box>sort-indicator.descending, +treeview.view>header>button>box>sort-indicator.descending { + -gtk-icon-source: -gtk-icontheme("pan-down-symbolic"); +} + +columnview.view button.dnd, +columnview.view header.button.dnd, +treeview.view button.dnd, +treeview.view header.button.dnd { + padding: 2px 6px; + border-style: none solid solid; + border-width: 1px; + border-color: @fg_rgba_02; + border-radius: 0; + box-shadow: none; + background-clip: border-box; + color: @accent; +} + +columnview.view acceleditor>label, +treeview.view acceleditor>label { + background-color: @accent; +} + +/** + * Menus + */ +menubar { + background-color: #09090a; + color: @inactive; +} + +menubar:backdrop { + background-color: @bg_accent000; + color: @inactive_rgba_07; +} + +.csd menubar { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1); +} + +menubar>item { + min-height: 20px; + padding: 4px 8px; + color: @inactive_rgba_07; +} + +menubar>item:hover { + background-color: rgba(128, 134, 139, 0.08); +} + +menubar>item:focus:not(:hover) { + background-color: rgba(128, 134, 139, 0.08); +} + +menubar>item:active { + background-image: radial-gradient(circle, rgba(128, 134, 139, 0.12) 10%, transparent 10%); +} + +menubar>item:selected:not(:focus) { + transition: none; + background-color: rgba(128, 134, 139, 0.12); + color: @inactive; +} + +menubar>item:disabled { + color: @inactive_rgba_03; +} + +popover.menu>contents { + padding: 6px 0; +} + +popover.menu separator { + margin: 6px 0; +} + +popover.menu label.title { + min-height: 24px; + padding: 4px 32px; + font-weight: bold; +} + +popover.menu modelbutton { + min-height: 22px; + min-width: 40px; + padding: 4px 32px; +} + +popover.menu modelbutton:disabled { + color: @fg_rgba_05; +} + +popover.menu modelbutton accelerator { + color: @fg_rgba_07; +} + +popover.menu modelbutton accelerator:dir(ltr) { + margin-left: 24px; + margin-right: -16px; +} + +popover.menu modelbutton accelerator:dir(rtl) { + margin-left: -16px; + margin-right: 24px; +} + +popover.menu modelbutton:disabled accelerator { + color: @fg_rgba_03; +} + +popover.menu check, +popover.menu check:focus, +popover.menu check:hover, +popover.menu check:active, +popover.menu check:disabled, +popover.menu radio, +popover.menu radio:focus, +popover.menu radio:hover, +popover.menu radio:active, +popover.menu radio:disabled { + background-color: transparent; + background-image: none; +} + +popover.menu arrow, +popover.menu check, +popover.menu radio { + min-width: 16px; + min-height: 16px; + margin: 0; + padding: 0; +} + +popover.menu arrow.left, +popover.menu check.left, +popover.menu radio.left { + margin-left: -24px; + margin-right: 8px; +} + +popover.menu arrow.right, +popover.menu check.right, +popover.menu radio.right { + margin-left: 8px; + margin-right: -24px; +} + +popover.menu box.inline-buttons { + padding: 0 8px; +} + +popover.menu box.circular-buttons { + padding: 4px 32px; +} + +popover.menu box.circular-buttons button.circular.image-button.model { + padding: 12px; +} + +/** + * Popovers + */ +popover { + font: initial; +} + +popover.background { + background-color: transparent; +} + +popover>arrow, +popover>contents { + transition: box-shadow 75ms cubic-bezier(0, 0, 0.2, 1); + box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 @bg_accent_rgba_015; + background-color: #141416; + color: @fg; +} + +popover>arrow:backdrop, +popover>contents:backdrop { + box-shadow: 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 @bg_accent_rgba_015; +} + +popover>contents, +popover>arrow { + border-width: 1px; + border-style: solid; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.2) @bg_accent_rgba_03; + background-clip: padding-box; +} + +popover>contents { + padding: 8px; + border-radius: 3px; +} + +popover>contents>list, +popover>contents .view, +popover>contents>.toolbar { + border-style: none; + box-shadow: none; + background-color: transparent; +} + +popover frame, +popover .frame { + border: 1px solid @fg_rgba_02; + box-shadow: none; + background-color: transparent; +} + +/** + * Notebooks + */ +notebook:focus:focus-visible>header>tabs>tab:checked { + background-color: @accent_rgba_011; +} + +notebook>header.top { + box-shadow: inset 0 -1px @fg_rgba_02; +} + +notebook>header.top>tabs>tab { + box-shadow: inset 0 -2px transparent; +} + +notebook>header.top>tabs>tab:checked { + box-shadow: inset 0 -2px @accent; +} + +notebook>header.bottom { + box-shadow: inset 0 1px @fg_rgba_02; +} + +notebook>header.bottom>tabs>tab { + box-shadow: inset 0 2px transparent; +} + +notebook>header.bottom>tabs>tab:checked { + box-shadow: inset 0 2px @accent; +} + +notebook>header.left { + box-shadow: inset -1px 0 @fg_rgba_02; +} + +notebook>header.left>tabs>tab { + box-shadow: inset -2px 0 transparent; +} + +notebook>header.left>tabs>tab:checked { + box-shadow: inset -2px 0 @accent; +} + +notebook>header.right { + box-shadow: inset 1px 0 @fg_rgba_02; +} + +notebook>header.right>tabs>tab { + box-shadow: inset 2px 0 transparent; +} + +notebook>header.right>tabs>tab:checked { + box-shadow: inset 2px 0 @accent; +} + +notebook>header.top>tabs>arrow.down, +notebook>header.bottom>tabs>arrow.down { + -gtk-icon-source: -gtk-icontheme("pan-start-symbolic"); +} + +notebook>header.top>tabs>arrow.up, +notebook>header.bottom>tabs>arrow.up { + -gtk-icon-source: -gtk-icontheme("pan-end-symbolic"); +} + +notebook>header.left>tabs>arrow.down, +notebook>header.right>tabs>arrow.down { + -gtk-icon-source: -gtk-icontheme("pan-up-symbolic"); +} + +notebook>header.left>tabs>arrow.up, +notebook>header.right>tabs>arrow.up { + -gtk-icon-source: -gtk-icontheme("pan-down-symbolic"); +} + +notebook>header>tabs>arrow { + min-height: 16px; + min-width: 16px; + padding: 4px; + border-radius: 0; + color: @fg_rgba_07; +} + +notebook>header>tabs>arrow:drop(active), +notebook>header>tabs>arrow:hover { + background-color: rgba(158, 158, 158, 0.04); +} + +notebook>header>tabs>arrow:focus { + background-color: rgba(158, 158, 158, 0.08); +} + +notebook>header>tabs>arrow:active { + background-image: radial-gradient(circle, rgba(158, 158, 158, 0.12) 10%, transparent 10%); +} + +notebook>header>tabs>arrow:disabled { + color: @fg_rgba_03; +} + +notebook>header>tabs>tab { + min-height: 24px; + min-width: 24px; + padding: 4px 12px; + color: @fg_rgba_07; + font-weight: 500; +} + +notebook>header>tabs>tab:drop(active), +notebook>header>tabs>tab:hover { + background-color: rgba(158, 158, 158, 0.04); +} + +notebook>header>tabs>tab:focus { + background-color: rgba(158, 158, 158, 0.08); +} + +notebook>header>tabs>tab:active { + background-image: radial-gradient(circle, rgba(158, 158, 158, 0.12) 10%, transparent 10%); +} + +notebook>header>tabs>tab:disabled { + color: @fg_rgba_03; +} + +notebook>header>tabs>tab:checked { + color: @accent; +} + +notebook>header>tabs>tab:checked:drop(active), +notebook>header>tabs>tab:checked:hover { + background-color: @accent_rgba_007; +} + +notebook>header>tabs>tab:checked:focus { + background-color: @accent_rgba_011; +} + +notebook>header>tabs>tab:checked:active { + background-image: radial-gradient(circle, @accent_rgba_015 10%, transparent 10%); +} + +notebook>header>tabs>tab:checked:disabled { + color: @fg_rgba_03; +} + +notebook>header>tabs>tab>box { + transition: background-color 75ms cubic-bezier(0, 0, 0.2, 1); + margin: -4px -12px; + padding: 4px 12px; +} + +notebook>header>tabs>tab>box:drop(active) { + background-color: rgba(158, 158, 158, 0.08); +} + +notebook>header>tabs>tab button.flat:last-child { + margin-left: 4px; + margin-right: -8px; +} + +notebook>header>tabs>tab button.flat:first-child { + margin-left: -8px; + margin-right: 4px; +} + +/** + * Scrollbars + */ +scrollbar { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1); + background-clip: padding-box; +} + +scrollbar.top { + border-bottom: 1px solid @fg_rgba_02; +} + +scrollbar.bottom { + border-top: 1px solid @fg_rgba_02; +} + +scrollbar.left { + border-right: 1px solid @fg_rgba_02; +} + +scrollbar.right { + border-left: 1px solid @fg_rgba_02; +} + +scrollbar>range>trough>slider { + transition: background-color 75ms cubic-bezier(0, 0, 0.2, 1); + min-width: 10px; + min-height: 10px; + border: 3px solid transparent; + border-radius: 9999px; + background-clip: padding-box; + background-color: @fg_rgba_05; +} + +scrollbar>range>trough>slider:hover { + background-color: @fg_rgba_06; +} + +scrollbar>range>trough>slider:active { + background-color: @fg_rgba_07; +} + +scrollbar>range>trough>slider:disabled { + background-color: @fg_rgba_03; +} + +scrollbar.horizontal>range>trough>slider { + min-width: 24px; +} + +scrollbar.vertical>range>trough>slider { + min-height: 24px; +} + +scrollbar>range.fine-tune>trough>slider { + min-width: 4px; + min-height: 4px; +} + +scrollbar>range.fine-tune.horizontal>trough>slider { + margin: 3px 0; +} + +scrollbar>range.fine-tune.vertical>trough>slider { + margin: 0 3px; +} + +scrollbar.overlay-indicator>range:not(.fine-tune)>trough>slider { + transition-property: background-color, min-height, min-width; +} + +scrollbar.overlay-indicator:not(.dragging):not(.hovering) { + border-color: transparent; + background-color: transparent; +} + +scrollbar.overlay-indicator:not(.dragging):not(.hovering)>range>trough>slider { + min-width: 4px; + min-height: 4px; + margin: 2px; + border: 1px solid @bg_rgba_05; +} + +scrollbar.overlay-indicator:not(.dragging):not(.hovering).horizontal>range>trough>slider { + min-width: 24px; +} + +scrollbar.overlay-indicator:not(.dragging):not(.hovering).vertical>range>trough>slider { + min-height: 24px; +} + +scrollbar.overlay-indicator.dragging, +scrollbar.overlay-indicator.hovering { + background-color: #141416; +} + +/** + * Switch + */ +switch { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1); + margin: 4px 0; + padding: 0 2px; + border: 5px solid transparent; + border-radius: 9999px; + background-color: @fg_rgba_03; + background-clip: padding-box; + font-size: 0; +} + +switch:checked { + background-color: @accent_rgba_05; +} + +switch:disabled { + opacity: 0.5; +} + +switch>image { + margin: -8px; + -gtk-icon-transform: scale(0); +} + +switch>slider { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1); + min-width: 20px; + min-height: 20px; + margin: -3px -2px; + border-radius: 9999px; + box-shadow: 0 0 0 10px transparent, 0 0 0 -10px rgba(158, 158, 158, 0.12), 0 2px 1px -1px rgba(0, 0, 0, 0.2), 0 1px 1px 0 rgba(0, 0, 0, 0.14), 0 1px 3px 0 @bg_accent_rgba_015; + background-color: #141416; +} + +switch:hover>slider { + box-shadow: 0 0 0 10px rgba(158, 158, 158, 0.08), 0 0 0 -10px rgba(158, 158, 158, 0.12), 0 2px 1px -1px rgba(0, 0, 0, 0.2), 0 1px 1px 0 rgba(0, 0, 0, 0.14), 0 1px 3px 0 @bg_accent_rgba_015; +} + +switch:focus>slider { + box-shadow: 0 0 0 10px rgba(158, 158, 158, 0.08), 0 0 0 -10px rgba(158, 158, 158, 0.12), 0 2px 1px -1px rgba(0, 0, 0, 0.2), 0 1px 1px 0 rgba(0, 0, 0, 0.14), 0 1px 3px 0 @bg_accent_rgba_015; +} + +switch:active>slider { + box-shadow: 0 0 0 10px rgba(158, 158, 158, 0.08), 0 0 0 10px rgba(158, 158, 158, 0.12), 0 2px 1px -1px rgba(0, 0, 0, 0.2), 0 1px 1px 0 rgba(0, 0, 0, 0.14), 0 1px 3px 0 @bg_accent_rgba_015; +} + +switch:checked>slider { + background-color: @accent; +} + +switch:checked:hover>slider { + box-shadow: 0 0 0 10px @accent_rgba_011, 0 0 0 -10px @accent_rgba_015, 0 2px 1px -1px rgba(0, 0, 0, 0.2), 0 1px 1px 0 rgba(0, 0, 0, 0.14), 0 1px 3px 0 @bg_accent_rgba_015; +} + +switch:checked:focus>slider { + box-shadow: 0 0 0 10px @accent_rgba_011, 0 0 0 -10px @accent_rgba_015, 0 2px 1px -1px rgba(0, 0, 0, 0.2), 0 1px 1px 0 rgba(0, 0, 0, 0.14), 0 1px 3px 0 @bg_accent_rgba_015; +} + +switch:checked:active>slider { + box-shadow: 0 0 0 10px @accent_rgba_011, 0 0 0 10px @accent_rgba_015, 0 2px 1px -1px rgba(0, 0, 0, 0.2), 0 1px 1px 0 rgba(0, 0, 0, 0.14), 0 1px 3px 0 @bg_accent_rgba_015; +} + +/** + * Check and Radio items + */ +.view.content-view.check:not(list), +.content-view:not(list) .tile check { + min-height: 40px; + min-width: 40px; + margin: 0; + padding: 0; + background-color: transparent; + background-image: none; + -gtk-icon-shadow: 0 1px 1px rgba(0, 0, 0, 0.2), 0 2px 2px rgba(0, 0, 0, 0.14), 0 1px 5px @bg_accent_rgba_015; +} + +.view.content-view.check:not(list):hover, +.view.content-view.check:not(list):active, +.content-view:not(list) .tile check:hover, +.content-view:not(list) .tile check:active { + -gtk-icon-shadow: 0 2px 3px rgba(0, 0, 0, 0.2), 0 4px 5px rgba(0, 0, 0, 0.14), 0 1px 10px @bg_accent_rgba_015; +} + +.view.content-view.check:not(list), +.content-view:not(list) .tile check { + -gtk-icon-source: -gtk-scaled(url("assets/selectionmode-checkbox-unchecked-dark.png"), url("assets/selectionmode-checkbox-unchecked-dark@2.png")); +} + +.view.content-view.check:not(list):checked, +.content-view:not(list) .tile check:checked { + -gtk-icon-source: -gtk-scaled(url("assets/selectionmode-checkbox-checked-dark.png"), url("assets/selectionmode-checkbox-checked-dark@2.png")); +} + +checkbutton, +radiobutton { + border-spacing: 4px; +} + +checkbutton.text-button, +radiobutton.text-button { + padding: 4px; +} + +check, +radio { + min-height: 24px; + min-width: 24px; + margin: -8px; + padding: 8px; + border-radius: 9999px; + color: @fg_rgba_07; +} + +check:drop(active), +check:hover, +radio:drop(active), +radio:hover { + background-color: rgba(158, 158, 158, 0.08); +} + +check:focus, +radio:focus { + background-color: rgba(158, 158, 158, 0.08); +} + +check:active, +radio:active { + background-image: radial-gradient(circle, rgba(158, 158, 158, 0.12) 10%, transparent 10%); +} + +check:checked, +check:indeterminate, +radio:checked, +radio:indeterminate { + color: @accent; +} + +check:checked:drop(active), +check:checked:hover, +check:indeterminate:drop(active), +check:indeterminate:hover, +radio:checked:drop(active), +radio:checked:hover, +radio:indeterminate:drop(active), +radio:indeterminate:hover { + background-color: @accent_rgba_011; +} + +check:checked:focus, +check:indeterminate:focus, +radio:checked:focus, +radio:indeterminate:focus { + background-color: @accent_rgba_011; +} + +check:checked:active, +check:indeterminate:active, +radio:checked:active, +radio:indeterminate:active { + background-image: radial-gradient(circle, @accent_rgba_015 10%, transparent 10%); +} + +check:disabled, +radio:disabled { + color: @fg_rgba_03; +} + +check { + -gtk-icon-source: -gtk-recolor(url("icons/checkbox-unchecked-symbolic.svg")); +} + +check:checked { + -gtk-icon-source: -gtk-recolor(url("icons/checkbox-checked-symbolic.svg")); +} + +check:indeterminate { + -gtk-icon-source: -gtk-recolor(url("icons/checkbox-mixed-symbolic.svg")); +} + +radio { + -gtk-icon-source: -gtk-recolor(url("icons/radio-unchecked-symbolic.svg")); + border-image-slice: 20; + border-image-width: 20px; + border-image-source: radial-gradient(circle, @accent 0%, transparent 0%); +} + +radio:indeterminate { + -gtk-icon-source: -gtk-recolor(url("icons/radio-mixed-symbolic.svg")); +} + +radio:checked:not(:indeterminate) { + border-image-source: radial-gradient(circle, @accent 4.5px, transparent 5px); +} + +radio:checked:not(:indeterminate):disabled { + border-image-source: radial-gradient(circle, @fg_rgba_03 4.5px, transparent 5px); +} + +popover.menu modelbutton check { + min-height: 16px; + min-width: 16px; + border-radius: 2px; + -gtk-icon-source: -gtk-recolor(url("icons/small-checkbox-unchecked-symbolic.svg")); +} + +popover.menu modelbutton check:checked { + -gtk-icon-source: -gtk-recolor(url("icons/small-checkbox-checked-symbolic.svg")); +} + +popover.menu modelbutton check:indeterminate { + -gtk-icon-source: -gtk-recolor(url("icons/small-checkbox-mixed-symbolic.svg")); +} + +popover.menu modelbutton radio { + min-height: 16px; + min-width: 16px; + border-image: none; + -gtk-icon-source: -gtk-recolor(url("icons/small-radio-unchecked-symbolic.svg")); +} + +popover.menu modelbutton radio:checked { + -gtk-icon-source: -gtk-recolor(url("icons/small-radio-checked-symbolic.svg")); +} + +popover.menu modelbutton radio:indeterminate { + -gtk-icon-source: -gtk-recolor(url("icons/small-radio-mixed-symbolic.svg")); +} + +treeview.view check, +treeview.view radio { + padding: 0; + color: @fg_rgba_07; +} + +treeview.view check:checked, +treeview.view check:indeterminate, +treeview.view radio:checked, +treeview.view radio:indeterminate { + color: @accent; +} + +treeview.view check:disabled, +treeview.view radio:disabled { + color: @fg_rgba_03; +} + +treeview.view check, +treeview.view check:hover, +treeview.view check:selected, +treeview.view check:selected:hover, +treeview.view radio, +treeview.view radio:hover, +treeview.view radio:selected, +treeview.view radio:selected:hover { + background-color: transparent; +} + +treeview.view radio:checked { + -gtk-icon-source: -gtk-recolor(url("icons/radio-checked-symbolic.svg")); + border-image: none; +} + +/** + * GtkScale + */ +scale { + min-height: 2px; + min-width: 2px; +} + +scale.horizontal { + padding: 15px 12px; +} + +scale.vertical { + padding: 12px 15px; +} + +scale.fine-tune.horizontal { + min-height: 4px; + padding-top: 14px; + padding-bottom: 14px; +} + +scale.fine-tune.vertical { + min-width: 4px; + padding-left: 14px; + padding-right: 14px; +} + +scale.fine-tune>trough>slider { + margin: -14px; +} + +scale>trough { + transition: background-color 75ms cubic-bezier(0, 0, 0.2, 1); + background-color: @fg_rgba_03; +} + +scale>trough:disabled { + background-color: @fg_rgba_02; +} + +scale>trough>highlight { + transition: background-image 75ms cubic-bezier(0, 0, 0.2, 1); + background-image: image(@accent); +} + +scale>trough>highlight:disabled { + background-color: @bg; + background-image: image(@fg_rgba_03); +} + +scale>trough>fill { + transition: background-color 75ms cubic-bezier(0, 0, 0.2, 1); + background-color: @fg_rgba_03; +} + +scale>trough>fill:disabled { + background-color: transparent; +} + +scale>trough>slider { + transition: background-color 75ms cubic-bezier(0, 0, 0.2, 1), background-size 300ms cubic-bezier(0, 0, 0.2, 1), background-image 1200ms cubic-bezier(0, 0, 0.2, 1); + min-width: 32px; + min-height: 32px; + margin: -15px; + border-radius: 50%; + background-repeat: no-repeat; + background-position: center; + background-size: auto, 1000% 1000%; + color: @accent; +} + +scale>trough>slider { + background-image: -gtk-scaled(url("assets/scale-slider-dark.png"), url("assets/scale-slider-dark@2.png")), radial-gradient(circle, transparent 10%, transparent 10%); +} + +scale>trough>slider:disabled { + background-image: -gtk-scaled(url("assets/scale-slider-disabled-dark.png"), url("assets/scale-slider-disabled-dark@2.png")), radial-gradient(circle, transparent 10%, transparent 10%); +} + +scale>trough>slider:hover { + background-color: @accent_rgba_011; +} + +scale>trough>slider:focus { + background-color: @accent_rgba_011; +} + +scale>trough>slider:active { + transition: background-color 75ms cubic-bezier(0, 0, 0.2, 1), background-size 0ms, background-image 0ms; + animation: ripple-on-slider 225ms cubic-bezier(0, 0, 0.2, 1) forwards; + background-image: -gtk-scaled(url("assets/scale-slider-dark.png"), url("assets/scale-slider-dark@2.png")), radial-gradient(circle, @accent_rgba_015 10%, transparent 10%); + background-size: auto, 0% 0%; +} + +scale>marks, +scale>value { + color: @fg_rgba_07; +} + +scale>value { + font-feature-settings: "tnum"; +} + +scale indicator { + background-color: @fg_rgba_03; +} + +scale.horizontal>marks.top { + margin-bottom: 7px; + margin-top: -15px; +} + +scale.horizontal.fine-tune>marks.top { + margin-bottom: 6px; + margin-top: -14px; +} + +scale.horizontal>marks.bottom { + margin-top: 7px; + margin-bottom: -15px; +} + +scale.horizontal.fine-tune>marks.bottom { + margin-top: 6px; + margin-bottom: -14px; +} + +scale.vertical>marks.top { + margin-right: 7px; + margin-left: -15px; +} + +scale.vertical.fine-tune>marks.top { + margin-right: 6px; + margin-left: -14px; +} + +scale.vertical>marks.bottom { + margin-left: 7px; + margin-right: -15px; +} + +scale.vertical.fine-tune>marks.bottom { + margin-left: 6px; + margin-right: -14px; +} + +scale.horizontal indicator { + min-height: 8px; + min-width: 1px; +} + +scale.vertical indicator { + min-height: 1px; + min-width: 8px; +} + +scale.horizontal.marks-before:not(.marks-after)>trough>slider { + background-image: -gtk-scaled(url("assets/scale-horz-marks-before-slider-dark.png"), url("assets/scale-horz-marks-before-slider-dark@2.png")), radial-gradient(circle, transparent 10%, transparent 10%); +} + +scale.horizontal.marks-before:not(.marks-after)>trough>slider:disabled { + background-image: -gtk-scaled(url("assets/scale-horz-marks-before-slider-disabled-dark.png"), url("assets/scale-horz-marks-before-slider-disabled-dark@2.png")), radial-gradient(circle, transparent 10%, transparent 10%); +} + +scale.horizontal.marks-before:not(.marks-after)>trough>slider:active { + background-image: -gtk-scaled(url("assets/scale-horz-marks-before-slider-dark.png"), url("assets/scale-horz-marks-before-slider-dark@2.png")), radial-gradient(circle, @accent_rgba_015 10%, transparent 10%); +} + +scale.horizontal.marks-after:not(.marks-before)>trough>slider { + background-image: -gtk-scaled(url("assets/scale-horz-marks-after-slider-dark.png"), url("assets/scale-horz-marks-after-slider-dark@2.png")), radial-gradient(circle, transparent 10%, transparent 10%); +} + +scale.horizontal.marks-after:not(.marks-before)>trough>slider:disabled { + background-image: -gtk-scaled(url("assets/scale-horz-marks-after-slider-disabled-dark.png"), url("assets/scale-horz-marks-after-slider-disabled-dark@2.png")), radial-gradient(circle, transparent 10%, transparent 10%); +} + +scale.horizontal.marks-after:not(.marks-before)>trough>slider:active { + background-image: -gtk-scaled(url("assets/scale-horz-marks-after-slider-dark.png"), url("assets/scale-horz-marks-after-slider-dark@2.png")), radial-gradient(circle, @accent_rgba_015 10%, transparent 10%); +} + +scale.vertical.marks-before:not(.marks-after)>trough>slider { + background-image: -gtk-scaled(url("assets/scale-vert-marks-before-slider-dark.png"), url("assets/scale-vert-marks-before-slider-dark@2.png")), radial-gradient(circle, transparent 10%, transparent 10%); +} + +scale.vertical.marks-before:not(.marks-after)>trough>slider:disabled { + background-image: -gtk-scaled(url("assets/scale-vert-marks-before-slider-disabled-dark.png"), url("assets/scale-vert-marks-before-slider-disabled-dark@2.png")), radial-gradient(circle, transparent 10%, transparent 10%); +} + +scale.vertical.marks-before:not(.marks-after)>trough>slider:active { + background-image: -gtk-scaled(url("assets/scale-vert-marks-before-slider-dark.png"), url("assets/scale-vert-marks-before-slider-dark@2.png")), radial-gradient(circle, @accent_rgba_015 10%, transparent 10%); +} + +scale.vertical.marks-after:not(.marks-before)>trough>slider { + background-image: -gtk-scaled(url("assets/scale-vert-marks-after-slider-dark.png"), url("assets/scale-vert-marks-after-slider-dark@2.png")), radial-gradient(circle, transparent 10%, transparent 10%); +} + +scale.vertical.marks-after:not(.marks-before)>trough>slider:disabled { + background-image: -gtk-scaled(url("assets/scale-vert-marks-after-slider-disabled-dark.png"), url("assets/scale-vert-marks-after-slider-disabled-dark@2.png")), radial-gradient(circle, transparent 10%, transparent 10%); +} + +scale.vertical.marks-after:not(.marks-before)>trough>slider:active { + background-image: -gtk-scaled(url("assets/scale-vert-marks-after-slider-dark.png"), url("assets/scale-vert-marks-after-slider-dark@2.png")), radial-gradient(circle, @accent_rgba_015 10%, transparent 10%); +} + +scale.color { + min-height: 0; + min-width: 0; +} + +scale.color.horizontal:dir(ltr), +scale.color.horizontal:dir(rtl) { + padding: 0 0 12px 0; +} + +scale.color.horizontal:dir(ltr) slider, +scale.color.horizontal:dir(rtl) slider { + margin-bottom: -24px; + margin-top: 8px; +} + +scale.color.vertical:dir(ltr) { + padding: 0 0 0 12px; +} + +scale.color.vertical:dir(ltr) slider { + margin-left: -24px; + margin-right: 8px; +} + +scale.color.vertical:dir(rtl) { + padding: 0 12px 0 0; +} + +scale.color.vertical:dir(rtl) slider { + margin-right: -24px; + margin-left: 8px; +} + +/** + * Progress bars + */ +progressbar { + color: @fg_rgba_07; + font-size: smaller; + font-feature-settings: "tnum"; +} + +progressbar>trough { + background-color: @fg_rgba_02; +} + +progressbar>trough>progress { + background-color: @accent; +} + +progressbar.horizontal>trough { + min-width: 150px; +} + +progressbar.horizontal>trough, +progressbar.horizontal>trough>progress { + min-height: 4px; +} + +progressbar.vertical>trough { + min-height: 80px; +} + +progressbar.vertical>trough, +progressbar.vertical>trough>progress { + min-width: 4px; +} + +progressbar>trough.empty>progress { + all: unset; +} + +/** + * Level Bar + */ +levelbar.horizontal>trough>block { + min-height: 4px; +} + +levelbar.horizontal.discrete>trough>block { + min-width: 32px; +} + +levelbar.horizontal.discrete>trough>block:not(:last-child) { + margin-right: 2px; +} + +levelbar.vertical>trough>block { + min-width: 4px; +} + +levelbar.vertical.discrete>trough>block { + min-height: 32px; +} + +levelbar.vertical.discrete>trough>block:not(:last-child) { + margin-bottom: 2px; +} + +levelbar>trough>block.low { + background-color: #ffeb3b; +} + +levelbar>trough>block.high, +levelbar>trough>block:not(.empty) { + background-color: @accent; +} + +levelbar>trough>block.full { + background-color: #00e676; +} + +levelbar>trough>block.empty { + background-color: @fg_rgba_02; +} + +/** + * Print dialog + */ +window.dialog.print paper { + border-radius: 2px; + box-shadow: 0 2px 1px -1px rgba(0, 0, 0, 0.2), 0 1px 1px 0 rgba(0, 0, 0, 0.14), 0 1px 3px 0 @bg_accent_rgba_015; + background-color: #1a1c1e; + color: @fg; +} + +window.dialog.print .dialog-action-box { + margin: 12px; +} + +/** + * Frames + */ +frame, +.frame { + border-radius: 2px; + box-shadow: 0 2px 1px -1px rgba(0, 0, 0, 0.2), 0 1px 1px 0 rgba(0, 0, 0, 0.14), 0 1px 3px 0 @bg_accent_rgba_015; + background-color: #1a1c1e; + color: @fg; +} + +frame>label { + margin: 4px; +} + +statusbar { + padding: 6px 10px; +} + +actionbar>revealer>box { + padding: 4px; + border-spacing: 4px; + border-top: 1px solid @fg_rgba_02; +} + +actionbar>revealer>box .linked:not(.vertical)>entry:not(:only-child) { + border-radius: 2px 2px 0 0; +} + +overshoot.top { + background-image: radial-gradient(farthest-side at top, @accent_rgba_02 99%, rgba(56, 125, 183, 0) 100%); + background-size: 200% 75%; + background-repeat: no-repeat; + background-position: top; +} + +overshoot.bottom { + background-image: radial-gradient(farthest-side at bottom, @accent_rgba_02 99%, rgba(56, 125, 183, 0) 100%); + background-size: 200% 75%; + background-repeat: no-repeat; + background-position: bottom; +} + +overshoot.left { + background-image: radial-gradient(farthest-side at left, @accent_rgba_02 99%, rgba(56, 125, 183, 0) 100%); + background-size: 75% 200%; + background-repeat: no-repeat; + background-position: left; +} + +overshoot.right { + background-image: radial-gradient(farthest-side at right, @accent_rgba_02 99%, rgba(56, 125, 183, 0) 100%); + background-size: 75% 200%; + background-repeat: no-repeat; + background-position: right; +} + +junction { + border-style: solid none none solid; + border-width: 1px; + border-color: @fg_rgba_02; +} + +junction:dir(rtl) { + border-style: solid solid none none; +} + +separator { + min-width: 1px; + min-height: 1px; + background-color: @fg_rgba_02; +} + +button.font>box>box>separator { + min-width: 0; + min-height: 0; + background-color: transparent; +} + +/** + * Lists + */ +listview>row, +list>row { + padding: 2px; +} + +listview>row.expander, +list>row.expander { + padding: 0; +} + +listview>row.expander .row-header, +list>row.expander .row-header { + padding: 2px; +} + +listview.separators:not(.horizontal)>row:not(:first-child), +list.separators:not(.horizontal)>row:not(:first-child) { + border-top: 1px solid @fg_rgba_02; +} + +listview.separators.horizontal>row:not(:first-child), +list.separators.horizontal>row:not(:first-child) { + border-left: 1px solid @fg_rgba_02; +} + +row { + background-clip: padding-box; +} + +row.activatable:drop(active), +row.activatable:hover { + background-color: rgba(158, 158, 158, 0.04); +} + +row.activatable:focus { + background-color: rgba(158, 158, 158, 0.08); +} + +row.activatable:active { + background-image: radial-gradient(circle, rgba(158, 158, 158, 0.12) 10%, transparent 10%); +} + +row.activatable:drop(active):not(:active), +row.activatable:hover:not(:active) { + transition-property: all, border-image, background-size, background-image, background-color; + transition-duration: 75ms, 225ms, 300ms, 1200ms, 0ms; +} + +row.activatable.has-open-popup { + background-color: rgba(158, 158, 158, 0.12); +} + +row:selected { + background-color: @accent_rgba_03; + background-color: @accent_rgba_03; +} + +row:selected:drop(active), +row:selected:hover { + background-color: rgba(56, 125, 183, 0.3744); +} + +row:selected:focus { + background-color: rgba(56, 125, 183, 0.4016); +} + +row:selected:active { + background-image: radial-gradient(circle, @accent_rgba_015 10%, transparent 10%); +} + +row:selected.has-open-popup { + background-color: rgba(56, 125, 183, 0.4288); +} + +listview>row:drop(active), +listview>row:hover { + background-color: rgba(158, 158, 158, 0.04); +} + +listview>row:focus { + background-color: rgba(158, 158, 158, 0.08); +} + +listview>row:active { + background-image: radial-gradient(circle, rgba(158, 158, 158, 0.12) 10%, transparent 10%); +} + +listview>row:drop(active):not(:active), +listview>row:hover:not(:active) { + transition-property: all, border-image, background-size, background-image, background-color; + transition-duration: 75ms, 225ms, 300ms, 1200ms, 0ms; +} + +listview:selected { + background-color: @accent_rgba_03; + background-color: @accent_rgba_03; +} + +listview:selected:drop(active), +listview:selected:hover { + background-color: rgba(56, 125, 183, 0.3744); +} + +listview:selected:focus { + background-color: rgba(56, 125, 183, 0.4016); +} + +listview:selected:active { + background-image: radial-gradient(circle, @accent_rgba_015 10%, transparent 10%); +} + +columnview>listview>row { + padding: 0; +} + +columnview>listview>row>cell { + min-height: 24px; + padding: 4px 6px; +} + +columnview>listview>row>cell:not(:last-child) { + border-right: 1px solid transparent; +} + +columnview.column-separators>listview>row>cell { + border-right-color: @fg_rgba_02; +} + +columnview.data-table>listview>row>cell { + padding-top: 2px; + padding-bottom: 2px; +} + +.rich-list>row { + padding: 12px; + min-height: 32px; +} + +.rich-list>row>box { + border-spacing: 12px; +} + +/** + * App Notifications + */ +.app-notification { + margin: 8px; + border-style: none; +} + +.app-notification button.text-button:not(:disabled) { + color: @accent; +} + +.app-notification button.text-button:not(:disabled):drop(active), +.app-notification button.text-button:not(:disabled):hover { + background-color: @accent_rgba_011; +} + +.app-notification button.text-button:not(:disabled):focus { + background-color: @accent_rgba_011; +} + +.app-notification button.text-button:not(:disabled):active { + background-image: radial-gradient(circle, @accent_rgba_015 10%, transparent 10%); +} + +/** + * Expanders + */ +expander { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1); + min-width: 16px; + min-height: 16px; + padding: 4px; + border-radius: 9999px; + color: @fg_rgba_07; + -gtk-icon-source: -gtk-icontheme("pan-down-symbolic"); +} + +expander:drop(active), +expander:hover { + background-color: rgba(158, 158, 158, 0.08); +} + +expander:focus { + background-color: rgba(158, 158, 158, 0.08); +} + +expander:active { + background-image: radial-gradient(circle, rgba(158, 158, 158, 0.12) 10%, transparent 10%); +} + +expander:disabled { + color: @fg_rgba_03; +} + +expander:checked:dir(ltr) { + -gtk-icon-transform: rotate(-180deg); +} + +expander:checked:dir(rtl) { + -gtk-icon-transform: rotate(180deg); +} + +indent { + min-width: 16px; + min-height: 16px; + padding: 4px; +} + +expander-widget:focus>box>title>expander { + box-shadow: inset 0 0 0 9999px rgba(158, 158, 158, 0.08); +} + +expander-widget>box>title:drop(active)>expander, +expander-widget>box>title:hover>expander { + box-shadow: inset 0 0 0 9999px rgba(158, 158, 158, 0.08); +} + +expander-widget>box>title:active>expander { + transition-duration: 75ms, 225ms, 0ms, 0ms; + animation: ripple 225ms cubic-bezier(0, 0, 0.2, 1) forwards; + background-size: 0% 0%; + background-image: radial-gradient(circle, rgba(158, 158, 158, 0.12) 10%, transparent 10%); +} + +/** + * Calendar + */ +calendar { + border-radius: 2px; + box-shadow: 0 2px 1px -1px rgba(0, 0, 0, 0.2), 0 1px 1px 0 rgba(0, 0, 0, 0.14), 0 1px 3px 0 @bg_accent_rgba_015; + background-color: #1a1c1e; + color: @fg; +} + +calendar:disabled { + color: @fg_rgba_05; +} + +calendar>header { + padding: 4px; + border-spacing: 4px; + border-bottom: 1px solid @fg_rgba_02; +} + +calendar>header>button.image-button { + padding: 0; + min-width: 28px; + min-height: 28px; + border-radius: 9999px; + background-color: transparent; + color: @fg_rgba_07; + box-shadow: none; + background-color: transparent; +} + +calendar>header>button.image-button:drop(active), +calendar>header>button.image-button:hover { + box-shadow: none; + background-color: rgba(158, 158, 158, 0.08); +} + +calendar>header>button.image-button:focus { + box-shadow: none; + background-color: rgba(158, 158, 158, 0.08); +} + +calendar>header>button.image-button:active { + box-shadow: none; + background-image: radial-gradient(circle, rgba(158, 158, 158, 0.12) 10%, transparent 10%); +} + +calendar>header>button.image-button:disabled { + color: @fg_rgba_03; +} + +calendar>grid { + padding: 4px; + border-spacing: 4px; +} + +calendar>grid>label { + padding: 0; + min-width: 28px; + min-height: 28px; + border-radius: 9999px; +} + +calendar>grid>label.day-name, +calendar>grid>label.week-number { + color: @fg_rgba_07; + font-weight: 500; +} + +calendar>grid>label.day-number:drop(active), +calendar>grid>label.day-number:hover { + background-color: rgba(158, 158, 158, 0.08); +} + +calendar>grid>label.day-number:focus { + background-color: rgba(158, 158, 158, 0.08); +} + +calendar>grid>label.day-number:active { + background-image: radial-gradient(circle, rgba(158, 158, 158, 0.12) 10%, transparent 10%); +} + +calendar>grid>label.day-number.today { + box-shadow: inset 0 0 0 1px @fg_rgba_07; +} + +calendar>grid>label.day-number.other-month { + color: @fg_rgba_03; +} + +calendar>grid>label.day-number:selected { + background-color: @accent_rgba_03; + box-shadow: inset 0 0 0 1px transparent; + background-color: @accent_rgba_03; +} + +calendar>grid>label.day-number:selected:drop(active), +calendar>grid>label.day-number:selected:hover { + background-color: rgba(56, 125, 183, 0.4016); +} + +calendar>grid>label.day-number:selected:focus { + background-color: rgba(56, 125, 183, 0.4016); +} + +calendar>grid>label.day-number:selected:active { + background-image: radial-gradient(circle, @accent_rgba_015 10%, transparent 10%); +} + +/** + * Dialogs + */ +window.dialog.message.csd.background { + min-width: 280px; + border-radius: 2px; + background-color: #141416; +} + +window.dialog.message>.titlebar { + min-height: 24px; + box-shadow: inset 0 1px rgba(255, 255, 255, 0.05); + background-color: transparent; + color: @fg; +} + +window.dialog.message>.titlebar:backdrop { + background-color: transparent; + color: @fg_rgba_07; +} + +window.dialog.message>box.dialog-vbox.vertical { + border-spacing: 20px; +} + +window.dialog.message>box.dialog-vbox.vertical>box.vertical>box.horizontal { + margin: 0 -6px; +} + +window.dialog.message label.title { + font-weight: 500; + font-size: 15pt; + letter-spacing: 0.1125pt; +} + +window.dialog.message label.title+label { + color: @fg_rgba_07; +} + +window.dialog.message list, +window.dialog.message .view { + background-color: transparent; +} + +window.dialog.message .dialog-action-area>button:not(:disabled) { + color: @accent; +} + +window.dialog.message .dialog-action-area>button:not(:disabled):drop(active), +window.dialog.message .dialog-action-area>button:not(:disabled):hover { + background-color: @accent_rgba_011; +} + +window.dialog.message .dialog-action-area>button:not(:disabled):focus { + background-color: @accent_rgba_011; +} + +window.dialog.message .dialog-action-area>button:not(:disabled):active { + background-image: radial-gradient(circle, @accent_rgba_015 10%, transparent 10%); +} + +window.dialog.message .dialog-action-area>button.suggested-action:not(:disabled) { + background-color: transparent; +} + +window.dialog.message .dialog-action-area>button.destructive-action:not(:disabled) { + background-color: transparent; + color: #f44336; +} + +window.dialog.message .dialog-action-area>button.destructive-action:not(:disabled):drop(active), +window.dialog.message .dialog-action-area>button.destructive-action:not(:disabled):hover { + background-color: rgba(244, 67, 54, 0.12); +} + +window.dialog.message .dialog-action-area>button.destructive-action:not(:disabled):focus { + background-color: rgba(244, 67, 54, 0.12); +} + +window.dialog.message .dialog-action-area>button.destructive-action:not(:disabled):active { + background-image: radial-gradient(circle, rgba(244, 67, 54, 0.16) 10%, transparent 10%); +} + +.dialog-action-area { + padding: 4px; + border-spacing: 4px; +} + +filechooser .dialog-action-box { + border-top: 1px solid @fg_rgba_02; +} + +filechooser #pathbarbox { + border-bottom: 1px solid @fg_rgba_02; +} + +filechooser #pathbarbox>stack>box>button { + border-radius: 9999px; +} + +filechooserbutton>button>box { + border-spacing: 6px; +} + +/** + * Sidebar + */ +.sidebar { + border-style: none; +} + +.sidebar:not(separator):dir(ltr), +.sidebar:not(separator).left, +.sidebar:not(separator).left:dir(rtl) { + border-right: 1px solid @fg_rgba_02; + border-left-style: none; +} + +.sidebar:not(separator):dir(rtl), +.sidebar:not(separator).right { + border-left: 1px solid @fg_rgba_02; + border-right-style: none; +} + +paned .sidebar:dir(rtl):not(:dir(ltr)), +paned .sidebar:dir(ltr):not(:dir(rtl)) { + border-style: none; +} + +stacksidebar.sidebar list { + padding: 4px; +} + +stacksidebar.sidebar list.separators:not(.horizontal)>row:not(:first-child) { + border-top-style: none; +} + +stacksidebar.sidebar row { + min-height: 32px; + padding: 0 2px; + border-radius: 2px; + color: @fg_rgba_07; + font-weight: 500; +} + +stacksidebar.sidebar row:selected { + background-color: @accent_rgba_015; + color: @accent; + background-color: @accent_rgba_015; +} + +stacksidebar.sidebar row:selected:drop(active), +stacksidebar.sidebar row:selected:hover { + background-color: rgba(56, 125, 183, 0.2608); +} + +stacksidebar.sidebar row:selected:focus { + background-color: rgba(56, 125, 183, 0.2608); +} + +stacksidebar.sidebar row:selected:active { + background-image: radial-gradient(circle, @accent_rgba_015 10%, transparent 10%); +} + +stacksidebar.sidebar row+row { + margin-top: 4px; +} + +stacksidebar.sidebar row>label { + padding-left: 6px; + padding-right: 6px; +} + +/** + * File chooser + */ +row image.sidebar-icon { + transition: color 75ms cubic-bezier(0, 0, 0.2, 1); + color: @fg_rgba_07; +} + +row image.sidebar-icon:disabled { + color: @fg_rgba_03; +} + +placessidebar.sidebar list { + padding: 4px 0; +} + +placessidebar.sidebar list>separator { + margin: 4px 0; +} + +placessidebar.sidebar row { + min-height: 32px; + margin: 0 4px; + padding: 0; + border-radius: 2px; + color: @fg_rgba_07; + font-weight: 500; +} + +placessidebar.sidebar row>revealer { + padding: 0 8px; +} + +placessidebar.sidebar row:selected { + background-color: @accent_rgba_015; + color: @accent; + background-color: @accent_rgba_015; +} + +placessidebar.sidebar row:selected:drop(active), +placessidebar.sidebar row:selected:hover { + background-color: rgba(56, 125, 183, 0.2608); +} + +placessidebar.sidebar row:selected:focus { + background-color: rgba(56, 125, 183, 0.2608); +} + +placessidebar.sidebar row:selected:active { + background-image: radial-gradient(circle, @accent_rgba_015 10%, transparent 10%); +} + +placessidebar.sidebar row:selected image.sidebar-icon { + color: @accent; +} + +placessidebar.sidebar row:disabled { + color: @fg_rgba_05; +} + +placessidebar.sidebar row image.sidebar-icon:dir(ltr) { + padding-right: 8px; +} + +placessidebar.sidebar row image.sidebar-icon:dir(rtl) { + padding-left: 8px; +} + +placessidebar.sidebar row label.sidebar-label:dir(ltr) { + padding-right: 2px; +} + +placessidebar.sidebar row label.sidebar-label:dir(rtl) { + padding-left: 2px; +} + +placessidebar.sidebar row.sidebar-placeholder-row { + background-color: rgba(158, 158, 158, 0.08); +} + +placessidebar.sidebar row.sidebar-new-bookmark-row { + color: @accent; +} + +placessidebar.sidebar row.sidebar-new-bookmark-row image.sidebar-icon { + color: @accent; +} + +placesview .server-list-button>image { + -gtk-icon-transform: rotate(0turn); +} + +placesview .server-list-button:checked>image { + -gtk-icon-transform: rotate(-0.5turn); +} + +placesview>actionbar>revealer>box>box { + border-spacing: 4px; +} + +placesview>actionbar>revealer>box>box>label { + padding-left: 8px; + padding-right: 8px; +} + +/** + * Paned + */ +paned>separator { + background-clip: content-box; +} + +paned>separator.wide { + min-width: 4px; + min-height: 4px; + border: 1px solid @fg_rgba_02; + background-color: transparent; +} + +paned.horizontal>separator:not(.wide) { + margin: 0 -4px; + padding: 0 4px; +} + +paned.horizontal>separator.wide { + border-style: none solid; +} + +paned.vertical>separator:not(.wide) { + margin: -4px 0; + padding: 4px 0; +} + +paned.vertical>separator.wide { + border-style: solid none; +} + +/** + * GtkVideo + */ +video { + background-color: black; +} + +video image.osd { + min-width: 64px; + min-height: 64px; + border-radius: 32px; + background-color: @bg_accent_rgba_06; + color: @fg_accent; +} + +video controls.osd { + padding: 4px; + background-image: linear-gradient(to bottom, transparent, rgba(0, 0, 0, 0.1) 30%, rgba(0, 0, 0, 0.2) 50%, @bg_accent_rgba_04); + color: rgba(255, 255, 255, 0.87); +} + +video controls.osd button { + background-color: transparent; + color: @fg_accent_rgba_06; +} + +video controls.osd button:drop(active), +video controls.osd button:hover { + background-color: rgba(255, 255, 255, 0.08); +} + +video controls.osd button:focus { + background-color: rgba(255, 255, 255, 0.08); +} + +video controls.osd button:active { + background-image: radial-gradient(circle, rgba(255, 255, 255, 0.12) 10%, transparent 10%); +} + +/** + * GtkInfoBar + */ +infobar>revealer>box { + padding: 8px; + border-spacing: 12px; +} + +infobar.action:hover>revealer>box { + background-image: image(rgba(158, 158, 158, 0.08)); +} + +infobar.info>revealer>box, +infobar.question>revealer>box { + border-bottom: 1px solid @fg_rgba_02; +} + +infobar.info>revealer>box button.text-button:not(:disabled), +infobar.question>revealer>box button.text-button:not(:disabled) { + color: @accent; +} + +infobar.info>revealer>box button.text-button:not(:disabled):drop(active), +infobar.info>revealer>box button.text-button:not(:disabled):hover, +infobar.question>revealer>box button.text-button:not(:disabled):drop(active), +infobar.question>revealer>box button.text-button:not(:disabled):hover { + background-color: @accent_rgba_011; +} + +infobar.info>revealer>box button.text-button:not(:disabled):focus, +infobar.question>revealer>box button.text-button:not(:disabled):focus { + background-color: @accent_rgba_011; +} + +infobar.info>revealer>box button.text-button:not(:disabled):active, +infobar.question>revealer>box button.text-button:not(:disabled):active { + background-image: radial-gradient(circle, @accent_rgba_015 10%, transparent 10%); +} + +infobar.warning>revealer>box { + background-color: #ffeb3b; + color: @bg_accent; +} + +infobar.warning>revealer>box button.flat { + color: @bg_accent; +} + +infobar.warning>revealer>box button.flat:drop(active), +infobar.warning>revealer>box button.flat:hover { + background-color: @bg_accent_rgba_01; +} + +infobar.warning>revealer>box button.flat:focus { + background-color: @bg_accent_rgba_01; +} + +infobar.warning>revealer>box button.flat:active { + background-image: radial-gradient(circle, @bg_accent_rgba_015 10%, transparent 10%); +} + +infobar.warning>revealer>box link { + color: @bg_accent; +} + +infobar.error>revealer>box { + background-color: #f44336; + color: @fg_accent; +} + +infobar.error>revealer>box button.flat { + color: @fg_accent; +} + +infobar.error>revealer>box button.flat:drop(active), +infobar.error>revealer>box button.flat:hover { + background-color: rgba(255, 255, 255, 0.08); +} + +infobar.error>revealer>box button.flat:focus { + background-color: rgba(255, 255, 255, 0.08); +} + +infobar.error>revealer>box button.flat:active { + background-image: radial-gradient(circle, rgba(255, 255, 255, 0.12) 10%, transparent 10%); +} + +infobar.error>revealer>box link { + color: @fg_accent; +} + +/** + * Tooltips + */ +tooltip { + min-height: 24px; + padding: 4px 8px; + border-radius: 2px; +} + +tooltip.background { + background-color: @bg_inactive; + color: @inactive; +} + +tooltip:not(.csd) { + background-color: @bg_inactive; +} + +tooltip>box { + border-spacing: 6px; +} + +tooltip .dim-label { + color: @inactive_rgba_07; +} + +/** + * Color Chooser + */ +colorswatch { + transition: box-shadow 75ms cubic-bezier(0, 0, 0.2, 1); + box-shadow: 0 2px 1px -1px rgba(0, 0, 0, 0.2), 0 1px 1px 0 rgba(0, 0, 0, 0.14), 0 1px 3px 0 @bg_accent_rgba_015; +} + +colorswatch:drop(active), +colorswatch.activatable:hover { + box-shadow: 0 3px 3px -2px rgba(0, 0, 0, 0.2), 0 3px 4px 0 rgba(0, 0, 0, 0.14), 0 1px 8px 0 @bg_accent_rgba_015; +} + +colorswatch:disabled { + opacity: 0.5; +} + +colorswatch.top { + border-top-left-radius: 2px; + border-top-right-radius: 2px; +} + +colorswatch.bottom { + border-bottom-left-radius: 2px; + border-bottom-right-radius: 2px; +} + +colorswatch.left, +colorswatch:first-child:not(.top) { + border-top-left-radius: 2px; + border-bottom-left-radius: 2px; +} + +colorswatch.right, +colorswatch:last-child:not(.bottom) { + border-top-right-radius: 2px; + border-bottom-right-radius: 2px; +} + +colorswatch.dark { + color: @fg_accent; +} + +colorswatch.light { + color: @bg_accent; +} + +colorswatch#add-color-button { + background-color: #141416; + color: @fg; +} + +colorswatch#editor-color-sample { + border-radius: 2px; +} + +colorchooser .popover.osd { + transition: box-shadow 75ms cubic-bezier(0, 0, 0.2, 1); + border-radius: 2px; + box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 @bg_accent_rgba_015, inset 0 1px rgba(255, 255, 255, 0.05); + background-color: #141416; +} + +colorchooser .popover.osd:backdrop { + box-shadow: 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 @bg_accent_rgba_015, inset 0 1px rgba(255, 255, 255, 0.05); +} + +/** + * Misc + */ +/** + * Window Decorations + */ +window.csd { + transition: box-shadow 75ms cubic-bezier(0, 0, 0.2, 1); + border-radius: 2px 2px 0 0; + border-radius: 2px; + box-shadow: 0 8px 10px -5px rgba(0, 0, 0, 0.2), 0 16px 24px 2px rgba(0, 0, 0, 0.14), 0 6px 30px 5px @bg_accent_rgba_015, 0 16px 24px 2px transparent, 0 6px 30px 5px transparent; +} + +window.csd:backdrop { + box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 @bg_accent_rgba_015, 0 16px 24px 2px transparent, 0 6px 30px 5px transparent; +} + +window.ssd { + box-shadow: 0 3px 3px rgba(0, 0, 0, 0.16); +} + +window.solid-csd { + margin: 0; + padding: 2px; + border-radius: 0; + box-shadow: none; + box-shadow: inset 0 1px rgba(255, 255, 255, 0.05); + background-color: #09090a; +} + +window.solid-csd:backdrop { + background-color: @bg_accent000; +} + +window.maximized, +window.fullscreen, +window.tiled, +window.tiled-top, +window.tiled-left, +window.tiled-right, +window.tiled-bottom { + border-radius: 0; +} + +.monospace { + font-family: monospace; +} + +/** + * Touch Copy & Paste + */ +cursor-handle { + min-width: 24px; + min-height: 24px; + border-radius: 50%; + background-color: @accent; +} + +cursor-handle.top:dir(ltr), +cursor-handle.bottom:dir(rtl) { + border-top-right-radius: 0; +} + +cursor-handle.bottom:dir(ltr), +cursor-handle.top:dir(rtl) { + border-top-left-radius: 0; +} + +cursor-handle.insertion-cursor:dir(ltr), +cursor-handle.insertion-cursor:dir(rtl) { + margin-top: 6px; + transform: rotate(45deg); +} + +shortcuts-section { + margin: 20px; +} + +.shortcuts-search-results { + margin: 20px; + border-spacing: 24px; +} + +shortcut { + border-spacing: 6px; +} + +shortcut>.keycap { + min-width: 12px; + min-height: 28px; + padding-left: 8px; + padding-right: 8px; + border-radius: 2px; + box-shadow: 0 2px 1px -1px rgba(0, 0, 0, 0.2), 0 1px 1px 0 rgba(0, 0, 0, 0.14), 0 1px 3px 0 @bg_accent_rgba_015; + background-color: #141416; + color: @fg; + font-size: smaller; +} + +stackswitcher>button.text-button { + min-width: 100px; +} + +stackswitcher.circular { + border-spacing: 12px; +} + +stackswitcher.circular>button.circular { + min-width: 32px; + min-height: 32px; + padding: 0; +} + +/** + * App Icons + */ +/** + * Emoji + */ +popover.emoji-picker>contents { + padding: 0; +} + +popover.emoji-picker>contents emoji { + min-width: 3em; + min-height: 3em; + border-radius: 2px; +} + +popover.emoji-picker>contents emoji:drop(active), +popover.emoji-picker>contents emoji:hover { + background-color: rgba(158, 158, 158, 0.08); +} + +popover.emoji-picker>contents emoji:focus { + background-color: rgba(158, 158, 158, 0.08); +} + +popover.emoji-picker>contents emoji:active { + background-image: radial-gradient(circle, rgba(158, 158, 158, 0.12) 10%, transparent 10%); +} + +.emoji-searchbar { + border-bottom: 1px solid @fg_rgba_02; +} + +.emoji-searchbar>entry.search { + border-image: none; + border-radius: 0; + box-shadow: none; + background-color: transparent; +} + +.emoji-toolbar { + padding: 4px; + border-spacing: 4px; + border-top: 1px solid @fg_rgba_02; +} + +.emoji-toolbar>button.emoji-section:checked { + background-color: @accent_rgba_015; + color: @accent; + background-color: @accent_rgba_015; +} + +.emoji-toolbar>button.emoji-section:checked:drop(active), +.emoji-toolbar>button.emoji-section:checked:hover { + background-color: rgba(56, 125, 183, 0.2608); +} + +.emoji-toolbar>button.emoji-section:checked:focus { + background-color: rgba(56, 125, 183, 0.2608); +} + +.emoji-toolbar>button.emoji-section:checked:active { + background-image: radial-gradient(circle, @accent_rgba_015 10%, transparent 10%); +} + +popover.emoji-completion>contents { + padding: 8px 0; +} + +popover.emoji-completion>contents emoji-completion-row { + min-height: 32px; + padding: 0 8px; +} + +popover.emoji-completion>contents emoji-completion-row:drop(active), +popover.emoji-completion>contents emoji-completion-row:hover { + background-color: rgba(158, 158, 158, 0.08); +} + +popover.emoji-completion>contents emoji-completion-row:focus { + background-color: rgba(158, 158, 158, 0.08); +} + +popover.emoji-completion>contents emoji-completion-row:active { + background-image: radial-gradient(circle, rgba(158, 158, 158, 0.12) 10%, transparent 10%); +} + +popover.emoji-completion>contents emoji-completion-row>box { + border-spacing: 8px; +} + +popover.emoji-completion>contents emoji { + border-radius: 2px; +} + +popover.emoji-completion>contents emoji:drop(active), +popover.emoji-completion>contents emoji:hover { + background-color: rgba(158, 158, 158, 0.08); +} + +popover.emoji-completion>contents emoji:focus { + background-color: rgba(158, 158, 158, 0.08); +} + +popover.emoji-completion>contents emoji:active { + background-image: radial-gradient(circle, rgba(158, 158, 158, 0.12) 10%, transparent 10%); +} + +popover.entry-completion>contents { + padding: 0; +} + +popover.entry-completion>contents treeview.view { + min-height: 32px; + padding: 8px 0; +} + +popover.entry-completion>contents treeview.view>.cell { + padding: 0 4px; +} + +popover.entry-completion>contents treeview.view>.cell:selected:hover { + background-color: rgba(158, 158, 158, 0.08); +} + +/* GTK NAMED COLORS + ---------------- + use responsibly! */ +/* +widget text/foreground color */ +@define-color theme_fg_color @fg; +/* +text color for entries, views and content in general */ +@define-color theme_text_color @fg; +/* +widget base background color */ +@define-color theme_bg_color @bg; +/* +text widgets and the like base background color */ +@define-color theme_base_color #1a1c1e; +/* +base background color of selections */ +@define-color theme_selected_bg_color @accent; +/* +text/foreground color of selections */ +@define-color theme_selected_fg_color @fg_accent; +/* +base background color of insensitive widgets */ +@define-color insensitive_bg_color @bg; +/* +text foreground color of insensitive widgets */ +@define-color insensitive_fg_color @fg_rgba_05; +/* +insensitive text widgets and the like base background color */ +@define-color insensitive_base_color #1a1c1e; +/* +widget text/foreground color on backdrop windows */ +@define-color theme_unfocused_fg_color @fg; +/* +text color for entries, views and content in general on backdrop windows */ +@define-color theme_unfocused_text_color @fg; +/* +widget base background color on backdrop windows */ +@define-color theme_unfocused_bg_color @bg; +/* +text widgets and the like base background color on backdrop windows */ +@define-color theme_unfocused_base_color #1a1c1e; +/* +base background color of selections on backdrop windows */ +@define-color theme_unfocused_selected_bg_color @accent; +/* +text/foreground color of selections on backdrop windows */ +@define-color theme_unfocused_selected_fg_color @fg_accent; +/* +insensitive color on backdrop windows */ +@define-color unfocused_insensitive_color @fg_rgba_05; +/* +widgets main borders color */ +@define-color borders @fg_rgba_02; +/* +widgets main borders color on backdrop windows */ +@define-color unfocused_borders @fg_rgba_02; +/* +these are pretty self explicative */ +@define-color warning_color #ffeb3b; +@define-color error_color #f44336; +@define-color success_color #00e676; +/* +these colors are exported for the window manager and shouldn't be used in applications, +read if you used those and something break with a version upgrade you're on your own... */ +@define-color wm_title @inactive; +@define-color wm_unfocused_title @inactive_rgba_07; +@define-color wm_highlight rgba(255, 255, 255, 0.05); +@define-color wm_bg #09090a; +@define-color wm_unfocused_bg @bg_accent000; +@define-color xfwm4_title @inactive; +@define-color xfwm4_unfocused_title #5a5e61; +/* content view background such as thumbnails view in Photos or Boxes */ +@define-color content_view_bg @bg; +/* Very contrasty background for text views (@theme_text_color foreground) */ +@define-color text_view_bg @bg; +/* placeholder for entries */ +@define-color placeholder_text_color #767778; diff --git a/gtk-theme/dist/gtk-4.0/icons/checkbox-checked-symbolic.svg b/gtk-theme/dist/gtk-4.0/icons/checkbox-checked-symbolic.svg new file mode 100644 index 0000000..8067c11 --- /dev/null +++ b/gtk-theme/dist/gtk-4.0/icons/checkbox-checked-symbolic.svg @@ -0,0 +1,3 @@ + + + diff --git a/gtk-theme/dist/gtk-4.0/icons/checkbox-mixed-symbolic.svg b/gtk-theme/dist/gtk-4.0/icons/checkbox-mixed-symbolic.svg new file mode 100644 index 0000000..76e69c9 --- /dev/null +++ b/gtk-theme/dist/gtk-4.0/icons/checkbox-mixed-symbolic.svg @@ -0,0 +1,3 @@ + + + diff --git a/gtk-theme/dist/gtk-4.0/icons/checkbox-unchecked-symbolic.svg b/gtk-theme/dist/gtk-4.0/icons/checkbox-unchecked-symbolic.svg new file mode 100644 index 0000000..97dbb89 --- /dev/null +++ b/gtk-theme/dist/gtk-4.0/icons/checkbox-unchecked-symbolic.svg @@ -0,0 +1,3 @@ + + + diff --git a/gtk-theme/dist/gtk-4.0/icons/cursor-handle-symbolic.svg b/gtk-theme/dist/gtk-4.0/icons/cursor-handle-symbolic.svg new file mode 100644 index 0000000..e2a252b --- /dev/null +++ b/gtk-theme/dist/gtk-4.0/icons/cursor-handle-symbolic.svg @@ -0,0 +1,3 @@ + + + diff --git a/gtk-theme/dist/gtk-4.0/icons/radio-checked-symbolic.svg b/gtk-theme/dist/gtk-4.0/icons/radio-checked-symbolic.svg new file mode 100644 index 0000000..7b82c3d --- /dev/null +++ b/gtk-theme/dist/gtk-4.0/icons/radio-checked-symbolic.svg @@ -0,0 +1,3 @@ + + + diff --git a/gtk-theme/dist/gtk-4.0/icons/radio-mixed-symbolic.svg b/gtk-theme/dist/gtk-4.0/icons/radio-mixed-symbolic.svg new file mode 100644 index 0000000..55d8916 --- /dev/null +++ b/gtk-theme/dist/gtk-4.0/icons/radio-mixed-symbolic.svg @@ -0,0 +1,3 @@ + + + diff --git a/gtk-theme/dist/gtk-4.0/icons/radio-unchecked-symbolic.svg b/gtk-theme/dist/gtk-4.0/icons/radio-unchecked-symbolic.svg new file mode 100644 index 0000000..6d97559 --- /dev/null +++ b/gtk-theme/dist/gtk-4.0/icons/radio-unchecked-symbolic.svg @@ -0,0 +1,3 @@ + + + diff --git a/gtk-theme/dist/gtk-4.0/icons/small-checkbox-checked-symbolic.svg b/gtk-theme/dist/gtk-4.0/icons/small-checkbox-checked-symbolic.svg new file mode 100644 index 0000000..7ad27d5 --- /dev/null +++ b/gtk-theme/dist/gtk-4.0/icons/small-checkbox-checked-symbolic.svg @@ -0,0 +1,3 @@ + + + diff --git a/gtk-theme/dist/gtk-4.0/icons/small-checkbox-mixed-symbolic.svg b/gtk-theme/dist/gtk-4.0/icons/small-checkbox-mixed-symbolic.svg new file mode 100644 index 0000000..0f80850 --- /dev/null +++ b/gtk-theme/dist/gtk-4.0/icons/small-checkbox-mixed-symbolic.svg @@ -0,0 +1,3 @@ + + + diff --git a/gtk-theme/dist/gtk-4.0/icons/small-checkbox-unchecked-symbolic.svg b/gtk-theme/dist/gtk-4.0/icons/small-checkbox-unchecked-symbolic.svg new file mode 100644 index 0000000..bfe0a56 --- /dev/null +++ b/gtk-theme/dist/gtk-4.0/icons/small-checkbox-unchecked-symbolic.svg @@ -0,0 +1,3 @@ + + + diff --git a/gtk-theme/dist/gtk-4.0/icons/small-radio-checked-symbolic.svg b/gtk-theme/dist/gtk-4.0/icons/small-radio-checked-symbolic.svg new file mode 100644 index 0000000..04a9a21 --- /dev/null +++ b/gtk-theme/dist/gtk-4.0/icons/small-radio-checked-symbolic.svg @@ -0,0 +1,3 @@ + + + diff --git a/gtk-theme/dist/gtk-4.0/icons/small-radio-mixed-symbolic.svg b/gtk-theme/dist/gtk-4.0/icons/small-radio-mixed-symbolic.svg new file mode 100644 index 0000000..31aac91 --- /dev/null +++ b/gtk-theme/dist/gtk-4.0/icons/small-radio-mixed-symbolic.svg @@ -0,0 +1,3 @@ + + + diff --git a/gtk-theme/dist/gtk-4.0/icons/small-radio-unchecked-symbolic.svg b/gtk-theme/dist/gtk-4.0/icons/small-radio-unchecked-symbolic.svg new file mode 100644 index 0000000..f870381 --- /dev/null +++ b/gtk-theme/dist/gtk-4.0/icons/small-radio-unchecked-symbolic.svg @@ -0,0 +1,3 @@ + + + diff --git a/gtk-theme/dist/index.theme b/gtk-theme/dist/index.theme new file mode 100644 index 0000000..43a621d --- /dev/null +++ b/gtk-theme/dist/index.theme @@ -0,0 +1,8 @@ +[Desktop Entry] +Type=X-GNOME-Metatheme +Name=Adaptive-Theme +Comment=A very adaptive theme together with its scripts +Encoding=UTF-8 + +[X-GNOME-Metatheme] +GtkTheme=Adaptive-Theme diff --git a/gtk-theme/src/colours.css b/gtk-theme/src/colours.css new file mode 100644 index 0000000..dac908e --- /dev/null +++ b/gtk-theme/src/colours.css @@ -0,0 +1,149 @@ +/* + * ╭───────────────────────────────────────────────╮ + * │ GTK Theme Colours │ + * ╰───────────────────────────────────────────────╯ +*/ + + + +/* + * Replace the colours with variable names + */ + +/* + * ┌ ┐ + * │ Foreground │ + * └ ┘ +*/ + +/* + * ── Foreground color, main interface text colour ───────────────────── +*/ +@define-color fg {{ colour-foreground-hex }}; +@define-color fg_rgba_07 {{ colour-foreground-rgba-07 }}; +@define-color fg_rgba_06 {{ colour-foreground-rgba-06 }}; +@define-color fg_rgba_05 {{ colour-foreground-rgba-05 }}; +@define-color fg_rgba_03 {{ colour-foreground-rgba-03 }}; +@define-color fg_rgba_02 {{ colour-foreground-rgba-02 }}; +@define-color fg_rgba_01 {{ colour-foreground-rgba-01 }}; + +/* + * ── Foreground accent, usually brighter or darker than default ─────── +*/ +@define-color fg_accent {{ colour-foreground-accent-hex }}; +@define-color fg_accent_rgba_07 {{ colour-foreground-accent-rgba-07 }}; +@define-color fg_accent_rgba_06 {{ colour-foreground-accent-rgba-06 }}; +@define-color fg_accent_rgba_05 {{ colour-foreground-accent-rgba-05 }}; +@define-color fg_accent_rgba_03 {{ colour-foreground-accent-rgba-03 }}; +@define-color fg_accent_rgba_02 {{ colour-foreground-accent-rgba-02 }}; + +/* + * ── Accent colour ──────────────────────────────────────────────────── +*/ +@define-color accent {{ colour-accent-hex }}; +@define-color accent_rgba_05 {{ colour-accent-rgba-05 }}; +@define-color accent_rgba_03 {{ colour-accent-rgba-03 }}; +@define-color accent_rgba_02 {{ colour-accent-rgba-02 }}; +@define-color accent_rgba_015 {{ colour-accent-rgba-015 }}; +@define-color accent_rgba_011 {{ colour-accent-rgba-011 }}; +@define-color accent_rgba_007 {{ colour-accent-rgba-007 }}; + +/* + * ── Accent Gradient ────────────────────────────────────────────────── +*/ +@define-color accent_gradient_1 {{ colour-accent-gradient-1-hex }}; +@define-color accent_gradient_2 {{ colour-accent-gradient-2-hex }}; +@define-color accent_gradient_3 {{ colour-accent-gradient-3-hex }}; +@define-color accent_gradient_4 {{ colour-accent-gradient-4-hex }}; +@define-color accent_gradient_5 {{ colour-accent-gradient-5-hex }}; +@define-color accent_gradient_inverse_1 {{ colour-accent-gradient-inverse-1-hex }}; +@define-color accent_gradient_inverse_2 {{ colour-accent-gradient-inverse-2-hex }}; +@define-color accent_gradient_inverse_3 {{ colour-accent-gradient-inverse-3-hex }}; + +/* + * ── Secondary accent colour ────────────────────────────────────────── +*/ +@define-color accent2 {{ colour-accent-2-hex }}; +@define-color accent2_rgba_05 {{ colour-accent-2-rgba-05 }}; +@define-color accent2_rgba_03 {{ colour-accent-2-rgba-03 }}; +@define-color accent2_rgba_02 {{ colour-accent-2-rgba-02 }}; +@define-color accent2_rgba_015 {{ colour-accent-2-rgba-015 }}; +@define-color accent2_rgba_01 {{ colour-accent-2-rgba-01 }}; + +/* + * ── Tertiary accent colour ─────────────────────────────────────────── +*/ +@define-color accent3 {{ colour-accent-3-hex }}; + +/* + * ── Inactive Colour ────────────────────────────────────────────────── +*/ +@define-color inactive {{ colour-inactive-hex }}; +@define-color inactive_rgba_07 {{ colour-inactive-rgba-07 }}; +@define-color inactive_rgba_05 {{ colour-inactive-rgba-05 }}; +@define-color inactive_rgba_03 {{ colour-inactive-rgba-03 }}; +@define-color inactive_rgba_02 {{ colour-inactive-rgba-02 }}; +@define-color inactive_rgba_015 {{ colour-inactive-rgba-015 }}; + + + + +/* + * ┌ ┐ + * │ Background │ + * └ ┘ +*/ + +/* + * ── Background color, main interface background ────────────────────── +*/ +@define-color bg {{ colour-background-hex }}; +@define-color bg_rgba_07 {{ colour-background-rgba-07 }}; +@define-color bg_rgba_05 {{ colour-background-rgba-05 }}; +@define-color bg_rgba_03 {{ colour-background-rgba-03 }}; +@define-color bg_rgba_02 {{ colour-background-rgba-02 }}; +@define-color bg_rgba_015 {{ colour-background-rgba-015 }}; +@define-color bg_rgba_011 {{ colour-background-rgba-011 }}; + +/* + * ── Accent background color ────────────────────────────────────────── +*/ +@define-color bg_accent {{ colour-background-alternative-hex }}; +@define-color bg_accent_rgba_07 {{ colour-background-alternative-rgba-07 }}; +@define-color bg_accent_rgba_06 {{ colour-background-alternative-rgba-06 }}; +@define-color bg_accent_rgba_05 {{ colour-background-alternative-rgba-05 }}; +@define-color bg_accent_rgba_04 {{ colour-background-alternative-rgba-04 }}; +@define-color bg_accent_rgba_03 {{ colour-background-alternative-rgba-03 }}; +@define-color bg_accent_rgba_02 {{ colour-background-alternative-rgba-02 }}; +@define-color bg_accent_rgba_015 {{ colour-background-alternative-rgba-015 }}; +@define-color bg_accent_rgba_01 {{ colour-background-alternative-rgba-01 }}; + +/* + * ── Tertiary background colour ─────────────────────────────────────── +*/ +@define-color bg_tertiary {{ colour-background-tertiary-hex }}; +@define-color bg_tertiary_rgba_05 {{ colour-background-tertiary-rgba-05 }}; +@define-color bg_tertiary_rgba_02 {{ colour-background-tertiary-rgba-02 }}; + +/* + * ── Inactive background colour ─────────────────────────────────────── +*/ +@define-color bg_inactive {{ colour-inactive-background-hex }}; +@define-color bg_inactive_rgba_07 {{ colour-inactive-background-rgba-07 }}; +@define-color bg_inactive_rgba_05 {{ colour-inactive-background-rgba-05 }}; +@define-color bg_inactive_rgba_04 {{ colour-inactive-background-rgba-04 }}; +@define-color bg_inactive_rgba_03 {{ colour-inactive-background-rgba-03 }}; +@define-color bg_inactive_rgba_02 {{ colour-inactive-background-rgba-02 }}; +@define-color bg_inactive_rgba_015 {{ colour-inactive-background-rgba-015 }}; +@define-color bg_inactive_rgba_01 {{ colour-inactive-background-rgba-01 }}; + +/* + * ── Shadow colours ─────────────────────────────────────────────────── +*/ +@define-color shadow {{ colour-shadow-hex }}; +@define-color shadow_rgba_07 {{ colour-shadow-rgba-07 }}; +@define-color shadow_rgba_05 {{ colour-shadow-rgba-05 }}; +@define-color shadow_rgba_03 {{ colour-shadow-rgba-03 }}; +@define-color shadow_rgba_02 {{ colour-shadow-rgba-02 }}; +@define-color shadow_rgba_015 {{ colour-shadow-rgba-015 }}; +@define-color shadow_rgba_011 {{ colour-shadow-rgba-011 }}; diff --git a/gtk-theme/src/gtk-3.0/gtk.css b/gtk-theme/src/gtk-3.0/gtk.css new file mode 100644 index 0000000..d0ac8a4 --- /dev/null +++ b/gtk-theme/src/gtk-3.0/gtk.css @@ -0,0 +1,7993 @@ +@import '../colours.css'; + +/* + * Replace the colours with variable names. See build/util.js for translation + * This CSS file here is from Material-Black-Blueberry + */ + + +@keyframes ripple { + to { + background-size: 1000% 1000%; + } +} + +@keyframes ripple-on-slider { + to { + background-size: auto, 1000% 1000%; + } +} + +@keyframes ripple-on-headerbar { + from { + background-image: radial-gradient(circle, #387db7 0%, transparent 0%); + } + + to { + background-image: radial-gradient(circle, #387db7 100%, transparent 0%); + } +} + +button, +modelbutton.flat, +.menuitem.button.flat, +notebook>header>tabs>arrow, +check, +radio, +row.activatable { + transition-property: all, border-image, background-size, background-image; + transition-duration: 75ms, 225ms, 300ms, 1200ms; + transition-timing-function: cubic-bezier(0, 0, 0.2, 1); + outline: none; + background-image: radial-gradient(circle, transparent 10%, transparent 0%); + background-repeat: no-repeat; + background-position: center; + background-size: 1000% 1000%; +} + +button:active, +modelbutton.flat:active, +.menuitem.button.flat:active, +notebook>header>tabs>arrow:active, +check:active, +radio:active, +row.activatable:active { + transition-duration: 75ms, 225ms, 0ms, 0ms; + animation: ripple 225ms cubic-bezier(0, 0, 0.2, 1) forwards; + background-size: 0% 0%; +} + +* { + -GtkToolButton-icon-spacing: 0; + -GtkTextView-error-underline-color: #f44336; + -GtkScrolledWindow-scrollbar-spacing: 0; + -GtkToolItemGroup-expander-size: 11; + -GtkWidget-text-handle-width: 24; + -GtkWidget-text-handle-height: 24; + -GtkDialog-button-spacing: 4; + -GtkDialog-action-area-border: 4; + -gtk-secondary-caret-color: #387db7; + outline: 2px solid transparent; + outline-offset: -4px; + -gtk-outline-radius: 2px; +} + +*:focus { + outline-color: rgba(158, 158, 158, 0.08); +} + +/** + * Base States + */ +.background { + background-color: #0f1011; + color: #9e9e9e; +} + +/* + These wildcard seems unavoidable, need to investigate. + Wildcards are bad and troublesome, use them with care, + or better, just don't. + Everytime a wildcard is used a kitten dies, painfully. +*/ +*:disabled { + -gtk-icon-effect: dim; +} + +.gtkstyle-fallback { + background-color: #0f1011; + color: #9e9e9e; +} + +.gtkstyle-fallback:hover { + background-color: #1a1b1c; +} + +.gtkstyle-fallback:active { + background-color: #202122; +} + +.gtkstyle-fallback:disabled { + color: rgba(158, 158, 158, 0.5); +} + +.gtkstyle-fallback:selected { + background-color: #387db7; + color: #fff; +} + +.view:hover { + background-color: rgba(158, 158, 158, 0.04); +} + +.view:selected:hover { + background-color: rgba(56, 125, 183, 0.3744); +} + +.view:disabled { + color: rgba(158, 158, 158, 0.5); +} + +.view:hover, +.view:selected { + border-radius: 2px; +} + +.view selection, +.view:selected { + background-color: rgba(56, 125, 183, 0.32); +} + +textview text { + background-color: #0f1011; + caret-color: #387db7; +} + +frame:not(.flat) textview text, +.frame textview text { + background-color: #1a1c1e; +} + +popover.background textview text { + background-color: #141416; +} + +messagedialog.background textview text { + background-color: #141416; +} + +textview border { + color: rgba(158, 158, 158, 0.7); +} + +.nemo-desktop.nemo-canvas-item, +.caja-desktop.caja-canvas-item, +.nautilus-desktop.nautilus-canvas-item { + color: #fff; + text-shadow: 0 1px 1px rgba(0, 0, 0, 0.2), 0 1px 2px rgba(0, 0, 0, 0.14), 0 1px 3px rgba(0, 0, 0, 0.12); +} + +.nemo-desktop.nemo-canvas-item .rubberband, +.caja-desktop.caja-canvas-item .rubberband, +.nautilus-desktop.nautilus-canvas-item .rubberband, +.nemo-desktop.nemo-canvas-item rubberband, +.caja-desktop.caja-canvas-item rubberband, +.nautilus-desktop.nautilus-canvas-item rubberband { + border: 1px solid #387db7; + background-color: rgba(56, 125, 183, 0.3); +} + +XfdesktopIconView.view .rubberband, +.content-view rubberband, +.content-view .rubberband, +treeview.view rubberband, +flowbox rubberband, +.rubberband, +rubberband { + border: 1px solid #387db7; + background-color: rgba(56, 125, 183, 0.24); +} + +flowbox flowboxchild { + padding: 4px; + border-radius: 2px; +} + +flowbox flowboxchild:selected { + background-color: rgba(56, 125, 183, 0.32); +} + +.content-view .tile:selected { + background-color: transparent; +} + +label { + caret-color: #387db7; +} + +label.separator { + color: rgba(158, 158, 158, 0.7); +} + +label.error { + color: #f44336; +} + +label selection { + background-color: rgba(56, 125, 183, 0.32); +} + +label:disabled { + color: rgba(158, 158, 158, 0.5); +} + +headerbar label:disabled, +menuitem label:disabled, +tab label:disabled, +button label:disabled { + color: inherit; +} + +label.osd { + border-radius: 2px; + background-color: rgba(9, 9, 10, 0.9); + color: #80868b; +} + +.dim-label { + color: rgba(158, 158, 158, 0.7); +} + +assistant .sidebar { + padding: 4px 0; +} + +assistant .sidebar label { + min-height: 32px; + margin: 0 4px; + padding: 0 8px; + border-radius: 2px; + color: rgba(158, 158, 158, 0.5); + font-weight: 500; +} + +assistant .sidebar label.highlight { + background-color: rgba(56, 125, 183, 0.16); + color: #387db7; +} + +/** + * Spinner Animation + */ +@keyframes spin { + to { + -gtk-icon-transform: rotate(1turn); + } +} + +spinner { + background: none; + opacity: 0; + color: #387db7; + -gtk-icon-source: -gtk-icontheme("process-working-symbolic"); + transition: opacity 300ms cubic-bezier(0, 0, 0.2, 1); + animation: spin 1s linear infinite; +} + +spinner:checked { + opacity: 1; +} + +spinner:disabled { + color: rgba(158, 158, 158, 0.3); +} + +/** + * General Typography + */ +.large-title { + font-weight: 400; + font-size: 36pt; +} + +.title-1, +.nautilus-empty-state-icon+.large-title { + font-weight: 400; + font-size: 25.5pt; + letter-spacing: 0.1875pt; +} + +.title-2 { + font-weight: 400; + font-size: 18pt; +} + +.title-3 { + font-weight: 500; + font-size: 15pt; + letter-spacing: 0.1125pt; +} + +.title-4 { + font-weight: 400; + font-size: 12pt; + letter-spacing: 0.375pt; +} + +.heading { + font-weight: 500; + font-size: 1em; +} + +.body { + font-weight: 400; + font-size: 1em; +} + +.caption-heading { + font-weight: 500; + font-size: 9pt; + letter-spacing: 1.125pt; +} + +.caption { + font-weight: 400; + font-size: 9pt; + letter-spacing: 0.3pt; +} + +/** + * Text Entries + */ +spinbutton:not(.vertical), +entry { + min-height: 32px; + padding: 0 8px; + border-radius: 2px 2px 0 0; + transition: all 75ms cubic-bezier(0, 0, 0.2, 1), border-image 225ms cubic-bezier(0, 0, 0.2, 1); + border-image: radial-gradient(circle closest-corner at center calc(100% - 1px), #387db7 0%, transparent 0%) 2/0 0 0; + box-shadow: inset 0 -1px rgba(158, 158, 158, 0.3); + background-color: rgba(158, 158, 158, 0.04); + color: #9e9e9e; + caret-color: #387db7; +} + +spinbutton:focus:not(.vertical), +entry:focus { + border-image: radial-gradient(circle closest-corner at center calc(100% - 1px), #387db7 100%, transparent 0%) 2/0 0 2px; + box-shadow: inset 0 -1px rgba(158, 158, 158, 0.3); + background-color: rgba(158, 158, 158, 0.1168); +} + +spinbutton:drop(active):not(.vertical), +entry:drop(active) { + box-shadow: inset 0 -1px rgba(158, 158, 158, 0.3); + background-color: rgba(158, 158, 158, 0.0784); +} + +spinbutton:disabled:not(.vertical), +entry:disabled { + box-shadow: inset 0 -1px rgba(158, 158, 158, 0.2); + background-color: rgba(158, 158, 158, 0.04); + color: rgba(158, 158, 158, 0.5); +} + +spinbutton.flat:not(.vertical), +entry.flat { + min-height: 0; + padding: 2px; + border-radius: 0; + background-color: transparent; +} + +spinbutton:not(.vertical) image, +entry image { + color: rgba(158, 158, 158, 0.7); +} + +spinbutton:not(.vertical) image:hover, +spinbutton:not(.vertical) image:active, +entry image:hover, +entry image:active { + color: #9e9e9e; +} + +spinbutton:not(.vertical) image:disabled, +entry image:disabled { + color: rgba(158, 158, 158, 0.5); +} + +spinbutton:not(.vertical) image.left, +entry image.left { + margin-left: 0px; + margin-right: 6px; +} + +spinbutton:not(.vertical) image.right, +entry image.right { + margin-left: 6px; + margin-right: 0px; +} + +spinbutton:not(.vertical) selection, +entry selection { + background-color: rgba(56, 125, 183, 0.32); +} + +spinbutton.error:not(.vertical), +entry.error { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1), border-image 225ms cubic-bezier(0, 0, 0.2, 1); + border-image: radial-gradient(circle closest-corner at center calc(100% - 1px), #f44336 0%, transparent 0%) 2/0 0 0; + box-shadow: inset 0 -1px #f44336; + background-color: rgba(158, 158, 158, 0.04); + color: #9e9e9e; + caret-color: #f44336; +} + +spinbutton.error:focus:not(.vertical), +entry.error:focus { + border-image: radial-gradient(circle closest-corner at center calc(100% - 1px), #f44336 100%, transparent 0%) 2/0 0 2px; + box-shadow: inset 0 -1px #f44336; + background-color: rgba(158, 158, 158, 0.1168); +} + +spinbutton.error:disabled:not(.vertical), +entry.error:disabled { + box-shadow: inset 0 -1px rgba(158, 158, 158, 0.2); + background-color: rgba(158, 158, 158, 0.04); + color: rgba(158, 158, 158, 0.5); +} + +spinbutton.warning:not(.vertical), +entry.warning { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1), border-image 225ms cubic-bezier(0, 0, 0.2, 1); + border-image: radial-gradient(circle closest-corner at center calc(100% - 1px), #ffeb3b 0%, transparent 0%) 2/0 0 0; + box-shadow: inset 0 -1px #ffeb3b; + background-color: rgba(158, 158, 158, 0.04); + color: #9e9e9e; + caret-color: #ffeb3b; +} + +spinbutton.warning:focus:not(.vertical), +entry.warning:focus { + border-image: radial-gradient(circle closest-corner at center calc(100% - 1px), #ffeb3b 100%, transparent 0%) 2/0 0 2px; + box-shadow: inset 0 -1px #ffeb3b; + background-color: rgba(158, 158, 158, 0.1168); +} + +spinbutton.warning:disabled:not(.vertical), +entry.warning:disabled { + box-shadow: inset 0 -1px rgba(158, 158, 158, 0.2); + background-color: rgba(158, 158, 158, 0.04); + color: rgba(158, 158, 158, 0.5); +} + +spinbutton:not(.vertical) progress, +entry progress { + margin: 0 -8px -4px; + border-bottom: 2px solid #387db7; + background-color: transparent; +} + +.gedit-search-slider .linked:not(.vertical)>entry, +spinbutton.vertical entry { + border-radius: 2px; + transition: all 75ms cubic-bezier(0, 0, 0.2, 1); + border-image: none; + box-shadow: 0 2px 2px -2px rgba(0, 0, 0, 0.3), 0 1px 2px -1px rgba(0, 0, 0, 0.24), 0 1px 2px -0.6px rgba(0, 0, 0, 0.17); + background-color: #141416; + color: #9e9e9e; + caret-color: #387db7; +} + +.gedit-search-slider .linked:not(.vertical)>entry:focus, +spinbutton.vertical entry:focus { + border-image: none; + box-shadow: 0 3px 2px -2px rgba(0, 0, 0, 0.2), 0 3px 2.4px 0 rgba(0, 0, 0, 0.14), 0 1px 4.8px 0 rgba(0, 0, 0, 0.12); +} + +.gedit-search-slider .linked:not(.vertical)>entry:drop(active), +spinbutton.vertical entry:drop(active) { + box-shadow: 0 3px 2px -2px rgba(0, 0, 0, 0.2), 0 3px 2.4px 0 rgba(0, 0, 0, 0.14), 0 1px 4.8px 0 rgba(0, 0, 0, 0.12); +} + +.gedit-search-slider .linked:not(.vertical)>entry:disabled, +spinbutton.vertical entry:disabled { + box-shadow: 0 2px 2px -2px rgba(0, 0, 0, 0.3), 0 1px 2px -1px rgba(0, 0, 0, 0.24), 0 1px 2px -0.6px rgba(0, 0, 0, 0.17); + background-color: #1a1c1e; + color: rgba(158, 158, 158, 0.5); +} + +.gedit-search-slider .linked:not(.vertical)>entry.error, +spinbutton.vertical entry.error { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1); + border-image: none; + box-shadow: 0 2px 2px -2px rgba(0, 0, 0, 0.3), 0 1px 2px -1px rgba(0, 0, 0, 0.24), 0 1px 2px -0.6px rgba(0, 0, 0, 0.17); + background-color: #f44336; + color: #fff; + caret-color: #fff; +} + +.gedit-search-slider .linked:not(.vertical)>entry.error:focus, +spinbutton.vertical entry.error:focus { + border-image: none; + box-shadow: 0 3px 2px -2px rgba(0, 0, 0, 0.2), 0 3px 2.4px 0 rgba(0, 0, 0, 0.14), 0 1px 4.8px 0 rgba(0, 0, 0, 0.12); +} + +.gedit-search-slider .linked:not(.vertical)>entry.error:disabled, +spinbutton.vertical entry.error:disabled { + box-shadow: 0 2px 2px -2px rgba(0, 0, 0, 0.3), 0 1px 2px -1px rgba(0, 0, 0, 0.24), 0 1px 2px -0.6px rgba(0, 0, 0, 0.17); + background-color: #1a1c1e; + color: rgba(158, 158, 158, 0.5); +} + +.gedit-search-slider .linked:not(.vertical)>entry.error image, +spinbutton.vertical entry.error image { + color: rgba(255, 255, 255, 0.7); +} + +.gedit-search-slider .linked:not(.vertical)>entry.error image:hover, +spinbutton.vertical entry.error image:hover, +.gedit-search-slider .linked:not(.vertical)>entry.error image:active, +spinbutton.vertical entry.error image:active { + color: #fff; +} + +.gedit-search-slider .linked:not(.vertical)>entry.error image:disabled, +spinbutton.vertical entry.error image:disabled { + color: rgba(255, 255, 255, 0.5); +} + +.gedit-search-slider .linked:not(.vertical)>entry.warning, +spinbutton.vertical entry.warning { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1); + border-image: none; + box-shadow: 0 2px 2px -2px rgba(0, 0, 0, 0.3), 0 1px 2px -1px rgba(0, 0, 0, 0.24), 0 1px 2px -0.6px rgba(0, 0, 0, 0.17); + background-color: #ffeb3b; + color: #000; + caret-color: #000; +} + +.gedit-search-slider .linked:not(.vertical)>entry.warning:focus, +spinbutton.vertical entry.warning:focus { + border-image: none; + box-shadow: 0 3px 2px -2px rgba(0, 0, 0, 0.2), 0 3px 2.4px 0 rgba(0, 0, 0, 0.14), 0 1px 4.8px 0 rgba(0, 0, 0, 0.12); +} + +.gedit-search-slider .linked:not(.vertical)>entry.warning:disabled, +spinbutton.vertical entry.warning:disabled { + box-shadow: 0 2px 2px -2px rgba(0, 0, 0, 0.3), 0 1px 2px -1px rgba(0, 0, 0, 0.24), 0 1px 2px -0.6px rgba(0, 0, 0, 0.17); + background-color: #1a1c1e; + color: rgba(158, 158, 158, 0.5); +} + +.gedit-search-slider .linked:not(.vertical)>entry.warning image, +spinbutton.vertical entry.warning image { + color: rgba(0, 0, 0, 0.7); +} + +.gedit-search-slider .linked:not(.vertical)>entry.warning image:hover, +spinbutton.vertical entry.warning image:hover, +.gedit-search-slider .linked:not(.vertical)>entry.warning image:active, +spinbutton.vertical entry.warning image:active { + color: #000; +} + +.gedit-search-slider .linked:not(.vertical)>entry.warning image:disabled, +spinbutton.vertical entry.warning image:disabled { + color: rgba(0, 0, 0, 0.5); +} + +treeview entry, +treeview entry.flat { + background-color: #1a1c1e; +} + +treeview entry, +treeview entry:focus, +treeview entry.flat, +treeview entry.flat:focus { + border-image: none; + box-shadow: none; +} + +.entry-tag, +.documents-entry-tag, +.photos-entry-tag { + margin: 2px; + border-radius: 9999px; + box-shadow: none; + background-color: rgba(158, 158, 158, 0.08); + color: #9e9e9e; +} + +.entry-tag:hover, +.documents-entry-tag:hover, +.photos-entry-tag:hover { + background-image: image(rgba(158, 158, 158, 0.08)); +} + +:dir(ltr) .entry-tag, +:dir(ltr) .documents-entry-tag, +:dir(ltr) .photos-entry-tag { + margin-left: 4px; + margin-right: 0; + padding-left: 12px; + padding-right: 8px; +} + +:dir(rtl) .entry-tag, +:dir(rtl) .documents-entry-tag, +:dir(rtl) .photos-entry-tag { + margin-left: 0; + margin-right: 4px; + padding-left: 8px; + padding-right: 12px; +} + +.entry-tag.button, +.button.documents-entry-tag, +.button.photos-entry-tag { + box-shadow: none; + background-color: transparent; + color: rgba(158, 158, 158, 0.7); +} + +/** + * Buttons + */ +@keyframes needs-attention { + from { + background-image: -gtk-gradient(radial, center center, 0, center center, 0.001, to(#387db7), to(transparent)); + } + + to { + background-image: -gtk-gradient(radial, center center, 0, center center, 0.5, to(#387db7), to(transparent)); + } +} + +button { + min-height: 24px; + min-width: 16px; + padding: 4px 8px; + border-radius: 2px; + color: #9e9e9e; + font-weight: 500; + box-shadow: 0 3px 2px -3px rgba(0, 0, 0, 0.3), 0 2px 2px -1px rgba(0, 0, 0, 0.24), 0 1px 3px 0 rgba(0, 0, 0, 0.12); + background-color: #141416; +} + +button:drop(active), +button:hover { + box-shadow: 0 2px 2.4px -1px rgba(0, 0, 0, 0.2), 0 4px 3px 0 rgba(0, 0, 0, 0.14), 0 1px 6px 0 rgba(0, 0, 0, 0.12); + background-color: #1a1a1b; +} + +button:focus { + box-shadow: 0 2px 2.4px -1px rgba(0, 0, 0, 0.2), 0 4px 3px 0 rgba(0, 0, 0, 0.14), 0 1px 6px 0 rgba(0, 0, 0, 0.12); + background-color: #1f1f21; +} + +button:active { + box-shadow: 0 5px 3px -3px rgba(0, 0, 0, 0.2), 0 8px 6px 1px rgba(0, 0, 0, 0.14), 0 3px 8.4px 2px rgba(0, 0, 0, 0.12); + background-image: radial-gradient(circle, rgba(158, 158, 158, 0.12) 10%, transparent 0%); +} + +button:disabled { + box-shadow: none; + background-color: rgba(158, 158, 158, 0.08); + color: rgba(158, 158, 158, 0.5); +} + +button:checked { + color: #387db7; + box-shadow: 0 3px 2px -3px rgba(0, 0, 0, 0.3), 0 2px 2px -1px rgba(0, 0, 0, 0.24), 0 1px 3px 0 rgba(0, 0, 0, 0.12); + background-color: #1a2530; +} + +button:checked:drop(active), +button:checked:hover { + box-shadow: 0 2px 2.4px -1px rgba(0, 0, 0, 0.2), 0 4px 3px 0 rgba(0, 0, 0, 0.14), 0 1px 6px 0 rgba(0, 0, 0, 0.12); + background-color: #1c2c3b; +} + +button:checked:focus { + box-shadow: 0 2px 2.4px -1px rgba(0, 0, 0, 0.2), 0 4px 3px 0 rgba(0, 0, 0, 0.14), 0 1px 6px 0 rgba(0, 0, 0, 0.12); + background-color: #1e3040; +} + +button:checked:active { + box-shadow: 0 5px 3px -3px rgba(0, 0, 0, 0.2), 0 8px 6px 1px rgba(0, 0, 0, 0.14), 0 3px 8.4px 2px rgba(0, 0, 0, 0.12); + background-image: radial-gradient(circle, rgba(56, 125, 183, 0.16) 10%, transparent 0%); +} + +button:checked:disabled { + box-shadow: none; + background-color: rgba(158, 158, 158, 0.1904); + color: rgba(158, 158, 158, 0.5); +} + +button.text-button { + min-width: 32px; + padding-left: 16px; + padding-right: 16px; +} + +button.image-button { + min-width: 24px; + padding: 4px; + border-radius: 9999px; +} + +button.text-button.image-button { + min-width: 24px; + padding: 4px; + border-radius: 2px; +} + +button.text-button.image-button label:first-child { + margin-left: 12px; +} + +button.text-button.image-button label:last-child { + margin-right: 12px; +} + +button.text-button.image-button image:not(:only-child) { + margin: 0 4px; +} + +.budgie-settings-window buttonbox.inline-toolbar button, +#MatePanelPopupWindow button, +#mate-menu button, +.gedit-search-slider .linked:not(.vertical)>button, +popover.messagepopover .popover-action-area button, +button.sidebar-button, +scrollbar button, +combobox>.linked:not(.vertical)>button:not(:only-child), +spinbutton.vertical button, +spinbutton:not(.vertical) button, +.nemo-window .toolbar button, +.raven .raven-header.top stackswitcher.linked>button, +.caja-navigation-window box.horizontal>button.toggle.image-button, +#CanvasTable button, +layouttabbar button, +.message-input-area button, +filechooser #pathbarbox>stack>box>button, +#buttonbox_frame button, +.drop-shadow button, +.budgie-session-dialog .linked.horizontal>button, +#caja-extra-view-widget button, +.lock-dialog button, +infobar.info>revealer>box button, +infobar.question>revealer>box button, +messagedialog .dialog-action-box button, +.app-notification button, +actionbar>revealer>box button:not(.suggested-action):not(.destructive-action), +popover.background.menu button, +popover.background button.model, +.titlebar button:not(.suggested-action):not(.destructive-action), +toolbar button, +button.flat { + color: rgba(158, 158, 158, 0.7); + box-shadow: none; + background-color: transparent; +} + +.budgie-settings-window buttonbox.inline-toolbar button:drop(active), +#MatePanelPopupWindow button:drop(active), +#mate-menu button:drop(active), +.gedit-search-slider .linked:not(.vertical)>button:drop(active), +popover.messagepopover .popover-action-area button:drop(active), +button.sidebar-button:drop(active), +scrollbar button:drop(active), +combobox>.linked:not(.vertical)>button:drop(active):not(:only-child), +spinbutton.vertical button:drop(active), +spinbutton:not(.vertical) button:drop(active), +.nemo-window .toolbar button:drop(active), +.raven .raven-header.top stackswitcher.linked>button:drop(active), +.caja-navigation-window box.horizontal>button.toggle.image-button:drop(active), +#CanvasTable button:drop(active), +layouttabbar button:drop(active), +.message-input-area button:drop(active), +filechooser #pathbarbox>stack>box>button:drop(active), +#buttonbox_frame button:drop(active), +.drop-shadow button:drop(active), +.budgie-session-dialog .linked.horizontal>button:drop(active), +#caja-extra-view-widget button:drop(active), +.lock-dialog button:drop(active), +infobar.info>revealer>box button:drop(active), +infobar.question>revealer>box button:drop(active), +messagedialog .dialog-action-box button:drop(active), +.app-notification button:drop(active), +actionbar>revealer>box button:drop(active):not(.suggested-action):not(.destructive-action), +popover.background.menu button:drop(active), +popover.background button.model:drop(active), +.titlebar button:drop(active):not(.suggested-action):not(.destructive-action), +toolbar button:drop(active), +button.flat:drop(active), +.budgie-settings-window buttonbox.inline-toolbar button:hover, +#MatePanelPopupWindow button:hover, +#mate-menu button:hover, +.gedit-search-slider .linked:not(.vertical)>button:hover, +popover.messagepopover .popover-action-area button:hover, +button.sidebar-button:hover, +scrollbar button:hover, +combobox>.linked:not(.vertical)>button:hover:not(:only-child), +spinbutton.vertical button:hover, +spinbutton:not(.vertical) button:hover, +.nemo-window .toolbar button:hover, +.raven .raven-header.top stackswitcher.linked>button:hover, +.caja-navigation-window box.horizontal>button.toggle.image-button:hover, +#CanvasTable button:hover, +layouttabbar button:hover, +.message-input-area button:hover, +filechooser #pathbarbox>stack>box>button:hover, +#buttonbox_frame button:hover, +.drop-shadow button:hover, +.budgie-session-dialog .linked.horizontal>button:hover, +#caja-extra-view-widget button:hover, +.lock-dialog button:hover, +infobar.info>revealer>box button:hover, +infobar.question>revealer>box button:hover, +messagedialog .dialog-action-box button:hover, +.app-notification button:hover, +actionbar>revealer>box button:hover:not(.suggested-action):not(.destructive-action), +popover.background.menu button:hover, +popover.background button.model:hover, +.titlebar button:hover:not(.suggested-action):not(.destructive-action), +toolbar button:hover, +button.flat:hover { + box-shadow: none; + background-color: rgba(158, 158, 158, 0.08); +} + +.budgie-settings-window buttonbox.inline-toolbar button:focus, +#MatePanelPopupWindow button:focus, +#mate-menu button:focus, +.gedit-search-slider .linked:not(.vertical)>button:focus, +popover.messagepopover .popover-action-area button:focus, +button.sidebar-button:focus, +scrollbar button:focus, +combobox>.linked:not(.vertical)>button:focus:not(:only-child), +spinbutton.vertical button:focus, +spinbutton:not(.vertical) button:focus, +.nemo-window .toolbar button:focus, +.raven .raven-header.top stackswitcher.linked>button:focus, +.caja-navigation-window box.horizontal>button.toggle.image-button:focus, +#CanvasTable button:focus, +layouttabbar button:focus, +.message-input-area button:focus, +filechooser #pathbarbox>stack>box>button:focus, +#buttonbox_frame button:focus, +.drop-shadow button:focus, +.budgie-session-dialog .linked.horizontal>button:focus, +#caja-extra-view-widget button:focus, +.lock-dialog button:focus, +infobar.info>revealer>box button:focus, +infobar.question>revealer>box button:focus, +messagedialog .dialog-action-box button:focus, +.app-notification button:focus, +actionbar>revealer>box button:focus:not(.suggested-action):not(.destructive-action), +popover.background.menu button:focus, +popover.background button.model:focus, +.titlebar button:focus:not(.suggested-action):not(.destructive-action), +toolbar button:focus, +button.flat:focus { + box-shadow: none; + background-color: rgba(158, 158, 158, 0.08); +} + +.budgie-settings-window buttonbox.inline-toolbar button:active, +#MatePanelPopupWindow button:active, +#mate-menu button:active, +.gedit-search-slider .linked:not(.vertical)>button:active, +popover.messagepopover .popover-action-area button:active, +button.sidebar-button:active, +scrollbar button:active, +combobox>.linked:not(.vertical)>button:active:not(:only-child), +spinbutton.vertical button:active, +spinbutton:not(.vertical) button:active, +.nemo-window .toolbar button:active, +.raven .raven-header.top stackswitcher.linked>button:active, +.caja-navigation-window box.horizontal>button.toggle.image-button:active, +#CanvasTable button:active, +layouttabbar button:active, +.message-input-area button:active, +filechooser #pathbarbox>stack>box>button:active, +#buttonbox_frame button:active, +.drop-shadow button:active, +.budgie-session-dialog .linked.horizontal>button:active, +#caja-extra-view-widget button:active, +.lock-dialog button:active, +infobar.info>revealer>box button:active, +infobar.question>revealer>box button:active, +messagedialog .dialog-action-box button:active, +.app-notification button:active, +actionbar>revealer>box button:active:not(.suggested-action):not(.destructive-action), +popover.background.menu button:active, +popover.background button.model:active, +.titlebar button:active:not(.suggested-action):not(.destructive-action), +toolbar button:active, +button.flat:active { + box-shadow: none; + background-image: radial-gradient(circle, rgba(158, 158, 158, 0.12) 10%, transparent 0%); +} + +.budgie-settings-window buttonbox.inline-toolbar button:disabled, +#MatePanelPopupWindow button:disabled, +#mate-menu button:disabled, +.gedit-search-slider .linked:not(.vertical)>button:disabled, +popover.messagepopover .popover-action-area button:disabled, +button.sidebar-button:disabled, +scrollbar button:disabled, +combobox>.linked:not(.vertical)>button:disabled:not(:only-child), +spinbutton.vertical button:disabled, +spinbutton:not(.vertical) button:disabled, +.nemo-window .toolbar button:disabled, +.raven .raven-header.top stackswitcher.linked>button:disabled, +.caja-navigation-window box.horizontal>button.toggle.image-button:disabled, +#CanvasTable button:disabled, +layouttabbar button:disabled, +.message-input-area button:disabled, +filechooser #pathbarbox>stack>box>button:disabled, +#buttonbox_frame button:disabled, +.drop-shadow button:disabled, +.budgie-session-dialog .linked.horizontal>button:disabled, +#caja-extra-view-widget button:disabled, +.lock-dialog button:disabled, +infobar.info>revealer>box button:disabled, +infobar.question>revealer>box button:disabled, +messagedialog .dialog-action-box button:disabled, +.app-notification button:disabled, +actionbar>revealer>box button:disabled:not(.suggested-action):not(.destructive-action), +popover.background.menu button:disabled, +popover.background button.model:disabled, +.titlebar button:disabled:not(.suggested-action):not(.destructive-action), +toolbar button:disabled, +button.flat:disabled { + background-color: transparent; + color: rgba(158, 158, 158, 0.3); +} + +.nemo-window .toolbar button:checked, +.raven .raven-header.top stackswitcher.linked>button:checked, +.caja-navigation-window box.horizontal>button.toggle.image-button:checked, +#CanvasTable button:checked, +layouttabbar button:checked, +.message-input-area button:checked, +filechooser #pathbarbox>stack>box>button:checked, +#buttonbox_frame button:checked, +.drop-shadow button:checked, +.budgie-session-dialog .linked.horizontal>button:checked, +#caja-extra-view-widget button:checked, +.lock-dialog button:checked, +infobar.info>revealer>box button:checked, +infobar.question>revealer>box button:checked, +messagedialog .dialog-action-box button:checked, +.app-notification button:checked, +actionbar>revealer>box button:checked:not(.suggested-action):not(.destructive-action), +popover.background.menu button:checked, +popover.background button.model:checked, +.titlebar button:checked:not(.suggested-action):not(.destructive-action), +toolbar button:checked, +button.flat:checked { + color: #387db7; + box-shadow: none; + background-color: rgba(56, 125, 183, 0.16); +} + +.nemo-window .toolbar button:checked:drop(active), +.raven .raven-header.top stackswitcher.linked>button:checked:drop(active), +.caja-navigation-window box.horizontal>button.toggle.image-button:checked:drop(active), +#CanvasTable button:checked:drop(active), +layouttabbar button:checked:drop(active), +.message-input-area button:checked:drop(active), +filechooser #pathbarbox>stack>box>button:checked:drop(active), +#buttonbox_frame button:checked:drop(active), +.drop-shadow button:checked:drop(active), +.budgie-session-dialog .linked.horizontal>button:checked:drop(active), +#caja-extra-view-widget button:checked:drop(active), +.lock-dialog button:checked:drop(active), +infobar.info>revealer>box button:checked:drop(active), +infobar.question>revealer>box button:checked:drop(active), +messagedialog .dialog-action-box button:checked:drop(active), +.app-notification button:checked:drop(active), +actionbar>revealer>box button:checked:drop(active):not(.suggested-action):not(.destructive-action), +popover.background.menu button:checked:drop(active), +popover.background button.model:checked:drop(active), +.titlebar button:checked:drop(active):not(.suggested-action):not(.destructive-action), +toolbar button:checked:drop(active), +button.flat:checked:drop(active), +.nemo-window .toolbar button:checked:hover, +.raven .raven-header.top stackswitcher.linked>button:checked:hover, +.caja-navigation-window box.horizontal>button.toggle.image-button:checked:hover, +#CanvasTable button:checked:hover, +layouttabbar button:checked:hover, +.message-input-area button:checked:hover, +filechooser #pathbarbox>stack>box>button:checked:hover, +#buttonbox_frame button:checked:hover, +.drop-shadow button:checked:hover, +.budgie-session-dialog .linked.horizontal>button:checked:hover, +#caja-extra-view-widget button:checked:hover, +.lock-dialog button:checked:hover, +infobar.info>revealer>box button:checked:hover, +infobar.question>revealer>box button:checked:hover, +messagedialog .dialog-action-box button:checked:hover, +.app-notification button:checked:hover, +actionbar>revealer>box button:checked:hover:not(.suggested-action):not(.destructive-action), +popover.background.menu button:checked:hover, +popover.background button.model:checked:hover, +.titlebar button:checked:hover:not(.suggested-action):not(.destructive-action), +toolbar button:checked:hover, +button.flat:checked:hover { + box-shadow: none; + background-color: rgba(56, 125, 183, 0.2608); +} + +.nemo-window .toolbar button:checked:focus, +.raven .raven-header.top stackswitcher.linked>button:checked:focus, +.caja-navigation-window box.horizontal>button.toggle.image-button:checked:focus, +#CanvasTable button:checked:focus, +layouttabbar button:checked:focus, +.message-input-area button:checked:focus, +filechooser #pathbarbox>stack>box>button:checked:focus, +#buttonbox_frame button:checked:focus, +.drop-shadow button:checked:focus, +.budgie-session-dialog .linked.horizontal>button:checked:focus, +#caja-extra-view-widget button:checked:focus, +.lock-dialog button:checked:focus, +infobar.info>revealer>box button:checked:focus, +infobar.question>revealer>box button:checked:focus, +messagedialog .dialog-action-box button:checked:focus, +.app-notification button:checked:focus, +actionbar>revealer>box button:checked:focus:not(.suggested-action):not(.destructive-action), +popover.background.menu button:checked:focus, +popover.background button.model:checked:focus, +.titlebar button:checked:focus:not(.suggested-action):not(.destructive-action), +toolbar button:checked:focus, +button.flat:checked:focus { + box-shadow: none; + background-color: rgba(56, 125, 183, 0.2608); +} + +.nemo-window .toolbar button:checked:active, +.raven .raven-header.top stackswitcher.linked>button:checked:active, +.caja-navigation-window box.horizontal>button.toggle.image-button:checked:active, +#CanvasTable button:checked:active, +layouttabbar button:checked:active, +.message-input-area button:checked:active, +filechooser #pathbarbox>stack>box>button:checked:active, +#buttonbox_frame button:checked:active, +.drop-shadow button:checked:active, +.budgie-session-dialog .linked.horizontal>button:checked:active, +#caja-extra-view-widget button:checked:active, +.lock-dialog button:checked:active, +infobar.info>revealer>box button:checked:active, +infobar.question>revealer>box button:checked:active, +messagedialog .dialog-action-box button:checked:active, +.app-notification button:checked:active, +actionbar>revealer>box button:checked:active:not(.suggested-action):not(.destructive-action), +popover.background.menu button:checked:active, +popover.background button.model:checked:active, +.titlebar button:checked:active:not(.suggested-action):not(.destructive-action), +toolbar button:checked:active, +button.flat:checked:active { + box-shadow: none; + background-image: radial-gradient(circle, rgba(56, 125, 183, 0.16) 10%, transparent 0%); +} + +.nemo-window .toolbar button:checked:disabled, +.raven .raven-header.top stackswitcher.linked>button:checked:disabled, +.caja-navigation-window box.horizontal>button.toggle.image-button:checked:disabled, +#CanvasTable button:checked:disabled, +layouttabbar button:checked:disabled, +.message-input-area button:checked:disabled, +filechooser #pathbarbox>stack>box>button:checked:disabled, +#buttonbox_frame button:checked:disabled, +.drop-shadow button:checked:disabled, +.budgie-session-dialog .linked.horizontal>button:checked:disabled, +#caja-extra-view-widget button:checked:disabled, +.lock-dialog button:checked:disabled, +infobar.info>revealer>box button:checked:disabled, +infobar.question>revealer>box button:checked:disabled, +messagedialog .dialog-action-box button:checked:disabled, +.app-notification button:checked:disabled, +actionbar>revealer>box button:checked:disabled:not(.suggested-action):not(.destructive-action), +popover.background.menu button:checked:disabled, +popover.background button.model:checked:disabled, +.titlebar button:checked:disabled:not(.suggested-action):not(.destructive-action), +toolbar button:checked:disabled, +button.flat:checked:disabled { + color: rgba(158, 158, 158, 0.5); +} + +#buttonbox_frame button.text-button, +.drop-shadow button.text-button, +.budgie-session-dialog .linked.horizontal>button.text-button, +#caja-extra-view-widget button.text-button, +.lock-dialog button.text-button, +infobar.info>revealer>box button.text-button, +infobar.question>revealer>box button.text-button, +messagedialog .dialog-action-box button.text-button, +.app-notification button.text-button, +actionbar>revealer>box button.text-button:not(.suggested-action):not(.destructive-action), +popover.background.menu button.text-button, +popover.background button.text-button.model, +.titlebar button.text-button:not(.suggested-action):not(.destructive-action), +toolbar button.text-button, +button.flat.text-button { + min-width: 48px; + padding-left: 8px; + padding-right: 8px; +} + +#buttonbox_frame button.text-button.image-button, +.drop-shadow button.text-button.image-button, +.budgie-session-dialog .linked.horizontal>button.text-button.image-button, +#caja-extra-view-widget button.text-button.image-button, +.lock-dialog button.text-button.image-button, +infobar.info>revealer>box button.text-button.image-button, +infobar.question>revealer>box button.text-button.image-button, +messagedialog .dialog-action-box button.text-button.image-button, +.app-notification button.text-button.image-button, +actionbar>revealer>box button.text-button.image-button:not(.suggested-action):not(.destructive-action), +popover.background.menu button.text-button.image-button, +popover.background button.text-button.image-button.model, +.titlebar button.text-button.image-button:not(.suggested-action):not(.destructive-action), +toolbar button.text-button.image-button, +button.flat.text-button.image-button { + min-width: 24px; + padding: 4px; +} + +#buttonbox_frame button.text-button.image-button label:first-child, +.drop-shadow button.text-button.image-button label:first-child, +.budgie-session-dialog .linked.horizontal>button.text-button.image-button label:first-child, +#caja-extra-view-widget button.text-button.image-button label:first-child, +.lock-dialog button.text-button.image-button label:first-child, +infobar.info>revealer>box button.text-button.image-button label:first-child, +infobar.question>revealer>box button.text-button.image-button label:first-child, +messagedialog .dialog-action-box button.text-button.image-button label:first-child, +.app-notification button.text-button.image-button label:first-child, +actionbar>revealer>box button.text-button.image-button:not(.suggested-action):not(.destructive-action) label:first-child, +popover.background.menu button.text-button.image-button label:first-child, +popover.background button.text-button.image-button.model label:first-child, +.titlebar button.text-button.image-button:not(.suggested-action):not(.destructive-action) label:first-child, +toolbar button.text-button.image-button label:first-child, +button.flat.text-button.image-button label:first-child { + margin-left: 8px; +} + +#buttonbox_frame button.text-button.image-button label:last-child, +.drop-shadow button.text-button.image-button label:last-child, +.budgie-session-dialog .linked.horizontal>button.text-button.image-button label:last-child, +#caja-extra-view-widget button.text-button.image-button label:last-child, +.lock-dialog button.text-button.image-button label:last-child, +infobar.info>revealer>box button.text-button.image-button label:last-child, +infobar.question>revealer>box button.text-button.image-button label:last-child, +messagedialog .dialog-action-box button.text-button.image-button label:last-child, +.app-notification button.text-button.image-button label:last-child, +actionbar>revealer>box button.text-button.image-button:not(.suggested-action):not(.destructive-action) label:last-child, +popover.background.menu button.text-button.image-button label:last-child, +popover.background button.text-button.image-button.model label:last-child, +.titlebar button.text-button.image-button:not(.suggested-action):not(.destructive-action) label:last-child, +toolbar button.text-button.image-button label:last-child, +button.flat.text-button.image-button label:last-child { + margin-right: 8px; +} + +#buttonbox_frame .linked:not(.vertical)>button:not(:only-child), +.drop-shadow .linked:not(.vertical)>button:not(:only-child), +.budgie-session-dialog .linked.horizontal:not(.vertical)>button:not(:only-child), +#caja-extra-view-widget .linked:not(.vertical)>button:not(:only-child), +.lock-dialog .linked:not(.vertical)>button:not(:only-child), +infobar.info>revealer>box .linked:not(.vertical)>button:not(:only-child), +infobar.question>revealer>box .linked:not(.vertical)>button:not(:only-child), +messagedialog .dialog-action-box .linked:not(.vertical)>button:not(:only-child), +.app-notification .linked:not(.vertical)>button:not(:only-child), +actionbar>revealer>box .linked:not(.vertical)>button:not(:only-child):not(.suggested-action):not(.destructive-action), +popover.background.menu .linked:not(.vertical)>button:not(:only-child), +popover.background .linked:not(.vertical)>button.model:not(:only-child), +.titlebar .linked:not(.vertical)>button:not(:only-child):not(.suggested-action):not(.destructive-action), +toolbar .linked:not(.vertical)>button:not(:only-child), +#buttonbox_frame .linked.vertical>button:not(:only-child), +.drop-shadow .linked.vertical>button:not(:only-child), +.budgie-session-dialog .linked.horizontal.vertical>button:not(:only-child), +#caja-extra-view-widget .linked.vertical>button:not(:only-child), +.lock-dialog .linked.vertical>button:not(:only-child), +infobar.info>revealer>box .linked.vertical>button:not(:only-child), +infobar.question>revealer>box .linked.vertical>button:not(:only-child), +messagedialog .dialog-action-box .linked.vertical>button:not(:only-child), +.app-notification .linked.vertical>button:not(:only-child), +actionbar>revealer>box .linked.vertical>button:not(:only-child):not(.suggested-action):not(.destructive-action), +popover.background.menu .linked.vertical>button:not(:only-child), +popover.background .linked.vertical>button.model:not(:only-child), +.titlebar .linked.vertical>button:not(:only-child):not(.suggested-action):not(.destructive-action), +toolbar .linked.vertical>button:not(:only-child), +.linked:not(.vertical)>button.flat:not(:only-child), +.linked.vertical>button.flat:not(:only-child) { + border-radius: 2px; +} + +#buttonbox_frame .linked:not(.vertical)>button:not(:only-child).image-button:not(.text-button), +.drop-shadow .linked:not(.vertical)>button:not(:only-child).image-button:not(.text-button), +.budgie-session-dialog .linked.horizontal:not(.vertical)>button:not(:only-child).image-button:not(.text-button), +#caja-extra-view-widget .linked:not(.vertical)>button:not(:only-child).image-button:not(.text-button), +.lock-dialog .linked:not(.vertical)>button:not(:only-child).image-button:not(.text-button), +infobar.info>revealer>box .linked:not(.vertical)>button:not(:only-child).image-button:not(.text-button), +infobar.question>revealer>box .linked:not(.vertical)>button:not(:only-child).image-button:not(.text-button), +messagedialog .dialog-action-box .linked:not(.vertical)>button:not(:only-child).image-button:not(.text-button), +.app-notification .linked:not(.vertical)>button:not(:only-child).image-button:not(.text-button), +actionbar>revealer>box .linked:not(.vertical)>button:not(:only-child).image-button:not(.text-button):not(.suggested-action):not(.destructive-action), +popover.background.menu .linked:not(.vertical)>button:not(:only-child).image-button:not(.text-button), +popover.background .linked:not(.vertical)>button.model:not(:only-child).image-button:not(.text-button), +.titlebar .linked:not(.vertical)>button:not(:only-child).image-button:not(.text-button):not(.suggested-action):not(.destructive-action), +toolbar .linked:not(.vertical)>button:not(:only-child).image-button:not(.text-button), +#buttonbox_frame .linked.vertical>button:not(:only-child).image-button:not(.text-button), +.drop-shadow .linked.vertical>button:not(:only-child).image-button:not(.text-button), +.budgie-session-dialog .linked.horizontal.vertical>button:not(:only-child).image-button:not(.text-button), +#caja-extra-view-widget .linked.vertical>button:not(:only-child).image-button:not(.text-button), +.lock-dialog .linked.vertical>button:not(:only-child).image-button:not(.text-button), +infobar.info>revealer>box .linked.vertical>button:not(:only-child).image-button:not(.text-button), +infobar.question>revealer>box .linked.vertical>button:not(:only-child).image-button:not(.text-button), +messagedialog .dialog-action-box .linked.vertical>button:not(:only-child).image-button:not(.text-button), +.app-notification .linked.vertical>button:not(:only-child).image-button:not(.text-button), +actionbar>revealer>box .linked.vertical>button:not(:only-child).image-button:not(.text-button):not(.suggested-action):not(.destructive-action), +popover.background.menu .linked.vertical>button:not(:only-child).image-button:not(.text-button), +popover.background .linked.vertical>button.model:not(:only-child).image-button:not(.text-button), +.titlebar .linked.vertical>button:not(:only-child).image-button:not(.text-button):not(.suggested-action):not(.destructive-action), +toolbar .linked.vertical>button:not(:only-child).image-button:not(.text-button), +.linked:not(.vertical)>button.flat:not(:only-child).image-button:not(.text-button), +.linked.vertical>button.flat:not(:only-child).image-button:not(.text-button) { + border-radius: 9999px; +} + +button.osd { + padding: 8px 12px; +} + +button.osd.image-button { + padding: 8px; +} + +button.osd:disabled { + opacity: 0; +} + +button.suggested-action { + color: #fff; + box-shadow: 0 3px 2px -3px rgba(0, 0, 0, 0.3), 0 2px 2px -1px rgba(0, 0, 0, 0.24), 0 1px 3px 0 rgba(0, 0, 0, 0.12); + background-color: #387db7; +} + +button.suggested-action:drop(active), +button.suggested-action:hover { + box-shadow: 0 2px 2.4px -1px rgba(0, 0, 0, 0.2), 0 4px 3px 0 rgba(0, 0, 0, 0.14), 0 1px 6px 0 rgba(0, 0, 0, 0.12); + background-color: #4887bd; +} + +button.suggested-action:focus { + box-shadow: 0 2px 2.4px -1px rgba(0, 0, 0, 0.2), 0 4px 3px 0 rgba(0, 0, 0, 0.14), 0 1px 6px 0 rgba(0, 0, 0, 0.12); + background-color: #508dc0; +} + +button.suggested-action:active { + box-shadow: 0 5px 3px -3px rgba(0, 0, 0, 0.2), 0 8px 6px 1px rgba(0, 0, 0, 0.14), 0 3px 8.4px 2px rgba(0, 0, 0, 0.12); + background-image: radial-gradient(circle, rgba(255, 255, 255, 0.12) 10%, transparent 0%); +} + +button.suggested-action:disabled { + box-shadow: none; + background-color: rgba(158, 158, 158, 0.08); + color: rgba(158, 158, 158, 0.5); +} + +button.suggested-action:checked { + box-shadow: 0 3px 2px -3px rgba(0, 0, 0, 0.3), 0 2px 2px -1px rgba(0, 0, 0, 0.24), 0 1px 3px 0 rgba(0, 0, 0, 0.12); + background-color: #5892c3; +} + +button.suggested-action:checked:drop(active), +button.suggested-action:checked:hover { + box-shadow: 0 2px 2.4px -1px rgba(0, 0, 0, 0.2), 0 4px 3px 0 rgba(0, 0, 0, 0.14), 0 1px 6px 0 rgba(0, 0, 0, 0.12); + background-color: #5f96c5; +} + +button.suggested-action:checked:focus { + box-shadow: 0 2px 2.4px -1px rgba(0, 0, 0, 0.2), 0 4px 3px 0 rgba(0, 0, 0, 0.14), 0 1px 6px 0 rgba(0, 0, 0, 0.12); + background-color: #659bc8; +} + +button.suggested-action:checked:active { + box-shadow: 0 5px 3px -3px rgba(0, 0, 0, 0.2), 0 8px 6px 1px rgba(0, 0, 0, 0.14), 0 3px 8.4px 2px rgba(0, 0, 0, 0.12); + background-image: radial-gradient(circle, rgba(255, 255, 255, 0.12) 10%, transparent 0%); +} + +button.suggested-action.flat { + color: #387db7; + box-shadow: none; + background-color: transparent; +} + +button.suggested-action.flat:drop(active), +button.suggested-action.flat:hover { + box-shadow: none; + background-color: rgba(56, 125, 183, 0.12); +} + +button.suggested-action.flat:focus { + box-shadow: none; + background-color: rgba(56, 125, 183, 0.12); +} + +button.suggested-action.flat:active { + box-shadow: none; + background-image: radial-gradient(circle, rgba(56, 125, 183, 0.16) 10%, transparent 0%); +} + +button.suggested-action.flat:disabled { + box-shadow: none; + background-color: transparent; + color: rgba(158, 158, 158, 0.3); +} + +button.suggested-action.flat:checked { + box-shadow: none; + background-color: rgba(56, 125, 183, 0.16); +} + +button.suggested-action.flat:checked:drop(active), +button.suggested-action.flat:checked:hover { + box-shadow: none; + background-color: rgba(56, 125, 183, 0.2608); +} + +button.suggested-action.flat:checked:focus { + box-shadow: none; + background-color: rgba(56, 125, 183, 0.2608); +} + +button.suggested-action.flat:checked:active { + box-shadow: none; + background-image: radial-gradient(circle, rgba(56, 125, 183, 0.16) 10%, transparent 0%); +} + +button.destructive-action { + color: #fff; + box-shadow: 0 3px 2px -3px rgba(0, 0, 0, 0.3), 0 2px 2px -1px rgba(0, 0, 0, 0.24), 0 1px 3px 0 rgba(0, 0, 0, 0.12); + background-color: #f44336; +} + +button.destructive-action:drop(active), +button.destructive-action:hover { + box-shadow: 0 2px 2.4px -1px rgba(0, 0, 0, 0.2), 0 4px 3px 0 rgba(0, 0, 0, 0.14), 0 1px 6px 0 rgba(0, 0, 0, 0.12); + background-color: #f55246; +} + +button.destructive-action:focus { + box-shadow: 0 2px 2.4px -1px rgba(0, 0, 0, 0.2), 0 4px 3px 0 rgba(0, 0, 0, 0.14), 0 1px 6px 0 rgba(0, 0, 0, 0.12); + background-color: #f55a4e; +} + +button.destructive-action:active { + box-shadow: 0 5px 3px -3px rgba(0, 0, 0, 0.2), 0 8px 6px 1px rgba(0, 0, 0, 0.14), 0 3px 8.4px 2px rgba(0, 0, 0, 0.12); + background-image: radial-gradient(circle, rgba(255, 255, 255, 0.12) 10%, transparent 0%); +} + +button.destructive-action:disabled { + box-shadow: none; + background-color: rgba(158, 158, 158, 0.08); + color: rgba(158, 158, 158, 0.5); +} + +button.destructive-action:checked { + box-shadow: 0 3px 2px -3px rgba(0, 0, 0, 0.3), 0 2px 2px -1px rgba(0, 0, 0, 0.24), 0 1px 3px 0 rgba(0, 0, 0, 0.12); + background-color: #f66156; +} + +button.destructive-action:checked:drop(active), +button.destructive-action:checked:hover { + box-shadow: 0 2px 2.4px -1px rgba(0, 0, 0, 0.2), 0 4px 3px 0 rgba(0, 0, 0, 0.14), 0 1px 6px 0 rgba(0, 0, 0, 0.12); + background-color: #f76e64; +} + +button.destructive-action:checked:focus { + box-shadow: 0 2px 2.4px -1px rgba(0, 0, 0, 0.2), 0 4px 3px 0 rgba(0, 0, 0, 0.14), 0 1px 6px 0 rgba(0, 0, 0, 0.12); + background-color: #f7746a; +} + +button.destructive-action:checked:active { + box-shadow: 0 5px 3px -3px rgba(0, 0, 0, 0.2), 0 8px 6px 1px rgba(0, 0, 0, 0.14), 0 3px 8.4px 2px rgba(0, 0, 0, 0.12); + background-image: radial-gradient(circle, rgba(255, 255, 255, 0.12) 10%, transparent 0%); +} + +button.destructive-action.flat { + color: #f44336; + box-shadow: none; + background-color: transparent; +} + +button.destructive-action.flat:drop(active), +button.destructive-action.flat:hover { + box-shadow: none; + background-color: rgba(244, 67, 54, 0.12); +} + +button.destructive-action.flat:focus { + box-shadow: none; + background-color: rgba(244, 67, 54, 0.12); +} + +button.destructive-action.flat:active { + box-shadow: none; + background-image: radial-gradient(circle, rgba(244, 67, 54, 0.16) 10%, transparent 0%); +} + +button.destructive-action.flat:disabled { + box-shadow: none; + background-color: transparent; + color: rgba(158, 158, 158, 0.3); +} + +button.destructive-action.flat:checked { + box-shadow: none; + background-color: rgba(244, 67, 54, 0.16); +} + +button.destructive-action.flat:checked:drop(active), +button.destructive-action.flat:checked:hover { + box-shadow: none; + background-color: rgba(244, 67, 54, 0.2608); +} + +button.destructive-action.flat:checked:focus { + box-shadow: none; + background-color: rgba(244, 67, 54, 0.2608); +} + +button.destructive-action.flat:checked:active { + box-shadow: none; + background-image: radial-gradient(circle, rgba(244, 67, 54, 0.16) 10%, transparent 0%); +} + +.stack-switcher>button>label { + margin: 0 -6px; + padding: 0 6px; +} + +.stack-switcher>button>image { + margin: -3px -6px; + padding: 3px 6px; +} + +.stack-switcher>button.needs-attention:checked>label, +.stack-switcher>button.needs-attention:checked>image { + animation: none; + background-image: none; +} + +.inline-toolbar button:not(.text-button) { + border-radius: 9999px; +} + +.primary-toolbar button { + -gtk-icon-shadow: none; +} + +button.close, +button.circular { + border-radius: 9999px; +} + +.pluma-window paned.horizontal box.vertical box.horizontal button.flat, +.nautilus-window .floating-bar button, +.gedit-document-panel row button.flat, +.gedit-search-slider .linked:not(.vertical)>button, +button.sidebar-button, +notebook>header>tabs>tab button.flat, +spinbutton:not(.vertical) button { + min-height: 24px; + min-width: 24px; + padding: 0; + border-radius: 9999px; +} + +stacksidebar.sidebar row.needs-attention>label, +.stack-switcher>button.needs-attention>label, +.stack-switcher>button.needs-attention>image { + animation: needs-attention 225ms cubic-bezier(0, 0, 0.2, 1) forwards; + background-repeat: no-repeat; + background-position: right 3px; + background-size: 6px 6px; +} + +stacksidebar.sidebar row.needs-attention>label:dir(rtl), +.stack-switcher>button.needs-attention>label:dir(rtl), +.stack-switcher>button.needs-attention>image:dir(rtl) { + background-position: left 3px; +} + +.linked:not(.vertical)>combobox:not(:first-child)>box>button.combo, +.linked:not(.vertical)>spinbutton:not(:first-child):not(.vertical), +.linked:not(.vertical)>entry:not(:first-child), +.linked:not(.vertical)>button:not(:first-child) { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} + +.linked:not(.vertical)>combobox:not(:last-child)>box>button.combo, +.linked:not(.vertical)>spinbutton:not(:last-child):not(.vertical), +.linked:not(.vertical)>entry:not(:last-child), +.linked:not(.vertical)>button:not(:last-child) { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} + +.linked.vertical>combobox:not(:first-child)>box>button.combo, +.linked.vertical>spinbutton:not(:first-child):not(.vertical), +.linked.vertical>entry:not(:first-child), +.linked.vertical>button:not(:first-child) { + border-top-left-radius: 0; + border-top-right-radius: 0; +} + +.linked.vertical>combobox:not(:last-child)>box>button.combo, +.linked.vertical>spinbutton:not(:last-child):not(.vertical), +.linked.vertical>entry:not(:last-child), +.linked.vertical>button:not(:last-child) { + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; +} + +.linked:not(.vertical)>button.image-button:first-child:not(.text-button) { + border-top-left-radius: 2px; + border-bottom-left-radius: 2px; +} + +.linked:not(.vertical)>button.image-button:last-child:not(.text-button) { + border-top-right-radius: 2px; + border-bottom-right-radius: 2px; +} + +.linked:not(.vertical)>button.image-button:only-child:not(.text-button) { + border-radius: 9999px; +} + +.linked.vertical>button.image-button:first-child:not(.text-button) { + border-top-left-radius: 2px; + border-top-right-radius: 2px; +} + +.linked.vertical>button.image-button:last-child:not(.text-button) { + border-bottom-left-radius: 2px; + border-bottom-right-radius: 2px; +} + +.linked.vertical>button.image-button:only-child:not(.text-button) { + border-radius: 9999px; +} + +/* menu buttons */ +modelbutton.flat, +.menuitem.button.flat { + min-height: 28px; + padding: 0 8px; + border-radius: 2px; +} + +modelbutton.flat:drop(active), +modelbutton.flat:hover, +.menuitem.button.flat:drop(active), +.menuitem.button.flat:hover { + background-color: rgba(158, 158, 158, 0.08); +} + +modelbutton.flat:focus, +.menuitem.button.flat:focus { + background-color: rgba(158, 158, 158, 0.08); +} + +modelbutton.flat:active, +.menuitem.button.flat:active { + background-image: radial-gradient(circle, rgba(158, 158, 158, 0.12) 10%, transparent 0%); +} + +modelbutton.flat:selected, +.menuitem.button.flat:selected { + background-color: rgba(56, 125, 183, 0.32); +} + +modelbutton.flat arrow { + transition: color 75ms cubic-bezier(0, 0, 0.2, 1); + color: rgba(158, 158, 158, 0.7); +} + +modelbutton.flat arrow:disabled { + color: rgba(158, 158, 158, 0.3); +} + +modelbutton.flat arrow.left { + -gtk-icon-source: -gtk-icontheme("pan-start-symbolic"); +} + +modelbutton.flat arrow.right { + -gtk-icon-source: -gtk-icontheme("pan-end-symbolic"); +} + +button.color { + min-height: 24px; + min-width: 24px; + padding: 4px; +} + +/** + * Links + */ +*:link { + color: #387db7; +} + +*:link:disabled { + color: rgba(158, 158, 158, 0.5); +} + +*:visited { + color: #673ab7; +} + +*:visited:disabled { + color: rgba(158, 158, 158, 0.5); +} + +button.link:link { + color: #387db7; + box-shadow: none; + background-color: transparent; +} + +button.link:link:drop(active), +button.link:link:hover { + box-shadow: none; + background-color: rgba(56, 125, 183, 0.12); +} + +button.link:link:focus { + box-shadow: none; + background-color: rgba(56, 125, 183, 0.12); +} + +button.link:link:active { + box-shadow: none; + background-image: radial-gradient(circle, rgba(56, 125, 183, 0.16) 10%, transparent 0%); +} + +button.link:visited { + color: #673ab7; + box-shadow: none; + background-color: transparent; +} + +button.link:visited:drop(active), +button.link:visited:hover { + box-shadow: none; + background-color: rgba(103, 58, 183, 0.12); +} + +button.link:visited:focus { + box-shadow: none; + background-color: rgba(103, 58, 183, 0.12); +} + +button.link:visited:active { + box-shadow: none; + background-image: radial-gradient(circle, rgba(103, 58, 183, 0.16) 10%, transparent 0%); +} + +button.link:disabled { + color: rgba(158, 158, 158, 0.5); +} + +button.link>label { + text-decoration-line: underline; +} + +/** + * GtkSpinButton + */ +spinbutton:not(.vertical) { + padding: 0; +} + +spinbutton:not(.vertical) entry { + min-width: 24px; + margin: 0; + border-image: none; + border-radius: 0; + box-shadow: none; + background-color: transparent; +} + +spinbutton:not(.vertical) button { + border: solid 4px transparent; + background-clip: padding-box; +} + +spinbutton:not(.vertical) button:focus:not(:hover):not(:active) { + background-color: transparent; +} + +spinbutton:not(.vertical) button.up:dir(ltr), +spinbutton:not(.vertical) button.down:dir(rtl) { + margin-left: -2px; +} + +spinbutton:not(.vertical) button.up:dir(rtl), +spinbutton:not(.vertical) button.down:dir(ltr) { + margin-right: -2px; +} + +spinbutton.vertical { + caret-color: #387db7; +} + +spinbutton.vertical:disabled { + color: rgba(158, 158, 158, 0.5); +} + +spinbutton.vertical entry { + min-height: 32px; + min-width: 40px; + padding: 0; +} + +spinbutton.vertical button { + min-height: 32px; + min-width: 40px; + padding: 0; +} + +spinbutton.vertical button:focus:not(:hover):not(:active) { + background-color: transparent; +} + +spinbutton.vertical button.up { + border-radius: 2px 2px 0 0; +} + +spinbutton.vertical button.down { + border-radius: 0 0 2px 2px; +} + +treeview spinbutton:not(.vertical) { + min-height: 0; + border-style: none; + border-radius: 0; +} + +treeview spinbutton:not(.vertical) entry { + min-height: 0; + padding: 1px 2px; +} + +/** + * ComboBoxes + */ +combobox arrow { + transition: -gtk-icon-transform 75ms cubic-bezier(0, 0, 0.2, 1); + -gtk-icon-source: -gtk-icontheme("pan-down-symbolic"); + min-height: 16px; + min-width: 16px; +} + +combobox button.combo:checked arrow { + -gtk-icon-transform: rotate(-0.5turn); +} + +combobox decoration { + transition: none; +} + +combobox cellview { + margin: -2px; +} + +combobox button.combo cellview:dir(ltr) { + margin-left: -2px; +} + +combobox button.combo cellview:dir(rtl) { + margin-right: -2px; +} + +combobox menu { + padding: 2px 0; +} + +combobox menu menuitem { + min-height: 28px; + padding: 0 8px; +} + +combobox menu>arrow.top { + margin-top: -2px; +} + +combobox menu>arrow.bottom { + margin-top: 4px; + margin-bottom: -6px; +} + +combobox>.linked:not(.vertical)>entry:not(:only-child) { + border-radius: 2px 2px 0 0; +} + +combobox>.linked:not(.vertical)>entry:not(:only-child):first-child { + margin-right: -32px; + padding-right: 32px; +} + +combobox>.linked:not(.vertical)>entry:not(:only-child):last-child { + margin-left: -32px; + padding-left: 32px; +} + +combobox>.linked:not(.vertical)>button:not(:only-child) { + min-height: 16px; + min-width: 16px; + margin: 4px; + padding: 4px; + border-radius: 9999px; +} + +button.combo:only-child { + border-radius: 2px 2px 0 0; + font-weight: normal; + transition: all 75ms cubic-bezier(0, 0, 0.2, 1), border-image 225ms cubic-bezier(0, 0, 0.2, 1); + border-image: radial-gradient(circle closest-corner at center calc(100% - 1px), #387db7 0%, transparent 0%) 2/0 0 0; + box-shadow: inset 0 -1px rgba(158, 158, 158, 0.3); + background-color: rgba(158, 158, 158, 0.04); + color: #9e9e9e; + caret-color: #387db7; +} + +button.combo:only-child:focus { + box-shadow: inset 0 -1px rgba(158, 158, 158, 0.3); + background-color: rgba(158, 158, 158, 0.1168); +} + +button.combo:only-child:drop(active), +button.combo:only-child:hover { + box-shadow: inset 0 -1px rgba(158, 158, 158, 0.3); + background-color: rgba(158, 158, 158, 0.0784); +} + +button.combo:only-child:checked { + border-image: radial-gradient(circle closest-corner at center calc(100% - 1px), #387db7 100%, transparent 0%) 2/0 0 2px; + box-shadow: inset 0 -1px rgba(158, 158, 158, 0.3); + background-color: rgba(158, 158, 158, 0.1168); +} + +button.combo:only-child:disabled { + box-shadow: inset 0 -1px rgba(158, 158, 158, 0.2); + background-color: rgba(158, 158, 158, 0.04); + color: rgba(158, 158, 158, 0.5); +} + +button.combo:only-child arrow { + transition: color 75ms cubic-bezier(0, 0, 0.2, 1); + color: rgba(158, 158, 158, 0.7); +} + +button.combo:only-child arrow:disabled { + color: rgba(158, 158, 158, 0.3); +} + +/** + * Toolbars + */ +toolbar { + -GtkWidget-window-dragging: true; + padding: 2px; +} + +toolbar.osd.left, +toolbar.osd.right, +toolbar.osd.top, +toolbar.osd.bottom { + border-radius: 0; +} + +toolbar.osd.bottom { + box-shadow: none; + background-color: transparent; + background-image: linear-gradient(to bottom, transparent, rgba(0, 0, 0, 0.1) 30%, rgba(0, 0, 0, 0.2) 50%, rgba(0, 0, 0, 0.4)); +} + +toolbar.horizontal>separator { + margin: 2px; +} + +toolbar.vertical>separator { + margin: 2px; +} + +toolbar:not(.inline-toolbar):not(.osd) scale, +toolbar:not(.inline-toolbar):not(.osd) entry, +toolbar:not(.inline-toolbar):not(.osd) spinbutton, +toolbar:not(.inline-toolbar):not(.osd) button { + margin: 2px; +} + +toolbar:not(.inline-toolbar):not(.osd) .linked entry:not(:first-child), +toolbar:not(.inline-toolbar):not(.osd) .linked spinbutton:not(:first-child), +toolbar:not(.inline-toolbar):not(.osd) .linked button:not(:first-child) { + margin-left: 0; +} + +toolbar:not(.inline-toolbar):not(.osd) .linked entry:not(:last-child), +toolbar:not(.inline-toolbar):not(.osd) .linked spinbutton:not(:last-child), +toolbar:not(.inline-toolbar):not(.osd) .linked button:not(:last-child) { + margin-right: 0; +} + +toolbar:not(.inline-toolbar):not(.osd) spinbutton entry, +toolbar:not(.inline-toolbar):not(.osd) spinbutton button { + margin: 0; +} + +toolbar:not(.inline-toolbar):not(.osd) switch { + margin: 6px 2px; +} + +frame.documents-dropdown, +.app-notification, +toolbar.osd { + transition: box-shadow 75ms cubic-bezier(0, 0, 0.2, 1); + padding: 4px; + border-radius: 2px; + box-shadow: 0 2px 2.4px -1px rgba(0, 0, 0, 0.2), 0 4px 3px 0 rgba(0, 0, 0, 0.14), 0 1px 6px 0 rgba(0, 0, 0, 0.12), inset 0 1px rgba(255, 255, 255, 0.05); + background-color: #141416; +} + +frame.documents-dropdown:backdrop, +.app-notification:backdrop, +toolbar.osd:backdrop { + box-shadow: 0 3px 2px -3px rgba(0, 0, 0, 0.3), 0 2px 2px -1px rgba(0, 0, 0, 0.24), 0 1px 3px 0 rgba(0, 0, 0, 0.12), inset 0 1px rgba(255, 255, 255, 0.05); +} + +.inline-toolbar { + padding: 4px; + border-style: solid; + border-width: 0 1px 1px; + border-color: rgba(158, 158, 158, 0.2); + background-color: #1a1c1e; + background-clip: padding-box; +} + +searchbar>revealer>box, +.location-bar { + padding: 4px; + border-style: solid; + border-width: 0 0 1px; + border-color: rgba(158, 158, 158, 0.2); +} + +searchbar>revealer>box { + margin: -6px; + padding: 4px; +} + +/** + * Header bars + */ +.titlebar { + transition: background-color 75ms cubic-bezier(0, 0, 0.2, 1), color 75ms cubic-bezier(0, 0, 0.2, 1); + border-radius: 2px 2px 0 0; + box-shadow: 0 2px 2px -2px rgba(0, 0, 0, 0.3), 0 1px 2px -1px rgba(0, 0, 0, 0.24), 0 1px 2px -0.6px rgba(0, 0, 0, 0.17), inset 0 1px rgba(255, 255, 255, 0.05); + background-color: #09090a; + color: #80868b; +} + +.titlebar:disabled { + color: rgba(128, 134, 139, 0.5); +} + +.titlebar:backdrop { + background-color: #000000; + color: rgba(128, 134, 139, 0.7); +} + +.titlebar:backdrop:disabled { + color: rgba(128, 134, 139, 0.3); +} + +.titlebar .title { + padding-left: 12px; + padding-right: 12px; + font-weight: bold; +} + +.titlebar .subtitle { + padding-left: 12px; + padding-right: 12px; + font-size: smaller; +} + +.titlebar .subtitle, +.titlebar .dim-label { + transition: color 75ms cubic-bezier(0, 0, 0.2, 1); + color: rgba(128, 134, 139, 0.7); +} + +.titlebar .subtitle:backdrop, +.titlebar .dim-label:backdrop { + color: rgba(128, 134, 139, 0.5); +} + +.titlebar .titlebar { + background-color: transparent; + box-shadow: none; +} + +.titlebar headerbar+separator { + background-color: rgba(128, 134, 139, 0.2); +} + +.titlebar entry { + box-shadow: inset 0 -1px rgba(128, 134, 139, 0.3); + background-color: rgba(128, 134, 139, 0.04); + color: #80868b; +} + +.titlebar entry:disabled { + box-shadow: inset 0 -1px rgba(128, 134, 139, 0.2); + background-color: rgba(128, 134, 139, 0.04); + color: rgba(128, 134, 139, 0.5); +} + +.titlebar entry image { + color: rgba(128, 134, 139, 0.7); +} + +.titlebar entry image:hover, +.titlebar entry image:active { + color: #80868b; +} + +.titlebar entry image:disabled { + color: rgba(128, 134, 139, 0.5); +} + +.titlebar .linked:not(.vertical)>entry:not(:only-child) { + border-radius: 2px 2px 0 0; +} + +.titlebar button:not(.suggested-action):not(.destructive-action) { + border-image: radial-gradient(circle closest-corner at center calc(100% - 1px), currentcolor 0%, transparent 0%) 0 0 0/0 0 0; + background-color: transparent; + color: rgba(128, 134, 139, 0.7); + box-shadow: none; + background-color: transparent; +} + +.titlebar button:not(.suggested-action):not(.destructive-action):drop(active), +.titlebar button:not(.suggested-action):not(.destructive-action):hover { + box-shadow: none; + background-color: rgba(128, 134, 139, 0.08); +} + +.titlebar button:not(.suggested-action):not(.destructive-action):focus { + box-shadow: none; + background-color: rgba(128, 134, 139, 0.08); +} + +.titlebar button:not(.suggested-action):not(.destructive-action):active { + box-shadow: none; + background-image: radial-gradient(circle, rgba(128, 134, 139, 0.12) 10%, transparent 0%); +} + +.titlebar button:not(.suggested-action):not(.destructive-action):disabled { + color: rgba(128, 134, 139, 0.3); +} + +.path-bar-box .nautilus-path-bar button:not(.suggested-action):not(.destructive-action):last-child:dir(ltr), +.path-bar-box .nautilus-path-bar button:not(.suggested-action):not(.destructive-action):first-child:dir(rtl), +.titlebar button:not(.suggested-action):not(.destructive-action):checked { + border-image: radial-gradient(circle closest-corner at center calc(100% - 1px), currentcolor 100%, transparent 0%) 0 0 2/0 0 2px; + background-color: transparent; + color: #80868b; + box-shadow: none; + background-color: transparent; +} + +.path-bar-box .nautilus-path-bar button:drop(active):not(.suggested-action):not(.destructive-action):last-child:dir(ltr), +.path-bar-box .nautilus-path-bar button:drop(active):not(.suggested-action):not(.destructive-action):first-child:dir(rtl), +.path-bar-box .nautilus-path-bar button:hover:not(.suggested-action):not(.destructive-action):last-child:dir(ltr), +.path-bar-box .nautilus-path-bar button:hover:not(.suggested-action):not(.destructive-action):first-child:dir(rtl), +.titlebar button:not(.suggested-action):not(.destructive-action):checked:drop(active), +.titlebar button:not(.suggested-action):not(.destructive-action):checked:hover { + box-shadow: none; + background-color: rgba(128, 134, 139, 0.08); +} + +.path-bar-box .nautilus-path-bar button:focus:not(.suggested-action):not(.destructive-action):last-child:dir(ltr), +.path-bar-box .nautilus-path-bar button:focus:not(.suggested-action):not(.destructive-action):first-child:dir(rtl), +.titlebar button:not(.suggested-action):not(.destructive-action):checked:focus { + box-shadow: none; + background-color: rgba(128, 134, 139, 0.08); +} + +.path-bar-box .nautilus-path-bar button:active:not(.suggested-action):not(.destructive-action):last-child:dir(ltr), +.path-bar-box .nautilus-path-bar button:active:not(.suggested-action):not(.destructive-action):first-child:dir(rtl), +.titlebar button:not(.suggested-action):not(.destructive-action):checked:active { + box-shadow: none; + background-image: radial-gradient(circle, rgba(128, 134, 139, 0.12) 10%, transparent 0%); +} + +.path-bar-box .nautilus-path-bar button:disabled:not(.suggested-action):not(.destructive-action):last-child:dir(ltr), +.path-bar-box .nautilus-path-bar button:disabled:not(.suggested-action):not(.destructive-action):first-child:dir(rtl), +.titlebar button:not(.suggested-action):not(.destructive-action):checked:disabled { + background-color: transparent; + color: rgba(128, 134, 139, 0.5); +} + +.titlebar button:not(.suggested-action):not(.destructive-action):backdrop { + color: rgba(128, 134, 139, 0.5); +} + +.titlebar button:not(.suggested-action):not(.destructive-action):backdrop:disabled { + color: rgba(128, 134, 139, 0.3); +} + +.titlebar button:not(.suggested-action):not(.destructive-action):backdrop:checked { + color: rgba(128, 134, 139, 0.7); +} + +.titlebar button:not(.suggested-action):not(.destructive-action):backdrop:checked:disabled { + color: rgba(128, 134, 139, 0.3); +} + +.titlebar button.suggested-action:disabled, +.titlebar button.destructive-action:disabled { + background-color: rgba(128, 134, 139, 0.08); + color: rgba(128, 134, 139, 0.5); +} + +.titlebar stackswitcher button:not(.suggested-action):not(.destructive-action).text-button { + min-width: 104px; +} + +.titlebar .path-bar button:not(.suggested-action):not(.destructive-action).text-button { + min-width: 0; + padding-left: 4px; + padding-right: 4px; +} + +.titlebar.selection-mode { + transition: background-color 0.1ms 225ms, color 75ms cubic-bezier(0, 0, 0.2, 1); + animation: ripple-on-headerbar 225ms cubic-bezier(0, 0, 0.2, 1); + box-shadow: 0 2px 2px -2px rgba(0, 0, 0, 0.3), 0 1px 2px -1px rgba(0, 0, 0, 0.24), 0 1px 2px -0.6px rgba(0, 0, 0, 0.17), inset 0 1px rgba(255, 255, 255, 0.2); + background-color: #387db7; + color: #fff; +} + +.titlebar.selection-mode:backdrop { + color: rgba(255, 255, 255, 0.7); +} + +.titlebar.selection-mode .subtitle:link { + color: #fff; +} + +.titlebar.selection-mode button:not(.suggested-action):not(.destructive-action) { + border-image: radial-gradient(circle closest-corner at center calc(100% - 1px), currentcolor 0%, transparent 0%) 0 0 0/0 0 0; + color: #fff; +} + +.titlebar.selection-mode button:not(.suggested-action):not(.destructive-action):disabled { + color: rgba(255, 255, 255, 0.5); +} + +.titlebar.selection-mode button:not(.suggested-action):not(.destructive-action):checked { + border-image: radial-gradient(circle closest-corner at center calc(100% - 1px), currentcolor 100%, transparent 0%) 0 0 2/0 0 2px; + color: #fff; +} + +.titlebar.selection-mode button:not(.suggested-action):not(.destructive-action):checked:disabled { + color: rgba(255, 255, 255, 0.5); +} + +.titlebar.selection-mode button:not(.suggested-action):not(.destructive-action):backdrop { + color: rgba(255, 255, 255, 0.7); +} + +.titlebar.selection-mode button:not(.suggested-action):not(.destructive-action):backdrop:disabled { + color: rgba(255, 255, 255, 0.3); +} + +.titlebar.selection-mode button:not(.suggested-action):not(.destructive-action):backdrop:checked { + color: rgba(255, 255, 255, 0.7); +} + +.titlebar.selection-mode button:not(.suggested-action):not(.destructive-action):backdrop:checked:disabled { + color: rgba(255, 255, 255, 0.3); +} + +.titlebar.selection-mode .selection-menu { + padding-left: 16px; + padding-right: 16px; +} + +.titlebar.selection-mode .selection-menu arrow { + -GtkArrow-arrow-scaling: 1; +} + +.titlebar.selection-mode .selection-menu .arrow { + -gtk-icon-source: -gtk-icontheme("pan-down-symbolic"); +} + +.titlebar .selection-mode { + box-shadow: inset 0 1px rgba(255, 255, 255, 0.2); + background-color: #387db7; +} + +.tiled .titlebar, +.tiled-top .titlebar, +.tiled-right .titlebar, +.tiled-bottom .titlebar, +.tiled-left .titlebar, +.maximized .titlebar, +.fullscreen .titlebar { + border-radius: 0; + box-shadow: 0 2px 2px -2px rgba(0, 0, 0, 0.3), 0 1px 2px -1px rgba(0, 0, 0, 0.24), 0 1px 2px -0.6px rgba(0, 0, 0, 0.17); +} + +.titlebar.default-decoration { + min-height: 24px; + padding: 4px; + box-shadow: inset 0 1px rgba(255, 255, 255, 0.05); +} + +.tiled .titlebar.default-decoration, +.maximized .titlebar.default-decoration, +.fullscreen .titlebar.default-decoration { + box-shadow: none; +} + +.titlebar.default-decoration button.titlebutton { + min-height: 24px; + min-width: 24px; + margin: 0; + padding: 0; +} + +.background:not(.csd) .titlebar.default-decoration button.titlebutton:active { + background-size: 1000% 1000%; +} + +.solid-csd .titlebar:dir(rtl), +.solid-csd .titlebar:dir(ltr) { + border-radius: 0; + box-shadow: 0 2px 2px -2px rgba(0, 0, 0, 0.3), 0 1px 2px -1px rgba(0, 0, 0, 0.24), 0 1px 2px -0.6px rgba(0, 0, 0, 0.17); +} + +headerbar { + min-height: 40px; + padding: 0 4px; +} + +headerbar entry, +headerbar spinbutton, +headerbar button { + margin-top: 4px; + margin-bottom: 4px; +} + +headerbar separator.titlebutton { + margin-top: 10px; + margin-bottom: 10px; + background-color: rgba(128, 134, 139, 0.2); +} + +headerbar switch { + margin-top: 8px; + margin-bottom: 8px; +} + +headerbar spinbutton button { + margin-top: 0; + margin-bottom: 0; +} + +headerbar .entry-tag, +headerbar .documents-entry-tag, +headerbar .photos-entry-tag { + margin-top: 5px; + margin-bottom: 5px; +} + +/** + * Pathbars + */ +.caja-pathbar button, +.path-bar.linked:not(.vertical)>button { + padding-left: 4px; + padding-right: 4px; + border-image: radial-gradient(circle closest-corner at center calc(100% - 1px), #387db7 0%, transparent 0%) 0 0 0/0 0 0; + border-radius: 2px; + color: rgba(158, 158, 158, 0.7); + box-shadow: none; + background-color: transparent; +} + +.caja-pathbar button:drop(active), +.caja-pathbar button:hover, +.path-bar.linked:not(.vertical)>button:drop(active), +.path-bar.linked:not(.vertical)>button:hover { + box-shadow: none; + background-color: rgba(158, 158, 158, 0.08); +} + +.caja-pathbar button:focus, +.path-bar.linked:not(.vertical)>button:focus { + box-shadow: none; + background-color: rgba(158, 158, 158, 0.08); +} + +.caja-pathbar button:active, +.path-bar.linked:not(.vertical)>button:active { + box-shadow: none; + background-image: radial-gradient(circle, rgba(158, 158, 158, 0.12) 10%, transparent 0%); +} + +.caja-pathbar button:disabled, +.path-bar.linked:not(.vertical)>button:disabled { + background-color: transparent; + color: rgba(158, 158, 158, 0.3); +} + +.caja-pathbar button:checked, +.path-bar.linked:not(.vertical)>button:checked { + border-image: radial-gradient(circle closest-corner at center calc(100% - 1px), #387db7 100%, transparent 0%) 0 0 2/0 0 2px; + color: #387db7; + box-shadow: none; + background-color: transparent; +} + +.caja-pathbar button:checked:drop(active), +.caja-pathbar button:checked:hover, +.path-bar.linked:not(.vertical)>button:checked:drop(active), +.path-bar.linked:not(.vertical)>button:checked:hover { + box-shadow: none; + background-color: rgba(56, 125, 183, 0.12); +} + +.caja-pathbar button:checked:focus, +.path-bar.linked:not(.vertical)>button:checked:focus { + box-shadow: none; + background-color: rgba(56, 125, 183, 0.12); +} + +.caja-pathbar button:checked:active, +.path-bar.linked:not(.vertical)>button:checked:active { + box-shadow: none; + background-image: radial-gradient(circle, rgba(56, 125, 183, 0.16) 10%, transparent 0%); +} + +.caja-pathbar button:checked:disabled, +.path-bar.linked:not(.vertical)>button:checked:disabled { + background-color: transparent; + color: rgba(158, 158, 158, 0.5); +} + +.caja-pathbar button label:not(:only-child):first-child, +.path-bar.linked:not(.vertical)>button label:not(:only-child):first-child { + margin-left: 0; +} + +.caja-pathbar button label:not(:only-child):last-child, +.path-bar.linked:not(.vertical)>button label:not(:only-child):last-child { + margin-right: 0; +} + +.caja-pathbar button.text-button, +.path-bar.linked:not(.vertical)>button.text-button { + min-width: 0; +} + +.caja-pathbar button.slider-button, +.path-bar.linked:not(.vertical)>button.slider-button { + padding-left: 4px; + padding-right: 4px; +} + +/** + * Tree Views + */ +treeview.view { + border-left-color: rgba(158, 158, 158, 0.3); + border-top-color: rgba(158, 158, 158, 0.2); +} + +* { + -GtkTreeView-horizontal-separator: 4; + -GtkTreeView-grid-line-width: 1; + -GtkTreeView-grid-line-pattern: ""; + -GtkTreeView-tree-line-width: 1; + -GtkTreeView-tree-line-pattern: ""; + -GtkTreeView-expander-size: 16; +} + +treeview.view:hover, +treeview.view:selected { + border-radius: 0; +} + +treeview.view.separator { + min-height: 5px; + color: rgba(158, 158, 158, 0.2); +} + +treeview.view:drop(active) { + border-style: solid none; + border-width: 9999px; + border-color: rgba(158, 158, 158, 0.08); +} + +treeview.view:drop(active).after { + border-top-style: none; +} + +treeview.view:drop(active).before { + border-bottom-style: none; +} + +treeview.view.expander { + -gtk-icon-source: -gtk-icontheme("pan-down-symbolic"); + -gtk-icon-transform: rotate(-90deg); + color: rgba(158, 158, 158, 0.7); +} + +treeview.view.expander:dir(rtl) { + -gtk-icon-transform: rotate(90deg); +} + +treeview.view.expander:checked { + -gtk-icon-transform: unset; +} + +treeview.view.expander:hover, +treeview.view.expander:active { + color: #9e9e9e; +} + +treeview.view.expander:disabled { + color: rgba(158, 158, 158, 0.3); +} + +treeview.view.progressbar { + border-bottom: 4px solid #387db7; + background-color: transparent; +} + +treeview.view.progressbar:selected:hover { + background-color: transparent; +} + +treeview.view.trough { + border-bottom: 4px solid rgba(158, 158, 158, 0.2); + background-color: transparent; +} + +treeview.view.trough:selected:hover { + background-color: transparent; +} + +treeview.view header button { + padding: 2px 6px; + border-style: none solid solid none; + border-width: 1px; + border-color: rgba(158, 158, 158, 0.2); + border-radius: 0; + background-clip: padding-box; + color: rgba(158, 158, 158, 0.7); + box-shadow: none; + background-color: transparent; +} + +treeview.view header button:drop(active), +treeview.view header button:hover { + box-shadow: none; + background-color: rgba(158, 158, 158, 0.04); +} + +treeview.view header button:focus { + box-shadow: none; + background-color: rgba(158, 158, 158, 0.08); +} + +treeview.view header button:active { + box-shadow: none; + background-image: radial-gradient(circle, rgba(158, 158, 158, 0.12) 10%, transparent 0%); +} + +treeview.view header button:drop(active):not(:active), +treeview.view header button:hover:not(:active) { + transition-property: all, border-image, background-size, background-image, background-color; + transition-duration: 75ms, 225ms, 300ms, 1200ms, 0ms; +} + +treeview.view header button:disabled { + background-color: transparent; + color: rgba(158, 158, 158, 0.3); +} + +treeview.view header button:last-child { + border-right-style: none; +} + +treeview.view button.dnd, +treeview.view header.button.dnd { + padding: 2px 6px; + border-style: none solid solid; + border-width: 1px; + border-color: rgba(158, 158, 158, 0.2); + border-radius: 0; + box-shadow: none; + background-clip: padding-box; + background-color: #141416; + color: #387db7; +} + +treeview.view acceleditor>label { + background-color: #387db7; +} + +/** + * Menus + */ +menubar, +.menubar { + -GtkWidget-window-dragging: true; + padding: 0; + background-color: #09090a; + color: #80868b; +} + +menubar:backdrop, +.menubar:backdrop { + background-color: #000000; + color: rgba(128, 134, 139, 0.7); +} + +.csd menubar, +.csd .menubar { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1); +} + +menubar>menuitem, +.menubar>menuitem { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1); + min-height: 20px; + padding: 4px 8px; + color: rgba(128, 134, 139, 0.7); +} + +menubar>menuitem:hover, +.menubar>menuitem:hover { + transition: none; + background-color: rgba(128, 134, 139, 0.12); + color: #80868b; +} + +menubar>menuitem:disabled, +.menubar>menuitem:disabled { + color: rgba(128, 134, 139, 0.3); +} + +.background.popup { + background-color: transparent; +} + +menu, +.menu, +.context-menu { + margin: 4px 0; + padding: 4px 0; + border: 1px solid rgba(158, 158, 158, 0.2); + box-shadow: inset 0 1px rgba(255, 255, 255, 0.05); + background-color: #141416; + color: #9e9e9e; + font: initial; + text-shadow: none; +} + +.csd menu, +.csd .menu, +.csd .context-menu { + border: none; + border-radius: 2px; +} + +menu menuitem, +.menu menuitem, +.context-menu menuitem { + transition: background-color 75ms cubic-bezier(0, 0, 0.2, 1); + min-height: 20px; + min-width: 40px; + padding: 4px 8px; +} + +menu menuitem:hover, +.menu menuitem:hover, +.context-menu menuitem:hover { + transition: none; + background-color: rgba(158, 158, 158, 0.08); +} + +menu menuitem:disabled, +.menu menuitem:disabled, +.context-menu menuitem:disabled { + color: rgba(158, 158, 158, 0.5); +} + +menu menuitem arrow, +.menu menuitem arrow, +.context-menu menuitem arrow { + min-height: 16px; + min-width: 16px; + color: rgba(158, 158, 158, 0.7); +} + +menu menuitem arrow:disabled, +.menu menuitem arrow:disabled, +.context-menu menuitem arrow:disabled { + color: rgba(158, 158, 158, 0.3); +} + +menu menuitem arrow:dir(ltr), +.menu menuitem arrow:dir(ltr), +.context-menu menuitem arrow:dir(ltr) { + -gtk-icon-source: -gtk-icontheme("pan-end-symbolic"); + margin-left: 8px; +} + +menu menuitem arrow:dir(rtl), +.menu menuitem arrow:dir(rtl), +.context-menu menuitem arrow:dir(rtl) { + -gtk-icon-source: -gtk-icontheme("pan-end-symbolic-rtl"); + margin-right: 8px; +} + +menu>arrow, +.menu>arrow, +.context-menu>arrow { + min-height: 16px; + min-width: 16px; + padding: 4px; + background-color: #141416; + color: rgba(158, 158, 158, 0.7); +} + +menu>arrow.top, +.menu>arrow.top, +.context-menu>arrow.top { + margin-top: -4px; + border-bottom: 1px solid rgba(158, 158, 158, 0.2); + border-radius: 2px 2px 0 0; + -gtk-icon-source: -gtk-icontheme("pan-up-symbolic"); +} + +menu>arrow.bottom, +.menu>arrow.bottom, +.context-menu>arrow.bottom { + margin-top: 8px; + margin-bottom: -12px; + border-top: 1px solid rgba(158, 158, 158, 0.2); + border-radius: 0 0 2px 2px; + -gtk-icon-source: -gtk-icontheme("pan-down-symbolic"); +} + +menu>arrow:hover, +.menu>arrow:hover, +.context-menu>arrow:hover { + background-image: image(rgba(158, 158, 158, 0.08)); +} + +menu>arrow:disabled, +.menu>arrow:disabled, +.context-menu>arrow:disabled { + border-color: transparent; + background-color: transparent; + color: transparent; +} + +menu separator, +.menu separator, +.context-menu separator { + margin: 4px 0; +} + +menuitem accelerator { + color: rgba(158, 158, 158, 0.7); +} + +menuitem:disabled accelerator { + color: rgba(158, 158, 158, 0.3); +} + +/** + * Popovers + */ +popover.background { + transition: box-shadow 75ms cubic-bezier(0, 0, 0.2, 1); + padding: 2px; + box-shadow: 0 2px 2.4px -1px rgba(0, 0, 0, 0.2), 0 4px 3px 0 rgba(0, 0, 0, 0.14), 0 1px 6px 0 rgba(0, 0, 0, 0.12); + background-color: #141416; +} + +popover.background:backdrop { + box-shadow: 0 3px 2px -3px rgba(0, 0, 0, 0.3), 0 2px 2px -1px rgba(0, 0, 0, 0.24), 0 1px 3px 0 rgba(0, 0, 0, 0.12); +} + +popover.background, +.csd popover.background { + border-style: solid; + border-width: 1px; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.2) rgba(0, 0, 0, 0.3); + border-radius: 3px; + background-clip: padding-box; +} + +popover.background>stack { + margin: -4px; +} + +popover.background>toolbar { + margin: -2px; +} + +popover.background>list, +popover.background>.view, +popover.background>toolbar { + border-style: none; + box-shadow: none; + background-color: transparent; +} + +popover.background.menu button, +popover.background button.model { + min-height: 32px; + padding: 0 8px; + border-radius: 2px; +} + +popover.background separator { + margin: 4px 0; +} + +popover.background list separator { + margin: 0; +} + +/** + * Notebooks + */ +notebook:focus>header>tabs>tab:checked { + background-color: rgba(56, 125, 183, 0.12); +} + +notebook>header.top { + box-shadow: inset 0 -1px rgba(158, 158, 158, 0.2); +} + +notebook>header.top>tabs>tab { + box-shadow: inset 0 -2px transparent; +} + +notebook>header.top>tabs>tab:checked { + box-shadow: inset 0 -2px #387db7; +} + +notebook>header.bottom { + box-shadow: inset 0 1px rgba(158, 158, 158, 0.2); +} + +notebook>header.bottom>tabs>tab { + box-shadow: inset 0 2px transparent; +} + +notebook>header.bottom>tabs>tab:checked { + box-shadow: inset 0 2px #387db7; +} + +notebook>header.left { + box-shadow: inset -1px 0 rgba(158, 158, 158, 0.2); +} + +notebook>header.left>tabs>tab { + box-shadow: inset -2px 0 transparent; +} + +notebook>header.left>tabs>tab:checked { + box-shadow: inset -2px 0 #387db7; +} + +notebook>header.right { + box-shadow: inset 1px 0 rgba(158, 158, 158, 0.2); +} + +notebook>header.right>tabs>tab { + box-shadow: inset 2px 0 transparent; +} + +notebook>header.right>tabs>tab:checked { + box-shadow: inset 2px 0 #387db7; +} + +notebook>header.top>tabs>arrow.down, +notebook>header.bottom>tabs>arrow.down { + -gtk-icon-source: -gtk-icontheme("pan-start-symbolic"); +} + +notebook>header.top>tabs>arrow.up, +notebook>header.bottom>tabs>arrow.up { + -gtk-icon-source: -gtk-icontheme("pan-end-symbolic"); +} + +notebook>header.left>tabs>arrow.down, +notebook>header.right>tabs>arrow.down { + -gtk-icon-source: -gtk-icontheme("pan-up-symbolic"); +} + +notebook>header.left>tabs>arrow.up, +notebook>header.right>tabs>arrow.up { + -gtk-icon-source: -gtk-icontheme("pan-down-symbolic"); +} + +notebook>header>tabs>arrow { + min-height: 16px; + min-width: 16px; + padding: 4px; + border-radius: 0; + color: rgba(158, 158, 158, 0.7); +} + +notebook>header>tabs>arrow:drop(active), +notebook>header>tabs>arrow:hover { + background-color: rgba(158, 158, 158, 0.04); +} + +notebook>header>tabs>arrow:focus { + background-color: rgba(158, 158, 158, 0.08); +} + +notebook>header>tabs>arrow:active { + background-image: radial-gradient(circle, rgba(158, 158, 158, 0.12) 10%, transparent 0%); +} + +notebook>header>tabs>arrow:disabled { + color: rgba(158, 158, 158, 0.3); +} + +notebook>header>tabs>tab { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1), background-size 0ms, background-image 0ms; + min-height: 24px; + min-width: 24px; + padding: 4px 16px; + outline: none; + background-image: radial-gradient(circle, #387db7 10%, transparent 0%); + background-repeat: no-repeat; + background-position: center; + background-size: 0% 0%; + color: rgba(158, 158, 158, 0.7); + font-weight: 500; +} + +notebook>header>tabs>tab:hover { + background-color: rgba(158, 158, 158, 0.04); +} + +notebook>header>tabs>tab:disabled { + color: rgba(158, 158, 158, 0.3); +} + +notebook>header>tabs>tab:checked { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1), background-size 225ms cubic-bezier(0, 0, 0.2, 1), background-image 525ms cubic-bezier(0, 0, 0.2, 1); + background-color: transparent; + background-image: radial-gradient(circle, transparent 10%, transparent 0%); + background-size: 1000% 1000%; + color: #387db7; +} + +notebook>header>tabs>tab:checked:disabled { + color: rgba(158, 158, 158, 0.5); +} + +notebook>header>tabs>tab:checked.dnd { + background-color: rgba(56, 125, 183, 0.12); +} + +notebook>header>tabs>tab>box { + transition: background-color 75ms cubic-bezier(0, 0, 0.2, 1); + margin: -4px -16px; + padding: 4px 16px; +} + +notebook>header>tabs>tab>box:drop(active) { + background-color: rgba(158, 158, 158, 0.08); +} + +notebook>header>tabs>tab button.flat:last-child { + margin-left: 4px; + margin-right: -12px; +} + +notebook>header>tabs>tab button.flat:first-child { + margin-left: -12px; + margin-right: 4px; +} + +/** + * Scrollbars + */ +scrollbar { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1); + background-clip: padding-box; +} + +* { + -GtkScrollbar-has-backward-stepper: false; + -GtkScrollbar-has-forward-stepper: false; +} + +scrollbar.top { + border-bottom: 1px solid rgba(158, 158, 158, 0.2); +} + +scrollbar.bottom { + border-top: 1px solid rgba(158, 158, 158, 0.2); +} + +scrollbar.left { + border-right: 1px solid rgba(158, 158, 158, 0.2); +} + +scrollbar.right { + border-left: 1px solid rgba(158, 158, 158, 0.2); +} + +scrollbar slider { + transition: background-color 75ms cubic-bezier(0, 0, 0.2, 1); + min-width: 8px; + min-height: 8px; + border: 4px solid transparent; + border-radius: 9999px; + background-clip: padding-box; + background-color: rgba(158, 158, 158, 0.5); +} + +scrollbar slider:hover { + background-color: rgba(158, 158, 158, 0.6); +} + +scrollbar slider:active { + background-color: rgba(158, 158, 158, 0.7); +} + +scrollbar slider:disabled { + background-color: rgba(158, 158, 158, 0.3); +} + +scrollbar.fine-tune slider { + min-width: 4px; + min-height: 4px; +} + +scrollbar.fine-tune.horizontal slider { + margin: 2px 0; +} + +scrollbar.fine-tune.vertical slider { + margin: 0 2px; +} + +scrollbar.overlay-indicator:not(.fine-tune) slider { + transition-property: background-color, min-height, min-width; +} + +scrollbar.overlay-indicator:not(.dragging):not(.hovering) { + border-color: transparent; + background-color: transparent; +} + +scrollbar.overlay-indicator:not(.dragging):not(.hovering) slider { + min-width: 4px; + min-height: 4px; + margin: 3px; + border: 1px solid rgba(26, 28, 30, 0.3); +} + +scrollbar.overlay-indicator:not(.dragging):not(.hovering) button { + min-width: 4px; + min-height: 4px; + margin: 3px; + border: 1px solid rgba(26, 28, 30, 0.3); + border-radius: 9999px; + background-color: rgba(158, 158, 158, 0.5); + background-clip: padding-box; + -gtk-icon-source: none; +} + +scrollbar.overlay-indicator:not(.dragging):not(.hovering) button:disabled { + background-color: rgba(158, 158, 158, 0.3); +} + +scrollbar.overlay-indicator:not(.dragging):not(.hovering).horizontal slider { + min-width: 24px; +} + +scrollbar.overlay-indicator:not(.dragging):not(.hovering).horizontal button { + min-width: 8px; +} + +scrollbar.overlay-indicator:not(.dragging):not(.hovering).vertical slider { + min-height: 24px; +} + +scrollbar.overlay-indicator:not(.dragging):not(.hovering).vertical button { + min-height: 8px; +} + +scrollbar.overlay-indicator.dragging, +scrollbar.overlay-indicator.hovering { + background-color: #141416; +} + +scrollbar.horizontal slider { + min-width: 24px; +} + +scrollbar.vertical slider { + min-height: 24px; +} + +scrollbar button { + min-width: 16px; + min-height: 16px; + padding: 0; + border-radius: 0; +} + +scrollbar.vertical button.down { + -gtk-icon-source: -gtk-icontheme("pan-down-symbolic"); +} + +scrollbar.vertical button.up { + -gtk-icon-source: -gtk-icontheme("pan-up-symbolic"); +} + +scrollbar.horizontal button.down { + -gtk-icon-source: -gtk-icontheme("pan-end-symbolic"); +} + +scrollbar.horizontal button.up { + -gtk-icon-source: -gtk-icontheme("pan-start-symbolic"); +} + +/** + * Switch + */ +switch { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1); + margin: 4px 0; + padding: 0 2px; + border: 5px solid transparent; + border-radius: 9999px; + background-color: rgba(158, 158, 158, 0.3); + background-clip: padding-box; + font-size: 0; +} + +switch:checked { + background-color: rgba(56, 125, 183, 0.5); +} + +switch:disabled { + opacity: 0.5; +} + +switch image { + margin: -8px; + -gtk-icon-transform: scale(0); +} + +switch slider { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1); + min-width: 20px; + min-height: 20px; + margin: -3px -2px; + border-radius: 9999px; + outline: none; + box-shadow: 0 0 0 10px transparent, 0 2px 2px -2px rgba(0, 0, 0, 0.3), 0 1px 2px -1px rgba(0, 0, 0, 0.24), 0 1px 2px -0.6px rgba(0, 0, 0, 0.17); + background-color: #141416; +} + +switch:hover slider { + box-shadow: 0 0 0 10px rgba(158, 158, 158, 0.08), 0 2px 2px -2px rgba(0, 0, 0, 0.3), 0 1px 2px -1px rgba(0, 0, 0, 0.24), 0 1px 2px -0.6px rgba(0, 0, 0, 0.17); +} + +switch:focus slider { + box-shadow: 0 0 0 10px rgba(158, 158, 158, 0.08), 0 2px 2px -2px rgba(0, 0, 0, 0.3), 0 1px 2px -1px rgba(0, 0, 0, 0.24), 0 1px 2px -0.6px rgba(0, 0, 0, 0.17); +} + +switch:checked slider { + background-color: #387db7; +} + +switch:checked:hover slider { + box-shadow: 0 0 0 10px rgba(56, 125, 183, 0.12), 0 2px 2px -2px rgba(0, 0, 0, 0.3), 0 1px 2px -1px rgba(0, 0, 0, 0.24), 0 1px 2px -0.6px rgba(0, 0, 0, 0.17); +} + +switch:checked:focus slider { + box-shadow: 0 0 0 10px rgba(56, 125, 183, 0.12), 0 2px 2px -2px rgba(0, 0, 0, 0.3), 0 1px 2px -1px rgba(0, 0, 0, 0.24), 0 1px 2px -0.6px rgba(0, 0, 0, 0.17); +} + +/** + * Check and Radio items + */ +.view.content-view.check:not(list), +.content-view:not(list) check { + min-height: 40px; + min-width: 40px; + margin: 0; + padding: 0; + background-color: transparent; + background-image: none; + -gtk-icon-shadow: 0 1px 1px rgba(0, 0, 0, 0.2), 0 2px 2px rgba(0, 0, 0, 0.14), 0 1px 3px rgba(0, 0, 0, 0.12); +} + +.view.content-view.check:not(list):hover, +.view.content-view.check:not(list):active, +.content-view:not(list) check:hover, +.content-view:not(list) check:active { + -gtk-icon-shadow: 0 2px 2px rgba(0, 0, 0, 0.2), 0 4px 3px rgba(0, 0, 0, 0.14), 0 1px 6px rgba(0, 0, 0, 0.12); +} + +.view.content-view.check:not(list), +.content-view:not(list) check { + -gtk-icon-source: -gtk-scaled(url("assets/selectionmode-checkbox-unchecked-dark.png"), url("assets/selectionmode-checkbox-unchecked-dark@2.png")); +} + +.view.content-view.check:not(list):checked, +.content-view:not(list) check:checked { + -gtk-icon-source: -gtk-scaled(url("assets/selectionmode-checkbox-checked-dark.png"), url("assets/selectionmode-checkbox-checked-dark@2.png")); +} + +checkbutton, +radiobutton { + outline: none; +} + +checkbutton.text-button, +radiobutton.text-button { + padding: 2px; +} + +checkbutton.text-button label:not(:only-child), +radiobutton.text-button label:not(:only-child) { + margin: 0 4px; +} + +check, +radio { + min-height: 24px; + min-width: 24px; + margin: -8px; + padding: 8px; + border-radius: 9999px; + color: rgba(158, 158, 158, 0.7); +} + +check:drop(active), +check:hover, +radio:drop(active), +radio:hover { + background-color: rgba(158, 158, 158, 0.08); +} + +check:focus, +radio:focus { + background-color: rgba(158, 158, 158, 0.08); +} + +check:active, +radio:active { + background-image: radial-gradient(circle, rgba(158, 158, 158, 0.12) 10%, transparent 0%); +} + +check:checked, +check:indeterminate, +radio:checked, +radio:indeterminate { + color: #387db7; +} + +check:checked:drop(active), +check:checked:hover, +check:indeterminate:drop(active), +check:indeterminate:hover, +radio:checked:drop(active), +radio:checked:hover, +radio:indeterminate:drop(active), +radio:indeterminate:hover { + background-color: rgba(56, 125, 183, 0.12); +} + +check:checked:focus, +check:indeterminate:focus, +radio:checked:focus, +radio:indeterminate:focus { + background-color: rgba(56, 125, 183, 0.12); +} + +check:checked:active, +check:indeterminate:active, +radio:checked:active, +radio:indeterminate:active { + background-image: radial-gradient(circle, rgba(56, 125, 183, 0.16) 10%, transparent 0%); +} + +check:disabled, +radio:disabled { + color: rgba(158, 158, 158, 0.3); +} + +popover modelbutton.flat check, +popover modelbutton.flat check:focus, +popover modelbutton.flat check:hover, +popover modelbutton.flat check:focus:hover, +popover modelbutton.flat check:active, +popover modelbutton.flat check:disabled, +popover modelbutton.flat radio, +popover modelbutton.flat radio:focus, +popover modelbutton.flat radio:hover, +popover modelbutton.flat radio:focus:hover, +popover modelbutton.flat radio:active, +popover modelbutton.flat radio:disabled { + transition: none; + background-color: transparent; + background-image: none; +} + +popover modelbutton.flat check.left:dir(rtl), +popover modelbutton.flat radio.left:dir(rtl) { + margin-left: -12px; + margin-right: -4px; +} + +popover modelbutton.flat check.right:dir(ltr), +popover modelbutton.flat radio.right:dir(ltr) { + margin-left: -4px; + margin-right: -12px; +} + +menu menuitem check, +menu menuitem radio { + transition: none; + margin: 0; + padding: 0; +} + +menu menuitem check:dir(ltr), +menu menuitem radio:dir(ltr) { + margin-right: 8px; +} + +menu menuitem check:dir(rtl), +menu menuitem radio:dir(rtl) { + margin-left: 8px; +} + +menu menuitem check:hover, +menu menuitem check:focus, +menu menuitem check:checked:hover, +menu menuitem check:checked:focus, +menu menuitem check:indeterminate:hover, +menu menuitem check:indeterminate:focus, +menu menuitem radio:hover, +menu menuitem radio:focus, +menu menuitem radio:checked:hover, +menu menuitem radio:checked:focus, +menu menuitem radio:indeterminate:hover, +menu menuitem radio:indeterminate:focus { + background-color: transparent; +} + +check { + -gtk-icon-source: -gtk-recolor(url("icons/checkbox-unchecked-symbolic.svg")); +} + +check:checked { + -gtk-icon-source: -gtk-recolor(url("icons/checkbox-checked-symbolic.svg")); +} + +check:indeterminate { + -gtk-icon-source: -gtk-recolor(url("icons/checkbox-mixed-symbolic.svg")); +} + +radio { + -gtk-icon-source: -gtk-recolor(url("icons/radio-unchecked-symbolic.svg")); + border-image-slice: 20; + border-image-width: 20px; + border-image-source: -gtk-gradient(radial, center center, 0, center center, 0.001, to(#387db7), to(transparent)); +} + +radio:indeterminate { + -gtk-icon-source: -gtk-recolor(url("icons/radio-mixed-symbolic.svg")); +} + +radio:checked:not(:indeterminate) { + border-image-source: -gtk-gradient(radial, center center, 0, center center, 0.125, to(#387db7), to(transparent)); +} + +radio:checked:not(:indeterminate):disabled { + border-image-source: -gtk-gradient(radial, center center, 0, center center, 0.125, to(rgba(158, 158, 158, 0.3)), to(transparent)); +} + +#MozillaGtkWidget>widget>checkbutton>check, +menu menuitem check { + min-height: 16px; + min-width: 16px; + border-radius: 2px; + -gtk-icon-source: -gtk-recolor(url("icons/small-checkbox-unchecked-symbolic.svg")); +} + +#MozillaGtkWidget>widget>checkbutton>check:checked, +menu menuitem check:checked { + -gtk-icon-source: -gtk-recolor(url("icons/small-checkbox-checked-symbolic.svg")); +} + +#MozillaGtkWidget>widget>checkbutton>check:indeterminate, +menu menuitem check:indeterminate { + -gtk-icon-source: -gtk-recolor(url("icons/small-checkbox-mixed-symbolic.svg")); +} + +#MozillaGtkWidget>widget>radiobutton>radio, +menu menuitem radio { + min-height: 16px; + min-width: 16px; + border-image: none; + -gtk-icon-source: -gtk-recolor(url("icons/small-radio-unchecked-symbolic.svg")); +} + +#MozillaGtkWidget>widget>radiobutton>radio:checked, +menu menuitem radio:checked { + -gtk-icon-source: -gtk-recolor(url("icons/small-radio-checked-symbolic.svg")); +} + +#MozillaGtkWidget>widget>radiobutton>radio:indeterminate, +menu menuitem radio:indeterminate { + -gtk-icon-source: -gtk-recolor(url("icons/small-radio-mixed-symbolic.svg")); +} + +treeview.view check, +treeview.view radio { + padding: 0; + color: rgba(158, 158, 158, 0.7); +} + +treeview.view check:checked, +treeview.view check:indeterminate, +treeview.view radio:checked, +treeview.view radio:indeterminate { + color: #387db7; +} + +treeview.view check:disabled, +treeview.view radio:disabled { + color: rgba(158, 158, 158, 0.3); +} + +treeview.view check, +treeview.view check:hover, +treeview.view check:selected, +treeview.view check:selected:hover, +treeview.view radio, +treeview.view radio:hover, +treeview.view radio:selected, +treeview.view radio:selected:hover { + box-shadow: none; + background-color: transparent; +} + +treeview.view radio:checked { + -gtk-icon-source: -gtk-recolor(url("icons/radio-checked-symbolic.svg")); + border-image: none; +} + +/** + * GtkScale + */ +scale { + min-height: 2px; + min-width: 2px; +} + +scale.horizontal { + padding: 15px 12px; +} + +scale.vertical { + padding: 12px 15px; +} + +scale slider { + min-height: 32px; + min-width: 32px; + margin: -15px; +} + +scale.fine-tune.horizontal { + min-height: 4px; + padding-top: 14px; + padding-bottom: 14px; +} + +scale.fine-tune.vertical { + min-width: 4px; + padding-left: 14px; + padding-right: 14px; +} + +scale.fine-tune slider { + margin: -14px; +} + +scale trough { + transition: background-color 75ms cubic-bezier(0, 0, 0.2, 1); + outline: none; + background-color: rgba(158, 158, 158, 0.3); +} + +scale trough:disabled { + background-color: rgba(158, 158, 158, 0.2); +} + +scale highlight { + transition: background-image 75ms cubic-bezier(0, 0, 0.2, 1); + background-image: image(#387db7); +} + +scale highlight:disabled { + background-color: #0f1011; + background-image: image(rgba(158, 158, 158, 0.3)); +} + +scale fill { + transition: background-color 75ms cubic-bezier(0, 0, 0.2, 1); + background-color: rgba(158, 158, 158, 0.3); +} + +scale fill:disabled { + background-color: transparent; +} + +scale slider { + transition: background-color 75ms cubic-bezier(0, 0, 0.2, 1), background-size 300ms cubic-bezier(0, 0, 0.2, 1), background-image 1200ms cubic-bezier(0, 0, 0.2, 1); + background-repeat: no-repeat; + background-position: center; + background-size: auto, 1000% 1000%; + border-radius: 50%; + color: #387db7; +} + +scale slider { + background-image: -gtk-scaled(url("assets/scale-slider-dark.png"), url("assets/scale-slider-dark@2.png")), radial-gradient(circle, transparent 10%, transparent 0%); +} + +scale slider:disabled { + background-image: -gtk-scaled(url("assets/scale-slider-disabled-dark.png"), url("assets/scale-slider-disabled-dark@2.png")), radial-gradient(circle, transparent 10%, transparent 0%); +} + +scale slider:hover { + background-color: rgba(56, 125, 183, 0.12); +} + +scale slider:focus { + background-color: rgba(56, 125, 183, 0.12); +} + +scale slider:active { + transition: background-color 75ms cubic-bezier(0, 0, 0.2, 1), background-size 0ms, background-image 0ms; + animation: ripple-on-slider 225ms cubic-bezier(0, 0, 0.2, 1) forwards; + background-image: -gtk-scaled(url("assets/scale-slider-dark.png"), url("assets/scale-slider-dark@2.png")), radial-gradient(circle, rgba(56, 125, 183, 0.16) 10%, transparent 0%); + background-size: auto, 0% 0%; +} + +scale marks, +scale value { + color: rgba(158, 158, 158, 0.7); +} + +scale indicator { + background-color: rgba(158, 158, 158, 0.3); + color: transparent; +} + +scale.horizontal marks.top { + margin-bottom: 7px; + margin-top: -15px; +} + +scale.horizontal.fine-tune marks.top { + margin-bottom: 6px; + margin-top: -14px; +} + +scale.horizontal marks.bottom { + margin-top: 7px; + margin-bottom: -15px; +} + +scale.horizontal.fine-tune marks.bottom { + margin-top: 6px; + margin-bottom: -14px; +} + +scale.vertical marks.top { + margin-right: 7px; + margin-left: -15px; +} + +scale.vertical.fine-tune marks.top { + margin-right: 6px; + margin-left: -14px; +} + +scale.vertical marks.bottom { + margin-left: 7px; + margin-right: -15px; +} + +scale.vertical.fine-tune marks.bottom { + margin-left: 6px; + margin-right: -14px; +} + +scale.horizontal indicator { + min-height: 8px; + min-width: 1px; +} + +scale.vertical indicator { + min-height: 1px; + min-width: 8px; +} + +scale.horizontal.marks-before:not(.marks-after) slider { + background-image: -gtk-scaled(url("assets/scale-horz-marks-before-slider-dark.png"), url("assets/scale-horz-marks-before-slider-dark@2.png")), radial-gradient(circle, transparent 10%, transparent 0%); +} + +scale.horizontal.marks-before:not(.marks-after) slider:disabled { + background-image: -gtk-scaled(url("assets/scale-horz-marks-before-slider-disabled-dark.png"), url("assets/scale-horz-marks-before-slider-disabled-dark@2.png")), radial-gradient(circle, transparent 10%, transparent 0%); +} + +scale.horizontal.marks-before:not(.marks-after) slider:active { + background-image: -gtk-scaled(url("assets/scale-horz-marks-before-slider-dark.png"), url("assets/scale-horz-marks-before-slider-dark@2.png")), radial-gradient(circle, rgba(56, 125, 183, 0.16) 10%, transparent 0%); +} + +scale.horizontal.marks-after:not(.marks-before) slider { + background-image: -gtk-scaled(url("assets/scale-horz-marks-after-slider-dark.png"), url("assets/scale-horz-marks-after-slider-dark@2.png")), radial-gradient(circle, transparent 10%, transparent 0%); +} + +scale.horizontal.marks-after:not(.marks-before) slider:disabled { + background-image: -gtk-scaled(url("assets/scale-horz-marks-after-slider-disabled-dark.png"), url("assets/scale-horz-marks-after-slider-disabled-dark@2.png")), radial-gradient(circle, transparent 10%, transparent 0%); +} + +scale.horizontal.marks-after:not(.marks-before) slider:active { + background-image: -gtk-scaled(url("assets/scale-horz-marks-after-slider-dark.png"), url("assets/scale-horz-marks-after-slider-dark@2.png")), radial-gradient(circle, rgba(56, 125, 183, 0.16) 10%, transparent 0%); +} + +scale.vertical.marks-before:not(.marks-after) slider { + background-image: -gtk-scaled(url("assets/scale-vert-marks-before-slider-dark.png"), url("assets/scale-vert-marks-before-slider-dark@2.png")), radial-gradient(circle, transparent 10%, transparent 0%); +} + +scale.vertical.marks-before:not(.marks-after) slider:disabled { + background-image: -gtk-scaled(url("assets/scale-vert-marks-before-slider-disabled-dark.png"), url("assets/scale-vert-marks-before-slider-disabled-dark@2.png")), radial-gradient(circle, transparent 10%, transparent 0%); +} + +scale.vertical.marks-before:not(.marks-after) slider:active { + background-image: -gtk-scaled(url("assets/scale-vert-marks-before-slider-dark.png"), url("assets/scale-vert-marks-before-slider-dark@2.png")), radial-gradient(circle, rgba(56, 125, 183, 0.16) 10%, transparent 0%); +} + +scale.vertical.marks-after:not(.marks-before) slider { + background-image: -gtk-scaled(url("assets/scale-vert-marks-after-slider-dark.png"), url("assets/scale-vert-marks-after-slider-dark@2.png")), radial-gradient(circle, transparent 10%, transparent 0%); +} + +scale.vertical.marks-after:not(.marks-before) slider:disabled { + background-image: -gtk-scaled(url("assets/scale-vert-marks-after-slider-disabled-dark.png"), url("assets/scale-vert-marks-after-slider-disabled-dark@2.png")), radial-gradient(circle, transparent 10%, transparent 0%); +} + +scale.vertical.marks-after:not(.marks-before) slider:active { + background-image: -gtk-scaled(url("assets/scale-vert-marks-after-slider-dark.png"), url("assets/scale-vert-marks-after-slider-dark@2.png")), radial-gradient(circle, rgba(56, 125, 183, 0.16) 10%, transparent 0%); +} + +scale.color { + min-height: 0; + min-width: 0; +} + +scale.color.horizontal { + padding: 0 0 12px 0; +} + +scale.color.horizontal slider:dir(ltr), +scale.color.horizontal slider:dir(rtl) { + margin-bottom: -24px; + margin-top: 8px; +} + +scale.color.vertical:dir(ltr) { + padding: 0 0 0 12px; +} + +scale.color.vertical:dir(ltr) slider { + margin-left: -24px; + margin-right: 8px; +} + +scale.color.vertical:dir(rtl) { + padding: 0 12px 0 0; +} + +scale.color.vertical:dir(rtl) slider { + margin-right: -24px; + margin-left: 8px; +} + +/** + * Progress bars + */ +progressbar { + color: rgba(158, 158, 158, 0.7); + font-size: smaller; +} + +progressbar.horizontal trough, +progressbar.horizontal progress { + min-height: 4px; +} + +progressbar.vertical trough, +progressbar.vertical progress { + min-width: 4px; +} + +progressbar trough { + background-color: rgba(158, 158, 158, 0.2); +} + +progressbar progress { + background-color: #387db7; +} + +progressbar trough.empty progress { + all: unset; +} + +/** + * Level Bar + */ +levelbar.horizontal block { + min-height: 4px; +} + +levelbar.horizontal.discrete block { + min-width: 32px; +} + +levelbar.horizontal.discrete block:not(:last-child) { + margin-right: 2px; +} + +levelbar.vertical block { + min-width: 4px; +} + +levelbar.vertical.discrete block { + min-height: 32px; +} + +levelbar.vertical.discrete block:not(:last-child) { + margin-bottom: 2px; +} + +levelbar block.low { + background-color: #ffeb3b; +} + +levelbar block.high, +levelbar block:not(.empty) { + background-color: #387db7; +} + +levelbar block.full { + background-color: #00e676; +} + +levelbar block.empty { + background-color: rgba(158, 158, 158, 0.2); +} + +/** + * Print dialog + */ +printdialog paper { + padding: 0; + border: 1px solid rgba(158, 158, 158, 0.2); + background-clip: padding-box; + background-color: #1a1c1e; + color: #9e9e9e; +} + +printdialog .dialog-action-box { + margin: 12px; +} + +/** + * Frames + */ +frame>border, +.frame { + margin: 0; + padding: 0; + border: 1px solid rgba(158, 158, 158, 0.2); + border-radius: 0; + box-shadow: none; + background-clip: padding-box; + background-color: #1a1c1e; +} + +frame>border.flat, +.frame.flat { + border-style: none; + background-color: transparent; +} + +frame.flat>border { + border-style: none; + background-color: transparent; +} + +actionbar>revealer>box { + padding: 4px; + border-top: 1px solid rgba(158, 158, 158, 0.2); +} + +actionbar>revealer>box .linked:not(.vertical)>entry:not(:only-child) { + border-radius: 2px 2px 0 0; +} + +scrolledwindow viewport.frame { + border-style: none; + background-color: transparent; +} + +overshoot.top { + background-image: -gtk-gradient(radial, center top, 0, center top, 0.75, to(rgba(56, 125, 183, 0.24)), to(transparent)); + background-repeat: no-repeat; + background-position: center top; + background-color: transparent; + border: none; + box-shadow: none; +} + +overshoot.bottom { + background-image: -gtk-gradient(radial, center bottom, 0, center bottom, 0.75, to(rgba(56, 125, 183, 0.24)), to(transparent)); + background-repeat: no-repeat; + background-position: center bottom; + background-color: transparent; + border: none; + box-shadow: none; +} + +overshoot.left { + background-image: -gtk-gradient(radial, left center, 0, left center, 0.75, to(rgba(56, 125, 183, 0.24)), to(transparent)); + background-repeat: no-repeat; + background-position: left center; + background-color: transparent; + border: none; + box-shadow: none; +} + +overshoot.right { + background-image: -gtk-gradient(radial, right center, 0, right center, 0.75, to(rgba(56, 125, 183, 0.24)), to(transparent)); + background-repeat: no-repeat; + background-position: right center; + background-color: transparent; + border: none; + box-shadow: none; +} + +junction { + border-style: solid none none solid; + border-width: 1px; + border-color: rgba(158, 158, 158, 0.2); +} + +junction:dir(rtl) { + border-style: solid solid none none; +} + +separator { + min-width: 1px; + min-height: 1px; + background-color: rgba(158, 158, 158, 0.2); +} + +.tweak-categories separator, +preferences stacksidebar.sidebar list separator, +stacksidebar.sidebar+separator.vertical, +stacksidebar.sidebar separator.horizontal, +button.font separator, +button.file separator { + min-width: 0; + min-height: 0; + background-color: transparent; +} + +/** + * Lists + */ +list { + border-color: rgba(158, 158, 158, 0.2); +} + +list row { + padding: 2px; +} + +row { + background-clip: padding-box; +} + +row.activatable:drop(active), +row.activatable:hover { + background-color: rgba(158, 158, 158, 0.04); +} + +row.activatable:focus { + background-color: rgba(158, 158, 158, 0.08); +} + +row.activatable:active { + background-image: radial-gradient(circle, rgba(158, 158, 158, 0.12) 10%, transparent 0%); +} + +row.activatable:drop(active):not(:active), +row.activatable:hover:not(:active) { + transition-property: all, border-image, background-size, background-image, background-color; + transition-duration: 75ms, 225ms, 300ms, 1200ms, 0ms; +} + +row.activatable.has-open-popup { + background-color: rgba(158, 158, 158, 0.12); +} + +row:selected { + background-color: rgba(56, 125, 183, 0.32); +} + +row:selected:drop(active), +row:selected:hover { + background-color: rgba(56, 125, 183, 0.3744); +} + +row:selected:focus { + background-color: rgba(56, 125, 183, 0.4016); +} + +row:selected:active { + background-image: radial-gradient(circle, rgba(56, 125, 183, 0.16) 10%, transparent 0%); +} + +row:selected.has-open-popup { + background-color: rgba(56, 125, 183, 0.4288); +} + +/** + * App Notifications + */ +.app-notification { + margin: 8px; +} + +.app-notification button.text-button:not(:disabled) { + color: #387db7; + box-shadow: none; + background-color: transparent; +} + +.app-notification button.text-button:not(:disabled):drop(active), +.app-notification button.text-button:not(:disabled):hover { + box-shadow: none; + background-color: rgba(56, 125, 183, 0.12); +} + +.app-notification button.text-button:not(:disabled):focus { + box-shadow: none; + background-color: rgba(56, 125, 183, 0.12); +} + +.app-notification button.text-button:not(:disabled):active { + box-shadow: none; + background-image: radial-gradient(circle, rgba(56, 125, 183, 0.16) 10%, transparent 0%); +} + +.app-notification.frame { + border-style: none; +} + +.app-notification border { + border-style: none; + background-color: transparent; +} + +/** + * Expanders + */ +expander title>arrow { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1); + min-width: 16px; + min-height: 16px; + -gtk-icon-source: -gtk-icontheme("pan-down-symbolic"); + color: rgba(158, 158, 158, 0.7); +} + +expander title>arrow:checked:dir(ltr) { + -gtk-icon-transform: rotate(-180deg); +} + +expander title>arrow:checked:dir(rtl) { + -gtk-icon-transform: rotate(180deg); +} + +expander title>arrow:hover, +expander title>arrow:active { + color: #9e9e9e; +} + +expander title>arrow:disabled { + color: rgba(158, 158, 158, 0.3); +} + +/** + * Calendar + */ +calendar { + padding: 1px; + border: 1px solid rgba(158, 158, 158, 0.2); + background-clip: padding-box; + background-color: #1a1c1e; + color: #9e9e9e; +} + +calendar:disabled { + color: rgba(158, 158, 158, 0.5); +} + +calendar:selected { + border-radius: 3px; + background-color: rgba(56, 125, 183, 0.32); +} + +calendar.header { + border-style: none none solid; + border-color: rgba(158, 158, 158, 0.2); + border-radius: 0; +} + +calendar.button { + border-radius: 3px; + color: rgba(158, 158, 158, 0.7); +} + +calendar.button:hover { + background-image: image(rgba(158, 158, 158, 0.08)); +} + +calendar.button:disabled { + color: rgba(158, 158, 158, 0.3); +} + +calendar.highlight { + color: rgba(158, 158, 158, 0.7); + font-weight: 500; +} + +calendar:indeterminate { + color: rgba(158, 158, 158, 0.3); +} + +/** + * Dialogs + */ +messagedialog.background { + background-color: #141416; +} + +messagedialog .titlebar { + min-height: 24px; + border-style: none; + box-shadow: inset 0 1px rgba(255, 255, 255, 0.05); + background-color: #141416; + color: #9e9e9e; +} + +messagedialog .titlebar:backdrop { + background-color: #141416; + color: rgba(158, 158, 158, 0.7); +} + +messagedialog.csd.background { + border-bottom-left-radius: 2px; + border-bottom-right-radius: 2px; +} + +messagedialog box.vertical>label+label { + color: rgba(158, 158, 158, 0.7); +} + +messagedialog .dialog-action-box { + margin-top: -4px; +} + +messagedialog .dialog-action-box button:not(:last-child) { + margin-right: 4px; +} + +messagedialog .dialog-action-box button:not(:disabled) { + color: #387db7; + box-shadow: none; + background-color: transparent; +} + +messagedialog .dialog-action-box button:not(:disabled):drop(active), +messagedialog .dialog-action-box button:not(:disabled):hover { + box-shadow: none; + background-color: rgba(56, 125, 183, 0.12); +} + +messagedialog .dialog-action-box button:not(:disabled):focus { + box-shadow: none; + background-color: rgba(56, 125, 183, 0.12); +} + +messagedialog .dialog-action-box button:not(:disabled):active { + box-shadow: none; + background-image: radial-gradient(circle, rgba(56, 125, 183, 0.16) 10%, transparent 0%); +} + +messagedialog .dialog-action-box button.destructive-action:not(:disabled) { + color: #f44336; + box-shadow: none; + background-color: transparent; +} + +messagedialog .dialog-action-box button.destructive-action:not(:disabled):drop(active), +messagedialog .dialog-action-box button.destructive-action:not(:disabled):hover { + box-shadow: none; + background-color: rgba(244, 67, 54, 0.12); +} + +messagedialog .dialog-action-box button.destructive-action:not(:disabled):focus { + box-shadow: none; + background-color: rgba(244, 67, 54, 0.12); +} + +messagedialog .dialog-action-box button.destructive-action:not(:disabled):active { + box-shadow: none; + background-image: radial-gradient(circle, rgba(244, 67, 54, 0.16) 10%, transparent 0%); +} + +filechooser .dialog-action-box { + border-top: 1px solid rgba(158, 158, 158, 0.2); +} + +filechooser #pathbarbox { + border-bottom: 1px solid rgba(158, 158, 158, 0.2); +} + +filechooser #pathbarbox>stack>box>button { + border-radius: 9999px; +} + +/** + * Sidebar + */ +.sidebar { + border-style: none; + background-color: transparent; +} + +stacksidebar.sidebar:dir(ltr) list, +stacksidebar.sidebar.left list, +stacksidebar.sidebar.left:dir(rtl) list, +.sidebar:not(separator):dir(ltr), +.sidebar:not(separator).left, +.sidebar:not(separator).left:dir(rtl) { + border-right: 1px solid rgba(158, 158, 158, 0.2); + border-left-style: none; +} + +stacksidebar.sidebar:dir(rtl) list, +stacksidebar.sidebar.right list, +.sidebar:not(separator):dir(rtl), +.sidebar:not(separator).right { + border-left: 1px solid rgba(158, 158, 158, 0.2); + border-right-style: none; +} + +paned .sidebar, +paned .sidebar.left, +paned .sidebar.right, +paned .sidebar.left:dir(rtl), +paned .sidebar:dir(rtl), +paned .sidebar:dir(ltr) { + border-style: none; +} + +stacksidebar.sidebar list { + padding: 4px; +} + +stacksidebar.sidebar row { + min-height: 32px; + padding: 0 2px; + border-radius: 2px; + color: rgba(158, 158, 158, 0.7); + font-weight: 500; +} + +stacksidebar.sidebar row:selected { + color: #387db7; + background-color: rgba(56, 125, 183, 0.16); +} + +stacksidebar.sidebar row:selected:drop(active), +stacksidebar.sidebar row:selected:hover { + background-color: rgba(56, 125, 183, 0.2272); +} + +stacksidebar.sidebar row:selected:focus { + background-color: rgba(56, 125, 183, 0.2608); +} + +stacksidebar.sidebar row:selected:active { + background-image: radial-gradient(circle, rgba(56, 125, 183, 0.16) 10%, transparent 0%); +} + +stacksidebar.sidebar row+row { + margin-top: 4px; +} + +stacksidebar.sidebar row>label { + padding-left: 6px; + padding-right: 6px; +} + +separator.sidebar { + background-color: rgba(158, 158, 158, 0.2); +} + +/** + * File chooser + */ +row image.sidebar-icon { + transition: color 75ms cubic-bezier(0, 0, 0.2, 1); + color: rgba(158, 158, 158, 0.7); +} + +row image.sidebar-icon:disabled { + color: rgba(158, 158, 158, 0.3); +} + +placessidebar.sidebar>viewport.frame { + border-style: none; + background-color: transparent; +} + +placessidebar.sidebar list { + padding: 1px 0 4px; +} + +placessidebar.sidebar row { + min-height: 32px; + margin: -1px 4px; + padding: 0; + border-radius: 2px; +} + +placessidebar.sidebar row>revealer { + padding: 0 8px; +} + +placessidebar.sidebar row:selected { + color: #387db7; + font-weight: 500; + background-color: rgba(56, 125, 183, 0.16); +} + +placessidebar.sidebar row:selected:drop(active), +placessidebar.sidebar row:selected:hover { + background-color: rgba(56, 125, 183, 0.2272); +} + +placessidebar.sidebar row:selected:focus { + background-color: rgba(56, 125, 183, 0.2608); +} + +placessidebar.sidebar row:selected:active { + background-image: radial-gradient(circle, rgba(56, 125, 183, 0.16) 10%, transparent 0%); +} + +placessidebar.sidebar row:selected image.sidebar-icon { + color: #387db7; +} + +placessidebar.sidebar row:disabled { + color: rgba(158, 158, 158, 0.5); +} + +placessidebar.sidebar row image.sidebar-icon:dir(ltr) { + padding-right: 8px; +} + +placessidebar.sidebar row image.sidebar-icon:dir(rtl) { + padding-left: 8px; +} + +placessidebar.sidebar row label.sidebar-label:dir(ltr) { + padding-right: 2px; +} + +placessidebar.sidebar row label.sidebar-label:dir(rtl) { + padding-left: 2px; +} + +placessidebar.sidebar row.sidebar-placeholder-row { + background-color: rgba(158, 158, 158, 0.08); +} + +placessidebar.sidebar row.sidebar-new-bookmark-row { + color: #387db7; +} + +placessidebar.sidebar row.sidebar-new-bookmark-row image.sidebar-icon { + color: #387db7; +} + +placesview .server-list-button>image { + -gtk-icon-transform: rotate(-0.5turn); +} + +placesview .server-list-button:checked>image { + -gtk-icon-transform: rotate(0turn); +} + +placesview>actionbar>revealer>box>label { + padding-left: 8px; + padding-right: 8px; +} + +/** + * Paned + */ +paned>separator { + min-width: 1px; + min-height: 1px; + -gtk-icon-source: none; + border-style: none; + background-color: transparent; + background-image: image(rgba(158, 158, 158, 0.2)); + background-size: 1px 1px; + background-clip: content-box; +} + +paned>separator.wide { + min-width: 6px; + min-height: 6px; + background-image: image(rgba(158, 158, 158, 0.2)), image(rgba(158, 158, 158, 0.2)); + background-size: 1px 1px, 1px 1px; +} + +paned.horizontal>separator { + background-repeat: repeat-y; +} + +paned.horizontal>separator:dir(ltr) { + margin: 0 -8px 0 0; + padding: 0 8px 0 0; + background-position: left; +} + +paned.horizontal>separator:dir(rtl) { + margin: 0 0 0 -8px; + padding: 0 0 0 8px; + background-position: right; +} + +paned.horizontal>separator.wide { + margin: 0; + padding: 0; + background-repeat: repeat-y, repeat-y; + background-position: left, right; +} + +paned.vertical>separator { + margin: 0 0 -8px 0; + padding: 0 0 8px 0; + background-repeat: repeat-x; + background-position: top; +} + +paned.vertical>separator.wide { + margin: 0; + padding: 0; + background-repeat: repeat-x, repeat-x; + background-position: bottom, top; +} + +/** + * GtkInfoBar + */ +infobar { + border-style: none; +} + +infobar.action:hover>revealer>box { + background-image: image(rgba(158, 158, 158, 0.08)); +} + +infobar.info>revealer>box, +infobar.question>revealer>box { + border-bottom: 1px solid rgba(158, 158, 158, 0.2); +} + +infobar.info>revealer>box button.text-button:not(:disabled), +infobar.question>revealer>box button.text-button:not(:disabled) { + color: #387db7; + box-shadow: none; + background-color: transparent; +} + +infobar.info>revealer>box button.text-button:not(:disabled):drop(active), +infobar.info>revealer>box button.text-button:not(:disabled):hover, +infobar.question>revealer>box button.text-button:not(:disabled):drop(active), +infobar.question>revealer>box button.text-button:not(:disabled):hover { + box-shadow: none; + background-color: rgba(56, 125, 183, 0.12); +} + +infobar.info>revealer>box button.text-button:not(:disabled):focus, +infobar.question>revealer>box button.text-button:not(:disabled):focus { + box-shadow: none; + background-color: rgba(56, 125, 183, 0.12); +} + +infobar.info>revealer>box button.text-button:not(:disabled):active, +infobar.question>revealer>box button.text-button:not(:disabled):active { + box-shadow: none; + background-image: radial-gradient(circle, rgba(56, 125, 183, 0.16) 10%, transparent 0%); +} + +infobar.warning>revealer>box { + background-color: #ffeb3b; + color: #000; +} + +infobar.warning>revealer>box button.flat { + color: #000; + box-shadow: none; + background-color: transparent; +} + +infobar.warning>revealer>box button.flat:drop(active), +infobar.warning>revealer>box button.flat:hover { + box-shadow: none; + background-color: rgba(0, 0, 0, 0.08); +} + +infobar.warning>revealer>box button.flat:focus { + box-shadow: none; + background-color: rgba(0, 0, 0, 0.08); +} + +infobar.warning>revealer>box button.flat:active { + box-shadow: none; + background-image: radial-gradient(circle, rgba(0, 0, 0, 0.12) 10%, transparent 0%); +} + +infobar.warning>revealer>box *:link { + color: #000; +} + +infobar.error>revealer>box { + background-color: #f44336; + color: #fff; +} + +infobar.error>revealer>box button.flat { + color: #fff; + box-shadow: none; + background-color: transparent; +} + +infobar.error>revealer>box button.flat:drop(active), +infobar.error>revealer>box button.flat:hover { + box-shadow: none; + background-color: rgba(255, 255, 255, 0.08); +} + +infobar.error>revealer>box button.flat:focus { + box-shadow: none; + background-color: rgba(255, 255, 255, 0.08); +} + +infobar.error>revealer>box button.flat:active { + box-shadow: none; + background-image: radial-gradient(circle, rgba(255, 255, 255, 0.12) 10%, transparent 0%); +} + +infobar.error>revealer>box *:link { + color: #fff; +} + +infobar button label { + margin: 0 -4px; +} + +/** + * Tooltips + */ +tooltip { + border-radius: 2px; + box-shadow: none; +} + +tooltip.background { + background-color: rgba(9, 9, 10, 0.9); + color: #80868b; +} + +tooltip decoration { + background-color: transparent; +} + +tooltip>box { + margin: -6px; + min-height: 24px; + padding: 4px 8px; +} + +tooltip .dim-label { + color: rgba(128, 134, 139, 0.7); +} + +/** + * Color Chooser + */ +colorswatch.top { + border-top-left-radius: 2.5px; + border-top-right-radius: 2.5px; +} + +colorswatch.top overlay { + border-top-left-radius: 2px; + border-top-right-radius: 2px; +} + +colorswatch.bottom { + border-bottom-left-radius: 2.5px; + border-bottom-right-radius: 2.5px; +} + +colorswatch.bottom overlay { + border-bottom-left-radius: 2px; + border-bottom-right-radius: 2px; +} + +colorswatch.left, +colorswatch:first-child:not(.top) { + border-top-left-radius: 2.5px; + border-bottom-left-radius: 2.5px; +} + +colorswatch.left overlay, +colorswatch:first-child:not(.top) overlay { + border-top-left-radius: 2px; + border-bottom-left-radius: 2px; +} + +colorswatch.right, +colorswatch:last-child:not(.bottom) { + border-top-right-radius: 2.5px; + border-bottom-right-radius: 2.5px; +} + +colorswatch.right overlay, +colorswatch:last-child:not(.bottom) overlay { + border-top-right-radius: 2px; + border-bottom-right-radius: 2px; +} + +colorswatch.dark { + color: #fff; +} + +colorswatch.light { + color: #000; +} + +colorswatch overlay { + transition: box-shadow 75ms cubic-bezier(0, 0, 0.2, 1); + box-shadow: 0 2px 2px -2px rgba(0, 0, 0, 0.3), 0 1px 2px -1px rgba(0, 0, 0, 0.24), 0 1px 2px -0.6px rgba(0, 0, 0, 0.17); +} + +colorswatch overlay:drop(active), +colorswatch overlay:hover { + box-shadow: 0 3px 2px -2px rgba(0, 0, 0, 0.2), 0 3px 2.4px 0 rgba(0, 0, 0, 0.14), 0 1px 4.8px 0 rgba(0, 0, 0, 0.12); +} + +colorswatch#add-color-button { + border-radius: 2px 2px 0 0; + color: #9e9e9e; +} + +colorswatch#add-color-button:only-child { + border-radius: 2px; +} + +colorswatch#add-color-button overlay { + background-color: #141416; +} + +colorswatch:disabled { + opacity: 0.5; +} + +colorswatch:disabled overlay { + box-shadow: none; +} + +colorswatch#editor-color-sample { + border-radius: 2.5px; +} + +colorswatch#editor-color-sample overlay { + border-radius: 2px; +} + +colorchooser .popover.osd { + transition: box-shadow 75ms cubic-bezier(0, 0, 0.2, 1); + border-radius: 2px; + box-shadow: 0 2px 2.4px -1px rgba(0, 0, 0, 0.2), 0 4px 3px 0 rgba(0, 0, 0, 0.14), 0 1px 6px 0 rgba(0, 0, 0, 0.12), inset 0 1px rgba(255, 255, 255, 0.05); + background-color: #141416; +} + +colorchooser .popover.osd:backdrop { + box-shadow: 0 3px 2px -3px rgba(0, 0, 0, 0.3), 0 2px 2px -1px rgba(0, 0, 0, 0.24), 0 1px 3px 0 rgba(0, 0, 0, 0.12), inset 0 1px rgba(255, 255, 255, 0.05); +} + +/** + * Misc + */ +/** + * Window Decorations + */ +decoration { + transition: box-shadow 75ms cubic-bezier(0, 0, 0.2, 1); + border-radius: 2px 2px 0 0; + box-shadow: 0 8px 6px -5px rgba(0, 0, 0, 0.2), 0 16px 14.4px 2px rgba(0, 0, 0, 0.14), 0 6px 18px 5px rgba(0, 0, 0, 0.12), 0 16px 14.4px 2px transparent, 0 6px 18px 5px transparent; + margin: 8px; +} + +decoration:backdrop { + box-shadow: 0 2px 2.4px -1px rgba(0, 0, 0, 0.2), 0 4px 3px 0 rgba(0, 0, 0, 0.14), 0 1px 6px 0 rgba(0, 0, 0, 0.12), 0 16px 14.4px 2px transparent, 0 6px 18px 5px transparent; +} + +.maximized decoration, +.fullscreen decoration, +.tiled decoration, +.tiled-top decoration, +.tiled-right decoration, +.tiled-bottom decoration, +.tiled-left decoration { + border-radius: 0; +} + +.popup decoration { + box-shadow: none; +} + +.ssd decoration { + box-shadow: 0 3px 3px rgba(0, 0, 0, 0.16); +} + +.csd.popup decoration { + border-radius: 2px; + box-shadow: 0 2px 2.4px -1px rgba(0, 0, 0, 0.2), 0 4px 3px 0 rgba(0, 0, 0, 0.14), 0 1px 6px 0 rgba(0, 0, 0, 0.12); +} + +tooltip.csd decoration { + border-radius: 2px; + box-shadow: none; +} + +messagedialog.csd decoration { + border-radius: 2px; +} + +.solid-csd decoration { + margin: 0; + padding: 2px; + border-radius: 0; + box-shadow: none; + box-shadow: inset 0 1px rgba(255, 255, 255, 0.05); + background-color: #09090a; +} + +.solid-csd decoration:backdrop { + background-color: #000000; +} + +button.titlebutton { + border-radius: 9999px; +} + +.monospace { + font-family: monospace; +} + +/** + * Touch Copy & Paste + */ +cursor-handle { + color: #387db7; + -gtk-icon-source: -gtk-recolor(url("icons/cursor-handle-symbolic.svg")); +} + +cursor-handle.top:dir(ltr), +cursor-handle.bottom:dir(rtl) { + -gtk-icon-transform: rotate(90deg); +} + +cursor-handle.bottom:dir(ltr), +cursor-handle.top:dir(rtl) { + -gtk-icon-transform: unset; +} + +cursor-handle.insertion-cursor:dir(ltr), +cursor-handle.insertion-cursor:dir(rtl) { + padding-top: 6px; + -gtk-icon-transform: rotate(45deg); +} + +.context-menu { + font: initial; +} + +.keycap { + min-width: 12px; + min-height: 28px; + padding-left: 8px; + padding-right: 8px; + border-radius: 2px; + box-shadow: 0 2px 2px -2px rgba(0, 0, 0, 0.3), 0 1px 2px -1px rgba(0, 0, 0, 0.24), 0 1px 2px -0.6px rgba(0, 0, 0, 0.17); + background-color: #141416; + color: #9e9e9e; + font-size: smaller; +} + +shortcut:last-child { + margin-bottom: 4px; +} + +stackswitcher button.text-button { + min-width: 100px; +} + +stackswitcher button.circular, +stackswitcher button.text-button.circular { + min-width: 32px; + min-height: 32px; + padding: 0; +} + +/** + * App Icons + */ +/** + * Emoji + */ +popover.emoji-picker { + padding: 0; +} + +popover.emoji-picker entry { + border-bottom: 1px solid rgba(158, 158, 158, 0.2); + border-image: none; + border-radius: 0; + box-shadow: none; + background-color: transparent; +} + +popover.emoji-picker scrolledwindow { + border-bottom: 1px solid rgba(158, 158, 158, 0.2); +} + +button.emoji-section { + margin: 4px; +} + +button.emoji-section:not(:last-child) { + margin-right: 0; +} + +popover.emoji-picker .emoji { + min-width: 3em; + min-height: 3em; + padding: 0 8px; +} + +popover.emoji-picker .emoji widget { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1); + border-radius: 2px; +} + +popover.emoji-picker .emoji widget:hover { + background-color: rgba(158, 158, 158, 0.08); +} + +popover.emoji-completion { + padding: 8px 0; +} + +popover.emoji-completion arrow { + border: none; + background: none; +} + +popover.emoji-completion .emoji-completion-row { + min-height: 28px; + padding: 0 12px; +} + +popover.emoji-completion .emoji:hover { + background-color: rgba(158, 158, 158, 0.08); +} + +/** + * libhandy + */ +popover.combo { + padding: 8px 0; +} + +popover.combo list { + border-style: none; + background-color: transparent; +} + +popover.combo list>row { + min-height: 32px; + padding: 0 12px; +} + +keypad .digit { + font-size: 200%; + font-weight: bold; +} + +keypad .letters { + font-size: 70%; +} + +keypad .symbol { + font-size: 160%; +} + +viewswitcher button { + margin: 0; + padding: 0; + border-radius: 0; +} + +viewswitcher button>stack>box.narrow image, +viewswitcher button>stack>box.narrow label { + padding-left: 8px; + padding-right: 8px; +} + +viewswitcher button>stack>box.wide { + padding: 8px 12px; +} + +viewswitcher button>stack>box.wide label:dir(ltr) { + padding-right: 8px; +} + +viewswitcher button>stack>box.wide label:dir(rtl) { + padding-left: 8px; +} + +list.content { + border: 1px solid rgba(158, 158, 158, 0.2); + background-clip: padding-box; + background-color: #1a1c1e; +} + +list.content>row:not(:first-child) { + border-top: 1px solid rgba(158, 158, 158, 0.2); +} + +window.csd.unified:not(.solid-csd):not(.maximized):not(.fullscreen):not(.tiled):not(.tiled-top):not(.tiled-bottom):not(.tiled-left):not(.tiled-right) headerbar { + box-shadow: 0 2px 2px -2px rgba(0, 0, 0, 0.3), 0 1px 2px -1px rgba(0, 0, 0, 0.24), 0 1px 2px -0.6px rgba(0, 0, 0, 0.17); +} + +window.csd.unified:not(.solid-csd):not(.maximized):not(.fullscreen):not(.tiled):not(.tiled-top):not(.tiled-bottom):not(.tiled-left):not(.tiled-right)>decoration-overlay { + box-shadow: inset 0 1px rgba(255, 255, 255, 0.05); +} + +window.csd.unified:not(.solid-csd):not(.maximized):not(.fullscreen):not(.tiled):not(.tiled-top):not(.tiled-bottom):not(.tiled-left):not(.tiled-right), +window.csd.unified:not(.solid-csd):not(.maximized):not(.fullscreen):not(.tiled):not(.tiled-top):not(.tiled-bottom):not(.tiled-left):not(.tiled-right)>decoration, +window.csd.unified:not(.solid-csd):not(.maximized):not(.fullscreen):not(.tiled):not(.tiled-top):not(.tiled-bottom):not(.tiled-left):not(.tiled-right)>decoration-overlay { + border-radius: 2px; +} + +/** + * Nautilus + */ +.nautilus-canvas-item.dim-label, +.nautilus-list-dim-label { + color: rgba(158, 158, 158, 0.7); +} + +@keyframes nautilus-operations-button-needs-attention { + to { + background-color: rgba(128, 134, 139, 0.08); + } +} + +.nautilus-operations-button-needs-attention { + animation: nautilus-operations-button-needs-attention 300ms cubic-bezier(0.4, 0, 0.2, 1) 2 alternate; +} + +.nautilus-operations-button-needs-attention-multiple { + animation: nautilus-operations-button-needs-attention 300ms cubic-bezier(0.4, 0, 0.2, 1) 6 alternate; +} + +.linked:not(.vertical)>button:not(.suggested-action):not(.destructive-action):not(:only-child).disclosure-button { + border-radius: 9999px; +} + +.path-bar-box { + transition: background-color 75ms cubic-bezier(0, 0, 0.2, 1); + margin: 4px 0; + border-radius: 2px; +} + +.path-bar-box button { + margin: 0; +} + +.path-bar-box.width-maximized { + background-color: rgba(128, 134, 139, 0.04); +} + +.path-bar-box.background.frame { + border-style: none; + background-color: rgba(128, 134, 139, 0.04); +} + +.path-bar-box .path-bar button label:not(:only-child):first-child { + margin-left: 0; +} + +.path-bar-box .path-bar button label:not(:only-child):last-child { + margin-right: 0; +} + +.path-bar-box .nautilus-path-bar button:not(.suggested-action):not(.destructive-action) { + padding-left: 4px; + padding-right: 4px; +} + +.path-bar-box .nautilus-path-bar button:not(.suggested-action):not(.destructive-action).text-button { + min-width: 0; +} + +.path-bar-box .nautilus-path-bar button:not(.suggested-action):not(.destructive-action) label:not(:only-child):first-child { + margin-left: 0; +} + +.path-bar-box .nautilus-path-bar button:not(.suggested-action):not(.destructive-action) label:not(:only-child):last-child { + margin-right: 0; +} + +.path-bar-box .nautilus-path-bar button:not(.suggested-action):not(.destructive-action).text-button.image-button image:not(:only-child) { + margin: 0; +} + +.nautilus-window .floating-bar { + min-height: 32px; + padding: 0; + border-style: solid solid none; + border-width: 1px; + border-color: rgba(158, 158, 158, 0.2); + border-radius: 3px 3px 0 0; + background-clip: padding-box; + background-color: #141416; +} + +.nautilus-window .floating-bar.bottom.left { + margin-right: 7px; + border-left-style: none; + border-top-left-radius: 0; +} + +.nautilus-window .floating-bar.bottom.right { + margin-left: 7px; + border-right-style: none; + border-top-right-radius: 0; +} + +.nautilus-window .floating-bar button { + margin: 4px; +} + +.disk-space-display.unknown { + background-color: rgba(158, 158, 158, 0.3); + color: rgba(158, 158, 158, 0.3); +} + +.disk-space-display.used { + background-color: #387db7; + color: #387db7; +} + +.disk-space-display.free { + background-color: rgba(158, 158, 158, 0.08); + color: rgba(158, 158, 158, 0.08); +} + +.nautilus-empty-state-icon+.large-title { + color: rgba(158, 158, 158, 0.7); +} + +.search-information { + padding: 2px; + border-bottom: 1px solid rgba(158, 158, 158, 0.2); +} + +.conflict-row:not(:selected) { + background-color: #5f5a27; +} + +.nautilus-window flowboxchild .icon-item-background { + padding: 4px; + border-radius: 2px; +} + +.nautilus-window flowboxchild:selected { + background-color: transparent; +} + +.nautilus-window flowboxchild:selected .icon-item-background { + background-color: rgba(56, 125, 183, 0.32); +} + +dialog.background>box.dialog-vbox.vertical>grid.horizontal>scrolledwindow.frame { + border-style: none; +} + +dialog.background>box.dialog-vbox.vertical>grid.horizontal>box.horizontal:last-child { + margin: -6px 0 0 -6px; + border-top: 1px solid rgba(158, 158, 158, 0.2); +} + +dialog.background>box.dialog-vbox.vertical>grid.horizontal>box.horizontal:last-child>label { + margin: 0 8px; +} + +dialog.background>box.dialog-vbox.vertical>grid.horizontal>box.horizontal:last-child>box>button { + border-radius: 0; +} + +.nautilus-window>popover.menu:not(:last-child) { + padding: 3px; +} + +.nautilus-window>popover.menu:not(:last-child)>stack>box>box>box { + margin-top: -6px; +} + +.nautilus-window>popover.menu:not(:last-child)>stack>box>box>box>box { + margin-bottom: -6px; +} + +.nautilus-window>popover.menu:not(:last-child)>stack>box>box>box>box.linked { + margin-top: 1px; +} + +.nautilus-window>popover.menu:not(:last-child) separator { + margin-bottom: -2px; +} + +.nautilus-menu-sort-heading { + margin: 1px 3px; + font-weight: 500; +} + +.nautilus-menu-sort-heading:disabled { + color: rgba(158, 158, 158, 0.7); +} + +.nautilus-window headerbar revealer>button { + border-radius: 9999px; +} + +.nautilus-window paned>separator { + background-color: #0f1011; +} + +/** + * gedit + */ +.open-document-selector-path-label { + color: rgba(158, 158, 158, 0.7); + font-size: smaller; +} + +.open-document-selector-match { + background-color: #ffeb3b; + color: #000; +} + +.gedit-document-panel row button.flat { + margin-top: 8px; + margin-bottom: 8px; +} + +.gedit-document-panel-group-row:not(:first-child) { + border-top: 1px solid rgba(158, 158, 158, 0.2); +} + +.gedit-side-panel-paned statusbar { + border-top: 1px solid rgba(158, 158, 158, 0.2); +} + +.gedit-search-slider { + margin: 4px 4px 8px; +} + +.gedit-search-slider .linked:not(.vertical)>entry { + border-radius: 2px; +} + +.gedit-search-slider .linked:not(.vertical)>entry .gedit-search-entry-occurrences-tag { + all: unset; + color: rgba(158, 158, 158, 0.7); +} + +.gedit-search-slider .linked:not(.vertical)>entry:dir(ltr) { + margin-right: -60px; + padding-right: 60px; +} + +.gedit-search-slider .linked:not(.vertical)>entry:dir(ltr) .gedit-search-entry-occurrences-tag { + margin-left: 4px; +} + +.gedit-search-slider .linked:not(.vertical)>entry:dir(ltr) image.right { + margin-right: 0; +} + +.gedit-search-slider .linked:not(.vertical)>entry:dir(rtl) { + margin-left: -60px; + padding-left: 60px; +} + +.gedit-search-slider .linked:not(.vertical)>entry:dir(rtl) .gedit-search-entry-occurrences-tag { + margin-right: 4px; +} + +.gedit-search-slider .linked:not(.vertical)>entry:dir(rtl) image.left { + margin-left: 0; +} + +.gedit-search-slider .linked:not(.vertical)>entry:not(.error) { + background-color: #141416; +} + +.gedit-search-slider .linked:not(.vertical)>entry.error~button { + color: rgba(255, 255, 255, 0.7); + box-shadow: none; + background-color: transparent; +} + +.gedit-search-slider .linked:not(.vertical)>entry.error~button:drop(active), +.gedit-search-slider .linked:not(.vertical)>entry.error~button:hover { + box-shadow: none; + background-color: rgba(255, 255, 255, 0.08); +} + +.gedit-search-slider .linked:not(.vertical)>entry.error~button:focus { + box-shadow: none; + background-color: rgba(255, 255, 255, 0.08); +} + +.gedit-search-slider .linked:not(.vertical)>entry.error~button:active { + box-shadow: none; + background-image: radial-gradient(circle, rgba(255, 255, 255, 0.12) 10%, transparent 0%); +} + +.gedit-search-slider .linked:not(.vertical)>entry.error~button:disabled { + color: rgba(255, 255, 255, 0.3); +} + +.gedit-search-slider .linked:not(.vertical)>button { + border: solid 4px transparent; + border-radius: 9999px; + background-clip: padding-box; +} + +.gedit-search-slider .linked:not(.vertical)>button:last-child:dir(ltr), +.gedit-search-slider .linked:not(.vertical)>button:not(:first-child):dir(rtl) { + margin-left: -2px; +} + +.gedit-search-slider .linked:not(.vertical)>button:first-child:dir(rtl), +.gedit-search-slider .linked:not(.vertical)>button:not(:last-child):dir(ltr) { + margin-right: -2px; +} + +frame.gedit-map-frame>border:dir(ltr) { + border-style: none none none solid; +} + +frame.gedit-map-frame>border:dir(rtl) { + border-style: none solid none none; +} + +/** + * Tweaks + */ +.tweak-categories { + background-image: image(#0f1011); +} + +.tweak { + padding: 3px; +} + +.tweak.title:hover { + box-shadow: none; +} + +.tweak-group-white, +.tweak-white, +.tweak-white:hover { + background-image: image(#1a1c1e); +} + +.tweak-startup, +.tweak-startup:hover { + background-image: image(#1a1c1e); +} + +.tweak-group-startup { + border: 1px solid rgba(158, 158, 158, 0.2); + background-clip: padding-box; + background-image: image(#1a1c1e); +} + +row#Focus, +row#ClickMethod, +row#StaticWorkspaceTweak, +row#dynamic-workspaces, +row#PrimaryWorkspaceTweak, +row#workspaces-only-on-primary { + padding: 0; + border: 1px solid rgba(158, 158, 158, 0.2); + background-clip: padding-box; + background-image: image(#1a1c1e); +} + +row#Focus row:not(:last-child), +row#ClickMethod row:not(:last-child), +row#StaticWorkspaceTweak row:not(:last-child), +row#dynamic-workspaces row:not(:last-child), +row#PrimaryWorkspaceTweak row:not(:last-child), +row#workspaces-only-on-primary row:not(:last-child) { + border-bottom: 1px solid rgba(158, 158, 158, 0.2); +} + +row#Focus.tweak>list, +row#ClickMethod.tweak>list, +row#StaticWorkspaceTweak.tweak>list, +row#dynamic-workspaces.tweak>list, +row#PrimaryWorkspaceTweak.tweak>list, +row#workspaces-only-on-primary.tweak>list { + margin-top: -3px; +} + +row#Focus, +row#ClickMethod, +row#PrimaryWorkspaceTweak, +row#workspaces-only-on-primary { + margin-top: 4px; +} + +leaflet.titlebar>.titlebar.tweak-titlebar-left, +leaflet.titlebar>.titlebar.tweak-titlebar-right, +hdyleaflet.titlebar>.titlebar.tweak-titlebar-left, +hdyleaflet.titlebar>.titlebar.tweak-titlebar-right { + background-color: inherit; + box-shadow: inherit; + transition: color 75ms cubic-bezier(0, 0, 0.2, 1); +} + +leaflet.titlebar>.titlebar.tweak-titlebar-left+separator, +leaflet.titlebar>.titlebar.tweak-titlebar-right+separator, +hdyleaflet.titlebar>.titlebar.tweak-titlebar-left+separator, +hdyleaflet.titlebar>.titlebar.tweak-titlebar-right+separator { + background-color: inherit; + background-image: image(rgba(128, 134, 139, 0.2)); +} + +/** + * Builder + */ +layouttabbar { + border-bottom: 1px solid rgba(158, 158, 158, 0.2); + background-color: #0f1011; +} + +layouttabbar>box>button { + margin: 4px 0; +} + +layouttab { + margin: 0 8px; + border-style: none solid; + border-width: 1px; + border-color: rgba(158, 158, 158, 0.2); + box-shadow: inset 0 -2px #387db7; + background-color: #1a1c1e; +} + +layouttab separator.vertical { + margin: 8px 4px; +} + +layouttab button, +layouttab button.text-button, +layouttab button.image-button { + margin-top: 8px; + margin-bottom: 8px; + padding: 0 4px; +} + +layout { + border: 1px solid rgba(158, 158, 158, 0.2); + -PnlDockBin-handle-size: 1; +} + +entry.search-missing { + background-color: #f44336; + color: #fff; +} + +window.workbench treeview.image { + color: rgba(158, 158, 158, 0.7); +} + +popover.popover-selector list { + padding: 6px; +} + +popover.popover-selector list row { + border-radius: 2px; +} + +popover.popover-selector list row image:dir(ltr) { + margin-right: 6px; +} + +popover.popover-selector list row image:dir(rtl) { + margin-left: 6px; +} + +popover.popover-selector list row .accel:dir(ltr) { + margin-left: 6px; +} + +popover.popover-selector list row .accel:dir(rtl) { + margin-right: 6px; +} + +omnibar.linked:not(.vertical) entry { + border-radius: 2px; +} + +omnibar entry { + color: rgba(158, 158, 158, 0.7); +} + +popover.omnibar list row:not(:last-child) { + border-bottom: 1px solid rgba(158, 158, 158, 0.2); +} + +entry.preferences-search { + border-bottom: 1px solid rgba(158, 158, 158, 0.2); + box-shadow: none; + background-color: transparent; +} + +preferences stacksidebar.sidebar:dir(ltr) list, +preferences stacksidebar.sidebar:dir(rtl) list { + border-style: none; +} + +preferences>box>box:dir(ltr) { + border-right: 1px solid rgba(158, 158, 158, 0.2); +} + +preferences>box>box:dir(rtl) { + border-left: 1px solid rgba(158, 158, 158, 0.2); +} + +popover.messagepopover.background { + padding: 0; +} + +popover.messagepopover .popover-action-area button { + padding: 8px 16px; + border-top: 1px solid rgba(158, 158, 158, 0.2); + border-radius: 0; +} + +popover.messagepopover .popover-action-area button:first-child { + border-bottom-left-radius: 2px; +} + +popover.messagepopover .popover-action-area button:last-child { + border-bottom-right-radius: 2px; +} + +popover.messagepopover .popover-content-area { + margin: 16px; +} + +popover.transfers list { + background-color: transparent; +} + +popover.transfers list row:not(:first-child) { + border-top: 1px solid rgba(158, 158, 158, 0.2); +} + +popover.transfers list row>box { + padding: 10px; +} + +dockbin { + border: 1px solid rgba(158, 158, 158, 0.2); + -PnlDockBin-handle-size: 1; +} + +dockpaned { + border: 1px solid rgba(158, 158, 158, 0.2); +} + +eggsearchbar box.search-bar { + padding: 0 8px; + border-bottom: 1px solid rgba(158, 158, 158, 0.2); + background-color: #0f1011; +} + +docktabstrip { + padding: 0 8px; + border-bottom: 1px solid rgba(158, 158, 158, 0.2); + background-color: #0f1011; +} + +docktab { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1), background-size 0ms, background-image 0ms; + min-height: 24px; + min-width: 24px; + margin-bottom: -1px; + padding: 4px 6px; + border-width: 1px; + border-color: transparent; + box-shadow: inset 0 -2px transparent; + background-image: radial-gradient(circle, #387db7 10%, transparent 0%); + background-repeat: no-repeat; + background-position: center; + background-size: 0% 0%; + color: rgba(158, 158, 158, 0.7); + font-weight: 500; +} + +docktab:hover { + background-color: rgba(158, 158, 158, 0.08); +} + +docktab:checked { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1), background-size 225ms cubic-bezier(0, 0, 0.2, 1), background-image 525ms cubic-bezier(0, 0, 0.2, 1); + box-shadow: inset 0 -2px #387db7; + background-color: transparent; + background-image: radial-gradient(circle, transparent 10%, transparent 0%); + background-size: 1000% 1000%; + color: #9e9e9e; +} + +dockoverlayedge { + background-color: #0f1011; +} + +dockoverlayedge docktabstrip { + padding: 0; + border: none; +} + +dockoverlayedge.left-edge docktab:checked { + box-shadow: inset -2px 0 #387db7; +} + +dockoverlayedge.right-edge docktab:checked { + box-shadow: inset 2px 0 #387db7; +} + +pillbox { + background-color: #0f1011; + border-radius: 2px; +} + +layoutpane entry.search { + border-bottom: 1px solid rgba(158, 158, 158, 0.2); + box-shadow: none; + background-color: #1a1c1e; +} + +editortweak entry.search { + margin-bottom: -1px; + box-shadow: none; + background-color: transparent; +} + +.gb-search-entry-occurrences-tag { + box-shadow: none; + background-color: transparent; +} + +docktabstrip { + min-height: 39px; +} + +window.workbench preferences preferencesgroup list entry { + padding-top: 8px; + padding-bottom: 8px; +} + +button.run-arrow-button { + padding-left: 8px; + padding-right: 8px; +} + +button.dzlmenubutton image { + min-width: 26px; +} + +button.dzlmenubutton image.arrow { + min-width: 23px; +} + +button.dzlmenubuttonitem { + color: #9e9e9e; + font-weight: normal; +} + +button.dzlmenubuttonitem:disabled { + color: rgba(158, 158, 158, 0.5); +} + +idelayoutstackheader { + border-bottom: 1px solid rgba(158, 158, 158, 0.2); +} + +idelayoutstackheader button:checked { + color: #9e9e9e; +} + +ideeditorutilities>dzldockpaned>box>stackswitcher { + padding: 8px 0; + background-color: #0f1011; +} + +ideeditorutilities>dzldockpaned>box>stackswitcher:dir(ltr) { + border-right: 1px solid rgba(158, 158, 158, 0.2); +} + +ideeditorutilities>dzldockpaned>box>stackswitcher:dir(rtl) { + border-left: 1px solid rgba(158, 158, 158, 0.2); +} + +ideeditorutilities>dzldockpaned>box>stackswitcher button { + border-radius: 0; + box-shadow: none; + background-color: transparent; +} + +ideeditorutilities>dzldockpaned>box>stackswitcher button:active { + background-image: radial-gradient(circle, rgba(56, 125, 183, 0.7) 10%, transparent 0%); +} + +ideeditorutilities>dzldockpaned>box>stackswitcher button:checked { + background-color: transparent; + color: #9e9e9e; +} + +ideeditorutilities>dzldockpaned>box>stackswitcher button:dir(ltr) { + margin-right: -1px; +} + +ideeditorutilities>dzldockpaned>box>stackswitcher button:dir(ltr):checked { + box-shadow: inset -2px 0 #387db7; +} + +ideeditorutilities>dzldockpaned>box>stackswitcher button:dir(rtl) { + margin-left: -1px; +} + +ideeditorutilities>dzldockpaned>box>stackswitcher button:dir(rtl):checked { + box-shadow: inset 2px 0 #387db7; +} + +ideeditorsidebar notebook header { + background: transparent; +} + +popover.messagepopover list { + border: 1px solid rgba(158, 158, 158, 0.2); + background-clip: padding-box; +} + +popover.messagepopover list row:not(:last-child) { + border-bottom: 1px solid rgba(158, 158, 158, 0.2); +} + +dzlsuggestionpopover>revealer>box>elastic>scrolledwindow>viewport>list>row:selected { + background-color: #387db7; + color: #fff; +} + +#titlebar_container .suggestionbutton button { + padding: 0; + border-radius: 0; + box-shadow: inset 0 0 0 9999px #09090a; +} + +#titlebar_container .suggestionbutton button:backdrop { + box-shadow: inset 0 0 0 9999px #000000; +} + +#titlebar_container .suggestionbutton button image { + transition: box-shadow 75ms cubic-bezier(0, 0, 0.2, 1), background-color 225ms cubic-bezier(0, 0, 0.2, 1); + min-width: 32px; + min-height: 32px; + border-radius: 9999px; + box-shadow: inset 0 0 0 9999px transparent; +} + +#titlebar_container .suggestionbutton button:hover image { + box-shadow: inset 0 0 0 9999px rgba(128, 134, 139, 0.08); +} + +#titlebar_container .suggestionbutton button:focus image { + box-shadow: inset 0 0 0 9999px rgba(128, 134, 139, 0.08); +} + +#titlebar_container .suggestionbutton button:active image { + background-color: rgba(128, 134, 139, 0.12); +} + +/** + * Photos + */ +GdMainIconView.content-view { + -GdMainIconView-icon-size: 48; +} + +.documents-counter { + margin: 8px; + border-radius: 9999px; + box-shadow: 0 2px 2.4px -1px rgba(0, 0, 0, 0.2), 0 4px 3px 0 rgba(0, 0, 0, 0.14), 0 1px 6px 0 rgba(0, 0, 0, 0.12); + background-color: #387db7; + color: #fff; + font-weight: bold; +} + +.documents-scrolledwin.frame { + border-style: none; + background-color: transparent; +} + +.documents-scrolledwin.frame frame.content-view>border { + border-style: none; + background-color: transparent; +} + +.photos-fade-in { + opacity: 1; + transition: opacity 75ms cubic-bezier(0, 0, 0.2, 1); +} + +.photos-fade-out { + opacity: 0; + transition: opacity 75ms cubic-bezier(0, 0, 0.2, 1); +} + +button.photos-filter-preview { + color: #9e9e9e; + font-weight: normal; +} + +button.photos-filter-preview:checked { + background-color: rgba(56, 125, 183, 0.32); + color: #9e9e9e; +} + +button.photos-filter-preview:checked image { + color: #fff; + -gtk-icon-shadow: 0 1px 1px rgba(0, 0, 0, 0.2), 0 1px 2px rgba(0, 0, 0, 0.14), 0 1px 3px rgba(0, 0, 0, 0.12); +} + +overlay grid.horizontal>revealer>scrolledwindow.frame { + border-style: none; + background-color: transparent; +} + +overlay grid.horizontal>revealer>scrolledwindow.frame:dir(ltr) { + border-left-style: solid; +} + +overlay grid.horizontal>revealer>scrolledwindow.frame:dir(rtl) { + border-right-style: solid; +} + +/** + * Music + */ +.side-panel:dir(ltr) { + border-style: solid; + border-color: rgba(158, 158, 158, 0.2); +} + +.side-panel:dir(rtl) { + border-style: solid; + border-color: rgba(158, 158, 158, 0.2); +} + +.side-panel .view { + background-image: image(#0f1011); +} + +.side-panel .view:hover { + background-image: image(#1a1b1c); +} + +.side-panel .view:selected { + background-image: image(#387db7); +} + +.side-panel .view:selected:hover { + background-image: image(#508dc0); +} + +.songs-list:hover { + background-image: image(rgba(158, 158, 158, 0.08)); +} + +frame.documents-dropdown { + margin: 8px; +} + +frame.documents-dropdown>border { + border: none; +} + +box.vertical>revealer>toolbar.search-bar { + border-bottom: 1px solid rgba(158, 158, 158, 0.2); +} + +box.vertical>revealer>toolbar.search-bar button>widget { + -gtk-icon-source: -gtk-icontheme("pan-down-symbolic"); +} + +/** + * Terminal + */ +terminal-window notebook>header>box { + margin: -2px; +} + +terminal-window notebook>header>box button { + border-radius: 0; +} + +/** + * To Do + */ +task-list-view taskrow { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1); + margin: 0 -8px; +} + +task-list-view taskrow:hover { + transition: none; +} + +task-list-view taskrow label { + margin: 0 8px; +} + +task-list-view taskrow image.dim-label { + min-width: 16px; +} + +task-list-view>box>revealer>box>button { + margin: -4px; +} + +task-list-view>box>revealer>box>button .dim-label { + color: inherit; +} + +tasklistview taskrow { + outline: none; +} + +tasklistview taskrow entry, +tasklistview taskrow entry:focus, +tasklistview taskrow entry:disabled { + box-shadow: none; +} + +tasklistview taskrow image.dim-label { + min-width: 16px; +} + +tasklistview>box>revealer>box>button { + margin: -4px; +} + +tasklistview>box>revealer>box>button .dim-label { + color: inherit; +} + +/** + * eog + */ +#eog-thumb-nav scrolledwindow.frame { + border-top: none; +} + +/** + * Evolution + */ +frame.taskbar>border { + border-style: solid none none; +} + +box.vertical>paned.horizontal notebook widget .frame { + border-style: none; +} + +/** + * gitg + */ +frame.commit-frame>border { + border-style: solid none none; +} + +/** + * Characters + */ +box.dialog-vbox scrolledwindow.related { + border: 1px solid rgba(158, 158, 158, 0.2); + background-clip: padding-box; + background-color: #1a1c1e; +} + +list.categories { + background-image: image(#0f1011); +} + +/** + * Boxes + */ +.transparent-bg+stack overlay>label { + min-height: 24px; + padding: 0 4px; + border-radius: 2px; + background-color: rgba(0, 0, 0, 0.6); + color: #fff; +} + +/** + * Evince + */ +evview.content-view.view:selected { + background-color: #387db7; + color: #fff; +} + +/** + * Polari + */ +.polari-room-list row:selected { + background-color: rgba(56, 125, 183, 0.5); +} + +/** + * Fractal + */ +button.osd.scroll_button { + margin: 4px; +} + +/** + * Mines + */ +grid.minefield>button.tile { + border-style: solid; +} + +/** + * Tilix + */ +overlay>revealer.left>scrolledwindow.frame, +overlay>revealer.right>scrolledwindow.frame { + border-style: none; + box-shadow: 0 8px 6px -5px rgba(0, 0, 0, 0.2), 0 16px 14.4px 2px rgba(0, 0, 0, 0.14), 0 6px 18px 5px rgba(0, 0, 0, 0.12); +} + +overlay>revealer.left>scrolledwindow.frame { + margin-right: 32px; +} + +overlay>revealer.right>scrolledwindow.frame { + margin-left: 32px; +} + +.terminix-session-sidebar, +.tilix-session-sidebar { + background-image: image(#141416); +} + +.terminal-titlebar button { + border-radius: 0; +} + +button.image-button.session-new-button { + min-width: 28px; +} + +notebook.tilix-background tab>box>stack { + margin: -6px; +} + +button.flat.tilix-small-button { + min-height: 20px; + min-width: 16px; +} + +/** + * Terminator + */ +.terminator-terminal-window paned>separator { + background-color: #0f1011; +} + +.terminator-terminal-window notebook.frame { + border-style: none; + background-color: transparent; +} + +/** + * Ubitquity + */ +#live_installer .menubar progressbar trough { + border-radius: 4px; + background-color: rgba(128, 134, 139, 0.2); +} + +/** + * Eclipse + */ +window.background>box.vertical>scrolledwindow>widget toolbar { + padding: 2px; +} + +window.background>box.vertical>scrolledwindow>widget toolbar separator, +window.background>box.vertical>scrolledwindow>widget toolbar button { + margin: 2px; +} + +window.background>box.vertical>scrolledwindow>widget toolbar button { + border-radius: 2px; +} + +/** + * FileZilla + */ +window.background>box.vertical>widget>widget>widget>widget>widget>widget>widget>scrolledwindow>widget>entry { + all: unset; + padding: 5px; + box-shadow: inset 0 0 0 1px rgba(56, 125, 183, 0.32); + background-color: #1a1c1e; +} + +window.background>box.vertical>widget>widget>widget>widget>widget>widget>widget>scrolledwindow>widget>widget>entry { + all: unset; + padding: 0 3px 1px; + box-shadow: inset 0 0 0 1px rgba(56, 125, 183, 0.32); + background-color: #1a1c1e; +} + +/** + * Chromium + */ +window.background.chromium { + background-color: #141416; +} + +window.background.chromium entry, +window.background.chromium>button { + border: 1px solid rgba(158, 158, 158, 0.3); +} + +window.background.chromium>button { + color: #387db7; +} + +window.background.chromium>button:disabled { + color: rgba(158, 158, 158, 0.3); +} + +window.background.chromium menubar, +window.background.chromium headerbar { + color: rgba(128, 134, 139, 0.7); +} + +window.background.chromium headerbar button:active { + background-color: rgba(128, 134, 139, 0.12); +} + +window.background.chromium textview.view { + background-color: transparent; +} + +window.background.chromium treeview.view.cell:selected:focus { + background-color: #387db7; + color: #fff; +} + +window.background.chromium treeview.view button { + border: 1px solid rgba(158, 158, 158, 0.3); + background-color: #1a1c1e; +} + +tooltip.background.chromium { + background-color: #09090a; +} + +/** + * Firefox + */ +#MozillaGtkWidget>widget text { + background-color: #141416; +} + +#MozillaGtkWidget>widget text:selected { + background-color: #387db7; + color: #fff; +} + +#MozillaGtkWidget>widget>separator { + color: rgba(158, 158, 158, 0.2); +} + +#MozillaGtkWidget>widget>frame>border { + border-color: #3a3b3b; +} + +#MozillaGtkWidget>widget>entry, +#MozillaGtkWidget>widget>button>button { + border: 1px solid rgba(158, 158, 158, 0.3); + border-radius: 2px; + box-shadow: none; +} + +#MozillaGtkWidget>widget>entry:disabled, +#MozillaGtkWidget>widget>button>button:disabled { + border-color: rgba(158, 158, 158, 0.2); +} + +#MozillaGtkWidget>widget>entry { + min-height: 30px; + background-color: #1a1c1e; +} + +#MozillaGtkWidget>widget>entry:focus { + border-color: #387db7; + box-shadow: inset 0 0 0 1px #387db7; +} + +#MozillaGtkWidget>widget>entry:disabled { + background-color: #1a1c1e; +} + +#MozillaGtkWidget>widget>button>button { + padding: 4px 8px; +} + +#MozillaGtkWidget>widget>button>button:active { + background-size: 1000% 1000%; +} + +#MozillaGtkWidget>widget>checkbutton>check, +#MozillaGtkWidget>widget>radiobutton>radio { + margin: 0; + padding: 0; +} + +#MozillaGtkWidget>widget>checkbutton>check:not(:checked):not(:indeterminate), +#MozillaGtkWidget>widget>radiobutton>radio:not(:checked):not(:indeterminate) { + color: #757575; +} + +#MozillaGtkWidget>widget>checkbutton>check:not(:checked):not(:indeterminate):disabled, +#MozillaGtkWidget>widget>radiobutton>radio:not(:checked):not(:indeterminate):disabled { + color: rgba(117, 117, 117, 0.5); +} + +#MozillaGtkWidget menuitem label:disabled { + color: rgba(158, 158, 158, 0.5); +} + +#MozillaGtkWidget>widget>menubar { + color: rgba(128, 134, 139, 0.7); +} + +#MozillaGtkWidget>widget>menubar:hover { + color: #80868b; +} + +#MozillaGtkWidget>widget>menubar:disabled { + color: rgba(128, 134, 139, 0.3); +} + +#MozillaGtkWidget>widget>frame { + color: rgba(158, 158, 158, 0.3); +} + +#MozillaGtkWidget menu>separator { + color: rgba(158, 158, 158, 0.2); +} + +/** + * Inkscape + */ +#ToolboxCommon>#AuxToolbox #StyleSwatch { + font-size: smaller; +} + +#ToolboxCommon>#AuxToolbox #Kludge { + padding: 0; +} + +#ToolboxCommon>#AuxToolbox spinbutton, +#ToolboxCommon>#AuxToolbox entry { + min-height: 32px; +} + +#ToolboxCommon>#AuxToolbox button:not(.up):not(.down) { + min-height: 24px; + min-width: 16px; + padding: 4px 8px; + border-radius: 2px; +} + +#ToolboxCommon>#AuxToolbox spinbutton button { + border-width: 4px; +} + +#ToolboxCommon>toolbar.vertical { + margin-top: -4px; +} + +#ToolboxCommon>toolbar.vertical button { + min-height: 24px; + min-width: 24px; + padding: 4px; + border-radius: 2px; +} + +#CanvasTable button { + min-height: 16px; + min-width: 16px; + padding: 0; + border-radius: 0; +} + +#CanvasTable #HorizontalScrollbar { + border-top: 1px solid rgba(158, 158, 158, 0.2); +} + +#CanvasTable #VerticalScrollbar:dir(ltr) { + border-left: 1px solid rgba(158, 158, 158, 0.2); +} + +#CanvasTable #VerticalScrollbar:dir(rtl) { + border-right: 1px solid rgba(158, 158, 158, 0.2); +} + +#Canvas_and_Dock frame>border { + border: none; + background-color: transparent; +} + +#Canvas_and_Dock widget>widget>button.flat { + min-height: 16px; + min-width: 16px; + padding: 4px; +} + +#Canvas_and_Dock widget>widget>box.horizontal image { + padding: 4px; +} + +#Canvas_and_Dock box.horizontal>box.vertical>button.flat { + min-height: 16px; + min-width: 24px; + padding: 8px 4px; +} + +/** + * Synapse + */ +box.vertical>widget>widget:selected { + background-color: rgba(56, 125, 183, 0.32); +} + +/** + * Unity + */ +UnityDecoration { + -UnityDecoration-extents: 28px 0 0 0; + -UnityDecoration-input-extents: 8px; + -UnityDecoration-shadow-offset-x: 0; + -UnityDecoration-shadow-offset-y: 3px; + -UnityDecoration-active-shadow-color: rgba(0, 0, 0, 0.48); + -UnityDecoration-active-shadow-radius: 18px; + -UnityDecoration-inactive-shadow-color: rgba(0, 0, 0, 0.32); + -UnityDecoration-inactive-shadow-radius: 6px; + -UnityDecoration-glow-size: 8px; + -UnityDecoration-glow-color: #387db7; + -UnityDecoration-title-indent: 4px; + -UnityDecoration-title-fade: 32px; + -UnityDecoration-title-alignment: 0; +} + +UnityDecoration .top { + padding: 0 2px; + border-style: none; + border-radius: 2px 2px 0 0; + box-shadow: inset 0 1px rgba(255, 255, 255, 0.05); + background-color: #09090a; + color: #80868b; +} + +UnityDecoration .top:backdrop { + background-color: #000000; + color: rgba(128, 134, 139, 0.7); +} + +UnityDecoration .menuitem { + border-radius: 2px 2px 0 0; + box-shadow: none; + color: rgba(128, 134, 139, 0.7); +} + +UnityDecoration .menuitem:hover { + background-color: rgba(128, 134, 139, 0.12); + color: #80868b; +} + +.background:not(.csd) headerbar:not(.titlebar) { + border-radius: 0; + box-shadow: 0 2px 2px -2px rgba(0, 0, 0, 0.3), 0 1px 2px -1px rgba(0, 0, 0, 0.24), 0 1px 2px -0.6px rgba(0, 0, 0, 0.17); +} + +.background:not(.csd) headerbar:not(.titlebar).inline-toolbar { + border-style: none; +} + +UnityPanelWidget, +.unity-panel { + background-color: #000000; + color: #80868b; +} + +UnityPanelWidget:backdrop, +.unity-panel:backdrop { + color: rgba(128, 134, 139, 0.7); +} + +.unity-panel.menuitem, +.unity-panel .menuitem { + color: rgba(128, 134, 139, 0.7); +} + +.unity-panel.menubar.menuitem:hover, +.unity-panel.menubar .menuitem *:hover { + background-color: rgba(128, 134, 139, 0.12); + color: #80868b; +} + +.menu IdoPlaybackMenuItem.menuitem:active { + -gtk-icon-source: -gtk-icontheme("process-working-symbolic"); + animation: spin 1s linear infinite; + color: #387db7; +} + +/** + * Mate-Panel + */ +.mate-panel-menu-bar menubar, +#PanelApplet-window-menu-applet-button { + background-color: transparent; +} + +.mate-panel-menu-bar { + background-color: #000000; + color: rgba(128, 134, 139, 0.7); + font-weight: 500; +} + +.mate-panel-menu-bar button { + min-height: 16px; + min-width: 16px; + padding: 0; + border-radius: 0; + color: rgba(128, 134, 139, 0.7); + box-shadow: none; + background-color: transparent; +} + +.mate-panel-menu-bar button:drop(active), +.mate-panel-menu-bar button:hover { + box-shadow: none; + background-color: rgba(128, 134, 139, 0.08); +} + +.mate-panel-menu-bar button:focus { + box-shadow: none; + background-color: rgba(128, 134, 139, 0.08); +} + +.mate-panel-menu-bar button:active { + box-shadow: none; + background-image: radial-gradient(circle, rgba(128, 134, 139, 0.12) 10%, transparent 0%); +} + +.mate-panel-menu-bar button:disabled { + background-color: transparent; + color: rgba(128, 134, 139, 0.3); +} + +.mate-panel-menu-bar button:checked { + color: #80868b; + box-shadow: none; + background-color: rgba(128, 134, 139, 0.12); +} + +.mate-panel-menu-bar button:checked:drop(active), +.mate-panel-menu-bar button:checked:hover { + box-shadow: none; + background-color: rgba(128, 134, 139, 0.1904); +} + +.mate-panel-menu-bar button:checked:focus { + box-shadow: none; + background-color: rgba(128, 134, 139, 0.1904); +} + +.mate-panel-menu-bar button:checked:active { + box-shadow: none; + background-image: radial-gradient(circle, rgba(128, 134, 139, 0.12) 10%, transparent 0%); +} + +.mate-panel-menu-bar button:checked:disabled { + background-color: rgba(128, 134, 139, 0.12); + color: rgba(128, 134, 139, 0.5); +} + +PanelToplevel.horizontal>grid>button { + min-width: 24px; +} + +PanelToplevel.vertical>grid>button { + min-height: 24px; +} + +PanelSeparator { + color: rgba(128, 134, 139, 0.2); +} + +MatePanelAppletFrameDBus>MatePanelAppletFrameDBus { + background-image: repeating-linear-gradient(currentcolor, currentcolor 4px, transparent 4px, transparent 6px); + background-repeat: no-repeat; + background-size: 4px 10px; + color: rgba(128, 134, 139, 0.3); +} + +MatePanelAppletFrameDBus>MatePanelAppletFrameDBus:dir(ltr) { + background-position: 3px; +} + +MatePanelAppletFrameDBus>MatePanelAppletFrameDBus:dir(rtl) { + background-position: calc(100% - 3px); +} + +.mate-panel-menu-bar menubar>menuitem { + color: rgba(128, 134, 139, 0.7); +} + +.mate-panel-menu-bar menubar>menuitem:hover { + background-color: rgba(128, 134, 139, 0.12); + color: #80868b; +} + +.mate-panel-menu-bar menubar>menuitem:disabled { + color: rgba(128, 134, 139, 0.3); +} + +.mate-panel-menu-bar.horizontal menubar>menuitem { + padding: 0 8px; +} + +.mate-panel-menu-bar.vertical menubar>menuitem { + padding: 8px 0; +} + +.mate-panel-menu-bar menubar menu>menuitem { + min-height: 28px; + padding: 0 6px; +} + +.mate-panel-menu-bar #PanelApplet button { + -GtkWidget-window-dragging: true; +} + +.mate-panel-menu-bar #tasklist-button { + border-image: radial-gradient(circle closest-corner at center calc(100% - 1px), currentcolor 0%, transparent 0%) 0 0 0/0 0 0; +} + +.mate-panel-menu-bar #tasklist-button:checked { + border-image: radial-gradient(circle closest-corner at center calc(100% - 1px), currentcolor 100%, transparent 0%) 0 0 2/0 0 2px; +} + +.mate-panel-menu-bar #tasklist-button image:dir(ltr), +.mate-panel-menu-bar #tasklist-button label:dir(rtl) { + padding-left: 4px; +} + +.mate-panel-menu-bar #tasklist-button label:dir(ltr), +.mate-panel-menu-bar #tasklist-button image:dir(rtl) { + padding-right: 4px; +} + +.mate-panel-menu-bar.vertical #tasklist-button { + min-height: 32px; +} + +.mate-panel-menu-bar.horizontal #showdesktop-button image { + min-width: 24px; + padding: 0 4px; +} + +.mate-panel-menu-bar.vertical #showdesktop-button image { + min-height: 24px; + padding: 4px 0; +} + +PanelApplet.wnck-applet .wnck-pager { + background-color: transparent; + color: #387db7; +} + +PanelApplet.wnck-applet .wnck-pager:hover { + background-color: rgba(128, 134, 139, 0.08); +} + +PanelApplet.wnck-applet .wnck-pager:active { + background-color: rgba(128, 134, 139, 0.12); +} + +PanelApplet.wnck-applet .wnck-pager:selected { + background-color: #387db7; +} + +.mate-panel-menu-bar.horizontal #clock-applet-button label { + padding: 0 8px; +} + +.mate-panel-menu-bar.vertical #clock-applet-button label { + padding: 8px 0; +} + +#MatePanelPopupWindow { + border: 1px solid rgba(158, 158, 158, 0.2); + border-radius: 3px; + box-shadow: inset 0 1px rgba(255, 255, 255, 0.05); + background-clip: padding-box; + background-color: #141416; +} + +#MatePanelPopupWindow frame>border { + border-style: none; + background-color: transparent; +} + +#MatePanelPopupWindow calendar { + border-style: none; +} + +#MatePanelPopupWindow calendar:not(:selected) { + background-color: transparent; +} + +#MatePanelPopupWindow calendar+box { + margin-top: -5px; + padding-top: 5px; + border-top: 1px solid rgba(158, 158, 158, 0.2); +} + +#MatePanelPopupWindow expander>title { + min-height: 32px; +} + +#MatePanelPopupWindow button { + padding: 4px 16px; +} + +#MatePanelPopupWindow>frame>box>box>box>widget { + color: rgba(158, 158, 158, 0.2); +} + +na-tray-applet { + -NaTrayApplet-icon-padding: 3px; + -NaTrayApplet-icon-size: 16; +} + +.mate-panel-menu-bar { + -PanelMenuBar-icon-visible: true; +} + +.mate-panel-applet-slider { + border: 1px solid rgba(158, 158, 158, 0.2); + border-radius: 3px; + box-shadow: inset 0 1px rgba(255, 255, 255, 0.05); + background-clip: padding-box; + background-color: #141416; +} + +.mate-panel-applet-slider frame>border { + border-style: none; + background-color: transparent; +} + +#PanelApplet:not(:selected)>box { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1); +} + +#PanelApplet:selected>box { + background-color: rgba(128, 134, 139, 0.12); + color: #80868b; +} + +#mate-menu { + border: 1px solid rgba(158, 158, 158, 0.2); + box-shadow: inset 0 1px rgba(255, 255, 255, 0.05); + background-clip: padding-box; + background-color: #141416; +} + +#mate-menu button { + min-height: 24px; + min-width: 24px; + padding: 4px 0; + color: #9e9e9e; + font-weight: normal; +} + +#mate-menu button:not(.flat) { + background-color: rgba(158, 158, 158, 0.12); +} + +#mate-menu button image, +#mate-menu button label+label { + color: rgba(158, 158, 158, 0.7); +} + +#mate-menu entry { + margin: 0 0 4px; +} + +#mate-menu entry image { + margin: 0; +} + +#mate-menu entry+button { + margin: 0 4px 4px; + padding: 4px; +} + +.brisk-menu { + box-shadow: inset 0 1px rgba(255, 255, 255, 0.05); + background-color: #141416; +} + +.brisk-menu entry { + margin-bottom: -2px; + border-bottom: 1px solid rgba(158, 158, 158, 0.2); + border-image: none; + box-shadow: none; + background-color: transparent; +} + +.brisk-menu entry+box>box:dir(ltr) { + margin-right: -2px; + border-right: 1px solid rgba(158, 158, 158, 0.2); +} + +.brisk-menu entry+box>box:dir(rtl) { + margin-left: -2px; + border-left: 1px solid rgba(158, 158, 158, 0.2); +} + +.brisk-menu .categories-list { + padding-top: 4px; +} + +.brisk-menu .categories-list button { + margin: 0 4px; +} + +.brisk-menu .session-button { + padding: 8px; +} + +.brisk-menu .frame { + border-style: none; + background-color: transparent; +} + +.brisk-menu .apps-list { + padding: 4px 0; + background-color: transparent; +} + +.brisk-menu .apps-list row { + padding: 0; +} + +.brisk-menu .apps-list row:hover { + box-shadow: none; +} + +.brisk-menu .apps-list button { + border-radius: 0; + color: #9e9e9e; + font-weight: normal; +} + +/** + * CAJA File manager + */ +.caja-navigation-window box.horizontal>button.toggle.image-button { + border-radius: 2px; +} + +.caja-pathbar button { + margin: 0 -1px 0 -2px; +} + +.caja-pathbar button.slider-button { + min-width: 24px; +} + +.caja-pathbar button>widget { + -gtk-icon-source: -gtk-icontheme("pan-down-symbolic"); + -GtkArrow-arrow-scaling: 1; +} + +.caja-side-pane notebook, +.caja-notebook { + border-top: 1px solid rgba(158, 158, 158, 0.2); +} + +.caja-side-pane notebook .frame, +.caja-notebook .frame { + border-style: none; + background-color: transparent; +} + +.caja-canvas-item { + border-radius: 2px; +} + +.caja-desktop.view .entry, +.caja-navigation-window .view .entry { + border: none; + border-radius: 2px; + background-color: rgba(158, 158, 158, 0.04); + background-image: none; + color: #9e9e9e; +} + +.caja-desktop.view .entry:selected, +.caja-navigation-window .view .entry:selected { + background-color: rgba(56, 125, 183, 0.32); +} + +.caja-desktop.view .entry { + background-color: rgba(0, 0, 0, 0.3); + color: #fff; + text-shadow: 0 1px 1px rgba(0, 0, 0, 0.2), 0 1px 2px rgba(0, 0, 0, 0.14), 0 1px 3px rgba(0, 0, 0, 0.12); + caret-color: currentcolor; +} + +.caja-desktop.view .entry:selected { + background-color: rgba(56, 125, 183, 0.32); +} + +.caja-navigation-window statusbar { + margin: 0 -10px; + padding: 0 4px; + border-top: 1px solid rgba(158, 158, 158, 0.2); +} + +.caja-notebook frame>border { + border-style: none; + background-color: transparent; +} + +#caja-extra-view-widget { + border-bottom: 1px solid rgba(158, 158, 158, 0.2); +} + +#caja-extra-view-widget>box>box>label { + font-weight: bold; +} + +#caja-extra-view-widget button:not(:disabled) { + color: #387db7; + box-shadow: none; + background-color: transparent; +} + +#caja-extra-view-widget button:not(:disabled):drop(active), +#caja-extra-view-widget button:not(:disabled):hover { + box-shadow: none; + background-color: rgba(56, 125, 183, 0.12); +} + +#caja-extra-view-widget button:not(:disabled):focus { + box-shadow: none; + background-color: rgba(56, 125, 183, 0.12); +} + +#caja-extra-view-widget button:not(:disabled):active { + box-shadow: none; + background-image: radial-gradient(circle, rgba(56, 125, 183, 0.16) 10%, transparent 0%); +} + +/** + * Pluma + */ +.pluma-window statusbar { + margin: 0 -10px; + padding: 0 4px; + border-top: 1px solid rgba(158, 158, 158, 0.2); +} + +.pluma-window statusbar frame>border { + border-style: none; + background-color: transparent; +} + +.pluma-window statusbar frame button.flat { + padding: 0 4px; + border-radius: 0; +} + +.pluma-window statusbar frame button.flat widget { + -gtk-icon-source: -gtk-icontheme("pan-down-symbolic"); + -GtkArrow-arrow-scaling: 1; +} + +.pluma-print-preview toolbar { + border-bottom: 1px solid rgba(158, 158, 158, 0.2); +} + +.pluma-window paned.horizontal box.vertical box.horizontal button.flat { + margin: 1px; +} + +.pluma-window paned.horizontal box.vertical .frame { + border-style: none; + background-color: transparent; +} + +.pluma-window paned.horizontal box.vertical notebook.frame { + margin-top: -1px; + border-top: 1px solid rgba(158, 158, 158, 0.2); +} + +.pluma-window paned.horizontal box.vertical notebook.frame box.vertical toolbar.horizontal { + border-bottom: 1px solid rgba(158, 158, 158, 0.2); +} + +/** + * Atril + */ +.atril-window paned.horizontal box.vertical .frame { + border-style: none; + background-color: transparent; +} + +.atril-window paned.horizontal box.vertical notebook .frame { + border-top: 1px solid rgba(158, 158, 158, 0.2); +} + +/* mate-screensaver lock dialog */ +.lock-dialog { + border: 1px solid rgba(158, 158, 158, 0.2); + border-radius: 3px; + box-shadow: 0 3px 3px -1px rgba(0, 0, 0, 0.2), 0 6px 6px 0 rgba(0, 0, 0, 0.14), 0 1px 10.8px 0 rgba(0, 0, 0, 0.12), inset 0 1px rgba(255, 255, 255, 0.05); + background-clip: padding-box; + background-color: #141416; +} + +.lock-dialog frame>border { + border-style: none; + background-color: transparent; +} + +.lock-dialog button:not(:disabled) { + color: #387db7; + box-shadow: none; + background-color: transparent; +} + +.lock-dialog button:not(:disabled):drop(active), +.lock-dialog button:not(:disabled):hover { + box-shadow: none; + background-color: rgba(56, 125, 183, 0.12); +} + +.lock-dialog button:not(:disabled):focus { + box-shadow: none; + background-color: rgba(56, 125, 183, 0.12); +} + +.lock-dialog button:not(:disabled):active { + box-shadow: none; + background-image: radial-gradient(circle, rgba(56, 125, 183, 0.16) 10%, transparent 0%); +} + +/* multimedia OSD */ +MsdOsdWindow.background.osd { + border-radius: 2px; + background-color: rgba(9, 9, 10, 0.9); + color: #80868b; +} + +MsdOsdWindow.background.osd .trough { + border-radius: 0; + background-color: rgba(128, 134, 139, 0.2); +} + +MsdOsdWindow.background.osd .progressbar { + border-radius: 0; + background-color: #80868b; +} + +/** + * Budgie Desktop + */ +.budgie-container { + background-color: transparent; +} + +.budgie-settings-window buttonbox.inline-toolbar { + border-style: none none solid; +} + +.budgie-settings-window buttonbox.inline-toolbar button { + border-radius: 2px; +} + +.budgie-popover { + border-style: solid; + border-width: 1px; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.2) rgba(0, 0, 0, 0.3); + border-radius: 3px; + box-shadow: 0 2px 2.4px -1px rgba(0, 0, 0, 0.2), 0 4px 3px 0 rgba(0, 0, 0, 0.14), 0 1px 6px 0 rgba(0, 0, 0, 0.12); + background-clip: padding-box; + background-color: #141416; +} + +.budgie-popover .container { + padding: 2px; +} + +.budgie-popover border { + border: none; + background-color: transparent; +} + +.budgie-popover row { + padding: 0; +} + +.budgie-popover row:hover { + box-shadow: none; +} + +.budgie-popover button.flat:not(.image-button) { + min-height: 28px; + padding: 0 8px; + color: #9e9e9e; + font-weight: normal; +} + +.budgie-popover button.flat:not(.image-button):disabled { + color: rgba(158, 158, 158, 0.5); +} + +.budgie-popover.budgie-menu .container { + padding: 0; +} + +.budgie-popover.budgie-menu scrollbar, +.budgie-popover.budgie-menu entry.search { + background-color: transparent; +} + +.budgie-popover.budgie-menu entry.search { + border-bottom: 1px solid rgba(158, 158, 158, 0.2); + border-image: none; + border-radius: 0; + box-shadow: none; + font-size: 120%; +} + +.budgie-popover.budgie-menu button.flat:not(.image-button) { + min-height: 32px; + padding: 0 8px; + border-radius: 0; +} + +.budgie-popover.budgie-menu button.flat:not(.image-button):drop(active):not(:active), +.budgie-popover.budgie-menu button.flat:not(.image-button):hover:not(:active) { + transition-property: all, border-image, background-size, background-image, background-color; + transition-duration: 75ms, 225ms, 300ms, 1200ms, 0ms; +} + +.budgie-popover.budgie-menu button.flat:not(.image-button):checked { + background-color: rgba(56, 125, 183, 0.32); +} + +.budgie-popover.budgie-menu button.flat:not(.image-button):checked:disabled { + background-color: transparent; +} + +.budgie-popover.user-menu .container { + padding: 8px; +} + +.budgie-popover.user-menu separator { + margin: 4px 0; +} + +.budgie-popover.sound-popover separator { + margin: 3px 0; +} + +.budgie-popover.night-light-indicator .container { + padding: 8px; +} + +.budgie-popover.places-menu .container { + padding: 8px; +} + +.budgie-popover.places-menu .name-button image:dir(ltr) { + margin-right: 3px; +} + +.budgie-popover.places-menu .name-button image:dir(rtl) { + margin-left: 3px; +} + +.budgie-popover.places-menu .unmount-button { + margin: 2px; + padding: 0; +} + +.budgie-popover.places-menu .places-list:not(.always-expand) { + margin-top: 4px; + padding-top: 4px; + border-top: 1px solid rgba(158, 158, 158, 0.2); +} + +.budgie-popover.places-menu .alternative-label { + padding: 3px; + font-size: 15px; +} + +.budgie-popover.workspace-popover .container { + padding: 8px; +} + +.budgie-popover.workspace-popover separator { + margin: 4px 0; +} + +.budgie-popover.workspace-popover flowboxchild { + padding: 0; +} + +.workspace-switcher .workspace-layout { + border: 0 solid rgba(128, 134, 139, 0.2); +} + +.top .workspace-switcher .workspace-layout:dir(ltr), +.bottom .workspace-switcher .workspace-layout:dir(ltr) { + border-left-width: 1px; +} + +.top .workspace-switcher .workspace-layout:dir(rtl), +.bottom .workspace-switcher .workspace-layout:dir(rtl) { + border-right-width: 1px; +} + +.left .workspace-switcher .workspace-layout, +.right .workspace-switcher .workspace-layout { + border-top-width: 1px; +} + +.workspace-switcher .workspace-item, +.workspace-switcher .workspace-add-button { + border: 0 solid rgba(128, 134, 139, 0.2); +} + +.top .workspace-switcher .workspace-item:dir(ltr), +.bottom .workspace-switcher .workspace-item:dir(ltr), +.top .workspace-switcher .workspace-add-button:dir(ltr), +.bottom .workspace-switcher .workspace-add-button:dir(ltr) { + border-right-width: 1px; +} + +.top .workspace-switcher .workspace-item:dir(rtl), +.bottom .workspace-switcher .workspace-item:dir(rtl), +.top .workspace-switcher .workspace-add-button:dir(rtl), +.bottom .workspace-switcher .workspace-add-button:dir(rtl) { + border-left-width: 1px; +} + +.left .workspace-switcher .workspace-item, +.right .workspace-switcher .workspace-item, +.left .workspace-switcher .workspace-add-button, +.right .workspace-switcher .workspace-add-button { + border-bottom-width: 1px; +} + +.workspace-switcher .workspace-item { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1); +} + +.workspace-switcher .workspace-item.current-workspace { + background-color: rgba(128, 134, 139, 0.12); +} + +.workspace-switcher .workspace-add-button:hover { + box-shadow: none; +} + +.workspace-switcher .workspace-add-button:active { + background-image: none; +} + +.workspace-switcher .workspace-add-button:active image { + margin: 1px 0 -1px; +} + +.budgie-panel .workspace-switcher .workspace-icon-button { + min-height: 24px; + min-width: 24px; + padding: 0; + border-radius: 2px; +} + +.budgie-panel { + transition: background-color 75ms cubic-bezier(0, 0, 0.2, 1); + background-color: #000000; + color: rgba(128, 134, 139, 0.7); + font-weight: 500; +} + +.budgie-panel.transparent { + background-color: rgba(0, 0, 0, 0.6); + color: rgba(255, 255, 255, 0.7); +} + +.budgie-panel button { + min-height: 16px; + min-width: 16px; + padding: 0; + border-radius: 0; + color: rgba(128, 134, 139, 0.7); + box-shadow: none; + background-color: transparent; +} + +.budgie-panel button:drop(active), +.budgie-panel button:hover { + box-shadow: none; + background-color: rgba(128, 134, 139, 0.08); +} + +.budgie-panel button:focus { + box-shadow: none; + background-color: rgba(128, 134, 139, 0.08); +} + +.budgie-panel button:active { + box-shadow: none; + background-image: radial-gradient(circle, rgba(128, 134, 139, 0.12) 10%, transparent 0%); +} + +.budgie-panel button:disabled { + background-color: transparent; + color: rgba(128, 134, 139, 0.3); +} + +.budgie-panel button:checked { + color: #80868b; + box-shadow: none; + background-color: rgba(128, 134, 139, 0.12); +} + +.budgie-panel button:checked:drop(active), +.budgie-panel button:checked:hover { + box-shadow: none; + background-color: rgba(128, 134, 139, 0.1904); +} + +.budgie-panel button:checked:focus { + box-shadow: none; + background-color: rgba(128, 134, 139, 0.1904); +} + +.budgie-panel button:checked:active { + box-shadow: none; + background-image: radial-gradient(circle, rgba(128, 134, 139, 0.12) 10%, transparent 0%); +} + +.budgie-panel button:checked:disabled { + background-color: rgba(128, 134, 139, 0.12); + color: rgba(128, 134, 139, 0.5); +} + +.budgie-panel.horizontal button { + padding: 0 4px; +} + +.budgie-panel.vertical button { + padding: 4px 0; +} + +.budgie-panel separator { + background-color: rgba(128, 134, 139, 0.3); +} + +.budgie-panel .alert { + color: #f44336; +} + +.budgie-panel .titlebar:not(headerbar) { + min-height: 0; + padding: 0; + box-shadow: none; + background-color: transparent; + color: #80868b; +} + +.budgie-panel .titlebar:not(headerbar) button:not(.suggested-action):not(.destructive-action) { + color: rgba(128, 134, 139, 0.7); +} + +.budgie-panel #tasklist-button { + padding: 0 4px; +} + +.budgie-panel.vertical #tasklist-button { + min-height: 32px; +} + +.budgie-panel button.flat.launcher { + padding: 0; +} + +.budgie-panel button.flat.launcher:not(:checked) { + color: rgba(128, 134, 139, 0.5); +} + +.budgie-panel button.flat.launcher:not(:checked):disabled { + color: rgba(128, 134, 139, 0.3); +} + +.top .budgie-panel #tasklist-button, +.budgie-panel .top #tasklist-button, +.top .budgie-panel button.flat.launcher, +.budgie-panel .top button.flat.launcher { + border-image: radial-gradient(circle closest-corner at center calc(1px), currentcolor 0%, transparent 0%) 0 0 0 0/0 0 0 0; +} + +.budgie-panel .unpinned button.flat.launcher, +.budgie-panel .pinned button.flat.launcher.running, +.top .budgie-panel #tasklist-button:checked, +.budgie-panel .top #tasklist-button:checked, +.top .budgie-panel button.flat.launcher:checked, +.budgie-panel .top button.flat.launcher:checked { + border-image: radial-gradient(circle closest-corner at center calc(1px), currentcolor 100%, transparent 0%) 2 0 0 0/2px 0 0 0; +} + +.bottom .budgie-panel #tasklist-button, +.budgie-panel .bottom #tasklist-button, +.bottom .budgie-panel button.flat.launcher, +.budgie-panel .bottom button.flat.launcher { + border-image: radial-gradient(circle closest-corner at center calc(100% - 1px), currentcolor 0%, transparent 0%) 0 0 0 0/0 0 0 0; +} + +.budgie-panel .unpinned button.flat.launcher, +.budgie-panel .pinned button.flat.launcher.running, +.bottom .budgie-panel #tasklist-button:checked, +.budgie-panel .bottom #tasklist-button:checked, +.bottom .budgie-panel button.flat.launcher:checked, +.budgie-panel .bottom button.flat.launcher:checked { + border-image: radial-gradient(circle closest-corner at center calc(100% - 1px), currentcolor 100%, transparent 0%) 0 0 2 0/0 0 2px 0; +} + +.left .budgie-panel #tasklist-button, +.budgie-panel .left #tasklist-button, +.left .budgie-panel button.flat.launcher, +.budgie-panel .left button.flat.launcher { + border-image: radial-gradient(circle closest-corner at calc(1px) center, currentcolor 0%, transparent 0%) 0 0 0 0/0 0 0 0; +} + +.budgie-panel .unpinned button.flat.launcher, +.budgie-panel .pinned button.flat.launcher.running, +.left .budgie-panel #tasklist-button:checked, +.budgie-panel .left #tasklist-button:checked, +.left .budgie-panel button.flat.launcher:checked, +.budgie-panel .left button.flat.launcher:checked { + border-image: radial-gradient(circle closest-corner at calc(1px) center, currentcolor 100%, transparent 0%) 0 0 0 2/0 0 0 2px; +} + +.right .budgie-panel #tasklist-button, +.budgie-panel .right #tasklist-button, +.right .budgie-panel button.flat.launcher, +.budgie-panel .right button.flat.launcher { + border-image: radial-gradient(circle closest-corner at calc(100% - 1px) center, currentcolor 0%, transparent 0%) 0 0 0 0/0 0 0 0; +} + +.budgie-panel .unpinned button.flat.launcher, +.budgie-panel .pinned button.flat.launcher.running, +.right .budgie-panel #tasklist-button:checked, +.budgie-panel .right #tasklist-button:checked, +.right .budgie-panel button.flat.launcher:checked, +.budgie-panel .right button.flat.launcher:checked { + border-image: radial-gradient(circle closest-corner at calc(100% - 1px) center, currentcolor 100%, transparent 0%) 0 2 0 0/0 2px 0 0; +} + +frame.raven-frame>border { + border-style: none; + box-shadow: 0 8px 6px -5px rgba(0, 0, 0, 0.2), 0 16px 14.4px 2px rgba(0, 0, 0, 0.14), 0 6px 18px 5px rgba(0, 0, 0, 0.12); +} + +.top frame.raven-frame>border { + margin-bottom: 32px; +} + +.bottom frame.raven-frame>border { + margin-top: 32px; +} + +.left frame.raven-frame>border { + margin-right: 32px; +} + +.right frame.raven-frame>border { + margin-left: 32px; +} + +.raven { + background-color: #141416; +} + +.raven>box:not(:only-child) { + margin-bottom: -10px; +} + +.raven .raven-header { + min-height: 32px; + padding: 3px; +} + +.raven .raven-header.top { + padding: 0; + border-bottom: 1px solid rgba(158, 158, 158, 0.2); +} + +.raven .raven-header.top stackswitcher.linked>button { + margin: -4px 0 -5px; + padding: 0 16px; + min-height: 40px; + border-image: radial-gradient(circle closest-corner at center calc(100% - 1px), #387db7 0%, transparent 0%) 0 0 0/0 0 0; + border-radius: 0; +} + +.raven .raven-header.top stackswitcher.linked>button:checked { + border-image: radial-gradient(circle closest-corner at center calc(100% - 1px), #387db7 100%, transparent 0%) 0 0 2/0 0 2px; + background-color: transparent; +} + +.raven .raven-header.bottom { + border-top: 1px solid rgba(158, 158, 158, 0.2); +} + +.raven stack .raven-header { + margin-top: -6px; +} + +.raven stack scrolledwindow .raven-header { + margin-top: -8px; +} + +.raven .expander-button { + border-radius: 9999px; +} + +.raven .raven-background stackswitcher.linked>button { + margin: -2px 8px 9px; + padding: 0 12px; + min-height: 32px; + border-radius: 9999px; + color: rgba(158, 158, 158, 0.7); + font-weight: normal; + box-shadow: none; + background-color: rgba(158, 158, 158, 0.08); +} + +.raven .raven-background stackswitcher.linked>button:drop(active), +.raven .raven-background stackswitcher.linked>button:hover { + box-shadow: none; + background-color: rgba(158, 158, 158, 0.1536); +} + +.raven .raven-background stackswitcher.linked>button:focus { + box-shadow: none; + background-color: rgba(158, 158, 158, 0.1536); +} + +.raven .raven-background stackswitcher.linked>button:active { + box-shadow: none; + background-image: radial-gradient(circle, rgba(158, 158, 158, 0.12) 10%, transparent 0%); +} + +.raven .raven-background stackswitcher.linked>button:checked { + color: #387db7; + box-shadow: none; + background-color: rgba(56, 125, 183, 0.16); +} + +.raven .raven-background stackswitcher.linked>button:checked:drop(active), +.raven .raven-background stackswitcher.linked>button:checked:hover { + box-shadow: none; + background-color: rgba(56, 125, 183, 0.2608); +} + +.raven .raven-background stackswitcher.linked>button:checked:focus { + box-shadow: none; + background-color: rgba(56, 125, 183, 0.2608); +} + +.raven .raven-background stackswitcher.linked>button:checked:active { + box-shadow: none; + background-image: radial-gradient(circle, rgba(56, 125, 183, 0.16) 10%, transparent 0%); +} + +.raven .raven-background stackswitcher.linked>button:not(:first-child) { + margin-left: 0; +} + +.raven .raven-background>overlay>widget>image { + color: rgba(158, 158, 158, 0.08); +} + +.raven revealer>.raven-background { + border-bottom: 1px solid rgba(158, 158, 158, 0.2); +} + +.raven .raven-header+.raven-background { + border-top: 1px solid rgba(158, 158, 158, 0.2); +} + +.raven viewport.frame>list>row { + padding: 0; + box-shadow: none; + background: none; +} + +.raven viewport.frame>list>row:not(:first-child) { + border-top: 1px solid rgba(158, 158, 158, 0.2); +} + +.raven viewport.frame>list>row>box { + margin-top: -5px; + margin-left: -5px; + margin-bottom: -5px; +} + +.raven viewport.frame>list>row>box>box { + padding: 6px; + margin-bottom: -10px; +} + +.raven viewport.frame>list>row>box>list>row { + padding: 8px; +} + +.raven viewport.frame>list>row>box>list>row>box { + margin-bottom: -5px; +} + +.raven viewport.frame>list>row>box>list>row>box>box>label { + font-weight: bold; +} + +.raven viewport.frame>list>row>box>list>row>box>box>button.image-button { + padding: 0; +} + +.raven viewport.frame>list>row>box>list>row>box>label { + margin-top: -6px; + font-size: smaller; +} + +.raven .powerstrip button { + margin: 2px 0 1px; + padding: 8px; +} + +.raven .option-subtitle { + font-size: smaller; +} + +calendar.raven-calendar { + border-style: none; + background-color: transparent; +} + +calendar.raven-calendar:selected { + border-radius: 2px; + background-color: rgba(56, 125, 183, 0.32); +} + +.raven-mpris { + background-color: rgba(0, 0, 0, 0.6); + color: #fff; +} + +.raven-mpris label { + min-height: 24px; +} + +.raven-mpris button.image-button { + padding: 8px; + color: rgba(255, 255, 255, 0.7); + box-shadow: none; + background-color: transparent; +} + +.raven-mpris button.image-button:drop(active), +.raven-mpris button.image-button:hover { + box-shadow: none; + background-color: rgba(255, 255, 255, 0.08); +} + +.raven-mpris button.image-button:focus { + box-shadow: none; + background-color: rgba(255, 255, 255, 0.08); +} + +.raven-mpris button.image-button:active { + box-shadow: none; + background-image: radial-gradient(circle, rgba(255, 255, 255, 0.12) 10%, transparent 0%); +} + +.budgie-notification-window, +.budgie-switcher-window, +.budgie-osd-window { + background-color: transparent; +} + +.budgie-notification .notification-title, +.budgie-switcher .notification-title { + font-size: 120%; +} + +.budgie-notification .notification-body, +.budgie-switcher .notification-body { + color: rgba(158, 158, 158, 0.7); +} + +.budgie-osd .budgie-osd-text { + font-size: 120%; +} + +.drop-shadow { + margin: 5px 9px; + padding: 3px; + border-radius: 2px; + box-shadow: 0 2px 2.4px -1px rgba(0, 0, 0, 0.2), 0 4px 3px 0 rgba(0, 0, 0, 0.14), 0 1px 6px 0 rgba(0, 0, 0, 0.12), inset 0 1px rgba(255, 255, 255, 0.05); + background-color: #141416; +} + +.drop-shadow button.text-button:not(:disabled) { + color: #387db7; + box-shadow: none; + background-color: transparent; +} + +.drop-shadow button.text-button:not(:disabled):drop(active), +.drop-shadow button.text-button:not(:disabled):hover { + box-shadow: none; + background-color: rgba(56, 125, 183, 0.12); +} + +.drop-shadow button.text-button:not(:disabled):focus { + box-shadow: none; + background-color: rgba(56, 125, 183, 0.12); +} + +.drop-shadow button.text-button:not(:disabled):active { + box-shadow: none; + background-image: radial-gradient(circle, rgba(56, 125, 183, 0.16) 10%, transparent 0%); +} + +.drop-shadow .linked>button { + margin-right: 4px; +} + +.budgie-run-dialog, +.budgie-polkit-dialog, +.budgie-session-dialog { + border-radius: 2px; + box-shadow: inset 0 1px rgba(255, 255, 255, 0.05); + background-color: #141416; +} + +.budgie-run-dialog decoration, +.budgie-polkit-dialog decoration, +.budgie-session-dialog decoration { + border-radius: 2px; +} + +.budgie-session-dialog>box { + padding: 8px; +} + +.budgie-session-dialog image { + margin: -8px; + -gtk-icon-transform: scale(0); +} + +.budgie-session-dialog label:not(:last-child), +.budgie-session-dialog .dialog-title { + margin-bottom: 8px; + font-size: 20px; + font-weight: 500; +} + +.budgie-session-dialog .dialog-title+label { + color: rgba(158, 158, 158, 0.7); +} + +.budgie-session-dialog .linked.horizontal>button:not(:last-child) { + margin-right: 8px; +} + +.budgie-session-dialog .linked.horizontal>button:not(:disabled) { + color: #387db7; + box-shadow: none; + background-color: transparent; +} + +.budgie-session-dialog .linked.horizontal>button:not(:disabled):drop(active), +.budgie-session-dialog .linked.horizontal>button:not(:disabled):hover { + box-shadow: none; + background-color: rgba(56, 125, 183, 0.12); +} + +.budgie-session-dialog .linked.horizontal>button:not(:disabled):focus { + box-shadow: none; + background-color: rgba(56, 125, 183, 0.12); +} + +.budgie-session-dialog .linked.horizontal>button:not(:disabled):active { + box-shadow: none; + background-image: radial-gradient(circle, rgba(56, 125, 183, 0.16) 10%, transparent 0%); +} + +.budgie-polkit-dialog .message { + color: rgba(158, 158, 158, 0.7); +} + +.budgie-polkit-dialog .failure { + color: #f44336; +} + +.budgie-run-dialog entry.search { + font-size: 120%; + padding: 4px 12px; + border-image: none; + box-shadow: none; + background-color: transparent; +} + +.budgie-run-dialog list { + padding: 4px 0; +} + +.budgie-run-dialog list .dim-label { + color: inherit; +} + +.budgie-run-dialog scrolledwindow { + border-top: 1px solid rgba(158, 158, 158, 0.2); +} + +.budgie-run-dialog scrollbar.right, +.budgie-run-dialog scrollbar.bottom { + border-bottom-right-radius: 2px; +} + +.budgie-run-dialog scrollbar.left, +.budgie-run-dialog scrollbar.bottom { + border-bottom-left-radius: 2px; +} + +/** + * Xfce4 Apps + */ +/** + * xfce4-panel + */ +.xfce4-panel.background { + border: none; + background-color: #000000; + color: rgba(128, 134, 139, 0.7); + font-weight: 500; +} + +.xfce4-panel.background button { + min-height: 16px; + min-width: 16px; + padding: 0; + border-radius: 0; + color: rgba(128, 134, 139, 0.7); + box-shadow: none; + background-color: transparent; +} + +.xfce4-panel.background button:drop(active), +.xfce4-panel.background button:hover { + box-shadow: none; + background-color: rgba(128, 134, 139, 0.08); +} + +.xfce4-panel.background button:focus { + box-shadow: none; + background-color: rgba(128, 134, 139, 0.08); +} + +.xfce4-panel.background button:active { + box-shadow: none; + background-image: radial-gradient(circle, rgba(128, 134, 139, 0.12) 10%, transparent 0%); +} + +.xfce4-panel.background button:disabled { + background-color: transparent; + color: rgba(128, 134, 139, 0.3); +} + +.xfce4-panel.background button:checked { + color: #80868b; + box-shadow: none; + background-color: rgba(128, 134, 139, 0.12); +} + +.xfce4-panel.background button:checked:drop(active), +.xfce4-panel.background button:checked:hover { + box-shadow: none; + background-color: rgba(128, 134, 139, 0.1904); +} + +.xfce4-panel.background button:checked:focus { + box-shadow: none; + background-color: rgba(128, 134, 139, 0.1904); +} + +.xfce4-panel.background button:checked:active { + box-shadow: none; + background-image: radial-gradient(circle, rgba(128, 134, 139, 0.12) 10%, transparent 0%); +} + +.xfce4-panel.background button:checked:disabled { + background-color: rgba(128, 134, 139, 0.12); + color: rgba(128, 134, 139, 0.5); +} + +.xfce4-panel.background .tasklist button { + border-image: image(transparent) 0 0 2/0 0 2px; +} + +.xfce4-panel.background .tasklist button:checked { + border-image: image(currentcolor) 0 0 2/0 0 2px; +} + +.xfce4-panel.background .tasklist button image { + padding: 4px; +} + +.xfce4-panel.background frame>border { + border-style: none; + background-color: transparent; +} + +.xfce4-panel.background progressbar progress { + background-color: #387db7; +} + +.xfce4-panel.background progressbar trough { + background-color: rgba(128, 134, 139, 0.2); +} + +wnck-pager:hover { + background-color: rgba(128, 134, 139, 0.08); +} + +wnck-pager:active { + background-color: rgba(128, 134, 139, 0.12); +} + +wnck-pager:selected { + background-color: #387db7; +} + +XfdesktopIconView.view { + border-radius: 2px; + color: #fff; + text-shadow: 0 1px 1px rgba(0, 0, 0, 0.2), 0 1px 2px rgba(0, 0, 0, 0.14), 0 1px 3px rgba(0, 0, 0, 0.12); +} + +XfdesktopIconView.view:active { + box-shadow: none; + background-color: rgba(56, 125, 183, 0.32); +} + +XfdesktopIconView.view .rubberband { + border-radius: 0; +} + +#XfceNotifyWindow { + border-radius: 2px; + box-shadow: 0 2px 2.4px -1px rgba(0, 0, 0, 0.2), 0 4px 3px 0 rgba(0, 0, 0, 0.14), 0 1px 6px 0 rgba(0, 0, 0, 0.12), inset 0 1px rgba(255, 255, 255, 0.05); + background-color: #141416; + color: #9e9e9e; +} + +#XfceNotifyWindow buttonbox button:not(:disabled) { + color: #387db7; + box-shadow: none; + background-color: transparent; +} + +#XfceNotifyWindow buttonbox button:not(:disabled):drop(active), +#XfceNotifyWindow buttonbox button:not(:disabled):hover { + box-shadow: none; + background-color: rgba(56, 125, 183, 0.12); +} + +#XfceNotifyWindow buttonbox button:not(:disabled):focus { + box-shadow: none; + background-color: rgba(56, 125, 183, 0.12); +} + +#XfceNotifyWindow buttonbox button:not(:disabled):active { + box-shadow: none; + background-image: radial-gradient(circle, rgba(56, 125, 183, 0.16) 10%, transparent 0%); +} + +#XfceNotifyWindow label#summary { + font-weight: bold; +} + +#XfceNotifyWindow label#summary+label { + color: rgba(158, 158, 158, 0.7); +} + +#xfwm-tabwin { + padding: 12px; + border-radius: 2px; + -XfwmTabwinWidget-icon-size: 64px; + -XfwmTabwinWidget-preview-size: 64px; +} + +/** + * Thunar + */ +.thunar #location-toolbar { + border-bottom: 1px solid rgba(158, 158, 158, 0.2); +} + +.thunar #location-toolbar>toolitem>button { + min-width: 24px; + padding: 4px; + border-radius: 9999px; +} + +.thunar .shortcuts-pane.frame, +.thunar .standard-view.frame { + border-width: 0; + background-color: transparent; +} + +.thunar statusbar { + margin: 0 -10px; + padding: 0 4px; + border-top: 1px solid rgba(158, 158, 158, 0.2); +} + +/** + * LightDM GTK+ Greeter + */ +#panel_window { + background-color: rgba(0, 0, 0, 0.3); + color: #fff; +} + +#panel_window menubar, +#panel_window separator { + background-color: transparent; +} + +#panel_window separator { + padding: 0 4px; +} + +#panel_window separator:first-child { + padding: 0 8px; +} + +#panel_window menubar>menuitem { + color: rgba(255, 255, 255, 0.7); +} + +#panel_window menubar>menuitem:hover { + background-color: rgba(255, 255, 255, 0.12); + color: #fff; +} + +#panel_window menubar>menuitem:disabled { + color: rgba(255, 255, 255, 0.3); +} + +#login_window, +#shutdown_dialog, +#restart_dialog { + margin: 8px; + border-radius: 2px; + box-shadow: 0 3px 3px -1px rgba(0, 0, 0, 0.2), 0 6px 6px 0 rgba(0, 0, 0, 0.14), 0 1px 10.8px 0 rgba(0, 0, 0, 0.12), inset 0 1px rgba(255, 255, 255, 0.05); + background-color: #141416; + color: #9e9e9e; +} + +#content_frame { + padding-bottom: 16px; +} + +#buttonbox_frame { + padding-top: 24px; +} + +#buttonbox_frame>box, +#buttonbox_frame>buttonbox { + margin: -16px; +} + +#buttonbox_frame button:not(:disabled) { + color: #387db7; + box-shadow: none; + background-color: transparent; +} + +#buttonbox_frame button:not(:disabled):drop(active), +#buttonbox_frame button:not(:disabled):hover { + box-shadow: none; + background-color: rgba(56, 125, 183, 0.12); +} + +#buttonbox_frame button:not(:disabled):focus { + box-shadow: none; + background-color: rgba(56, 125, 183, 0.12); +} + +#buttonbox_frame button:not(:disabled):active { + box-shadow: none; + background-image: radial-gradient(circle, rgba(56, 125, 183, 0.16) 10%, transparent 0%); +} + +/** + * Nemo + */ +.nemo-window .primary-toolbar { + border-bottom: 1px solid rgba(158, 158, 158, 0.2); +} + +.nemo-window .primary-toolbar stack>box { + margin: -2px; +} + +.nemo-window .primary-toolbar button.text-button { + padding-left: 8px; + padding-right: 8px; +} + +.nemo-window .primary-toolbar button:not(.text-button):not(.image-button) { + padding-left: 4px; + padding-right: 4px; +} + +.nemo-window scrolledwindow.frame { + border-style: none; + background-color: transparent; +} + +.nemo-window .nemo-window-pane widget.entry { + border-radius: 2px; + background-color: rgba(158, 158, 158, 0.04); +} + +.nemo-window .nemo-window-pane widget.entry:selected { + background-color: rgba(56, 125, 183, 0.32); +} + +.places-treeview { + -NemoPlacesTreeView-disk-full-bg-color: #2c2c2d; + -NemoPlacesTreeView-disk-full-fg-color: #387db7; + -NemoPlacesTreeView-disk-full-bar-width: 2px; + -NemoPlacesTreeView-disk-full-bar-radius: 0; + -NemoPlacesTreeView-disk-full-bottom-padding: 1px; + -NemoPlacesTreeView-disk-full-max-length: 80px; +} + +/* GTK NAMED COLORS + ---------------- + use responsibly! */ +/* +widget text/foreground color */ +@define-color theme_fg_color #9e9e9e; +/* +text color for entries, views and content in general */ +@define-color theme_text_color #9e9e9e; +/* +widget base background color */ +@define-color theme_bg_color #0f1011; +/* +text widgets and the like base background color */ +@define-color theme_base_color #1a1c1e; +/* +base background color of selections */ +@define-color theme_selected_bg_color #387db7; +/* +text/foreground color of selections */ +@define-color theme_selected_fg_color #fff; +/* +base background color of insensitive widgets */ +@define-color insensitive_bg_color #0f1011; +/* +text foreground color of insensitive widgets */ +@define-color insensitive_fg_color rgba(158, 158, 158, 0.5); +/* +insensitive text widgets and the like base background color */ +@define-color insensitive_base_color #1a1c1e; +/* +widget text/foreground color on backdrop windows */ +@define-color theme_unfocused_fg_color #9e9e9e; +/* +text color for entries, views and content in general on backdrop windows */ +@define-color theme_unfocused_text_color #9e9e9e; +/* +widget base background color on backdrop windows */ +@define-color theme_unfocused_bg_color #0f1011; +/* +text widgets and the like base background color on backdrop windows */ +@define-color theme_unfocused_base_color #1a1c1e; +/* +base background color of selections on backdrop windows */ +@define-color theme_unfocused_selected_bg_color #387db7; +/* +text/foreground color of selections on backdrop windows */ +@define-color theme_unfocused_selected_fg_color #fff; +/* +insensitive color on backdrop windows */ +@define-color unfocused_insensitive_color rgba(158, 158, 158, 0.5); +/* +widgets main borders color */ +@define-color borders rgba(158, 158, 158, 0.2); +/* +widgets main borders color on backdrop windows */ +@define-color unfocused_borders rgba(158, 158, 158, 0.2); +/* +these are pretty self explicative */ +@define-color warning_color #ffeb3b; +@define-color error_color #f44336; +@define-color success_color #00e676; +/* +these colors are exported for the window manager and shouldn't be used in applications, +read if you used those and something break with a version upgrade you're on your own... */ +@define-color wm_title #80868b; +@define-color wm_unfocused_title rgba(128, 134, 139, 0.7); +@define-color wm_highlight rgba(255, 255, 255, 0.05); +@define-color wm_bg #09090a; +@define-color wm_unfocused_bg #000000; +@define-color xfwm4_title #80868b; +@define-color xfwm4_unfocused_title #5a5e61; +/* content view background such as thumbnails view in Photos or Boxes */ +@define-color content_view_bg #0f1011; +/* Very contrasty background for text views (@theme_text_color foreground) */ +@define-color text_view_bg #0f1011; +/* placeholder for entries */ +@define-color placeholder_text_color #767778; diff --git a/gtk-theme/src/gtk-4.0/gtk.css b/gtk-theme/src/gtk-4.0/gtk.css new file mode 100644 index 0000000..7ba9b71 --- /dev/null +++ b/gtk-theme/src/gtk-4.0/gtk.css @@ -0,0 +1,4570 @@ +@import '../colours.css'; + +/* + * Replace the colours with variable names. See build/util.js for translation + * This CSS file here is from Material-Black-Blueberry + */ + +@keyframes ripple { + to { + background-size: 1000% 1000%; + } +} + +@keyframes ripple-on-slider { + to { + background-size: auto, 1000% 1000%; + } +} + +@keyframes ripple-on-headerbar { + from { + background-image: radial-gradient(circle, #387db7 0%, transparent 0%); + } + + to { + background-image: radial-gradient(circle, #387db7 100%, transparent 100%); + } +} + +flowbox>flowboxchild, +gridview>child, +entry>image, +button, +modelbutton.flat, +spinbutton:not(.vertical)>image, +menubar>item, +notebook>header>tabs>arrow, +notebook>header>tabs>tab, +check, +radio, +row.activatable, +listview>row, +expander, +calendar>grid>label.day-number, +popover.emoji-picker>contents emoji, +popover.emoji-completion>contents emoji-completion-row, +popover.emoji-completion>contents emoji { + transition-property: all, border-image, background-size, background-image; + transition-duration: 75ms, 225ms, 300ms, 1200ms; + transition-timing-function: cubic-bezier(0, 0, 0.2, 1); + background-image: radial-gradient(circle, transparent 10%, transparent 10%); + background-repeat: no-repeat; + background-position: center; + background-size: 1000% 1000%; +} + +flowbox>flowboxchild:active, +gridview>child:active, +entry>image:active, +button:active, +modelbutton.flat:active, +spinbutton:not(.vertical)>image:active, +menubar>item:active, +notebook>header>tabs>arrow:active, +notebook>header>tabs>tab:active, +check:active, +radio:active, +row.activatable:active, +listview>row:active, +expander:active, +calendar>grid>label.day-number:active, +popover.emoji-picker>contents emoji:active, +popover.emoji-completion>contents emoji-completion-row:active, +popover.emoji-completion>contents emoji:active { + transition-duration: 75ms, 225ms, 0ms, 0ms; + animation: ripple 225ms cubic-bezier(0, 0, 0.2, 1) forwards; + background-size: 0% 0%; +} + +/** + * Base States + */ +.background { + background-color: #0f1011; + color: #9e9e9e; +} + +dnd { + color: #9e9e9e; +} + +.normal-icons { + -gtk-icon-size: 16px; +} + +.large-icons { + -gtk-icon-size: 32px; +} + +image:disabled { + -gtk-icon-filter: opacity(0.5); +} + +.view>.cell:hover { + background-color: rgba(158, 158, 158, 0.04); +} + +.view:disabled { + color: rgba(158, 158, 158, 0.5); +} + +.view:selected { + background-color: rgba(56, 125, 183, 0.32); +} + +.view>.cell:selected:hover { + background-color: rgba(56, 125, 183, 0.3744); +} + +textview { + caret-color: #387db7; +} + +textview>text>selection { + background-color: rgba(56, 125, 183, 0.32); +} + +textview>border { + color: rgba(158, 158, 158, 0.7); +} + +iconview>.cell { + border-radius: 2px; +} + +iconview>dndtarget:drop(active) { + box-shadow: inset 0 0 0 2px #387db7; +} + +rubberband, +columnview.view>rubberband, +treeview.view>rubberband { + border: 1px solid #387db7; + background-color: rgba(56, 125, 183, 0.24); +} + +flowbox { + padding: 4px; + border-spacing: 4px; +} + +flowbox>flowboxchild { + padding: 4px; + border-radius: 2px; +} + +flowbox>flowboxchild:drop(active), +flowbox>flowboxchild:hover { + background-color: rgba(158, 158, 158, 0.04); +} + +flowbox>flowboxchild:focus { + background-color: rgba(158, 158, 158, 0.08); +} + +flowbox>flowboxchild:active { + background-image: radial-gradient(circle, rgba(158, 158, 158, 0.12) 10%, transparent 10%); +} + +flowbox>flowboxchild:selected { + background-color: rgba(56, 125, 183, 0.32); + background-color: rgba(56, 125, 183, 0.32); +} + +flowbox>flowboxchild:selected:drop(active), +flowbox>flowboxchild:selected:hover { + background-color: rgba(56, 125, 183, 0.3744); +} + +flowbox>flowboxchild:selected:focus { + background-color: rgba(56, 125, 183, 0.4016); +} + +flowbox>flowboxchild:selected:active { + background-image: radial-gradient(circle, rgba(56, 125, 183, 0.16) 10%, transparent 10%); +} + +gridview { + padding: 4px; + border-spacing: 4px; +} + +gridview>child { + padding: 4px; + border-radius: 2px; +} + +gridview>child:drop(active), +gridview>child:hover { + background-color: rgba(158, 158, 158, 0.04); +} + +gridview>child:focus { + background-color: rgba(158, 158, 158, 0.08); +} + +gridview>child:active { + background-image: radial-gradient(circle, rgba(158, 158, 158, 0.12) 10%, transparent 10%); +} + +gridview>child:selected { + background-color: rgba(56, 125, 183, 0.32); + background-color: rgba(56, 125, 183, 0.32); +} + +gridview>child:selected:drop(active), +gridview>child:selected:hover { + background-color: rgba(56, 125, 183, 0.3744); +} + +gridview>child:selected:focus { + background-color: rgba(56, 125, 183, 0.4016); +} + +gridview>child:selected:active { + background-image: radial-gradient(circle, rgba(56, 125, 183, 0.16) 10%, transparent 10%); +} + +coverflow>cover { + box-shadow: 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 rgba(0, 0, 0, 0.12); + background-color: #141416; + color: #9e9e9e; +} + +.content-view .tile:selected { + background-color: transparent; +} + +label { + caret-color: #387db7; +} + +label.separator { + color: rgba(158, 158, 158, 0.7); +} + +label.error { + color: #f44336; +} + +label>selection { + background-color: rgba(56, 125, 183, 0.32); +} + +label:disabled { + color: rgba(158, 158, 158, 0.5); +} + +headerbar label:disabled, +modelbutton label:disabled, +tab label:disabled, +button label:disabled { + color: inherit; +} + +label.osd { + border-radius: 2px; + background-color: rgba(9, 9, 10, 0.9); + color: #80868b; +} + +.dim-label { + color: rgba(158, 158, 158, 0.7); +} + +window.assistant .sidebar { + padding: 4px 0; +} + +window.assistant .sidebar>label { + min-height: 32px; + padding: 0 12px; + color: rgba(158, 158, 158, 0.5); + font-weight: 500; +} + +window.assistant .sidebar>label.highlight { + color: #9e9e9e; +} + +window.aboutdialog>box>box>image.large-icons { + -gtk-icon-size: 128px; +} + +/** + * Spinner Animation + */ +@keyframes spin { + to { + transform: rotate(1turn); + } +} + +spinner { + opacity: 0; + color: #387db7; + -gtk-icon-source: -gtk-icontheme("process-working-symbolic"); + transition: opacity 300ms cubic-bezier(0, 0, 0.2, 1); + animation: spin 1s linear infinite; +} + +spinner:checked { + opacity: 1; +} + +spinner:disabled { + color: rgba(158, 158, 158, 0.3); +} + +/** + * General Typography + */ +.large-title { + font-weight: 400; + font-size: 36pt; +} + +.title-1 { + font-weight: 400; + font-size: 25.5pt; + letter-spacing: 0.1875pt; +} + +.title-2 { + font-weight: 400; + font-size: 18pt; +} + +.title-3 { + font-weight: 500; + font-size: 15pt; + letter-spacing: 0.1125pt; +} + +.title-4 { + font-weight: 400; + font-size: 12pt; + letter-spacing: 0.375pt; +} + +.heading { + font-weight: 500; + font-size: 1em; +} + +.body { + font-weight: 400; + font-size: 1em; +} + +.caption-heading { + font-weight: 500; + font-size: 9pt; + letter-spacing: 1.125pt; +} + +.caption { + font-weight: 400; + font-size: 9pt; + letter-spacing: 0.3pt; +} + +/** + * Text Entries + */ +spinbutton:not(.vertical), +entry { + min-height: 32px; + padding: 0 8px; + border-spacing: 4px; + border-radius: 2px 2px 0 0; + transition: all 75ms cubic-bezier(0, 0, 0.2, 1), border-image 225ms cubic-bezier(0, 0, 0.2, 1); + border-image: radial-gradient(circle closest-corner at center calc(100% - 1px), #387db7 0%, transparent 0%) 2/0 0 0px; + box-shadow: inset 0 -1px rgba(158, 158, 158, 0.3); + background-color: rgba(158, 158, 158, 0.04); + color: #9e9e9e; + caret-color: #387db7; +} + +spinbutton:hover:not(.vertical), +spinbutton:drop(active):not(.vertical), +entry:hover, +entry:drop(active) { + box-shadow: inset 0 -1px rgba(158, 158, 158, 0.3); + background-color: rgba(158, 158, 158, 0.0784); +} + +spinbutton:focus-within:not(.vertical), +entry:focus-within { + border-image: radial-gradient(circle closest-corner at center calc(100% - 1px), #387db7 100%, transparent 100%) 2/0 0 2px; + box-shadow: inset 0 -1px rgba(158, 158, 158, 0.3); + background-color: rgba(158, 158, 158, 0.1168); +} + +spinbutton:focus-within:not(.vertical)>text>placeholder, +entry:focus-within>text>placeholder { + opacity: 0; +} + +spinbutton:disabled:not(.vertical), +entry:disabled { + box-shadow: inset 0 -1px rgba(158, 158, 158, 0.2); + background-color: rgba(158, 158, 158, 0.04); + color: rgba(158, 158, 158, 0.5); +} + +spinbutton.flat:not(.vertical), +entry.flat { + min-height: 0; + padding: 2px; + border-radius: 0; + background-color: transparent; +} + +spinbutton:not(.vertical)>text>placeholder, +entry>text>placeholder { + color: rgba(158, 158, 158, 0.7); +} + +spinbutton:not(.vertical)>text>selection, +entry>text>selection { + background-color: rgba(56, 125, 183, 0.32); +} + +spinbutton:not(.vertical)>text>block-cursor, +entry>text>block-cursor { + background-color: #387db7; + color: #fff; +} + +spinbutton:not(.vertical)>image, +entry>image { + min-width: 24px; + min-height: 24px; + border-radius: 9999px; + color: rgba(158, 158, 158, 0.7); + margin-top: 4px; + margin-bottom: 4px; +} + +spinbutton:not(.vertical)>image:drop(active), +spinbutton:not(.vertical)>image:hover, +entry>image:drop(active), +entry>image:hover { + background-color: rgba(158, 158, 158, 0.08); +} + +spinbutton:not(.vertical)>image:focus, +entry>image:focus { + background-color: rgba(158, 158, 158, 0.08); +} + +spinbutton:not(.vertical)>image:active, +entry>image:active { + background-image: radial-gradient(circle, rgba(158, 158, 158, 0.12) 10%, transparent 10%); +} + +spinbutton:not(.vertical)>image:disabled, +entry>image:disabled { + color: rgba(158, 158, 158, 0.5); +} + +spinbutton:not(.vertical)>image.left, +entry>image.left { + margin-left: -4px; +} + +spinbutton:not(.vertical)>image.right, +entry>image.right { + margin-right: -4px; +} + +spinbutton.error:not(.vertical), +entry.error { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1), border-image 225ms cubic-bezier(0, 0, 0.2, 1); + border-image: radial-gradient(circle closest-corner at center calc(100% - 1px), #f44336 0%, transparent 0%) 2/0 0 0px; + box-shadow: inset 0 -1px #f44336; + background-color: rgba(158, 158, 158, 0.04); + color: #9e9e9e; + caret-color: #f44336; +} + +spinbutton.error:focus-within:not(.vertical), +entry.error:focus-within { + border-image: radial-gradient(circle closest-corner at center calc(100% - 1px), #f44336 100%, transparent 100%) 2/0 0 2px; + box-shadow: inset 0 -1px #f44336; + background-color: rgba(158, 158, 158, 0.1168); +} + +spinbutton.error:disabled:not(.vertical), +entry.error:disabled { + box-shadow: inset 0 -1px rgba(158, 158, 158, 0.2); + background-color: rgba(158, 158, 158, 0.04); + color: rgba(158, 158, 158, 0.5); +} + +spinbutton.warning:not(.vertical), +entry.warning { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1), border-image 225ms cubic-bezier(0, 0, 0.2, 1); + border-image: radial-gradient(circle closest-corner at center calc(100% - 1px), #ffeb3b 0%, transparent 0%) 2/0 0 0px; + box-shadow: inset 0 -1px #ffeb3b; + background-color: rgba(158, 158, 158, 0.04); + color: #9e9e9e; + caret-color: #ffeb3b; +} + +spinbutton.warning:focus-within:not(.vertical), +entry.warning:focus-within { + border-image: radial-gradient(circle closest-corner at center calc(100% - 1px), #ffeb3b 100%, transparent 100%) 2/0 0 2px; + box-shadow: inset 0 -1px #ffeb3b; + background-color: rgba(158, 158, 158, 0.1168); +} + +spinbutton.warning:disabled:not(.vertical), +entry.warning:disabled { + box-shadow: inset 0 -1px rgba(158, 158, 158, 0.2); + background-color: rgba(158, 158, 158, 0.04); + color: rgba(158, 158, 158, 0.5); +} + +spinbutton:not(.vertical)>progress>trough>progress, +entry>progress>trough>progress { + margin: 0 -8px; + margin-bottom: -4px; + border-bottom: 2px solid #387db7; + background-color: transparent; +} + +spinbutton.vertical>text { + border-radius: 2px; + transition: all 75ms cubic-bezier(0, 0, 0.2, 1); + border-image: none; + box-shadow: 0 2px 1px -1px rgba(0, 0, 0, 0.2), 0 1px 1px 0 rgba(0, 0, 0, 0.14), 0 1px 3px 0 rgba(0, 0, 0, 0.12); + background-color: #141416; + color: #9e9e9e; + caret-color: #387db7; +} + +spinbutton.vertical>text:focus-within { + border-image: none; + box-shadow: 0 3px 3px -2px rgba(0, 0, 0, 0.2), 0 3px 4px 0 rgba(0, 0, 0, 0.14), 0 1px 8px 0 rgba(0, 0, 0, 0.12); +} + +spinbutton.vertical>text:drop(active) { + box-shadow: 0 3px 3px -2px rgba(0, 0, 0, 0.2), 0 3px 4px 0 rgba(0, 0, 0, 0.14), 0 1px 8px 0 rgba(0, 0, 0, 0.12); +} + +spinbutton.vertical>text:disabled { + box-shadow: 0 2px 1px -1px rgba(0, 0, 0, 0.2), 0 1px 1px 0 rgba(0, 0, 0, 0.14), 0 1px 3px 0 rgba(0, 0, 0, 0.12); + background-color: #1a1c1e; + color: rgba(158, 158, 158, 0.5); +} + +spinbutton.vertical>text.error { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1); + border-image: none; + box-shadow: 0 2px 1px -1px rgba(0, 0, 0, 0.2), 0 1px 1px 0 rgba(0, 0, 0, 0.14), 0 1px 3px 0 rgba(0, 0, 0, 0.12); + background-color: #f44336; + color: #fff; + caret-color: #fff; +} + +spinbutton.vertical>text.error:focus-within { + border-image: none; + box-shadow: 0 3px 3px -2px rgba(0, 0, 0, 0.2), 0 3px 4px 0 rgba(0, 0, 0, 0.14), 0 1px 8px 0 rgba(0, 0, 0, 0.12); +} + +spinbutton.vertical>text.error:disabled { + box-shadow: 0 2px 1px -1px rgba(0, 0, 0, 0.2), 0 1px 1px 0 rgba(0, 0, 0, 0.14), 0 1px 3px 0 rgba(0, 0, 0, 0.12); + background-color: #1a1c1e; + color: rgba(158, 158, 158, 0.5); +} + +spinbutton.vertical>text.error image { + color: rgba(255, 255, 255, 0.7); +} + +spinbutton.vertical>text.error image:hover, +spinbutton.vertical>text.error image:active { + color: #fff; +} + +spinbutton.vertical>text.error image:disabled { + color: rgba(255, 255, 255, 0.5); +} + +spinbutton.vertical>text.warning { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1); + border-image: none; + box-shadow: 0 2px 1px -1px rgba(0, 0, 0, 0.2), 0 1px 1px 0 rgba(0, 0, 0, 0.14), 0 1px 3px 0 rgba(0, 0, 0, 0.12); + background-color: #ffeb3b; + color: #000; + caret-color: #000; +} + +spinbutton.vertical>text.warning:focus-within { + border-image: none; + box-shadow: 0 3px 3px -2px rgba(0, 0, 0, 0.2), 0 3px 4px 0 rgba(0, 0, 0, 0.14), 0 1px 8px 0 rgba(0, 0, 0, 0.12); +} + +spinbutton.vertical>text.warning:disabled { + box-shadow: 0 2px 1px -1px rgba(0, 0, 0, 0.2), 0 1px 1px 0 rgba(0, 0, 0, 0.14), 0 1px 3px 0 rgba(0, 0, 0, 0.12); + background-color: #1a1c1e; + color: rgba(158, 158, 158, 0.5); +} + +spinbutton.vertical>text.warning image { + color: rgba(0, 0, 0, 0.7); +} + +spinbutton.vertical>text.warning image:hover, +spinbutton.vertical>text.warning image:active { + color: #000; +} + +spinbutton.vertical>text.warning image:disabled { + color: rgba(0, 0, 0, 0.5); +} + +treeview entry, +treeview entry.flat { + background-color: #1a1c1e; +} + +treeview entry, +treeview entry:focus-within, +treeview entry.flat, +treeview entry.flat:focus-within { + border-image: none; + box-shadow: none; +} + +.entry-tag { + margin: 2px; + border-radius: 9999px; + box-shadow: none; + background-color: rgba(158, 158, 158, 0.08); + color: #9e9e9e; +} + +.entry-tag:hover { + background-image: image(rgba(158, 158, 158, 0.08)); +} + +:dir(ltr) .entry-tag { + margin-left: 4px; + margin-right: 0; + padding-left: 12px; + padding-right: 8px; +} + +:dir(rtl) .entry-tag { + margin-left: 0; + margin-right: 4px; + padding-left: 8px; + padding-right: 12px; +} + +.entry-tag.button { + box-shadow: none; + background-color: transparent; + color: rgba(158, 158, 158, 0.7); +} + +/** + * Buttons + */ +@keyframes needs-attention { + from { + background-image: radial-gradient(farthest-side, #387db7 0%, transparent 0%); + } + + to { + background-image: radial-gradient(farthest-side, #387db7 100%, transparent 100%); + } +} + +button { + min-height: 24px; + min-width: 16px; + padding: 4px 8px; + border-radius: 2px; + background-color: #141416; + color: #9e9e9e; + font-weight: 500; + box-shadow: 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 rgba(0, 0, 0, 0.12); + background-color: #141416; +} + +button:drop(active), +button:hover { + box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12); + background-color: #1a1a1b; +} + +button:focus { + box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12); + background-color: #1f1f21; +} + +button:active { + box-shadow: 0 5px 5px -3px rgba(0, 0, 0, 0.2), 0 8px 10px 1px rgba(0, 0, 0, 0.14), 0 3px 14px 2px rgba(0, 0, 0, 0.12); + background-image: radial-gradient(circle, rgba(158, 158, 158, 0.12) 10%, transparent 10%); +} + +button:disabled { + box-shadow: none; + background-color: rgba(158, 158, 158, 0.08); + color: rgba(158, 158, 158, 0.5); +} + +button:checked { + color: #387db7; + box-shadow: 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 rgba(0, 0, 0, 0.12); + background-color: #1a2530; +} + +button:checked:drop(active), +button:checked:hover { + box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12); + background-color: #1c2c3b; +} + +button:checked:focus { + box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12); + background-color: #1e3040; +} + +button:checked:active { + box-shadow: 0 5px 5px -3px rgba(0, 0, 0, 0.2), 0 8px 10px 1px rgba(0, 0, 0, 0.14), 0 3px 14px 2px rgba(0, 0, 0, 0.12); + background-image: radial-gradient(circle, rgba(56, 125, 183, 0.16) 10%, transparent 10%); +} + +button:checked:disabled { + box-shadow: none; + background-color: rgba(158, 158, 158, 0.1904); + color: rgba(158, 158, 158, 0.5); +} + +button.text-button { + min-width: 32px; + padding-left: 16px; + padding-right: 16px; +} + +button.image-button { + min-width: 24px; + padding: 4px; + border-radius: 9999px; +} + +button.text-button.image-button { + min-width: 32px; + padding-left: 16px; + padding-right: 16px; + border-radius: 2px; +} + +button.text-button.image-button image:first-child { + margin-left: -4px; + margin-right: 8px; +} + +button.text-button.image-button image:last-child { + margin-left: 8px; + margin-right: -4px; +} + +frame button, +.frame button, +popover button { + background-color: transparent; + box-shadow: inset 0 0 0 1px rgba(158, 158, 158, 0.3); + background-color: transparent; +} + +frame button:drop(active), +.frame button:drop(active), +popover button:drop(active), +frame button:hover, +.frame button:hover, +popover button:hover { + box-shadow: inset 0 0 0 1px rgba(158, 158, 158, 0.3); + background-color: rgba(158, 158, 158, 0.04); +} + +frame button:focus, +.frame button:focus, +popover button:focus { + box-shadow: inset 0 0 0 1px rgba(158, 158, 158, 0.3); + background-color: rgba(158, 158, 158, 0.08); +} + +frame button:active, +.frame button:active, +popover button:active { + box-shadow: inset 0 0 0 1px rgba(158, 158, 158, 0.3); + background-image: radial-gradient(circle, rgba(158, 158, 158, 0.12) 10%, transparent 10%); +} + +button.sidebar-button, +pathbar.linked:not(.vertical)>button, +spinbutton.vertical button, +spinbutton:not(.vertical)>button, +combobox>.linked:not(.vertical)>button:not(:only-child), +infobar.info>revealer>box button, +infobar.question>revealer>box button, +filechooser #pathbarbox>stack>box>button, +window.dialog.message .dialog-action-area>button, +.app-notification button, +actionbar>revealer>box button:not(.suggested-action):not(.destructive-action), +popover.menu button.model, +.titlebar button:not(.suggested-action):not(.destructive-action), +.toolbar button, +button.flat { + background-color: transparent; + color: rgba(158, 158, 158, 0.7); + box-shadow: none; + background-color: transparent; +} + +button.sidebar-button:drop(active), +pathbar.linked:not(.vertical)>button:drop(active), +spinbutton.vertical button:drop(active), +spinbutton:not(.vertical)>button:drop(active), +combobox>.linked:not(.vertical)>button:drop(active):not(:only-child), +infobar.info>revealer>box button:drop(active), +infobar.question>revealer>box button:drop(active), +filechooser #pathbarbox>stack>box>button:drop(active), +window.dialog.message .dialog-action-area>button:drop(active), +.app-notification button:drop(active), +actionbar>revealer>box button:drop(active):not(.suggested-action):not(.destructive-action), +popover.menu button.model:drop(active), +.titlebar button:drop(active):not(.suggested-action):not(.destructive-action), +.toolbar button:drop(active), +button.flat:drop(active), +button.sidebar-button:hover, +pathbar.linked:not(.vertical)>button:hover, +spinbutton.vertical button:hover, +spinbutton:not(.vertical)>button:hover, +combobox>.linked:not(.vertical)>button:hover:not(:only-child), +infobar.info>revealer>box button:hover, +infobar.question>revealer>box button:hover, +filechooser #pathbarbox>stack>box>button:hover, +window.dialog.message .dialog-action-area>button:hover, +.app-notification button:hover, +actionbar>revealer>box button:hover:not(.suggested-action):not(.destructive-action), +popover.menu button.model:hover, +.titlebar button:hover:not(.suggested-action):not(.destructive-action), +.toolbar button:hover, +button.flat:hover { + box-shadow: none; + background-color: rgba(158, 158, 158, 0.08); +} + +button.sidebar-button:focus, +pathbar.linked:not(.vertical)>button:focus, +spinbutton.vertical button:focus, +spinbutton:not(.vertical)>button:focus, +combobox>.linked:not(.vertical)>button:focus:not(:only-child), +infobar.info>revealer>box button:focus, +infobar.question>revealer>box button:focus, +filechooser #pathbarbox>stack>box>button:focus, +window.dialog.message .dialog-action-area>button:focus, +.app-notification button:focus, +actionbar>revealer>box button:focus:not(.suggested-action):not(.destructive-action), +popover.menu button.model:focus, +.titlebar button:focus:not(.suggested-action):not(.destructive-action), +.toolbar button:focus, +button.flat:focus { + box-shadow: none; + background-color: rgba(158, 158, 158, 0.08); +} + +button.sidebar-button:active, +pathbar.linked:not(.vertical)>button:active, +spinbutton.vertical button:active, +spinbutton:not(.vertical)>button:active, +combobox>.linked:not(.vertical)>button:active:not(:only-child), +infobar.info>revealer>box button:active, +infobar.question>revealer>box button:active, +filechooser #pathbarbox>stack>box>button:active, +window.dialog.message .dialog-action-area>button:active, +.app-notification button:active, +actionbar>revealer>box button:active:not(.suggested-action):not(.destructive-action), +popover.menu button.model:active, +.titlebar button:active:not(.suggested-action):not(.destructive-action), +.toolbar button:active, +button.flat:active { + box-shadow: none; + background-image: radial-gradient(circle, rgba(158, 158, 158, 0.12) 10%, transparent 10%); +} + +button.sidebar-button:disabled, +pathbar.linked:not(.vertical)>button:disabled, +spinbutton.vertical button:disabled, +spinbutton:not(.vertical)>button:disabled, +combobox>.linked:not(.vertical)>button:disabled:not(:only-child), +infobar.info>revealer>box button:disabled, +infobar.question>revealer>box button:disabled, +filechooser #pathbarbox>stack>box>button:disabled, +window.dialog.message .dialog-action-area>button:disabled, +.app-notification button:disabled, +actionbar>revealer>box button:disabled:not(.suggested-action):not(.destructive-action), +popover.menu button.model:disabled, +.titlebar button:disabled:not(.suggested-action):not(.destructive-action), +.toolbar button:disabled, +button.flat:disabled { + background-color: transparent; + color: rgba(158, 158, 158, 0.3); +} + +combobox>.linked:not(.vertical)>button:checked:not(:only-child), +infobar.info>revealer>box button:checked, +infobar.question>revealer>box button:checked, +filechooser #pathbarbox>stack>box>button:checked, +window.dialog.message .dialog-action-area>button:checked, +.app-notification button:checked, +actionbar>revealer>box button:checked:not(.suggested-action):not(.destructive-action), +popover.menu button.model:checked, +.titlebar button:checked:not(.suggested-action):not(.destructive-action), +.toolbar button:checked, +button.flat:checked { + color: #387db7; + box-shadow: none; + background-color: rgba(56, 125, 183, 0.16); +} + +combobox>.linked:not(.vertical)>button:checked:drop(active):not(:only-child), +infobar.info>revealer>box button:checked:drop(active), +infobar.question>revealer>box button:checked:drop(active), +filechooser #pathbarbox>stack>box>button:checked:drop(active), +window.dialog.message .dialog-action-area>button:checked:drop(active), +.app-notification button:checked:drop(active), +actionbar>revealer>box button:checked:drop(active):not(.suggested-action):not(.destructive-action), +popover.menu button.model:checked:drop(active), +.titlebar button:checked:drop(active):not(.suggested-action):not(.destructive-action), +.toolbar button:checked:drop(active), +button.flat:checked:drop(active), +combobox>.linked:not(.vertical)>button:checked:hover:not(:only-child), +infobar.info>revealer>box button:checked:hover, +infobar.question>revealer>box button:checked:hover, +filechooser #pathbarbox>stack>box>button:checked:hover, +window.dialog.message .dialog-action-area>button:checked:hover, +.app-notification button:checked:hover, +actionbar>revealer>box button:checked:hover:not(.suggested-action):not(.destructive-action), +popover.menu button.model:checked:hover, +.titlebar button:checked:hover:not(.suggested-action):not(.destructive-action), +.toolbar button:checked:hover, +button.flat:checked:hover { + box-shadow: none; + background-color: rgba(56, 125, 183, 0.2608); +} + +combobox>.linked:not(.vertical)>button:checked:focus:not(:only-child), +infobar.info>revealer>box button:checked:focus, +infobar.question>revealer>box button:checked:focus, +filechooser #pathbarbox>stack>box>button:checked:focus, +window.dialog.message .dialog-action-area>button:checked:focus, +.app-notification button:checked:focus, +actionbar>revealer>box button:checked:focus:not(.suggested-action):not(.destructive-action), +popover.menu button.model:checked:focus, +.titlebar button:checked:focus:not(.suggested-action):not(.destructive-action), +.toolbar button:checked:focus, +button.flat:checked:focus { + box-shadow: none; + background-color: rgba(56, 125, 183, 0.2608); +} + +combobox>.linked:not(.vertical)>button:checked:active:not(:only-child), +infobar.info>revealer>box button:checked:active, +infobar.question>revealer>box button:checked:active, +filechooser #pathbarbox>stack>box>button:checked:active, +window.dialog.message .dialog-action-area>button:checked:active, +.app-notification button:checked:active, +actionbar>revealer>box button:checked:active:not(.suggested-action):not(.destructive-action), +popover.menu button.model:checked:active, +.titlebar button:checked:active:not(.suggested-action):not(.destructive-action), +.toolbar button:checked:active, +button.flat:checked:active { + box-shadow: none; + background-image: radial-gradient(circle, rgba(56, 125, 183, 0.16) 10%, transparent 10%); +} + +combobox>.linked:not(.vertical)>button:checked:disabled:not(:only-child), +infobar.info>revealer>box button:checked:disabled, +infobar.question>revealer>box button:checked:disabled, +filechooser #pathbarbox>stack>box>button:checked:disabled, +window.dialog.message .dialog-action-area>button:checked:disabled, +.app-notification button:checked:disabled, +actionbar>revealer>box button:checked:disabled:not(.suggested-action):not(.destructive-action), +popover.menu button.model:checked:disabled, +.titlebar button:checked:disabled:not(.suggested-action):not(.destructive-action), +.toolbar button:checked:disabled, +button.flat:checked:disabled { + color: rgba(158, 158, 158, 0.5); +} + +infobar.info>revealer>box button.text-button, +infobar.question>revealer>box button.text-button, +filechooser #pathbarbox>stack>box>button.text-button, +window.dialog.message .dialog-action-area>button.text-button, +.app-notification button.text-button, +actionbar>revealer>box button.text-button:not(.suggested-action):not(.destructive-action), +popover.menu button.text-button.model, +.titlebar button.text-button:not(.suggested-action):not(.destructive-action), +.toolbar button.text-button, +button.flat.text-button { + min-width: 48px; + padding-left: 8px; + padding-right: 8px; +} + +infobar.info>revealer>box button.text-button.image-button, +infobar.question>revealer>box button.text-button.image-button, +filechooser #pathbarbox>stack>box>button.text-button.image-button, +window.dialog.message .dialog-action-area>button.text-button.image-button, +.app-notification button.text-button.image-button, +actionbar>revealer>box button.text-button.image-button:not(.suggested-action):not(.destructive-action), +popover.menu button.text-button.image-button.model, +.titlebar button.text-button.image-button:not(.suggested-action):not(.destructive-action), +.toolbar button.text-button.image-button, +button.flat.text-button.image-button { + min-width: 24px; + padding: 4px; +} + +infobar.info>revealer>box button.text-button.image-button label:first-child, +infobar.question>revealer>box button.text-button.image-button label:first-child, +filechooser #pathbarbox>stack>box>button.text-button.image-button label:first-child, +window.dialog.message .dialog-action-area>button.text-button.image-button label:first-child, +.app-notification button.text-button.image-button label:first-child, +actionbar>revealer>box button.text-button.image-button:not(.suggested-action):not(.destructive-action) label:first-child, +popover.menu button.text-button.image-button.model label:first-child, +.titlebar button.text-button.image-button:not(.suggested-action):not(.destructive-action) label:first-child, +.toolbar button.text-button.image-button label:first-child, +button.flat.text-button.image-button label:first-child { + margin-left: 8px; +} + +infobar.info>revealer>box button.text-button.image-button label:last-child, +infobar.question>revealer>box button.text-button.image-button label:last-child, +filechooser #pathbarbox>stack>box>button.text-button.image-button label:last-child, +window.dialog.message .dialog-action-area>button.text-button.image-button label:last-child, +.app-notification button.text-button.image-button label:last-child, +actionbar>revealer>box button.text-button.image-button:not(.suggested-action):not(.destructive-action) label:last-child, +popover.menu button.text-button.image-button.model label:last-child, +.titlebar button.text-button.image-button:not(.suggested-action):not(.destructive-action) label:last-child, +.toolbar button.text-button.image-button label:last-child, +button.flat.text-button.image-button label:last-child { + margin-right: 8px; +} + +infobar.info>revealer>box .linked:not(.vertical)>button:not(:only-child), +infobar.question>revealer>box .linked:not(.vertical)>button:not(:only-child), +filechooser #pathbarbox>stack>box.linked:not(.vertical)>button:not(:only-child), +window.dialog.message .dialog-action-area.linked:not(.vertical)>button:not(:only-child), +.app-notification .linked:not(.vertical)>button:not(:only-child), +actionbar>revealer>box .linked:not(.vertical)>button:not(:only-child):not(.suggested-action):not(.destructive-action), +popover.menu .linked:not(.vertical)>button.model:not(:only-child), +.titlebar .linked:not(.vertical)>button:not(:only-child):not(.suggested-action):not(.destructive-action), +.toolbar .linked:not(.vertical)>button:not(:only-child), +infobar.info>revealer>box .linked.vertical>button:not(:only-child), +infobar.question>revealer>box .linked.vertical>button:not(:only-child), +filechooser #pathbarbox>stack>box.linked.vertical>button:not(:only-child), +window.dialog.message .dialog-action-area.linked.vertical>button:not(:only-child), +.app-notification .linked.vertical>button:not(:only-child), +actionbar>revealer>box .linked.vertical>button:not(:only-child):not(.suggested-action):not(.destructive-action), +popover.menu .linked.vertical>button.model:not(:only-child), +.titlebar .linked.vertical>button:not(:only-child):not(.suggested-action):not(.destructive-action), +.toolbar .linked.vertical>button:not(:only-child), +.linked:not(.vertical)>button.flat:not(:only-child), +.linked.vertical>button.flat:not(:only-child) { + border-radius: 2px; +} + +infobar.info>revealer>box .linked:not(.vertical)>button:not(:only-child).image-button:not(.text-button), +infobar.question>revealer>box .linked:not(.vertical)>button:not(:only-child).image-button:not(.text-button), +filechooser #pathbarbox>stack>box.linked:not(.vertical)>button:not(:only-child).image-button:not(.text-button), +window.dialog.message .dialog-action-area.linked:not(.vertical)>button:not(:only-child).image-button:not(.text-button), +.app-notification .linked:not(.vertical)>button:not(:only-child).image-button:not(.text-button), +actionbar>revealer>box .linked:not(.vertical)>button:not(:only-child).image-button:not(.text-button):not(.suggested-action):not(.destructive-action), +popover.menu .linked:not(.vertical)>button.model:not(:only-child).image-button:not(.text-button), +.titlebar .linked:not(.vertical)>button:not(:only-child).image-button:not(.text-button):not(.suggested-action):not(.destructive-action), +.toolbar .linked:not(.vertical)>button:not(:only-child).image-button:not(.text-button), +infobar.info>revealer>box .linked.vertical>button:not(:only-child).image-button:not(.text-button), +infobar.question>revealer>box .linked.vertical>button:not(:only-child).image-button:not(.text-button), +filechooser #pathbarbox>stack>box.linked.vertical>button:not(:only-child).image-button:not(.text-button), +window.dialog.message .dialog-action-area.linked.vertical>button:not(:only-child).image-button:not(.text-button), +.app-notification .linked.vertical>button:not(:only-child).image-button:not(.text-button), +actionbar>revealer>box .linked.vertical>button:not(:only-child).image-button:not(.text-button):not(.suggested-action):not(.destructive-action), +popover.menu .linked.vertical>button.model:not(:only-child).image-button:not(.text-button), +.titlebar .linked.vertical>button:not(:only-child).image-button:not(.text-button):not(.suggested-action):not(.destructive-action), +.toolbar .linked.vertical>button:not(:only-child).image-button:not(.text-button), +.linked:not(.vertical)>button.flat:not(:only-child).image-button:not(.text-button), +.linked.vertical>button.flat:not(:only-child).image-button:not(.text-button) { + border-radius: 9999px; +} + +button.osd { + padding: 8px 12px; +} + +button.osd.image-button { + padding: 8px; +} + +button.osd:disabled { + opacity: 0; +} + +button.suggested-action { + background-color: #387db7; + color: #fff; + box-shadow: 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 rgba(0, 0, 0, 0.12); + background-color: #387db7; +} + +button.suggested-action:drop(active), +button.suggested-action:hover { + box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12); + background-color: #4887bd; +} + +button.suggested-action:focus { + box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12); + background-color: #508dc0; +} + +button.suggested-action:active { + box-shadow: 0 5px 5px -3px rgba(0, 0, 0, 0.2), 0 8px 10px 1px rgba(0, 0, 0, 0.14), 0 3px 14px 2px rgba(0, 0, 0, 0.12); + background-image: radial-gradient(circle, rgba(255, 255, 255, 0.12) 10%, transparent 10%); +} + +button.suggested-action:disabled { + box-shadow: none; + background-color: rgba(158, 158, 158, 0.08); + color: rgba(158, 158, 158, 0.5); +} + +button.suggested-action:checked { + background-color: #5892c3; +} + +button.suggested-action.flat { + background-color: transparent; +} + +button.suggested-action.flat:drop(active), +button.suggested-action.flat:hover { + background-color: rgba(56, 125, 183, 0.12); +} + +button.suggested-action.flat:focus { + background-color: rgba(56, 125, 183, 0.12); +} + +button.suggested-action.flat:active { + background-image: radial-gradient(circle, rgba(56, 125, 183, 0.16) 10%, transparent 10%); +} + +button.suggested-action.flat:disabled { + box-shadow: none; + background-color: transparent; + color: rgba(158, 158, 158, 0.3); +} + +button.suggested-action.flat:checked { + background-color: rgba(56, 125, 183, 0.16); +} + +button.destructive-action { + background-color: #f44336; + color: #fff; + box-shadow: 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 rgba(0, 0, 0, 0.12); + background-color: #f44336; +} + +button.destructive-action:drop(active), +button.destructive-action:hover { + box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12); + background-color: #f55246; +} + +button.destructive-action:focus { + box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12); + background-color: #f55a4e; +} + +button.destructive-action:active { + box-shadow: 0 5px 5px -3px rgba(0, 0, 0, 0.2), 0 8px 10px 1px rgba(0, 0, 0, 0.14), 0 3px 14px 2px rgba(0, 0, 0, 0.12); + background-image: radial-gradient(circle, rgba(255, 255, 255, 0.12) 10%, transparent 10%); +} + +button.destructive-action:disabled { + box-shadow: none; + background-color: rgba(158, 158, 158, 0.08); + color: rgba(158, 158, 158, 0.5); +} + +button.destructive-action:checked { + background-color: #f66156; +} + +button.destructive-action.flat { + background-color: transparent; +} + +button.destructive-action.flat:drop(active), +button.destructive-action.flat:hover { + background-color: rgba(244, 67, 54, 0.12); +} + +button.destructive-action.flat:focus { + background-color: rgba(244, 67, 54, 0.12); +} + +button.destructive-action.flat:active { + background-image: radial-gradient(circle, rgba(244, 67, 54, 0.16) 10%, transparent 10%); +} + +button.destructive-action.flat:disabled { + box-shadow: none; + background-color: transparent; + color: rgba(158, 158, 158, 0.3); +} + +button.destructive-action.flat:checked { + background-color: rgba(244, 67, 54, 0.16); +} + +stackswitcher>button>label { + margin: 0 -6px; + padding: 0 6px; +} + +stackswitcher>button>image { + margin: -3px -6px; + padding: 3px 6px; +} + +stackswitcher>button.needs-attention:checked>label, +stackswitcher>button.needs-attention:checked>image { + animation: none; + background-image: none; +} + +button.font>box { + border-spacing: 6px; +} + +button.close, +menubutton.circular>button, +button.circular { + border-radius: 9999px; +} + +button.sidebar-button, +notebook>header>tabs>tab button.flat, +spinbutton:not(.vertical)>button { + min-height: 24px; + min-width: 24px; + padding: 0; + border-radius: 9999px; +} + +stacksidebar.sidebar row.needs-attention>label, +stackswitcher>button.needs-attention>label, +stackswitcher>button.needs-attention>image { + animation: needs-attention 225ms cubic-bezier(0, 0, 0.2, 1) forwards; + background-repeat: no-repeat; + background-position: right 3px; + background-size: 6px 6px; +} + +stacksidebar.sidebar row.needs-attention>label:dir(rtl), +stackswitcher>button.needs-attention>label:dir(rtl), +stackswitcher>button.needs-attention>image:dir(rtl) { + background-position: left 3px; +} + +.linked:not(stackswitcher) { + border-spacing: 4px; +} + +.linked:not(.vertical)>button.radio { + border-radius: 0; +} + +.linked:not(.vertical)>button.radio:first-child { + border-top-left-radius: 2px; + border-bottom-left-radius: 2px; +} + +.linked:not(.vertical)>button.radio:last-child { + border-top-right-radius: 2px; + border-bottom-right-radius: 2px; +} + +.linked:not(.vertical)>button.radio:not(:first-child) { + margin-left: -4px; +} + +.linked.vertical>button.radio { + border-radius: 0; +} + +.linked.vertical>button.radio:first-child { + border-top-left-radius: 2px; + border-top-right-radius: 2px; +} + +.linked.vertical>button.radio:last-child { + border-bottom-left-radius: 2px; + border-bottom-right-radius: 2px; +} + +.linked.vertical>button.radio:not(:first-child) { + margin-top: -4px; +} + +/* menu buttons */ +modelbutton.flat:drop(active), +modelbutton.flat:hover { + background-color: rgba(158, 158, 158, 0.08); +} + +modelbutton.flat:focus { + background-color: rgba(158, 158, 158, 0.08); +} + +modelbutton.flat:active { + background-image: radial-gradient(circle, rgba(158, 158, 158, 0.12) 10%, transparent 10%); +} + +modelbutton.flat arrow { + min-width: 16px; + min-height: 16px; + color: rgba(158, 158, 158, 0.7); +} + +modelbutton.flat arrow:disabled { + color: rgba(158, 158, 158, 0.3); +} + +modelbutton.flat arrow.left { + -gtk-icon-source: -gtk-icontheme("pan-start-symbolic"); +} + +modelbutton.flat arrow.right { + -gtk-icon-source: -gtk-icontheme("pan-end-symbolic"); +} + +button.color { + min-width: 24px; + min-height: 24px; + padding: 4px; +} + +menubutton>button>box>arrow { + min-height: 16px; + min-width: 16px; +} + +menubutton>button>box>arrow.none { + -gtk-icon-source: -gtk-icontheme("open-menu-symbolic"); +} + +menubutton>button>box>arrow.down { + -gtk-icon-source: -gtk-icontheme("pan-down-symbolic"); +} + +menubutton>button>box>arrow.up { + -gtk-icon-source: -gtk-icontheme("pan-up-symbolic"); +} + +menubutton>button>box>arrow.left { + -gtk-icon-source: -gtk-icontheme("pan-start-symbolic"); +} + +menubutton>button>box>arrow.right { + -gtk-icon-source: -gtk-icontheme("pan-end-symbolic"); +} + +/** + * Links + */ +link { + color: #387db7; +} + +link:visited { + color: #673ab7; +} + +button.link { + color: #387db7; +} + +button.link:drop(active), +button.link:hover { + background-color: rgba(56, 125, 183, 0.12); +} + +button.link:focus { + background-color: rgba(56, 125, 183, 0.12); +} + +button.link:active { + background-image: radial-gradient(circle, rgba(56, 125, 183, 0.16) 10%, transparent 10%); +} + +button.link:visited { + color: #673ab7; +} + +button.link:visited:drop(active), +button.link:visited:hover { + background-color: rgba(103, 58, 183, 0.12); +} + +button.link:visited:focus { + background-color: rgba(103, 58, 183, 0.12); +} + +button.link:visited:active { + background-image: radial-gradient(circle, rgba(103, 58, 183, 0.16) 10%, transparent 10%); +} + +button.link>label { + text-decoration-line: underline; +} + +/** + * GtkSpinButton + */ +spinbutton { + font-feature-settings: "tnum"; +} + +spinbutton:not(.vertical)>text { + min-width: 32px; +} + +spinbutton:not(.vertical)>button { + margin: 4px 0; +} + +spinbutton:not(.vertical)>button.up:dir(ltr) { + margin-right: -4px; +} + +spinbutton:not(.vertical)>button.up:dir(rtl) { + margin-left: -4px; +} + +spinbutton.vertical>text { + min-height: 32px; + min-width: 40px; + padding: 0; +} + +spinbutton.vertical>text>selection { + background-color: rgba(56, 125, 183, 0.32); +} + +spinbutton.vertical button { + min-height: 32px; + min-width: 40px; + padding: 0; +} + +spinbutton.vertical button:focus:not(:hover):not(:active) { + box-shadow: inset 0 0 0 9999px transparent; +} + +spinbutton.vertical button.up { + border-radius: 2px 2px 0 0; +} + +spinbutton.vertical button.down { + border-radius: 0 0 2px 2px; +} + +treeview spinbutton:not(.vertical) { + min-height: 0; + border-style: none; + border-radius: 0; +} + +treeview spinbutton:not(.vertical)>text { + min-height: 0; + padding: 1px 2px; +} + +/** + * ComboBoxes + */ +dropdown arrow, +combobox arrow { + min-width: 16px; + min-height: 16px; + -gtk-icon-source: -gtk-icontheme("pan-down-symbolic"); + transition: -gtk-icon-transform 75ms cubic-bezier(0, 0, 0.2, 1); +} + +dropdown button:checked arrow, +combobox button:checked arrow { + color: #387db7; + -gtk-icon-transform: rotate(-0.5turn); +} + +dropdown>button>box { + border-spacing: 6px; +} + +dropdown>popover.menu>contents { + padding: 0; +} + +dropdown>popover.menu>contents listview { + padding: 6px 0; +} + +dropdown>popover.menu>contents listview>row { + min-height: 24px; + padding: 4px 8px; +} + +dropdown>popover.menu>contents listview>row:selected { + background-color: rgba(158, 158, 158, 0.08); +} + +.dropdown-searchbar { + border-bottom: 1px solid rgba(158, 158, 158, 0.2); +} + +.dropdown-searchbar>entry.search { + border-image: none; + border-radius: 0; + box-shadow: none; + background-color: transparent; +} + +combobox>box>button>box { + border-spacing: 6px; +} + +combobox cellview { + margin: -2px; +} + +combobox>popover.menu>contents modelbutton { + padding-left: 8px; + padding-right: 8px; +} + +combobox>.linked:not(.vertical)>entry:not(:only-child):first-child { + margin-right: -36px; + padding-right: 32px; +} + +combobox>.linked:not(.vertical)>entry:not(:only-child):last-child { + margin-left: -36px; + padding-left: 32px; +} + +combobox>.linked:not(.vertical)>button:not(:only-child) { + min-height: 16px; + min-width: 16px; + margin: 4px; + padding: 4px; + border-radius: 9999px; +} + +dropdown>button.toggle, +button.combo:only-child { + padding-left: 8px; + padding-right: 8px; + border-radius: 2px 2px 0 0; + font-weight: normal; + transition: all 75ms cubic-bezier(0, 0, 0.2, 1), border-image 225ms cubic-bezier(0, 0, 0.2, 1); + border-image: radial-gradient(circle closest-corner at center calc(100% - 1px), #387db7 0%, transparent 0%) 2/0 0 0px; + box-shadow: inset 0 -1px rgba(158, 158, 158, 0.3); + background-color: rgba(158, 158, 158, 0.04); + color: #9e9e9e; + caret-color: #387db7; +} + +dropdown>button.toggle:focus, +button.combo:only-child:focus { + box-shadow: inset 0 -1px rgba(158, 158, 158, 0.3); + background-color: rgba(158, 158, 158, 0.1168); +} + +dropdown>button.toggle:drop(active), +dropdown>button.toggle:hover, +button.combo:only-child:drop(active), +button.combo:only-child:hover { + box-shadow: inset 0 -1px rgba(158, 158, 158, 0.3); + background-color: rgba(158, 158, 158, 0.0784); +} + +dropdown>button.toggle:checked, +button.combo:only-child:checked { + border-image: radial-gradient(circle closest-corner at center calc(100% - 1px), #387db7 100%, transparent 100%) 2/0 0 2px; + box-shadow: inset 0 -1px rgba(158, 158, 158, 0.3); + background-color: rgba(158, 158, 158, 0.1168); +} + +dropdown>button.toggle:disabled, +button.combo:only-child:disabled { + box-shadow: inset 0 -1px rgba(158, 158, 158, 0.2); + background-color: rgba(158, 158, 158, 0.04); + color: rgba(158, 158, 158, 0.5); +} + +dropdown>button.toggle arrow, +button.combo:only-child arrow { + transition: color 75ms cubic-bezier(0, 0, 0.2, 1); + color: rgba(158, 158, 158, 0.7); +} + +dropdown>button.toggle arrow:disabled, +button.combo:only-child arrow:disabled { + color: rgba(158, 158, 158, 0.3); +} + +/** + * Toolbars + */ +.toolbar { + padding: 4px; + border-spacing: 4px; +} + +.toolbar.top { + border-bottom: 1px solid rgba(158, 158, 158, 0.2); +} + +.toolbar.bottom { + border-top: 1px solid rgba(158, 158, 158, 0.2); +} + +.toolbar.start { + border-right: 1px solid rgba(158, 158, 158, 0.2); +} + +.toolbar.end { + border-left: 1px solid rgba(158, 158, 158, 0.2); +} + +.toolbar.osd.left, +.toolbar.osd.right, +.toolbar.osd.top, +.toolbar.osd.bottom { + border-radius: 0; +} + +.toolbar.osd.bottom { + box-shadow: none; + background-color: transparent; + background-image: linear-gradient(to bottom, transparent, rgba(0, 0, 0, 0.1) 30%, rgba(0, 0, 0, 0.2) 50%, rgba(0, 0, 0, 0.4)); +} + +.toolbar.horizontal>separator { + margin: 4px 0; +} + +.toolbar.vertical>separator { + margin: 0 4px; +} + +.app-notification, +.toolbar.osd { + transition: box-shadow 75ms cubic-bezier(0, 0, 0.2, 1); + padding: 4px; + border-spacing: 4px; + border-radius: 2px; + box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12), inset 0 1px rgba(255, 255, 255, 0.05); + background-color: #141416; +} + +.app-notification:backdrop, +.toolbar.osd:backdrop { + box-shadow: 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 rgba(0, 0, 0, 0.12), inset 0 1px rgba(255, 255, 255, 0.05); +} + +.inline-toolbar { + padding: 4px; + border-style: solid; + border-width: 0 1px 1px; + border-color: rgba(158, 158, 158, 0.2); + background-color: #1a1c1e; +} + +searchbar>revealer>box { + padding: 4px; + border-spacing: 4px; + border-bottom: 1px solid rgba(158, 158, 158, 0.2); +} + +/** + * Title buttons + */ +windowcontrols { + border-spacing: 4px; +} + +windowcontrols:not(:only-child):not(.empty) { + border-image: linear-gradient(to bottom, transparent 12px, rgba(128, 134, 139, 0.2) 12px, rgba(128, 134, 139, 0.2) calc(100% - 12px), transparent calc(100% - 12px)) 1; +} + +windowcontrols:not(:only-child):not(.empty).start:dir(ltr), +windowcontrols:not(:only-child):not(.empty).end:dir(rtl) { + padding-right: 4px; + border-right: 1px solid; +} + +windowcontrols:not(:only-child):not(.empty).start:dir(rtl), +windowcontrols:not(:only-child):not(.empty).end:dir(ltr) { + padding-left: 4px; + border-left: 1px solid; +} + +/** + * Header bars + */ +.titlebar { + transition: background-color 75ms cubic-bezier(0, 0, 0.2, 1), color 75ms cubic-bezier(0, 0, 0.2, 1); + border-radius: 2px 2px 0 0; + box-shadow: 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 rgba(0, 0, 0, 0.12), inset 0 1px rgba(255, 255, 255, 0.05); + background-color: #09090a; + color: #80868b; +} + +.titlebar:disabled { + color: rgba(128, 134, 139, 0.5); +} + +.titlebar:backdrop { + background-color: #000000; + color: rgba(128, 134, 139, 0.7); +} + +.titlebar:backdrop:disabled { + color: rgba(128, 134, 139, 0.3); +} + +.titlebar box.start, +.titlebar box.end { + border-spacing: 4px; +} + +.titlebar .title { + padding-left: 12px; + padding-right: 12px; + font-weight: bold; +} + +.titlebar .subtitle { + padding-left: 12px; + padding-right: 12px; + font-size: smaller; +} + +.titlebar .subtitle, +.titlebar .dim-label { + transition: color 75ms cubic-bezier(0, 0, 0.2, 1); + color: rgba(128, 134, 139, 0.7); +} + +.titlebar .subtitle:backdrop, +.titlebar .dim-label:backdrop { + color: rgba(128, 134, 139, 0.5); +} + +.titlebar headerbar+separator { + background-color: rgba(128, 134, 139, 0.2); +} + +.titlebar entry { + box-shadow: inset 0 -1px rgba(128, 134, 139, 0.3); + background-color: rgba(128, 134, 139, 0.04); + color: #80868b; +} + +.titlebar entry:disabled { + box-shadow: inset 0 -1px rgba(128, 134, 139, 0.2); + background-color: rgba(128, 134, 139, 0.04); + color: rgba(128, 134, 139, 0.5); +} + +.titlebar entry image { + color: rgba(128, 134, 139, 0.7); +} + +.titlebar entry image:hover, +.titlebar entry image:active { + color: #80868b; +} + +.titlebar entry image:disabled { + color: rgba(128, 134, 139, 0.5); +} + +.titlebar .linked:not(.vertical)>entry:not(:only-child) { + border-radius: 2px 2px 0 0; +} + +.titlebar button:not(.suggested-action):not(.destructive-action) { + border-image: radial-gradient(circle closest-corner at center calc(100% - 1px), currentcolor 0%, transparent 0%) 0 0 0/0 0 0px; + background-color: transparent; + color: rgba(128, 134, 139, 0.7); +} + +.titlebar button:not(.suggested-action):not(.destructive-action):drop(active), +.titlebar button:not(.suggested-action):not(.destructive-action):hover { + background-color: rgba(128, 134, 139, 0.08); +} + +.titlebar button:not(.suggested-action):not(.destructive-action):focus { + background-color: rgba(128, 134, 139, 0.08); +} + +.titlebar button:not(.suggested-action):not(.destructive-action):active { + background-image: radial-gradient(circle, rgba(128, 134, 139, 0.12) 10%, transparent 10%); +} + +.titlebar button:not(.suggested-action):not(.destructive-action):disabled { + color: rgba(128, 134, 139, 0.3); +} + +.titlebar button:not(.suggested-action):not(.destructive-action):checked { + border-image: radial-gradient(circle closest-corner at center calc(100% - 1px), currentcolor 100%, transparent 100%) 0 0 2/0 0 2px; + background-color: transparent; + color: #80868b; +} + +.titlebar button:not(.suggested-action):not(.destructive-action):checked:drop(active), +.titlebar button:not(.suggested-action):not(.destructive-action):checked:hover { + background-color: rgba(128, 134, 139, 0.08); +} + +.titlebar button:not(.suggested-action):not(.destructive-action):checked:focus { + background-color: rgba(128, 134, 139, 0.08); +} + +.titlebar button:not(.suggested-action):not(.destructive-action):checked:active { + background-image: radial-gradient(circle, rgba(128, 134, 139, 0.12) 10%, transparent 10%); +} + +.titlebar button:not(.suggested-action):not(.destructive-action):checked:disabled { + background-color: transparent; + color: rgba(128, 134, 139, 0.5); +} + +.titlebar button:not(.suggested-action):not(.destructive-action):backdrop { + color: rgba(128, 134, 139, 0.5); +} + +.titlebar button:not(.suggested-action):not(.destructive-action):backdrop:disabled { + color: rgba(128, 134, 139, 0.3); +} + +.titlebar button:not(.suggested-action):not(.destructive-action):backdrop:checked { + color: rgba(128, 134, 139, 0.7); +} + +.titlebar button:not(.suggested-action):not(.destructive-action):backdrop:checked:disabled { + color: rgba(128, 134, 139, 0.3); +} + +.titlebar button.suggested-action:disabled, +.titlebar button.destructive-action:disabled { + background-color: rgba(128, 134, 139, 0.08); + color: rgba(128, 134, 139, 0.5); +} + +.titlebar stackswitcher button:not(.suggested-action):not(.destructive-action).text-button { + min-width: 104px; +} + +.titlebar .path-bar button:not(.suggested-action):not(.destructive-action).text-button { + min-width: 0; + padding-left: 4px; + padding-right: 4px; +} + +.titlebar.selection-mode { + transition: background-color 0.1ms 225ms, color 75ms cubic-bezier(0, 0, 0.2, 1); + animation: ripple-on-headerbar 225ms cubic-bezier(0, 0, 0.2, 1); + box-shadow: 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 rgba(0, 0, 0, 0.12), inset 0 1px rgba(255, 255, 255, 0.2); + background-color: #387db7; + color: #fff; +} + +.titlebar.selection-mode:backdrop { + color: rgba(255, 255, 255, 0.7); +} + +.titlebar.selection-mode .subtitle:link { + color: #fff; +} + +.titlebar.selection-mode button:not(.suggested-action):not(.destructive-action) { + border-image: radial-gradient(circle closest-corner at center calc(100% - 1px), currentColor 0%, transparent 0%) 0 0 0/0 0 0px; + color: #fff; +} + +.titlebar.selection-mode button:not(.suggested-action):not(.destructive-action):disabled { + color: rgba(255, 255, 255, 0.5); +} + +.titlebar.selection-mode button:not(.suggested-action):not(.destructive-action):checked { + border-image: radial-gradient(circle closest-corner at center calc(100% - 1px), currentColor 100%, transparent 100%) 0 0 2/0 0 2px; + color: #fff; +} + +.titlebar.selection-mode button:not(.suggested-action):not(.destructive-action):checked:disabled { + color: rgba(255, 255, 255, 0.5); +} + +.titlebar.selection-mode button:not(.suggested-action):not(.destructive-action):backdrop { + color: rgba(255, 255, 255, 0.7); +} + +.titlebar.selection-mode button:not(.suggested-action):not(.destructive-action):backdrop:disabled { + color: rgba(255, 255, 255, 0.3); +} + +.titlebar.selection-mode button:not(.suggested-action):not(.destructive-action):backdrop:checked { + color: rgba(255, 255, 255, 0.7); +} + +.titlebar.selection-mode button:not(.suggested-action):not(.destructive-action):backdrop:checked:disabled { + color: rgba(255, 255, 255, 0.3); +} + +.titlebar.selection-mode .selection-menu { + padding-left: 16px; + padding-right: 16px; +} + +.titlebar.selection-mode .selection-menu .arrow { + -gtk-icon-source: -gtk-icontheme("pan-down-symbolic"); +} + +.titlebar .selection-mode { + box-shadow: inset 0 1px rgba(255, 255, 255, 0.2); + background-color: #387db7; +} + +.tiled .titlebar, +.tiled-top .titlebar, +.tiled-right .titlebar, +.tiled-bottom .titlebar, +.tiled-left .titlebar, +.maximized .titlebar, +.fullscreen .titlebar { + border-radius: 0; + box-shadow: 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 rgba(0, 0, 0, 0.12); +} + +.titlebar.default-decoration { + min-height: 24px; + padding: 4px; + box-shadow: inset 0 1px rgba(255, 255, 255, 0.05); +} + +.tiled .titlebar.default-decoration, +.maximized .titlebar.default-decoration, +.fullscreen .titlebar.default-decoration { + box-shadow: none; +} + +.titlebar.default-decoration button.titlebutton { + min-height: 24px; + min-width: 24px; + margin: 0; + padding: 0; +} + +.background:not(.csd) .titlebar.default-decoration button.titlebutton:active { + background-size: 1000% 1000%; +} + +.solid-csd .titlebar:dir(rtl), +.solid-csd .titlebar:dir(ltr) { + border-radius: 0; + box-shadow: 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 rgba(0, 0, 0, 0.12); +} + +headerbar>windowhandle>box { + min-height: 40px; + padding: 0 4px; + border-spacing: 4px; +} + +headerbar>windowhandle>box entry, +headerbar>windowhandle>box spinbutton, +headerbar>windowhandle>box button { + margin-top: 4px; + margin-bottom: 4px; +} + +headerbar>windowhandle>box separator.titlebutton { + margin-top: 10px; + margin-bottom: 10px; + background-color: rgba(128, 134, 139, 0.2); +} + +headerbar>windowhandle>box switch { + margin-top: 8px; + margin-bottom: 8px; +} + +headerbar>windowhandle>box spinbutton button { + margin-top: 0; + margin-bottom: 0; +} + +headerbar>windowhandle>box .entry-tag { + margin-top: 5px; + margin-bottom: 5px; +} + +/** + * Pathbars + */ +pathbar.linked:not(.vertical)>button { + padding-left: 4px; + padding-right: 4px; + border-image: radial-gradient(circle closest-corner at center calc(100% - 1px), #387db7 0%, transparent 0%) 0 0 0/0 0 0px; + border-radius: 2px; +} + +pathbar.linked:not(.vertical)>button:checked { + border-image: radial-gradient(circle closest-corner at center calc(100% - 1px), #387db7 100%, transparent 100%) 0 0 2/0 0 2px; + color: #9e9e9e; +} + +pathbar.linked:not(.vertical)>button:checked, +pathbar.linked:not(.vertical)>button:checked:disabled { + background-color: transparent; +} + +pathbar.linked:not(.vertical)>button label:not(:only-child):first-child { + margin-left: 0; +} + +pathbar.linked:not(.vertical)>button label:not(:only-child):last-child { + margin-right: 0; +} + +pathbar.linked:not(.vertical)>button.text-button { + min-width: 0; +} + +pathbar.linked:not(.vertical)>button.slider-button { + padding-left: 4px; + padding-right: 4px; +} + +/** + * Tree Views + */ +columnview.view, +treeview.view { + border-left-color: rgba(158, 158, 158, 0.3); + border-top-color: rgba(158, 158, 158, 0.2); +} + +columnview.view.separator, +treeview.view.separator { + min-height: 5px; + color: rgba(158, 158, 158, 0.2); +} + +columnview.view:drop(active), +treeview.view:drop(active) { + box-shadow: none; +} + +columnview.view>dndtarget:drop(active), +treeview.view>dndtarget:drop(active) { + border-style: solid none; + border-width: 9999px; + border-color: rgba(158, 158, 158, 0.08); +} + +columnview.view>dndtarget:drop(active).after, +treeview.view>dndtarget:drop(active).after { + border-top-style: none; +} + +columnview.view>dndtarget:drop(active).before, +treeview.view>dndtarget:drop(active).before { + border-bottom-style: none; +} + +columnview.view.expander, +treeview.view.expander { + min-width: 16px; + min-height: 16px; + -gtk-icon-source: -gtk-icontheme("pan-down-symbolic"); + -gtk-icon-transform: rotate(-90deg); + color: rgba(158, 158, 158, 0.7); +} + +columnview.view.expander:dir(rtl), +treeview.view.expander:dir(rtl) { + -gtk-icon-transform: rotate(90deg); +} + +columnview.view.expander:checked, +treeview.view.expander:checked { + -gtk-icon-transform: unset; +} + +columnview.view.expander:hover, +columnview.view.expander:active, +treeview.view.expander:hover, +treeview.view.expander:active { + color: #9e9e9e; +} + +columnview.view.expander:disabled, +treeview.view.expander:disabled { + color: rgba(158, 158, 158, 0.3); +} + +columnview.view.progressbar, +treeview.view.progressbar { + border-bottom: 4px solid #387db7; + background-color: transparent; +} + +columnview.view.progressbar:selected:hover, +treeview.view.progressbar:selected:hover { + background-color: transparent; +} + +columnview.view.trough, +treeview.view.trough { + border-bottom: 4px solid rgba(158, 158, 158, 0.2); + background-color: transparent; +} + +columnview.view.trough:selected:hover, +treeview.view.trough:selected:hover { + background-color: transparent; +} + +columnview.view>header>button, +treeview.view>header>button { + padding: 2px 6px; + border-style: none solid solid none; + border-width: 1px; + border-color: rgba(158, 158, 158, 0.2); + border-radius: 0; + background-clip: padding-box; + background-color: transparent; + color: rgba(158, 158, 158, 0.7); + box-shadow: none; + background-color: transparent; +} + +columnview.view>header>button:drop(active), +columnview.view>header>button:hover, +treeview.view>header>button:drop(active), +treeview.view>header>button:hover { + box-shadow: none; + background-color: rgba(158, 158, 158, 0.04); +} + +columnview.view>header>button:focus, +treeview.view>header>button:focus { + box-shadow: none; + background-color: rgba(158, 158, 158, 0.08); +} + +columnview.view>header>button:active, +treeview.view>header>button:active { + box-shadow: none; + background-image: radial-gradient(circle, rgba(158, 158, 158, 0.12) 10%, transparent 10%); +} + +columnview.view>header>button:drop(active):not(:active), +columnview.view>header>button:hover:not(:active), +treeview.view>header>button:drop(active):not(:active), +treeview.view>header>button:hover:not(:active) { + transition-property: all, border-image, background-size, background-image, background-color; + transition-duration: 75ms, 225ms, 300ms, 1200ms, 0ms; +} + +columnview.view>header>button:disabled, +treeview.view>header>button:disabled { + color: rgba(158, 158, 158, 0.3); +} + +columnview.view>header>button:last-child, +treeview.view>header>button:last-child { + border-right-style: none; +} + +columnview.view>header>button>box>sort-indicator, +treeview.view>header>button>box>sort-indicator { + min-height: 16px; + min-width: 16px; +} + +columnview.view>header>button>box>sort-indicator.ascending, +treeview.view>header>button>box>sort-indicator.ascending { + -gtk-icon-source: -gtk-icontheme("pan-up-symbolic"); +} + +columnview.view>header>button>box>sort-indicator.descending, +treeview.view>header>button>box>sort-indicator.descending { + -gtk-icon-source: -gtk-icontheme("pan-down-symbolic"); +} + +columnview.view button.dnd, +columnview.view header.button.dnd, +treeview.view button.dnd, +treeview.view header.button.dnd { + padding: 2px 6px; + border-style: none solid solid; + border-width: 1px; + border-color: rgba(158, 158, 158, 0.2); + border-radius: 0; + box-shadow: none; + background-clip: border-box; + color: #387db7; +} + +columnview.view acceleditor>label, +treeview.view acceleditor>label { + background-color: #387db7; +} + +/** + * Menus + */ +menubar { + background-color: #09090a; + color: #80868b; +} + +menubar:backdrop { + background-color: #000000; + color: rgba(128, 134, 139, 0.7); +} + +.csd menubar { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1); +} + +menubar>item { + min-height: 20px; + padding: 4px 8px; + color: rgba(128, 134, 139, 0.7); +} + +menubar>item:hover { + background-color: rgba(128, 134, 139, 0.08); +} + +menubar>item:focus:not(:hover) { + background-color: rgba(128, 134, 139, 0.08); +} + +menubar>item:active { + background-image: radial-gradient(circle, rgba(128, 134, 139, 0.12) 10%, transparent 10%); +} + +menubar>item:selected:not(:focus) { + transition: none; + background-color: rgba(128, 134, 139, 0.12); + color: #80868b; +} + +menubar>item:disabled { + color: rgba(128, 134, 139, 0.3); +} + +popover.menu>contents { + padding: 6px 0; +} + +popover.menu separator { + margin: 6px 0; +} + +popover.menu label.title { + min-height: 24px; + padding: 4px 32px; + font-weight: bold; +} + +popover.menu modelbutton { + min-height: 22px; + min-width: 40px; + padding: 4px 32px; +} + +popover.menu modelbutton:disabled { + color: rgba(158, 158, 158, 0.5); +} + +popover.menu modelbutton accelerator { + color: rgba(158, 158, 158, 0.7); +} + +popover.menu modelbutton accelerator:dir(ltr) { + margin-left: 24px; + margin-right: -16px; +} + +popover.menu modelbutton accelerator:dir(rtl) { + margin-left: -16px; + margin-right: 24px; +} + +popover.menu modelbutton:disabled accelerator { + color: rgba(158, 158, 158, 0.3); +} + +popover.menu check, +popover.menu check:focus, +popover.menu check:hover, +popover.menu check:active, +popover.menu check:disabled, +popover.menu radio, +popover.menu radio:focus, +popover.menu radio:hover, +popover.menu radio:active, +popover.menu radio:disabled { + background-color: transparent; + background-image: none; +} + +popover.menu arrow, +popover.menu check, +popover.menu radio { + min-width: 16px; + min-height: 16px; + margin: 0; + padding: 0; +} + +popover.menu arrow.left, +popover.menu check.left, +popover.menu radio.left { + margin-left: -24px; + margin-right: 8px; +} + +popover.menu arrow.right, +popover.menu check.right, +popover.menu radio.right { + margin-left: 8px; + margin-right: -24px; +} + +popover.menu box.inline-buttons { + padding: 0 8px; +} + +popover.menu box.circular-buttons { + padding: 4px 32px; +} + +popover.menu box.circular-buttons button.circular.image-button.model { + padding: 12px; +} + +/** + * Popovers + */ +popover { + font: initial; +} + +popover.background { + background-color: transparent; +} + +popover>arrow, +popover>contents { + transition: box-shadow 75ms cubic-bezier(0, 0, 0.2, 1); + box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12); + background-color: #141416; + color: #9e9e9e; +} + +popover>arrow:backdrop, +popover>contents:backdrop { + box-shadow: 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 rgba(0, 0, 0, 0.12); +} + +popover>contents, +popover>arrow { + border-width: 1px; + border-style: solid; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.2) rgba(0, 0, 0, 0.3); + background-clip: padding-box; +} + +popover>contents { + padding: 8px; + border-radius: 3px; +} + +popover>contents>list, +popover>contents .view, +popover>contents>.toolbar { + border-style: none; + box-shadow: none; + background-color: transparent; +} + +popover frame, +popover .frame { + border: 1px solid rgba(158, 158, 158, 0.2); + box-shadow: none; + background-color: transparent; +} + +/** + * Notebooks + */ +notebook:focus:focus-visible>header>tabs>tab:checked { + background-color: rgba(56, 125, 183, 0.12); +} + +notebook>header.top { + box-shadow: inset 0 -1px rgba(158, 158, 158, 0.2); +} + +notebook>header.top>tabs>tab { + box-shadow: inset 0 -2px transparent; +} + +notebook>header.top>tabs>tab:checked { + box-shadow: inset 0 -2px #387db7; +} + +notebook>header.bottom { + box-shadow: inset 0 1px rgba(158, 158, 158, 0.2); +} + +notebook>header.bottom>tabs>tab { + box-shadow: inset 0 2px transparent; +} + +notebook>header.bottom>tabs>tab:checked { + box-shadow: inset 0 2px #387db7; +} + +notebook>header.left { + box-shadow: inset -1px 0 rgba(158, 158, 158, 0.2); +} + +notebook>header.left>tabs>tab { + box-shadow: inset -2px 0 transparent; +} + +notebook>header.left>tabs>tab:checked { + box-shadow: inset -2px 0 #387db7; +} + +notebook>header.right { + box-shadow: inset 1px 0 rgba(158, 158, 158, 0.2); +} + +notebook>header.right>tabs>tab { + box-shadow: inset 2px 0 transparent; +} + +notebook>header.right>tabs>tab:checked { + box-shadow: inset 2px 0 #387db7; +} + +notebook>header.top>tabs>arrow.down, +notebook>header.bottom>tabs>arrow.down { + -gtk-icon-source: -gtk-icontheme("pan-start-symbolic"); +} + +notebook>header.top>tabs>arrow.up, +notebook>header.bottom>tabs>arrow.up { + -gtk-icon-source: -gtk-icontheme("pan-end-symbolic"); +} + +notebook>header.left>tabs>arrow.down, +notebook>header.right>tabs>arrow.down { + -gtk-icon-source: -gtk-icontheme("pan-up-symbolic"); +} + +notebook>header.left>tabs>arrow.up, +notebook>header.right>tabs>arrow.up { + -gtk-icon-source: -gtk-icontheme("pan-down-symbolic"); +} + +notebook>header>tabs>arrow { + min-height: 16px; + min-width: 16px; + padding: 4px; + border-radius: 0; + color: rgba(158, 158, 158, 0.7); +} + +notebook>header>tabs>arrow:drop(active), +notebook>header>tabs>arrow:hover { + background-color: rgba(158, 158, 158, 0.04); +} + +notebook>header>tabs>arrow:focus { + background-color: rgba(158, 158, 158, 0.08); +} + +notebook>header>tabs>arrow:active { + background-image: radial-gradient(circle, rgba(158, 158, 158, 0.12) 10%, transparent 10%); +} + +notebook>header>tabs>arrow:disabled { + color: rgba(158, 158, 158, 0.3); +} + +notebook>header>tabs>tab { + min-height: 24px; + min-width: 24px; + padding: 4px 12px; + color: rgba(158, 158, 158, 0.7); + font-weight: 500; +} + +notebook>header>tabs>tab:drop(active), +notebook>header>tabs>tab:hover { + background-color: rgba(158, 158, 158, 0.04); +} + +notebook>header>tabs>tab:focus { + background-color: rgba(158, 158, 158, 0.08); +} + +notebook>header>tabs>tab:active { + background-image: radial-gradient(circle, rgba(158, 158, 158, 0.12) 10%, transparent 10%); +} + +notebook>header>tabs>tab:disabled { + color: rgba(158, 158, 158, 0.3); +} + +notebook>header>tabs>tab:checked { + color: #387db7; +} + +notebook>header>tabs>tab:checked:drop(active), +notebook>header>tabs>tab:checked:hover { + background-color: rgba(56, 125, 183, 0.08); +} + +notebook>header>tabs>tab:checked:focus { + background-color: rgba(56, 125, 183, 0.12); +} + +notebook>header>tabs>tab:checked:active { + background-image: radial-gradient(circle, rgba(56, 125, 183, 0.16) 10%, transparent 10%); +} + +notebook>header>tabs>tab:checked:disabled { + color: rgba(158, 158, 158, 0.3); +} + +notebook>header>tabs>tab>box { + transition: background-color 75ms cubic-bezier(0, 0, 0.2, 1); + margin: -4px -12px; + padding: 4px 12px; +} + +notebook>header>tabs>tab>box:drop(active) { + background-color: rgba(158, 158, 158, 0.08); +} + +notebook>header>tabs>tab button.flat:last-child { + margin-left: 4px; + margin-right: -8px; +} + +notebook>header>tabs>tab button.flat:first-child { + margin-left: -8px; + margin-right: 4px; +} + +/** + * Scrollbars + */ +scrollbar { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1); + background-clip: padding-box; +} + +scrollbar.top { + border-bottom: 1px solid rgba(158, 158, 158, 0.2); +} + +scrollbar.bottom { + border-top: 1px solid rgba(158, 158, 158, 0.2); +} + +scrollbar.left { + border-right: 1px solid rgba(158, 158, 158, 0.2); +} + +scrollbar.right { + border-left: 1px solid rgba(158, 158, 158, 0.2); +} + +scrollbar>range>trough>slider { + transition: background-color 75ms cubic-bezier(0, 0, 0.2, 1); + min-width: 10px; + min-height: 10px; + border: 3px solid transparent; + border-radius: 9999px; + background-clip: padding-box; + background-color: rgba(158, 158, 158, 0.5); +} + +scrollbar>range>trough>slider:hover { + background-color: rgba(158, 158, 158, 0.6); +} + +scrollbar>range>trough>slider:active { + background-color: rgba(158, 158, 158, 0.7); +} + +scrollbar>range>trough>slider:disabled { + background-color: rgba(158, 158, 158, 0.3); +} + +scrollbar.horizontal>range>trough>slider { + min-width: 24px; +} + +scrollbar.vertical>range>trough>slider { + min-height: 24px; +} + +scrollbar>range.fine-tune>trough>slider { + min-width: 4px; + min-height: 4px; +} + +scrollbar>range.fine-tune.horizontal>trough>slider { + margin: 3px 0; +} + +scrollbar>range.fine-tune.vertical>trough>slider { + margin: 0 3px; +} + +scrollbar.overlay-indicator>range:not(.fine-tune)>trough>slider { + transition-property: background-color, min-height, min-width; +} + +scrollbar.overlay-indicator:not(.dragging):not(.hovering) { + border-color: transparent; + background-color: transparent; +} + +scrollbar.overlay-indicator:not(.dragging):not(.hovering)>range>trough>slider { + min-width: 4px; + min-height: 4px; + margin: 2px; + border: 1px solid rgba(26, 28, 30, 0.3); +} + +scrollbar.overlay-indicator:not(.dragging):not(.hovering).horizontal>range>trough>slider { + min-width: 24px; +} + +scrollbar.overlay-indicator:not(.dragging):not(.hovering).vertical>range>trough>slider { + min-height: 24px; +} + +scrollbar.overlay-indicator.dragging, +scrollbar.overlay-indicator.hovering { + background-color: #141416; +} + +/** + * Switch + */ +switch { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1); + margin: 4px 0; + padding: 0 2px; + border: 5px solid transparent; + border-radius: 9999px; + background-color: rgba(158, 158, 158, 0.3); + background-clip: padding-box; + font-size: 0; +} + +switch:checked { + background-color: rgba(56, 125, 183, 0.5); +} + +switch:disabled { + opacity: 0.5; +} + +switch>image { + margin: -8px; + -gtk-icon-transform: scale(0); +} + +switch>slider { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1); + min-width: 20px; + min-height: 20px; + margin: -3px -2px; + border-radius: 9999px; + box-shadow: 0 0 0 10px transparent, 0 0 0 -10px rgba(158, 158, 158, 0.12), 0 2px 1px -1px rgba(0, 0, 0, 0.2), 0 1px 1px 0 rgba(0, 0, 0, 0.14), 0 1px 3px 0 rgba(0, 0, 0, 0.12); + background-color: #141416; +} + +switch:hover>slider { + box-shadow: 0 0 0 10px rgba(158, 158, 158, 0.08), 0 0 0 -10px rgba(158, 158, 158, 0.12), 0 2px 1px -1px rgba(0, 0, 0, 0.2), 0 1px 1px 0 rgba(0, 0, 0, 0.14), 0 1px 3px 0 rgba(0, 0, 0, 0.12); +} + +switch:focus>slider { + box-shadow: 0 0 0 10px rgba(158, 158, 158, 0.08), 0 0 0 -10px rgba(158, 158, 158, 0.12), 0 2px 1px -1px rgba(0, 0, 0, 0.2), 0 1px 1px 0 rgba(0, 0, 0, 0.14), 0 1px 3px 0 rgba(0, 0, 0, 0.12); +} + +switch:active>slider { + box-shadow: 0 0 0 10px rgba(158, 158, 158, 0.08), 0 0 0 10px rgba(158, 158, 158, 0.12), 0 2px 1px -1px rgba(0, 0, 0, 0.2), 0 1px 1px 0 rgba(0, 0, 0, 0.14), 0 1px 3px 0 rgba(0, 0, 0, 0.12); +} + +switch:checked>slider { + background-color: #387db7; +} + +switch:checked:hover>slider { + box-shadow: 0 0 0 10px rgba(56, 125, 183, 0.12), 0 0 0 -10px rgba(56, 125, 183, 0.16), 0 2px 1px -1px rgba(0, 0, 0, 0.2), 0 1px 1px 0 rgba(0, 0, 0, 0.14), 0 1px 3px 0 rgba(0, 0, 0, 0.12); +} + +switch:checked:focus>slider { + box-shadow: 0 0 0 10px rgba(56, 125, 183, 0.12), 0 0 0 -10px rgba(56, 125, 183, 0.16), 0 2px 1px -1px rgba(0, 0, 0, 0.2), 0 1px 1px 0 rgba(0, 0, 0, 0.14), 0 1px 3px 0 rgba(0, 0, 0, 0.12); +} + +switch:checked:active>slider { + box-shadow: 0 0 0 10px rgba(56, 125, 183, 0.12), 0 0 0 10px rgba(56, 125, 183, 0.16), 0 2px 1px -1px rgba(0, 0, 0, 0.2), 0 1px 1px 0 rgba(0, 0, 0, 0.14), 0 1px 3px 0 rgba(0, 0, 0, 0.12); +} + +/** + * Check and Radio items + */ +.view.content-view.check:not(list), +.content-view:not(list) .tile check { + min-height: 40px; + min-width: 40px; + margin: 0; + padding: 0; + background-color: transparent; + background-image: none; + -gtk-icon-shadow: 0 1px 1px rgba(0, 0, 0, 0.2), 0 2px 2px rgba(0, 0, 0, 0.14), 0 1px 5px rgba(0, 0, 0, 0.12); +} + +.view.content-view.check:not(list):hover, +.view.content-view.check:not(list):active, +.content-view:not(list) .tile check:hover, +.content-view:not(list) .tile check:active { + -gtk-icon-shadow: 0 2px 3px rgba(0, 0, 0, 0.2), 0 4px 5px rgba(0, 0, 0, 0.14), 0 1px 10px rgba(0, 0, 0, 0.12); +} + +.view.content-view.check:not(list), +.content-view:not(list) .tile check { + -gtk-icon-source: -gtk-scaled(url("assets/selectionmode-checkbox-unchecked-dark.png"), url("assets/selectionmode-checkbox-unchecked-dark@2.png")); +} + +.view.content-view.check:not(list):checked, +.content-view:not(list) .tile check:checked { + -gtk-icon-source: -gtk-scaled(url("assets/selectionmode-checkbox-checked-dark.png"), url("assets/selectionmode-checkbox-checked-dark@2.png")); +} + +checkbutton, +radiobutton { + border-spacing: 4px; +} + +checkbutton.text-button, +radiobutton.text-button { + padding: 4px; +} + +check, +radio { + min-height: 24px; + min-width: 24px; + margin: -8px; + padding: 8px; + border-radius: 9999px; + color: rgba(158, 158, 158, 0.7); +} + +check:drop(active), +check:hover, +radio:drop(active), +radio:hover { + background-color: rgba(158, 158, 158, 0.08); +} + +check:focus, +radio:focus { + background-color: rgba(158, 158, 158, 0.08); +} + +check:active, +radio:active { + background-image: radial-gradient(circle, rgba(158, 158, 158, 0.12) 10%, transparent 10%); +} + +check:checked, +check:indeterminate, +radio:checked, +radio:indeterminate { + color: #387db7; +} + +check:checked:drop(active), +check:checked:hover, +check:indeterminate:drop(active), +check:indeterminate:hover, +radio:checked:drop(active), +radio:checked:hover, +radio:indeterminate:drop(active), +radio:indeterminate:hover { + background-color: rgba(56, 125, 183, 0.12); +} + +check:checked:focus, +check:indeterminate:focus, +radio:checked:focus, +radio:indeterminate:focus { + background-color: rgba(56, 125, 183, 0.12); +} + +check:checked:active, +check:indeterminate:active, +radio:checked:active, +radio:indeterminate:active { + background-image: radial-gradient(circle, rgba(56, 125, 183, 0.16) 10%, transparent 10%); +} + +check:disabled, +radio:disabled { + color: rgba(158, 158, 158, 0.3); +} + +check { + -gtk-icon-source: -gtk-recolor(url("icons/checkbox-unchecked-symbolic.svg")); +} + +check:checked { + -gtk-icon-source: -gtk-recolor(url("icons/checkbox-checked-symbolic.svg")); +} + +check:indeterminate { + -gtk-icon-source: -gtk-recolor(url("icons/checkbox-mixed-symbolic.svg")); +} + +radio { + -gtk-icon-source: -gtk-recolor(url("icons/radio-unchecked-symbolic.svg")); + border-image-slice: 20; + border-image-width: 20px; + border-image-source: radial-gradient(circle, #387db7 0%, transparent 0%); +} + +radio:indeterminate { + -gtk-icon-source: -gtk-recolor(url("icons/radio-mixed-symbolic.svg")); +} + +radio:checked:not(:indeterminate) { + border-image-source: radial-gradient(circle, #387db7 4.5px, transparent 5px); +} + +radio:checked:not(:indeterminate):disabled { + border-image-source: radial-gradient(circle, rgba(158, 158, 158, 0.3) 4.5px, transparent 5px); +} + +popover.menu modelbutton check { + min-height: 16px; + min-width: 16px; + border-radius: 2px; + -gtk-icon-source: -gtk-recolor(url("icons/small-checkbox-unchecked-symbolic.svg")); +} + +popover.menu modelbutton check:checked { + -gtk-icon-source: -gtk-recolor(url("icons/small-checkbox-checked-symbolic.svg")); +} + +popover.menu modelbutton check:indeterminate { + -gtk-icon-source: -gtk-recolor(url("icons/small-checkbox-mixed-symbolic.svg")); +} + +popover.menu modelbutton radio { + min-height: 16px; + min-width: 16px; + border-image: none; + -gtk-icon-source: -gtk-recolor(url("icons/small-radio-unchecked-symbolic.svg")); +} + +popover.menu modelbutton radio:checked { + -gtk-icon-source: -gtk-recolor(url("icons/small-radio-checked-symbolic.svg")); +} + +popover.menu modelbutton radio:indeterminate { + -gtk-icon-source: -gtk-recolor(url("icons/small-radio-mixed-symbolic.svg")); +} + +treeview.view check, +treeview.view radio { + padding: 0; + color: rgba(158, 158, 158, 0.7); +} + +treeview.view check:checked, +treeview.view check:indeterminate, +treeview.view radio:checked, +treeview.view radio:indeterminate { + color: #387db7; +} + +treeview.view check:disabled, +treeview.view radio:disabled { + color: rgba(158, 158, 158, 0.3); +} + +treeview.view check, +treeview.view check:hover, +treeview.view check:selected, +treeview.view check:selected:hover, +treeview.view radio, +treeview.view radio:hover, +treeview.view radio:selected, +treeview.view radio:selected:hover { + background-color: transparent; +} + +treeview.view radio:checked { + -gtk-icon-source: -gtk-recolor(url("icons/radio-checked-symbolic.svg")); + border-image: none; +} + +/** + * GtkScale + */ +scale { + min-height: 2px; + min-width: 2px; +} + +scale.horizontal { + padding: 15px 12px; +} + +scale.vertical { + padding: 12px 15px; +} + +scale.fine-tune.horizontal { + min-height: 4px; + padding-top: 14px; + padding-bottom: 14px; +} + +scale.fine-tune.vertical { + min-width: 4px; + padding-left: 14px; + padding-right: 14px; +} + +scale.fine-tune>trough>slider { + margin: -14px; +} + +scale>trough { + transition: background-color 75ms cubic-bezier(0, 0, 0.2, 1); + background-color: rgba(158, 158, 158, 0.3); +} + +scale>trough:disabled { + background-color: rgba(158, 158, 158, 0.2); +} + +scale>trough>highlight { + transition: background-image 75ms cubic-bezier(0, 0, 0.2, 1); + background-image: image(#387db7); +} + +scale>trough>highlight:disabled { + background-color: #0f1011; + background-image: image(rgba(158, 158, 158, 0.3)); +} + +scale>trough>fill { + transition: background-color 75ms cubic-bezier(0, 0, 0.2, 1); + background-color: rgba(158, 158, 158, 0.3); +} + +scale>trough>fill:disabled { + background-color: transparent; +} + +scale>trough>slider { + transition: background-color 75ms cubic-bezier(0, 0, 0.2, 1), background-size 300ms cubic-bezier(0, 0, 0.2, 1), background-image 1200ms cubic-bezier(0, 0, 0.2, 1); + min-width: 32px; + min-height: 32px; + margin: -15px; + border-radius: 50%; + background-repeat: no-repeat; + background-position: center; + background-size: auto, 1000% 1000%; + color: #387db7; +} + +scale>trough>slider { + background-image: -gtk-scaled(url("assets/scale-slider-dark.png"), url("assets/scale-slider-dark@2.png")), radial-gradient(circle, transparent 10%, transparent 10%); +} + +scale>trough>slider:disabled { + background-image: -gtk-scaled(url("assets/scale-slider-disabled-dark.png"), url("assets/scale-slider-disabled-dark@2.png")), radial-gradient(circle, transparent 10%, transparent 10%); +} + +scale>trough>slider:hover { + background-color: rgba(56, 125, 183, 0.12); +} + +scale>trough>slider:focus { + background-color: rgba(56, 125, 183, 0.12); +} + +scale>trough>slider:active { + transition: background-color 75ms cubic-bezier(0, 0, 0.2, 1), background-size 0ms, background-image 0ms; + animation: ripple-on-slider 225ms cubic-bezier(0, 0, 0.2, 1) forwards; + background-image: -gtk-scaled(url("assets/scale-slider-dark.png"), url("assets/scale-slider-dark@2.png")), radial-gradient(circle, rgba(56, 125, 183, 0.16) 10%, transparent 10%); + background-size: auto, 0% 0%; +} + +scale>marks, +scale>value { + color: rgba(158, 158, 158, 0.7); +} + +scale>value { + font-feature-settings: "tnum"; +} + +scale indicator { + background-color: rgba(158, 158, 158, 0.3); +} + +scale.horizontal>marks.top { + margin-bottom: 7px; + margin-top: -15px; +} + +scale.horizontal.fine-tune>marks.top { + margin-bottom: 6px; + margin-top: -14px; +} + +scale.horizontal>marks.bottom { + margin-top: 7px; + margin-bottom: -15px; +} + +scale.horizontal.fine-tune>marks.bottom { + margin-top: 6px; + margin-bottom: -14px; +} + +scale.vertical>marks.top { + margin-right: 7px; + margin-left: -15px; +} + +scale.vertical.fine-tune>marks.top { + margin-right: 6px; + margin-left: -14px; +} + +scale.vertical>marks.bottom { + margin-left: 7px; + margin-right: -15px; +} + +scale.vertical.fine-tune>marks.bottom { + margin-left: 6px; + margin-right: -14px; +} + +scale.horizontal indicator { + min-height: 8px; + min-width: 1px; +} + +scale.vertical indicator { + min-height: 1px; + min-width: 8px; +} + +scale.horizontal.marks-before:not(.marks-after)>trough>slider { + background-image: -gtk-scaled(url("assets/scale-horz-marks-before-slider-dark.png"), url("assets/scale-horz-marks-before-slider-dark@2.png")), radial-gradient(circle, transparent 10%, transparent 10%); +} + +scale.horizontal.marks-before:not(.marks-after)>trough>slider:disabled { + background-image: -gtk-scaled(url("assets/scale-horz-marks-before-slider-disabled-dark.png"), url("assets/scale-horz-marks-before-slider-disabled-dark@2.png")), radial-gradient(circle, transparent 10%, transparent 10%); +} + +scale.horizontal.marks-before:not(.marks-after)>trough>slider:active { + background-image: -gtk-scaled(url("assets/scale-horz-marks-before-slider-dark.png"), url("assets/scale-horz-marks-before-slider-dark@2.png")), radial-gradient(circle, rgba(56, 125, 183, 0.16) 10%, transparent 10%); +} + +scale.horizontal.marks-after:not(.marks-before)>trough>slider { + background-image: -gtk-scaled(url("assets/scale-horz-marks-after-slider-dark.png"), url("assets/scale-horz-marks-after-slider-dark@2.png")), radial-gradient(circle, transparent 10%, transparent 10%); +} + +scale.horizontal.marks-after:not(.marks-before)>trough>slider:disabled { + background-image: -gtk-scaled(url("assets/scale-horz-marks-after-slider-disabled-dark.png"), url("assets/scale-horz-marks-after-slider-disabled-dark@2.png")), radial-gradient(circle, transparent 10%, transparent 10%); +} + +scale.horizontal.marks-after:not(.marks-before)>trough>slider:active { + background-image: -gtk-scaled(url("assets/scale-horz-marks-after-slider-dark.png"), url("assets/scale-horz-marks-after-slider-dark@2.png")), radial-gradient(circle, rgba(56, 125, 183, 0.16) 10%, transparent 10%); +} + +scale.vertical.marks-before:not(.marks-after)>trough>slider { + background-image: -gtk-scaled(url("assets/scale-vert-marks-before-slider-dark.png"), url("assets/scale-vert-marks-before-slider-dark@2.png")), radial-gradient(circle, transparent 10%, transparent 10%); +} + +scale.vertical.marks-before:not(.marks-after)>trough>slider:disabled { + background-image: -gtk-scaled(url("assets/scale-vert-marks-before-slider-disabled-dark.png"), url("assets/scale-vert-marks-before-slider-disabled-dark@2.png")), radial-gradient(circle, transparent 10%, transparent 10%); +} + +scale.vertical.marks-before:not(.marks-after)>trough>slider:active { + background-image: -gtk-scaled(url("assets/scale-vert-marks-before-slider-dark.png"), url("assets/scale-vert-marks-before-slider-dark@2.png")), radial-gradient(circle, rgba(56, 125, 183, 0.16) 10%, transparent 10%); +} + +scale.vertical.marks-after:not(.marks-before)>trough>slider { + background-image: -gtk-scaled(url("assets/scale-vert-marks-after-slider-dark.png"), url("assets/scale-vert-marks-after-slider-dark@2.png")), radial-gradient(circle, transparent 10%, transparent 10%); +} + +scale.vertical.marks-after:not(.marks-before)>trough>slider:disabled { + background-image: -gtk-scaled(url("assets/scale-vert-marks-after-slider-disabled-dark.png"), url("assets/scale-vert-marks-after-slider-disabled-dark@2.png")), radial-gradient(circle, transparent 10%, transparent 10%); +} + +scale.vertical.marks-after:not(.marks-before)>trough>slider:active { + background-image: -gtk-scaled(url("assets/scale-vert-marks-after-slider-dark.png"), url("assets/scale-vert-marks-after-slider-dark@2.png")), radial-gradient(circle, rgba(56, 125, 183, 0.16) 10%, transparent 10%); +} + +scale.color { + min-height: 0; + min-width: 0; +} + +scale.color.horizontal:dir(ltr), +scale.color.horizontal:dir(rtl) { + padding: 0 0 12px 0; +} + +scale.color.horizontal:dir(ltr) slider, +scale.color.horizontal:dir(rtl) slider { + margin-bottom: -24px; + margin-top: 8px; +} + +scale.color.vertical:dir(ltr) { + padding: 0 0 0 12px; +} + +scale.color.vertical:dir(ltr) slider { + margin-left: -24px; + margin-right: 8px; +} + +scale.color.vertical:dir(rtl) { + padding: 0 12px 0 0; +} + +scale.color.vertical:dir(rtl) slider { + margin-right: -24px; + margin-left: 8px; +} + +/** + * Progress bars + */ +progressbar { + color: rgba(158, 158, 158, 0.7); + font-size: smaller; + font-feature-settings: "tnum"; +} + +progressbar>trough { + background-color: rgba(158, 158, 158, 0.2); +} + +progressbar>trough>progress { + background-color: #387db7; +} + +progressbar.horizontal>trough { + min-width: 150px; +} + +progressbar.horizontal>trough, +progressbar.horizontal>trough>progress { + min-height: 4px; +} + +progressbar.vertical>trough { + min-height: 80px; +} + +progressbar.vertical>trough, +progressbar.vertical>trough>progress { + min-width: 4px; +} + +progressbar>trough.empty>progress { + all: unset; +} + +/** + * Level Bar + */ +levelbar.horizontal>trough>block { + min-height: 4px; +} + +levelbar.horizontal.discrete>trough>block { + min-width: 32px; +} + +levelbar.horizontal.discrete>trough>block:not(:last-child) { + margin-right: 2px; +} + +levelbar.vertical>trough>block { + min-width: 4px; +} + +levelbar.vertical.discrete>trough>block { + min-height: 32px; +} + +levelbar.vertical.discrete>trough>block:not(:last-child) { + margin-bottom: 2px; +} + +levelbar>trough>block.low { + background-color: #ffeb3b; +} + +levelbar>trough>block.high, +levelbar>trough>block:not(.empty) { + background-color: #387db7; +} + +levelbar>trough>block.full { + background-color: #00e676; +} + +levelbar>trough>block.empty { + background-color: rgba(158, 158, 158, 0.2); +} + +/** + * Print dialog + */ +window.dialog.print paper { + border-radius: 2px; + box-shadow: 0 2px 1px -1px rgba(0, 0, 0, 0.2), 0 1px 1px 0 rgba(0, 0, 0, 0.14), 0 1px 3px 0 rgba(0, 0, 0, 0.12); + background-color: #1a1c1e; + color: #9e9e9e; +} + +window.dialog.print .dialog-action-box { + margin: 12px; +} + +/** + * Frames + */ +frame, +.frame { + border-radius: 2px; + box-shadow: 0 2px 1px -1px rgba(0, 0, 0, 0.2), 0 1px 1px 0 rgba(0, 0, 0, 0.14), 0 1px 3px 0 rgba(0, 0, 0, 0.12); + background-color: #1a1c1e; + color: #9e9e9e; +} + +frame>label { + margin: 4px; +} + +statusbar { + padding: 6px 10px; +} + +actionbar>revealer>box { + padding: 4px; + border-spacing: 4px; + border-top: 1px solid rgba(158, 158, 158, 0.2); +} + +actionbar>revealer>box .linked:not(.vertical)>entry:not(:only-child) { + border-radius: 2px 2px 0 0; +} + +overshoot.top { + background-image: radial-gradient(farthest-side at top, rgba(56, 125, 183, 0.24) 99%, rgba(56, 125, 183, 0) 100%); + background-size: 200% 75%; + background-repeat: no-repeat; + background-position: top; +} + +overshoot.bottom { + background-image: radial-gradient(farthest-side at bottom, rgba(56, 125, 183, 0.24) 99%, rgba(56, 125, 183, 0) 100%); + background-size: 200% 75%; + background-repeat: no-repeat; + background-position: bottom; +} + +overshoot.left { + background-image: radial-gradient(farthest-side at left, rgba(56, 125, 183, 0.24) 99%, rgba(56, 125, 183, 0) 100%); + background-size: 75% 200%; + background-repeat: no-repeat; + background-position: left; +} + +overshoot.right { + background-image: radial-gradient(farthest-side at right, rgba(56, 125, 183, 0.24) 99%, rgba(56, 125, 183, 0) 100%); + background-size: 75% 200%; + background-repeat: no-repeat; + background-position: right; +} + +junction { + border-style: solid none none solid; + border-width: 1px; + border-color: rgba(158, 158, 158, 0.2); +} + +junction:dir(rtl) { + border-style: solid solid none none; +} + +separator { + min-width: 1px; + min-height: 1px; + background-color: rgba(158, 158, 158, 0.2); +} + +button.font>box>box>separator { + min-width: 0; + min-height: 0; + background-color: transparent; +} + +/** + * Lists + */ +listview>row, +list>row { + padding: 2px; +} + +listview>row.expander, +list>row.expander { + padding: 0; +} + +listview>row.expander .row-header, +list>row.expander .row-header { + padding: 2px; +} + +listview.separators:not(.horizontal)>row:not(:first-child), +list.separators:not(.horizontal)>row:not(:first-child) { + border-top: 1px solid rgba(158, 158, 158, 0.2); +} + +listview.separators.horizontal>row:not(:first-child), +list.separators.horizontal>row:not(:first-child) { + border-left: 1px solid rgba(158, 158, 158, 0.2); +} + +row { + background-clip: padding-box; +} + +row.activatable:drop(active), +row.activatable:hover { + background-color: rgba(158, 158, 158, 0.04); +} + +row.activatable:focus { + background-color: rgba(158, 158, 158, 0.08); +} + +row.activatable:active { + background-image: radial-gradient(circle, rgba(158, 158, 158, 0.12) 10%, transparent 10%); +} + +row.activatable:drop(active):not(:active), +row.activatable:hover:not(:active) { + transition-property: all, border-image, background-size, background-image, background-color; + transition-duration: 75ms, 225ms, 300ms, 1200ms, 0ms; +} + +row.activatable.has-open-popup { + background-color: rgba(158, 158, 158, 0.12); +} + +row:selected { + background-color: rgba(56, 125, 183, 0.32); + background-color: rgba(56, 125, 183, 0.32); +} + +row:selected:drop(active), +row:selected:hover { + background-color: rgba(56, 125, 183, 0.3744); +} + +row:selected:focus { + background-color: rgba(56, 125, 183, 0.4016); +} + +row:selected:active { + background-image: radial-gradient(circle, rgba(56, 125, 183, 0.16) 10%, transparent 10%); +} + +row:selected.has-open-popup { + background-color: rgba(56, 125, 183, 0.4288); +} + +listview>row:drop(active), +listview>row:hover { + background-color: rgba(158, 158, 158, 0.04); +} + +listview>row:focus { + background-color: rgba(158, 158, 158, 0.08); +} + +listview>row:active { + background-image: radial-gradient(circle, rgba(158, 158, 158, 0.12) 10%, transparent 10%); +} + +listview>row:drop(active):not(:active), +listview>row:hover:not(:active) { + transition-property: all, border-image, background-size, background-image, background-color; + transition-duration: 75ms, 225ms, 300ms, 1200ms, 0ms; +} + +listview:selected { + background-color: rgba(56, 125, 183, 0.32); + background-color: rgba(56, 125, 183, 0.32); +} + +listview:selected:drop(active), +listview:selected:hover { + background-color: rgba(56, 125, 183, 0.3744); +} + +listview:selected:focus { + background-color: rgba(56, 125, 183, 0.4016); +} + +listview:selected:active { + background-image: radial-gradient(circle, rgba(56, 125, 183, 0.16) 10%, transparent 10%); +} + +columnview>listview>row { + padding: 0; +} + +columnview>listview>row>cell { + min-height: 24px; + padding: 4px 6px; +} + +columnview>listview>row>cell:not(:last-child) { + border-right: 1px solid transparent; +} + +columnview.column-separators>listview>row>cell { + border-right-color: rgba(158, 158, 158, 0.2); +} + +columnview.data-table>listview>row>cell { + padding-top: 2px; + padding-bottom: 2px; +} + +.rich-list>row { + padding: 12px; + min-height: 32px; +} + +.rich-list>row>box { + border-spacing: 12px; +} + +/** + * App Notifications + */ +.app-notification { + margin: 8px; + border-style: none; +} + +.app-notification button.text-button:not(:disabled) { + color: #387db7; +} + +.app-notification button.text-button:not(:disabled):drop(active), +.app-notification button.text-button:not(:disabled):hover { + background-color: rgba(56, 125, 183, 0.12); +} + +.app-notification button.text-button:not(:disabled):focus { + background-color: rgba(56, 125, 183, 0.12); +} + +.app-notification button.text-button:not(:disabled):active { + background-image: radial-gradient(circle, rgba(56, 125, 183, 0.16) 10%, transparent 10%); +} + +/** + * Expanders + */ +expander { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1); + min-width: 16px; + min-height: 16px; + padding: 4px; + border-radius: 9999px; + color: rgba(158, 158, 158, 0.7); + -gtk-icon-source: -gtk-icontheme("pan-down-symbolic"); +} + +expander:drop(active), +expander:hover { + background-color: rgba(158, 158, 158, 0.08); +} + +expander:focus { + background-color: rgba(158, 158, 158, 0.08); +} + +expander:active { + background-image: radial-gradient(circle, rgba(158, 158, 158, 0.12) 10%, transparent 10%); +} + +expander:disabled { + color: rgba(158, 158, 158, 0.3); +} + +expander:checked:dir(ltr) { + -gtk-icon-transform: rotate(-180deg); +} + +expander:checked:dir(rtl) { + -gtk-icon-transform: rotate(180deg); +} + +indent { + min-width: 16px; + min-height: 16px; + padding: 4px; +} + +expander-widget:focus>box>title>expander { + box-shadow: inset 0 0 0 9999px rgba(158, 158, 158, 0.08); +} + +expander-widget>box>title:drop(active)>expander, +expander-widget>box>title:hover>expander { + box-shadow: inset 0 0 0 9999px rgba(158, 158, 158, 0.08); +} + +expander-widget>box>title:active>expander { + transition-duration: 75ms, 225ms, 0ms, 0ms; + animation: ripple 225ms cubic-bezier(0, 0, 0.2, 1) forwards; + background-size: 0% 0%; + background-image: radial-gradient(circle, rgba(158, 158, 158, 0.12) 10%, transparent 10%); +} + +/** + * Calendar + */ +calendar { + border-radius: 2px; + box-shadow: 0 2px 1px -1px rgba(0, 0, 0, 0.2), 0 1px 1px 0 rgba(0, 0, 0, 0.14), 0 1px 3px 0 rgba(0, 0, 0, 0.12); + background-color: #1a1c1e; + color: #9e9e9e; +} + +calendar:disabled { + color: rgba(158, 158, 158, 0.5); +} + +calendar>header { + padding: 4px; + border-spacing: 4px; + border-bottom: 1px solid rgba(158, 158, 158, 0.2); +} + +calendar>header>button.image-button { + padding: 0; + min-width: 28px; + min-height: 28px; + border-radius: 9999px; + background-color: transparent; + color: rgba(158, 158, 158, 0.7); + box-shadow: none; + background-color: transparent; +} + +calendar>header>button.image-button:drop(active), +calendar>header>button.image-button:hover { + box-shadow: none; + background-color: rgba(158, 158, 158, 0.08); +} + +calendar>header>button.image-button:focus { + box-shadow: none; + background-color: rgba(158, 158, 158, 0.08); +} + +calendar>header>button.image-button:active { + box-shadow: none; + background-image: radial-gradient(circle, rgba(158, 158, 158, 0.12) 10%, transparent 10%); +} + +calendar>header>button.image-button:disabled { + color: rgba(158, 158, 158, 0.3); +} + +calendar>grid { + padding: 4px; + border-spacing: 4px; +} + +calendar>grid>label { + padding: 0; + min-width: 28px; + min-height: 28px; + border-radius: 9999px; +} + +calendar>grid>label.day-name, +calendar>grid>label.week-number { + color: rgba(158, 158, 158, 0.7); + font-weight: 500; +} + +calendar>grid>label.day-number:drop(active), +calendar>grid>label.day-number:hover { + background-color: rgba(158, 158, 158, 0.08); +} + +calendar>grid>label.day-number:focus { + background-color: rgba(158, 158, 158, 0.08); +} + +calendar>grid>label.day-number:active { + background-image: radial-gradient(circle, rgba(158, 158, 158, 0.12) 10%, transparent 10%); +} + +calendar>grid>label.day-number.today { + box-shadow: inset 0 0 0 1px rgba(158, 158, 158, 0.7); +} + +calendar>grid>label.day-number.other-month { + color: rgba(158, 158, 158, 0.3); +} + +calendar>grid>label.day-number:selected { + background-color: rgba(56, 125, 183, 0.32); + box-shadow: inset 0 0 0 1px transparent; + background-color: rgba(56, 125, 183, 0.32); +} + +calendar>grid>label.day-number:selected:drop(active), +calendar>grid>label.day-number:selected:hover { + background-color: rgba(56, 125, 183, 0.4016); +} + +calendar>grid>label.day-number:selected:focus { + background-color: rgba(56, 125, 183, 0.4016); +} + +calendar>grid>label.day-number:selected:active { + background-image: radial-gradient(circle, rgba(56, 125, 183, 0.16) 10%, transparent 10%); +} + +/** + * Dialogs + */ +window.dialog.message.csd.background { + min-width: 280px; + border-radius: 2px; + background-color: #141416; +} + +window.dialog.message>.titlebar { + min-height: 24px; + box-shadow: inset 0 1px rgba(255, 255, 255, 0.05); + background-color: transparent; + color: #9e9e9e; +} + +window.dialog.message>.titlebar:backdrop { + background-color: transparent; + color: rgba(158, 158, 158, 0.7); +} + +window.dialog.message>box.dialog-vbox.vertical { + border-spacing: 20px; +} + +window.dialog.message>box.dialog-vbox.vertical>box.vertical>box.horizontal { + margin: 0 -6px; +} + +window.dialog.message label.title { + font-weight: 500; + font-size: 15pt; + letter-spacing: 0.1125pt; +} + +window.dialog.message label.title+label { + color: rgba(158, 158, 158, 0.7); +} + +window.dialog.message list, +window.dialog.message .view { + background-color: transparent; +} + +window.dialog.message .dialog-action-area>button:not(:disabled) { + color: #387db7; +} + +window.dialog.message .dialog-action-area>button:not(:disabled):drop(active), +window.dialog.message .dialog-action-area>button:not(:disabled):hover { + background-color: rgba(56, 125, 183, 0.12); +} + +window.dialog.message .dialog-action-area>button:not(:disabled):focus { + background-color: rgba(56, 125, 183, 0.12); +} + +window.dialog.message .dialog-action-area>button:not(:disabled):active { + background-image: radial-gradient(circle, rgba(56, 125, 183, 0.16) 10%, transparent 10%); +} + +window.dialog.message .dialog-action-area>button.suggested-action:not(:disabled) { + background-color: transparent; +} + +window.dialog.message .dialog-action-area>button.destructive-action:not(:disabled) { + background-color: transparent; + color: #f44336; +} + +window.dialog.message .dialog-action-area>button.destructive-action:not(:disabled):drop(active), +window.dialog.message .dialog-action-area>button.destructive-action:not(:disabled):hover { + background-color: rgba(244, 67, 54, 0.12); +} + +window.dialog.message .dialog-action-area>button.destructive-action:not(:disabled):focus { + background-color: rgba(244, 67, 54, 0.12); +} + +window.dialog.message .dialog-action-area>button.destructive-action:not(:disabled):active { + background-image: radial-gradient(circle, rgba(244, 67, 54, 0.16) 10%, transparent 10%); +} + +.dialog-action-area { + padding: 4px; + border-spacing: 4px; +} + +filechooser .dialog-action-box { + border-top: 1px solid rgba(158, 158, 158, 0.2); +} + +filechooser #pathbarbox { + border-bottom: 1px solid rgba(158, 158, 158, 0.2); +} + +filechooser #pathbarbox>stack>box>button { + border-radius: 9999px; +} + +filechooserbutton>button>box { + border-spacing: 6px; +} + +/** + * Sidebar + */ +.sidebar { + border-style: none; +} + +.sidebar:not(separator):dir(ltr), +.sidebar:not(separator).left, +.sidebar:not(separator).left:dir(rtl) { + border-right: 1px solid rgba(158, 158, 158, 0.2); + border-left-style: none; +} + +.sidebar:not(separator):dir(rtl), +.sidebar:not(separator).right { + border-left: 1px solid rgba(158, 158, 158, 0.2); + border-right-style: none; +} + +paned .sidebar:dir(rtl):not(:dir(ltr)), +paned .sidebar:dir(ltr):not(:dir(rtl)) { + border-style: none; +} + +stacksidebar.sidebar list { + padding: 4px; +} + +stacksidebar.sidebar list.separators:not(.horizontal)>row:not(:first-child) { + border-top-style: none; +} + +stacksidebar.sidebar row { + min-height: 32px; + padding: 0 2px; + border-radius: 2px; + color: rgba(158, 158, 158, 0.7); + font-weight: 500; +} + +stacksidebar.sidebar row:selected { + background-color: rgba(56, 125, 183, 0.16); + color: #387db7; + background-color: rgba(56, 125, 183, 0.16); +} + +stacksidebar.sidebar row:selected:drop(active), +stacksidebar.sidebar row:selected:hover { + background-color: rgba(56, 125, 183, 0.2608); +} + +stacksidebar.sidebar row:selected:focus { + background-color: rgba(56, 125, 183, 0.2608); +} + +stacksidebar.sidebar row:selected:active { + background-image: radial-gradient(circle, rgba(56, 125, 183, 0.16) 10%, transparent 10%); +} + +stacksidebar.sidebar row+row { + margin-top: 4px; +} + +stacksidebar.sidebar row>label { + padding-left: 6px; + padding-right: 6px; +} + +/** + * File chooser + */ +row image.sidebar-icon { + transition: color 75ms cubic-bezier(0, 0, 0.2, 1); + color: rgba(158, 158, 158, 0.7); +} + +row image.sidebar-icon:disabled { + color: rgba(158, 158, 158, 0.3); +} + +placessidebar.sidebar list { + padding: 4px 0; +} + +placessidebar.sidebar list>separator { + margin: 4px 0; +} + +placessidebar.sidebar row { + min-height: 32px; + margin: 0 4px; + padding: 0; + border-radius: 2px; + color: rgba(158, 158, 158, 0.7); + font-weight: 500; +} + +placessidebar.sidebar row>revealer { + padding: 0 8px; +} + +placessidebar.sidebar row:selected { + background-color: rgba(56, 125, 183, 0.16); + color: #387db7; + background-color: rgba(56, 125, 183, 0.16); +} + +placessidebar.sidebar row:selected:drop(active), +placessidebar.sidebar row:selected:hover { + background-color: rgba(56, 125, 183, 0.2608); +} + +placessidebar.sidebar row:selected:focus { + background-color: rgba(56, 125, 183, 0.2608); +} + +placessidebar.sidebar row:selected:active { + background-image: radial-gradient(circle, rgba(56, 125, 183, 0.16) 10%, transparent 10%); +} + +placessidebar.sidebar row:selected image.sidebar-icon { + color: #387db7; +} + +placessidebar.sidebar row:disabled { + color: rgba(158, 158, 158, 0.5); +} + +placessidebar.sidebar row image.sidebar-icon:dir(ltr) { + padding-right: 8px; +} + +placessidebar.sidebar row image.sidebar-icon:dir(rtl) { + padding-left: 8px; +} + +placessidebar.sidebar row label.sidebar-label:dir(ltr) { + padding-right: 2px; +} + +placessidebar.sidebar row label.sidebar-label:dir(rtl) { + padding-left: 2px; +} + +placessidebar.sidebar row.sidebar-placeholder-row { + background-color: rgba(158, 158, 158, 0.08); +} + +placessidebar.sidebar row.sidebar-new-bookmark-row { + color: #387db7; +} + +placessidebar.sidebar row.sidebar-new-bookmark-row image.sidebar-icon { + color: #387db7; +} + +placesview .server-list-button>image { + -gtk-icon-transform: rotate(0turn); +} + +placesview .server-list-button:checked>image { + -gtk-icon-transform: rotate(-0.5turn); +} + +placesview>actionbar>revealer>box>box { + border-spacing: 4px; +} + +placesview>actionbar>revealer>box>box>label { + padding-left: 8px; + padding-right: 8px; +} + +/** + * Paned + */ +paned>separator { + background-clip: content-box; +} + +paned>separator.wide { + min-width: 4px; + min-height: 4px; + border: 1px solid rgba(158, 158, 158, 0.2); + background-color: transparent; +} + +paned.horizontal>separator:not(.wide) { + margin: 0 -4px; + padding: 0 4px; +} + +paned.horizontal>separator.wide { + border-style: none solid; +} + +paned.vertical>separator:not(.wide) { + margin: -4px 0; + padding: 4px 0; +} + +paned.vertical>separator.wide { + border-style: solid none; +} + +/** + * GtkVideo + */ +video { + background-color: black; +} + +video image.osd { + min-width: 64px; + min-height: 64px; + border-radius: 32px; + background-color: rgba(0, 0, 0, 0.6); + color: #fff; +} + +video controls.osd { + padding: 4px; + background-image: linear-gradient(to bottom, transparent, rgba(0, 0, 0, 0.1) 30%, rgba(0, 0, 0, 0.2) 50%, rgba(0, 0, 0, 0.4)); + color: rgba(255, 255, 255, 0.87); +} + +video controls.osd button { + background-color: transparent; + color: rgba(255, 255, 255, 0.6); +} + +video controls.osd button:drop(active), +video controls.osd button:hover { + background-color: rgba(255, 255, 255, 0.08); +} + +video controls.osd button:focus { + background-color: rgba(255, 255, 255, 0.08); +} + +video controls.osd button:active { + background-image: radial-gradient(circle, rgba(255, 255, 255, 0.12) 10%, transparent 10%); +} + +/** + * GtkInfoBar + */ +infobar>revealer>box { + padding: 8px; + border-spacing: 12px; +} + +infobar.action:hover>revealer>box { + background-image: image(rgba(158, 158, 158, 0.08)); +} + +infobar.info>revealer>box, +infobar.question>revealer>box { + border-bottom: 1px solid rgba(158, 158, 158, 0.2); +} + +infobar.info>revealer>box button.text-button:not(:disabled), +infobar.question>revealer>box button.text-button:not(:disabled) { + color: #387db7; +} + +infobar.info>revealer>box button.text-button:not(:disabled):drop(active), +infobar.info>revealer>box button.text-button:not(:disabled):hover, +infobar.question>revealer>box button.text-button:not(:disabled):drop(active), +infobar.question>revealer>box button.text-button:not(:disabled):hover { + background-color: rgba(56, 125, 183, 0.12); +} + +infobar.info>revealer>box button.text-button:not(:disabled):focus, +infobar.question>revealer>box button.text-button:not(:disabled):focus { + background-color: rgba(56, 125, 183, 0.12); +} + +infobar.info>revealer>box button.text-button:not(:disabled):active, +infobar.question>revealer>box button.text-button:not(:disabled):active { + background-image: radial-gradient(circle, rgba(56, 125, 183, 0.16) 10%, transparent 10%); +} + +infobar.warning>revealer>box { + background-color: #ffeb3b; + color: #000; +} + +infobar.warning>revealer>box button.flat { + color: #000; +} + +infobar.warning>revealer>box button.flat:drop(active), +infobar.warning>revealer>box button.flat:hover { + background-color: rgba(0, 0, 0, 0.08); +} + +infobar.warning>revealer>box button.flat:focus { + background-color: rgba(0, 0, 0, 0.08); +} + +infobar.warning>revealer>box button.flat:active { + background-image: radial-gradient(circle, rgba(0, 0, 0, 0.12) 10%, transparent 10%); +} + +infobar.warning>revealer>box link { + color: #000; +} + +infobar.error>revealer>box { + background-color: #f44336; + color: #fff; +} + +infobar.error>revealer>box button.flat { + color: #fff; +} + +infobar.error>revealer>box button.flat:drop(active), +infobar.error>revealer>box button.flat:hover { + background-color: rgba(255, 255, 255, 0.08); +} + +infobar.error>revealer>box button.flat:focus { + background-color: rgba(255, 255, 255, 0.08); +} + +infobar.error>revealer>box button.flat:active { + background-image: radial-gradient(circle, rgba(255, 255, 255, 0.12) 10%, transparent 10%); +} + +infobar.error>revealer>box link { + color: #fff; +} + +/** + * Tooltips + */ +tooltip { + min-height: 24px; + padding: 4px 8px; + border-radius: 2px; +} + +tooltip.background { + background-color: rgba(9, 9, 10, 0.9); + color: #80868b; +} + +tooltip:not(.csd) { + background-color: rgba(9, 9, 10, 0.9); +} + +tooltip>box { + border-spacing: 6px; +} + +tooltip .dim-label { + color: rgba(128, 134, 139, 0.7); +} + +/** + * Color Chooser + */ +colorswatch { + transition: box-shadow 75ms cubic-bezier(0, 0, 0.2, 1); + box-shadow: 0 2px 1px -1px rgba(0, 0, 0, 0.2), 0 1px 1px 0 rgba(0, 0, 0, 0.14), 0 1px 3px 0 rgba(0, 0, 0, 0.12); +} + +colorswatch:drop(active), +colorswatch.activatable:hover { + box-shadow: 0 3px 3px -2px rgba(0, 0, 0, 0.2), 0 3px 4px 0 rgba(0, 0, 0, 0.14), 0 1px 8px 0 rgba(0, 0, 0, 0.12); +} + +colorswatch:disabled { + opacity: 0.5; +} + +colorswatch.top { + border-top-left-radius: 2px; + border-top-right-radius: 2px; +} + +colorswatch.bottom { + border-bottom-left-radius: 2px; + border-bottom-right-radius: 2px; +} + +colorswatch.left, +colorswatch:first-child:not(.top) { + border-top-left-radius: 2px; + border-bottom-left-radius: 2px; +} + +colorswatch.right, +colorswatch:last-child:not(.bottom) { + border-top-right-radius: 2px; + border-bottom-right-radius: 2px; +} + +colorswatch.dark { + color: #fff; +} + +colorswatch.light { + color: #000; +} + +colorswatch#add-color-button { + background-color: #141416; + color: #9e9e9e; +} + +colorswatch#editor-color-sample { + border-radius: 2px; +} + +colorchooser .popover.osd { + transition: box-shadow 75ms cubic-bezier(0, 0, 0.2, 1); + border-radius: 2px; + box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12), inset 0 1px rgba(255, 255, 255, 0.05); + background-color: #141416; +} + +colorchooser .popover.osd:backdrop { + box-shadow: 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 rgba(0, 0, 0, 0.12), inset 0 1px rgba(255, 255, 255, 0.05); +} + +/** + * Misc + */ +/** + * Window Decorations + */ +window.csd { + transition: box-shadow 75ms cubic-bezier(0, 0, 0.2, 1); + border-radius: 2px 2px 0 0; + border-radius: 2px; + box-shadow: 0 8px 10px -5px rgba(0, 0, 0, 0.2), 0 16px 24px 2px rgba(0, 0, 0, 0.14), 0 6px 30px 5px rgba(0, 0, 0, 0.12), 0 16px 24px 2px transparent, 0 6px 30px 5px transparent; +} + +window.csd:backdrop { + box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12), 0 16px 24px 2px transparent, 0 6px 30px 5px transparent; +} + +window.ssd { + box-shadow: 0 3px 3px rgba(0, 0, 0, 0.16); +} + +window.solid-csd { + margin: 0; + padding: 2px; + border-radius: 0; + box-shadow: none; + box-shadow: inset 0 1px rgba(255, 255, 255, 0.05); + background-color: #09090a; +} + +window.solid-csd:backdrop { + background-color: #000000; +} + +window.maximized, +window.fullscreen, +window.tiled, +window.tiled-top, +window.tiled-left, +window.tiled-right, +window.tiled-bottom { + border-radius: 0; +} + +.monospace { + font-family: monospace; +} + +/** + * Touch Copy & Paste + */ +cursor-handle { + min-width: 24px; + min-height: 24px; + border-radius: 50%; + background-color: #387db7; +} + +cursor-handle.top:dir(ltr), +cursor-handle.bottom:dir(rtl) { + border-top-right-radius: 0; +} + +cursor-handle.bottom:dir(ltr), +cursor-handle.top:dir(rtl) { + border-top-left-radius: 0; +} + +cursor-handle.insertion-cursor:dir(ltr), +cursor-handle.insertion-cursor:dir(rtl) { + margin-top: 6px; + transform: rotate(45deg); +} + +shortcuts-section { + margin: 20px; +} + +.shortcuts-search-results { + margin: 20px; + border-spacing: 24px; +} + +shortcut { + border-spacing: 6px; +} + +shortcut>.keycap { + min-width: 12px; + min-height: 28px; + padding-left: 8px; + padding-right: 8px; + border-radius: 2px; + box-shadow: 0 2px 1px -1px rgba(0, 0, 0, 0.2), 0 1px 1px 0 rgba(0, 0, 0, 0.14), 0 1px 3px 0 rgba(0, 0, 0, 0.12); + background-color: #141416; + color: #9e9e9e; + font-size: smaller; +} + +stackswitcher>button.text-button { + min-width: 100px; +} + +stackswitcher.circular { + border-spacing: 12px; +} + +stackswitcher.circular>button.circular { + min-width: 32px; + min-height: 32px; + padding: 0; +} + +/** + * App Icons + */ +/** + * Emoji + */ +popover.emoji-picker>contents { + padding: 0; +} + +popover.emoji-picker>contents emoji { + min-width: 3em; + min-height: 3em; + border-radius: 2px; +} + +popover.emoji-picker>contents emoji:drop(active), +popover.emoji-picker>contents emoji:hover { + background-color: rgba(158, 158, 158, 0.08); +} + +popover.emoji-picker>contents emoji:focus { + background-color: rgba(158, 158, 158, 0.08); +} + +popover.emoji-picker>contents emoji:active { + background-image: radial-gradient(circle, rgba(158, 158, 158, 0.12) 10%, transparent 10%); +} + +.emoji-searchbar { + border-bottom: 1px solid rgba(158, 158, 158, 0.2); +} + +.emoji-searchbar>entry.search { + border-image: none; + border-radius: 0; + box-shadow: none; + background-color: transparent; +} + +.emoji-toolbar { + padding: 4px; + border-spacing: 4px; + border-top: 1px solid rgba(158, 158, 158, 0.2); +} + +.emoji-toolbar>button.emoji-section:checked { + background-color: rgba(56, 125, 183, 0.16); + color: #387db7; + background-color: rgba(56, 125, 183, 0.16); +} + +.emoji-toolbar>button.emoji-section:checked:drop(active), +.emoji-toolbar>button.emoji-section:checked:hover { + background-color: rgba(56, 125, 183, 0.2608); +} + +.emoji-toolbar>button.emoji-section:checked:focus { + background-color: rgba(56, 125, 183, 0.2608); +} + +.emoji-toolbar>button.emoji-section:checked:active { + background-image: radial-gradient(circle, rgba(56, 125, 183, 0.16) 10%, transparent 10%); +} + +popover.emoji-completion>contents { + padding: 8px 0; +} + +popover.emoji-completion>contents emoji-completion-row { + min-height: 32px; + padding: 0 8px; +} + +popover.emoji-completion>contents emoji-completion-row:drop(active), +popover.emoji-completion>contents emoji-completion-row:hover { + background-color: rgba(158, 158, 158, 0.08); +} + +popover.emoji-completion>contents emoji-completion-row:focus { + background-color: rgba(158, 158, 158, 0.08); +} + +popover.emoji-completion>contents emoji-completion-row:active { + background-image: radial-gradient(circle, rgba(158, 158, 158, 0.12) 10%, transparent 10%); +} + +popover.emoji-completion>contents emoji-completion-row>box { + border-spacing: 8px; +} + +popover.emoji-completion>contents emoji { + border-radius: 2px; +} + +popover.emoji-completion>contents emoji:drop(active), +popover.emoji-completion>contents emoji:hover { + background-color: rgba(158, 158, 158, 0.08); +} + +popover.emoji-completion>contents emoji:focus { + background-color: rgba(158, 158, 158, 0.08); +} + +popover.emoji-completion>contents emoji:active { + background-image: radial-gradient(circle, rgba(158, 158, 158, 0.12) 10%, transparent 10%); +} + +popover.entry-completion>contents { + padding: 0; +} + +popover.entry-completion>contents treeview.view { + min-height: 32px; + padding: 8px 0; +} + +popover.entry-completion>contents treeview.view>.cell { + padding: 0 4px; +} + +popover.entry-completion>contents treeview.view>.cell:selected:hover { + background-color: rgba(158, 158, 158, 0.08); +} + +/* GTK NAMED COLORS + ---------------- + use responsibly! */ +/* +widget text/foreground color */ +@define-color theme_fg_color #9e9e9e; +/* +text color for entries, views and content in general */ +@define-color theme_text_color #9e9e9e; +/* +widget base background color */ +@define-color theme_bg_color #0f1011; +/* +text widgets and the like base background color */ +@define-color theme_base_color #1a1c1e; +/* +base background color of selections */ +@define-color theme_selected_bg_color #387db7; +/* +text/foreground color of selections */ +@define-color theme_selected_fg_color #fff; +/* +base background color of insensitive widgets */ +@define-color insensitive_bg_color #0f1011; +/* +text foreground color of insensitive widgets */ +@define-color insensitive_fg_color rgba(158, 158, 158, 0.5); +/* +insensitive text widgets and the like base background color */ +@define-color insensitive_base_color #1a1c1e; +/* +widget text/foreground color on backdrop windows */ +@define-color theme_unfocused_fg_color #9e9e9e; +/* +text color for entries, views and content in general on backdrop windows */ +@define-color theme_unfocused_text_color #9e9e9e; +/* +widget base background color on backdrop windows */ +@define-color theme_unfocused_bg_color #0f1011; +/* +text widgets and the like base background color on backdrop windows */ +@define-color theme_unfocused_base_color #1a1c1e; +/* +base background color of selections on backdrop windows */ +@define-color theme_unfocused_selected_bg_color #387db7; +/* +text/foreground color of selections on backdrop windows */ +@define-color theme_unfocused_selected_fg_color #fff; +/* +insensitive color on backdrop windows */ +@define-color unfocused_insensitive_color rgba(158, 158, 158, 0.5); +/* +widgets main borders color */ +@define-color borders rgba(158, 158, 158, 0.2); +/* +widgets main borders color on backdrop windows */ +@define-color unfocused_borders rgba(158, 158, 158, 0.2); +/* +these are pretty self explicative */ +@define-color warning_color #ffeb3b; +@define-color error_color #f44336; +@define-color success_color #00e676; +/* +these colors are exported for the window manager and shouldn't be used in applications, +read if you used those and something break with a version upgrade you're on your own... */ +@define-color wm_title #80868b; +@define-color wm_unfocused_title rgba(128, 134, 139, 0.7); +@define-color wm_highlight rgba(255, 255, 255, 0.05); +@define-color wm_bg #09090a; +@define-color wm_unfocused_bg #000000; +@define-color xfwm4_title #80868b; +@define-color xfwm4_unfocused_title #5a5e61; +/* content view background such as thumbnails view in Photos or Boxes */ +@define-color content_view_bg #0f1011; +/* Very contrasty background for text views (@theme_text_color foreground) */ +@define-color text_view_bg #0f1011; +/* placeholder for entries */ +@define-color placeholder_text_color #767778; diff --git a/gtk-theme/src/index.theme b/gtk-theme/src/index.theme new file mode 100644 index 0000000..43a621d --- /dev/null +++ b/gtk-theme/src/index.theme @@ -0,0 +1,8 @@ +[Desktop Entry] +Type=X-GNOME-Metatheme +Name=Adaptive-Theme +Comment=A very adaptive theme together with its scripts +Encoding=UTF-8 + +[X-GNOME-Metatheme] +GtkTheme=Adaptive-Theme diff --git a/install b/install new file mode 100755 index 0000000..5c8ce1c --- /dev/null +++ b/install @@ -0,0 +1,37 @@ +#!/bin/sh + +# Read platform to install on (only if no platform file present in ~/.config/) +read -p "Choose the configs to install, Laptop or Desktop (l/D): " platform + +# Packages to be added to install: aylurs-gtk-shell-git, brightnessctl, zoxide, trash-cli, fzf, ouch +# Install yazi plugins using ya pack -a ndtoan96/ouch and ya pack -a boydaihungst/restore +# +# TODO: get configs from current setup +# Hyprland +yay -S hyprland hypridle hyprfreeze hyprlock plymouth aylurs-gtk-shell-git brightnessctl pulsemixer xdg-desktop-portal-hyprland + +# Audio, drivers, tools +yay -S pipewire pipewire-alsa pipewire-pulse pipewire-jack mesa fish thunar yazi wireplumber grimblast wl-clipboard wget vimiv zoxide trash-cli fzf ouch zathura sensors radeontop lm-sensors + +# Set up yazi +ya pack -a ndtoan96/ouch +ya pack -a boydaihungst/restore + +# Fonts +yay -S adobe-source-code-pro-fonts gnome-font-viewer gnome-characters gnome-tweaks lxappearance kvantum gnome-keyring smartmontools ffmpeg polkit-gnome swaybg network-manager-applet polkit-kde-agent cpupower-gui ttf-fantasque-nerd ttf-jetbrains-mono-nerd ttf-fluentui-system-icons ttf-comfortaa + +# Programming +yay -S meld docker vscodium kitty fish docker terminator ghex nodejs npm python-pip git-credential-manager-core-bin wine kate rustup cargo filezilla typescript-language-server php jdk vscode-css-languageserver vscode-html-languageserver bash-language-server lazygit +sudo npm i -g @vue/typescript-plugin + +# nvim +yay -S neovim lua lua-language-server tree-sitter texlab stylua luarocks jdtls perl julia autojump pyright + +# Internet +yay -S librewolf-bin webcord-bin thunderbird rustdesk brave-bin + +# Utilities +yay -S okular vlc nextcloud-client p7zip zip unzip gnome-keyring noto-fonts thunderbird pamixer pavucontrol light neofetch bashtop hugo sddm uxplay upower + +# LaTeX +yay -S texlive biber diff --git a/install-new.sh b/install-new.sh deleted file mode 100644 index 0a1f3b2..0000000 --- a/install-new.sh +++ /dev/null @@ -1,58 +0,0 @@ -echo "Welcome!" - -currentDir=pwd - -sudo pacman-key --recv-keys 7931B6D628C8D3BA -sudo pacman-key --finger 7931B6D628C8D3BA -sudo pacman-key --lsign-key 7931B6D628C8D3BA - -curl -O https://mirrors.tuna.tsinghua.edu.cn/arch4edu/any/arch4edu-keyring-20200805-1-any.pkg.tar.zst -pacman -U arch4edu-keyring-20200805-1-any.pkg.tar.zst - -echo " - -Installed arch4edu keyring, running reflector to update pacman mirrorlist... - -" -sudo pacman -Syu base-devel git reflector -sudo reflector -c 'Switzerland, Germany' --sort 'rate' --protocol https --latest 10 --save /etc/pacman.d/mirrorlist - -echo " - -Mirrorlist created, installing yay - -" - -cd /tmp -git clone https://aur.archlinux.org/yay.git -cd yay && makepkg -si - -echo " - -yay installed, updating & installing - -" - -yay -Syu - -# Hyprland -yay -S hyprland hypridle hyprfreeze hyprlock plymouth dunst rofi wlogout waybar xdg-desktop-portal-hyprland pipewire pipewire-alsa pipewire-pulse pipewire-jack mesa thunar yazi wireplumber grimblast wl-clipboard wget ttf-fantasque-nerd ttf-jetbrains-mono-nerd ttf-fluentui-system-icons ttf-comfortaa - -# Core -yay -S fish adobe-source-code-pro-fonts gnome-font-viewer gnome-characters gnome-tweaks lxappearance kvantum gnome-keyring smartmontools ffmpeg polkit-gnome swaybg network-manager-applet polkit-kde-agent cpupower-gui - -# Programming -yay -S meld docker vscodium kitty fish docker terminator ghex nodejs npm python-pip git-credential-manager-core-bin wine kate rustup cargo filezilla typescript-language-server php jdk vscode-css-languageserver vscode-html-languageserver bash-language-server lazygit -sudo npm i -g @vue/typescript-plugin - -# nvim -yay -S neovim lua lua-language-server tree-sitter texlab stylua luarocks jdtls perl julia autojump pyright - -# Internet -yay -S librewolf-bin webcord-bin thunderbird rustdesk brave-bin - -# Utilities -yay -S okular vlc nextcloud-client p7zip zip unzip gnome-keyring noto-fonts thunderbird pamixer pavucontrol light neofetch bashtop hugo sddm uxplay upower - -# LaTeX -yay -S texlive biber diff --git a/install-part-two.sh b/install-part-two.sh deleted file mode 100644 index 53cc98b..0000000 --- a/install-part-two.sh +++ /dev/null @@ -1,30 +0,0 @@ -echo "Welcome!" - -file="/home/janis/projects/dotfiles/pc/vscode-extensions" -while read line; do - vscodium --install-extension "${line}" -done < "${file}" - -echo "\n==> VSCode Extensions installed\n" - -cp -r ./pc/.config/* ~/.config -cp ./pc/.bashrc ~/.bashrc -cp ./pc/.bash_history ~/.bash_history - -sudo cp ./pc/mkinitcpio.conf /etc/mkinitcpio.conf -sudo cp ./pc/environment /etc/environment -sudo cp ./pc/grub /etc/default/grub -sudo plymouth-set-default-theme -R bgrt - -sudo mkinitcpio -P - -cd /tmp -git clone https://github.com/rtlewis1/GTK -cd GTK/ -git checkout Material-Black-Colors-Desktop -sudo cp -r ./Material-Black-Blueberry /usr/share/themes - -cd /tmp -git clone https://github.com/sandesh236/monterey-grub-theme -cd monterey-grub-theme/ -sudo ./install.sh diff --git a/laptop/.bashrc b/laptop/.bashrc deleted file mode 100755 index 95b0a32..0000000 --- a/laptop/.bashrc +++ /dev/null @@ -1,359 +0,0 @@ -# -# ~/.bashrc -# - -# If not running interactively, don't do anything -[[ $- != *i* ]] && return - -export PATH="/home/janis/.local/share/gem/ruby/3.0.0/bin: $PATH" -export PATH="/home/janis/.local/bin: $PATH" -alias editHyprlandConf='nano ~/.config/hypr/hyprland.conf' -alias ls='ls -l --color=auto' -alias ll='ls -la --color=auto' -alias sl='ls --color=auto' -alias start-httpd='sudo systemctl start httpd' -PS1='[\u@\h \W]\$ ' - -################################################################################ -## FUNCTIONS ## -################################################################################ - -## -## ARRANGE $PWD AND STORE IT IN $NEW_PWD -## * The home directory (HOME) is replaced with a ~ -## * The last pwdmaxlen characters of the PWD are displayed -## * Leading partial directory names are striped off -## /home/me/stuff -> ~/stuff (if USER=me) -## /usr/share/big_dir_name -> ../share/big_dir_name (if pwdmaxlen=20) -## -## Original source: WOLFMAN'S color bash promt -## https://wiki.chakralinux.org/index.php?title=Color_Bash_Prompt#Wolfman.27s -## -bash_prompt_command() { - # How many characters of the $PWD should be kept - local pwdmaxlen=25 - - # Indicate that there has been dir truncation - local trunc_symbol=".." - - # Store local dir - local dir=${PWD##*/} - - # Which length to use - pwdmaxlen=$(( ( pwdmaxlen < ${#dir} ) ? ${#dir} : pwdmaxlen )) - - NEW_PWD=${PWD/#$HOME/\~} - - local pwdoffset=$(( ${#NEW_PWD} - pwdmaxlen )) - - # Generate name - if [ ${pwdoffset} -gt "0" ] - then - NEW_PWD=${NEW_PWD:$pwdoffset:$pwdmaxlen} - NEW_PWD=${trunc_symbol}/${NEW_PWD#*/} - fi -} - - - - -## -## GENERATE A FORMAT SEQUENCE -## -format_font() -{ - ## FIRST ARGUMENT TO RETURN FORMAT STRING - local output=$1 - - - case $# in - 2) - eval $output="'\[\033[0;${2}m\]'" - ;; - 3) - eval $output="'\[\033[0;${2};${3}m\]'" - ;; - 4) - eval $output="'\[\033[0;${2};${3};${4}m\]'" - ;; - *) - eval $output="'\[\033[0m\]'" - ;; - esac -} - - - -## -## COLORIZE BASH PROMT -## -bash_prompt() { - - ############################################################################ - ## COLOR CODES ## - ## These can be used in the configuration below ## - ############################################################################ - - ## FONT EFFECT - local NONE='0' - local BOLD='1' - local DIM='2' - local UNDERLINE='4' - local BLINK='5' - local INVERT='7' - local HIDDEN='8' - - - ## COLORS - local DEFAULT='9' - local BLACK='0' - local RED='1' - local GREEN='2' - local YELLOW='3' - local BLUE='4' - local MAGENTA='5' - local CYAN='6' - local L_GRAY='7' - local D_GRAY='60' - local L_RED='61' - local L_GREEN='62' - local L_YELLOW='63' - local L_BLUE='64' - local L_MAGENTA='65' - local L_CYAN='66' - local WHITE='67' - - - ## TYPE - local RESET='0' - local EFFECT='0' - local COLOR='30' - local BG='40' - - - ## 256 COLOR CODES - local NO_FORMAT="\[\033[0m\]" - local ORANGE_BOLD="\[\033[1;38;5;208m\]" - local TOXIC_GREEN_BOLD="\[\033[1;38;5;118m\]" - local RED_BOLD="\[\033[1;38;5;1m\]" - local CYAN_BOLD="\[\033[1;38;5;87m\]" - local BLACK_BOLD="\[\033[1;38;5;0m\]" - local WHITE_BOLD="\[\033[1;38;5;15m\]" - local GRAY_BOLD="\[\033[1;90m\]" - local BLUE_BOLD="\[\033[1;38;5;74m\]" - - - - - - ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## - ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## - ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## - - - - ## CONFIGURE HERE ## - - - - ############################################################################ - ## CONFIGURATION ## - ## Choose your color combination here ## - ############################################################################ - local FONT_COLOR_1=$WHITE - local BACKGROUND_1=$RED - local TEXTEFFECT_1=$BOLD - - local FONT_COLOR_2=$WHITE - local BACKGROUND_2=$YELLOW - local TEXTEFFECT_2=$BOLD - - local FONT_COLOR_3=$D_GRAY - local BACKGROUND_3=$WHITE - local TEXTEFFECT_3=$BOLD - - local PROMT_FORMAT=$BLUE_BOLD - - - ############################################################################ - ## EXAMPLE CONFIGURATIONS ## - ## I use them for different hosts. Test them out ;) ## - ############################################################################ - - ## CONFIGURATION: BLUE-WHITE - if [ "$HOSTNAME" = dell ]; then - FONT_COLOR_1=$WHITE; BACKGROUND_1=$BLUE; TEXTEFFECT_1=$BOLD - FONT_COLOR_2=$WHITE; BACKGROUND_2=$L_BLUE; TEXTEFFECT_2=$BOLD - FONT_COLOR_3=$D_GRAY; BACKGROUND_3=$WHITE; TEXTEFFECT_3=$BOLD - PROMT_FORMAT=$CYAN_BOLD - fi - - ## CONFIGURATION: BLACK-RED - if [ "$HOSTNAME" = giraff6 ]; then - FONT_COLOR_1=$WHITE; BACKGROUND_1=$BLACK; TEXTEFFECT_1=$BOLD - FONT_COLOR_2=$WHITE; BACKGROUND_2=$D_GRAY; TEXTEFFECT_2=$BOLD - FONT_COLOR_3=$WHITE; BACKGROUND_3=$RED; TEXTEFFECT_3=$BOLD - PROMT_FORMAT=$RED_BOLD - fi - - ## CONFIGURATION: RED-BLACK - #FONT_COLOR_1=$WHITE; BACKGROUND_1=$RED; TEXTEFFECT_1=$BOLD - #FONT_COLOR_2=$WHITE; BACKGROUND_2=$D_GRAY; TEXTEFFECT_2=$BOLD - #FONT_COLOR_3=$WHITE; BACKGROUND_3=$BLACK; TEXTEFFECT_3=$BOLD - #PROMT_FORMAT=$RED_BOLD - - ## CONFIGURATION: CYAN-BLUE - if [ "$HOSTNAME" = sharkoon ]; then - FONT_COLOR_1=$BLACK; BACKGROUND_1=$L_CYAN; TEXTEFFECT_1=$BOLD - FONT_COLOR_2=$WHITE; BACKGROUND_2=$L_BLUE; TEXTEFFECT_2=$BOLD - FONT_COLOR_3=$WHITE; BACKGROUND_3=$BLUE; TEXTEFFECT_3=$BOLD - PROMT_FORMAT=$CYAN_BOLD - fi - - ## CONFIGURATION: GRAY-SCALE - if [ "$HOSTNAME" = giraff ]; then - FONT_COLOR_1=$WHITE; BACKGROUND_1=$BLACK; TEXTEFFECT_1=$BOLD - FONT_COLOR_2=$WHITE; BACKGROUND_2=$D_GRAY; TEXTEFFECT_2=$BOLD - FONT_COLOR_3=$WHITE; BACKGROUND_3=$L_GRAY; TEXTEFFECT_3=$BOLD - PROMT_FORMAT=$BLACK_BOLD - fi - - ## CONFIGURATION: GRAY-CYAN - if [ "$HOSTNAME" = light ]; then - FONT_COLOR_1=$WHITE; BACKGROUND_1=$BLACK; TEXTEFFECT_1=$BOLD - FONT_COLOR_2=$WHITE; BACKGROUND_2=$D_GRAY; TEXTEFFECT_2=$BOLD - FONT_COLOR_3=$BLACK; BACKGROUND_3=$L_CYAN; TEXTEFFECT_3=$BOLD - PROMT_FORMAT=$CYAN_BOLD - fi - - - ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## - ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## - ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## - - - - - ############################################################################ - ## TEXT FORMATING ## - ## Generate the text formating according to configuration ## - ############################################################################ - - ## CONVERT CODES: add offset - FC1=$(($FONT_COLOR_1+$COLOR)) - BG1=$(($BACKGROUND_1+$BG)) - FE1=$(($TEXTEFFECT_1+$EFFECT)) - - FC2=$(($FONT_COLOR_2+$COLOR)) - BG2=$(($BACKGROUND_2+$BG)) - FE2=$(($TEXTEFFECT_2+$EFFECT)) - - FC3=$(($FONT_COLOR_3+$COLOR)) - BG3=$(($BACKGROUND_3+$BG)) - FE3=$(($TEXTEFFECT_3+$EFFECT)) - - FC4=$(($FONT_COLOR_4+$COLOR)) - BG4=$(($BACKGROUND_4+$BG)) - FE4=$(($TEXTEFFECT_4+$EFFECT)) - - - ## CALL FORMATING HELPER FUNCTION: effect + font color + BG color - local TEXT_FORMAT_1 - local TEXT_FORMAT_2 - local TEXT_FORMAT_3 - local TEXT_FORMAT_4 - format_font TEXT_FORMAT_1 $FE1 $FC1 $BG1 - format_font TEXT_FORMAT_2 $FE2 $FC2 $BG2 - format_font TEXT_FORMAT_3 $FC3 $FE3 $BG3 - format_font TEXT_FORMAT_4 $FC4 $FE4 $BG4 - - - # GENERATE PROMT SECTIONS - local PROMT_USER=$"$TEXT_FORMAT_1 \u " - local PROMT_HOST=$"$TEXT_FORMAT_2 \h " - local PROMT_PWD=$"$TEXT_FORMAT_3 \${NEW_PWD} " - local PROMT_INPUT=$"$PROMT_FORMAT " - - - ############################################################################ - ## SEPARATOR FORMATING ## - ## Generate the separators between sections ## - ## Uses background colors of the sections ## - ############################################################################ - - ## CONVERT CODES - TSFC1=$(($BACKGROUND_1+$COLOR)) - TSBG1=$(($BACKGROUND_2+$BG)) - - TSFC2=$(($BACKGROUND_2+$COLOR)) - TSBG2=$(($BACKGROUND_3+$BG)) - - TSFC3=$(($BACKGROUND_3+$COLOR)) - TSBG3=$(($DEFAULT+$BG)) - - - ## CALL FORMATING HELPER FUNCTION: effect + font color + BG color - local SEPARATOR_FORMAT_1 - local SEPARATOR_FORMAT_2 - local SEPARATOR_FORMAT_3 - format_font SEPARATOR_FORMAT_1 $TSFC1 $TSBG1 - format_font SEPARATOR_FORMAT_2 $TSFC2 $TSBG2 - format_font SEPARATOR_FORMAT_3 $TSFC3 $TSBG3 - - - # GENERATE SEPARATORS WITH FANCY TRIANGLE - local TRIANGLE=$'\uE0B0' - local SEPARATOR_1=$SEPARATOR_FORMAT_1$TRIANGLE - local SEPARATOR_2=$SEPARATOR_FORMAT_2$TRIANGLE - local SEPARATOR_3=$SEPARATOR_FORMAT_3$TRIANGLE - - - - ############################################################################ - ## WINDOW TITLE ## - ## Prevent messed up terminal-window titles ## - ############################################################################ - case $TERM in - xterm*|rxvt*) - local TITLEBAR='\[\033]0;\u:${NEW_PWD}\007\]' - ;; - *) - local TITLEBAR="" - ;; - esac - - - - ############################################################################ - ## BASH PROMT ## - ## Generate promt and remove format from the rest ## - ############################################################################ - PS1="$TITLEBAR\n${PROMT_USER}${SEPARATOR_1}${PROMT_HOST}${SEPARATOR_2}${PROMT_PWD}${SEPARATOR_3}${PROMT_INPUT}" - - - - ## For terminal line coloring, leaving the rest standard - none="$(tput sgr0)" - trap 'echo -ne "${none}"' DEBUG -} - - - - -################################################################################ -## MAIN ## -################################################################################ - -## Bash provides an environment variable called PROMPT_COMMAND. -## The contents of this variable are executed as a regular Bash command -## just before Bash displays a prompt. -## We want it to call our own command to truncate PWD and store it in NEW_PWD -PROMPT_COMMAND=bash_prompt_command - -## Call bash_promnt only once, then unset it (not needed any more) -## It will set $PS1 with colors and relative to $NEW_PWD, -## which gets updated by $PROMT_COMMAND on behalf of the terminal -bash_prompt -unset bash_prompt - -### EOF ### diff --git a/laptop/configs/hypr/hyprland-old.conf b/laptop/configs/hypr/hyprland-old.conf deleted file mode 100644 index b5568f4..0000000 --- a/laptop/configs/hypr/hyprland-old.conf +++ /dev/null @@ -1,349 +0,0 @@ -#░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ -#░ ░░░░ ░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░ -#▒ ▒▒▒▒ ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ ▒▒▒▒▒▒▒▒▒ ▒▒▒ ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ ▒▒▒▒▒▒ ▒▒▒▒▒▒▒▒▒ -#▒ ▒▒▒▒ ▒ ▒▒▒ ▒ ▒ ▒▒▒ ▒ ▒ ▒▒▒▒ ▒▒▒▒▒ ▒ ▒▒▒▒▒▒▒▒ ▒▒▒▒▒▒▒▒ ▒▒▒▒▒▒▒▒▒▒▒ ▒▒▒▒▒ ▒ ▒▒▒ ▒ ▒▒▒▒▒▒▒ ▒▒ -#▓ ▓▓ ▓ ▓▓ ▓▓ ▓▓▓ ▓▓▓▓ ▓▓ ▓▓ ▓▓▓ ▓▓ ▓▓ ▓ ▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓ ▓▓ ▓▓▓ ▓▓ ▓▓▓ ▓▓▓▓ ▓ ▓▓ -#▓ ▓▓▓▓ ▓▓▓▓ ▓▓▓ ▓▓▓ ▓▓ ▓▓▓▓ ▓ ▓▓▓ ▓▓▓ ▓▓ ▓ ▓▓▓ ▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓ ▓▓▓▓ ▓▓ ▓▓ ▓▓▓ ▓▓▓▓ ▓ ▓▓▓ -#▓ ▓▓▓▓ ▓▓▓▓▓ ▓▓▓ ▓ ▓▓▓ ▓▓▓▓ ▓ ▓▓▓ ▓▓▓ ▓▓ ▓ ▓▓▓ ▓▓▓▓▓▓▓▓▓ ▓▓▓ ▓▓ ▓▓ ▓▓▓ ▓▓ ▓▓▓ ▓▓▓▓ ▓ ▓ -#█ ████ ████ ████ ██████ ████ ███ █ █ ██ ██ █ ███████████ ██████ █████ ██ ███ ████ █████ █ -#██████████████ █████ ██████████████████████████████████████████████████████████████████████████████████████████████████████ ██ - - - - -#----------# -# MONITORS # -#----------# - -monitor=eDP-1, 2880x1800@60, 0x0, 1.5 -# monitor=,highres highrr, auto, 1 - - -#-----------------------# -# LAUNCHING OF PROGRAMS # -#-----------------------# -exec-once = dunst -# exec-once = wl-clipboard-history -t -exec-once = ~/.config/hypr/xdg-portal-hyprland -exec-once = dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP XAUTHORITY DISPLAY -exec-once = systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP -exec-once = /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1 -exec-once = waybar -exec-once = hypridle - -# exec-once = openrgb --startminimized -# exec-once = polychromatic-tray-applet -# exec-once = blueman-applet -exec-once = nm-applet -exec-once = nextcloud - -exec = swaybg -m fill -i /home/janis/Pictures/arch-bg.png - -exec = hyprctl setcursor oreo_spark_blue_cursors 36 -env = QT_QPA_PLATFORM,wayland -env = QT_QPA_PLATFORM_THEME,qt6ct -# env = GDK_SCALE,2 -# env = GDK_DPI_SCALE,0.75 - -env = HYPRCURSOR_THEME, Oreo_spark_blue_cursor -env = X_CURSOR_THEME, Oreo_spark_blue_cursor -env = XCURSOR_SIZE,24 -# env = ELECTRON_OZONE_PLATFORM_HINT,wayland - -#-------# -# INPUT # -#-------# -input { - kb_layout = ch - natural_scroll = true - - numlock_by_default = true - - follow_mouse = 2 - mouse_refocus = true - - touchpad { - disable_while_typing = true - natural_scroll = true - } - - sensitivity = 0 # -1.0 - 1.0, 0 means no modification. -} - - -#----------------# -# GENERAL CONFIG # -#----------------# -general { - # See https://wiki.hyprland.org/Configuring/Variables/ for more - - gaps_in = 3 - gaps_out = 10 - border_size = 1 - col.active_border = rgba(2288ffee) rgba(a6f7adff) 45deg - col.inactive_border = rgba(595959aa) - - layout = master - no_border_on_floating = false -} - -decoration { - # See https://wiki.hyprland.org/Configuring/Variables/ for more - inactive_opacity = 1 - rounding = 10 - - shadow { - enabled = false - range = 4 - color = rgba(1a1a1aee) - } - - blur { - enabled = false - xray = true - new_optimizations = true - size = 1 - passes = 2 - } - dim_inactive = true - dim_strength = 0.1 -} - -animations { - enabled = yes - - # Some default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more - - bezier = myBezier, 0.05, 0.9, 0.1, 1.05 - - animation = windows, 1, 7, myBezier - animation = windowsOut, 1, 7, default, popin 80% - animation = border, 1, 10, default - animation = fade, 1, 7, default - animation = workspaces, 1, 6, default -} - -misc { - disable_hyprland_logo = true - disable_splash_rendering = false - vrr = 2 - vfr = 1 - allow_session_lock_restore = true -} - -dwindle { - # See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more - pseudotile = yes # master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below - preserve_split = yes # you probably want this -} - -master { - # See https://wiki.hyprland.org/Configuring/Master-Layout/ for more -} - -gestures { - # See https://wiki.hyprland.org/Configuring/Variables/ for more - workspace_swipe = true - workspace_swipe_distance = 300 -} - -cursor { - no_warps = false - inactive_timeout = 60 -} - -xwayland { - force_zero_scaling = true -} - - -# Display full sized (without gaps), if only window on screen -workspace = w[tv1], gapsout:0, gapsin:0 -workspace = f[1], gapsout:0, gapsin:0 -windowrulev2 = bordersize 0, floating:0, onworkspace:w[tv1] -windowrulev2 = rounding 0, floating:0, onworkspace:w[tv1] -windowrulev2 = bordersize 0, floating:0, onworkspace:f[1] -windowrulev2 = rounding 0, floating:0, onworkspace:f[1] - - -# See https://wiki.hyprland.org/Configuring/Keywords/ for more -$mainMod = SUPER - -# WINDOW RULES -windowrule = float, title:^(.*)(rofi)(.*)$ -# windowrule = size 800 900, title:^(.*)(rofi)(.*)$ -windowrule = animation popin, title:^(.*)(rofi)(.*)$ -windowrule = center, title:^(.*)(rofi)(.*)$ -windowrule = move 1450 50, title:^(.*)(Power menu)$ -windowrule = workspace 2, evince -windowrule = workspace 2, okular -windowrule = fullscreen, title:wlogout -windowrule = workspace 2, title:^(.*)(LibreWolf)(.*)$ -windowrule = workspace 2, title:^(.*)(WebCord)(.*)$ -windowrule = workspace 3, title:^(Steam)(.*)$ -windowrule = workspace 1, title:^(.*)(VSCodium)$ -windowrule = workspace 3, minecraft-launcher -windowrule = tile, minecraft-launcher -windowrule = fullscreen, title:^(.*)Minecraft*(.*)$ -windowrule = workspace 3, title:^(.*)Minecraft*(.*)$ -# Hide terminator -windowrule = float, title:^(.*)hidden-terminator(.*)$ -windowrule = size 0 0, title:^(.*)hidden-terminator(.*)$ -windowrule = move 3000 0, title:^(.*)hidden-terminator(.*)$ -windowrule = workspace 1, title:^(.*)hidden-terminator(.*)$ - -windowrule = float, file_progress -windowrule = float, confirm -windowrule = float, dialog -windowrule = float, download -windowrule = float, notification -windowrule = float, error -windowrule = float, splash -windowrule = float, confirmreset -windowrule = float, title:Open File -windowrule = float, title:branchdialog -windowrule = float, Lxappearance -windowrule = float, title:^(Media viewer)$ -windowrule = float, title:^(Volume Control)$ -windowrule = float, title:^(Picture-in-Picture)$ -windowrule = float, title:^(Loading)(.*)$ -windowrule = float, pavucontrol-qt -windowrule = float, pavucontrol -windowrule = float, file-roller -windowrule = idleinhibit always, ^(Steam)$ -windowrule = idleinhibit focus, ^(Rocket League)(.*)$ -windowrule = fullscreen, ^(Steam Big Picture)$ -windowrule = idleinhibit always, steam -windowrule = idleinhibit always, lutris -windowrule = idleinhibit focus, vlc -windowrule = idleinhibit focus, supertuxkart -windowrule = idleinhibit fullscreen, title:^(.*)(WebCord)(.*)$ -windowrule = idleinhibit fullscreen, title:^(.*)(~)(.*)$ -windowrule = idleinhibit focus, title:^(.*)(~)(.*)$ -windowrule = idleinhibit focus, title:^(.*)(LibreWolf)(.*)$ - -# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more -bind = $mainMod, Q, killactive -bind = $mainMod SHIFT, Q, exit -bind = $mainMod, Return, exec, kitty -# bind = $mainMod, Return, exec, terminator -bind = $mainMod, C, killactive, -bind = $mainMod, E, exec, thunar -bind = $mainMod, V, togglefloating, -bind = $mainMod, F, fullscreen, - -# Launch commands -bind = $mainMod SHIFT, L, exec, librewolf -bind = $mainMod SHIFT, K, exec, librewolf http://localhost:8080/admin && librewolf http://localhost:8081/test/login -bind = $mainMod SHIFT, D, exec, terminator --title "hidden-terminator" -e "GDK_SCALE=2 webcord && exit" -# bind = $mainMod SHIFT, D, exec, webcord -# bind = $mainMod SHIFT, V, exec, terminator --title "hidden-terminator" -e "GDK_SCALE=2 codium && exit" -bind = $mainMod SHIFT, V, exec, codium -bind = $mainMod SHIFT, T, exec, thunderbird -bind = $mainMod SHIFT, M, exec, systemctl start docker && terminator -e "sudo docker run -it --network=host --device=/dev/kfd --device=/dev/dri --ipc=host --shm-size 16G --group-add video --cap-add=SYS_PTRACE --security-opt seccomp=unconfined -v /home/janis/projects:/mnt rocm/pytorch:latest" -# bind = $mainMod SHIFT, G, exec, notify-send 'Preparing system for gaming...' && /usr/lib/polkit-kde-authentication-agent-1 && notify-send 'Starting CoreCtrl...' && corectrl -bind = $mainMod SHIFT, G, exec, notify-send 'Preparing system for gaming...' && corectrl -bind = $mainMod SHIFT, P, exec, notify-send 'Steam is launching...' && steam -bind = $mainMod SHIFT, R, exec, notify-send 'START CORECTRL! (Super + Shift + G twice). Launching in Remoteplay optimised session' && steam -pipewire -bind = $mainMod CTRL, K, exec, notify-send 'Insta-Kill activated' && hyprctl kill - -# Screenshots -bind = $mainMod SHIFT, S, exec, grimblast --notify copy area -bind = $mainMod CTRL, S, exec, grimblast --notify copysave area -bind = $mainMod ALT, S, exec, grimblast --notify save area -bind = , PRINT, exec, grimblast --notify copy screen -bind = CTRL, PRINT, exec, grimblast --notify copysave screen -bind = SHIFT, PRINT, exec, grimblast --notify save screen - -# Rofi commands -bind = $mainMod, Space, exec, killall rofi || rofi -show combi -modes combi -combi-modes "window,drun,run" -bind = $mainMod SHIFT, Space, exec, rofi -modi "Global Search":"~/.config/rofi/spotlight/rofi-spotlight.sh" -show "Global Search" -config ~/.config/rofi/spotlight/rofi.rasi -bind = $mainMod, P, exec, killall rofi || rofi -show p -modi p:rofi-power-menu -theme ~/.config/rofi/themes/power.rasi - -# Logout commands -bind = $mainMod, escape, exec, wlogout -bind = $mainMod, L, exec, hyprlock -#bind = $mainMod, L, exec, swaylock --screenshots --clock --indicator --grace 10 --fade-in 2 --effect-blur 10x10 --indicator-radius 200 --ring-color ff0202 --show-failed-attempts --effect-greyscale --effect-vignette 0.6:0.6 - -# Move focus with mainMod + arrow keys -bind = $mainMod, left, movefocus, l -bind = $mainMod, right, movefocus, r -bind = $mainMod, up, movefocus, u -bind = $mainMod, down, movefocus, d - -# Switch workspaces with mainMod + [0-9] -bind = $mainMod, 1, workspace, 1 -bind = $mainMod, 2, workspace, 2 -bind = $mainMod, 3, workspace, 3 -bind = $mainMod, 4, workspace, 4 -bind = $mainMod, 5, workspace, 5 -bind = $mainMod, 6, workspace, 6 -bind = $mainMod, 7, workspace, 7 -bind = $mainMod, 8, workspace, 8 -bind = $mainMod, 9, workspace, 9 -bind = $mainMod, 0, workspace, 10 -bind = $mainMod ALT, left, workspace, e-1 -bind = $mainMod ALT, right, workspace, e+1 - - -# Move active window to a workspace with mainMod + SHIFT + [0-9] -bind = $mainMod SHIFT, 1, movetoworkspace, 1 -bind = $mainMod SHIFT, 2, movetoworkspace, 2 -bind = $mainMod SHIFT, 3, movetoworkspace, 3 -bind = $mainMod SHIFT, 4, movetoworkspace, 4 -bind = $mainMod SHIFT, 5, movetoworkspace, 5 -bind = $mainMod SHIFT, 6, movetoworkspace, 6 -bind = $mainMod SHIFT, 7, movetoworkspace, 7 -bind = $mainMod SHIFT, 8, movetoworkspace, 8 -bind = $mainMod SHIFT, 9, movetoworkspace, 9 -bind = $mainMod SHIFT, 0, movetoworkspace, 10 -bind = $mainMod SHIFT, left, movetoworkspace, e-1 -bind = $mainMod SHIFT, right, movetoworkspace, e+1 - -# Scroll through existing workspaces with mainMod + scroll -bind = $mainMod, mouse_down, workspace, e+1 -bind = $mainMod, mouse_up, workspace, e-1 - -# Tile window to a part of the screen -bind = $mainMod CTRL, left, movewindow, left -bind = $mainMod CTRL, right, movewindow, right - -# move to next window / previous window with ALT + Tab / SHIFT + ALT + Tab -bind = ALT SHIFT, tab, cyclenext, prev -# bind = ALT, tab, cyclenext, next -# bind = ALT CTRL, tab, focusurgentorlast -bind = ALT, tab, focusurgentorlast - -# Master layout commands -bind = $mainMod CTRL, M, layoutmsg, swapwithmaster -bind = $mainMod SHIFT, A, layoutmsg, addmaster -bind = $mainMod SHIFT CTRL, right, layoutmsg, orientationnext -bind = $mainMod SHIFT CTRL, left, layoutmsg, orientationprev - -# Move/resize windows with mainMod + LMB/RMB and dragging -bindm = $mainMod, mouse:272, movewindow -bindm = $mainMod, mouse:273, resizewindow - - -# Freeze -bind = $mainMod SHIFT, escape, exec, hyprfreeze -a - - -# Volume control -bind = ,code:123, exec, pamixer -i 5 -bind = ,code:122, exec, pamixer -d 5 -bind = ,code:121, exec, pamixer -t - - -# Brightness-Control -bind = ,code:232, exec, light -U 5 && notify-send 'Display brightness decreased by 5%' -bind = ,code:233, exec, light -A 5 && notify-send 'Display brightness increased by 5%' - - -# Monitor config binds -bind = $mainMod CTRL, D, exec, hyprctl keyword monitor HDMI-A-1, 1920x1080@60, 1920x0, 1, mirror, eDP-1 && notify-send 'Set to mirror internal display' -bind = $mainMod CTRL, E, exec, hyprctl keyword monitor HDMI-A-1, 1920x1080@60, 1920x0, 1 && notify-send 'Set to expand external display' - -# Internal display controls -bind = $mainMod ALT, E, exec, hyprctl keyword monitor eDP-1, 2880x1800@60, 0x0, 1.5 && notify-send 'Set to battery optimized display settings' -bind = $mainMod ALT, P, exec, hyprctl keyword monitor eDP-1, preferred, 0x0, 1.5 && notify-send 'Set to performance optimized display settings' diff --git a/laptop/configs/hypr/wall_4K.png b/laptop/configs/hypr/wall_4K.png deleted file mode 100755 index f835a97..0000000 Binary files a/laptop/configs/hypr/wall_4K.png and /dev/null differ diff --git a/laptop/configs/waybar/config.jsonc b/laptop/configs/waybar/config.jsonc deleted file mode 100755 index cadc950..0000000 --- a/laptop/configs/waybar/config.jsonc +++ /dev/null @@ -1,145 +0,0 @@ -{ - "layer": "top", - "position": "top", - "mod": "dock", - "exclusive": true, - "passthrough": false, - "gtk-layer-shell": true, - "height": 0, - "modules-left": [ - "clock", - "cpu", - "memory", - "battery", - "backlight", - "hyprland/workspaces" - ], - "modules-center": ["hyprland/window"], - "modules-right": [ - "tray", - "network", - "pulseaudio", - "pulseaudio#microphone", - "keyboard-state", - ], - "keyboard-state": { - "capslock": true, - "interval": 1, - "format": { - "capslock": "{icon}", - }, - "binding-keys": [1, 69, 70], - "format-icons": { - "locked": "", - "unlocked": "" - } - }, - "hyprland/window": { - "format": "{}" - }, - "tray": { - "icon-size": 14, - "spacing": 8 - }, - "network": { - "format-disconnected": " Net", - "format-wifi": "{icon} {essid}", - "format-ethernet": " Wired", - "tooltip-format-ethernet": "Ethernet\nInterface: {ifname}\nIP: {ipaddr}\nUp/Down (bps): {bandwidthUpBits}/{bandwidthDownBits}", - "tooltip-format-wifi": "Wi-Fi\nSSID: {essid}\nIP: {ipaddr}\nSignal strength: {signalStrength}%\nUp/Down (bps): {bandwidthUpBits}/{bandwidthDownBits}\nFrequency: {frequency}GHz", - "tooltip-format-disconnected": "Networking\n{ifname} disconnected", - "on-click": "terminator -x nmtui", - "format-icons": ["", "", "", ""] - }, - "battery":{ - "states": { - "95": 100, - "85": 90, - "75": 80, - "65": 70, - "55": 60, - "45": 50, - "35": 40, - "25": 30, - "15": 20, - "5": 10, - "critical": 0, - }, - "format":" {capacity}", - "format-95": " {capacity}", - "format-85": " {capacity}", - "format-75": " {capacity}", - "format-65": " {capacity}", - "format-55": " {capacity}", - "format-45": " {capacity}", - "format-35": " {capacity}", - "format-25": " {capacity}", - "format-15": " {capacity}", - "format-15": " {capacity}", - "format-critical": " {capacity}", - "format-charging":" {capacity}", - "format-plugged": " ", - "format-full": " 100", - "format-empty": " ({capacity}%)", - "tooltip-format":"Battery\nCurrently {timeTo}\nCurrently drawing: {power}W\nBattery status: {capacity}%" - }, - "backlight": { - "stages": { - "high": 50, - "low": 0, - }, - "format": "🌣 {percent}", - "format-high": " {percent}", - "format-low": " {percent}", - "tooltip-format": "Brightness\n🌣 {percent}", - "on-scroll-up": "light -A 1", - "on-scroll-down": "light -U 1" - }, - "clock": { - "format": "{:%a, %d.%m %H:%M:%S}", - "tooltip-format": "Calendar\n{calendar}", - "interval": 1 - }, - "hyprland/workspaces": { - "disable-scroll": true, - "all-outputs": true, - "on-click": "activate", - "format": "{icon}" - }, - "cpu": { - "tooltip-format": "CPU\nTotal: {usage}", - "format": " {usage}", - "interval": 5 - }, - "memory": { - "format": " {percentage}", - "interval": 5 - }, - "pulseaudio": { - "format": "{icon} {volume}", - "tooltip": true, - "format-muted": " Off", - "on-click": "pamixer -t", - "on-scroll-up": "pamixer -i 5", - "on-scroll-down": "pamixer -d 5", - "scroll-step": 5, - "format-icons": { - "headphone": "", - "hands-free": "", - "headset": "", - "phone": "", - "portable": "", - "car": "🏎", - "default": ["", "", ""] - } - }, - "pulseaudio#microphone": { - "format": "{format_source}", - "format-source": " {volume}", - "format-source-muted": " 0", - "on-click": "pamixer --default-source -t", - "on-scroll-up": "pamixer --default-source -i 5", - "on-scroll-down": "pamixer --default-source -d 5", - "scroll-step": 5 - } -} diff --git a/laptop/configs/waybar/scripts/supower.py b/laptop/configs/waybar/scripts/supower.py deleted file mode 100755 index a534143..0000000 --- a/laptop/configs/waybar/scripts/supower.py +++ /dev/null @@ -1,196 +0,0 @@ -#!/usr/bin/python -# pylint: disable=missing-module-docstring -import json -import sys -import time -import dbus -import click - -FBOOL = ('no', 'yes') -PROPERTIES = { - 'BatteryLevel': ('unknown', 'none', 'low', 'critical', 'normal', 'high', 'full'), - 'Capacity': None, - 'Energy': None, - 'EnergyEmpty': None, - 'EnergyFull': None, - 'EnergyFullDesign': None, - 'EnergyRate': None, - 'HasHistory': FBOOL, - 'HasStatistics': FBOOL, - 'IconName': None, - 'IsPresent': FBOOL, - 'IsRechargeable': FBOOL, - 'Luminosity': None, - 'Model': None, - 'NativePath': None, - 'Online': FBOOL, - 'Percentage': None, - 'PowerSupply': FBOOL, - 'Serial': None, - 'State': ('unknown', 'charging', 'discharging', 'empty', 'fully charged', - 'pending charge','pending discharge'), - 'Technology': ('unknown', 'lithium ion', 'lithium polymer', 'lithium iron phosphate', - 'lead acid', 'nickel cadmium', 'nickel metal hydride'), - 'Temperature': None, - 'TimeToEmpty': None, - 'TimeToFull': None, - 'Type': ('unknown', 'line-power', 'battery', 'ups', 'monitor', 'mouse', 'keyboard', - 'pda', 'phone', 'media-player', 'tablet', 'computer', 'gaming_input', - 'pen', 'touchpad', 'modem', 'network', 'headset', 'speakers', - 'headphones', 'video', 'other_audio', 'remote_control', 'printer', 'scanner', - 'camera', 'wearable', 'toy', 'bluetooth-generic'), - 'UpdateTime': None, - 'Vendor': None, - 'Voltage': None, - 'WarningLevel': ('unknown', 'none', 'discharging', 'low', 'critical', 'action') -} - - -def get_tooltip(_type): - #TOOLTIP_OTHER=""" luminosity: {Luminosity}""" I don't have a way to test this property - header = ('native-path: {NativePath}' - '\npower supply: {PowerSupply}' - '\nupdated: {UpdateTime}' - '\nhas history: {HasHistory}' - '\nhas statistics: {HasStatistics}') - - body = ('\n{Type}' - '\n warning-level: {WarningLevel}' - '\n icon-name: {IconName}') - - if _type == 'line-power': - body += '\n online: {Online}' - - else: - header += ('\nmodel: {Model}' - '\nserial: {Serial}') - - body += ('\n percentage: {Percentage}%' - '\n present: {IsPresent}') - - if _type == "battery": - header += ('\nvendor: {Vendor}') - body += ('\n state: {State}' - '\n rechargeable: {IsRechargeable}' - '\n energy: {Energy} Wh' - '\n energy-empty: {EnergyEmpty} Wh' - '\n energy-full: {EnergyFull} Wh' - '\n energy-full-design: {EnergyFullDesign} Wh' - '\n energy-rate: {EnergyRate} W' - '\n voltage: {Voltage} V' - '\n capacity: {Capacity}%' - '\n technology: {Technology}' - '\n temperature: {Temperature}' - '\n time-to-empty: {TimeToEmpty}' - '\n time-to-full: {TimeToFull}' - '\n battery-level: {BatteryLevel}') - - return f'{header}{body}' - - -def device_info(bus, device): - """Lookup device properties""" - result = {} - device_proxy = bus.get_object('org.freedesktop.UPower', device) - device_interface = dbus.Interface(device_proxy, 'org.freedesktop.DBus.Properties') - for _property, friendly_name in PROPERTIES.items(): - try: - data = device_interface.Get('org.freedesktop.UPower.Device', _property) - if _property == 'UpdateTime': - result[_property] = time.ctime(data) - else: - result[_property] = friendly_name[data] if friendly_name else data - except (dbus.exceptions.DBusException, IndexError): - result[_property] = 'none' - - return result - - -def get_devices(bus): - """Retrieve list of Upower devices""" - devices_proxy = bus.get_object('org.freedesktop.UPower', '/org/freedesktop/UPower') - devices_interface = dbus.Interface(devices_proxy, 'org.freedesktop.UPower') - devices = devices_interface.EnumerateDevices() - - return devices - - -def get_device(bus, devices, device): - """Retrieve Upower device using path or model""" - - if device in devices: - return device - - for path in devices: - inspect = device_info(bus, path) - if inspect.get('Model') == device: - return path - - raise Exception("Device Not Found") - - -def output_devices(bus, devices): - """Output device list""" - for device in devices: - print(f'{device}\t{device_info(bus, device).get("Model")}') - sys.exit(0) - -def check_device(key, info): - sys.exit(FBOOL.index(info.get(key.replace('{','').replace('}', '')))) - - -@click.command() -@click.option('--list-devices', is_flag=True, help='List devices and models') -@click.option('--check', help='Exists using boolean values for device') -@click.option('--device', '--model', help='Path or Model') -@click.option('--text', show_default=True, default="{Model}") -@click.option('--alt', show_default=True, default="{BatteryLevel}") -@click.option('--tooltip', default=None, help="Similar to upower -i ") -@click.option('--class', '_class', show_default=True, default="{BatteryLevel}") -@click.option('--percentage', show_default=True, default="{Percentage:.0f}") -def main(list_devices, check, device, text, alt, tooltip, _class, percentage): - """ - TEXT can be replaced using one or more {KEY}\n - {BatteryLevel} {Capacity} {Energy} {EnergyEmpty} {EnergyFull} - {EnergyFullDesign} {EnergyRate} {HasHistory} {HasStatistics} - {IconName} {IsPresent} {IsRechargeable} {Luminosity} - {Model} {NativePath} {Online} {Percentage} {PowerSupply} - {Serial} {State} {Technology} {Temperature} {TimeToEmpty} - {TimeToFull} {Type} {UpdateTime} {Vendor} {Voltage} - {WarningLevel} - - Example: supower.py --model 'MX Master 2S' --tooltip '{State}' - supower.py --model '/org/freedesktop/UPower/devices/line_power_AC' --check Online - - """ - exit = 0 - bus = dbus.SystemBus() - devices = get_devices(bus) - - if list_devices: - output_devices(bus, devices) - - try: - device = get_device(bus, devices, device) - info = device_info(bus, device) - if check: - check_device(check, info) - - output = { - "text": text.format(**info), - "alt": alt.format(**info), - "tooltip": (tooltip if tooltip else get_tooltip(info['Type'])).format(**info), - "class": _class.format(**info), - "percentage": float(percentage.format(**info)) - } - except Exception as error: - output = {"text": f'Error {device.split("/")[-1]} {error}', 'tooltip': f'{error}'} - exit = 2 - - print(json.dumps(output)) - sys.exit(exit) - - -if __name__ == "__main__": - # pylint: disable=no-value-for-parameter - main() \ No newline at end of file diff --git a/laptop/configs/waybar/style.css b/laptop/configs/waybar/style.css deleted file mode 100755 index 64901a7..0000000 --- a/laptop/configs/waybar/style.css +++ /dev/null @@ -1,140 +0,0 @@ -* { - border: none; - border-radius: 0; - font-family: 'FluentSystemIcons-Regular,Comfortaa', monospace; - font-weight: 600; - font-size: 16px; - min-height: 0; - margin-left: 3px; - margin-right: 3px; -} - -window#waybar { - background: rgba(0, 0, 0, 0); - color: #cdd6f4; -} - -tooltip { - background: #1e1e2e; - border-radius: 10px; - border-width: 2px; - border-style: solid; - border-color: #11111b; -} - -#workspaces button { - padding: 3px; - color: #313244; - margin-right: 5px; -} - -#workspaces button.active { - color: #a6adc8; -} - -#workspaces button.focused { - color: #a6adc8; - background: #eba0ac; - border-radius: 10px; -} - -#workspaces button.urgent { - color: #11111b; - background: #a6e3a1; - border-radius: 10px; -} - -#workspaces button:hover { - background: #11111b; - color: #cdd6f4; - border-radius: 10px; -} - -#workspaces { - background: #1e1e2e; - border-radius: 10px; - margin-left: 10px; - padding-right: 0px; - padding-left: 5px; -} - -#window, -#clock, -#custom-powerMenu, -#pulseaudio, -#memory, -#battery, -#backlight, -#tray, -#network, -#workspaces, -#keyboard-state, -#cpu { - background: #000024; - padding: 2px 12px; - margin: 3px 2px; - margin-top: 9px; - border: 1px solid #181825; - border-radius: 10px; -} - -#tray { - border-radius: 10px; - margin-right: 10px; -} - -#cpu { - margin-right: 0; - border-radius: 10px 0px 0px 10px; - background-color: #222244; -} - -#memory, #battery { - color: #89b4fa; - margin-left: 0; - margin-right: 0; - border-radius: 0px; - background-color: #222244; -} - -#backlight { - color: #89b4fa; - margin-left: 0; - border-radius: 0px 10px 10px 0px; - background-color: #222244; -} - -#battery.critical { - color: orange; -} - -#battery.empty { - color: red; -} - -#window { - border-radius: 10px; - margin-left: 60px; - margin-right: 60px; -} - -#clock { - color: #a6f7ad; - min-width: 145px; -} - -#pulseaudio { - color: #89b4fa; - border-left: 0px; - border-right: 0px; -} - -#pulseaudio.microphone { - color: #a6f7ad; - border-left: 0px; - border-right: 0px; -} - -#keyboard-state { - color: #89b4fa; -} diff --git a/laptop/environment b/laptop/environment deleted file mode 100644 index ec041a4..0000000 --- a/laptop/environment +++ /dev/null @@ -1,13 +0,0 @@ -# -# This file is parsed by pam_env module -# -# Syntax: simple "KEY=VAL" pairs on separate lines -# - -QT_QPA_PLATFORMTHEME=qt5ct -GCM_CREDENTIAL_STORE=secretservice -VKD3D_CONFIG=dxr11,dxr -RADV_PERFTEST_RT=1 -QT_QPA_PLATFORM=wayland -GTK_THEME=Material-Black-Blueberry -QT_STYLE_OVERRIDE=kvantum diff --git a/laptop/grub b/laptop/grub deleted file mode 100644 index f09a5b8..0000000 --- a/laptop/grub +++ /dev/null @@ -1,63 +0,0 @@ -# GRUB boot loader configuration - -GRUB_DEFAULT=0 -GRUB_TIMEOUT=5 -GRUB_DISTRIBUTOR="Arch" -GRUB_CMDLINE_LINUX_DEFAULT="loglevel=3 quiet splash" -GRUB_CMDLINE_LINUX="" - -# Preload both GPT and MBR modules so that they are not missed -GRUB_PRELOAD_MODULES="part_gpt part_msdos" - -# Uncomment to enable booting from LUKS encrypted devices -#GRUB_ENABLE_CRYPTODISK=y - -# Set to 'countdown' or 'hidden' to change timeout behavior, -# press ESC key to display menu. -GRUB_TIMEOUT_STYLE=menu - -# Uncomment to use basic console -GRUB_TERMINAL_INPUT=console - -# Uncomment to disable graphical terminal -#GRUB_TERMINAL_OUTPUT=console - -# The resolution used on graphical terminal -# note that you can use only modes which your graphic card supports via VBE -# you can see them in real GRUB with the command `videoinfo' -GRUB_GFXMODE=auto - -# Uncomment to allow the kernel use the same resolution used by grub -GRUB_GFXPAYLOAD_LINUX=keep - -# Uncomment if you want GRUB to pass to the Linux kernel the old parameter -# format "root=/dev/xxx" instead of "root=/dev/disk/by-uuid/xxx" -#GRUB_DISABLE_LINUX_UUID=true - -# Uncomment to disable generation of recovery mode menu entries -GRUB_DISABLE_RECOVERY=true - -# Uncomment and set to the desired menu colors. Used by normal and wallpaper -# modes only. Entries specified as foreground/background. -#GRUB_COLOR_NORMAL="light-blue/black" -#GRUB_COLOR_HIGHLIGHT="light-cyan/blue" - -# Uncomment one of them for the gfx desired, a image background or a gfxtheme -#GRUB_BACKGROUND="/path/to/wallpaper" - -# Uncomment to get a beep at GRUB start -#GRUB_INIT_TUNE="480 440 1" - -# Uncomment to make GRUB remember the last selection. This requires -# setting 'GRUB_DEFAULT=saved' above. -#GRUB_SAVEDEFAULT=true - -# Uncomment to disable submenus in boot menu -#GRUB_DISABLE_SUBMENU=y - -# Probing for other operating systems is disabled for security reasons. Read -# documentation on GRUB_DISABLE_OS_PROBER, if still want to enable this -# functionality install os-prober and uncomment to detect and include other -# operating systems. -GRUB_DISABLE_OS_PROBER=false -GRUB_THEME="/usr/share/grub/themes/monterey-grub-theme/theme.txt" diff --git a/laptop/installedPackages.txt b/laptop/installedPackages.txt deleted file mode 100644 index 19cb640..0000000 --- a/laptop/installedPackages.txt +++ /dev/null @@ -1,1537 +0,0 @@ -7zip -a52dec -aalib -abseil-cpp -accounts-qml-module -accountsservice -acl -acpi -adobe-source-code-pro-fonts -adwaita-cursors -adwaita-icon-theme -adwaita-icon-theme-legacy -alsa-card-profiles -alsa-lib -alsa-plugins -alsa-topology-conf -alsa-ucm-conf -aom -appstream -appstream-glib -aquamarine -archlinux-keyring -argon2 -aribb24 -ark -at-spi2-core -atkmm -attica -attr -audit -autoconf -autojump -automake -avahi -babl -baloo -base -base-devel -bash -bash-language-server -bashtop -bazel -biber -bind -binutils -bison -blas -blas64-openblas -blueman -bluez -bluez-libs -bluez-qt -bluez-qt5 -boost-libs -botan2 -brave-bin -breeze-icons -bridge-utils -brotli -bubblewrap -bzip2 -c-ares -ca-certificates -ca-certificates-mozilla -ca-certificates-utils -cairo -cairomm -cairomm-1.16 -cantarell-fonts -cdparanoia -cfitsio -cheese -chromaprint -clutter -clutter-gst -clutter-gtk -cmake -cmark -cmatrix -cogl -colord -composer -containerd -convertlit -coreutils -cpio -cppdap -cpupower-gui -cracklib -cryptsetup -curl -dav1d -db5.3 -dbus -dbus-broker -dbus-broker-units -dbus-glib -dconf -debugedit -default-cursors -desktop-file-utils -device-mapper -diffutils -discount -djvulibre -dnssec-anchors -docker -double-conversion -duktape -dunst -dvisvgm -e2fsprogs -ebook-tools -eclipse-java-bin -editline -editorconfig-core-c -efibootmgr -efivar -electron34 -elementary-icon-theme -enchant -evtest -exiv2 -exo -expat -faac -faad2 -fakeroot -fcitx5 -fcitx5-configtool -fcitx5-qt -ffcall -ffmpeg -ffmpeg4.4 -fftw -file -filesystem -filezilla -findutils -fish -flac -flex -fluidsynth -fmt -fontconfig -freeglut -freetype2 -frei0r-plugins -fribidi -fuse-common -fuse3 -garcon -gawk -gc -gcc -gcc-libs -gcr -gcr-4 -gd -gdbm -gdk-pixbuf2 -gegl -geoclue -gettext -ghc-libs -ghex -ghostscript -giflib -gimp -girara -git -git-credential-manager-core-bin -gjs -glib-networking -glib2 -glibc -glibmm -glibmm-2.68 -glslang -glu -gmp -gnome-characters -gnome-desktop -gnome-desktop-4 -gnome-desktop-common -gnome-disk-utility -gnome-font-viewer -gnome-keyring -gnome-themes-extra -gnome-tweaks -gnome-video-effects -gnulib-l10n -gnupg -gnutls -go -gobject-introspection -gobject-introspection-runtime -gperftools -gpgme -gpm -graphene -graphite -grep -grim -grimblast-git -groff -grub -gsettings-desktop-schemas -gsettings-system-schemas -gsfonts -gsm -gssdp -gst-libav -gst-plugin-pipewire -gst-plugins-bad -gst-plugins-bad-libs -gst-plugins-base -gst-plugins-base-libs -gst-plugins-good -gstreamer -gtest -gtk-layer-shell -gtk-update-icon-cache -gtk2 -gtk3 -gtk4 -gtkmm-4.0 -gtkmm3 -gtksourceview4 -guile -gupnp -gupnp-igd -gvfs -gwenview -gzip -handbrake -harfbuzz -harfbuzz-icu -haskell-aeson -haskell-aeson-pretty -haskell-ansi-terminal -haskell-ansi-terminal-types -haskell-ansi-wl-pprint -haskell-appar -haskell-asn1-encoding -haskell-asn1-parse -haskell-asn1-types -haskell-assoc -haskell-async -haskell-attoparsec -haskell-attoparsec-aeson -haskell-attoparsec-iso8601 -haskell-auto-update -haskell-base-compat -haskell-base-compat-batteries -haskell-base-orphans -haskell-base-unicode-symbols -haskell-base16-bytestring -haskell-base64-bytestring -haskell-basement -haskell-bifunctors -haskell-bitvec -haskell-blaze-builder -haskell-blaze-html -haskell-blaze-markup -haskell-boring -haskell-bsb-http-chunked -haskell-byteorder -haskell-call-stack -haskell-case-insensitive -haskell-cassava -haskell-cereal -haskell-citeproc -haskell-cmdargs -haskell-colour -haskell-commonmark -haskell-commonmark-extensions -haskell-commonmark-pandoc -haskell-comonad -haskell-conduit -haskell-conduit-extra -haskell-constraints -haskell-contravariant -haskell-cookie -haskell-crypton -haskell-crypton-connection -haskell-crypton-x509 -haskell-crypton-x509-store -haskell-crypton-x509-system -haskell-crypton-x509-validation -haskell-data-array-byte -haskell-data-default -haskell-data-default-class -haskell-data-default-instances-containers -haskell-data-default-instances-dlist -haskell-data-default-instances-old-locale -haskell-data-fix -haskell-dec -haskell-digest -haskell-distributive -haskell-djot -haskell-dlist -haskell-doclayout -haskell-doctemplates -haskell-easy-file -haskell-emojis -haskell-erf -haskell-fast-logger -haskell-file-embed -haskell-foldable1-classes-compat -haskell-generically -haskell-ghc-bignum-orphans -haskell-glob -haskell-gridtables -haskell-haddock-library -haskell-hashable -haskell-hourglass -haskell-hslua -haskell-hslua-aeson -haskell-hslua-classes -haskell-hslua-core -haskell-hslua-list -haskell-hslua-marshalling -haskell-hslua-module-doclayout -haskell-hslua-module-path -haskell-hslua-module-system -haskell-hslua-module-text -haskell-hslua-module-version -haskell-hslua-module-zip -haskell-hslua-objectorientation -haskell-hslua-packaging -haskell-hslua-repl -haskell-hslua-typing -haskell-http-api-data -haskell-http-client -haskell-http-client-tls -haskell-http-date -haskell-http-media -haskell-http-types -haskell-http2 -haskell-hunit -haskell-indexed-traversable -haskell-indexed-traversable-instances -haskell-integer-logarithms -haskell-iproute -haskell-ipynb -haskell-isocline -haskell-jira-wiki-markup -haskell-juicypixels -haskell-lexer -haskell-libyaml -haskell-lpeg -haskell-lua -haskell-memory -haskell-mime-types -haskell-mmorph -haskell-monad-control -haskell-mono-traversable -haskell-network -haskell-network-byte-order -haskell-network-uri -haskell-old-locale -haskell-old-time -haskell-onetuple -haskell-only -haskell-optparse-applicative -haskell-ordered-containers -haskell-os-string -haskell-pandoc -haskell-pandoc-lua-engine -haskell-pandoc-lua-marshal -haskell-pandoc-server -haskell-pandoc-types -haskell-pem -haskell-pretty-show -haskell-prettyprinter -haskell-primitive -haskell-psqueues -haskell-quickcheck -haskell-random -haskell-recv -haskell-regex-base -haskell-regex-tdfa -haskell-resourcet -haskell-safe -haskell-safe-exceptions -haskell-scientific -haskell-semialign -haskell-semigroupoids -haskell-servant -haskell-servant-server -haskell-sha -haskell-simple-sendfile -haskell-singleton-bool -haskell-skylighting -haskell-skylighting-core -haskell-skylighting-format-ansi -haskell-skylighting-format-blaze-html -haskell-skylighting-format-context -haskell-skylighting-format-latex -haskell-socks -haskell-some -haskell-sop-core -haskell-split -haskell-splitmix -haskell-statevar -haskell-streaming-commons -haskell-strict -haskell-syb -haskell-tagged -haskell-tagsoup -haskell-temporary -haskell-texmath -haskell-text-conversions -haskell-text-icu -haskell-text-short -haskell-th-abstraction -haskell-th-compat -haskell-th-lift -haskell-th-lift-instances -haskell-these -haskell-time-compat -haskell-time-manager -haskell-tls -haskell-toml-parser -haskell-transformers-base -haskell-transformers-compat -haskell-type-equality -haskell-typed-process -haskell-typst -haskell-typst-symbols -haskell-unicode-collation -haskell-unicode-data -haskell-unicode-transforms -haskell-uniplate -haskell-unix-compat -haskell-unix-time -haskell-unliftio -haskell-unliftio-core -haskell-unordered-containers -haskell-utf8-string -haskell-uuid-types -haskell-vault -haskell-vector -haskell-vector-algorithms -haskell-vector-stream -haskell-wai -haskell-wai-app-static -haskell-wai-cors -haskell-wai-extra -haskell-wai-logger -haskell-warp -haskell-witherable -haskell-word8 -haskell-xml -haskell-xml-conduit -haskell-xml-types -haskell-yaml -haskell-zip-archive -haskell-zlib -hicolor-icon-theme -hidapi -highway -hslua-cli -http-parser -hugo -hunspell -hwdata -hwloc -hyphen -hyprcursor -hyprevents-git -hyprfreeze-git -hyprgraphics -hypridle -hyprland -hyprland-qt-support -hyprland-qtutils -hyprlang -hyprlock -hyprprop-git -hyprutils -hyprwayland-scanner -iana-etc -ibus -icu -ijs -imagemagick -imath -imlib2 -inetutils -iproute2 -iptables -iputils -iso-codes -jansson -jasper -java-environment-common -java-runtime-common -jbig2dec -jbigkit -jdk-openjdk -jdk21-openjdk -jdtls -jemalloc -jq -js115 -js128 -json-c -json-glib -jsoncpp -julia -kaccounts-integration -karchive -kate -kauth -kauth5 -kbd -kbookmarks -kcmutils -kcodecs -kcodecs5 -kcolorpicker -kcolorscheme -kcompletion -kconfig -kconfig5 -kconfigwidgets -kconfigwidgets5 -kcoreaddons -kcoreaddons5 -kcrash -kdbusaddons -kdbusaddons5 -kdnssd -keyutils -kfilemetadata -kglobalaccel -kguiaddons -kguiaddons5 -ki18n -ki18n5 -kiconthemes -kidletime -kimageannotator -kio -kirigami -kitemmodels -kitemviews -kitemviews5 -kitty -kitty-shell-integration -kitty-terminfo -kjobwidgets -kmines -kmod -knewstuff -knotifications -knotifications5 -kpackage -kparts -kpty -krb5 -kservice -kservice5 -ktexteditor -ktextwidgets -kuserfeedback -kvantum -kwallet -kwallet5 -kwidgetsaddons -kwidgetsaddons5 -kwindowsystem -kwindowsystem5 -kxmlgui -l-smash -lame -lapack -lazygit -lcms2 -ldns -leancrypto -lensfun -less -lib32-acl -lib32-alsa-lib -lib32-alsa-plugins -lib32-audit -lib32-brotli -lib32-bzip2 -lib32-curl -lib32-dbus -lib32-e2fsprogs -lib32-expat -lib32-fontconfig -lib32-freetype2 -lib32-gcc-libs -lib32-gettext -lib32-glib2 -lib32-glibc -lib32-harfbuzz -lib32-icu -lib32-json-c -lib32-keyutils -lib32-krb5 -lib32-libcap -lib32-libdrm -lib32-libelf -lib32-libffi -lib32-libgcrypt -lib32-libglvnd -lib32-libgpg-error -lib32-libidn2 -lib32-libldap -lib32-libnghttp2 -lib32-libnghttp3 -lib32-libnl -lib32-libnsl -lib32-libpcap -lib32-libpciaccess -lib32-libpng -lib32-libpng12 -lib32-libpsl -lib32-libssh2 -lib32-libtasn1 -lib32-libtirpc -lib32-libunistring -lib32-libunwind -lib32-libx11 -lib32-libxau -lib32-libxcb -lib32-libxcrypt -lib32-libxcrypt-compat -lib32-libxcursor -lib32-libxdmcp -lib32-libxext -lib32-libxfixes -lib32-libxi -lib32-libxkbcommon -lib32-libxml2 -lib32-libxrandr -lib32-libxrender -lib32-libxshmfence -lib32-libxss -lib32-libxxf86vm -lib32-llvm-libs -lib32-lm_sensors -lib32-mesa -lib32-ncurses -lib32-nspr -lib32-nss -lib32-openssl -lib32-p11-kit -lib32-pam -lib32-pcre2 -lib32-spirv-tools -lib32-sqlite -lib32-systemd -lib32-util-linux -lib32-vulkan-icd-loader -lib32-vulkan-radeon -lib32-wayland -lib32-xcb-util-keysyms -lib32-xz -lib32-zlib -lib32-zstd -libaccounts-glib -libaccounts-qt -libadwaita -libao -libappindicator-gtk3 -libarchive -libass -libassuan -libasyncns -libatasmart -libavc1394 -libavif -libavtp -libb2 -libblastrampoline -libblockdev -libblockdev-crypto -libblockdev-fs -libblockdev-loop -libblockdev-mdraid -libblockdev-nvme -libblockdev-part -libblockdev-swap -libbluray -libbpf -libbs2b -libbsd -libbytesize -libcaca -libcamera -libcamera-ipa -libcanberra -libcap -libcap-ng -libcdio -libcdio-paranoia -libcheese -libcloudproviders -libcolord -libcpuid -libcups -libdaemon -libdatrie -libdbusmenu-glib -libdbusmenu-gtk3 -libdbusmenu-qt5 -libdc1394 -libdca -libde265 -libdecor -libdeflate -libdisplay-info -libdovi -libdrm -libdv -libdvbpsi -libdvdnav -libdvdread -libebml -libebur128 -libedit -libei -libelf -libepoxy -libevdev -libevent -libexif -libfdk-aac -libffi -libfilezilla -libfontenc -libfreeaptx -libgcrypt -libgexiv2 -libgirepository -libgit2 -libglvnd -libgme -libgpg-error -libgtop -libgudev -libgusb -libhandy -libheif -libibus -libice -libidn -libidn2 -libiec61883 -libimobiledevice -libimobiledevice-glue -libinih -libinput -libinstpatch -libisl -libjpeg-turbo -libjxl -libkdcraw -libkdegames -libkexiv2 -libkeybinder3 -libksba -liblc3 -libldac -libldap -libliftoff -liblqr -liblrdf -libltc -libluv -libmad -libmanette -libmatroska -libmaxminddb -libmd -libmfx -libmicrodns -libmm-glib -libmng -libmnl -libmodplug -libmpc -libmpcdec -libmpdclient -libmpeg2 -libmspack -libmypaint -libmysofa -libndp -libnet -libnetfilter_conntrack -libnewt -libnfnetlink -libnftnl -libnghttp2 -libnghttp3 -libngtcp2 -libnice -libnl -libnm -libnma -libnma-common -libnotify -libnsl -libnvme -libogg -libomxil-bellagio -libopenmpt -libp11-kit -libpaper -libpcap -libpciaccess -libpgm -libpipeline -libpipewire -libplacebo -libplist -libpng -libpng12 -libproxy -libpsl -libpulse -libpwquality -libqalculate -libqt5xdg -libqxp -libraqm -libraw -libraw1394 -librevenge -librewolf-bin -librewolf-bin-debug -librsvg -librsync -libsamplerate -libsasl -libseccomp -libsecret -libshout -libsigc++ -libsigc++-3.0 -libsigsegv -libsixel -libsm -libsndfile -libsodium -libsoup -libsoup3 -libsoxr -libspectre -libspiro -libspng -libsrtp -libssh -libssh2 -libstemmer -libsynctex -libsysprof-capture -libtar -libtasn1 -libteam -libthai -libtheora -libtiff -libtirpc -libtommath -libtool -libunibreak -libunistring -libunwind -libupnp -liburcu -libusb -libusbmuxd -libutempter -libutf8proc -libuv -libva -libvdpau -libverto -libvlc -libvorbis -libvpl -libvpx -libvterm -libwacom -libwebp -libwireplumber -libwmf -libwnck3 -libx11 -libxau -libxaw -libxcb -libxcomposite -libxcrypt -libxcrypt-compat -libxcursor -libxcvt -libxdamage -libxdg-basedir -libxdmcp -libxext -libxfce4ui -libxfce4util -libxfce4windowing -libxfixes -libxfont2 -libxft -libxi -libxinerama -libxkbcommon -libxkbcommon-x11 -libxkbfile -libxklavier -libxml2 -libxmlb -libxmu -libxpm -libxpresent -libxrandr -libxrender -libxres -libxshmfence -libxslt -libxss -libxt -libxtst -libxv -libxxf86vm -libyaml -libyuv -libzip -licenses -light -light-debug -lilv -linux -linux-api-headers -linux-firmware -linux-firmware-whence -lld -llhttp -llvm-julia-libs -llvm-libs -lm_sensors -lmdb -lowdown -lsb-release -lsof -lua -lua-language-server -lua-lpeg -lua51-lpeg -luajit -luarocks -lv2 -lz4 -lzo -m4 -mailcap -make -man-db -maven -mbedtls2 -md4c -mdadm -media-player-info -meld -mesa -mesa-utils -meson -minizip -mjpegtools -mkinitcpio -mkinitcpio-busybox -mobile-broadband-provider-info -mpdecimal -mpfr -mpg123 -mpv -msgpack-c -mtdev -mujs -mypaint-brushes1 -nano -ncurses -ncurses5-compat-libs -neofetch -neon -neovim -nettle -network-manager-applet -networkmanager -nextcloud-client -ninja -nix -nix-busybox -nlohmann-json -nm-connection-editor -nmap -node-gyp -nodejs-lts-jod -nodejs-nopt -noto-fonts -noto-fonts-emoji -npm -npth -nspr -nss -numactl -nwg-look -oath-toolkit -ocl-icd -okular -onetbb -oniguruma -openal -openblas64 -openconnect -opencore-amr -openexr -openh264 -openjpeg2 -openlibm -openssh -openssl -openvr -opus -orc -p11-kit -pacman -pacman-mirrorlist -pam -pambase -pamixer -pandoc-cli -pango -pangomm -pangomm-2.48 -parted -patch -pavucontrol -pciutils -pcre -pcre2 -pcsclite -perl -perl-alien-build -perl-alien-libxml2 -perl-autovivification -perl-b-hooks-endofscope -perl-business-isbn -perl-business-isbn-data -perl-business-ismn -perl-business-issn -perl-capture-tiny -perl-class-accessor -perl-class-data-inheritable -perl-class-inspector -perl-class-load -perl-class-singleton -perl-clone -perl-data-compare -perl-data-dump -perl-data-optlist -perl-data-uniqid -perl-datetime -perl-datetime-calendar-julian -perl-datetime-format-builder -perl-datetime-format-strptime -perl-datetime-locale -perl-datetime-timezone -perl-devel-stacktrace -perl-dist-checkconflicts -perl-encode-locale -perl-error -perl-eval-closure -perl-exception-class -perl-exporter-tiny -perl-ffi-checklib -perl-file-chdir -perl-file-find-rule -perl-file-listing -perl-file-sharedir -perl-file-sharedir-install -perl-file-slurp-tiny -perl-file-slurper -perl-file-which -perl-html-parser -perl-html-tagset -perl-http-cookiejar -perl-http-cookies -perl-http-daemon -perl-http-date -perl-http-message -perl-http-negotiate -perl-io-html -perl-io-socket-ssl -perl-io-string -perl-ipc-run3 -perl-libwww -perl-lingua-translit -perl-list-allutils -perl-list-moreutils -perl-list-moreutils-xs -perl-list-someutils -perl-list-utilsby -perl-log-log4perl -perl-lwp-mediatypes -perl-lwp-protocol-https -perl-mailtools -perl-math-round -perl-mime-charset -perl-module-implementation -perl-module-runtime -perl-mozilla-ca -perl-mro-compat -perl-namespace-autoclean -perl-namespace-clean -perl-net-http -perl-net-ssleay -perl-number-compare -perl-package-deprecationmanager -perl-package-stash -perl-package-stash-xs -perl-params-util -perl-params-validate -perl-params-validationcompiler -perl-parse-recdescent -perl-path-tiny -perl-perlio-utf8-strict -perl-regexp-common -perl-role-tiny -perl-sort-key -perl-specio -perl-sub-exporter -perl-sub-exporter-progressive -perl-sub-identify -perl-sub-install -perl-test-fatal -perl-text-bibtex -perl-text-csv -perl-text-glob -perl-text-roman -perl-tie-cycle -perl-timedate -perl-try-tiny -perl-unicode-linebreak -perl-uri -perl-variable-magic -perl-www-robotrules -perl-xml-libxml -perl-xml-libxml-simple -perl-xml-libxslt -perl-xml-namespacesupport -perl-xml-sax -perl-xml-sax-base -perl-xml-writer -phonon-qt6 -phonon-qt6-vlc -php -pinentry -pipewire -pipewire-alsa -pipewire-audio -pipewire-jack -pipewire-pulse -pipewire-session-manager -pixman -pkgconf -plasma-activities -playerctl -plymouth -polkit -polkit-gnome -polkit-kde-agent -polkit-qt5 -polkit-qt6 -poppler -poppler-data -poppler-glib -poppler-qt6 -popt -portaudio -potrace -powertop -prettier -prismlauncher -procps-ng -psmisc -pugixml -purpose -pyright -python -python-attrs -python-autocommand -python-cairo -python-cffi -python-colorama -python-configobj -python-cryptography -python-dbus -python-fastjsonschema -python-filelock -python-gobject -python-greenlet -python-inflect -python-jaraco.collections -python-jaraco.context -python-jaraco.functools -python-jaraco.text -python-mako -python-markdown -python-markupsafe -python-more-itertools -python-msgpack -python-ordered-set -python-packaging -python-pip -python-platformdirs -python-psutil -python-pycparser -python-pygments -python-pynvim -python-pyxdg -python-setuptools -python-shtab -python-termcolor -python-tomli -python-tqdm -python-trove-classifiers -python-typeguard -python-typing_extensions -python-validate-pyproject -python-wheel -qalculate-gtk -qca-qt5 -qca-qt6 -qqc2-desktop-style -qrencode -qsynth -qt5-base -qt5-declarative -qt5-graphicaleffects -qt5-location -qt5-multimedia -qt5-quickcontrols2 -qt5-speech -qt5-svg -qt5-translations -qt5-wayland -qt5-webchannel -qt5-webengine -qt5-websockets -qt5-x11extras -qt5ct -qt6-5compat -qt6-base -qt6-declarative -qt6-imageformats -qt6-multimedia -qt6-multimedia-ffmpeg -qt6-networkauth -qt6-positioning -qt6-shadertools -qt6-speech -qt6-svg -qt6-translations -qt6-wayland -qt6-webchannel -qt6-webengine -qt6-websockets -qt6ct -qtkeychain-qt5 -qtkeychain-qt6 -quazip-qt6 -raptor -rav1e -re2 -readline -reflector -rhash -ripgrep -rofi -rofi-power-menu -rtkit -rtmpdump -rubberband -ruby -rubygems -runc -rustdesk -rustup -sbc -scdoc -sdbus-cpp -sddm -sdl2-compat -sdl2-debug -sdl3 -seahorse -seatd -sed -semver -serd -serpl -shaderc -shadow -shairplay -shared-mime-info -shfmt -signon-kwallet-extension -signon-plugin-oauth2 -signon-ui -signond -slang -slurp -smartmontools -snappy -sndio -socat -solid -sonnet -sonnet5 -sord -sound-theme-freedesktop -soundtouch -spandsp -spdlog -speex -speexdsp -spirv-tools -sqlite -sratom -srt -startup-notification -steam -stoken -stylua -sudo -suitesparse -svt-av1 -svt-hevc -swaybg -syndication -syntax-highlighting -systemd -systemd-libs -systemd-sysvcompat -taglib -tar -tcl -tdb -terminator -texinfo -texlab -texlive-basic -texlive-bibtexextra -texlive-bin -texlive-binextra -texlive-context -texlive-fontsextra -texlive-fontsrecommended -texlive-fontutils -texlive-formatsextra -texlive-games -texlive-humanities -texlive-langgerman -texlive-latex -texlive-latexextra -texlive-latexrecommended -texlive-luatex -texlive-mathscience -texlive-metapost -texlive-music -texlive-pictures -texlive-plaingeneric -texlive-pstricks -texlive-publishers -texlive-xetex -threadweaver -thunar -thunar-media-tags-plugin -thunar-volman -thunderbird -tinysparql -tk -tldr -tomlplusplus -tpm2-tss -tree-sitter -tree-sitter-c -tree-sitter-lua -tree-sitter-markdown -tree-sitter-query -tree-sitter-vim -tree-sitter-vimdoc -tslib -ttf-comfortaa -ttf-fantasque-nerd -ttf-fluentui-system-icons -ttf-iosevka-nerd -ttf-jetbrains-mono-nerd -ttf-nerd-fonts-symbols -ttf-nerd-fonts-symbols-common -tumbler -twolame -typescript -typescript-language-server -tzdata -uchardet -udisks2 -ufw -unibilium -unzip -upower -usbutils -util-linux -util-linux-libs -uxplay -uxplay-debug -v4l-utils -vapoursynth -verible-bin -verible-bin-debug -veridian-bin -veridian-bin-debug -vesktop-bin -vid.stab -vlc -vmaf -volume_key -vpnc -vscode-html-languageserver -vscodium -vte-common -vte3 -vulkan-headers -vulkan-icd-loader -vulkan-radeon -vulkan-validation-layers -wavpack -waybar -wayland -wayland-protocols -webcord-bin -webkit2gtk -webrtc-audio-processing-1 -wget -which -wildmidi -wine -wireplumber -wl-clipboard -wlogout -wlogout-debug -wlroots -woff2 -wpa_supplicant -wxwidgets-common -wxwidgets-gtk3 -x264 -x265 -xcb-imdkit -xcb-proto -xcb-util -xcb-util-cursor -xcb-util-errors -xcb-util-image -xcb-util-keysyms -xcb-util-renderutil -xcb-util-wm -xcb-util-xrm -xclip -xcur2png -xdg-dbus-proxy -xdg-desktop-portal -xdg-desktop-portal-hyprland -xdg-user-dirs -xdg-utils -xdotool -xf86-input-libinput -xfce4-appfinder -xfce4-notifyd -xfce4-panel -xfce4-power-manager -xfce4-session -xfce4-settings -xfconf -xfdesktop -xfwm4 -xfwm4-themes -xkeyboard-config -xmlsec -xorg-fonts-encodings -xorg-iceauth -xorg-server -xorg-server-common -xorg-setxkbmap -xorg-xauth -xorg-xinit -xorg-xinput -xorg-xkbcomp -xorg-xlsclients -xorg-xmodmap -xorg-xprop -xorg-xrandr -xorg-xrdb -xorg-xset -xorg-xwayland -xorgproto -xvidcore -xxhash -xz -y-cruncher -yay -yazi -zathura -zbar -zenity -zeromq -zimg -zip -zix -zlib -zstd -zvbi -zxing-cpp -zziplib diff --git a/laptop/mkinitcpio.conf b/laptop/mkinitcpio.conf deleted file mode 100644 index 2fd80a4..0000000 --- a/laptop/mkinitcpio.conf +++ /dev/null @@ -1,73 +0,0 @@ -# vim:set ft=sh -# MODULES -# The following modules are loaded before any boot hooks are -# run. Advanced users may wish to specify all system modules -# in this array. For instance: -# MODULES=(usbhid xhci_hcd) -MODULES=() - -# BINARIES -# This setting includes any additional binaries a given user may -# wish into the CPIO image. This is run last, so it may be used to -# override the actual binaries included by a given hook -# BINARIES are dependency parsed, so you may safely ignore libraries -BINARIES=() - -# FILES -# This setting is similar to BINARIES above, however, files are added -# as-is and are not parsed in any way. This is useful for config files. -FILES=() - -# HOOKS -# This is the most important setting in this file. The HOOKS control the -# modules and scripts added to the image, and what happens at boot time. -# Order is important, and it is recommended that you do not change the -# order in which HOOKS are added. Run 'mkinitcpio -H ' for -# help on a given hook. -# 'base' is _required_ unless you know precisely what you are doing. -# 'udev' is _required_ in order to automatically load modules -# 'filesystems' is _required_ unless you specify your fs modules in MODULES -# Examples: -## This setup specifies all modules in the MODULES setting above. -## No RAID, lvm2, or encrypted root is needed. -# HOOKS=(base) -# -## This setup will autodetect all modules for your system and should -## work as a sane default -# HOOKS=(base udev autodetect modconf block filesystems fsck) -# -## This setup will generate a 'full' image which supports most systems. -## No autodetection is done. -# HOOKS=(base udev modconf block filesystems fsck) -# -## This setup assembles a mdadm array with an encrypted root file system. -## Note: See 'mkinitcpio -H mdadm_udev' for more information on RAID devices. -# HOOKS=(base udev modconf keyboard keymap consolefont block mdadm_udev encrypt filesystems fsck) -# -## This setup loads an lvm2 volume group. -# HOOKS=(base udev modconf block lvm2 filesystems fsck) -# -## NOTE: If you have /usr on a separate partition, you MUST include the -# usr and fsck hooks. -HOOKS=(base udev autodetect modconf kms keyboard keymap consolefont block filesystems fsck plymouth) - -# COMPRESSION -# Use this to compress the initramfs image. By default, zstd compression -# is used. Use 'cat' to create an uncompressed image. -#COMPRESSION="zstd" -#COMPRESSION="gzip" -#COMPRESSION="bzip2" -#COMPRESSION="lzma" -#COMPRESSION="xz" -#COMPRESSION="lzop" -#COMPRESSION="lz4" - -# COMPRESSION_OPTIONS -# Additional options for the compressor -#COMPRESSION_OPTIONS=() - -# MODULES_DECOMPRESS -# Decompress kernel modules during initramfs creation. -# Enable to speedup boot process, disable to save RAM -# during early userspace. Switch (yes/no). -#MODULES_DECOMPRESS="yes" diff --git a/laptop/pacman.conf b/laptop/pacman.conf deleted file mode 100644 index 7d7c2fd..0000000 --- a/laptop/pacman.conf +++ /dev/null @@ -1,100 +0,0 @@ -# -# /etc/pacman.conf -# -# See the pacman.conf(5) manpage for option and repository directives - -# -# GENERAL OPTIONS -# -[options] -# The following paths are commented out with their default values listed. -# If you wish to use different paths, uncomment and update the paths. -#RootDir = / -#DBPath = /var/lib/pacman/ -#CacheDir = /var/cache/pacman/pkg/ -#LogFile = /var/log/pacman.log -#GPGDir = /etc/pacman.d/gnupg/ -#HookDir = /etc/pacman.d/hooks/ -HoldPkg = pacman glibc -#XferCommand = /usr/bin/curl -L -C - -f -o %o %u -#XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u -#CleanMethod = KeepInstalled -Architecture = auto -ILoveCandy -# Pacman won't upgrade packages listed in IgnorePkg and members of IgnoreGroup -#IgnorePkg = -#IgnoreGroup = - -#NoUpgrade = -#NoExtract = - -# Misc options -#UseSyslog -Color -#NoProgressBar -CheckSpace -#VerbosePkgLists -ParallelDownloads = 5 - -# By default, pacman accepts packages signed by keys that its local keyring -# trusts (see pacman-key and its man page), as well as unsigned packages. -SigLevel = Required DatabaseOptional -LocalFileSigLevel = Optional -#RemoteFileSigLevel = Required - -# NOTE: You must run `pacman-key --init` before first using pacman; the local -# keyring can then be populated with the keys of all official Arch Linux -# packagers with `pacman-key --populate archlinux`. - -# -# REPOSITORIES -# - can be defined here or included from another file -# - pacman will search repositories in the order defined here -# - local/custom mirrors can be added here or in separate files -# - repositories listed first will take precedence when packages -# have identical names, regardless of version number -# - URLs will have $repo replaced by the name of the current repo -# - URLs will have $arch replaced by the name of the architecture -# -# Repository entries are of the format: -# [repo-name] -# Server = ServerName -# Include = IncludePath -# -# The header [repo-name] is crucial - it must be present and -# uncommented to enable the repo. -# - -# The testing repositories are disabled by default. To enable, uncomment the -# repo name header and Include lines. You can add preferred servers immediately -# after the header, and they will be used before the default mirrors. - -#[testing] -#Include = /etc/pacman.d/mirrorlist - -[core] -Include = /etc/pacman.d/mirrorlist - -[extra] -Include = /etc/pacman.d/mirrorlist - -#[extra-testing] -#Include = /etc/pacman.d/mirrorlist - -# If you want to run 32 bit applications on your x86_64 system, -# enable the multilib repositories as required here. - -#[multilib-testing] -#Include = /etc/pacman.d/mirrorlist - -[multilib] -Include = /etc/pacman.d/mirrorlist - -[arch4edu] -Server = https://de.arch4edu.mirror.kescher.at/$arch - -# An example of a custom package repository. See the pacman manpage for -# tips on creating your own repositories. -#[custom] -#SigLevel = Optional TrustAll -#Server = file:///home/custompkgs diff --git a/laptop/vscode-extensions b/laptop/vscode-extensions deleted file mode 100644 index f96a2b0..0000000 --- a/laptop/vscode-extensions +++ /dev/null @@ -1,36 +0,0 @@ -aaron-bond.better-comments -abusaidm.html-snippets -bungcip.better-toml -dbaeumer.vscode-eslint -dlasagno.rasi -donjayamanne.jquerysnippets -ecmel.vscode-html-css -Equinusocio.vsc-community-material-theme -Equinusocio.vsc-material-theme -equinusocio.vsc-material-theme-icons -ev3dev.ev3dev-browser -eww-yuck.yuck -fivethree.vscode-hugo-snippets -formulahendry.auto-rename-tag -golang.go -hollowtree.vue-snippets -Ionic.ionic -James-Yu.latex-workshop -lllllllqw.jsdoc -mads-hartmann.bash-ide-vscode -mathematic.vscode-latex -mechatroner.rainbow-csv -ms-python.python -ms-vscode.cpptools -NilsSoderman.sitemap-generator -quicktype.quicktype -rust-lang.rust-analyzer -Shan.code-settings-sync -spences10.robots-txt -streetsidesoftware.code-spell-checker -streetsidesoftware.code-spell-checker-german -svelte.svelte-vscode -tecosaur.latex-utilities -valentjn.vscode-ltex -Vue.volar -wayou.vscode-todo-highlight diff --git a/notes.md b/notes.md new file mode 100644 index 0000000..77475be --- /dev/null +++ b/notes.md @@ -0,0 +1,72 @@ +# Needed Colours +- accent_colour_1 +- accent_colour_2 +- accent_colour_3 +- primary_colour +- background_colour +- shadow_colour +- inactive_colour + +# TODO +- [ ] Astal + - [x] Bar + - [x] Notifications + - [x] Quick controls + - [ ] ~Wlogout replacement~ + - [x] Media controls + - [ ] AppLauncher (possibly, if anyrun is no good, probably not) + - [ ] OSD (see [here](https://github.com/Aylur/astal/tree/main/examples/gtk3/js)) + - [x] Open Window List for bar when hovering over window title and per-workspace when hovering over workspace +- [ ] Text recognition +- [ ] Theming + - [x] Vivado dark mode + - [x] GTK + - [x] QT (via environment variable) + - [x] ~Librewolf~ + - [x] Astal + - [x] Hyprland + - [x] Rofi + - [x] ~nvim~ + - [x] yazi + - [x] kitty + - [ ] DisplayManager (see https://github.com/apognu/tuigreet?tab=readme-ov-file#theming and https://github.com/ratatui/ratatui/blob/main/ratatui-core/src/style/color.rs) + - [ ] Cursor (maybe stick with oreo cursor, or otherwise find good replacement) +- [x] Rofi + - [x] ~Spotlight-Search (or replace with anyrun) or multiple modes with different keybinds~ + - [x] ~Wallpaper selector (that automatically triggers the theming script)~ +- [x] Kitty + - [x] ~Configure colours~ +- [ ] Hyprland + - [ ] Keybinds: Resize window, move window, open calculator, plus more programs + - [ ] Read docs + - [ ] battery management +- [ ] Programs + - [ ] New image viewer (eog, vimiv) + - [x] Other pdf reader (maybe -> zathura) + - [x] Maybe TUI archive manager (~felix-rs~, ouch in yazi) +- [ ] Lazygit: Configure +- [ ] Nvim (other repo) + - [x] Replace notification handler (noice) + - [ ] Configure formatters (of Java, Cpp, TS/JS/Vue, Python) + - [ ] Maybe: Add extra configs to commentbox + - [ ] Remove trouble (useless for my purposes) +- [ ] Yazi + - [x] More keybinds + - [ ] Configure + - [ ] Drag and drop support? + - [ ] Check out plugins + - [x] Use as file picker +- [ ] SDDM + - [ ] Replace with LightDM or ensure theming works, but prefer replacing, consider greetd + tuigreet +- [ ] Scripts + - [ ] Installer (after the basic OS setup is done (= from chroot onwards)) + - [x] Theming script + - [x] Installer for configs + - [ ] Vivado cleanup (run after vivado and hope vivado is blocking (or simply execute vivado in /tmp)) + - [x] migrate to zoxide from autojump + - [ ] properly swap escape and caps (at lowest level possible) + + +Using astal (https://aylur.github.io/astal, which is gjs based), write a component that takes as argument a UIComponent array (pre-defined interface) and depending on what subclass of that interface it is renders a different component for each element. +I have the type definitions of UIComponent below. The possible subclasses are LargeUIComponent, MediumUIComponent, ListUIComponent and CalculationUIComponent. +Design-wise, I would like to have something similar to GNOME's layout. diff --git a/pc/.bash_history b/pc/.bash_history deleted file mode 100644 index e691e82..0000000 --- a/pc/.bash_history +++ /dev/null @@ -1,500 +0,0 @@ -pyinstaller imagevideoupscaler.spec -./imagevideoupscaler -./imagevideoupscaler -pyinstaller imagevideoupscaler.spec -./imagevideoupscaler -pyinstaller imagevideoupscaler.spec -pyinstaller imagevideoupscaler.spec -./imagevideoupscaler -pyinstaller imagevideoupscaler.spec -./imagevideoupscaler -pyinstaller imagevideoupscaler-cli.py --onefile --name imagevideoupscaler --hidden-import "bin.engines" -./imagevideoupscaler -pyinstaller imagevideoupscaler-cli.py --onefile --name imagevideoupscaler -python3 imagevideoupscaler-cli.py -i ~/Downloads/test.mp4 -o ~/Downloads/test_us.mp4 -python3 imagevideoupscaler-cli.py -i ~/Downloads/test.mp4 -o ~/Downloads/test_us.mp4 -pyinstaller imagevideoupscaler-cli.py --name imagevideoupscaler -cd dist/imagevideoupscaler/ -./imagevideoupscaler -i -cd ../.. -cd ~/projects/FSRImageVideoUpscalerFrontend_New/ -ls -clear -ls -clear -yay -S rpm-build -yay -S rpm-tools -yay -S dpkg -yay -S fakeroot -clear -pip3 install py2deb -py2deb -r ./ -py2deb -r ~/projects/FSRImageVideoUpscalerFrontend_New/ -pip3 install symbol -clear -yay -S symbol -clear -pip3 install pyinstaller -yay -S python-pip -py2deb -python3 imagevideoupscaler-cli.py -clear -pip3 install symbol -pip3 install setuptools -yay -R python-pip -yay -S python-pip -pip install --upgrade pip -clear -pip install setuptools -yay -S setuptools -sudo pacman -Syu "pacman>=6.0.2-7" -pip3 -yay -S python-pip -yay -S python3-pip -clear -yay -S python-pip -pip3 install -python -m pip3 -python -m pip -pip -pip3 -clear -pip3 -pip3 install -python3 imagevideoupscaler-cli.py -i ~/Downloads/test.mp4 -o ~/Downloads/test_us.mp4 -python3 imagevideoupscaler-cli.py -i ~/Downloads/test.mp4 -o ~/Downloads/test_us.mp4 -python3 imagevideoupscaler-cli.py -i ~/Downloads/test.mp4 -o ~/Downloads/test_us.mp4 -python3 imagevideoupscaler-cli.py -i ~/Downloads/test.mp4 -o ~/Downloads/test_us.mp4 -s 2 -clear -python3 imagevideoupscaler-cli.py -i ~/Downloads/test.mp4 -o ~/Downloads/test_us.mp4 -E ss -python3 imagevideoupscaler-cli.py -i ~/Downloads/test.mp4 -o ~/Downloads/test_us.mp4 -E ss -python3 imagevideoupscaler-cli.py -i ~/Downloads/test.mp4 -o ~/Downloads/test_us.mp4 -E ss -python3 imagevideoupscaler-cli.py -i ~/Downloads/test.mp4 -o ~/Downloads/test_us.mp4 -E ss -s 2 -clear -python3 imagevideoupscaler-cli.py -i ~/Downloads/test.mp4 -o ~/Downloads/test_us.mp4 -E fsr -s 2 -python3 imagevideoupscaler-cli.py -i ~/Downloads/test.mp4 -o ~/Downloads/test_us.mp4 -E fsr -M c -s 2 -clear -python3 imagevideoupscaler-cli.py -i ~/Downloads/test.mp4 -o ~/Downloads/test_us.mp4 -E fsr -s 2 -python3 imagevideoupscaler-cli.py -i ~/Downloads/test.mp4 -o ~/Downloads/test_us.mp4 -E ss -s 2 -python3 imagevideoupscaler-cli.py -i ~/Downloads/test.mp4 -o ~/Downloads/test_us.mp4 -E ss -s 2 -npm run serve -npm run serve -npm run serve -npm i -npm run serve -clear -cd ../../website/ -cd dist/ -http-server -http-server -git pull origin main -git checkout origin master -git checkout origin main -cd frontend/ -npm run electron:serve -npm i -g @vue/cli -sudo npm i -g @vue/cli -npm audit fix --force -npm audit fix --force -npm audit fix --force -npm i -npm i -npm run electron:serve -npm run electron:serve -npm run electron:serve -npm i child_process -clear -npm run electron:serve -npm run serve -npm run serve -npm run serve -cd .. -ls -clear -python3 imagevideoupscaler-cli.py -h -python3 imagevideoupscaler-cli.py -p -python3 imagevideoupscaler-cli.py -h -python3 imagevideoupscaler-cli.py -d ss -cd frontend/ -npm run electron:serve -npm run electron:serve -npm run electron:serve -npm run electron:serve -npm run electron:serve -npm run electron:serve -npm run electron:serve -npm i --save-dev @electron-forge/cli -npm exec --package=@electron-forge/cli -c "electron-forge import" -npm run make -cd src/ -npm run make -clear -cd .. -npm run electron:build -npm run electron:build -- --linux deb --win nsis -clear -npm run electron:build -- --linux deb --win nsis -npm run electron:build -- --linux deb --win nsis -npm run electron:build -- --linux deb --win nsis -npm run electron:build -- --linux deb --win nsis -npm run electron:build -- --linux deb --win nsis -yay -S libcript -yay -S libssl -clear -npm run electron:build -- --linux deb --linux rpm --win nsis -npm run electron:build -- --linux deb rpm --win nsis -yay -S libxcrypt-compat -npm run electron:build -- --linux deb rpm --win nsis -npm run electron:build -- --linux deb rpm --win nsis -cd ../packaging/ -ls -sudo chmod +x package.sh -./package.sh -mv --help -pip3 install pyinstaller -./package.sh -./package.sh -./package.sh -./package.sh -./package.sh -./package.sh -./package.sh -./package.sh -./package.sh -./package.sh -cd packaging/ -ls -sudo chmod +x package.sh -sudo chmod +x package.sh -./package.sh -./package.sh -./package.sh -cd ../dist/imagevideoupscaler/ -cd ../../frontend/ -npm run electron:serve -npm run electron:serve -npm run electron:serve -npm run electron:serve -npm run electron:serve -npm run electron:serve -npm run electron:serve -npm run electron:serve -npm run electron:serve -cd ../packaging/ -./package.sh -clear -cd ../frontend/ -npm run electron:serve -cd ../packaging/ -./package.sh -cd ../frontend/ -npm run electron:serve -npm run electron:serve -cd ../packaging/ -./package.sh -clear -cd ../frontend/ -npm run electron:serve -npm run electron:serve -npm run electron:serve -./imagevideoupscaler -./imagevideoupscaler -i /home/janis/Downloads/test.mp4 -o ~/Downloads/test_us.mp4 -s 2 -S 0.25 -clear -npm run electron:serve -npm run electron:serve -npm run electron:serve -npm run electron:serve -npm run electron:serve -npm run electron:serve -npm run electron:serve -npm run electron:serve -npm run electron:serve -npm i socket.io -npm run electron:serve -npm run electron:serve -npm run electron:serve -npm i socket.io-client -npm run electron:serve -npm run electron:serve -npm run electron:serve -npm run electron:serve -npm run electron:serve -cd ../packaging/ -sudo chmod +x ./prepareWindowsPackaging.sh -./prepareWindowsPackaging.sh -wine python -m pip install pyinstaller -./package.sh -./package.sh -wine python -m PyInstaller -./package.sh -cd ../frontend/dist_electron/ -wine imagevideoupscaler\ Setup\ 2.0.0-dev1.exe -clear -cd ../../packaging/ -clear -cd ../frontend/ -npm run electron:serve -cd .. -python3 imagevideoupscaler-cli.py -d ss -cd frontend/ -npm run electron:serve -npm run electron:serve -cd ../packaging/ -./package.sh -sudo chmod +x packageWindows.sh -sudo chmod +x packageLinux.sh -./packageWindows.sh -./packageWindows.sh -cd .. -python3 imagevideoupscaler-cli.py -h -cd frontend/ -npm run serve -npm run electron:serve -npm run electron:serve -cd ../frontend/ -cd ../packaging/ -./packageWindows.sh -cd ../frontend/ -npm run electron:serve -npm run electron:serve -npm run electron:serve -npm run electron:serve -npm i electron -npm run electron:serve -npm run electron:serve -npm run electron:serve -npm run electron:serve -npm run electron:serve -npm run electron:serve -npm run electron:serve -npm run electron:serve -npm run electron:serve -npm run electron:serve -npm run electron:serve -npm run electron:serve -npm run electron:serve -npm run electron:serve -npm run electron:serve -npm run electron:serve -npm run electron:serve -npm run electron:serve -cd ../packaging/ -sudo chmod +x startTesting.sh -sudo chmod +x stopTesting.sh -clear -./startTesting.sh -cd ../frontend/ -npm run serve -npm run electron:serve -npm run electron:serve -cd ../packaging/ -./stopTesting.sh -./stopTesting.sh -./packageWindows.sh -cd .. -python3 imagevideoupscaler-cli.py -i /home/janis/projects/FSRImageVideoUpscalerFrontend_New/logo.png -python3 imagevideoupscaler-cli.py -i /home/janis/projects/FSRImageVideoUpscalerFrontend_New/logo.png -python3 imagevideoupscaler-cli.py -i /home/janis/projects/FSRImageVideoUpscalerFrontend_New/logo.png -python3 imagevideoupscaler-cli.py -i /home/janis/projects/FSRImageVideoUpscalerFrontend_New/logo.png -s 2 -cd ../fro -cd frontend/ -npm run serve -npm run electron:serve -cd ../packaging/ -./package.sh -./stopTesting.sh -./package.sh -./package.sh -cd ../frontend/ -npm run electron:serve -cd ../packaging/ -./packageWindows.sh -cd src/webapp/ -npm run serve -./packageWindows.sh -cd ../frontend/ -wine ./smuL-cli.exe -cd ../packaging/ -clear -./stopTesting.sh -./packageLinux.sh -cd ../frontend/ -./smuL-cli -clear -cd ../packaging/ -./stopTesting.sh -./packageWindows.sh -wine -m pip install importlib -clear -./stopTesting.sh -./prepareWindowsPackaging.sh -clear -cd ../ -wine python ./smuL-cli.py -wine python ./smuL-cli.py -wine python ./smuL-cli.py -wine python ./smuL-cli.py -wine python ./smuL-cli.py -wine python ./smuL-cli.py -wine python ./smuL-cli.py -cd packaging/ -./stopTesting.sh -./packageWindows.sh -cd ../frontend/dist_electron/ -wine ./SimpleMediaScalerLite\ Setup\ 2.0.0-dev1.exe -clear -cd ../../packaging/ -./packageWindows.sh -cd ../frontend/ -wine ./smuL-cli.exe -h -wine ./smuL-cli.exe -i ~/Downloads/test.png -s 2 -cd ../packaging/ -./stopTesting.sh -./packageWindows.sh -cd ../frontend/ -wine ./smuL-cli.exe -i ~/Downloads/test.png -s 2 -wine ./smuL-cli.exe -i ~/Downloads/test.png -s 2 -wine ./smuL-cli.exe -i ~/Downloads/test.png -s 2 -wine ./smuL-cli.exe -i ~/Downloads/test.png -s 2 -cd ../packaging/ -./stopTesting.sh -./packageWindows.sh -clear -cd ../frontend/ -wine ./smuL-cli.exe -i ~/Downloads/test.png -s 2 -clear -cd ../packaging/ -./stopTesting.sh -./packageWindows.sh -cd ../frontend/ -wine ./smuL-cli.exe -i ~/Downloads/test.png -s 2 -cd ../packaging/ -./stopTesting.sh -./packageWindows.sh -cd ../frontend/dist_electron/ -wine ./SimpleMediaScalerLite\ Setup\ 2.0.0-dev1.exe -wine ./SimpleMediaScalerLite\ Setup\ 2.0.0-dev1.exe -clear -cd ../../packaging/ -sudo chmod +x packageTesting.sh -./packageTesting.sh -cd ../frontend/dist_electron/linux-unpacked/ -ls -./simplemediascalerlite -cd ../../ -cd ../packag -cd ../packaging/ -./packageLinux.sh -./packageLinux.sh -./packageLinux.sh -./packageTesting.sh -./packageTesting.sh -./packageTesting.sh -./packageTesting.sh -./packageTesting.sh -./packageTesting.sh -./packageTesting.sh -./packageTesting.sh -./packageTesting.sh -./packageTesting.sh -./packageTesting.sh -./packageTesting.sh -./packageTesting.sh -./packageTesting.sh -./packageWindows.sh -cd ../frontend/dist_electron/ -wine SimpleMediaScalerLite\ Setup\ 2.0.0-dev1.exe -wine SimpleMediaScalerLite\ Setup\ 2.0.0-dev1.exe -clear -cd ../../packaging/ -./package.sh -cd .. -python3 smuL-cli.py -i /home/janis/Downloads/test.png -S 2 -python3 smuL-cli.py -i /home/janis/Downloads/test.mp4 -s 2 -python3 smuL-cli.py -i /home/janis/Downloads/test.mp4 -S 2 -python3 smuL-cli.py -i /home/janis/Downloads/test.mp4 -S 2 -python3 smuL-cli.py -i /home/janis/Downloads/test.mp4 -S 2 -python3 smuL-cli.py -i /home/janis/Downloads/test.mp4 -S 2 -python3 smuL-cli.py -i /home/janis/Downloads/test.mp4 -S 2 -python3 smuL-cli.py -i /home/janis/Downloads/test.mp4 -S 2 -python3 smuL-cli.py -i /home/janis/Downloads/test.mp4 -S 2 -python3 smuL-cli.py -i /home/janis/Downloads/test.mp4 -s 2 -clear -cd ./packaging/ -./packageWindows.sh -./packageWindows.sh -./packageWindows.sh -./packageWindows.sh -./package.sh -cd packag -cd packaging/ -./packageWindows.sh -./packageWindows.sh -cd ../../italian/ -http-server -node server.js -node server.js -node server.js -node server.js -node server.js -node server.js -node server.js -ls | grep -v jpg$ | while IFS= read -r FILENAME; do convert "${FILENAME}" "${FILENAME%.*}.jpg"; done -clear -for i in *.avi; do ffmpeg -i "$i" "${i%.*}.mp4"; done -for i in *.mov; do ffmpeg -i "$i" "${i%.*}.mp4"; done -rm ./*.mp4 -for i in *.mov; do ffmpeg -i "$i" "./Transcoded/${i%.*}.mp4"; done -for i in *.mov; do ffmpeg -i "$i" "./Transcoded/${i%.*}.mp4"; done -for i in *.mov; do ffmpeg -i "$i" "./Transcoded/${i%.*}.mp4"; done -file="/home/janis/dotfiles/config/vscode-extensions" -while read line; do vscodium --install-extension "${line}"; done < "${file}" -yay -S vscodium -clear -cp ./dotfiles/config/.bashrc .bashrc -clear -exit -clear -sudo plymouth-set-default-theme -R bgrt -cd dotfiles/ -sudo cp ./config/environment /etc/environment -sudo cp ./config/mkinitcpio.conf /etc/mkinitcpio.conf -sudo cp ./config/pacman.conf /etc/pacman.conf -clear -yay -Syu -clear -hugo -clear -cd /tmp -git clone https://github.com/rtlewis1/GTK/tree/Material-Black-Colors-Desktop -cd Material-Black-Colors-Desktop/ -sudo cp ./Material-Black-Blueberry /usr/share/themes -ls -git clone https://github.com/rtlewis1/GTK -cd gtk -cd GTK -git checkout Material-Black-Colors-Desktop -clear -ls -sudo cp ./Material-Black-Blueberry /usr/share/themes -sudo cp -r ./Material-Black-Blueberry /usr/share/themes -cd /tmp -git clone https://github.com/varlesh/oreo-cursors -cd oreo-cursors/generator -echo "black = #424242" > ./colours.conf -ruby convert.rb -cd .. -make build -sudo make install -ls -sudo make -sudo make build -make build -clear -cat build.sh -make build -clear -yay -S librewolf-bin -exit -file="/home/janis/dotfiles/config/vscode-extensions" -while read line; do vscodium --install-extension "${line}"; done < "${file}" diff --git a/pc/.bashrc b/pc/.bashrc deleted file mode 100755 index 95b0a32..0000000 --- a/pc/.bashrc +++ /dev/null @@ -1,359 +0,0 @@ -# -# ~/.bashrc -# - -# If not running interactively, don't do anything -[[ $- != *i* ]] && return - -export PATH="/home/janis/.local/share/gem/ruby/3.0.0/bin: $PATH" -export PATH="/home/janis/.local/bin: $PATH" -alias editHyprlandConf='nano ~/.config/hypr/hyprland.conf' -alias ls='ls -l --color=auto' -alias ll='ls -la --color=auto' -alias sl='ls --color=auto' -alias start-httpd='sudo systemctl start httpd' -PS1='[\u@\h \W]\$ ' - -################################################################################ -## FUNCTIONS ## -################################################################################ - -## -## ARRANGE $PWD AND STORE IT IN $NEW_PWD -## * The home directory (HOME) is replaced with a ~ -## * The last pwdmaxlen characters of the PWD are displayed -## * Leading partial directory names are striped off -## /home/me/stuff -> ~/stuff (if USER=me) -## /usr/share/big_dir_name -> ../share/big_dir_name (if pwdmaxlen=20) -## -## Original source: WOLFMAN'S color bash promt -## https://wiki.chakralinux.org/index.php?title=Color_Bash_Prompt#Wolfman.27s -## -bash_prompt_command() { - # How many characters of the $PWD should be kept - local pwdmaxlen=25 - - # Indicate that there has been dir truncation - local trunc_symbol=".." - - # Store local dir - local dir=${PWD##*/} - - # Which length to use - pwdmaxlen=$(( ( pwdmaxlen < ${#dir} ) ? ${#dir} : pwdmaxlen )) - - NEW_PWD=${PWD/#$HOME/\~} - - local pwdoffset=$(( ${#NEW_PWD} - pwdmaxlen )) - - # Generate name - if [ ${pwdoffset} -gt "0" ] - then - NEW_PWD=${NEW_PWD:$pwdoffset:$pwdmaxlen} - NEW_PWD=${trunc_symbol}/${NEW_PWD#*/} - fi -} - - - - -## -## GENERATE A FORMAT SEQUENCE -## -format_font() -{ - ## FIRST ARGUMENT TO RETURN FORMAT STRING - local output=$1 - - - case $# in - 2) - eval $output="'\[\033[0;${2}m\]'" - ;; - 3) - eval $output="'\[\033[0;${2};${3}m\]'" - ;; - 4) - eval $output="'\[\033[0;${2};${3};${4}m\]'" - ;; - *) - eval $output="'\[\033[0m\]'" - ;; - esac -} - - - -## -## COLORIZE BASH PROMT -## -bash_prompt() { - - ############################################################################ - ## COLOR CODES ## - ## These can be used in the configuration below ## - ############################################################################ - - ## FONT EFFECT - local NONE='0' - local BOLD='1' - local DIM='2' - local UNDERLINE='4' - local BLINK='5' - local INVERT='7' - local HIDDEN='8' - - - ## COLORS - local DEFAULT='9' - local BLACK='0' - local RED='1' - local GREEN='2' - local YELLOW='3' - local BLUE='4' - local MAGENTA='5' - local CYAN='6' - local L_GRAY='7' - local D_GRAY='60' - local L_RED='61' - local L_GREEN='62' - local L_YELLOW='63' - local L_BLUE='64' - local L_MAGENTA='65' - local L_CYAN='66' - local WHITE='67' - - - ## TYPE - local RESET='0' - local EFFECT='0' - local COLOR='30' - local BG='40' - - - ## 256 COLOR CODES - local NO_FORMAT="\[\033[0m\]" - local ORANGE_BOLD="\[\033[1;38;5;208m\]" - local TOXIC_GREEN_BOLD="\[\033[1;38;5;118m\]" - local RED_BOLD="\[\033[1;38;5;1m\]" - local CYAN_BOLD="\[\033[1;38;5;87m\]" - local BLACK_BOLD="\[\033[1;38;5;0m\]" - local WHITE_BOLD="\[\033[1;38;5;15m\]" - local GRAY_BOLD="\[\033[1;90m\]" - local BLUE_BOLD="\[\033[1;38;5;74m\]" - - - - - - ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## - ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## - ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## - - - - ## CONFIGURE HERE ## - - - - ############################################################################ - ## CONFIGURATION ## - ## Choose your color combination here ## - ############################################################################ - local FONT_COLOR_1=$WHITE - local BACKGROUND_1=$RED - local TEXTEFFECT_1=$BOLD - - local FONT_COLOR_2=$WHITE - local BACKGROUND_2=$YELLOW - local TEXTEFFECT_2=$BOLD - - local FONT_COLOR_3=$D_GRAY - local BACKGROUND_3=$WHITE - local TEXTEFFECT_3=$BOLD - - local PROMT_FORMAT=$BLUE_BOLD - - - ############################################################################ - ## EXAMPLE CONFIGURATIONS ## - ## I use them for different hosts. Test them out ;) ## - ############################################################################ - - ## CONFIGURATION: BLUE-WHITE - if [ "$HOSTNAME" = dell ]; then - FONT_COLOR_1=$WHITE; BACKGROUND_1=$BLUE; TEXTEFFECT_1=$BOLD - FONT_COLOR_2=$WHITE; BACKGROUND_2=$L_BLUE; TEXTEFFECT_2=$BOLD - FONT_COLOR_3=$D_GRAY; BACKGROUND_3=$WHITE; TEXTEFFECT_3=$BOLD - PROMT_FORMAT=$CYAN_BOLD - fi - - ## CONFIGURATION: BLACK-RED - if [ "$HOSTNAME" = giraff6 ]; then - FONT_COLOR_1=$WHITE; BACKGROUND_1=$BLACK; TEXTEFFECT_1=$BOLD - FONT_COLOR_2=$WHITE; BACKGROUND_2=$D_GRAY; TEXTEFFECT_2=$BOLD - FONT_COLOR_3=$WHITE; BACKGROUND_3=$RED; TEXTEFFECT_3=$BOLD - PROMT_FORMAT=$RED_BOLD - fi - - ## CONFIGURATION: RED-BLACK - #FONT_COLOR_1=$WHITE; BACKGROUND_1=$RED; TEXTEFFECT_1=$BOLD - #FONT_COLOR_2=$WHITE; BACKGROUND_2=$D_GRAY; TEXTEFFECT_2=$BOLD - #FONT_COLOR_3=$WHITE; BACKGROUND_3=$BLACK; TEXTEFFECT_3=$BOLD - #PROMT_FORMAT=$RED_BOLD - - ## CONFIGURATION: CYAN-BLUE - if [ "$HOSTNAME" = sharkoon ]; then - FONT_COLOR_1=$BLACK; BACKGROUND_1=$L_CYAN; TEXTEFFECT_1=$BOLD - FONT_COLOR_2=$WHITE; BACKGROUND_2=$L_BLUE; TEXTEFFECT_2=$BOLD - FONT_COLOR_3=$WHITE; BACKGROUND_3=$BLUE; TEXTEFFECT_3=$BOLD - PROMT_FORMAT=$CYAN_BOLD - fi - - ## CONFIGURATION: GRAY-SCALE - if [ "$HOSTNAME" = giraff ]; then - FONT_COLOR_1=$WHITE; BACKGROUND_1=$BLACK; TEXTEFFECT_1=$BOLD - FONT_COLOR_2=$WHITE; BACKGROUND_2=$D_GRAY; TEXTEFFECT_2=$BOLD - FONT_COLOR_3=$WHITE; BACKGROUND_3=$L_GRAY; TEXTEFFECT_3=$BOLD - PROMT_FORMAT=$BLACK_BOLD - fi - - ## CONFIGURATION: GRAY-CYAN - if [ "$HOSTNAME" = light ]; then - FONT_COLOR_1=$WHITE; BACKGROUND_1=$BLACK; TEXTEFFECT_1=$BOLD - FONT_COLOR_2=$WHITE; BACKGROUND_2=$D_GRAY; TEXTEFFECT_2=$BOLD - FONT_COLOR_3=$BLACK; BACKGROUND_3=$L_CYAN; TEXTEFFECT_3=$BOLD - PROMT_FORMAT=$CYAN_BOLD - fi - - - ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## - ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## - ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## - - - - - ############################################################################ - ## TEXT FORMATING ## - ## Generate the text formating according to configuration ## - ############################################################################ - - ## CONVERT CODES: add offset - FC1=$(($FONT_COLOR_1+$COLOR)) - BG1=$(($BACKGROUND_1+$BG)) - FE1=$(($TEXTEFFECT_1+$EFFECT)) - - FC2=$(($FONT_COLOR_2+$COLOR)) - BG2=$(($BACKGROUND_2+$BG)) - FE2=$(($TEXTEFFECT_2+$EFFECT)) - - FC3=$(($FONT_COLOR_3+$COLOR)) - BG3=$(($BACKGROUND_3+$BG)) - FE3=$(($TEXTEFFECT_3+$EFFECT)) - - FC4=$(($FONT_COLOR_4+$COLOR)) - BG4=$(($BACKGROUND_4+$BG)) - FE4=$(($TEXTEFFECT_4+$EFFECT)) - - - ## CALL FORMATING HELPER FUNCTION: effect + font color + BG color - local TEXT_FORMAT_1 - local TEXT_FORMAT_2 - local TEXT_FORMAT_3 - local TEXT_FORMAT_4 - format_font TEXT_FORMAT_1 $FE1 $FC1 $BG1 - format_font TEXT_FORMAT_2 $FE2 $FC2 $BG2 - format_font TEXT_FORMAT_3 $FC3 $FE3 $BG3 - format_font TEXT_FORMAT_4 $FC4 $FE4 $BG4 - - - # GENERATE PROMT SECTIONS - local PROMT_USER=$"$TEXT_FORMAT_1 \u " - local PROMT_HOST=$"$TEXT_FORMAT_2 \h " - local PROMT_PWD=$"$TEXT_FORMAT_3 \${NEW_PWD} " - local PROMT_INPUT=$"$PROMT_FORMAT " - - - ############################################################################ - ## SEPARATOR FORMATING ## - ## Generate the separators between sections ## - ## Uses background colors of the sections ## - ############################################################################ - - ## CONVERT CODES - TSFC1=$(($BACKGROUND_1+$COLOR)) - TSBG1=$(($BACKGROUND_2+$BG)) - - TSFC2=$(($BACKGROUND_2+$COLOR)) - TSBG2=$(($BACKGROUND_3+$BG)) - - TSFC3=$(($BACKGROUND_3+$COLOR)) - TSBG3=$(($DEFAULT+$BG)) - - - ## CALL FORMATING HELPER FUNCTION: effect + font color + BG color - local SEPARATOR_FORMAT_1 - local SEPARATOR_FORMAT_2 - local SEPARATOR_FORMAT_3 - format_font SEPARATOR_FORMAT_1 $TSFC1 $TSBG1 - format_font SEPARATOR_FORMAT_2 $TSFC2 $TSBG2 - format_font SEPARATOR_FORMAT_3 $TSFC3 $TSBG3 - - - # GENERATE SEPARATORS WITH FANCY TRIANGLE - local TRIANGLE=$'\uE0B0' - local SEPARATOR_1=$SEPARATOR_FORMAT_1$TRIANGLE - local SEPARATOR_2=$SEPARATOR_FORMAT_2$TRIANGLE - local SEPARATOR_3=$SEPARATOR_FORMAT_3$TRIANGLE - - - - ############################################################################ - ## WINDOW TITLE ## - ## Prevent messed up terminal-window titles ## - ############################################################################ - case $TERM in - xterm*|rxvt*) - local TITLEBAR='\[\033]0;\u:${NEW_PWD}\007\]' - ;; - *) - local TITLEBAR="" - ;; - esac - - - - ############################################################################ - ## BASH PROMT ## - ## Generate promt and remove format from the rest ## - ############################################################################ - PS1="$TITLEBAR\n${PROMT_USER}${SEPARATOR_1}${PROMT_HOST}${SEPARATOR_2}${PROMT_PWD}${SEPARATOR_3}${PROMT_INPUT}" - - - - ## For terminal line coloring, leaving the rest standard - none="$(tput sgr0)" - trap 'echo -ne "${none}"' DEBUG -} - - - - -################################################################################ -## MAIN ## -################################################################################ - -## Bash provides an environment variable called PROMPT_COMMAND. -## The contents of this variable are executed as a regular Bash command -## just before Bash displays a prompt. -## We want it to call our own command to truncate PWD and store it in NEW_PWD -PROMPT_COMMAND=bash_prompt_command - -## Call bash_promnt only once, then unset it (not needed any more) -## It will set $PS1 with colors and relative to $NEW_PWD, -## which gets updated by $PROMT_COMMAND on behalf of the terminal -bash_prompt -unset bash_prompt - -### EOF ### diff --git a/pc/configs/OpenRGB/OpenRGB.json b/pc/configs/OpenRGB/OpenRGB.json deleted file mode 100755 index 4ee3f30..0000000 --- a/pc/configs/OpenRGB/OpenRGB.json +++ /dev/null @@ -1,1284 +0,0 @@ -{ - "AutoStart": { - "client": "localhost:6742", - "custom": "", - "enabled": false, - "host": "0.0.0.0", - "port": "6742", - "profile": "Main", - "setclient": false, - "setcustom": false, - "setminimized": false, - "setprofile": false, - "setserver": false, - "setserverhost": false, - "setserverport": false - }, - "CorsairDominatorSettings": { - "model": "CMT" - }, - "Detectors": { - "detectors": { - "AMD Wraith Prism": true, - "AOC AGON AMM700": true, - "AOC GK500": true, - "AOC GM500": true, - "ASRock Deskmini Addressable LED Strip": true, - "ASRock Motherboard SMBus Controllers": true, - "ASRock Polychrome USB": true, - "ASUS AREZ Strix RX Vega 56 O8G": true, - "ASUS Aura Addressable": true, - "ASUS Aura Core": true, - "ASUS Aura Motherboard": true, - "ASUS Aura SMBus Motherboard": true, - "ASUS Cerberus Mech": true, - "ASUS GTX 1060 Strix": true, - "ASUS GTX 1060 Strix 6G Gaming": true, - "ASUS GTX 1070 Strix Gaming": true, - "ASUS GTX 1070 Strix OC": true, - "ASUS GTX 1080 Strix OC": true, - "ASUS KO RTX 3060 O12G V2 GAMING": true, - "ASUS KO RTX 3060 OC O12G GAMING": true, - "ASUS KO RTX 3060Ti O8G GAMING": true, - "ASUS KO RTX 3060Ti O8G V2 GAMING": true, - "ASUS KO RTX 3070 O8G V2 GAMING": true, - "ASUS ROG AURA Terminal": true, - "ASUS ROG Ally": true, - "ASUS ROG Balteus": true, - "ASUS ROG Balteus Qi": true, - "ASUS ROG Chakram (Wireless)": true, - "ASUS ROG Claymore": true, - "ASUS ROG Falchion (Wired)": true, - "ASUS ROG Falchion (Wireless)": true, - "ASUS ROG GTX 1660 Ti OC 6G": true, - "ASUS ROG Gladius II": true, - "ASUS ROG Gladius II Core": true, - "ASUS ROG Gladius II Origin": true, - "ASUS ROG Gladius II Origin COD": true, - "ASUS ROG Gladius II Origin PNK LTD": true, - "ASUS ROG Gladius II Wireless": true, - "ASUS ROG Gladius III": true, - "ASUS ROG Gladius III Wireless 2.4Ghz": true, - "ASUS ROG Gladius III Wireless Bluetooth": true, - "ASUS ROG Gladius III Wireless USB": true, - "ASUS ROG Keris": true, - "ASUS ROG Keris Wireless 2.4Ghz": true, - "ASUS ROG Keris Wireless Bluetooth": true, - "ASUS ROG Keris Wireless USB": true, - "ASUS ROG PG32UQ": true, - "ASUS ROG Pugio": true, - "ASUS ROG Pugio II (Wired)": true, - "ASUS ROG Pugio II (Wireless)": true, - "ASUS ROG RTX 3080 10G GUNDAM EDITION": true, - "ASUS ROG Ryuo AIO": true, - "ASUS ROG STRIX 3060 12G GAMING": true, - "ASUS ROG STRIX 3060 O12G GAMING": true, - "ASUS ROG STRIX 3060 O12G V2 GAMING": true, - "ASUS ROG STRIX 3060Ti O8G OC": true, - "ASUS ROG STRIX 3060Ti O8G V2": true, - "ASUS ROG STRIX 3070 O8G GAMING": true, - "ASUS ROG STRIX 3070 O8G V2 GAMING": true, - "ASUS ROG STRIX 3070 O8G V2 White": true, - "ASUS ROG STRIX 3070 O8G White": true, - "ASUS ROG STRIX 3070 OC": true, - "ASUS ROG STRIX 3070Ti O8G GAMING": true, - "ASUS ROG STRIX 3080 10G GAMING": true, - "ASUS ROG STRIX 3080 10G V2 GAMING": true, - "ASUS ROG STRIX 3080 O10G GAMING": true, - "ASUS ROG STRIX 3080 O10G V2 GAMING": true, - "ASUS ROG STRIX 3080 O10G V2 WHITE": true, - "ASUS ROG STRIX 3080 O10G WHITE": true, - "ASUS ROG STRIX 3080Ti O12G GAMING": true, - "ASUS ROG STRIX 3090 24G GAMING": true, - "ASUS ROG STRIX 3090 O24G GAMING": true, - "ASUS ROG STRIX 3090 O24G GAMING White OC": true, - "ASUS ROG STRIX LC 3080Ti O12G GAMING": true, - "ASUS ROG STRIX LC RX 6800XT O16G GAMING": true, - "ASUS ROG STRIX LC RX 6900XT O16G GAMING": true, - "ASUS ROG STRIX LC RX 6900XT O16G GAMING TOP": true, - "ASUS ROG STRIX LC RX 6950XT O16G GAMING": true, - "ASUS ROG STRIX RTX 2060 EVO Gaming 6G": true, - "ASUS ROG STRIX RTX 2060 O6G EVO Gaming": true, - "ASUS ROG STRIX RTX 2060 O6G Gaming": true, - "ASUS ROG STRIX RTX 2060S 8G Gaming": true, - "ASUS ROG STRIX RTX 2060S A8G EVO Gaming": true, - "ASUS ROG STRIX RTX 2060S A8G Gaming": true, - "ASUS ROG STRIX RTX 2060S O8G Gaming": true, - "ASUS ROG STRIX RTX 2070 A8G Gaming": true, - "ASUS ROG STRIX RTX 2070 O8G Gaming": true, - "ASUS ROG STRIX RTX 2070S 8G Gaming": true, - "ASUS ROG STRIX RTX 2070S A8G Gaming": true, - "ASUS ROG STRIX RTX 2070S O8G Gaming": true, - "ASUS ROG STRIX RTX 2080 8G Gaming": true, - "ASUS ROG STRIX RTX 2080 O8G Gaming": true, - "ASUS ROG STRIX RTX 2080 O8G V2 Gaming": true, - "ASUS ROG STRIX RTX 2080 Ti 11G Gaming": true, - "ASUS ROG STRIX RTX 2080 Ti A11G Gaming": true, - "ASUS ROG STRIX RTX 2080 Ti O11G Gaming": true, - "ASUS ROG STRIX RTX 2080S A8G Gaming": true, - "ASUS ROG STRIX RTX 2080S O8G Gaming": true, - "ASUS ROG STRIX RTX 2080S O8G White": true, - "ASUS ROG STRIX RTX 3080 12G": true, - "ASUS ROG STRIX RTX 3080 O12G": true, - "ASUS ROG STRIX RTX 3080 O12G EVA EDITION": true, - "ASUS ROG STRIX RTX 4080 16G GAMING": true, - "ASUS ROG STRIX RTX 4080 O16G GAMING": true, - "ASUS ROG STRIX RTX 4090 24G GAMING": true, - "ASUS ROG STRIX RTX 4090 O24G GAMING": true, - "ASUS ROG STRIX RX 6700XT O12G GAMING": true, - "ASUS ROG STRIX RX 6750XT O12G GAMING": true, - "ASUS ROG STRIX RX 6800 O16G Gaming": true, - "ASUS ROG STRIX RX470 O4G GAMING": true, - "ASUS ROG STRIX RX470 O4G Gaming": true, - "ASUS ROG STRIX RX480 Gaming OC": true, - "ASUS ROG STRIX RX560 Gaming": true, - "ASUS ROG Strix Claw": true, - "ASUS ROG Strix Evolve": true, - "ASUS ROG Strix Flare": true, - "ASUS ROG Strix Flare CoD Black Ops 4 Edition": true, - "ASUS ROG Strix Flare PNK LTD": true, - "ASUS ROG Strix GTX 1050 O2G Gaming": true, - "ASUS ROG Strix GTX 1050 TI 4G Gaming": true, - "ASUS ROG Strix GTX 1050 TI O4G Gaming": true, - "ASUS ROG Strix GTX 1650S OC 4G": true, - "ASUS ROG Strix GTX 1660S O6G Gaming": true, - "ASUS ROG Strix GTX1070 Ti 8G Gaming": true, - "ASUS ROG Strix GTX1070 Ti A8G Gaming": true, - "ASUS ROG Strix GTX1080 A8G Gaming": true, - "ASUS ROG Strix GTX1080 O8G 11Gbps": true, - "ASUS ROG Strix GTX1080 O8G Gaming": true, - "ASUS ROG Strix GTX1080 Ti 11G Gaming": true, - "ASUS ROG Strix GTX1080 Ti Gaming": true, - "ASUS ROG Strix GTX1080 Ti O11G Gaming": true, - "ASUS ROG Strix Impact": true, - "ASUS ROG Strix Impact II": true, - "ASUS ROG Strix Impact II Electro Punk": true, - "ASUS ROG Strix Impact II Gundam": true, - "ASUS ROG Strix Impact II Moonlight White": true, - "ASUS ROG Strix Impact II Wireless 2.4 Ghz": true, - "ASUS ROG Strix Impact II Wireless USB": true, - "ASUS ROG Strix LC": true, - "ASUS ROG Strix SCAR 15": true, - "ASUS ROG Strix Scope": true, - "ASUS ROG Strix Scope RX": true, - "ASUS ROG Strix Scope RX TKL Wireless Deluxe": true, - "ASUS ROG Strix Scope TKL": true, - "ASUS ROG Strix Scope TKL PNK LTD": true, - "ASUS ROG Strix XG279Q": true, - "ASUS ROG Strix XG27AQ": true, - "ASUS ROG Strix XG27AQM": true, - "ASUS ROG Strix XG27W": true, - "ASUS ROG Throne": true, - "ASUS ROG Throne QI": true, - "ASUS ROG Throne QI GUNDAM": true, - "ASUS RX 5600XT Strix O6G Gaming": true, - "ASUS RX 570 Strix O4G Gaming OC": true, - "ASUS RX 570 Strix O8G Gaming OC": true, - "ASUS RX 5700XT Strix 08G Gaming": true, - "ASUS RX 5700XT Strix Gaming OC": true, - "ASUS RX 580 Strix Gaming OC": true, - "ASUS RX 580 Strix Gaming TOP": true, - "ASUS RX 6800 TUF Gaming OC": true, - "ASUS TUF 3060 O12G GAMING": true, - "ASUS TUF 3060 O12G V2 GAMING": true, - "ASUS TUF Gaming K1": true, - "ASUS TUF Gaming K3": true, - "ASUS TUF Gaming K5": true, - "ASUS TUF Gaming K7": true, - "ASUS TUF Gaming M3": true, - "ASUS TUF Gaming M5": true, - "ASUS TUF Laptop": true, - "ASUS TUF RTX 3060 Ti 8G Gaming OC": true, - "ASUS TUF RTX 3060Ti O8G": true, - "ASUS TUF RTX 3060Ti O8G OC": true, - "ASUS TUF RTX 3070 8G GAMING": true, - "ASUS TUF RTX 3070 O8G GAMING": true, - "ASUS TUF RTX 3070 O8G V2 GAMING": true, - "ASUS TUF RTX 3070Ti O8G GAMING": true, - "ASUS TUF RTX 3070Ti O8G V2 GAMING": true, - "ASUS TUF RTX 3080 10G GAMING": true, - "ASUS TUF RTX 3080 O10G OC": true, - "ASUS TUF RTX 3080 O10G V2 GAMING": true, - "ASUS TUF RTX 3080 O12G GAMING": true, - "ASUS TUF RTX 3080Ti 12G GAMING": true, - "ASUS TUF RTX 3080Ti O12G GAMING": true, - "ASUS TUF RTX 3090 O24G": true, - "ASUS TUF RTX 3090 O24G OC": true, - "ASUS TUF RTX 3090Ti 24G GAMING": true, - "ASUS TUF RTX 3090Ti O24G OC GAMING": true, - "ASUS TUF RTX 4070 O12G Gaming": true, - "ASUS TUF RTX 4070 Ti 12G Gaming": true, - "ASUS TUF RTX 4070 Ti O12G Gaming": true, - "ASUS TUF RTX 4080 16G GAMING": true, - "ASUS TUF RTX 4080 O16G GAMING": true, - "ASUS TUF RTX 4080 O16G OC": true, - "ASUS TUF RTX 4090 O24G": true, - "ASUS TUF RTX 4090 O24G OC": true, - "ASUS TUF RX 6700XT O12G GAMING": true, - "ASUS TUF RX 6800XT O16G GAMING": true, - "ASUS TUF RX 6900XT O16G GAMING": true, - "ASUS TUF RX 6900XT T16G GAMING": true, - "ASUS TUF RX 6950XT O16G GAMING": true, - "ASUS Vega 64 Strix": true, - "ASUS_TUF RX 6700XT O12G GAMING": true, - "Acer Predator Gaming Mouse (Rival 300)": true, - "Alienware AW510K": true, - "Anne Pro 2": true, - "Aorus CPU Coolers": true, - "Asus ROG Chakram (Wired)": true, - "Asus ROG Chakram Core": true, - "Asus ROG Chakram X 2.4GHz": true, - "Asus ROG Chakram X USB": true, - "Asus ROG Spatha X 2.4GHz": true, - "Asus ROG Spatha X USB": true, - "BlinkyTape": true, - "Bloody MP 50RS": true, - "Bloody W60 Pro": true, - "CRYORIG H7 Quad Lumi": true, - "Cherry Keyboard CCF MX 1.0 TKL BL": true, - "Cherry Keyboard CCF MX 1.0 TKL NBL": true, - "Cherry Keyboard CCF MX 8.0 TKL BL": true, - "Cherry Keyboard G80-3000 TKL NBL": true, - "Cherry Keyboard G80-3000 TKL NBL KOREAN": true, - "Cherry Keyboard G80-3000 TKL RGB": true, - "Cherry Keyboard G80-3000N FL RGB": true, - "Cherry Keyboard G80-3000N TKL RGB": true, - "Cherry Keyboard MV BOARD 3.0 FL RGB": true, - "Cherry Keyboard MX 1.0 FL BL": true, - "Cherry Keyboard MX 1.0 FL NBL": true, - "Cherry Keyboard MX 1.0 FL RGB": true, - "Cherry Keyboard MX BOARD 1.0 TKL RGB": true, - "Cherry Keyboard MX BOARD 10.0 FL RGB": true, - "Cherry Keyboard MX BOARD 10.0N FL RGB": true, - "Cherry Keyboard MX BOARD 2.0S FL NBL": true, - "Cherry Keyboard MX BOARD 2.0S FL RGB": true, - "Cherry Keyboard MX BOARD 2.0S FL RGB DE": true, - "Cherry Keyboard MX BOARD 3.0S FL NBL": true, - "Cherry Keyboard MX BOARD 3.0S FL RGB": true, - "Cherry Keyboard MX BOARD 3.0S FL RGB KOREAN": true, - "Cherry Keyboard MX BOARD 8.0 TKL RGB": true, - "Cooler Master ARGB": true, - "Cooler Master ARGB Gen 2 A1": true, - "Cooler Master ARGB Gen 2 A1 V2": true, - "Cooler Master MK750": true, - "Cooler Master MM530": true, - "Cooler Master MM711": true, - "Cooler Master MM720": true, - "Cooler Master MM730": true, - "Cooler Master MP750 Large": true, - "Cooler Master MP750 Medium": true, - "Cooler Master MP750 XL": true, - "Cooler Master MasterKeys Pro L": true, - "Cooler Master MasterKeys Pro L White": true, - "Cooler Master MasterKeys Pro S": true, - "Cooler Master RGB": true, - "Cooler Master Radeon 6000 GPU": true, - "Cooler Master Radeon 6900 GPU": true, - "Cooler Master SK630": true, - "Cooler Master SK650": true, - "Cooler Master Small ARGB": true, - "Corsair 1000D Obsidian": true, - "Corsair Commander Core": true, - "Corsair Commander Pro": true, - "Corsair Dominator Platinum": true, - "Corsair Glaive RGB": true, - "Corsair Glaive RGB PRO": true, - "Corsair H100i v2": true, - "Corsair Harpoon RGB": true, - "Corsair Harpoon RGB PRO": true, - "Corsair Hydro H100i Platinum": true, - "Corsair Hydro H100i Platinum SE": true, - "Corsair Hydro H100i Pro XT": true, - "Corsair Hydro H100i Pro XT v2": true, - "Corsair Hydro H115i Platinum": true, - "Corsair Hydro H115i Pro XT": true, - "Corsair Hydro H150i Pro XT": true, - "Corsair Hydro H60i Pro XT": true, - "Corsair Hydro Series": true, - "Corsair Ironclaw RGB": true, - "Corsair Ironclaw Wireless": true, - "Corsair Ironclaw Wireless (Wired)": true, - "Corsair K100": true, - "Corsair K55 RGB": true, - "Corsair K55 RGB PRO": true, - "Corsair K55 RGB PRO XT": true, - "Corsair K57 RGB (Wired)": true, - "Corsair K60 RGB PRO": true, - "Corsair K60 RGB PRO Low Profile": true, - "Corsair K65 LUX RGB": true, - "Corsair K65 Mini": true, - "Corsair K65 RGB": true, - "Corsair K65 RGB RAPIDFIRE": true, - "Corsair K68 RGB": true, - "Corsair K70 LUX": true, - "Corsair K70 LUX RGB": true, - "Corsair K70 RGB": true, - "Corsair K70 RGB MK.2": true, - "Corsair K70 RGB MK.2 Low Profile": true, - "Corsair K70 RGB MK.2 SE": true, - "Corsair K70 RGB RAPIDFIRE": true, - "Corsair K95 RGB": true, - "Corsair K95 RGB PLATINUM": true, - "Corsair K95 RGB PLATINUM XT": true, - "Corsair LS100 Lighting Kit": true, - "Corsair LT100": true, - "Corsair Lighting Node Core": true, - "Corsair Lighting Node Pro": true, - "Corsair M55 RGB PRO": true, - "Corsair M65": true, - "Corsair M65 PRO": true, - "Corsair M65 RGB Elite": true, - "Corsair MM700": true, - "Corsair MM800 RGB Polaris": true, - "Corsair Nightsword": true, - "Corsair SPEC OMEGA RGB": true, - "Corsair ST100 RGB": true, - "Corsair Sabre RGB": true, - "Corsair Scimitar Elite RGB": true, - "Corsair Scimitar PRO RGB": true, - "Corsair Scimitar RGB": true, - "Corsair Strafe": true, - "Corsair Strafe MK.2": true, - "Corsair Strafe Red": true, - "Corsair Vengeance": true, - "Corsair Vengeance Pro": true, - "Cougar 700K EVO Gaming Keyboard": true, - "Cougar Revenger ST": true, - "Creative SoundBlasterX G6": true, - "Crucial": true, - "DMX": true, - "Dark Project KD3B V2": true, - "Das Keyboard Q4 RGB": true, - "Das Keyboard Q5 RGB": true, - "Das Keyboard Q5S RGB": true, - "Debug Controllers": true, - "Dell G Series LED Controller": true, - "Ducky One 2 RGB TKL": true, - "Ducky Shine 7/Ducky One 2 RGB": true, - "Dygma Raise": true, - "E1.31": true, - "EK Loop Connect": true, - "ENE SMBus DRAM": true, - "EVGA GP102 GPU": true, - "EVGA GeForce RTX 2070 SUPER FTW3 Ultra": true, - "EVGA GeForce RTX 2070 SUPER FTW3 Ultra+": true, - "EVGA GeForce RTX 2070 SUPER XC Gaming": true, - "EVGA GeForce RTX 2070 SUPER XC Ultra": true, - "EVGA GeForce RTX 2070 SUPER XC Ultra+": true, - "EVGA GeForce RTX 2070 XC Black": true, - "EVGA GeForce RTX 2070 XC Gaming": true, - "EVGA GeForce RTX 2070 XC OC": true, - "EVGA GeForce RTX 2080 Black": true, - "EVGA GeForce RTX 2080 SUPER FTW3 Hybrid OC": true, - "EVGA GeForce RTX 2080 SUPER FTW3 Ultra": true, - "EVGA GeForce RTX 2080 SUPER FTW3 Ultra Hydro Copper": true, - "EVGA GeForce RTX 2080 SUPER XC Gaming": true, - "EVGA GeForce RTX 2080 SUPER XC Ultra": true, - "EVGA GeForce RTX 2080 XC Black": true, - "EVGA GeForce RTX 2080 XC Gaming": true, - "EVGA GeForce RTX 2080 XC Ultra Gaming": true, - "EVGA GeForce RTX 2080Ti Black": true, - "EVGA GeForce RTX 2080Ti FTW3 Ultra": true, - "EVGA GeForce RTX 2080Ti XC HYBRID GAMING": true, - "EVGA GeForce RTX 2080Ti XC HYDRO COPPER": true, - "EVGA GeForce RTX 2080Ti XC Ultra": true, - "EVGA GeForce RTX 3060TI FTW3 Gaming": true, - "EVGA GeForce RTX 3060TI FTW3 Ultra": true, - "EVGA GeForce RTX 3060TI FTW3 Ultra LHR": true, - "EVGA GeForce RTX 3070 Black Gaming": true, - "EVGA GeForce RTX 3070 FTW3 Ultra": true, - "EVGA GeForce RTX 3070 FTW3 Ultra LHR": true, - "EVGA GeForce RTX 3070 XC3 Gaming": true, - "EVGA GeForce RTX 3070 XC3 Ultra": true, - "EVGA GeForce RTX 3070 XC3 Ultra LHR": true, - "EVGA GeForce RTX 3070Ti FTW3 Ultra": true, - "EVGA GeForce RTX 3070Ti FTW3 Ultra v2": true, - "EVGA GeForce RTX 3070Ti XC3 Gaming": true, - "EVGA GeForce RTX 3070Ti XC3 Ultra": true, - "EVGA GeForce RTX 3070Ti XC3 Ultra v2": true, - "EVGA GeForce RTX 3080 FTW3 Gaming": true, - "EVGA GeForce RTX 3080 FTW3 Ultra": true, - "EVGA GeForce RTX 3080 FTW3 Ultra 12GB": true, - "EVGA GeForce RTX 3080 FTW3 Ultra Hybrid": true, - "EVGA GeForce RTX 3080 FTW3 Ultra Hybrid Gaming LHR": true, - "EVGA GeForce RTX 3080 FTW3 Ultra Hybrid LHR": true, - "EVGA GeForce RTX 3080 FTW3 Ultra Hydro Copper": true, - "EVGA GeForce RTX 3080 FTW3 Ultra Hydro Copper 12G": true, - "EVGA GeForce RTX 3080 FTW3 Ultra LHR": true, - "EVGA GeForce RTX 3080 FTW3 Ultra v2 LHR": true, - "EVGA GeForce RTX 3080 XC3 Black": true, - "EVGA GeForce RTX 3080 XC3 Black LHR": true, - "EVGA GeForce RTX 3080 XC3 Gaming": true, - "EVGA GeForce RTX 3080 XC3 Gaming LHR": true, - "EVGA GeForce RTX 3080 XC3 Ultra": true, - "EVGA GeForce RTX 3080 XC3 Ultra 12G": true, - "EVGA GeForce RTX 3080 XC3 Ultra Hybrid": true, - "EVGA GeForce RTX 3080 XC3 Ultra Hybrid LHR": true, - "EVGA GeForce RTX 3080 XC3 Ultra Hydro Copper": true, - "EVGA GeForce RTX 3080 XC3 Ultra LHR": true, - "EVGA GeForce RTX 3080Ti FTW3 Ultra": true, - "EVGA GeForce RTX 3080Ti FTW3 Ultra Hybrid": true, - "EVGA GeForce RTX 3080Ti FTW3 Ultra Hydro Copper": true, - "EVGA GeForce RTX 3080Ti XC3 Gaming": true, - "EVGA GeForce RTX 3080Ti XC3 Gaming Hybrid": true, - "EVGA GeForce RTX 3080Ti XC3 Gaming Hydro Copper": true, - "EVGA GeForce RTX 3080Ti XC3 Ultra Gaming": true, - "EVGA GeForce RTX 3090 FTW3 Ultra": true, - "EVGA GeForce RTX 3090 FTW3 Ultra Hybrid": true, - "EVGA GeForce RTX 3090 FTW3 Ultra Hydro Copper": true, - "EVGA GeForce RTX 3090 FTW3 Ultra v2": true, - "EVGA GeForce RTX 3090 FTW3 Ultra v3": true, - "EVGA GeForce RTX 3090 K|NGP|N Hybrid": true, - "EVGA GeForce RTX 3090 K|NGP|N Hydro Copper": true, - "EVGA GeForce RTX 3090 XC3 Black": true, - "EVGA GeForce RTX 3090 XC3 Gaming": true, - "EVGA GeForce RTX 3090 XC3 Ultra": true, - "EVGA GeForce RTX 3090 XC3 Ultra Hybrid": true, - "EVGA GeForce RTX 3090 XC3 Ultra Hydro Copper": true, - "EVGA GeForce RTX 3090Ti FTW3 Black Gaming": true, - "EVGA GeForce RTX 3090Ti FTW3 Gaming": true, - "EVGA GeForce RTX 3090Ti FTW3 Ultra Gaming": true, - "EVGA Pascal GPU": true, - "EVGA X20 Gaming Mouse": true, - "EVGA X20 USB Receiver": true, - "EVGA Z15 Keyboard": true, - "EVGA Z20 Keyboard": true, - "EVision Keyboard 0C45:5004": true, - "EVision Keyboard 0C45:5104": true, - "EVision Keyboard 0C45:5204": true, - "EVision Keyboard 0C45:652F": true, - "EVision Keyboard 0C45:7698": true, - "EVision Keyboard 0C45:8520": true, - "EVision Keyboard 320F:5000": true, - "EVision Keyboard 320F:502A": true, - "EVision Keyboard 320F:5064": true, - "ElgatoKeyLight": true, - "Epomaker TH80 Pro (USB Cable)": true, - "Epomaker TH80 Pro (USB Dongle)": true, - "Espurna": true, - "Everest GT-100 RGB": true, - "FanBus": true, - "Faustus": true, - "GALAX RTX 2070 Super EX Gamer Black": true, - "GaiZhongGai 17 PRO": true, - "GaiZhongGai 17+4+Touch PRO": true, - "GaiZhongGai 20 PRO": true, - "GaiZhongGai 42 PRO": true, - "GaiZhongGai 68+4 PRO": true, - "GaiZhongGai Dial": true, - "GaiZhongGai LightBoard": true, - "GaiZhongGai RGB HUB Blue": true, - "GaiZhongGai RGB HUB Green": true, - "Gainward GTX 1080 Phoenix": true, - "Gainward GTX 1080 Ti Phoenix": true, - "Gainward RTX 2070 Super Phantom": true, - "Gainward RTX 2080 Phoenix GS": true, - "Gainward RTX 3070 Phoenix": true, - "Gainward RTX 3070 Ti Phoenix": true, - "Gainward RTX 3080 Phoenix": true, - "Gainward RTX 3080 Ti Phoenix": true, - "Gainward RTX 3090 Phoenix": true, - "Genesis Thor 300": true, - "Gigabyte AORUS RTX2060 SUPER 8G V1": true, - "Gigabyte AORUS RTX2070 SUPER 8G": true, - "Gigabyte AORUS RTX2070 XTREME 8G": true, - "Gigabyte AORUS RTX2080 8G": true, - "Gigabyte AORUS RTX2080 SUPER 8G": true, - "Gigabyte AORUS RTX2080 SUPER 8G Rev 1.0": true, - "Gigabyte AORUS RTX2080 SUPER Waterforce WB 8G": true, - "Gigabyte AORUS RTX2080 Ti XTREME 11G": true, - "Gigabyte AORUS RTX2080 XTREME 8G": true, - "Gigabyte AORUS RTX3060 ELITE 12G": true, - "Gigabyte AORUS RTX3060 ELITE 12G LHR": true, - "Gigabyte AORUS RTX3060 ELITE 12G Rev a1": true, - "Gigabyte AORUS RTX3060 Ti ELITE 8G LHR": true, - "Gigabyte AORUS RTX3070 Ti MASTER 8G": true, - "Gigabyte AORUS RTX3080 Ti XTREME WATERFORCE 12G": true, - "Gigabyte AORUS RTX3080 XTREME WATERFORCE 10G Rev 2.0": true, - "Gigabyte AORUS RTX3080 XTREME WATERFORCE WB 10G": true, - "Gigabyte AORUS RTX3080 XTREME WATERFORCE WB 12G LHR": true, - "Gigabyte AORUS RTX3090 XTREME WATERFORCE 24G": true, - "Gigabyte AORUS RTX3090 XTREME WATERFORCE WB 24G": true, - "Gigabyte AORUS RTX4080 MASTER 16G": true, - "Gigabyte AORUS RTX4090 MASTER 24G": true, - "Gigabyte Aorus M2": true, - "Gigabyte GTX1050 Ti G1 Gaming": true, - "Gigabyte GTX1050 Ti G1 Gaming (rev A1)": true, - "Gigabyte GTX1060 G1 Gaming 6G": true, - "Gigabyte GTX1060 G1 Gaming 6G OC": true, - "Gigabyte GTX1060 Xtreme Gaming V1": true, - "Gigabyte GTX1060 Xtreme Gaming v2": true, - "Gigabyte GTX1070 G1 Gaming 8G V1": true, - "Gigabyte GTX1070 Ti 8G Gaming": true, - "Gigabyte GTX1070 Xtreme Gaming": true, - "Gigabyte GTX1080 G1 Gaming": true, - "Gigabyte GTX1080 Ti 11G": true, - "Gigabyte GTX1080 Ti Gaming OC 11G": true, - "Gigabyte GTX1080 Ti Gaming OC BLACK 11G": true, - "Gigabyte GTX1080 Ti Xtreme Edition": true, - "Gigabyte GTX1080 Ti Xtreme Waterforce Edition": true, - "Gigabyte GTX1650 Gaming OC": true, - "Gigabyte GTX1660 Gaming OC 6G": true, - "Gigabyte GTX1660 SUPER Gaming OC": true, - "Gigabyte RGB": true, - "Gigabyte RGB Fusion": true, - "Gigabyte RGB Fusion 2 DRAM": true, - "Gigabyte RGB Fusion 2 SMBus": true, - "Gigabyte RGB Fusion 2 USB": true, - "Gigabyte RTX2060 Gaming OC": true, - "Gigabyte RTX2060 Gaming OC PRO": true, - "Gigabyte RTX2060 Gaming OC PRO V2": true, - "Gigabyte RTX2060 Gaming OC PRO White": true, - "Gigabyte RTX2060 SUPER Gaming": true, - "Gigabyte RTX2060 SUPER Gaming OC": true, - "Gigabyte RTX2060 SUPER Gaming OC 3X 8G V2": true, - "Gigabyte RTX2060 SUPER Gaming OC 3X White 8G": true, - "Gigabyte RTX2070 Gaming OC 8G": true, - "Gigabyte RTX2070 Gaming OC 8GC": true, - "Gigabyte RTX2070 Windforce 8G": true, - "Gigabyte RTX2070S Gaming OC": true, - "Gigabyte RTX2070S Gaming OC 3X": true, - "Gigabyte RTX2070S Gaming OC 3X White": true, - "Gigabyte RTX2080 Gaming OC 8G": true, - "Gigabyte RTX2080 Ti GAMING OC 11G": true, - "Gigabyte RTX2080S Gaming OC 8G": true, - "Gigabyte RTX3050 Gaming OC 8G": true, - "Gigabyte RTX3060 EAGLE 12G LHR V2": true, - "Gigabyte RTX3060 EAGLE OC 12G": true, - "Gigabyte RTX3060 EAGLE OC 12G V2": true, - "Gigabyte RTX3060 Gaming OC 12G": true, - "Gigabyte RTX3060 Gaming OC 12G (rev. 2.0)": true, - "Gigabyte RTX3060 Ti EAGLE OC 8G": true, - "Gigabyte RTX3060 Ti EAGLE OC 8G V2.0 LHR": true, - "Gigabyte RTX3060 Ti GAMING OC 8G": true, - "Gigabyte RTX3060 Ti GAMING OC LHR 8G": true, - "Gigabyte RTX3060 Ti GAMING OC PRO 8G": true, - "Gigabyte RTX3060 Ti Gaming OC PRO 8G LHR": true, - "Gigabyte RTX3060 Ti Vision OC 8G": true, - "Gigabyte RTX3060 Vision OC 12G": true, - "Gigabyte RTX3060 Vision OC 12G LHR": true, - "Gigabyte RTX3060 Vision OC 12G v3.0": true, - "Gigabyte RTX3070 Eagle OC 8G": true, - "Gigabyte RTX3070 Eagle OC 8G V2.0 LHR": true, - "Gigabyte RTX3070 Gaming OC 8G": true, - "Gigabyte RTX3070 Gaming OC 8G v3.0 LHR": true, - "Gigabyte RTX3070 MASTER 8G": true, - "Gigabyte RTX3070 MASTER 8G LHR": true, - "Gigabyte RTX3070 Ti EAGLE 8G": true, - "Gigabyte RTX3070 Ti Gaming OC 8G": true, - "Gigabyte RTX3070 Ti Vision OC 8G": true, - "Gigabyte RTX3070 Vision 8G": true, - "Gigabyte RTX3070 Vision 8G V2.0 LHR": true, - "Gigabyte RTX3080 EAGLE OC 10G": true, - "Gigabyte RTX3080 Gaming OC 10G": true, - "Gigabyte RTX3080 Gaming OC 12G": true, - "Gigabyte RTX3080 Ti EAGLE 12G": true, - "Gigabyte RTX3080 Ti EAGLE OC 12G": true, - "Gigabyte RTX3080 Ti Gaming OC 12G": true, - "Gigabyte RTX3080 Ti Vision OC 12G": true, - "Gigabyte RTX3080 Vision OC 10G": true, - "Gigabyte RTX3080 Vision OC 10G (REV 2.0)": true, - "Gigabyte RTX3090 Gaming OC 24G": true, - "Gigabyte RTX3090 VISION OC 24G ": true, - "Gigabyte RTX4070Ti Gaming OC 12G": true, - "Gigabyte RTX4080 AERO OC 16G": true, - "Gigabyte RTX4080 Eagle OC 16G": true, - "Gigabyte RTX4080 Gaming OC 16G": true, - "Gigabyte RTX4090 GAMING OC 24G": true, - "Glorious Model D / D-": true, - "Glorious Model D / D- Wireless": true, - "Glorious Model O / O-": true, - "Glorious Model O / O- Wireless": true, - "HP Omen 30L": true, - "Holtek Mousemat": true, - "Holtek USB Gaming Mouse": true, - "HyperX Alloy Elite 2": true, - "HyperX Alloy Elite 2 (HP)": true, - "HyperX Alloy Elite RGB": true, - "HyperX Alloy FPS RGB": true, - "HyperX Alloy Origins": true, - "HyperX Alloy Origins (HP)": true, - "HyperX Alloy Origins 60": true, - "HyperX Alloy Origins 60 (HP)": true, - "HyperX Alloy Origins 65 (HP)": true, - "HyperX Alloy Origins Core": true, - "HyperX Alloy Origins Core (HP)": true, - "HyperX DRAM": true, - "HyperX DuoCast": true, - "HyperX Fury Ultra": true, - "HyperX Pulsefire Core": true, - "HyperX Pulsefire Dart (Wired)": true, - "HyperX Pulsefire Dart (Wireless)": true, - "HyperX Pulsefire FPS Pro": true, - "HyperX Pulsefire Haste": true, - "HyperX Pulsefire Mat": true, - "HyperX Pulsefire Mat RGB Mouse Pad XL": true, - "HyperX Pulsefire Raid": true, - "HyperX Pulsefire Surge": true, - "HyperX Quadcast S": true, - "Intel Arc A770 Limited Edition": true, - "Ionico Keyboard": true, - "Ionico Light Bar": true, - "JSAUX RGB Docking Station": true, - "KFA2 RTX 2070 EX": true, - "KFA2 RTX 2080 EX OC": true, - "KFA2 RTX 2080 Super EX OC": true, - "KFA2 RTX 2080 TI EX OC": true, - "KasaSmart": true, - "Keychron Gaming Keyboard 1": true, - "LED Strip": true, - "LIFX": true, - "Lego Dimensions Toypad Base": true, - "Lenovo": true, - "Lenovo 5 2020": true, - "Lenovo 5 2021": true, - "Lenovo 5 2022": true, - "Lenovo Ideapad 3-15ach6": true, - "Lenovo Legion 7 gen 5": true, - "Lenovo Legion 7 gen 6": true, - "Lenovo Legion 7S gen 5": true, - "Lenovo Legion 7S gen 6": true, - "Lenovo Legion Y740": true, - "Lian Li O11 Dynamic - Razer Edition": true, - "Lian Li Uni Hub": true, - "Lian Li Uni Hub - AL": true, - "Lian Li Uni Hub - SL V2": true, - "Lian Li Uni Hub - SL V2 v0.5": true, - "Linux LED": true, - "Logitech G Pro (HERO) Gaming Mouse": true, - "Logitech G Pro Gaming Mouse": true, - "Logitech G Pro RGB Mechanical Gaming Keyboard": true, - "Logitech G Pro Wireless Gaming Mouse": true, - "Logitech G Pro Wireless Gaming Mouse (wired)": true, - "Logitech G203 Lightsync": true, - "Logitech G203 Prodigy": true, - "Logitech G213": true, - "Logitech G303 Daedalus Apex": true, - "Logitech G403 Hero": true, - "Logitech G403 Prodigy Gaming Mouse": true, - "Logitech G403 Wireless Gaming Mouse": true, - "Logitech G403 Wireless Gaming Mouse (wired)": true, - "Logitech G502 Hero Gaming Mouse": true, - "Logitech G502 Proteus Spectrum Gaming Mouse": true, - "Logitech G502 Wireless Gaming Mouse": true, - "Logitech G502 Wireless Gaming Mouse (wired)": true, - "Logitech G512": true, - "Logitech G512 RGB": true, - "Logitech G560 Lightsync Speaker": true, - "Logitech G610 Orion": true, - "Logitech G633 Gaming Headset": true, - "Logitech G703 Hero Wireless Gaming Mouse": true, - "Logitech G703 Hero Wireless Gaming Mouse (wired)": true, - "Logitech G703 Wireless Gaming Mouse": true, - "Logitech G703 Wireless Gaming Mouse (wired)": true, - "Logitech G733 Gaming Headset": true, - "Logitech G810 Orion Spectrum": true, - "Logitech G813 RGB Mechanical Gaming Keyboard": true, - "Logitech G815 RGB Mechanical Gaming Keyboard": true, - "Logitech G900 Wireless Gaming Mouse": true, - "Logitech G900 Wireless Gaming Mouse (wired)": true, - "Logitech G903 Hero Wireless Gaming Mouse": true, - "Logitech G903 Hero Wireless Gaming Mouse (wired)": true, - "Logitech G903 Wireless Gaming Mouse": true, - "Logitech G903 Wireless Gaming Mouse (wired)": true, - "Logitech G910 Orion Spark": true, - "Logitech G910 Orion Spectrum": true, - "Logitech G915 Wireless RGB Mechanical Gaming Keyboard": true, - "Logitech G915 Wireless RGB Mechanical Gaming Keyboard (Wired)": true, - "Logitech G915TKL Wireless RGB Mechanical Gaming Keyboard": true, - "Logitech G915TKL Wireless RGB Mechanical Gaming Keyboard (Wired)": true, - "Logitech G933 Lightsync Headset": true, - "Logitech G935 Gaming Headset": true, - "Logitech Powerplay Mat": true, - "Logitech X56 Rhino Hotas Joystick": true, - "Logitech X56 Rhino Hotas Throttle": true, - "MSI 3-Zone Laptop": true, - "MSI GeForce GTX 1070 Gaming X": true, - "MSI GeForce GTX 1660 Gaming X 6G": true, - "MSI GeForce GTX 1660 Super Gaming 6G": true, - "MSI GeForce GTX 1660 Super Gaming X 6G": true, - "MSI GeForce GTX 1660Ti Gaming 6G": true, - "MSI GeForce GTX 1660Ti Gaming X 6G": true, - "MSI GeForce RTX 2060 Gaming Z 6G": true, - "MSI GeForce RTX 2060 Super ARMOR OC": true, - "MSI GeForce RTX 2060 Super Gaming X": true, - "MSI GeForce RTX 2070 ARMOR": true, - "MSI GeForce RTX 2070 ARMOR OC": true, - "MSI GeForce RTX 2070 Gaming": true, - "MSI GeForce RTX 2070 Gaming Z": true, - "MSI GeForce RTX 2070 SUPER ARMOR OC": true, - "MSI GeForce RTX 2070 Super Gaming": true, - "MSI GeForce RTX 2070 Super Gaming Trio": true, - "MSI GeForce RTX 2070 Super Gaming X": true, - "MSI GeForce RTX 2070 Super Gaming X Trio": true, - "MSI GeForce RTX 2070 Super Gaming Z Trio": true, - "MSI GeForce RTX 2080 Duke 8G OC": true, - "MSI GeForce RTX 2080 Gaming Trio": true, - "MSI GeForce RTX 2080 Gaming X Trio": true, - "MSI GeForce RTX 2080 Sea Hawk EK X": true, - "MSI GeForce RTX 2080 Super Gaming X Trio": true, - "MSI GeForce RTX 2080Ti 11G Gaming X Trio": true, - "MSI GeForce RTX 2080Ti Gaming X Trio": true, - "MSI GeForce RTX 2080Ti Gaming Z Trio": true, - "MSI GeForce RTX 2080Ti Sea Hawk EK X": true, - "MSI GeForce RTX 3050 Gaming X 8G": true, - "MSI GeForce RTX 3060 12G Gaming X Trio": true, - "MSI GeForce RTX 3060 12G Gaming X Trio LHR": true, - "MSI GeForce RTX 3060 12G Gaming Z Trio": true, - "MSI GeForce RTX 3060 12GB Gaming X Trio": true, - "MSI GeForce RTX 3060 Gaming X 12G": true, - "MSI GeForce RTX 3060 Gaming X 12G (GA104)": true, - "MSI GeForce RTX 3060 Gaming X 12G LHR": true, - "MSI GeForce RTX 3060 Ti 8GB Gaming X LHR": true, - "MSI GeForce RTX 3060 Ti 8GB Gaming X Trio": true, - "MSI GeForce RTX 3060 Ti 8GB Gaming X Trio LHR": true, - "MSI GeForce RTX 3070 8GB Gaming Trio": true, - "MSI GeForce RTX 3070 8GB Gaming X Trio": true, - "MSI GeForce RTX 3070 8GB Suprim": true, - "MSI GeForce RTX 3070 8GB Suprim X": true, - "MSI GeForce RTX 3070 8GB Suprim X LHR": true, - "MSI GeForce RTX 3070 Ti 8GB Gaming X Trio": true, - "MSI GeForce RTX 3070 Ti Suprim X 8G": true, - "MSI GeForce RTX 3080 10GB Gaming X Trio": true, - "MSI GeForce RTX 3080 10GB Gaming Z Trio": true, - "MSI GeForce RTX 3080 10GB Gaming Z Trio LHR": true, - "MSI GeForce RTX 3080 12GB Gaming Z Trio LHR": true, - "MSI GeForce RTX 3080 Suprim X 10G": true, - "MSI GeForce RTX 3080 Suprim X 10G LHR": true, - "MSI GeForce RTX 3080 Suprim X 12G LHR": true, - "MSI GeForce RTX 3080 Ti Gaming X Trio 12G": true, - "MSI GeForce RTX 3080 Ti Suprim X 12G": true, - "MSI GeForce RTX 3090 24GB Gaming X Trio": true, - "MSI GeForce RTX 3090 Suprim 24G": true, - "MSI GeForce RTX 3090 Suprim X 24G": true, - "MSI GeForce RTX 3090 Ti Gaming X Trio 24G": true, - "MSI GeForce RTX 3090 Ti Suprim X 24G": true, - "MSI GeForce RTX 4070 12GB Gaming X Trio": true, - "MSI GeForce RTX 4070Ti 12GB Gaming X Trio": true, - "MSI GeForce RTX 4070Ti 12GB Suprim X Trio": true, - "MSI GeForce RTX 4080 16GB Gaming X Trio": true, - "MSI GeForce RTX 4080 16GB Suprim X": true, - "MSI GeForce RTX 4090 24GB Gaming X Trio": true, - "MSI GeForce RTX 4090 24GB Suprim Liquid X": true, - "MSI GeForce RTX 4090 24GB Suprim X": true, - "MSI Mystic Light MS_1562": true, - "MSI Mystic Light MS_1563": true, - "MSI Mystic Light MS_1564": true, - "MSI Mystic Light MS_1720": true, - "MSI Mystic Light MS_7B12": true, - "MSI Mystic Light MS_7B16": true, - "MSI Mystic Light MS_7B17": true, - "MSI Mystic Light MS_7B18": true, - "MSI Mystic Light MS_7B50": true, - "MSI Mystic Light MS_7B85": true, - "MSI Mystic Light MS_7B93": true, - "MSI Mystic Light MS_7C34": true, - "MSI Mystic Light MS_7C35": true, - "MSI Mystic Light MS_7C36": true, - "MSI Mystic Light MS_7C37": true, - "MSI Mystic Light MS_7C56": true, - "MSI Mystic Light MS_7C59": true, - "MSI Mystic Light MS_7C60": true, - "MSI Mystic Light MS_7C67": true, - "MSI Mystic Light MS_7C71": true, - "MSI Mystic Light MS_7C73": true, - "MSI Mystic Light MS_7C75": true, - "MSI Mystic Light MS_7C76": true, - "MSI Mystic Light MS_7C77": true, - "MSI Mystic Light MS_7C79": true, - "MSI Mystic Light MS_7C80": true, - "MSI Mystic Light MS_7C81": true, - "MSI Mystic Light MS_7C82": true, - "MSI Mystic Light MS_7C83": true, - "MSI Mystic Light MS_7C84": true, - "MSI Mystic Light MS_7C86": true, - "MSI Mystic Light MS_7C87": true, - "MSI Mystic Light MS_7C90": true, - "MSI Mystic Light MS_7C91": true, - "MSI Mystic Light MS_7C92": true, - "MSI Mystic Light MS_7C94": true, - "MSI Mystic Light MS_7C95": true, - "MSI Mystic Light MS_7C98": true, - "MSI Mystic Light MS_7D03": true, - "MSI Mystic Light MS_7D06": true, - "MSI Mystic Light MS_7D07": true, - "MSI Mystic Light MS_7D08": true, - "MSI Mystic Light MS_7D09": true, - "MSI Mystic Light MS_7D13": true, - "MSI Mystic Light MS_7D15": true, - "MSI Mystic Light MS_7D17": true, - "MSI Mystic Light MS_7D18": true, - "MSI Mystic Light MS_7D19": true, - "MSI Mystic Light MS_7D20": true, - "MSI Mystic Light MS_7D25": true, - "MSI Mystic Light MS_7D27": true, - "MSI Mystic Light MS_7D28": true, - "MSI Mystic Light MS_7D29": true, - "MSI Mystic Light MS_7D30": true, - "MSI Mystic Light MS_7D31": true, - "MSI Mystic Light MS_7D32": true, - "MSI Mystic Light MS_7D36": true, - "MSI Mystic Light MS_7D38": true, - "MSI Mystic Light MS_7D41": true, - "MSI Mystic Light MS_7D42": true, - "MSI Mystic Light MS_7D43": true, - "MSI Mystic Light MS_7D46": true, - "MSI Mystic Light MS_7D50": true, - "MSI Mystic Light MS_7D51": true, - "MSI Mystic Light MS_7D52": true, - "MSI Mystic Light MS_7D53": true, - "MSI Mystic Light MS_7D54": true, - "MSI Mystic Light MS_7D59": true, - "MSI Mystic Light MS_7D67": true, - "MSI Mystic Light MS_7D69": true, - "MSI Mystic Light MS_7D70": true, - "MSI Mystic Light MS_7D73": true, - "MSI Mystic Light MS_7D75": true, - "MSI Mystic Light MS_7D76": true, - "MSI Mystic Light MS_7D77": true, - "MSI Mystic Light MS_7D78": true, - "MSI Mystic Light MS_7D86": true, - "MSI Mystic Light MS_7D89": true, - "MSI Mystic Light MS_7D91": true, - "MSI Mystic Light MS_7E01": true, - "MSI Mystic Light MS_7E06": true, - "MSI Mystic Light MS_7E07": true, - "MSI Mystic Light MS_B926": true, - "MSI Optix controller": true, - "MSI Radeon RX 6600 XT Gaming X": true, - "MSI Radeon RX 6700 XT Gaming X": true, - "MSI Radeon RX 6750 XT Gaming X Trio 12G": true, - "MSI Radeon RX 6800 Gaming X Trio": true, - "MSI Radeon RX 6800 Gaming Z Trio v1": true, - "MSI Radeon RX 6800 XT Gaming X Trio": true, - "MSI Radeon RX 6800 XT Gaming Z Trio": true, - "MSI Radeon RX 6900 XT Gaming X Trio": true, - "MSI Radeon RX 6900 XT Gaming Z Trio": true, - "MSI Radeon RX 6950 XT Gaming X Trio": true, - "MSI Vigor GK30 controller": true, - "MSI-RGB": true, - "Mountain Everest": true, - "N5312A USB Optical Mouse": true, - "NVIDIA RTX2060S": true, - "NVIDIA RTX2080S": true, - "NZXT Hue 2": true, - "NZXT Hue 2 Ambient": true, - "NZXT Hue 2 Motherboard": true, - "NZXT Hue+": true, - "NZXT Kraken M2": true, - "NZXT Kraken X2": true, - "NZXT Kraken X3": true, - "NZXT Kraken X3 Series": true, - "NZXT Kraken X3 Series RGB": true, - "NZXT RGB & Fan Controller": true, - "NZXT RGB Controller": true, - "NZXT Smart Device V1": true, - "NZXT Smart Device V2": true, - "Nanoleaf": true, - "Nollie 32CH": true, - "Np93 ALPHA - Gaming Mouse": true, - "Nvidia ESA - Dell XPS 730x": true, - "OKS Optical Axis RGB": true, - "OpenRazer": false, - "PNY XLR8 OC EDITION RTX 2060": true, - "PNY XLR8 Revel EPIC-X RTX 3060": true, - "PNY XLR8 Revel EPIC-X RTX 3070": true, - "PNY XLR8 Revel EPIC-X RTX 3070 LHR": true, - "PNY XLR8 Revel EPIC-X RTX 3080": true, - "PNY XLR8 Revel EPIC-X RTX 3090": true, - "Palit 1080": true, - "Palit 3060": true, - "Palit 3060 LHR": true, - "Palit 3060TI LHR": true, - "Palit 3060Ti": true, - "Palit 3070": true, - "Palit 3070 LHR": true, - "Palit 3070Ti": true, - "Palit 3070Ti GamingPro": true, - "Palit 3080": true, - "Palit 3080 Gamerock": true, - "Palit 3080 Gamerock LHR": true, - "Palit 3080 GamingPro 12G": true, - "Palit 3080 LHR": true, - "Palit 3080Ti": true, - "Palit 3080Ti Gamerock": true, - "Palit 3090": true, - "Palit 3090 Gamerock": true, - "Palit 4070Ti Gamerock": true, - "Palit 4090 Gamerock": true, - "Palit GeForce RTX 3060 Ti Dual": true, - "Patriot Viper": true, - "Patriot Viper Steel": true, - "Philips Hue": true, - "Philips Wiz": true, - "Razer Abyssus Elite D.Va Edition": true, - "Razer Abyssus Essential": true, - "Razer Base Station Chroma": true, - "Razer Base Station V2 Chroma": true, - "Razer Basilisk": true, - "Razer Basilisk Essential": true, - "Razer Basilisk Ultimate (Wired)": true, - "Razer Basilisk Ultimate (Wireless)": true, - "Razer Basilisk V2": true, - "Razer Basilisk V3": true, - "Razer Basilisk V3 Pro (Wired)": true, - "Razer Basilisk V3 Pro (Wireless)": true, - "Razer Blackwidow 2019": true, - "Razer Blackwidow Chroma": true, - "Razer Blackwidow Chroma Tournament Edition": true, - "Razer Blackwidow Chroma V2": true, - "Razer Blackwidow Elite": true, - "Razer Blackwidow Overwatch": true, - "Razer Blackwidow V3": true, - "Razer Blackwidow V3 Mini (Wired)": true, - "Razer Blackwidow V3 Mini (Wireless)": true, - "Razer Blackwidow V3 Pro (Wired)": true, - "Razer Blackwidow V3 Pro (Wireless)": true, - "Razer Blackwidow V3 TKL": true, - "Razer Blackwidow X Chroma": true, - "Razer Blackwidow X Chroma Tournament Edition": true, - "Razer Blade (2016)": true, - "Razer Blade (Late 2016)": true, - "Razer Blade 14 (2021)": true, - "Razer Blade 14 (2022)": true, - "Razer Blade 15 (2018 Advanced)": true, - "Razer Blade 15 (2018 Base)": true, - "Razer Blade 15 (2018 Mercury)": true, - "Razer Blade 15 (2019 Advanced)": true, - "Razer Blade 15 (2019 Base)": true, - "Razer Blade 15 (2019 Mercury)": true, - "Razer Blade 15 (2019 Studio)": true, - "Razer Blade 15 (2020 Advanced)": true, - "Razer Blade 15 (2020 Base)": true, - "Razer Blade 15 (2021 Advanced)": true, - "Razer Blade 15 (2021 Base)": true, - "Razer Blade 15 (2022)": true, - "Razer Blade 15 (Late 2020)": true, - "Razer Blade 15 (Late 2021 Advanced)": true, - "Razer Blade Pro (2016)": true, - "Razer Blade Pro (2017 FullHD)": true, - "Razer Blade Pro (2017)": true, - "Razer Blade Pro (2019)": true, - "Razer Blade Pro (Late 2019)": true, - "Razer Blade Pro 17 (2020)": true, - "Razer Blade Pro 17 (2021)": true, - "Razer Blade Stealth (2016)": true, - "Razer Blade Stealth (2017)": true, - "Razer Blade Stealth (2019)": true, - "Razer Blade Stealth (2020)": true, - "Razer Blade Stealth (Late 2016)": true, - "Razer Blade Stealth (Late 2017)": true, - "Razer Blade Stealth (Late 2019)": true, - "Razer Blade Stealth (Late 2020)": true, - "Razer Book 13 (2020)": true, - "Razer Charging Pad Chroma": true, - "Razer Chroma Addressable RGB Controller": true, - "Razer Chroma HDK": true, - "Razer Chroma Mug Holder": true, - "Razer Chroma PC Case Lighting Kit": true, - "Razer Core": true, - "Razer Core X": true, - "Razer Cynosa Chroma": true, - "Razer Cynosa Chroma V2": true, - "Razer Cynosa Lite": true, - "Razer Deathadder Chroma": true, - "Razer Deathadder Elite": true, - "Razer Deathadder Essential": true, - "Razer Deathadder Essential V2": true, - "Razer Deathadder Essential White Edition": true, - "Razer Deathadder V2": true, - "Razer Deathadder V2 Mini": true, - "Razer Deathadder V2 Pro (Wired)": true, - "Razer Deathadder V2 Pro (Wireless)": true, - "Razer Deathstalker Chroma": true, - "Razer Deathstalker V2": true, - "Razer Deathstalker V2 Pro (Wired)": true, - "Razer Deathstalker V2 Pro (Wireless)": true, - "Razer Diamondback": true, - "Razer Firefly": true, - "Razer Firefly Hyperflux": true, - "Razer Firefly V2": true, - "Razer Goliathus": true, - "Razer Goliathus Extended": true, - "Razer Huntsman": true, - "Razer Huntsman Elite": true, - "Razer Huntsman Mini": true, - "Razer Huntsman Tournament Edition": true, - "Razer Huntsman V2": true, - "Razer Huntsman V2 Analog": true, - "Razer Huntsman V2 TKL": true, - "Razer Kraken 7.1": true, - "Razer Kraken 7.1 Chroma": true, - "Razer Kraken 7.1 V2": true, - "Razer Kraken Kitty Black Edition": true, - "Razer Kraken Kitty Edition": true, - "Razer Kraken Ultimate": true, - "Razer Lancehead 2017 (Wired)": true, - "Razer Lancehead 2017 (Wireless)": true, - "Razer Lancehead 2019 (Wired)": true, - "Razer Lancehead 2019 (Wireless)": true, - "Razer Lancehead Tournament Edition": true, - "Razer Laptop Stand Chroma": true, - "Razer Laptop Stand Chroma V2": true, - "Razer Leviathan V2 X": true, - "Razer Mamba 2012 (Wired)": true, - "Razer Mamba 2012 (Wireless)": true, - "Razer Mamba 2015 (Wired)": true, - "Razer Mamba 2015 (Wireless)": true, - "Razer Mamba 2018 (Wired)": true, - "Razer Mamba 2018 (Wireless)": true, - "Razer Mamba Elite": true, - "Razer Mamba Tournament Edition": true, - "Razer Mouse Bungee V3 Chroma": true, - "Razer Mouse Dock Chroma": true, - "Razer Mouse Dock Pro": true, - "Razer Naga Chroma": true, - "Razer Naga Classic": true, - "Razer Naga Epic Chroma": true, - "Razer Naga Hex V2": true, - "Razer Naga Left Handed": true, - "Razer Naga Pro (Wired)": true, - "Razer Naga Pro (Wireless)": true, - "Razer Naga Trinity": true, - "Razer Nommo Chroma": true, - "Razer Nommo Pro": true, - "Razer Orbweaver Chroma": true, - "Razer Ornata Chroma": true, - "Razer Ornata Chroma V2": true, - "Razer Ornata V3": true, - "Razer Ornata V3 Rev2": true, - "Razer Ornata V3 X": true, - "Razer Seiren Emote": true, - "Razer Strider Chroma": true, - "Razer Tartarus Chroma": true, - "Razer Tartarus Pro": true, - "Razer Tartarus V2": true, - "Razer Thunderbolt 4 Dock Chroma": true, - "Razer Tiamat 7.1 V2": true, - "Razer Viper": true, - "Razer Viper 8kHz": true, - "Razer Viper Mini": true, - "Razer Viper Ultimate (Wired)": true, - "Razer Viper Ultimate (Wireless)": true, - "Red Square Keyrox TKL": true, - "Red Square Keyrox TKL Classic": true, - "Redragon M602 Griffin": true, - "Redragon M711 Cobra": true, - "Redragon M715 Dagger": true, - "Redragon M716 Inquisitor": true, - "Redragon M808 Storm": true, - "Redragon M908 Impact": true, - "Roccat Burst Core": true, - "Roccat Burst Pro": true, - "Roccat Elo 7.1": true, - "Roccat Horde Aimo": true, - "Roccat Kone Aimo": true, - "Roccat Kone Aimo 16K": true, - "Roccat Kova": true, - "Roccat Vulcan 120-Series Aimo": true, - "SRGBMods LED Controller v1": true, - "SRGBmods Pico LED Controller": true, - "Sapphire RX 470/480 Nitro+": true, - "Sapphire RX 5500 XT Nitro+": true, - "Sapphire RX 570/580/590 Nitro+": true, - "Sapphire RX 5700 (XT) Nitro+": true, - "Sapphire RX 5700 XT Nitro+": true, - "Sapphire RX 580 Nitro+ (2048SP)": true, - "Sapphire RX 6600 XT Nitro+": true, - "Sapphire RX 6700 XT Nitro+": true, - "Sapphire RX 6750 XT Nitro+": true, - "Sapphire RX 6800 Nitro+": true, - "Sapphire RX 6800 XT Nitro+ SE": true, - "Sapphire RX 6800 XT/6900 XT Nitro+": true, - "Sapphire RX 6900 XT Nitro+ SE": true, - "Sapphire RX 6900 XT Toxic": true, - "Sapphire RX 6900 XT Toxic Limited Edition": true, - "Sapphire RX 6950 XT Nitro+": true, - "Sapphire RX 7900 XTX Nitro+": true, - "Sapphire RX Vega 56/64 Nitro+": true, - "Sony DualSense": true, - "Sony DualShock 4": true, - "SteelSeries Aerox 3 Wired": true, - "SteelSeries Aerox 9 Wired": true, - "SteelSeries Apex (OG)/Apex Fnatic": true, - "SteelSeries Apex 3": true, - "SteelSeries Apex 3 TKL": true, - "SteelSeries Apex 350": true, - "SteelSeries Apex 5": true, - "SteelSeries Apex 7": true, - "SteelSeries Apex 7 TKL": true, - "SteelSeries Apex M750": true, - "SteelSeries Apex Pro": true, - "SteelSeries Apex Pro TKL": true, - "SteelSeries Arctis 5": true, - "SteelSeries QCK Prism Cloth 3XL": true, - "SteelSeries QCK Prism Cloth 4XL": true, - "SteelSeries QCK Prism Cloth Medium": true, - "SteelSeries QCK Prism Cloth XL": true, - "SteelSeries QCK Prism Cloth XL CS:GO Neon Rider Ed.": true, - "SteelSeries QCK Prism Cloth XL Destiny Ed.": true, - "SteelSeries Rival 100": true, - "SteelSeries Rival 100 DotA 2 Edition": true, - "SteelSeries Rival 105": true, - "SteelSeries Rival 106": true, - "SteelSeries Rival 110": true, - "SteelSeries Rival 3": true, - "SteelSeries Rival 3 (Old Firmware)": true, - "SteelSeries Rival 300": true, - "SteelSeries Rival 300 Black Ops Edition": true, - "SteelSeries Rival 300 CS:GO Fade Edition": true, - "SteelSeries Rival 300 CS:GO Fade Edition (stm32)": true, - "SteelSeries Rival 300 CS:GO Hyperbeast Edition": true, - "SteelSeries Rival 300 Dota 2 Edition": true, - "SteelSeries Rival 300 HP Omen Edition": true, - "SteelSeries Rival 310": true, - "SteelSeries Rival 310 CS:GO Howl Edition": true, - "SteelSeries Rival 310 PUBG Edition": true, - "SteelSeries Rival 600": true, - "SteelSeries Rival 600 Dota 2 Edition": true, - "SteelSeries Rival 650": true, - "SteelSeries Rival 650 Wireless": true, - "SteelSeries Rival 700": true, - "SteelSeries Rival 710": true, - "SteelSeries Sensei 310": true, - "SteelSeries Sensei TEN": true, - "SteelSeries Sensei TEN CS:GO Neon Rider Edition": true, - "SteelSeries Siberia 350": true, - "Strimer L Connect": true, - "Tecknet M008": true, - "Thermaltake Poseidon Z RGB": true, - "Thermaltake Riing (PID 0x1FA5)": true, - "Thermaltake Riing (PID 0x1FA6)": true, - "Thermaltake Riing (PID 0x1FA7)": true, - "Thermaltake Riing (PID 0x1FA8)": true, - "Thermaltake Riing (PID 0x1FA9)": true, - "Thermaltake Riing (PID 0x1FAA)": true, - "Thermaltake Riing (PID 0x1FAB)": true, - "Thermaltake Riing (PID 0x1FAC)": true, - "Thermaltake Riing (PID 0x1FAD)": true, - "Thermaltake Riing (PID 0x1FAE)": true, - "Thermaltake Riing (PID 0x1FAF)": true, - "Thermaltake Riing (PID 0x1FB0)": true, - "Thermaltake Riing (PID 0x1FB1)": true, - "Thermaltake Riing (PID 0x1FB2)": true, - "Thermaltake Riing (PID 0x1FB3)": true, - "Thermaltake Riing (PID 0x1FB4)": true, - "Thermaltake Riing (PID 0x1FB5)": true, - "Thermaltake Riing Quad (PID 0x2260)": true, - "Thermaltake Riing Quad (PID 0x2261)": true, - "Thermaltake Riing Quad (PID 0x2262)": true, - "Thermaltake Riing Quad (PID 0x2263)": true, - "Thermaltake Riing Quad (PID 0x2264)": true, - "Thermaltake Riing Quad (PID 0x2265)": true, - "Thermaltake Riing Quad (PID 0x2266)": true, - "Thermaltake Riing Quad (PID 0x2267)": true, - "Thermaltake Riing Quad (PID 0x2268)": true, - "Thermaltake Riing Quad (PID 0x2269)": true, - "Thermaltake Riing Quad (PID 0x226A)": true, - "Thermaltake Riing Quad (PID 0x226B)": true, - "Thermaltake Riing Quad (PID 0x226C)": true, - "Thermaltake Riing Quad (PID 0x226D)": true, - "Thermaltake Riing Quad (PID 0x226E)": true, - "Thermaltake Riing Quad (PID 0x226F)": true, - "Thermaltake Riing Quad (PID 0x2270)": true, - "ThingM blink(1) mk2": true, - "Trust GXT 114": true, - "Trust GXT 180": true, - "ViewSonic Monitor XG270QG": true, - "Wooting One (Classic)": true, - "Wooting One (Legacy)": true, - "Wooting One (None)": true, - "Wooting One (Xbox)": true, - "Wooting Two (Classic)": true, - "Wooting Two (Legacy)": true, - "Wooting Two (None)": true, - "Wooting Two (Xbox)": true, - "Wooting Two 60HE (ARM) (Classic)": true, - "Wooting Two 60HE (ARM) (None)": true, - "Wooting Two 60HE (ARM) (Xbox)": true, - "Wooting Two 60HE (Classic)": true, - "Wooting Two 60HE (None)": true, - "Wooting Two 60HE (Xbox)": true, - "Wooting Two HE (ARM) (Classic)": true, - "Wooting Two HE (ARM) (None)": true, - "Wooting Two HE (ARM) (Xbox)": true, - "Wooting Two HE (Classic)": true, - "Wooting Two HE (None)": true, - "Wooting Two HE (Xbox)": true, - "Wooting Two LE (Classic)": true, - "Wooting Two LE (None)": true, - "Wooting Two LE (Xbox)": true, - "XPG Spectrix S40G": true, - "Yeelight": true, - "ZET Blade Optical": true, - "ZET Fury Pro": true, - "ZET GAMING Edge Air Elit": true, - "ZET GAMING Edge Air Elit (Wireless)": true, - "ZET GAMING Edge Air Pro": true, - "ZET GAMING Edge Air Pro (Wireless)": true, - "ZOTAC GAMING GeForce RTX 2070 SUPER Twin Fan": true, - "ZOTAC GAMING GeForce RTX 3070 Ti Trinity OC": true, - "ZOTAC GAMING GeForce RTX 3080 Ti AMP Holo": true, - "ZOTAC GAMING GeForce RTX 3090 AMP Extreme Holo": true, - "ZOTAC GAMING GeForce RTX 4090 AMP Extreme AIRO": true, - "ZOTAC GAMING GeForce RTX 4090 Trinity OC": true, - "Zalman Z Sync": true, - "iGame GeForce RTX 2070 SUPER Advanced OC-V": true, - "iGame GeForce RTX 3060 Advanced OC 12G L-V": true, - "iGame GeForce RTX 3060 Ti Advanced OC-V": true, - "iGame GeForce RTX 3060 Ti Ultra W OC LHR-V": true, - "iGame GeForce RTX 3060 Ultra W OC 12G L-V": true, - "iGame GeForce RTX 3070 Advanced OC-V": true, - "iGame GeForce RTX 3070 Ti Advanced OC-V": true, - "iGame GeForce RTX 3070 Ti Ultra W OC LHR": true, - "iGame GeForce RTX 3070 Ultra W OC LHR": true, - "iGame GeForce RTX 3080 Ti Advanced OC-V": true, - "iGame GeForce RTX 4070 Ti Advanced OC-V": true, - "iGame GeForce RTX 4080 Ultra W OC-V": true - } - }, - "Gigabyte RGB Fusion 2 SMBus": { - "SupportedDevices": [ - "B450 AORUS ELITE", - "B450 AORUS ELITE V2", - "B450 AORUS M", - "B450 AORUS PRO WIFI-CF", - "B450 AORUS PRO-CF", - "B450 AORUS PRO-CF4", - "B450 I AORUS PRO WIFI-CF", - "B450M DS3H-CF", - "X299 DESIGNARE EX-CF", - "X399 AORUS XTREME-CF", - "X399 DESIGNARE EX-CF", - "X470 AORUS GAMING 5 WIFI", - "X470 AORUS GAMING 7 WIFI-CF", - "X470 AORUS GAMING 7 WIFI-50-CF", - "X470 AORUS ULTRA GAMING", - "X470 AORUS ULTRA GAMING-CF", - "B360M AORUS Gaming 3-CF", - "Z370 AORUS Gaming 5-CF", - "Z370 AORUS Ultra Gaming-CF" - ] - }, - "Theme": { - "theme": "dark" - }, - "UserInterface": { - "RunZoneChecks": false, - "exit_profile": { - "profile_name": "Main", - "set_on_exit": true - }, - "geometry": { - "height": 0, - "load_geometry": false, - "save_on_exit": false, - "width": 0, - "x": 0, - "y": 0 - }, - "greyscale_tray_icon": false, - "language": "default", - "minimize_on_close": true - } -} \ No newline at end of file diff --git a/pc/configs/Portmaster/Preferences b/pc/configs/Portmaster/Preferences deleted file mode 100755 index 1ec6df7..0000000 --- a/pc/configs/Portmaster/Preferences +++ /dev/null @@ -1 +0,0 @@ -{"spellcheck":{"dictionaries":["en-US"],"dictionary":""}} \ No newline at end of file diff --git a/pc/configs/hypr/hypridle.conf b/pc/configs/hypr/hypridle.conf deleted file mode 100644 index b2add3a..0000000 --- a/pc/configs/hypr/hypridle.conf +++ /dev/null @@ -1,44 +0,0 @@ -#░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ -#░ ░░░░ ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ░░ ░░░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░ -#▒ ▒▒▒▒ ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ ▒▒▒▒▒▒ ▒▒ ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ ▒▒▒ ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ ▒▒▒▒▒▒ ▒▒▒▒▒▒▒▒▒ -#▒ ▒▒▒▒ ▒ ▒▒▒ ▒ ▒ ▒▒▒ ▒ ▒▒▒▒▒▒▒▒▒▒ ▒▒ ▒▒▒▒ ▒▒▒▒▒▒▒▒▒▒▒ ▒▒▒▒▒▒▒▒▒▒▒ ▒▒▒▒▒ ▒ ▒▒▒ ▒ ▒▒▒▒▒▒▒ ▒▒ -#▓ ▓▓ ▓ ▓▓ ▓▓ ▓▓▓ ▓▓▓▓ ▓▓ ▓ ▓▓ ▓▓ ▓▓▓ ▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓ ▓▓ ▓▓▓ ▓▓ ▓▓▓ ▓▓▓▓ ▓ ▓▓ -#▓ ▓▓▓▓ ▓▓▓▓ ▓▓▓ ▓▓▓ ▓▓ ▓▓▓▓ ▓ ▓▓▓ ▓▓ ▓ ▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓ ▓▓▓▓ ▓▓ ▓▓ ▓▓▓ ▓▓▓▓ ▓ ▓▓▓ -#▓ ▓▓▓▓ ▓▓▓▓▓ ▓▓▓ ▓ ▓▓▓ ▓▓▓▓ ▓ ▓▓▓ ▓▓ ▓ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓ ▓▓ ▓▓ ▓▓▓ ▓▓ ▓▓▓ ▓▓▓▓ ▓ ▓ -#█ ████ ████ ████ ██████ ████ ██ █ ██ ███ █████████████ ██████ █████ ██ ███ ████ █████ █ -#██████████████ █████ ████████████████████████████████████████████████████████████████████████████████████████████████ ██ - -general { - lock_cmd = hyprlock --immediate - unlock_cmd = loginctl unlock-session - before_sleep_cmd = hyprlock --immediate - after_sleep_cmd = hyprlock --immediate -} - -listener { - timeout = 100 - on-timeout = notify-send "Entering idle state... (200s to screen off)" - on-resume = notify-send "Welcome back!" -} - -listener { - timeout = 200 - on-timeout = notify-send "100s to screen off" -} - -listener { - timeout = 210 - on-timeout = hyprlock -} - -listener { - timeout = 300 - on-timeout = hyprctl dispatch dpms off - on-resume = hyprctl dispatch dpms on -} - -listener { - timeout = 600 - on-timeout = systemctl suspend - on-resume = hyprctl dispatch dpms on -} diff --git a/pc/configs/hypr/wall_4K.png b/pc/configs/hypr/wall_4K.png deleted file mode 100755 index f835a97..0000000 Binary files a/pc/configs/hypr/wall_4K.png and /dev/null differ diff --git a/pc/configs/hypr/xdg-portal-hyprland b/pc/configs/hypr/xdg-portal-hyprland deleted file mode 100755 index 61a3648..0000000 --- a/pc/configs/hypr/xdg-portal-hyprland +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/bash -sleep 1 -killall xdg-desktop-portal-hyprland -killall xdg-desktop-portal-wlr -killall xdg-desktop-portal -/usr/libexec/xdg-desktop-portal-hyprland & -sleep 2 -/usr/lib/xdg-desktop-portal & \ No newline at end of file diff --git a/pc/configs/waybar/config.jsonc b/pc/configs/waybar/config.jsonc deleted file mode 100755 index 2870ad0..0000000 --- a/pc/configs/waybar/config.jsonc +++ /dev/null @@ -1,98 +0,0 @@ -{ - "layer": "top", - "position": "top", - "mod": "dock", - "exclusive": true, - "passthrough": false, - "gtk-layer-shell": true, - "height": 0, - "modules-left": [ - "clock", - "cpu", - "memory", - "hyprland/workspaces" - ], - "modules-center": ["hyprland/window"], - "modules-right": [ - "tray", - "network", - "custom/dualsense", - "pulseaudio", - "pulseaudio#microphone", - "custom/powerMenu" - ], - "hyprland/window": { - "format": "{}" - }, - "tray": { - "icon-size": 14, - "spacing": 8 - }, - "custom/dualsense": { - "tooltip": false, - "return-type": "json", - "exec": "$HOME/.config/waybar/dualsense-notifier.sh", - "on-click": "dualsensectl power-off" - }, - "custom/powerMenu": { - "format": "⏻", - "on-click": "rofi -show p -modi p:rofi-power-menu -theme ~/.config/rofi/themes/power.rasi" - }, - "network": { - "format-disconnected": " Net", - "format-wifi": "{icon} {essid}", - "format-ethernet": " Wired", - "tooltip-format-ethernet": "Ethernet\nInterface: {ifname}\nIP: {ipaddr}\nUp/Down (bps): {bandwidthUpBits}/{bandwidthDownBits}", - "tooltip-format-wifi": "Wi-Fi\nSSID: {essid}\nIP: {ipaddr}\nSignal strength: {signalStrength}%\nUp/Down (bps): {bandwidthUpBits}/{bandwidthDownBits}\nFrequency: {frequency}GHz", - "tooltip-format-disconnected": "Networking\n{ifname} disconnected", - "on-click": "terminator -x nmtui", - "format-icons": ["", "", "", ""] - }, - "clock": { - "format": "{:%a, %d.%m %H:%M:%S}", - "tooltip-format": "Calendar\n{calendar}", - "interval": 1 - }, - "hyprland/workspaces": { - "disable-scroll": true, - "all-outputs": true, - "on-click": "activate", - "format": "{icon}" - }, - "cpu": { - "tooltip-format": "CPU\nTotal: {usage}", - "format": " {usage}", - "interval": 5 - }, - "memory": { - "format": " {percentage}", - "interval": 5 - }, - "pulseaudio": { - "format": "{icon} {volume}", - "tooltip": true, - "format-muted": " Off", - "on-click": "pamixer -t", - "on-scroll-up": "pamixer -i 5", - "on-scroll-down": "pamixer -d 5", - "scroll-step": 5, - "format-icons": { - "headphone": "", - "hands-free": "", - "headset": "", - "phone": "", - "portable": "", - "car": "🏎", - "default": ["", "", ""] - } - }, - "pulseaudio#microphone": { - "format": "{format_source}", - "format-source": " {volume}", - "format-source-muted": " 0", - "on-click": "pamixer --default-source -t", - "on-scroll-up": "pamixer --default-source -i 5", - "on-scroll-down": "pamixer --default-source -d 5", - "scroll-step": 5 - } -} diff --git a/pc/configs/waybar/default-style.css b/pc/configs/waybar/default-style.css deleted file mode 100644 index 23a5fc8..0000000 --- a/pc/configs/waybar/default-style.css +++ /dev/null @@ -1,117 +0,0 @@ -* { - border: none; - border-radius: 0; - font-family: Cartograph CF Nerd Font, monospace; - font-weight: bold; - font-size: 13px; - min-height: 0; - margin-left: 3px; - margin-right: 3px; -} - -window#waybar { - background: rgba(0, 0, 0, 0.8); - color: #cdd6f4; -} - -tooltip { - background: #1e1e2e; - border-radius: 10px; - border-width: 2px; - border-style: solid; - border-color: #11111b; -} - -#workspaces button { - padding: 3px; - color: #313244; - margin-right: 5px; -} - -#workspaces button.active { - color: #a6adc8; -} - -#workspaces button.focused { - color: #a6adc8; - background: #eba0ac; - border-radius: 10px; -} - -#workspaces button.urgent { - color: #11111b; - background: #a6e3a1; - border-radius: 10px; -} - -#workspaces button:hover { - background: #11111b; - color: #cdd6f4; - border-radius: 10px; -} - -#workspaces { - background: #1e1e2e; - border-radius: 10px; - margin-left: 10px; - padding-right: 0px; - padding-left: 5px; -} - -#window, -#clock, -#custom-powerMenu, -#pulseaudio, -#memory, -#tray, -#custom-dualsense, -#network, -#workspaces, -#cpu { - background: #000024; - padding: 4px 12px; - margin: 3px 2px; - margin-top: 9px; - border: 1px solid #181825; - border-radius: 10px; -} - -#tray { - border-radius: 10px; - margin-right: 10px; -} - -#cpu { - margin-right: 0; - border-radius: 10px 0px 0px 10px; - background-color: #222244; -} - -#memory { - color: #89b4fa; - margin-left: 0; - border-radius: 0px 10px 10px 0px; - background-color: #222244; -} - -#window { - border-radius: 10px; - margin-left: 60px; - margin-right: 60px; -} - -#clock { - color: #a6f7ad; -} - -#pulseaudio { - color: #89b4fa; - border-left: 0px; - border-right: 0px; -} - -#pulseaudio.microphone { - color: #a6f7ad; - border-left: 0px; - border-right: 0px; -} diff --git a/pc/configs/waybar/dualsense-notifier.sh b/pc/configs/waybar/dualsense-notifier.sh deleted file mode 100755 index 8007849..0000000 --- a/pc/configs/waybar/dualsense-notifier.sh +++ /dev/null @@ -1,34 +0,0 @@ -#!/bin/bash - -notify_id=-1 -icon="/usr/share/icons/breeze-dark/devices/64/input-gamepad.svg" - -dev=$(echo $DS_DEV | tr '[:lower:]' '[:upper:]') - -case "$1" in -add) - notify_id=$(notify-desktop -r $notify_id -i $icon "$dev" "Controller connected") - while true; do - class="" - battery=$(dualsensectl battery 2> /dev/null) - perc=$(echo $battery | cut -d' ' -f1) - state=$(echo $perc | cut -d' ' -f2) - if [ -z "$perc" -o -z "$state" ]; then - exit; - fi - if [ $perc -lt 15 -a "$state" != "charging" ]; then - notify_id=$(notify-desktop -r $notify_id -i $icon "$dev" "Low battery ${perc}%") - fi - echo "{\"class\": \"$class\", \"text\": \" ${perc}%\"}" - sleep 5m - done - ;; -remove) - notify_id=$(notify-desktop -r $notify_id -i $icon "$dev" "Controller disconnected") - echo "{\"text\": \"\"}" - ;; -*) - echo "{\"text\": \"\"}" - exec dualsensectl monitor add "${BASH_SOURCE[0]} add" remove "${BASH_SOURCE[0]} remove" - ;; -esac \ No newline at end of file diff --git a/pc/configs/waybar/mclaren-style.css b/pc/configs/waybar/mclaren-style.css deleted file mode 100644 index 411c2c3..0000000 --- a/pc/configs/waybar/mclaren-style.css +++ /dev/null @@ -1,112 +0,0 @@ -* { - border: none; - border-radius: 0; - font-family: Cartograph CF Nerd Font, monospace; - font-weight: bold; - font-size: 13px; - min-height: 0; - margin-left: 3px; - margin-right: 3px; -} - -window#waybar { - background: rgba(0, 0, 0, 0); - color: #cc5c00; -} - -tooltip { - background: black; - border-radius: 10px; - border-width: 2px; - border-style: solid; - border-color: #cc5c00; -} - -#workspaces button { - padding: 3px; - color: #a79f9d; - margin-right: 5px; -} - -#workspaces button.active { - color: white; -} - -#workspaces button.focused { - color: white; - background: #cc5c00; - border-radius: 10px; -} - -#workspaces button.urgent { - color: white; - background: #cc5c00; - border-radius: 10px; -} - -#workspaces button:hover { - background: white; - color: #cc5c00; - border-radius: 10px; -} - -#workspaces { - background: black; - border-radius: 10px; - margin-left: 10px; - padding-right: 0px; - padding-left: 5px; -} - -#window, -#clock, -#custom-powerMenu, -#pulseaudio, -#memory, -#tray, -#custom-dualsense, -#network, -#workspaces, -#cpu { - background: black; - padding: 4px 12px; - margin: 3px 2px; - margin-top: 9px; - border: 1px solid rgb(204, 92, 0); - border-radius: 10px; -} - -#tray { - border-radius: 10px; - margin-right: 10px; -} - -#cpu { - margin-right: 0; - border-radius: 10px 0px 0px 10px; - background-color: #010006; -} - -#memory { - margin-left: 0; - border-radius: 0px 10px 10px 0px; - background-color: #010006; -} - -#window { - border-radius: 10px; - margin-left: 60px; - margin-right: 60px; -} - -#clock { - color: #009e58; -} - -#pulseaudio { - color: #9b1603; -} - -#pulseaudio.microphone { - color: rgb(167, 159, 157); -} diff --git a/pc/configs/waybar/style.css b/pc/configs/waybar/style.css deleted file mode 100755 index bad3d70..0000000 --- a/pc/configs/waybar/style.css +++ /dev/null @@ -1,113 +0,0 @@ -* { - border: none; - border-radius: 0; - font-family: 'FluentSystemIcons-Regular,Comfortaa', monospace; - font-weight: bold; - font-size: 13px; - min-height: 0; - margin-left: 3px; - margin-right: 3px; -} - -window#waybar { - background: rgba(0, 0, 0, 0); - color: #cc5c00; -} - -tooltip { - background: black; - border-radius: 10px; - border-width: 2px; - border-style: solid; - border-color: #cc5c00; -} - -#workspaces button { - padding: 3px; - color: #a79f9d; - margin-right: 5px; -} - -#workspaces button.active { - color: white; -} - -#workspaces button.focused { - color: white; - background: #cc5c00; - border-radius: 10px; -} - -#workspaces button.urgent { - color: white; - background: #cc5c00; - border-radius: 10px; -} - -#workspaces button:hover { - background: white; - color: #cc5c00; - border-radius: 10px; -} - -#workspaces { - background: black; - border-radius: 10px; - margin-left: 10px; - padding-right: 0px; - padding-left: 5px; -} - -#window, -#clock, -#custom-powerMenu, -#pulseaudio, -#memory, -#tray, -#custom-dualsense, -#network, -#workspaces, -#cpu { - background: black; - padding: 4px 12px; - margin: 3px 2px; - margin-top: 9px; - border: 1px solid rgb(204, 92, 0); - border-radius: 10px; -} - -#tray { - border-radius: 10px; - margin-right: 10px; -} - -#cpu { - margin-right: 0; - border-radius: 10px 0px 0px 10px; - background-color: #010006; -} - -#memory { - margin-left: 0; - border-radius: 0px 10px 10px 0px; - background-color: #010006; -} - -#window { - border-radius: 10px; - margin-left: 60px; - margin-right: 60px; -} - -#clock { - color: #009e58; - min-width: 125px; -} - -#pulseaudio { - color: #9b1603; -} - -#pulseaudio.microphone { - color: rgb(167, 159, 157); -} diff --git a/pc/docker/daemon.json b/pc/docker/daemon.json deleted file mode 100644 index 581de36..0000000 --- a/pc/docker/daemon.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "data-root": "/mnt/storage/docker" -} diff --git a/pc/mkinitcpio.conf b/pc/mkinitcpio.conf deleted file mode 100644 index 2fd80a4..0000000 --- a/pc/mkinitcpio.conf +++ /dev/null @@ -1,73 +0,0 @@ -# vim:set ft=sh -# MODULES -# The following modules are loaded before any boot hooks are -# run. Advanced users may wish to specify all system modules -# in this array. For instance: -# MODULES=(usbhid xhci_hcd) -MODULES=() - -# BINARIES -# This setting includes any additional binaries a given user may -# wish into the CPIO image. This is run last, so it may be used to -# override the actual binaries included by a given hook -# BINARIES are dependency parsed, so you may safely ignore libraries -BINARIES=() - -# FILES -# This setting is similar to BINARIES above, however, files are added -# as-is and are not parsed in any way. This is useful for config files. -FILES=() - -# HOOKS -# This is the most important setting in this file. The HOOKS control the -# modules and scripts added to the image, and what happens at boot time. -# Order is important, and it is recommended that you do not change the -# order in which HOOKS are added. Run 'mkinitcpio -H ' for -# help on a given hook. -# 'base' is _required_ unless you know precisely what you are doing. -# 'udev' is _required_ in order to automatically load modules -# 'filesystems' is _required_ unless you specify your fs modules in MODULES -# Examples: -## This setup specifies all modules in the MODULES setting above. -## No RAID, lvm2, or encrypted root is needed. -# HOOKS=(base) -# -## This setup will autodetect all modules for your system and should -## work as a sane default -# HOOKS=(base udev autodetect modconf block filesystems fsck) -# -## This setup will generate a 'full' image which supports most systems. -## No autodetection is done. -# HOOKS=(base udev modconf block filesystems fsck) -# -## This setup assembles a mdadm array with an encrypted root file system. -## Note: See 'mkinitcpio -H mdadm_udev' for more information on RAID devices. -# HOOKS=(base udev modconf keyboard keymap consolefont block mdadm_udev encrypt filesystems fsck) -# -## This setup loads an lvm2 volume group. -# HOOKS=(base udev modconf block lvm2 filesystems fsck) -# -## NOTE: If you have /usr on a separate partition, you MUST include the -# usr and fsck hooks. -HOOKS=(base udev autodetect modconf kms keyboard keymap consolefont block filesystems fsck plymouth) - -# COMPRESSION -# Use this to compress the initramfs image. By default, zstd compression -# is used. Use 'cat' to create an uncompressed image. -#COMPRESSION="zstd" -#COMPRESSION="gzip" -#COMPRESSION="bzip2" -#COMPRESSION="lzma" -#COMPRESSION="xz" -#COMPRESSION="lzop" -#COMPRESSION="lz4" - -# COMPRESSION_OPTIONS -# Additional options for the compressor -#COMPRESSION_OPTIONS=() - -# MODULES_DECOMPRESS -# Decompress kernel modules during initramfs creation. -# Enable to speedup boot process, disable to save RAM -# during early userspace. Switch (yes/no). -#MODULES_DECOMPRESS="yes" diff --git a/pc/mnt/mnt-janis.mount b/pc/mnt/mnt-janis.mount deleted file mode 100755 index 46fd799..0000000 --- a/pc/mnt/mnt-janis.mount +++ /dev/null @@ -1,13 +0,0 @@ -[Unit] -Description=Mount Share at boot - -[Mount] -What=//192.168.1.136/janis -Where=/mnt/janis -Options=_netdev,credentials=/etc/samba/credentials/janis,iocharset=utf8,rw,uid=janis,gid=janis -Type=cifs -TimeoutSec=30 -ForceUnmount=true - -[Install] -WantedBy=multi-user.target diff --git a/pc/mnt/mnt-janisShare.mount b/pc/mnt/mnt-janisShare.mount deleted file mode 100755 index 33dd2d4..0000000 --- a/pc/mnt/mnt-janisShare.mount +++ /dev/null @@ -1,13 +0,0 @@ -[Unit] -Description=Mount Share at boot - -[Mount] -What=//192.168.1.136/janis-share -Where=/mnt/janisShare -Options=_netdev,credentials=/etc/samba/credentials/janis,iocharset=utf8,rw,uid=janis,gid=janis -Type=cifs -TimeoutSec=30 -ForceUnmount=true - -[Install] -WantedBy=multi-user.target diff --git a/pc/mnt/mnt-shared.mount b/pc/mnt/mnt-shared.mount deleted file mode 100755 index dda0d05..0000000 --- a/pc/mnt/mnt-shared.mount +++ /dev/null @@ -1,13 +0,0 @@ -[Unit] -Description=Mount Share at boot - -[Mount] -What=//192.168.1.136/shared -Where=/mnt/shared -Options=_netdev,credentials=/etc/samba/credentials/janis,iocharset=utf8,rw,uid=janis,gid=janis -Type=cifs -TimeoutSec=30 -ForceUnmount=true - -[Install] -WantedBy=multi-user.target diff --git a/pc/pacman.conf b/pc/pacman.conf deleted file mode 100644 index 7d7c2fd..0000000 --- a/pc/pacman.conf +++ /dev/null @@ -1,100 +0,0 @@ -# -# /etc/pacman.conf -# -# See the pacman.conf(5) manpage for option and repository directives - -# -# GENERAL OPTIONS -# -[options] -# The following paths are commented out with their default values listed. -# If you wish to use different paths, uncomment and update the paths. -#RootDir = / -#DBPath = /var/lib/pacman/ -#CacheDir = /var/cache/pacman/pkg/ -#LogFile = /var/log/pacman.log -#GPGDir = /etc/pacman.d/gnupg/ -#HookDir = /etc/pacman.d/hooks/ -HoldPkg = pacman glibc -#XferCommand = /usr/bin/curl -L -C - -f -o %o %u -#XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u -#CleanMethod = KeepInstalled -Architecture = auto -ILoveCandy -# Pacman won't upgrade packages listed in IgnorePkg and members of IgnoreGroup -#IgnorePkg = -#IgnoreGroup = - -#NoUpgrade = -#NoExtract = - -# Misc options -#UseSyslog -Color -#NoProgressBar -CheckSpace -#VerbosePkgLists -ParallelDownloads = 5 - -# By default, pacman accepts packages signed by keys that its local keyring -# trusts (see pacman-key and its man page), as well as unsigned packages. -SigLevel = Required DatabaseOptional -LocalFileSigLevel = Optional -#RemoteFileSigLevel = Required - -# NOTE: You must run `pacman-key --init` before first using pacman; the local -# keyring can then be populated with the keys of all official Arch Linux -# packagers with `pacman-key --populate archlinux`. - -# -# REPOSITORIES -# - can be defined here or included from another file -# - pacman will search repositories in the order defined here -# - local/custom mirrors can be added here or in separate files -# - repositories listed first will take precedence when packages -# have identical names, regardless of version number -# - URLs will have $repo replaced by the name of the current repo -# - URLs will have $arch replaced by the name of the architecture -# -# Repository entries are of the format: -# [repo-name] -# Server = ServerName -# Include = IncludePath -# -# The header [repo-name] is crucial - it must be present and -# uncommented to enable the repo. -# - -# The testing repositories are disabled by default. To enable, uncomment the -# repo name header and Include lines. You can add preferred servers immediately -# after the header, and they will be used before the default mirrors. - -#[testing] -#Include = /etc/pacman.d/mirrorlist - -[core] -Include = /etc/pacman.d/mirrorlist - -[extra] -Include = /etc/pacman.d/mirrorlist - -#[extra-testing] -#Include = /etc/pacman.d/mirrorlist - -# If you want to run 32 bit applications on your x86_64 system, -# enable the multilib repositories as required here. - -#[multilib-testing] -#Include = /etc/pacman.d/mirrorlist - -[multilib] -Include = /etc/pacman.d/mirrorlist - -[arch4edu] -Server = https://de.arch4edu.mirror.kescher.at/$arch - -# An example of a custom package repository. See the pacman manpage for -# tips on creating your own repositories. -#[custom] -#SigLevel = Optional TrustAll -#Server = file:///home/custompkgs diff --git a/pc/vscode-extensions b/pc/vscode-extensions deleted file mode 100644 index e12c0f9..0000000 --- a/pc/vscode-extensions +++ /dev/null @@ -1,48 +0,0 @@ -aaron-bond.better-comments -abusaidm.html-snippets -bmewburn.vscode-intelephense-client -bungcip.better-toml -dbaeumer.vscode-eslint -dlasagno.rasi -donjayamanne.jquerysnippets -ecmel.vscode-html-css -equinusocio.vsc-community-material-theme -equinusocio.vsc-material-theme -equinusocio.vsc-material-theme-icons -eww-yuck.yuck -fivethree.vscode-hugo-snippets -formulahendry.auto-rename-tag -github.github-vscode-theme -gitlab.gitlab-workflow -golang.go -hollowtree.vue-snippets -ionic.ionic -james-yu.latex-workshop -lllllllqw.jsdoc -mads-hartmann.bash-ide-vscode -mathematic.vscode-latex -mathiasfrohlich.kotlin -mechatroner.rainbow-csv -ms-python.debugpy -ms-python.python -ms-vscode.cpptools -nadim-vscode.html-meta-tags-hero -nilssoderman.sitemap-generator -pwabuilder.pwa-studio -quicktype.quicktype -redhat.java -redhat.vscode-xml -rust-lang.rust-analyzer -sbsnippets.pytorch-snippets -spences10.robots-txt -streetsidesoftware.code-spell-checker -streetsidesoftware.code-spell-checker-german -svelte.svelte-vscode -tecosaur.latex-utilities -valentjn.vscode-ltex -vitest.explorer -vscjava.vscode-java-debug -vscjava.vscode-java-test -vue.volar -wayou.vscode-todo-highlight -xdebug.php-debug diff --git a/prompts.md b/prompts.md new file mode 100644 index 0000000..45724db --- /dev/null +++ b/prompts.md @@ -0,0 +1,60 @@ +# Bar +## Attempt 1 +Use Astal (https://aylur.github.io/astal) to write me a new status bar for hyprland. You may use JSX (be aware, it's not react, but gjs based and has therefore some limitations), but I prefer using the other syntax that is similar to what it was for AGS (the old version of astal), which more closely resembles GTK syntax. The bar should include the following, from left to right: +Left aligned +- Date & Time (with seconds, preferably) +- System stats (i.e. CPU, Memory util, Screen Brightness & Battery status, if available) +- Workspace number +Centered +- The window name +Right aligned (still left to right) +- System tray +- QuickAction menu in GNOME QuickAction menu style, but only the closed version showing icons for volume, mic, WiFi / Ethernet and a Power icon. For the icons (all throughout the bar) use the fluentui-icons (so the Windows 11 icons). If you can't provide them here, tell me what icon should go there and I will put it there manually + +The actual QuickAction Menu (which you could also write in a separate file) will provide options where I can pick WiFi, Bluetooth (also turn it on and off), change volume of mic and output, pick the mic and output, have media controls and have a power menu). + +For the QuickAction menu, provide a function that is exposed from the file to open and close it, as for all the features (like enabling BT, WiFi, etc). + + +### Followups +To the WiFi and Bluetooth menus, add the option to pick a WiFi Network / Bluetooth device. Please also fully extract the QuickActions menu to a separate file. + + +Now, can you also provide scss for the bar, such that: +- I have an easy way to customize colours (which I will be doing using one of my scripts, so having a separate colour config file will be a great option) +- it is very rounded (the corners) +- it has a very sleek, but modern design, with only a single accent colour +- Hovering over something clickable uses a hover colour + + +## Attempt 2 +Using AstalNetwork, can you write a UI (that can be integrated into a popover) and a corresponding backend that allows me to: +- Turn on/off networking and WiFi +- Select a WiFi Network +- Some way of adding a new connection (can be a special UI or simply opens up another tool like nm-applet's network config) +- WiFi-Auto-Connect +- Exposes a function (or multiple) through which I can get (as a bindable porperty): + - Current up/down speed + - Connection type + - WiFi SSID (if applicable) + - WiFi Signal Strength (if applicable) + - Local IP + +I would prefer if you could split up the logic from the UI, i.e. have the logic in a separate TS file and have the UI as its own TSX file and simply import the logic + + + +# GTK THEME +Provide GTK CSS for Gtk 4, as short as possible, but including everything that is necessary to make it look good, where you have the following options for colours to pick. They will be replaced by a script (no need to provide that) according to some variables +- #000 (normal background) +- #111 (accent background, to differentiate, will be slightly brighter / darker +- #222 (secondary accent background, slightly brighter / darker than #111) +- #333 (inactive background, but could also be used to be slightly brighter / dark than #222) +- #555 (shadow colour) +- #555A (shadow colour, but as RGBA value) +- #F00 (accent colour, primary accent colour) +- #0F0 (secondary accent colour, use if it makes sense to differentiate from the primary accent) +- #00F (tertiary accent colour, use sparingly) +- #AAA (inactive colour, darker / brighter than primary foreground colour) +- #FFF (primary foreground colour) +Propose additional colours in a similar format (three-digit hex) and explain what they are for if necessary. Make the theme rounded and include as many of the widgets as needed or possible diff --git a/renderable/astal/util/colours.scss b/renderable/astal/util/colours.scss new file mode 100644 index 0000000..6e71306 --- /dev/null +++ b/renderable/astal/util/colours.scss @@ -0,0 +1,5 @@ +$fg-color: {{ colour-foreground-hex }}; +$bg-color: {{ colour-background-hex }}; +$accent-color: {{ colour-accent-hex }}; +$accent-color-2: {{ colour-accent-2-hex }}; +$shadow-color: {{ colour-shadow-rgba-03 }}; diff --git a/renderable/hypr/hyprland/colors.conf b/renderable/hypr/hyprland/colors.conf new file mode 100644 index 0000000..65d8df4 --- /dev/null +++ b/renderable/hypr/hyprland/colors.conf @@ -0,0 +1,18 @@ +# ──────────────────────────────────────────────────────────────────── +# ╭────────────────────────────────────────────────╮ +# │ COLOURS │ +# ╰────────────────────────────────────────────────╯ +# ──────────────────────────────────────────────────────────────────── + +exec = swaybg -m fill -i {{{ wallpaper-path }}} + +general { + col.active_border = {{ colour-accent-hyprland }} {{ colour-accent-2-hyprland }} {{ colour-accent-3-hyprland }} 45deg + col.inactive_border = {{ colour-inactive-background-hyprland }} +} + +decoration { + shadow { + color = {{ colour-shadow-hyprland }} + } +} diff --git a/laptop/configs/hypr/hyprlock.conf b/renderable/hypr/hyprlock.conf similarity index 87% rename from laptop/configs/hypr/hyprlock.conf rename to renderable/hypr/hyprlock.conf index eb9c47f..1f88b7f 100644 --- a/laptop/configs/hypr/hyprlock.conf +++ b/renderable/hypr/hyprlock.conf @@ -13,15 +13,19 @@ general { grace = 15 } -# BACKGROUND +# ┌ ┐ +# │ BACKGROUND │ +# └ ┘ background { monitor = - path = /home/janis/Pictures/arch-bg.png # Or screenshot + path = {{{ lockpaper-path }}} # Or screenshot blur_passes = 1 } -# PASSWORD INPUT +# ┌ ┐ +# │ PASSWORD INPUT │ +# └ ┘ input-field { monitor = size = 300, 40 @@ -29,7 +33,7 @@ input-field { dots_size = 0.33 # Scale of input-field height, 0.2 - 0.8 dots_spacing = 0.15 # Scale of dots' absolute size, 0.0 - 1.0 dots_center = false - outer_color = rgb(204, 92, 0) + outer_color = {{ colour-accent-rgb }} inner_color = rgb(200, 200, 200) font_color = rgb(10, 10, 10) fade_on_empty = true @@ -44,9 +48,9 @@ input-field { label { monitor = text = $TIME - color = rgba(200, 200, 200, 1.0) + color = {{ colour-primary-rgb }} font_size = 100 - font_family = Source Code Pro + font_family = {{ font-primary }} position = 0, 80 halign = center @@ -58,7 +62,7 @@ label { text = $LAYOUT color = rgba(200, 200, 200, 1.0) font_size = 12 - font_family = Source Code Pro + font_family = {{ font-primary }} position = 0, 0 halign = right @@ -70,7 +74,7 @@ label { text = $USER color = rgba(200, 200, 200, 1.0) font_size = 12 - font_family = Source Code Pro + font_family = {{ font-primary }} position = 0, 0 halign = left @@ -83,7 +87,7 @@ label { text = Failed attempts: $ATTEMPTS color = rgba(200, 0, 0, 1.0) font_size = 12 - font_family = Source Code Pro + font_family = {{ font-accent }} position = 0, 20 halign = center diff --git a/renderable/rofi/config_desktop.rasi b/renderable/rofi/config_desktop.rasi new file mode 100644 index 0000000..757c634 --- /dev/null +++ b/renderable/rofi/config_desktop.rasi @@ -0,0 +1,12 @@ +/** Basic config file **/ + +configuration { + show-icons: true; + icon-theme: "{{ icon-theme }}"; + display-drun: ""; + display-run: "🏃🏽‍♂️ "; + display-window: "🗔 "; + display-combi: "🔎 "; +} + +@theme "style.rasi" diff --git a/laptop/configs/rofi/config.rasi b/renderable/rofi/config_laptop.rasi old mode 100755 new mode 100644 similarity index 76% rename from laptop/configs/rofi/config.rasi rename to renderable/rofi/config_laptop.rasi index ab94e55..d341476 --- a/laptop/configs/rofi/config.rasi +++ b/renderable/rofi/config_laptop.rasi @@ -2,7 +2,7 @@ configuration { show-icons: true; - icon-theme: "Candy"; + icon-theme: "{{ icon-theme }}"; display-drun: ""; display-run: "🏃🏽‍♂️ "; display-window: "🗔 "; @@ -10,4 +10,4 @@ configuration { dpi: 160; } -@theme "themes/mcLarenTheme.rasi" +@theme "style.rasi" diff --git a/general/configs/rofi/themes/defaultTheme.rasi b/renderable/rofi/style.rasi old mode 100755 new mode 100644 similarity index 58% rename from general/configs/rofi/themes/defaultTheme.rasi rename to renderable/rofi/style.rasi index 7d4774c..b6e1558 --- a/general/configs/rofi/themes/defaultTheme.rasi +++ b/renderable/rofi/style.rasi @@ -1,9 +1,11 @@ * { - background: rgba(0, 30, 50, 1); - foreground: #ffffff; - border-color: @background; - bg-selected: #282c34; - grey: #565c64; + background: {{ colour-background-hex }}; + background-selected: {{ colour-background-alternative-hex }}; + foreground: {{ colour-foreground-hex }}; + accent: {{ colour-accent-hex }}; + accent-two: {{ colour-accent-2-hex }}; + // border-color: {{ colour-accent-3-hex }}; + inactive: {{ colour-inactive-hex }}; spacing: 2; width: 30em; margin: 0; @@ -12,11 +14,12 @@ #window { background-color: @background; - border: 0; + border-color: @accent; + border: 1px; + border-radius: 10px; padding: 0; location: west; anchor: west; - height: 70%; margin: 0; } @@ -45,8 +48,10 @@ } element selected { - background-color: @bg-selected; - text-color: @foreground; + background-color: @background-selected; + text-color: @accent; + border: 1px; + border-radius: 5px; } element-text { @@ -57,15 +62,15 @@ element-text { element-icon { background-color: inherit; margin: 0 4px 0 0; - size: 25px; + size: 35px; } #entry { background-color: @background; - text-color: @foreground; + text-color: @accent; placeholder: "Search"; - placeholder-color: @grey; - font: "Sora Regular 20"; + placeholder-color: @inactive; + font: "{{ font-primary }} Regular 20"; } #prompt { @@ -73,6 +78,6 @@ element-icon { padding: 0 4px; margin: 0 5px 0 0; text-color: @foreground; - font: "Sora Regular 20"; + font: "{{ font-accent }} Regular 20"; } diff --git a/renderable/wlogout/layout b/renderable/wlogout/layout new file mode 100644 index 0000000..86b2184 --- /dev/null +++ b/renderable/wlogout/layout @@ -0,0 +1,30 @@ +{ + "label" : "lock", + "action" : "hyprlock", + "text" : "Lock", + "keybind" : "l" +} +{ + "label" : "reboot", + "action" : "systemctl reboot", + "text" : "Reboot", + "keybind" : "r" +} +{ + "label" : "shutdown", + "action" : "systemctl poweroff", + "text" : "Shutdown", + "keybind" : "s" +} +{ + "label" : "logout", + "action" : "hyprctl dispatch exit 0", + "text" : "Logout", + "keybind" : "e" +} +{ + "label" : "suspend", + "action" : "systemctl suspend", + "text" : "Suspend", + "keybind" : "u" +} diff --git a/general/configs/wlogout/default-style.css b/renderable/wlogout/style.css similarity index 61% rename from general/configs/wlogout/default-style.css rename to renderable/wlogout/style.css index 56a3578..4850ea9 100644 --- a/general/configs/wlogout/default-style.css +++ b/renderable/wlogout/style.css @@ -1,8 +1,13 @@ +/* + * ╭───────────────────────────────────────────────╮ + * │ WLOGOUT │ + * ╰───────────────────────────────────────────────╯ +*/ window { font-family: monospace; font-size: 14pt; color: #ffffff; /* text */ - background-color: rgba(1, 9, 36, 0.5); + background-color: {{ colour-background-rgba }}; } button { @@ -10,18 +15,19 @@ button { background-position: center; background-size: 25%; border: none; - background-color: rgba(30, 30, 46, 0); + background-color: transparent; margin: 5px; transition: box-shadow 0.2s ease-in-out, background-color 0.2s ease-in-out; + border-radius: 40px; } button:hover { - background-color: rgba(0, 94, 31, 0.2); + background-color: {{ colour-accent-2-rgba-05 }}; } button:focus { - background-color: rgba(0, 94, 31, 1); - color: #1e1e2e; + background-color: {{ colour-accent-2-rgb }}; + color: {{ colour-foreground-rgb }}; } #lock { diff --git a/renderable/yazi/theme.toml b/renderable/yazi/theme.toml new file mode 100644 index 0000000..0c67e15 --- /dev/null +++ b/renderable/yazi/theme.toml @@ -0,0 +1,2 @@ +[flavor] +use = "{{ yazi-theme }}" diff --git a/scripts/change-wallpaper b/scripts/change-wallpaper new file mode 100755 index 0000000..19f913f --- /dev/null +++ b/scripts/change-wallpaper @@ -0,0 +1,5 @@ +#!/bin/sh +SCRIPT_DIR=$(dirname "$0") + +cd "$SCRIPT_DIR/.." +./setup diff --git a/scripts/cpu-utilization b/scripts/cpu-utilization new file mode 100755 index 0000000..6fb3a8f --- /dev/null +++ b/scripts/cpu-utilization @@ -0,0 +1,20 @@ +#!/bin/bash + +# Get first snapshot +read cpu user nice system idle iowait irq softirq steal guest < /proc/stat +total1=$((user+nice+system+idle+iowait+irq+softirq+steal)) +idle1=$idle + +sleep 0.5 + +# Get second snapshot +read cpu user nice system idle iowait irq softirq steal guest < /proc/stat +total2=$((user+nice+system+idle+iowait+irq+softirq+steal)) +idle2=$idle + +# Calculate usage +total_diff=$((total2 - total1)) +idle_diff=$((idle2 - idle1)) +cpu_usage=$((100 * (total_diff - idle_diff) / total_diff)) + +echo "$cpu_usage" diff --git a/general/scripts/ethz-vpn b/scripts/ethz-vpn similarity index 100% rename from general/scripts/ethz-vpn rename to scripts/ethz-vpn diff --git a/scripts/get-profile-picture b/scripts/get-profile-picture new file mode 100755 index 0000000..4240b2c --- /dev/null +++ b/scripts/get-profile-picture @@ -0,0 +1,20 @@ +#!/bin/bash + +USER_NAME=$(whoami) + +# Common paths to check +paths=( + "/var/lib/AccountsService/icons/$USER_NAME" + "$HOME/.face" + "$HOME/.face.icon" +) + +for path in "${paths[@]}"; do + if [ -f "$path" ]; then + echo "$path" + exit 0 + fi +done + +# Nothing found — exit silently or optionally with an error code +exit 0 diff --git a/scripts/setup-eslint b/scripts/setup-eslint new file mode 100755 index 0000000..3429a70 --- /dev/null +++ b/scripts/setup-eslint @@ -0,0 +1,9 @@ +#!/bin/sh + +SCRIPT_DIR=$(dirname "$0") + +cp "$SCRIPT_DIR/../config/lint/eslint.config.mjs" . + +# TODO: Improve eslint config to include JSX and Vue configs too, read on website +npm i --save-dev @eslint/js typescript-eslint @stylistic/eslint-plugin + diff --git a/server/background.jpg b/server/background.jpg deleted file mode 100644 index ddd3ef1..0000000 Binary files a/server/background.jpg and /dev/null differ diff --git a/server/index.html b/server/index.html deleted file mode 100644 index acab0e2..0000000 --- a/server/index.html +++ /dev/null @@ -1,95 +0,0 @@ - - - - - - πCloud - - - -
-
-
-

πCloud

-

Willkommen!

-
- -
-
- - \ No newline at end of file diff --git a/setup b/setup new file mode 100755 index 0000000..c737d2e --- /dev/null +++ b/setup @@ -0,0 +1,121 @@ +#!/bin/sh + +# ─────────────────────────────────────────────────────────────────── +# ╭────────────────────────────────────────────────╮ +# │ Setup Script for janishutz Hyprland │ +# ╰────────────────────────────────────────────────╯ +# ─────────────────────────────────────────────────────────────────── + +echo " + _ _ _ _ _ _ + _ _ ( ) ( )_ ( ) ( ) (_ ) ( ) + (_) _ _ ___ (_) ___| |__ _ _| _)____ | |_| |_ _ _ _ _ __ | | _ _ ___ _| | + | |/ _ ) _ \ | __) _ \ ) ( ) | (_ ) | _ | ) ( ) _ \( __)| | / _ ) _ \/ _ | + | | (_| | ( ) | |__ \ | | | (_) | |_ / /_ | | | | (_) | (_) ) | | |( (_| | ( ) | (_| | + _ | |\__ _)_) (_)_)____/_) (_)\___/ \__)____) (_) (_)\__ | __/(_) (___)\__ _)_) (_)\__ _) +( )_| | ( )_| | | + \___/ \___/(_) + + => Setup script. This script is used to: + -> Set up configs initially + -> Regenerate the themes + -> Install new versions + +" + +trap 'echo -e "\nCaught Ctrl+C, exiting..."; exit 1' SIGINT + +# Read platform to install on (only if no platform file present in ~/.config/) +platform="" +if [[ -f ~/.config/platform ]]; then + echo "Config type already selected, skipping" + platform=$(cat ~/.config/platform) +else + read -p "Choose the configs to install, Laptop or Desktop (l/D): " platform + echo "$platform" > ~/.config/platform +fi +platform=$(echo "$platform" | tr '[:upper:]' '[:lower:]') + +# Get user preference for regenerating the styling +regen="" +read -p "Would you like to regenerate styling? (y/N) " regen +if [ $regen == "y" ]; then + cd build + node build.js + if [ $? -ne 0 ]; then + echo -e "\nExit signal received, exiting...." + exit 130 + fi + cd .. +fi + +echo "=> Moving configs to correct destinations" +killall swaybg +cp -r ./config/fish ~/.config/ +cp -r ./config/hypr ~/.config/ +rm -rf ~/.config/rofi/ +cp -r ./config/rofi ~/.config/ + +# Depending on platform, remove one or the other config and rename remaining one +if [[ "$platform" == "d" ]]; then + echo "Running on desktop" + mv ~/.config/hypr/hyprland_desktop.conf ~/.config/hypr/hyprland.conf + rm ~/.config/hypr/hyprland_* + mv ~/.config/rofi/config_desktop.rasi ~/.config/rofi/config.rasi + rm ~/.config/rofi/config_* +else + echo "Running on laptop" + mv ~/.config/hypr/hyprland_laptop.conf ~/.config/hypr/hyprland.conf + rm ~/.config/hypr/hyprland_* + mv ~/.config/rofi/config_laptop.rasi ~/.config/rofi/config.rasi + rm ~/.config/rofi/config_* +fi + +cp -r ./config/kitty ~/.config/ +cp -r ./config/fastfetch ~/.config/ +cp -r ./config/lazygit ~/.config/ +cp -r ./config/mpv ~/.config/ +cp -r ./config/Thunar ~/.config/ +cp -r ./config/wlogout/ ~/.config/ +cp -r ./config/yazi ~/.config/ +cp -r ./config/zathura ~/.config/ + + +echo " + => Installing yazi plugins +" +ya pack -i + +echo " + => Installing GTK Theme +" +sudo rm -rf /usr/share/themes/Adaptive-Theme/ +sudo mkdir /usr/share/themes/Adaptive-Theme/ +sudo cp -r ./gtk-theme/dist/* /usr/share/themes/Adaptive-Theme/ + +echo " + => Installing System Configs +" +sudo cp ./system/environment /etc/environment +sudo cp -r ./system/greetd/* /etc/greetd/ +hyprctl reload + +# echo " +# => Restarting bars, etc +# " +# killall gjs +# sleep 1 +# ags run -d ./config/astal --gtk4 & disown 2>&1 > /dev/null +# ags run -d ./config/ags/notifications/ & disown 2>&1 > /dev/null + +echo " + + ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ + ██░▄▄▀██░▄▄▄░██░▀██░██░▄▄▄ + ██░██░██░███░██░█░█░██░▄▄▄ + ██░▀▀░██░▀▀▀░██░██▄░██░▀▀▀ + ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀ + => All configs installed. Reboot + for them to apply properly + +" diff --git a/setup.sh b/setup.sh deleted file mode 100755 index 5a92344..0000000 --- a/setup.sh +++ /dev/null @@ -1,14 +0,0 @@ -#! /bin/bash - -# Copy VSCodium settings - -cp -r ./general/configs/VSCodium/* ~/.config/VSCodium/ - -# copy other config files -cp -r ./pc/configs/hypr ~/.config/ -cp -r ./pc/configs/waybar ~/.config/ -cp -r ./general/configs/* ~/.config/ -cp ./pc/configs/rofi/config.rasi ~/.config/rofi/ - -# Copy hyprland general config -cp -r ./general/hyprland ~/.config/hypr/ diff --git a/setupLaptop.sh b/setupLaptop.sh deleted file mode 100755 index 55a9270..0000000 --- a/setupLaptop.sh +++ /dev/null @@ -1,16 +0,0 @@ -#! /bin/bash - -# Copy VSCodium settings - -cp -r ./general/configs/VSCodium/* ~/.config/VSCodium/ - -# copy other config files -cp -r ./laptop/configs/hypr ~/.config/ -cp -r ./laptop/configs/waybar ~/.config/ -cp -r ./general/configs/* ~/.config/ -cp ./laptop/configs/rofi/config.rasi ~/.config/rofi/ - -# Copy hyprland general config -cp -r ./general/hyprland ~/.config/hypr/ - -echo '=> Installed all laptop config files successfully' diff --git a/setupVSCodium.sh b/setupVSCodium.sh deleted file mode 100644 index 1ca8e31..0000000 --- a/setupVSCodium.sh +++ /dev/null @@ -1,6 +0,0 @@ -file="./laptopConfig/vscode-extensions" -while read line; do - vscodium --install-extension "${line}" -done < "${file}" - -echo "==> Done!" \ No newline at end of file diff --git a/pc/environment b/system/environment similarity index 65% rename from pc/environment rename to system/environment index 23ce03f..ec4eb38 100644 --- a/pc/environment +++ b/system/environment @@ -4,13 +4,13 @@ # Syntax: simple "KEY=VAL" pairs on separate lines # -QT_QPA_PLATFORMTHEME=qt5ct -QT_STYLE_OVERRIDE=kvantum +QT_QPA_PLATFORMTHEME=gtk3 +QT_QPA_PLATFORM=wayland +GTK_THEME=Adaptive-Theme +# GTK_THEME=Material-Black-Blueberry +# QT_STYLE_OVERRIDE=kvantum GCM_CREDENTIAL_STORE=secretservice VKD3D_CONFIG=dxr11,dxr RADV_PERFTEST_RT=1 ANDROID_HOME=/home/janis/Android/Sdk -QT_QPA_PLATFORM=wayland -JELLYFIN_WEB_DIR=/usr/share/jellyfin-web -GTK_THEME=Material-Black-Blueberry EDITOR=nvim diff --git a/system/greetd/config.toml b/system/greetd/config.toml new file mode 100644 index 0000000..fc88c7d --- /dev/null +++ b/system/greetd/config.toml @@ -0,0 +1,13 @@ +[terminal] +# The VT to run the greeter on. Can be "next", "current" or a number +# designating the VT. +vt = 1 + +# The default session, also known as the greeter. +[default_session] +command = "tuigreet --cmd Hyprland --time --remember --remember-user-session --asterisks --user-menu --sessions /usr/share/wayland-sessions" + +# The user to run the command as. The privileges this user must have depends +# on the greeter. A graphical greeter may for example require the user to be +# in the `video` group. +user = "greeter" diff --git a/pc/grub b/system/grub similarity index 100% rename from pc/grub rename to system/grub diff --git a/general/mkinitcpio.conf b/system/mkinitcpio.conf similarity index 100% rename from general/mkinitcpio.conf rename to system/mkinitcpio.conf diff --git a/general/pacman.conf b/system/pacman.conf similarity index 100% rename from general/pacman.conf rename to system/pacman.conf