commit d040d57f03eaad4390fcc022fcb4b14bb4672a61 Author: WeeXnes Date: Tue Dec 10 23:54:56 2024 +0100 initial commit diff --git a/Configs/.config/Code - OSS/User/settings.json b/Configs/.config/Code - OSS/User/settings.json new file mode 100644 index 0000000..e9a13b9 --- /dev/null +++ b/Configs/.config/Code - OSS/User/settings.json @@ -0,0 +1,18 @@ +{ + "workbench.colorTheme": "Catppuccin Mocha", + "window.menuBarVisibility": "toggle", + "editor.fontSize": 12, + "editor.scrollbar.vertical": "hidden", + "editor.scrollbar.verticalScrollbarSize": 0, + "security.workspace.trust.untrustedFiles": "newWindow", + "security.workspace.trust.startupPrompt": "never", + "security.workspace.trust.enabled": false, + "editor.minimap.side": "left", + "editor.fontFamily": "'Maple Mono', 'monospace', monospace", + "extensions.autoUpdate": false, + "workbench.statusBar.visible": false, + "terminal.external.linuxExec": "kitty", + "terminal.explorerKind": "both", + "terminal.sourceControlRepositoriesKind": "both", + "telemetry.telemetryLevel": "off" +} diff --git a/Configs/.config/Code/User/settings.json b/Configs/.config/Code/User/settings.json new file mode 100644 index 0000000..e9a13b9 --- /dev/null +++ b/Configs/.config/Code/User/settings.json @@ -0,0 +1,18 @@ +{ + "workbench.colorTheme": "Catppuccin Mocha", + "window.menuBarVisibility": "toggle", + "editor.fontSize": 12, + "editor.scrollbar.vertical": "hidden", + "editor.scrollbar.verticalScrollbarSize": 0, + "security.workspace.trust.untrustedFiles": "newWindow", + "security.workspace.trust.startupPrompt": "never", + "security.workspace.trust.enabled": false, + "editor.minimap.side": "left", + "editor.fontFamily": "'Maple Mono', 'monospace', monospace", + "extensions.autoUpdate": false, + "workbench.statusBar.visible": false, + "terminal.external.linuxExec": "kitty", + "terminal.explorerKind": "both", + "terminal.sourceControlRepositoriesKind": "both", + "telemetry.telemetryLevel": "off" +} diff --git a/Configs/.config/Kvantum/kvantum.kvconfig b/Configs/.config/Kvantum/kvantum.kvconfig new file mode 100644 index 0000000..28f2f89 --- /dev/null +++ b/Configs/.config/Kvantum/kvantum.kvconfig @@ -0,0 +1,2 @@ +[General] +theme=wallbash diff --git a/Configs/.config/Kvantum/wallbash/wallbash.kvconfig b/Configs/.config/Kvantum/wallbash/wallbash.kvconfig new file mode 100644 index 0000000..7d66830 --- /dev/null +++ b/Configs/.config/Kvantum/wallbash/wallbash.kvconfig @@ -0,0 +1,466 @@ +[%General] +author=elkrien based on Arc Dark style +comment=Catppuccin-Mocha-Rosewater +spread_menuitems=true +left_tabs=true +mirror_doc_tabs=true +scroll_width=8 +attach_active_tab=true +composite=true +menu_shadow_depth=7 +tooltip_shadow_depth=0 +splitter_width=7 +check_size=16 +slider_width=4 +slider_handle_width=18 +slider_handle_length=18 +textless_progressbar=false +menubar_mouse_tracking=true +slim_toolbars=false +toolbutton_style=1 +x11drag=menubar_and_primary_toolbar +double_click=false +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 +group_toolbar_buttons=false +vertical_spin_indicators=false +fill_rubberband=false +spread_progressbar=true +merge_menubar_with_toolbar=true +small_icon_size=16 +large_icon_size=32 +button_icon_size=16 +scroll_arrows=false +iconless_pushbutton=true +toolbar_icon_size=16 +combo_as_lineedit=true +button_contents_shift=false +groupbox_top_label=true +inline_spin_indicators=true +joined_inactive_tabs=false +layout_spacing=2 +submenu_overlap=0 +tooltip_delay=-1 +animate_states=true +transient_scrollbar=true +alt_mnemonic=true +combo_menu=true +layout_margin=4 +no_window_pattern=false +respect_DE=true +scroll_min_extent=36 +scrollable_menu=false +scrollbar_in_view=false +spin_button_width=16 +submenu_delay=250 +tree_branch_line=true +progressbar_thickness=8 +click_behavior=0 +contrast=1.00 +dialog_button_layout=0 +drag_from_buttons=false +hide_combo_checkboxes=false +intensity=1.00 +no_inactiveness=false +reduce_menu_opacity=0 +reduce_window_opacity=10 +saturation=1.00 +shadowless_popup=true +transient_groove=false +menu_blur_radius=6 +tooltip_blur_radius=6 + +[GeneralColors] +window.color=#1E1E2E +base.color=#181825 +alt.base.color=#181825 +button.color=#313244 +light.color=#45475A +mid.light.color=#45475A +dark.color=#181825 +mid.color=#181825 +highlight.color=#F5E0DC +inactive.highlight.color=#F5E0DC +text.color=#CDD6F4 +window.text.color=#CDD6F4 +button.text.color=#CDD6F4 +disabled.text.color=#585B70 +tooltip.text.color=#CDD6F4 +highlight.text.color=#181825 +link.color=#F5E0DC +link.visited.color=#89B4FA + +[ItemView] +inherits=PanelButtonCommand +frame.element=itemview +interior.element=itemview +frame=true +interior=true +text.iconspacing=3 +text.toggle.color=#181825 + +[RadioButton] +inherits=PanelButtonCommand +frame=false +interior.element=radio + +[CheckBox] +inherits=PanelButtonCommand +frame=false +interior.element=checkbox + +[TreeExpander] +indicator.element=tree +indicator.size=8 + +[ToolTip] +frame.top=4 +frame.right=4 +frame.bottom=4 +frame.left=4 +frame=true + +[PanelButtonCommand] +inherits=PanelButtonCommand +interior.element=button +frame.element=button +text.normal.color=#CDD6F4 +text.focus.color=#CDD6F4 +text.press.color=#181825 +text.toggle.color=#181825 + +[PanelButtonTool] +inherits=PanelButtonCommand + +[DockTitle] +inherits=PanelButtonCommand +interior=false +frame=false +text.margin.top=5 +text.margin.bottom=5 +text.margin.left=5 +text.margin.right=5 +indicator.size=0 + +[Dock] +interior.element=toolbar +frame.element=toolbar +frame=true +interior=true + +[GroupBox] +inherits=PanelButtonCommand +interior.element=tabframe +interior=true +frame=false + +[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.element=common +frame.top=1 +frame.bottom=1 +frame.left=1 +frame.right=1 + +[Slider] +inherits=PanelButtonCommand +interior=true +frame.element=slider +interior.element=slider +frame.top=3 +frame.bottom=3 +frame.left=3 +frame.right=3 +focusFrame=true + +[SliderCursor] +inherits=PanelButtonCommand +interior=true +interior.element=slidercursor +frame=false + +[LineEdit] +inherits=PanelButtonCommand +frame.element=lineedit +interior.element=lineedit + +[IndicatorSpinBox] +inherits=LineEdit +frame.element=lineedit +interior.element=lineedit +frame.top=0 +frame.bottom=2 +frame.left=2 +frame.right=2 +indicator.size=8 + +[DropDownButton] +inherits=PanelButtonCommand +frame.top=2 +frame.bottom=2 +frame.left=0 +frame.right=1 +indicator.size=8 + +[ToolboxTab] +inherits=PanelButtonCommand +frame.element=tabframe +frame.top=1 +frame.bottom=1 +frame.left=1 +frame.right=1 + +[Tab] +inherits=PanelButtonCommand +interior.element=tab +frame.element=tab +frame.top=2 +frame.bottom=3 +frame.left=3 +frame.right=3 +indicator.size=10 +text.normal.color=#585B70 +text.focus.color=#CDD6F4 +text.press.color=#CDD6F4 +text.toggle.color=#CDD6F4 +focusFrame=true + +[TabBarFrame] +inherits=GenericFrame +frame=true +frame.element=tabBarFrame +interior=false +frame.top=4 +frame.bottom=4 +frame.left=4 +frame.right=4 + +[TabFrame] +inherits=PanelButtonCommand +frame.element=tabframe +interior.element=tabframe + +[Dialog] +inherits=TabBarFrame +frame.element=tabframe +interior=false +frame=false +frame.top=1 +frame.bottom=1 +frame.left=1 +frame.right=1 + +[HeaderSection] +inherits=PanelButtonCommand +interior.element=header +frame.element=header +frame.top=0 +frame.bottom=1 +frame.left=1 +frame.right=1 +frame.expansion=0 +text.normal.color=#CDD6F4 +text.focus.color=#F5E0DC +text.press.color=#CDD6F4 +text.toggle.color=#CDD6F4 +indicator.element=harrow + +[SizeGrip] +inherits=PanelButtonCommand +frame=false +interior=false +indicator.element=resize-grip +indicator.size=0 + +[Toolbar] +inherits=PanelButtonCommand +interior.element=menubar +frame.element=menubar +frame=true +frame.bottom=4 +frame.left=4 +frame.right=4 +text.normal.color=#CDD6F4 +text.focus.color=#CDD6F4 +text.press.color=#F5E0DC +text.toggle.color=#F5E0DC +text.bold=false + +[MenuBar] +inherits=PanelButtonCommand +frame.element=menubar +interior.element=menubar +frame.bottom=0 +text.normal.color=#CDD6F4 +frame.expansion=0 +text.bold=false + +[ToolbarButton] +frame.element=tbutton +interior.element=tbutton +indicator.element=arrow +text.normal.color=#CDD6F4 +text.focus.color=#CDD6F4 +text.press.color=#181825 +text.toggle.color=#181825 +text.bold=false + +[Scrollbar] +inherits=PanelButtonCommand +indicator.size=0 +interior=false +frame=false + +[ScrollbarGroove] +inherits=PanelButtonCommand +interior=false +frame=false + +[ScrollbarSlider] +inherits=PanelButtonCommand +interior=false +frame.element=scrollbarslider +frame.top=4 +frame.bottom=4 +frame.left=4 +frame.right=4 + +[ProgressbarContents] +inherits=PanelButtonCommand +frame=true +frame.element=progress-pattern +interior.element=progress-pattern +frame.top=2 +frame.bottom=2 +frame.left=2 +frame.right=2 + +[Progressbar] +inherits=PanelButtonCommand +frame.element=progress +interior.element=progress +frame.top=2 +frame.bottom=2 +frame.left=2 +frame.right=2 +text.margin=0 +text.normal.color=#CDD6F4 +text.focus.color=#CDD6F4 +text.press.color=#181825 +text.toggle.color=#181825 +text.bold=false +frame.expansion=18 + +[RadioButton] +inherits=PanelButtonCommand + +[Menu] +frame.element=menu +interior.element=menu +inherits=PanelButtonCommand +text.press.color=#181825 +text.toggle.color=#181825 +text.bold=false +frame.top=3 +frame.bottom=3 +frame.left=3 +frame.right=3 + +[MenuItem] +inherits=PanelButtonCommand +interior.element=menuitem +indicator.size=8 +text.focus.color=#CDD6F4 +text.press.color=#CDD6F4 + +[MenuBarItem] +inherits=PanelButtonCommand +interior.element=menubaritem +frame=false +text.margin.top=3 +text.margin.bottom=3 +text.margin.left=5 +text.margin.right=5 + +[StatusBar] +inherits=Toolbar +frame.element=toolbar +font.bold=true +text.normal.color=#CDD6F4 +frame=true +frame.top=0 +frame.bottom=0 + +[TitleBar] +inherits=PanelButtonCommand +frame=false +interior=false +text.margin.top=2 +text.margin.bottom=2 +text.margin.left=3 +text.margin.right=3 + +[ComboBox] +inherits=PanelButtonCommand +indicator.size=8 +frame.top=3 +frame.bottom=3 +frame.left=3 +frame.right=3 +text.margin.top=1 +text.margin.bottom=1 +text.margin.left=3 +text.margin.right=3 +text.toggle.color=#CDD6F4 + +[ToolboxTab] +inherits=PanelButtonCommand +text.normal.color=#CDD6F4 +text.press.color=#CDD6F4 +text.focus.color=#CDD6F4 + +[Hacks] +transparent_dolphin_view=true +blur_konsole=true +transparent_ktitle_label=true +transparent_menutitle=true +respect_darkness=true +kcapacitybar_as_progressbar=true +force_size_grip=false +iconless_pushbutton=true +iconless_menu=true +disabled_icon_opacity=80 +lxqtmainmenu_iconsize=0 +normal_default_pushbutton=true +single_top_toolbar=false +tint_on_mouseover=0 +transparent_pcmanfm_sidepane=true +transparent_pcmanfm_view=true +blur_translucent=true +centered_forms=false +kinetic_scrolling=false +middle_click_scroll=false +no_selection_tint=false +noninteger_translucency=false +style_vertical_toolbars=false +blur_only_active_window=false + +[Window] +interior=true +interior.element=window +frame.top=0 +frame.bottom=0 +frame.left=0 +frame.right=0 diff --git a/Configs/.config/Kvantum/wallbash/wallbash.svg b/Configs/.config/Kvantum/wallbash/wallbash.svg new file mode 100644 index 0000000..c6dbf03 --- /dev/null +++ b/Configs/.config/Kvantum/wallbash/wallbash.svg @@ -0,0 +1,1958 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Configs/.config/MangoHud/MangoHud.conf b/Configs/.config/MangoHud/MangoHud.conf new file mode 100644 index 0000000..7d32063 --- /dev/null +++ b/Configs/.config/MangoHud/MangoHud.conf @@ -0,0 +1,61 @@ +################### File Generated by GOverlay ################### +fps_limit=140 +toggle_fps_limit=F1 + + +legacy_layout=false +gpu_stats +gpu_temp +gpu_core_clock +gpu_mem_clock +gpu_power +gpu_load_change +gpu_load_value=50,90 +gpu_load_color=FFFFFF,FFAA7F,CC0000 +gpu_text=RTX 3080 +cpu_stats +cpu_temp +core_load +cpu_power +cpu_mhz +cpu_load_change +core_load_change +cpu_load_value=50,90 +cpu_load_color=FFFFFF,FFAA7F,CC0000 +cpu_color=2e97cb +cpu_text=i5 8600k +io_color=a491d3 +swap +vram +vram_color=ad64c1 +ram +ram_color=c26693 +fps +engine_version +engine_color=eb5b5b +gpu_name +gpu_color=2e9762 +vulkan_driver +wine +wine_color=eb5b5b +frame_timing=1 +frametime_color=00ff00 +throttling_status +show_fps_limit +gamemode +media_player_color=ffffff +time +table_columns=3 +background_alpha=0.5 +font_size=14 + +background_color=020202 +position=top-left +text_color=ffffff +round_corners=10 +#GOVERLAY_THEME=mangohuddefault +toggle_hud=Shift_R+F12 +toggle_logging=Shift_L+F2 +upload_log=F5 +output_folder=$HOME +media_player_name=spotify diff --git a/Configs/.config/baloofilerc b/Configs/.config/baloofilerc new file mode 100644 index 0000000..1735f7a --- /dev/null +++ b/Configs/.config/baloofilerc @@ -0,0 +1,2 @@ +[Basic Settings] +Indexing-Enabled=false diff --git a/Configs/.config/code-flags.conf b/Configs/.config/code-flags.conf new file mode 100644 index 0000000..8ff1842 --- /dev/null +++ b/Configs/.config/code-flags.conf @@ -0,0 +1,2 @@ +--ozone-platform-hint=wayland +--disable-gpu diff --git a/Configs/.config/dolphinrc b/Configs/.config/dolphinrc new file mode 100644 index 0000000..b39c774 --- /dev/null +++ b/Configs/.config/dolphinrc @@ -0,0 +1,41 @@ +MenuBar=Disabled + +[$Version] +update_info=dolphin_detailsmodesettings.upd:rename-leading-padding + +[General] +ShowSelectionToggle=false +ShowStatusBar=false +Version=202 +ViewPropsTimestamp=2023,4,26,16,58,48.324 + +[IconsMode] +MaximumTextLines=1 +PreviewSize=112 + +[InformationPanel] +dateFormat=ShortFormat + +[KFileDialog Settings] +Places Icons Auto-resize=false +Places Icons Static Size=16 + +[KPropertiesDialog] +2560x1080 screen: Window-Maximized=true + +[MainWindow] +MenuBar=Disabled +ToolBarsMovable=Disabled + +[MainWindow][Toolbar mainToolBar] +IconSize=16 +ToolButtonStyle=IconOnly + +[PlacesPanel] +IconSize=16 + +[PreviewSettings] +Plugins=appimagethumbnail,audiothumbnail,comicbookthumbnail,cursorthumbnail,djvuthumbnail,ebookthumbnail,exrthumbnail,imagethumbnail,jpegthumbnail,kraorathumbnail,windowsexethumbnail,windowsimagethumbnail,opendocumentthumbnail,svgthumbnail,ffmpegthumbs + +[Toolbar mainToolBar] +ToolButtonStyle=IconOnly diff --git a/Configs/.config/dunst/dunst.conf b/Configs/.config/dunst/dunst.conf new file mode 100644 index 0000000..3e113c6 --- /dev/null +++ b/Configs/.config/dunst/dunst.conf @@ -0,0 +1,449 @@ +# See dunst(5) for all configuration options + +[global] + ### Display ### + + # Which monitor should the notifications be displayed on. + monitor = 0 + + # Display notification on focused monitor. Possible modes are: + # mouse: follow mouse pointer + # keyboard: follow window with keyboard focus + # none: don't follow anything + # + # "keyboard" needs a window manager that exports the + # _NET_ACTIVE_WINDOW property. + # This should be the case for almost all modern window managers. + # + # If this option is set to mouse or keyboard, the monitor option + # will be ignored. + follow = mouse + + ### Geometry ### + + # dynamic width from 0 to 300 + # width = (0, 300) + # constant width of 300 + width = 300 + + # The maximum height of a single notification, excluding the frame. + height = 300 + + # Position the notification in the top right corner + origin = top-right + + # Offset from the origin + offset = 20x20 + + # Scale factor. It is auto-detected if value is 0. + scale = 0 + + # Maximum number of notification (0 means no limit) + notification_limit = 20 + + ### Progress bar ### + + # Turn on the progress bar. It appears when a progress hint is passed with + # for example dunstify -h int:value:12 + progress_bar = true + + # Set the progress bar height. This includes the frame, so make sure + # it's at least twice as big as the frame width. + progress_bar_height = 10 + + # Set the frame width of the progress bar + progress_bar_frame_width = 0 + + # Set the minimum width for the progress bar + progress_bar_min_width = 125 + + # Set the maximum width for the progress bar + progress_bar_max_width = 250 + + # Corner radius for the progress bar. 0 disables rounded corners. + progress_bar_corner_radius = 4 + + # Corner radius for the icon image. + icon_corner_radius = ${hypr_border} + + # Show how many messages are currently hidden (because of + # notification_limit). + indicate_hidden = yes + + # The transparency of the window. Range: [0; 100]. + # This option will only work if a compositing window manager is + # present (e.g. xcompmgr, compiz, etc.). (X11 only) + transparency = 10 + + # Draw a line of "separator_height" pixel height between two + # notifications. + # Set to 0 to disable. + # If gap_size is greater than 0, this setting will be ignored. + separator_height = 2 + + # Padding between text and separator. + padding = 8 + + # Horizontal padding. + horizontal_padding = 8 + + # Padding between text and icon. + text_icon_padding = 10 + + # Defines width in pixels of frame around the notification window. + # Set to 0 to disable. + frame_width = 5 + + # Defines color of the frame around the notification window. + #frame_color = "#eba0ac" + + # Size of gap to display between notifications - requires a compositor. + # If value is greater than 0, separator_height will be ignored and a border + # of size frame_width will be drawn around each notification instead. + # Click events on gaps do not currently propagate to applications below. + gap_size = 5 + + # Define a color for the separator. + # possible values are: + # * auto: dunst tries to find a color fitting to the background; + # * foreground: use the same color as the foreground; + # * frame: use the same color as the frame; + # * anything else will be interpreted as a X color. + separator_color = auto + + # Sort messages by urgency. + sort = yes + + # Don't remove messages, if the user is idle (no mouse or keyboard input) + # for longer than idle_threshold seconds. + # Set to 0 to disable. + # A client can set the 'transient' hint to bypass this. See the rules + # section for how to disable this if necessary + # idle_threshold = 120 + + ### Text ### + + font = mononoki Nerd Font 8 + + # The spacing between lines. If the height is smaller than the + # font height, it will get raised to the font height. + line_height = 3 + + # Possible values are: + # full: Allow a small subset of html markup in notifications: + # bold + # italic + # strikethrough + # underline + # + # For a complete reference see + # . + # + # strip: This setting is provided for compatibility with some broken + # clients that send markup even though it's not enabled on the + # server. Dunst will try to strip the markup but the parsing is + # simplistic so using this option outside of matching rules for + # specific applications *IS GREATLY DISCOURAGED*. + # + # no: Disable markup parsing, incoming notifications will be treated as + # plain text. Dunst will not advertise that it has the body-markup + # capability if this is set as a global setting. + # + # It's important to note that markup inside the format option will be parsed + # regardless of what this is set to. + markup = full + + # The format of the message. Possible variables are: + # %a appname + # %s summary + # %b body + # %i iconname (including its path) + # %I iconname (without its path) + # %p progress value if set ([ 0%] to [100%]) or nothing + # %n progress value if set without any extra characters + # %% Literal % + # Markup is allowed + format = "%s\n%b" + + # Alignment of message text. + # Possible values are "left", "center" and "right". + alignment = left + + # Vertical alignment of message text and icon. + # Possible values are "top", "center" and "bottom". + vertical_alignment = center + + # Show age of message if message is older than show_age_threshold + # seconds. + # Set to -1 to disable. + show_age_threshold = 60 + + # Specify where to make an ellipsis in long lines. + # Possible values are "start", "middle" and "end". + ellipsize = middle + + # Ignore newlines '\n' in notifications. + ignore_newline = no + + # Stack together notifications with the same content + stack_duplicates = true + + # Hide the count of stacked notifications with the same content + hide_duplicate_count = false + + # Display indicators for URLs (U) and actions (A). + show_indicators = yes + + ### Icons ### + + # Recursive icon lookup. You can set a single theme, instead of having to + # define all lookup paths. + #enable_recursive_icon_lookup = true + + # Set icon theme (only used for recursive icon lookup) + #icon_theme = Adwaita + # You can also set multiple icon themes, with the leftmost one being used first. + icon_theme = "Tela-circle-dracula" + + # Align icons left/right/top/off + icon_position = left + + # Scale small icons up to this size, set to 0 to disable. Helpful + # for e.g. small files or high-dpi screens. In case of conflict, + # max_icon_size takes precedence over this. + min_icon_size = 32 + + # Scale larger icons down to this size, set to 0 to disable + max_icon_size = 128 + + # Paths to default icons (only necessary when not using recursive icon lookup) + icon_path = $HOME/.icons/Tela-circle-dracula/16/actions:$HOME/.icons/Tela-circle-dracula/16/apps:$HOME/.icons/Tela-circle-dracula/16/devices:$HOME/.icons/Tela-circle-dracula/16/mimetypes:$HOME/.icons/Tela-circle-dracula/16/panel:$HOME/.icons/Tela-circle-dracula/16/places:$HOME/.icons/Tela-circle-dracula/16/status + + ### History ### + + # Should a notification popped up from history be sticky or timeout + # as if it would normally do. + sticky_history = yes + + # Maximum amount of notifications kept in history + history_length = 20 + + ### Misc/Advanced ### + + # dmenu path. + dmenu = /usr/bin/rofi -config "$HOME/.config/rofi/notification.rasi" -dmenu -p dunst: + + # Browser for opening urls in context menu. + browser = /usr/bin/xdg-open + + # Always run rule-defined scripts, even if the notification is suppressed + always_run_script = true + + # Define the title of the windows spawned by dunst + title = Dunst + + # Define the class of the windows spawned by dunst + class = Dunst + + # Define the corner radius of the notification window + # in pixel size. If the radius is 0, you have no rounded + # corners. + # The radius will be automatically lowered if it exceeds half of the + # notification height to avoid clipping text and/or icons. + corner_radius = ${hypr_border} + + # Ignore the dbus closeNotification message. + # Useful to enforce the timeout set by dunst configuration. Without this + # parameter, an application may close the notification sent before the + # user defined timeout. + ignore_dbusclose = false + + ### Wayland ### + # These settings are Wayland-specific. They have no effect when using X11 + + # Uncomment this if you want to let notifications appear under fullscreen + # applications (default: overlay) + # layer = top + + # Set this to true to use X11 output on Wayland. + force_xwayland = false + + ### Legacy + + # Use the Xinerama extension instead of RandR for multi-monitor support. + # This setting is provided for compatibility with older nVidia drivers that + # do not support RandR and using it on systems that support RandR is highly + # discouraged. + # + # By enabling this setting dunst will not be able to detect when a monitor + # is connected or disconnected which might break follow mode if the screen + # layout changes. + force_xinerama = false + + ### mouse + + # Defines list of actions for each mouse event + # Possible values are: + # * none: Don't do anything. + # * do_action: Invoke the action determined by the action_name rule. If there is no + # such action, open the context menu. + # * open_url: If the notification has exactly one url, open it. If there are multiple + # ones, open the context menu. + # * close_current: Close current notification. + # * close_all: Close all notifications. + # * context: Open context menu for the notification. + # * context_all: Open context menu for all notifications. + # These values can be strung together for each mouse event, and + # will be executed in sequence. + mouse_left_click = context, close_current + mouse_middle_click = do_action, close_current + mouse_right_click = close_all + +# Experimental features that may or may not work correctly. Do not expect them +# to have a consistent behavior across releases. +[experimental] + # Calculate the dpi to use on a per-monitor basis. + # If this setting is enabled the Xft.dpi value will be ignored and instead + # dunst will attempt to calculate an appropriate dpi value for each monitor + # using the resolution and physical size. This might be useful in setups + # where there are multiple screens with very different dpi values. + per_monitor_dpi = false + +# Every section that isn't one of the above is interpreted as a rules to +# override settings for certain messages. +# +# Messages can be matched by +# appname (discouraged, see desktop_entry) +# body +# category +# desktop_entry +# icon +# match_transient +# msg_urgency +# stack_tag +# summary +# +# and you can override the +# background +# foreground +# format +# frame_color +# fullscreen +# new_icon +# set_stack_tag +# set_transient +# set_category +# timeout +# urgency +# icon_position +# skip_display +# history_ignore +# action_name +# word_wrap +# ellipsize +# alignment +# hide_text +# +# Shell-like globing will get expanded. +# +# Instead of the appname filter, it's recommended to use the desktop_entry filter. +# GLib based applications export their desktop-entry name. In comparison to the appname, +# the desktop-entry won't get localized. +# +# SCRIPTING +# You can specify a script that gets run when the rule matches by +# setting the "script" option. +# The script will be called as follows: +# script appname summary body icon urgency +# where urgency can be "LOW", "NORMAL" or "CRITICAL". +# +# NOTE: It might be helpful to run dunst -print in a terminal in order +# to find fitting options for rules. + +# Disable the transient hint so that idle_threshold cannot be bypassed from the +# client +#[transient_disable] +# match_transient = yes +# set_transient = no +# +# Make the handling of transient notifications more strict by making them not +# be placed in history. +#[transient_history_ignore] +# match_transient = yes +# history_ignore = yes + +# fullscreen values +# show: show the notifications, regardless if there is a fullscreen window opened +# delay: displays the new notification, if there is no fullscreen window active +# If the notification is already drawn, it won't get undrawn. +# pushback: same as delay, but when switching into fullscreen, the notification will get +# withdrawn from screen again and will get delayed like a new notification +#[fullscreen_delay_everything] +# fullscreen = delay +#[fullscreen_show_critical] +# msg_urgency = critical +# fullscreen = show + +#[espeak] +# summary = "*" +# script = dunst_espeak.sh + +#[script-test] +# summary = "*script*" +# script = dunst_test.sh + +#[ignore] +# # This notification will not be displayed +# summary = "foobar" +# skip_display = true + +#[history-ignore] +# # This notification will not be saved in history +# summary = "foobar" +# history_ignore = yes + +#[skip-display] +# # This notification will not be displayed, but will be included in the history +# summary = "foobar" +# skip_display = yes + +#[signed_on] +# appname = Pidgin +# summary = "*signed on*" +# urgency = low +# +#[signed_off] +# appname = Pidgin +# summary = *signed off* +# urgency = low +# +#[says] +# appname = Pidgin +# summary = *says* +# urgency = critical +# +#[twitter] +# appname = Pidgin +# summary = *twitter.com* +# urgency = normal +# +#[stack-volumes] +# appname = "some_volume_notifiers" +# set_stack_tag = "volume" +# +# vim: ft=cfg + +[Type-1] + appname = "t1" + format = "%s" + +[Type-2] + appname = "t2" + format = "%s\n%b" + +[urgency_critical] + background = "#f5e0dc" + foreground = "#1e1e2e" + frame_color = "#f38ba8" + icon = "$HOME/.config/dunst/icons/critical.svg" + timeout = 0 diff --git a/Configs/.config/dunst/dunstrc b/Configs/.config/dunst/dunstrc new file mode 100644 index 0000000..465c159 --- /dev/null +++ b/Configs/.config/dunst/dunstrc @@ -0,0 +1,463 @@ +# See dunst(5) for all configuration options + +[global] + ### Display ### + + # Which monitor should the notifications be displayed on. + monitor = 0 + + # Display notification on focused monitor. Possible modes are: + # mouse: follow mouse pointer + # keyboard: follow window with keyboard focus + # none: don't follow anything + # + # "keyboard" needs a window manager that exports the + # _NET_ACTIVE_WINDOW property. + # This should be the case for almost all modern window managers. + # + # If this option is set to mouse or keyboard, the monitor option + # will be ignored. + follow = mouse + + ### Geometry ### + + # dynamic width from 0 to 300 + # width = (0, 300) + # constant width of 300 + width = 300 + + # The maximum height of a single notification, excluding the frame. + height = 300 + + # Position the notification in the top right corner + origin = top-right + + # Offset from the origin + offset = 20x20 + + # Scale factor. It is auto-detected if value is 0. + scale = 0 + + # Maximum number of notification (0 means no limit) + notification_limit = 20 + + ### Progress bar ### + + # Turn on the progress bar. It appears when a progress hint is passed with + # for example dunstify -h int:value:12 + progress_bar = true + + # Set the progress bar height. This includes the frame, so make sure + # it's at least twice as big as the frame width. + progress_bar_height = 10 + + # Set the frame width of the progress bar + progress_bar_frame_width = 0 + + # Set the minimum width for the progress bar + progress_bar_min_width = 125 + + # Set the maximum width for the progress bar + progress_bar_max_width = 250 + + # Corner radius for the progress bar. 0 disables rounded corners. + progress_bar_corner_radius = 4 + + # Corner radius for the icon image. + icon_corner_radius = 10 + + # Show how many messages are currently hidden (because of + # notification_limit). + indicate_hidden = yes + + # The transparency of the window. Range: [0; 100]. + # This option will only work if a compositing window manager is + # present (e.g. xcompmgr, compiz, etc.). (X11 only) + transparency = 10 + + # Draw a line of "separator_height" pixel height between two + # notifications. + # Set to 0 to disable. + # If gap_size is greater than 0, this setting will be ignored. + separator_height = 2 + + # Padding between text and separator. + padding = 8 + + # Horizontal padding. + horizontal_padding = 8 + + # Padding between text and icon. + text_icon_padding = 10 + + # Defines width in pixels of frame around the notification window. + # Set to 0 to disable. + frame_width = 5 + + # Defines color of the frame around the notification window. + #frame_color = "#eba0ac" + + # Size of gap to display between notifications - requires a compositor. + # If value is greater than 0, separator_height will be ignored and a border + # of size frame_width will be drawn around each notification instead. + # Click events on gaps do not currently propagate to applications below. + gap_size = 5 + + # Define a color for the separator. + # possible values are: + # * auto: dunst tries to find a color fitting to the background; + # * foreground: use the same color as the foreground; + # * frame: use the same color as the frame; + # * anything else will be interpreted as a X color. + separator_color = auto + + # Sort messages by urgency. + sort = yes + + # Don't remove messages, if the user is idle (no mouse or keyboard input) + # for longer than idle_threshold seconds. + # Set to 0 to disable. + # A client can set the 'transient' hint to bypass this. See the rules + # section for how to disable this if necessary + # idle_threshold = 120 + + ### Text ### + + font = mononoki Nerd Font 8 + + # The spacing between lines. If the height is smaller than the + # font height, it will get raised to the font height. + line_height = 3 + + # Possible values are: + # full: Allow a small subset of html markup in notifications: + # bold + # italic + # strikethrough + # underline + # + # For a complete reference see + # . + # + # strip: This setting is provided for compatibility with some broken + # clients that send markup even though it's not enabled on the + # server. Dunst will try to strip the markup but the parsing is + # simplistic so using this option outside of matching rules for + # specific applications *IS GREATLY DISCOURAGED*. + # + # no: Disable markup parsing, incoming notifications will be treated as + # plain text. Dunst will not advertise that it has the body-markup + # capability if this is set as a global setting. + # + # It's important to note that markup inside the format option will be parsed + # regardless of what this is set to. + markup = full + + # The format of the message. Possible variables are: + # %a appname + # %s summary + # %b body + # %i iconname (including its path) + # %I iconname (without its path) + # %p progress value if set ([ 0%] to [100%]) or nothing + # %n progress value if set without any extra characters + # %% Literal % + # Markup is allowed + format = "%s\n%b" + + # Alignment of message text. + # Possible values are "left", "center" and "right". + alignment = left + + # Vertical alignment of message text and icon. + # Possible values are "top", "center" and "bottom". + vertical_alignment = center + + # Show age of message if message is older than show_age_threshold + # seconds. + # Set to -1 to disable. + show_age_threshold = 60 + + # Specify where to make an ellipsis in long lines. + # Possible values are "start", "middle" and "end". + ellipsize = middle + + # Ignore newlines '\n' in notifications. + ignore_newline = no + + # Stack together notifications with the same content + stack_duplicates = true + + # Hide the count of stacked notifications with the same content + hide_duplicate_count = false + + # Display indicators for URLs (U) and actions (A). + show_indicators = yes + + ### Icons ### + + # Recursive icon lookup. You can set a single theme, instead of having to + # define all lookup paths. + #enable_recursive_icon_lookup = true + + # Set icon theme (only used for recursive icon lookup) + #icon_theme = Adwaita + # You can also set multiple icon themes, with the leftmost one being used first. + icon_theme = "Tela-circle-dracula" + + # Align icons left/right/top/off + icon_position = left + + # Scale small icons up to this size, set to 0 to disable. Helpful + # for e.g. small files or high-dpi screens. In case of conflict, + # max_icon_size takes precedence over this. + min_icon_size = 32 + + # Scale larger icons down to this size, set to 0 to disable + max_icon_size = 128 + + # Paths to default icons (only necessary when not using recursive icon lookup) + icon_path = $HOME/.icons/Tela-circle-dracula/16/actions:$HOME/.icons/Tela-circle-dracula/16/apps:$HOME/.icons/Tela-circle-dracula/16/devices:$HOME/.icons/Tela-circle-dracula/16/mimetypes:$HOME/.icons/Tela-circle-dracula/16/panel:$HOME/.icons/Tela-circle-dracula/16/places:$HOME/.icons/Tela-circle-dracula/16/status + + ### History ### + + # Should a notification popped up from history be sticky or timeout + # as if it would normally do. + sticky_history = yes + + # Maximum amount of notifications kept in history + history_length = 20 + + ### Misc/Advanced ### + + # dmenu path. + dmenu = /usr/bin/rofi -config "$HOME/.config/rofi/notification.rasi" -dmenu -p dunst: + + # Browser for opening urls in context menu. + browser = /usr/bin/xdg-open + + # Always run rule-defined scripts, even if the notification is suppressed + always_run_script = true + + # Define the title of the windows spawned by dunst + title = Dunst + + # Define the class of the windows spawned by dunst + class = Dunst + + # Define the corner radius of the notification window + # in pixel size. If the radius is 0, you have no rounded + # corners. + # The radius will be automatically lowered if it exceeds half of the + # notification height to avoid clipping text and/or icons. + corner_radius = 10 + + # Ignore the dbus closeNotification message. + # Useful to enforce the timeout set by dunst configuration. Without this + # parameter, an application may close the notification sent before the + # user defined timeout. + ignore_dbusclose = false + + ### Wayland ### + # These settings are Wayland-specific. They have no effect when using X11 + + # Uncomment this if you want to let notifications appear under fullscreen + # applications (default: overlay) + # layer = top + + # Set this to true to use X11 output on Wayland. + force_xwayland = false + + ### Legacy + + # Use the Xinerama extension instead of RandR for multi-monitor support. + # This setting is provided for compatibility with older nVidia drivers that + # do not support RandR and using it on systems that support RandR is highly + # discouraged. + # + # By enabling this setting dunst will not be able to detect when a monitor + # is connected or disconnected which might break follow mode if the screen + # layout changes. + force_xinerama = false + + ### mouse + + # Defines list of actions for each mouse event + # Possible values are: + # * none: Don't do anything. + # * do_action: Invoke the action determined by the action_name rule. If there is no + # such action, open the context menu. + # * open_url: If the notification has exactly one url, open it. If there are multiple + # ones, open the context menu. + # * close_current: Close current notification. + # * close_all: Close all notifications. + # * context: Open context menu for the notification. + # * context_all: Open context menu for all notifications. + # These values can be strung together for each mouse event, and + # will be executed in sequence. + mouse_left_click = context, close_current + mouse_middle_click = do_action, close_current + mouse_right_click = close_all + +# Experimental features that may or may not work correctly. Do not expect them +# to have a consistent behavior across releases. +[experimental] + # Calculate the dpi to use on a per-monitor basis. + # If this setting is enabled the Xft.dpi value will be ignored and instead + # dunst will attempt to calculate an appropriate dpi value for each monitor + # using the resolution and physical size. This might be useful in setups + # where there are multiple screens with very different dpi values. + per_monitor_dpi = false + +# Every section that isn't one of the above is interpreted as a rules to +# override settings for certain messages. +# +# Messages can be matched by +# appname (discouraged, see desktop_entry) +# body +# category +# desktop_entry +# icon +# match_transient +# msg_urgency +# stack_tag +# summary +# +# and you can override the +# background +# foreground +# format +# frame_color +# fullscreen +# new_icon +# set_stack_tag +# set_transient +# set_category +# timeout +# urgency +# icon_position +# skip_display +# history_ignore +# action_name +# word_wrap +# ellipsize +# alignment +# hide_text +# +# Shell-like globing will get expanded. +# +# Instead of the appname filter, it's recommended to use the desktop_entry filter. +# GLib based applications export their desktop-entry name. In comparison to the appname, +# the desktop-entry won't get localized. +# +# SCRIPTING +# You can specify a script that gets run when the rule matches by +# setting the "script" option. +# The script will be called as follows: +# script appname summary body icon urgency +# where urgency can be "LOW", "NORMAL" or "CRITICAL". +# +# NOTE: It might be helpful to run dunst -print in a terminal in order +# to find fitting options for rules. + +# Disable the transient hint so that idle_threshold cannot be bypassed from the +# client +#[transient_disable] +# match_transient = yes +# set_transient = no +# +# Make the handling of transient notifications more strict by making them not +# be placed in history. +#[transient_history_ignore] +# match_transient = yes +# history_ignore = yes + +# fullscreen values +# show: show the notifications, regardless if there is a fullscreen window opened +# delay: displays the new notification, if there is no fullscreen window active +# If the notification is already drawn, it won't get undrawn. +# pushback: same as delay, but when switching into fullscreen, the notification will get +# withdrawn from screen again and will get delayed like a new notification +#[fullscreen_delay_everything] +# fullscreen = delay +#[fullscreen_show_critical] +# msg_urgency = critical +# fullscreen = show + +#[espeak] +# summary = "*" +# script = dunst_espeak.sh + +#[script-test] +# summary = "*script*" +# script = dunst_test.sh + +#[ignore] +# # This notification will not be displayed +# summary = "foobar" +# skip_display = true + +#[history-ignore] +# # This notification will not be saved in history +# summary = "foobar" +# history_ignore = yes + +#[skip-display] +# # This notification will not be displayed, but will be included in the history +# summary = "foobar" +# skip_display = yes + +#[signed_on] +# appname = Pidgin +# summary = "*signed on*" +# urgency = low +# +#[signed_off] +# appname = Pidgin +# summary = *signed off* +# urgency = low +# +#[says] +# appname = Pidgin +# summary = *says* +# urgency = critical +# +#[twitter] +# appname = Pidgin +# summary = *twitter.com* +# urgency = normal +# +#[stack-volumes] +# appname = "some_volume_notifiers" +# set_stack_tag = "volume" +# +# vim: ft=cfg + +[Type-1] + appname = "t1" + format = "%s" + +[Type-2] + appname = "t2" + format = "%s\n%b" + +[urgency_critical] + background = "#f5e0dc" + foreground = "#1e1e2e" + frame_color = "#f38ba8" + icon = "$HOME/.config/dunst/icons/critical.svg" + timeout = 0 + +[urgency_low] + background = "#6591A380" + foreground = "#CCF0FFE6" + frame_color = "#6591A303" + icon = "$HOME/.config/dunst/icons/hyprdots.svg" + timeout = 5 + +[urgency_normal] + background = "#3A4A6B80" + foreground = "#CCDDFFE6" + frame_color = "#3A4A6B03" + icon = "$HOME/.config/dunst/icons/hyprdots.svg" + timeout = 5 diff --git a/Configs/.config/dunst/icons/arch.svg b/Configs/.config/dunst/icons/arch.svg new file mode 100644 index 0000000..5820a24 --- /dev/null +++ b/Configs/.config/dunst/icons/arch.svg @@ -0,0 +1,129 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Configs/.config/dunst/icons/critical.svg b/Configs/.config/dunst/icons/critical.svg new file mode 100644 index 0000000..64379d1 --- /dev/null +++ b/Configs/.config/dunst/icons/critical.svg @@ -0,0 +1,47 @@ + + + + + + + + + diff --git a/Configs/.config/dunst/icons/hyprdots.png b/Configs/.config/dunst/icons/hyprdots.png new file mode 100644 index 0000000..2886bd6 Binary files /dev/null and b/Configs/.config/dunst/icons/hyprdots.png differ diff --git a/Configs/.config/dunst/icons/hyprdots.svg b/Configs/.config/dunst/icons/hyprdots.svg new file mode 100644 index 0000000..f0d4fdd --- /dev/null +++ b/Configs/.config/dunst/icons/hyprdots.svg @@ -0,0 +1,192 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Configs/.config/dunst/icons/keyboard.svg b/Configs/.config/dunst/icons/keyboard.svg new file mode 100644 index 0000000..35dab29 --- /dev/null +++ b/Configs/.config/dunst/icons/keyboard.svg @@ -0,0 +1,105 @@ + + + + + + + + + + + + + + + + + + + diff --git a/Configs/.config/dunst/icons/vol/muted-mic.svg b/Configs/.config/dunst/icons/vol/muted-mic.svg new file mode 100644 index 0000000..b0d0e36 --- /dev/null +++ b/Configs/.config/dunst/icons/vol/muted-mic.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/Configs/.config/dunst/icons/vol/muted-speaker.svg b/Configs/.config/dunst/icons/vol/muted-speaker.svg new file mode 100644 index 0000000..49119fc --- /dev/null +++ b/Configs/.config/dunst/icons/vol/muted-speaker.svg @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/Configs/.config/dunst/icons/vol/unmuted-mic.svg b/Configs/.config/dunst/icons/vol/unmuted-mic.svg new file mode 100644 index 0000000..904908f --- /dev/null +++ b/Configs/.config/dunst/icons/vol/unmuted-mic.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/Configs/.config/dunst/icons/vol/unmuted-speaker.svg b/Configs/.config/dunst/icons/vol/unmuted-speaker.svg new file mode 100644 index 0000000..e003d3f --- /dev/null +++ b/Configs/.config/dunst/icons/vol/unmuted-speaker.svg @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/Configs/.config/dunst/icons/vol/vol-0.svg b/Configs/.config/dunst/icons/vol/vol-0.svg new file mode 100644 index 0000000..6535e5e --- /dev/null +++ b/Configs/.config/dunst/icons/vol/vol-0.svg @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + diff --git a/Configs/.config/dunst/icons/vol/vol-10.svg b/Configs/.config/dunst/icons/vol/vol-10.svg new file mode 100644 index 0000000..823dee3 --- /dev/null +++ b/Configs/.config/dunst/icons/vol/vol-10.svg @@ -0,0 +1,85 @@ + + + + + + + + + + + + + + diff --git a/Configs/.config/dunst/icons/vol/vol-100.svg b/Configs/.config/dunst/icons/vol/vol-100.svg new file mode 100644 index 0000000..bff61a4 --- /dev/null +++ b/Configs/.config/dunst/icons/vol/vol-100.svg @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + diff --git a/Configs/.config/dunst/icons/vol/vol-15.svg b/Configs/.config/dunst/icons/vol/vol-15.svg new file mode 100644 index 0000000..b96bd5c --- /dev/null +++ b/Configs/.config/dunst/icons/vol/vol-15.svg @@ -0,0 +1,85 @@ + + + + + + + + + + + + + + diff --git a/Configs/.config/dunst/icons/vol/vol-20.svg b/Configs/.config/dunst/icons/vol/vol-20.svg new file mode 100644 index 0000000..fe81cf4 --- /dev/null +++ b/Configs/.config/dunst/icons/vol/vol-20.svg @@ -0,0 +1,85 @@ + + + + + + + + + + + + + + diff --git a/Configs/.config/dunst/icons/vol/vol-25.svg b/Configs/.config/dunst/icons/vol/vol-25.svg new file mode 100644 index 0000000..bd4dab9 --- /dev/null +++ b/Configs/.config/dunst/icons/vol/vol-25.svg @@ -0,0 +1,85 @@ + + + + + + + + + + + + + + diff --git a/Configs/.config/dunst/icons/vol/vol-30.svg b/Configs/.config/dunst/icons/vol/vol-30.svg new file mode 100644 index 0000000..9225f42 --- /dev/null +++ b/Configs/.config/dunst/icons/vol/vol-30.svg @@ -0,0 +1,85 @@ + + + + + + + + + + + + + + diff --git a/Configs/.config/dunst/icons/vol/vol-35.svg b/Configs/.config/dunst/icons/vol/vol-35.svg new file mode 100644 index 0000000..211050c --- /dev/null +++ b/Configs/.config/dunst/icons/vol/vol-35.svg @@ -0,0 +1,85 @@ + + + + + + + + + + + + + + diff --git a/Configs/.config/dunst/icons/vol/vol-40.svg b/Configs/.config/dunst/icons/vol/vol-40.svg new file mode 100644 index 0000000..6ef2e3d --- /dev/null +++ b/Configs/.config/dunst/icons/vol/vol-40.svg @@ -0,0 +1,85 @@ + + + + + + + + + + + + + + diff --git a/Configs/.config/dunst/icons/vol/vol-45.svg b/Configs/.config/dunst/icons/vol/vol-45.svg new file mode 100644 index 0000000..bee965f --- /dev/null +++ b/Configs/.config/dunst/icons/vol/vol-45.svg @@ -0,0 +1,85 @@ + + + + + + + + + + + + + + diff --git a/Configs/.config/dunst/icons/vol/vol-5.svg b/Configs/.config/dunst/icons/vol/vol-5.svg new file mode 100644 index 0000000..5ad7f09 --- /dev/null +++ b/Configs/.config/dunst/icons/vol/vol-5.svg @@ -0,0 +1,84 @@ + + + + + + + + + + + + + + diff --git a/Configs/.config/dunst/icons/vol/vol-50.svg b/Configs/.config/dunst/icons/vol/vol-50.svg new file mode 100644 index 0000000..22d967c --- /dev/null +++ b/Configs/.config/dunst/icons/vol/vol-50.svg @@ -0,0 +1,84 @@ + + + + + + + + + + + + + + diff --git a/Configs/.config/dunst/icons/vol/vol-55.svg b/Configs/.config/dunst/icons/vol/vol-55.svg new file mode 100644 index 0000000..6868c5e --- /dev/null +++ b/Configs/.config/dunst/icons/vol/vol-55.svg @@ -0,0 +1,85 @@ + + + + + + + + + + + + + + diff --git a/Configs/.config/dunst/icons/vol/vol-60.svg b/Configs/.config/dunst/icons/vol/vol-60.svg new file mode 100644 index 0000000..2db27ec --- /dev/null +++ b/Configs/.config/dunst/icons/vol/vol-60.svg @@ -0,0 +1,85 @@ + + + + + + + + + + + + + + diff --git a/Configs/.config/dunst/icons/vol/vol-65.svg b/Configs/.config/dunst/icons/vol/vol-65.svg new file mode 100644 index 0000000..78b6404 --- /dev/null +++ b/Configs/.config/dunst/icons/vol/vol-65.svg @@ -0,0 +1,85 @@ + + + + + + + + + + + + + + diff --git a/Configs/.config/dunst/icons/vol/vol-70.svg b/Configs/.config/dunst/icons/vol/vol-70.svg new file mode 100644 index 0000000..8534bcb --- /dev/null +++ b/Configs/.config/dunst/icons/vol/vol-70.svg @@ -0,0 +1,85 @@ + + + + + + + + + + + + + + diff --git a/Configs/.config/dunst/icons/vol/vol-75.svg b/Configs/.config/dunst/icons/vol/vol-75.svg new file mode 100644 index 0000000..56bc16c --- /dev/null +++ b/Configs/.config/dunst/icons/vol/vol-75.svg @@ -0,0 +1,85 @@ + + + + + + + + + + + + + + diff --git a/Configs/.config/dunst/icons/vol/vol-80.svg b/Configs/.config/dunst/icons/vol/vol-80.svg new file mode 100644 index 0000000..b893b57 --- /dev/null +++ b/Configs/.config/dunst/icons/vol/vol-80.svg @@ -0,0 +1,85 @@ + + + + + + + + + + + + + + diff --git a/Configs/.config/dunst/icons/vol/vol-85.svg b/Configs/.config/dunst/icons/vol/vol-85.svg new file mode 100644 index 0000000..8bca371 --- /dev/null +++ b/Configs/.config/dunst/icons/vol/vol-85.svg @@ -0,0 +1,85 @@ + + + + + + + + + + + + + + diff --git a/Configs/.config/dunst/icons/vol/vol-90.svg b/Configs/.config/dunst/icons/vol/vol-90.svg new file mode 100644 index 0000000..2d4d648 --- /dev/null +++ b/Configs/.config/dunst/icons/vol/vol-90.svg @@ -0,0 +1,85 @@ + + + + + + + + + + + + + + diff --git a/Configs/.config/dunst/icons/vol/vol-95.svg b/Configs/.config/dunst/icons/vol/vol-95.svg new file mode 100644 index 0000000..d9a7903 --- /dev/null +++ b/Configs/.config/dunst/icons/vol/vol-95.svg @@ -0,0 +1,85 @@ + + + + + + + + + + + + + + diff --git a/Configs/.config/dunst/wallbash.conf b/Configs/.config/dunst/wallbash.conf new file mode 100644 index 0000000..72bb9f5 --- /dev/null +++ b/Configs/.config/dunst/wallbash.conf @@ -0,0 +1,14 @@ + +[urgency_low] + background = "#6591A380" + foreground = "#CCF0FFE6" + frame_color = "#6591A303" + icon = "~/.config/dunst/icons/hyprdots.svg" + timeout = 5 + +[urgency_normal] + background = "#3A4A6B80" + foreground = "#CCDDFFE6" + frame_color = "#3A4A6B03" + icon = "~/.config/dunst/icons/hyprdots.svg" + timeout = 5 diff --git a/Configs/.config/fastfetch/config.jsonc b/Configs/.config/fastfetch/config.jsonc new file mode 100644 index 0000000..e417a22 --- /dev/null +++ b/Configs/.config/fastfetch/config.jsonc @@ -0,0 +1,108 @@ +{ + "$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json", + "logo": { + "source": "$(find \"${XDG_CONFIG_HOME:-$HOME/.config}/fastfetch/pngs/\" -name \"*.png\" | shuf -n 1)", + "height": 18 + }, + "display": { + "separator": " : " + }, + "modules": [ + { + "type": "custom", + "format": "\u001b[36m  コンピューター" + }, + { + "type": "custom", + "format": "┌──────────────────────────────────────────┐" + }, + { + "type": "os", + "key": "  OS", + "keyColor": "red" + }, + { + "type": "kernel", + "key": "  Kernel", + "keyColor": "red" + }, + { + "type": "packages", + "key": "  Packages", + "keyColor": "green" + }, + { + "type": "display", + "key": "  Display", + "keyColor": "green" + }, + { + "type": "wm", + "key": "  WM", + "keyColor": "yellow" + }, + { + "type": "terminal", + "key": "  Terminal", + "keyColor": "yellow" + }, + { + "type": "custom", + "format": "└──────────────────────────────────────────┘" + }, + "break", + { + "type": "title", + "key": " " + }, + { + "type": "custom", + "format": "┌──────────────────────────────────────────┐" + }, + { + "type": "cpu", + "format": "{1}", + "key": "  CPU", + "keyColor": "blue" + }, + { + "type": "gpu", + "format": "{2}", + "key": "  GPU", + "keyColor": "blue" + }, + { + "type": "gpu", + "format": "{3}", + "key": "  GPU Driver", + "keyColor": "magenta" + }, + { + "type": "memory", + "key": " ﬙ Memory", + "keyColor": "magenta" + }, + { + "type": "command", + "key": " 󱦟 OS Age ", + "keyColor": "31", + "text": "birth_install=$(stat -c %W /); current=$(date +%s); time_progression=$((current - birth_install)); days_difference=$((time_progression / 86400)); echo $days_difference days" + }, + { + "type": "uptime", + "key": " 󱫐 Uptime ", + "keyColor": "red" + }, + { + "type": "custom", + "format": "└──────────────────────────────────────────┘" + }, + { + "type": "colors", + "paddingLeft": 2, + "symbol": "circle" + }, + "break" + + ] +} diff --git a/Configs/.config/fastfetch/pngs/aisaka.png b/Configs/.config/fastfetch/pngs/aisaka.png new file mode 100644 index 0000000..60e9f23 Binary files /dev/null and b/Configs/.config/fastfetch/pngs/aisaka.png differ diff --git a/Configs/.config/fastfetch/pngs/arch.png b/Configs/.config/fastfetch/pngs/arch.png new file mode 100644 index 0000000..db5a7e8 Binary files /dev/null and b/Configs/.config/fastfetch/pngs/arch.png differ diff --git a/Configs/.config/fastfetch/pngs/hyde.png b/Configs/.config/fastfetch/pngs/hyde.png new file mode 100644 index 0000000..77b57ae Binary files /dev/null and b/Configs/.config/fastfetch/pngs/hyde.png differ diff --git a/Configs/.config/fastfetch/pngs/loli.png b/Configs/.config/fastfetch/pngs/loli.png new file mode 100644 index 0000000..dece8f6 Binary files /dev/null and b/Configs/.config/fastfetch/pngs/loli.png differ diff --git a/Configs/.config/fastfetch/pngs/pochita.png b/Configs/.config/fastfetch/pngs/pochita.png new file mode 100644 index 0000000..5e5350b Binary files /dev/null and b/Configs/.config/fastfetch/pngs/pochita.png differ diff --git a/Configs/.config/fastfetch/pngs/ryuzaki.png b/Configs/.config/fastfetch/pngs/ryuzaki.png new file mode 100644 index 0000000..eab1828 Binary files /dev/null and b/Configs/.config/fastfetch/pngs/ryuzaki.png differ diff --git a/Configs/.config/fish/config.fish b/Configs/.config/fish/config.fish new file mode 100644 index 0000000..be26f28 --- /dev/null +++ b/Configs/.config/fish/config.fish @@ -0,0 +1,22 @@ +set -g fish_greeting + +if status is-interactive + starship init fish | source +end + +# List Directory +alias l='eza -lh --icons=auto' # long list +alias ls='eza -1 --icons=auto' # short list +alias ll='eza -lha --icons=auto --sort=name --group-directories-first' # long list all +alias ld='eza -lhD --icons=auto' # long list dirs +alias lt='eza --icons=auto --tree' # list folder as tree + +# Handy change dir shortcuts +abbr .. 'cd ..' +abbr ... 'cd ../..' +abbr .3 'cd ../../..' +abbr .4 'cd ../../../..' +abbr .5 'cd ../../../../..' + +# Always mkdir a path (this doesn't inhibit functionality to make a single dir) +abbr mkdir 'mkdir -p' diff --git a/Configs/.config/gtk-3.0/settings.ini b/Configs/.config/gtk-3.0/settings.ini new file mode 100644 index 0000000..6379d00 --- /dev/null +++ b/Configs/.config/gtk-3.0/settings.ini @@ -0,0 +1,17 @@ +[Settings] +gtk-theme-name=Catppuccin-Mocha +gtk-icon-theme-name=Tela-circle-dracula +gtk-font-name=Cantarell 10 +gtk-cursor-theme-name=Bibata-Modern-Ice +gtk-cursor-theme-size=20 +gtk-toolbar-style=GTK_TOOLBAR_ICONS +gtk-toolbar-icon-size=GTK_ICON_SIZE_LARGE_TOOLBAR +gtk-button-images=0 +gtk-menu-images=0 +gtk-enable-event-sounds=1 +gtk-enable-input-feedback-sounds=0 +gtk-xft-antialias=1 +gtk-xft-hinting=1 +gtk-xft-hintstyle=hintfull +gtk-xft-rgba=rgb +gtk-application-prefer-dark-theme=0 diff --git a/Configs/.config/hyde/hyde.conf b/Configs/.config/hyde/hyde.conf new file mode 100644 index 0000000..02c503f --- /dev/null +++ b/Configs/.config/hyde/hyde.conf @@ -0,0 +1,124 @@ +#   ░▒▒▒░░░░░▓▓          ___________ +# ░░▒▒▒░░░░░▓▓        //___________/ +# ░░▒▒▒░░░░░▓▓     _   _ _    _ _____ +# ░░▒▒░░░░░▓▓▓▓▓▓ | | | | |  | |  __/ +# ░▒▒░░░░▓▓   ▓▓ | |_| | |_/ /| |___ +#  ░▒▒░░▓▓   ▓▓   \__  |____/ |____/ +#    ░▒▓▓   ▓▓  //____/ + + +#|--/ /+-------------------------+--/ /|# +#|-/ /-| HyDE Configuration File |-/ /-|# +#|/ /--+-------------------------+/ /--|# + + +# ▀█▀ █░█ █▀▀ █▀▄▀█ █▀▀ +# ░█░ █▀█ ██▄ █░▀░█ ██▄ + +#// hydeTheme indicates the current theme is use +#// DO NOT update this manually, use - themeswitch.sh +hydeTheme="Rosé Pine" + + +# █░█░█ ▄▀█ █░░ █░░ █▀█ ▄▀█ █▀█ █▀▀ █▀█ +# ▀▄▀▄▀ █▀█ █▄▄ █▄▄ █▀▀ █▀█ █▀▀ ██▄ █▀▄ + +#// wallFramerate sets the transition FPS while changing wallpaper +#// set this to match your monitor refresh rate +wallFramerate=144 + +#// wallTransDuration sets the transition duration while changing wallpaper +#// set this value in seconds +wallTransDuration=0.4 + +#// wallAddCustomPath sets the custom user directories scanned for wallpaper +#// add your wallpaper directories as - wallAddCustomPath=("/path/to/wall/dir1" "/path/to/wall/dir2") +wallAddCustomPath="" + + +# █░█░█ ▄▀█ █░░ █░░ █▄▄ ▄▀█ █▀ █░█ +# ▀▄▀▄▀ █▀█ █▄▄ █▄▄ █▄█ █▀█ ▄█ █▀█ + +#// enableWallDcol determines the colors deployed by wallbash. DO NOT update this manually, use - wallbashtoggle.sh +#// 0 applies the colors from current theme +#// 1 applies auto colors from current wallpaper (dark colors for dark wallpaper/light colors for light wallpaper) +#// 2 applies dark colors for dark wallpaper/force dark colors for light wallpaper +#// 3 applies light colors for light wallpaper/force light colors for dark wallpaper +enableWallDcol="2" + +#// wallbashCustomCurve sets the HSV curve based on which the accent colors are generated +#// for ex. wallbashCustomCurve="32 50\n42 46\n49 40\n56 39\n64 38\n76 37\n90 33\n94 29\n100 20" +#// here it has nine lines where each line has 2 values {Brightness} (0-100) and {Saturation} (0-100) +#// so edit this curve to fine tune the Brightness and Saturation % values for your accent colors +#// dont forget to regenerate cache once you set this curve - swwwallcache.sh -f +wallbashCustomCurve="" + +#// skip_wallbash specifies wallbash templates that should be excluded from processing +#// Add paths of templates you want to skip, relative to $hydeConfDir (which points to ~/.config/hyde/) +#// This allows you to selectively exclude certain templates from the wallbash process +#// while still processing others +#// example: +#// skip_wallbash=( +#// "${hydeConfDir}/wallbash/Wall-Dcol/waybar.dcol" #! This skips waybar +#// "${hydeConfDir}/wallbash/Wall-Ways/code.dcol" #! Skips code +#// ) + + +# █▀█ █▀█ █▀▀ █ +# █▀▄ █▄█ █▀░ █ + +#// themeSelect sets the style for theme select menu +#// available styles - 1 (default) , 2 +themeSelect=2 + +#// rofiStyle sets the style for rofi application launcher +#// to select from available styles use - rofiselect.sh +rofiStyle="11" + +#// rofiStyle sets the scale for rofi application launcher +#// adjust this value to increase/decrease the launcher size +rofiScale=9 + + +# █░░ █▀█ █▀▀ █▀█ █░█ ▀█▀ +# █▄▄ █▄█ █▄█ █▄█ █▄█ ░█░ + +#// wlogoutStyle sets the style for logout menu +#// available styles - 1 (default) , 2 +wlogoutStyle=1 + +# █░█░█ ▄▀█ █▄█ █▄▄ ▄▀█ █▀█ +# ▀▄▀▄▀ █▀█ ░█░ █▄█ █▀█ █▀▄ + +# // wayabr_output - set monitor output for waybar +# waybar_output="*" # use all outputs or simply comment out waybar_output +# waybar_output="DP-1" # use only DP-1 output +# waybar_output=("eDP-1" "DP-1" "more monitor") # use bash array of eDP-1 and DP-1 to set outputs + +# // waybar_cava_bar - bar for waybar cava - default "▁▂▃▄▅▆▇█" +# waybar_cava_bar="░▒▓█" +# waybar_cava_bar="▖▗▘▙▚▛▜▝▞▟" +# waybar_cava_bar="▂▃▄▅▆▇█" +# waybar_cava_bar="▕▏▎▍▌▋▊▉" +# waybar_cava_bar="⣀⣄⣤⣦⣶⣷⣿" +# waybar_cava_bar="⠁⠂⠄⡀⢀⠠⠐⠈" +# waybar_cava_bar="⠋⠙⠹⢸⣰⣤⣦⣶" +# waybar_cava_bar="🌑🌒🌓🌔🌕🌖🌗🌘" +# waybar_cava_bar="🌕🌖🌗🌘🌒🌓🌔🌕" +# waybar_cava_bar="★☆★☆★☆★☆" +# waybar_cava_bar="⣾⣽⣻⢿⡿⣟⣯⣷" +# waybar_cava_bar="ᗧᗣᗤᗥᗦᗧᗣᗤᗥᗦ" + +# // waybar_cava_width - width for waybar cava - default 8 +# waybar_cava_width=10 + +# // waybar_cava_range - range for waybar cava - default 7 +# waybar_cava_range=7 + +# // waybar_cava_stbmode - standby mode for waybar cava - default 0 +# 0: clean - totally hides the module +# 1: blank - makes module expand as spaces +# 2: full - occupies the module with full bar +# 3: low - makes the module display the lowest set bar +# waybar_cava_stbmode=0 + diff --git a/Configs/.config/hyde/wallbash/Wall-Dcol/gtk/gtk3.dcol b/Configs/.config/hyde/wallbash/Wall-Dcol/gtk/gtk3.dcol new file mode 100644 index 0000000..d675a8d --- /dev/null +++ b/Configs/.config/hyde/wallbash/Wall-Dcol/gtk/gtk3.dcol @@ -0,0 +1,11468 @@ +$HOME/.themes/Wallbash-Gtk/gtk-3.0/gtk.css|cp $HOME/.themes/Wallbash-Gtk/gtk-3.0/gtk.css $HOME/.themes/Wallbash-Gtk/gtk-3.0/gtk-dark.css +/* GTK NAMED COLORS -- USE RESPONSIBLY! */ + +/* widget text/foreground color */ +@define-color theme_fg_color #; +/* text color for entries, views and content in general */ +@define-color theme_text_color #; +/* widget base background color */ +@define-color theme_bg_color #; +/* text widgets and the like base background color */ +@define-color theme_base_color #; +/* base background color of selections */ +@define-color theme_selected_bg_color #; +/* text/foreground color of selections */ +@define-color theme_selected_fg_color ; +/* base background color of insensitive widgets */ +@define-color insensitive_bg_color #; +/* text foreground color of insensitive widgets */ +@define-color insensitive_fg_color ; +/* insensitive text widgets and the like base background color */ +@define-color insensitive_base_color #; +/* widget text/foreground color on backdrop windows */ +@define-color theme_unfocused_fg_color #; +/* text color for entries, views and content in general on backdrop windows */ +@define-color theme_unfocused_text_color #; +/* widget base background color on backdrop windows */ +@define-color theme_unfocused_bg_color #; +/* text widgets and the like base background color on backdrop windows */ +@define-color theme_unfocused_base_color #; +/* base background color of selections on backdrop windows */ +@define-color theme_unfocused_selected_bg_color #; +/* text/foreground color of selections on backdrop windows */ +@define-color theme_unfocused_selected_fg_color ; +/* insensitive color on backdrop windows */ +@define-color unfocused_insensitive_color ; +/* widgets main borders color */ +@define-color borders ; +/* widgets main borders color on backdrop windows */ +@define-color unfocused_borders ; +/* these are pretty self explicative */ +@define-color warning_color #FDD633; +@define-color error_color #F28B82; +@define-color success_color #81C995; +/* 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 #; +@define-color wm_unfocused_title ; +@define-color wm_highlight ; +@define-color wm_bg #; +@define-color wm_unfocused_bg #; +@define-color wm_button_close_icon #; +@define-color wm_button_close_hover_bg #; +@define-color wm_button_close_active_bg #c7c7c7; +/* FIXME this is really an API */ +@define-color content_view_bg #; +@define-color placeholder_text_color silver; +/* Very contrasty background for text views (@theme_text_color foreground) */ +@define-color text_view_bg #1d1d1d; +@define-color budgie_tasklist_indicator_color #; +@define-color budgie_tasklist_indicator_color_active #; +@define-color budgie_tasklist_indicator_color_active_window #999999; +@define-color budgie_tasklist_indicator_color_attention #FDD633; +@define-color STRAWBERRY_100 #FF9262; +@define-color STRAWBERRY_300 #FF793E; +@define-color STRAWBERRY_500 #F15D22; +@define-color STRAWBERRY_700 #CF3B00; +@define-color STRAWBERRY_900 #AC1800; +@define-color ORANGE_100 #FFDB91; +@define-color ORANGE_300 #FFCA40; +@define-color ORANGE_500 #FAA41A; +@define-color ORANGE_700 #DE8800; +@define-color ORANGE_900 #C26C00; +@define-color BANANA_100 #FFFFA8; +@define-color BANANA_300 #FFFA7D; +@define-color BANANA_500 #FFCE51; +@define-color BANANA_700 #D1A023; +@define-color BANANA_900 #A27100; +@define-color LIME_100 #A2F3BE; +@define-color LIME_300 #8ADBA6; +@define-color LIME_500 #73C48F; +@define-color LIME_700 #479863; +@define-color LIME_900 #1C6D38; +@define-color BLUEBERRY_100 #94A6FF; +@define-color BLUEBERRY_300 #6A7CE0; +@define-color BLUEBERRY_500 #3F51B5; +@define-color BLUEBERRY_700 #213397; +@define-color BLUEBERRY_900 #031579; +@define-color GRAPE_100 #D25DE6; +@define-color GRAPE_300 #B84ACB; +@define-color GRAPE_500 #9C27B0; +@define-color GRAPE_700 #830E97; +@define-color GRAPE_900 #6A007E; +@define-color COCOA_100 #9F9792; +@define-color COCOA_300 #7B736E; +@define-color COCOA_500 #574F4A; +@define-color COCOA_700 #463E39; +@define-color COCOA_900 #342C27; +@define-color SILVER_100 #EEE; +@define-color SILVER_300 #CCC; +@define-color SILVER_500 #AAA; +@define-color SILVER_700 #888; +@define-color SILVER_900 #666; +@define-color SLATE_100 #888; +@define-color SLATE_300 #666; +@define-color SLATE_500 #444; +@define-color SLATE_700 #222; +@define-color SLATE_900 #111; +@define-color BLACK_100 #474341; +@define-color BLACK_300 #403C3A; +@define-color BLACK_500 #393634; +@define-color BLACK_700 #33302F; +@define-color BLACK_900 #2B2928; + +/* GTK LIBADWAITA NAMED COLORS -- USE RESPONSIBLY! */ +@define-color accent_bg_color #; +@define-color accent_fg_color ; +@define-color accent_color #; +@define-color destructive_bg_color #F28B82; +@define-color destructive_fg_color ; +@define-color destructive_color #F28B82; +@define-color success_bg_color #81C995; +@define-color success_fg_color ; +@define-color success_color #81C995; +@define-color warning_bg_color #FDD633; +@define-color warning_fg_color ; +@define-color warning_color #FDD633; +@define-color error_bg_color #F28B82; +@define-color error_fg_color ; +@define-color error_color #F28B82; +@define-color window_bg_color #; +@define-color window_fg_color #; +@define-color view_bg_color #; +@define-color view_fg_color #; +@define-color headerbar_bg_color #; +@define-color headerbar_fg_color #; +@define-color headerbar_border_color ; +@define-color headerbar_backdrop_color @window_bg_color; +@define-color headerbar_shade_color ; +@define-color card_bg_color #; +@define-color card_fg_color #; +@define-color card_shade_color ; +@define-color dialog_bg_color #; +@define-color dialog_fg_color #; +@define-color popover_bg_color #; +@define-color popover_fg_color #; +@define-color thumbnail_bg_color #; +@define-color thumbnail_fg_color #; +@define-color shade_color ; +@define-color scrollbar_outline_color ; + +@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, # 0%, transparent 0%); + } + to { + background-image: radial-gradient(circle, # 100%, transparent 0%); + } +} + +* { + background-clip: padding-box; + -gtktoolbutton-icon-spacing: 0; + -gtktextview-error-underline-color: #; + -gtkscrolledwindow-scrollbar-spacing: 0; + -gtktoolitemgroup-expander-size: 11; + -gtkwidget-text-handle-width: 24; + -gtkwidget-text-handle-height: 24; + -gtkdialog-button-spacing: 6; + -gtkdialog-action-area-border: 6; + outline-style: solid; + outline-width: 2px; + outline-color: transparent; + outline-offset: -4px; + -gtk-outline-radius: 6px; + -gtk-secondary-caret-color: #; +} + +*:focus { + outline-color: alpha(currentColor, 0.1); +} + +XfdesktopIconView.view:active, +calendar.raven-calendar:selected, +.budgie-popover.budgie-menu + button.flat:not(.image-button):not(.indicator-item):checked, +box.vertical > widget > widget:selected, +calendar:selected, +row:selected, +treeview.view:selected:not(.progressbar):not(.trough), +modelbutton.flat:selected, +.menuitem.button.flat:selected { + color: #; + background-color: #; +} + +.nemo-window .view selection, +.nemo-window .view:selected, +.nautilus-window notebook .view:not(treeview) selection, +.nautilus-window notebook .view:not(treeview):selected, +.nautilus-window flowboxchild:selected .icon-item-background, +flowbox flowboxchild:selected, +.background.csd .view:selected { + color: #; + background-color: rgba(242, 205, 205, 0.2); +} + +.nemo-window .nemo-window-pane widget.entry:selected, +window.background.csd evview.view.content-view:selected, +window.background.csd evview.view.content-view:selected:backdrop, +spinbutton.vertical selection, +spinbutton:not(.vertical) selection, +entry selection, +label selection, +textview text selection:focus, +textview text selection, +widget.view:selected, +.view:selected { + color: ; + background-color: #; +} + +.linked:not(.vertical) > button, +.linked:not(.vertical) > spinbutton.vertical, +.linked:not(.vertical) > spinbutton:not(.vertical), +.linked:not(.vertical) > entry { + border-radius: 0; +} + +.linked:not(.vertical) > button:first-child, +.linked:not(.vertical) > spinbutton.vertical:first-child, +.linked:not(.vertical) > spinbutton:first-child:not(.vertical), +.linked:not(.vertical) > entry:first-child { + border-top-left-radius: 6px; + border-bottom-left-radius: 6px; +} + +.linked:not(.vertical) > button:last-child, +.linked:not(.vertical) > spinbutton.vertical:last-child, +.linked:not(.vertical) > spinbutton:last-child:not(.vertical), +.linked:not(.vertical) > entry:last-child { + border-top-right-radius: 6px; + border-bottom-right-radius: 6px; +} + +.linked:not(.vertical) > button:only-child, +.linked:not(.vertical) > spinbutton.vertical:only-child, +.linked:not(.vertical) > spinbutton:only-child:not(.vertical), +.linked:not(.vertical) > entry:only-child { + border-radius: 6px; +} + +.linked.vertical > button, +.linked.vertical > spinbutton.vertical, +.linked.vertical > spinbutton:not(.vertical), +.linked.vertical > entry { + border-radius: 0; +} + +.linked.vertical > button:first-child, +.linked.vertical > spinbutton.vertical:first-child, +.linked.vertical > spinbutton:first-child:not(.vertical), +.linked.vertical > entry:first-child { + border-top-left-radius: 6px; + border-top-right-radius: 6px; +} + +.linked.vertical > button:last-child, +.linked.vertical > spinbutton.vertical:last-child, +.linked.vertical > spinbutton:last-child:not(.vertical), +.linked.vertical > entry:last-child { + border-bottom-left-radius: 6px; + border-bottom-right-radius: 6px; +} + +.linked.vertical > button:only-child, +.linked.vertical > spinbutton.vertical:only-child, +.linked.vertical > spinbutton:only-child:not(.vertical), +.linked.vertical > entry:only-child { + border-radius: 6px; +} + +/*************** + * Base States * + ***************/ +.background { + background-color: #; + color: #; +} + +.background.csd { + border-radius: 0 0 12px 12px; +} + +.background.tiled .background.maximized, +.background.solid-csd { + border-radius: 0; +} + +*:disabled { + -gtk-icon-effect: dim; +} + +.gtkstyle-fallback { + background-color: #; + color: #; +} + +.gtkstyle-fallback:hover { + background-color: #; + color: #; +} + +.gtkstyle-fallback:active { + background-color: #; + color: #; +} + +.gtkstyle-fallback:disabled { + background-color: #; + color: ; +} + +.gtkstyle-fallback:selected { + background-color: #; + color: ; +} + +.view { + background-color: #; + color: #; +} + +.view:hover { + box-shadow: inset 0 0 0 9999px alpha(currentColor, 0.08); +} + +.view:disabled { + color: ; +} + +.view:selected:hover { + box-shadow: none; +} + +window.background.csd > stack.view { + border-radius: 0 0 12px 12px; +} + +textview text { + background-color: #; +} + +textview border { + background-color: #; + color: ; +} + +iconview:hover, +iconview:selected { + border-radius: 6px; +} + +.rubberband, +rubberband, +XfdesktopIconView.view .rubberband, +.content-view rubberband, +.content-view XfdesktopIconView.view .rubberband, +XfdesktopIconView.view .content-view .rubberband, +.content-view treeview.view rubberband, +.content-view treeview.view XfdesktopIconView.view .rubberband, +XfdesktopIconView.view .content-view treeview.view .rubberband, +treeview.view .content-view rubberband, +treeview.view .content-view XfdesktopIconView.view .rubberband, +XfdesktopIconView.view treeview.view .content-view .rubberband, +.content-view treeview.view flowbox rubberband, +.content-view treeview.view flowbox XfdesktopIconView.view .rubberband, +XfdesktopIconView.view .content-view treeview.view flowbox .rubberband, +treeview.view flowbox .content-view rubberband, +treeview.view flowbox .content-view XfdesktopIconView.view .rubberband, +XfdesktopIconView.view treeview.view flowbox .content-view .rubberband, +.content-view flowbox treeview.view rubberband, +.content-view flowbox treeview.view XfdesktopIconView.view .rubberband, +XfdesktopIconView.view .content-view flowbox treeview.view .rubberband, +flowbox treeview.view .content-view rubberband, +flowbox treeview.view .content-view XfdesktopIconView.view .rubberband, +XfdesktopIconView.view flowbox treeview.view .content-view .rubberband, +.content-view treeview.view flowbox treeview.view rubberband, +.content-view + treeview.view + flowbox + treeview.view + XfdesktopIconView.view + .rubberband, +XfdesktopIconView.view + .content-view + treeview.view + flowbox + treeview.view + .rubberband, +treeview.view flowbox treeview.view .content-view rubberband, +treeview.view + flowbox + treeview.view + .content-view + XfdesktopIconView.view + .rubberband, +XfdesktopIconView.view + treeview.view + flowbox + treeview.view + .content-view + .rubberband, +.content-view flowbox treeview.view flowbox rubberband, +.content-view flowbox treeview.view flowbox XfdesktopIconView.view .rubberband, +XfdesktopIconView.view .content-view flowbox treeview.view flowbox .rubberband, +flowbox treeview.view flowbox .content-view rubberband, +flowbox treeview.view flowbox .content-view XfdesktopIconView.view .rubberband, +XfdesktopIconView.view flowbox treeview.view flowbox .content-view .rubberband, +.content-view .rubberband, +treeview.view rubberband, +treeview.view XfdesktopIconView.view .rubberband, +XfdesktopIconView.view treeview.view .rubberband, +treeview.view .content-view rubberband, +treeview.view .content-view XfdesktopIconView.view .rubberband, +XfdesktopIconView.view treeview.view .content-view .rubberband, +.content-view treeview.view rubberband, +.content-view treeview.view XfdesktopIconView.view .rubberband, +XfdesktopIconView.view .content-view treeview.view .rubberband, +.content-view treeview.view rubberband, +.content-view treeview.view XfdesktopIconView.view .rubberband, +XfdesktopIconView.view .content-view treeview.view .rubberband, +treeview.view .content-view rubberband, +treeview.view .content-view XfdesktopIconView.view .rubberband, +XfdesktopIconView.view treeview.view .content-view .rubberband, +.content-view treeview.view flowbox rubberband, +.content-view treeview.view flowbox XfdesktopIconView.view .rubberband, +XfdesktopIconView.view .content-view treeview.view flowbox .rubberband, +treeview.view flowbox .content-view rubberband, +treeview.view flowbox .content-view XfdesktopIconView.view .rubberband, +XfdesktopIconView.view treeview.view flowbox .content-view .rubberband, +.content-view flowbox treeview.view rubberband, +.content-view flowbox treeview.view XfdesktopIconView.view .rubberband, +XfdesktopIconView.view .content-view flowbox treeview.view .rubberband, +flowbox treeview.view .content-view rubberband, +flowbox treeview.view .content-view XfdesktopIconView.view .rubberband, +XfdesktopIconView.view flowbox treeview.view .content-view .rubberband, +.content-view treeview.view flowbox treeview.view rubberband, +.content-view + treeview.view + flowbox + treeview.view + XfdesktopIconView.view + .rubberband, +XfdesktopIconView.view + .content-view + treeview.view + flowbox + treeview.view + .rubberband, +treeview.view flowbox treeview.view .content-view rubberband, +treeview.view + flowbox + treeview.view + .content-view + XfdesktopIconView.view + .rubberband, +XfdesktopIconView.view + treeview.view + flowbox + treeview.view + .content-view + .rubberband, +.content-view flowbox treeview.view flowbox rubberband, +.content-view flowbox treeview.view flowbox XfdesktopIconView.view .rubberband, +XfdesktopIconView.view .content-view flowbox treeview.view flowbox .rubberband, +flowbox treeview.view flowbox .content-view rubberband, +flowbox treeview.view flowbox .content-view XfdesktopIconView.view .rubberband, +XfdesktopIconView.view flowbox treeview.view flowbox .content-view .rubberband, +treeview.view .content-view .rubberband, +.content-view treeview.view .rubberband, +treeview.view flowbox rubberband, +treeview.view flowbox XfdesktopIconView.view .rubberband, +XfdesktopIconView.view treeview.view flowbox .rubberband, +treeview.view flowbox .content-view rubberband, +treeview.view flowbox .content-view XfdesktopIconView.view .rubberband, +XfdesktopIconView.view treeview.view flowbox .content-view .rubberband, +.content-view treeview.view flowbox rubberband, +.content-view treeview.view flowbox XfdesktopIconView.view .rubberband, +XfdesktopIconView.view .content-view treeview.view flowbox .rubberband, +.content-view treeview.view flowbox rubberband, +.content-view treeview.view flowbox XfdesktopIconView.view .rubberband, +XfdesktopIconView.view .content-view treeview.view flowbox .rubberband, +treeview.view flowbox .content-view rubberband, +treeview.view flowbox .content-view XfdesktopIconView.view .rubberband, +XfdesktopIconView.view treeview.view flowbox .content-view .rubberband, +treeview.view .content-view flowbox rubberband, +treeview.view .content-view flowbox XfdesktopIconView.view .rubberband, +XfdesktopIconView.view treeview.view .content-view flowbox .rubberband, +.content-view treeview.view flowbox rubberband, +.content-view treeview.view flowbox XfdesktopIconView.view .rubberband, +XfdesktopIconView.view .content-view treeview.view flowbox .rubberband, +treeview.view flowbox .content-view rubberband, +treeview.view flowbox .content-view XfdesktopIconView.view .rubberband, +XfdesktopIconView.view treeview.view flowbox .content-view .rubberband, +treeview.view .content-view flowbox treeview.view rubberband, +treeview.view + .content-view + flowbox + treeview.view + XfdesktopIconView.view + .rubberband, +XfdesktopIconView.view + treeview.view + .content-view + flowbox + treeview.view + .rubberband, +.content-view treeview.view flowbox treeview.view rubberband, +.content-view + treeview.view + flowbox + treeview.view + XfdesktopIconView.view + .rubberband, +XfdesktopIconView.view + .content-view + treeview.view + flowbox + treeview.view + .rubberband, +treeview.view flowbox treeview.view .content-view rubberband, +treeview.view + flowbox + treeview.view + .content-view + XfdesktopIconView.view + .rubberband, +XfdesktopIconView.view + treeview.view + flowbox + treeview.view + .content-view + .rubberband, +.content-view treeview.view flowbox treeview.view rubberband, +.content-view + treeview.view + flowbox + treeview.view + XfdesktopIconView.view + .rubberband, +XfdesktopIconView.view + .content-view + treeview.view + flowbox + treeview.view + .rubberband, +treeview.view flowbox treeview.view .content-view rubberband, +treeview.view + flowbox + treeview.view + .content-view + XfdesktopIconView.view + .rubberband, +XfdesktopIconView.view + treeview.view + flowbox + treeview.view + .content-view + .rubberband, +.content-view flowbox treeview.view flowbox rubberband, +.content-view flowbox treeview.view flowbox XfdesktopIconView.view .rubberband, +XfdesktopIconView.view .content-view flowbox treeview.view flowbox .rubberband, +flowbox treeview.view flowbox .content-view rubberband, +flowbox treeview.view flowbox .content-view XfdesktopIconView.view .rubberband, +XfdesktopIconView.view flowbox treeview.view flowbox .content-view .rubberband, +treeview.view flowbox .content-view .rubberband, +.content-view treeview.view flowbox .rubberband, +flowbox treeview.view rubberband, +flowbox treeview.view XfdesktopIconView.view .rubberband, +XfdesktopIconView.view flowbox treeview.view .rubberband, +flowbox treeview.view .content-view rubberband, +flowbox treeview.view .content-view XfdesktopIconView.view .rubberband, +XfdesktopIconView.view flowbox treeview.view .content-view .rubberband, +.content-view flowbox treeview.view rubberband, +.content-view flowbox treeview.view XfdesktopIconView.view .rubberband, +XfdesktopIconView.view .content-view flowbox treeview.view .rubberband, +flowbox .content-view treeview.view rubberband, +flowbox .content-view treeview.view XfdesktopIconView.view .rubberband, +XfdesktopIconView.view flowbox .content-view treeview.view .rubberband, +.content-view flowbox treeview.view rubberband, +.content-view flowbox treeview.view XfdesktopIconView.view .rubberband, +XfdesktopIconView.view .content-view flowbox treeview.view .rubberband, +flowbox treeview.view .content-view rubberband, +flowbox treeview.view .content-view XfdesktopIconView.view .rubberband, +XfdesktopIconView.view flowbox treeview.view .content-view .rubberband, +flowbox .content-view treeview.view flowbox rubberband, +flowbox .content-view treeview.view flowbox XfdesktopIconView.view .rubberband, +XfdesktopIconView.view flowbox .content-view treeview.view flowbox .rubberband, +.content-view flowbox treeview.view flowbox rubberband, +.content-view flowbox treeview.view flowbox XfdesktopIconView.view .rubberband, +XfdesktopIconView.view .content-view flowbox treeview.view flowbox .rubberband, +flowbox treeview.view flowbox .content-view rubberband, +flowbox treeview.view flowbox .content-view XfdesktopIconView.view .rubberband, +XfdesktopIconView.view flowbox treeview.view flowbox .content-view .rubberband, +.content-view flowbox treeview.view rubberband, +.content-view flowbox treeview.view XfdesktopIconView.view .rubberband, +XfdesktopIconView.view .content-view flowbox treeview.view .rubberband, +flowbox treeview.view .content-view rubberband, +flowbox treeview.view .content-view XfdesktopIconView.view .rubberband, +XfdesktopIconView.view flowbox treeview.view .content-view .rubberband, +.content-view treeview.view flowbox treeview.view rubberband, +.content-view + treeview.view + flowbox + treeview.view + XfdesktopIconView.view + .rubberband, +XfdesktopIconView.view + .content-view + treeview.view + flowbox + treeview.view + .rubberband, +treeview.view flowbox treeview.view .content-view rubberband, +treeview.view + flowbox + treeview.view + .content-view + XfdesktopIconView.view + .rubberband, +XfdesktopIconView.view + treeview.view + flowbox + treeview.view + .content-view + .rubberband, +.content-view flowbox treeview.view flowbox rubberband, +.content-view flowbox treeview.view flowbox XfdesktopIconView.view .rubberband, +XfdesktopIconView.view .content-view flowbox treeview.view flowbox .rubberband, +flowbox treeview.view flowbox .content-view rubberband, +flowbox treeview.view flowbox .content-view XfdesktopIconView.view .rubberband, +XfdesktopIconView.view flowbox treeview.view flowbox .content-view .rubberband, +flowbox treeview.view .content-view .rubberband, +.content-view flowbox treeview.view .rubberband, +flowbox rubberband, +flowbox XfdesktopIconView.view .rubberband, +XfdesktopIconView.view flowbox .rubberband, +flowbox .content-view rubberband, +flowbox .content-view XfdesktopIconView.view .rubberband, +XfdesktopIconView.view flowbox .content-view .rubberband, +.content-view flowbox rubberband, +.content-view flowbox XfdesktopIconView.view .rubberband, +XfdesktopIconView.view .content-view flowbox .rubberband, +flowbox .content-view treeview.view rubberband, +flowbox .content-view treeview.view XfdesktopIconView.view .rubberband, +XfdesktopIconView.view flowbox .content-view treeview.view .rubberband, +.content-view treeview.view flowbox rubberband, +.content-view treeview.view flowbox XfdesktopIconView.view .rubberband, +XfdesktopIconView.view .content-view treeview.view flowbox .rubberband, +flowbox treeview.view .content-view rubberband, +flowbox treeview.view .content-view XfdesktopIconView.view .rubberband, +XfdesktopIconView.view flowbox treeview.view .content-view .rubberband, +treeview.view .content-view flowbox rubberband, +treeview.view .content-view flowbox XfdesktopIconView.view .rubberband, +XfdesktopIconView.view treeview.view .content-view flowbox .rubberband, +.content-view treeview.view flowbox rubberband, +.content-view treeview.view flowbox XfdesktopIconView.view .rubberband, +XfdesktopIconView.view .content-view treeview.view flowbox .rubberband, +treeview.view flowbox .content-view rubberband, +treeview.view flowbox .content-view XfdesktopIconView.view .rubberband, +XfdesktopIconView.view treeview.view flowbox .content-view .rubberband, +.content-view flowbox treeview.view rubberband, +.content-view flowbox treeview.view XfdesktopIconView.view .rubberband, +XfdesktopIconView.view .content-view flowbox treeview.view .rubberband, +flowbox treeview.view .content-view rubberband, +flowbox treeview.view .content-view XfdesktopIconView.view .rubberband, +XfdesktopIconView.view flowbox treeview.view .content-view .rubberband, +.content-view treeview.view flowbox treeview.view rubberband, +.content-view + treeview.view + flowbox + treeview.view + XfdesktopIconView.view + .rubberband, +XfdesktopIconView.view + .content-view + treeview.view + flowbox + treeview.view + .rubberband, +treeview.view flowbox treeview.view .content-view rubberband, +treeview.view + flowbox + treeview.view + .content-view + XfdesktopIconView.view + .rubberband, +XfdesktopIconView.view + treeview.view + flowbox + treeview.view + .content-view + .rubberband, +.content-view flowbox treeview.view flowbox rubberband, +.content-view flowbox treeview.view flowbox XfdesktopIconView.view .rubberband, +XfdesktopIconView.view .content-view flowbox treeview.view flowbox .rubberband, +flowbox treeview.view flowbox .content-view rubberband, +flowbox treeview.view flowbox .content-view XfdesktopIconView.view .rubberband, +XfdesktopIconView.view flowbox treeview.view flowbox .content-view .rubberband, +flowbox .content-view .rubberband, +.content-view flowbox .rubberband, +flowbox treeview.view rubberband, +flowbox treeview.view XfdesktopIconView.view .rubberband, +XfdesktopIconView.view flowbox treeview.view .rubberband, +flowbox treeview.view .content-view rubberband, +flowbox treeview.view .content-view XfdesktopIconView.view .rubberband, +XfdesktopIconView.view flowbox treeview.view .content-view .rubberband, +.content-view flowbox treeview.view rubberband, +.content-view flowbox treeview.view XfdesktopIconView.view .rubberband, +XfdesktopIconView.view .content-view flowbox treeview.view .rubberband, +flowbox .content-view treeview.view rubberband, +flowbox .content-view treeview.view XfdesktopIconView.view .rubberband, +XfdesktopIconView.view flowbox .content-view treeview.view .rubberband, +.content-view flowbox treeview.view rubberband, +.content-view flowbox treeview.view XfdesktopIconView.view .rubberband, +XfdesktopIconView.view .content-view flowbox treeview.view .rubberband, +flowbox treeview.view .content-view rubberband, +flowbox treeview.view .content-view XfdesktopIconView.view .rubberband, +XfdesktopIconView.view flowbox treeview.view .content-view .rubberband, +flowbox .content-view treeview.view flowbox rubberband, +flowbox .content-view treeview.view flowbox XfdesktopIconView.view .rubberband, +XfdesktopIconView.view flowbox .content-view treeview.view flowbox .rubberband, +.content-view flowbox treeview.view flowbox rubberband, +.content-view flowbox treeview.view flowbox XfdesktopIconView.view .rubberband, +XfdesktopIconView.view .content-view flowbox treeview.view flowbox .rubberband, +flowbox treeview.view flowbox .content-view rubberband, +flowbox treeview.view flowbox .content-view XfdesktopIconView.view .rubberband, +XfdesktopIconView.view flowbox treeview.view flowbox .content-view .rubberband, +.content-view flowbox treeview.view rubberband, +.content-view flowbox treeview.view XfdesktopIconView.view .rubberband, +XfdesktopIconView.view .content-view flowbox treeview.view .rubberband, +flowbox treeview.view .content-view rubberband, +flowbox treeview.view .content-view XfdesktopIconView.view .rubberband, +XfdesktopIconView.view flowbox treeview.view .content-view .rubberband, +.content-view treeview.view flowbox treeview.view rubberband, +.content-view + treeview.view + flowbox + treeview.view + XfdesktopIconView.view + .rubberband, +XfdesktopIconView.view + .content-view + treeview.view + flowbox + treeview.view + .rubberband, +treeview.view flowbox treeview.view .content-view rubberband, +treeview.view + flowbox + treeview.view + .content-view + XfdesktopIconView.view + .rubberband, +XfdesktopIconView.view + treeview.view + flowbox + treeview.view + .content-view + .rubberband, +.content-view flowbox treeview.view flowbox rubberband, +.content-view flowbox treeview.view flowbox XfdesktopIconView.view .rubberband, +XfdesktopIconView.view .content-view flowbox treeview.view flowbox .rubberband, +flowbox treeview.view flowbox .content-view rubberband, +flowbox treeview.view flowbox .content-view XfdesktopIconView.view .rubberband, +XfdesktopIconView.view flowbox treeview.view flowbox .content-view .rubberband, +flowbox treeview.view .content-view .rubberband, +.content-view flowbox treeview.view .rubberband, +treeview.view flowbox rubberband, +treeview.view flowbox XfdesktopIconView.view .rubberband, +XfdesktopIconView.view treeview.view flowbox .rubberband, +treeview.view flowbox .content-view rubberband, +treeview.view flowbox .content-view XfdesktopIconView.view .rubberband, +XfdesktopIconView.view treeview.view flowbox .content-view .rubberband, +.content-view treeview.view flowbox rubberband, +.content-view treeview.view flowbox XfdesktopIconView.view .rubberband, +XfdesktopIconView.view .content-view treeview.view flowbox .rubberband, +.content-view treeview.view flowbox rubberband, +.content-view treeview.view flowbox XfdesktopIconView.view .rubberband, +XfdesktopIconView.view .content-view treeview.view flowbox .rubberband, +treeview.view flowbox .content-view rubberband, +treeview.view flowbox .content-view XfdesktopIconView.view .rubberband, +XfdesktopIconView.view treeview.view flowbox .content-view .rubberband, +treeview.view .content-view flowbox rubberband, +treeview.view .content-view flowbox XfdesktopIconView.view .rubberband, +XfdesktopIconView.view treeview.view .content-view flowbox .rubberband, +.content-view treeview.view flowbox rubberband, +.content-view treeview.view flowbox XfdesktopIconView.view .rubberband, +XfdesktopIconView.view .content-view treeview.view flowbox .rubberband, +treeview.view flowbox .content-view rubberband, +treeview.view flowbox .content-view XfdesktopIconView.view .rubberband, +XfdesktopIconView.view treeview.view flowbox .content-view .rubberband, +treeview.view .content-view flowbox treeview.view rubberband, +treeview.view + .content-view + flowbox + treeview.view + XfdesktopIconView.view + .rubberband, +XfdesktopIconView.view + treeview.view + .content-view + flowbox + treeview.view + .rubberband, +.content-view treeview.view flowbox treeview.view rubberband, +.content-view + treeview.view + flowbox + treeview.view + XfdesktopIconView.view + .rubberband, +XfdesktopIconView.view + .content-view + treeview.view + flowbox + treeview.view + .rubberband, +treeview.view flowbox treeview.view .content-view rubberband, +treeview.view + flowbox + treeview.view + .content-view + XfdesktopIconView.view + .rubberband, +XfdesktopIconView.view + treeview.view + flowbox + treeview.view + .content-view + .rubberband, +.content-view treeview.view flowbox treeview.view rubberband, +.content-view + treeview.view + flowbox + treeview.view + XfdesktopIconView.view + .rubberband, +XfdesktopIconView.view + .content-view + treeview.view + flowbox + treeview.view + .rubberband, +treeview.view flowbox treeview.view .content-view rubberband, +treeview.view + flowbox + treeview.view + .content-view + XfdesktopIconView.view + .rubberband, +XfdesktopIconView.view + treeview.view + flowbox + treeview.view + .content-view + .rubberband, +.content-view flowbox treeview.view flowbox rubberband, +.content-view flowbox treeview.view flowbox XfdesktopIconView.view .rubberband, +XfdesktopIconView.view .content-view flowbox treeview.view flowbox .rubberband, +flowbox treeview.view flowbox .content-view rubberband, +flowbox treeview.view flowbox .content-view XfdesktopIconView.view .rubberband, +XfdesktopIconView.view flowbox treeview.view flowbox .content-view .rubberband, +treeview.view flowbox .content-view .rubberband, +.content-view treeview.view flowbox .rubberband, +treeview.view flowbox rubberband, +treeview.view flowbox XfdesktopIconView.view .rubberband, +XfdesktopIconView.view treeview.view flowbox .rubberband, +treeview.view flowbox .content-view rubberband, +treeview.view flowbox .content-view XfdesktopIconView.view .rubberband, +XfdesktopIconView.view treeview.view flowbox .content-view .rubberband, +.content-view treeview.view flowbox rubberband, +.content-view treeview.view flowbox XfdesktopIconView.view .rubberband, +XfdesktopIconView.view .content-view treeview.view flowbox .rubberband, +.content-view treeview.view flowbox rubberband, +.content-view treeview.view flowbox XfdesktopIconView.view .rubberband, +XfdesktopIconView.view .content-view treeview.view flowbox .rubberband, +treeview.view flowbox .content-view rubberband, +treeview.view flowbox .content-view XfdesktopIconView.view .rubberband, +XfdesktopIconView.view treeview.view flowbox .content-view .rubberband, +treeview.view .content-view flowbox rubberband, +treeview.view .content-view flowbox XfdesktopIconView.view .rubberband, +XfdesktopIconView.view treeview.view .content-view flowbox .rubberband, +.content-view treeview.view flowbox rubberband, +.content-view treeview.view flowbox XfdesktopIconView.view .rubberband, +XfdesktopIconView.view .content-view treeview.view flowbox .rubberband, +treeview.view flowbox .content-view rubberband, +treeview.view flowbox .content-view XfdesktopIconView.view .rubberband, +XfdesktopIconView.view treeview.view flowbox .content-view .rubberband, +treeview.view .content-view flowbox treeview.view rubberband, +treeview.view + .content-view + flowbox + treeview.view + XfdesktopIconView.view + .rubberband, +XfdesktopIconView.view + treeview.view + .content-view + flowbox + treeview.view + .rubberband, +.content-view treeview.view flowbox treeview.view rubberband, +.content-view + treeview.view + flowbox + treeview.view + XfdesktopIconView.view + .rubberband, +XfdesktopIconView.view + .content-view + treeview.view + flowbox + treeview.view + .rubberband, +treeview.view flowbox treeview.view .content-view rubberband, +treeview.view + flowbox + treeview.view + .content-view + XfdesktopIconView.view + .rubberband, +XfdesktopIconView.view + treeview.view + flowbox + treeview.view + .content-view + .rubberband, +.content-view treeview.view flowbox treeview.view rubberband, +.content-view + treeview.view + flowbox + treeview.view + XfdesktopIconView.view + .rubberband, +XfdesktopIconView.view + .content-view + treeview.view + flowbox + treeview.view + .rubberband, +treeview.view flowbox treeview.view .content-view rubberband, +treeview.view + flowbox + treeview.view + .content-view + XfdesktopIconView.view + .rubberband, +XfdesktopIconView.view + treeview.view + flowbox + treeview.view + .content-view + .rubberband, +.content-view flowbox treeview.view flowbox rubberband, +.content-view flowbox treeview.view flowbox XfdesktopIconView.view .rubberband, +XfdesktopIconView.view .content-view flowbox treeview.view flowbox .rubberband, +flowbox treeview.view flowbox .content-view rubberband, +flowbox treeview.view flowbox .content-view XfdesktopIconView.view .rubberband, +XfdesktopIconView.view flowbox treeview.view flowbox .content-view .rubberband, +treeview.view flowbox .content-view .rubberband, +.content-view treeview.view flowbox .rubberband, +flowbox treeview.view rubberband, +flowbox treeview.view XfdesktopIconView.view .rubberband, +XfdesktopIconView.view flowbox treeview.view .rubberband, +flowbox treeview.view .content-view rubberband, +flowbox treeview.view .content-view XfdesktopIconView.view .rubberband, +XfdesktopIconView.view flowbox treeview.view .content-view .rubberband, +.content-view flowbox treeview.view rubberband, +.content-view flowbox treeview.view XfdesktopIconView.view .rubberband, +XfdesktopIconView.view .content-view flowbox treeview.view .rubberband, +flowbox .content-view treeview.view rubberband, +flowbox .content-view treeview.view XfdesktopIconView.view .rubberband, +XfdesktopIconView.view flowbox .content-view treeview.view .rubberband, +.content-view flowbox treeview.view rubberband, +.content-view flowbox treeview.view XfdesktopIconView.view .rubberband, +XfdesktopIconView.view .content-view flowbox treeview.view .rubberband, +flowbox treeview.view .content-view rubberband, +flowbox treeview.view .content-view XfdesktopIconView.view .rubberband, +XfdesktopIconView.view flowbox treeview.view .content-view .rubberband, +flowbox .content-view treeview.view flowbox rubberband, +flowbox .content-view treeview.view flowbox XfdesktopIconView.view .rubberband, +XfdesktopIconView.view flowbox .content-view treeview.view flowbox .rubberband, +.content-view flowbox treeview.view flowbox rubberband, +.content-view flowbox treeview.view flowbox XfdesktopIconView.view .rubberband, +XfdesktopIconView.view .content-view flowbox treeview.view flowbox .rubberband, +flowbox treeview.view flowbox .content-view rubberband, +flowbox treeview.view flowbox .content-view XfdesktopIconView.view .rubberband, +XfdesktopIconView.view flowbox treeview.view flowbox .content-view .rubberband, +.content-view flowbox treeview.view rubberband, +.content-view flowbox treeview.view XfdesktopIconView.view .rubberband, +XfdesktopIconView.view .content-view flowbox treeview.view .rubberband, +flowbox treeview.view .content-view rubberband, +flowbox treeview.view .content-view XfdesktopIconView.view .rubberband, +XfdesktopIconView.view flowbox treeview.view .content-view .rubberband, +.content-view treeview.view flowbox treeview.view rubberband, +.content-view + treeview.view + flowbox + treeview.view + XfdesktopIconView.view + .rubberband, +XfdesktopIconView.view + .content-view + treeview.view + flowbox + treeview.view + .rubberband, +treeview.view flowbox treeview.view .content-view rubberband, +treeview.view + flowbox + treeview.view + .content-view + XfdesktopIconView.view + .rubberband, +XfdesktopIconView.view + treeview.view + flowbox + treeview.view + .content-view + .rubberband, +.content-view flowbox treeview.view flowbox rubberband, +.content-view flowbox treeview.view flowbox XfdesktopIconView.view .rubberband, +XfdesktopIconView.view .content-view flowbox treeview.view flowbox .rubberband, +flowbox treeview.view flowbox .content-view rubberband, +flowbox treeview.view flowbox .content-view XfdesktopIconView.view .rubberband, +XfdesktopIconView.view flowbox treeview.view flowbox .content-view .rubberband, +flowbox treeview.view .content-view .rubberband, +.content-view flowbox treeview.view .rubberband { + border: 1px solid #; + background-color: rgba(242, 205, 205, 0.3); +} + +flowbox flowboxchild { + padding: 4px; + border-radius: 6px; +} + +.content-view .tile:selected { + background-color: transparent; +} + +label { + caret-color: currentColor; +} + +label.separator { + color: ; +} + +label:disabled { + color: ; +} + +headerbar label:disabled, +tab label:disabled, +button label:disabled { + color: inherit; +} + +label.osd { + border-radius: 6px; + background-color: rgba(30, 30, 46, 0.9); + color: #; +} + +.dim-label { + color: ; +} + +assistant .sidebar { + padding: 4px 0; +} + +assistant .sidebar label { + min-height: 36px; + padding: 0 12px; + color: ; + font-weight: 500; +} + +assistant .sidebar label.highlight { + color: #; +} + +/********************* + * Spinner Animation * + *********************/ +@keyframes spin { + to { + -gtk-icon-transform: rotate(1turn); + } +} + +spinner { + background: none; + opacity: 0; + -gtk-icon-source: -gtk-icontheme('process-working-symbolic'); +} + +spinner:checked { + opacity: 1; + animation: spin 1s linear infinite; +} + +spinner:checked:disabled { + opacity: 0.5; +} + +/**************** + * Text Entries * + ****************/ +spinbutton.vertical, +spinbutton:not(.vertical), +entry { + min-height: 36px; + padding: 0 8px; + border-radius: 6px; + caret-color: currentColor; + transition: all 75ms cubic-bezier(0, 0, 0.2, 1), + box-shadow 300ms cubic-bezier(0, 0, 0.2, 1); + box-shadow: inset 0 0 0 2px transparent; + background-color: ; + color: #; +} + +spinbutton.vertical:focus, +spinbutton:focus:not(.vertical), +entry:focus { + background-color: ; + box-shadow: inset 0 0 0 2px #; +} + +spinbutton.vertical:drop(active), +spinbutton:drop(active):not(.vertical), +entry:drop(active) { + background-color: alpha(currentColor, 0.08); + box-shadow: inset 0 0 0 2px alpha(currentColor, 0.08); +} + +spinbutton.vertical:disabled, +spinbutton:disabled:not(.vertical), +entry:disabled { + box-shadow: inset 0 0 0 2px transparent; + background-color: ; + color: ; +} + +spinbutton.flat.vertical, +spinbutton.flat:not(.vertical), +entry.flat { + min-height: 0; + padding: 2px; + border-radius: 0; + background-color: transparent; +} + +spinbutton.vertical image, +spinbutton:not(.vertical) image, +entry image { + color: ; +} + +spinbutton.vertical image:hover, +spinbutton:not(.vertical) image:hover, +spinbutton.vertical image:active, +spinbutton:not(.vertical) image:active, +entry image:hover, +entry image:active { + color: #; +} + +spinbutton.vertical image:disabled, +spinbutton:not(.vertical) image:disabled, +entry image:disabled { + color: ; +} + +spinbutton.vertical image.left, +spinbutton:not(.vertical) image.left, +entry image.left { + margin-left: 2px; + margin-right: 6px; +} + +spinbutton.vertical image.right, +spinbutton:not(.vertical) image.right, +entry image.right { + margin-left: 6px; + margin-right: 2px; +} + +spinbutton.vertical undershoot.left, +spinbutton:not(.vertical) undershoot.left, +entry undershoot.left { + background-color: transparent; + background-image: linear-gradient( + to top, + transparent 50%, + 50% + ); + padding-left: 1px; + background-size: 1px 12px; + background-repeat: repeat-y; + background-origin: content-box; + background-position: left top; + margin: 0 4px; + margin: 4px 0; +} + +spinbutton.vertical undershoot.right, +spinbutton:not(.vertical) undershoot.right, +entry undershoot.right { + background-color: transparent; + background-image: linear-gradient( + to top, + transparent 50%, + 50% + ); + padding-right: 1px; + background-size: 1px 12px; + background-repeat: repeat-y; + background-origin: content-box; + background-position: right top; + margin: 0 4px; + margin: 4px 0; +} + +spinbutton.error.vertical, +spinbutton.error:not(.vertical), +entry.error { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1), + box-shadow 300ms cubic-bezier(0, 0, 0.2, 1); + box-shadow: inset 0 0 0 2px transparent; + background-color: ; + color: #; +} + +spinbutton.error.vertical:focus, +spinbutton.error:focus:not(.vertical), +entry.error:focus { + background-color: ; + box-shadow: inset 0 0 0 2px #; +} + +spinbutton.error.vertical:disabled, +spinbutton.error:disabled:not(.vertical), +entry.error:disabled { + box-shadow: inset 0 0 0 2px transparent; + background-color: ; + color: ; +} + +spinbutton.warning.vertical, +spinbutton.warning:not(.vertical), +entry.warning { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1), + box-shadow 300ms cubic-bezier(0, 0, 0.2, 1); + box-shadow: inset 0 0 0 2px transparent; + background-color: ; + color: #; +} + +spinbutton.warning.vertical:focus, +spinbutton.warning:focus:not(.vertical), +entry.warning:focus { + background-color: ; + box-shadow: inset 0 0 0 2px #; +} + +spinbutton.warning.vertical:disabled, +spinbutton.warning:disabled:not(.vertical), +entry.warning:disabled { + box-shadow: inset 0 0 0 2px transparent; + background-color: ; + color: ; +} + +spinbutton.vertical progress, +spinbutton:not(.vertical) progress, +entry progress { + margin: 2px -8px; + border-bottom: 2px solid #; + background-color: transparent; +} + +.gedit-search-slider .linked:not(.vertical) > entry { + border-radius: 6px; + transition: all 75ms cubic-bezier(0, 0, 0.2, 1), + box-shadow 300ms cubic-bezier(0, 0, 0.2, 1); + border-image: none; + box-shadow: inset 0 0 0 2px transparent; + background-color: #; + color: #; +} + +.gedit-search-slider .linked:not(.vertical) > entry:focus { + border-image: none; + box-shadow: inset 0 0 0 2px #; +} + +.gedit-search-slider .linked:not(.vertical) > entry:drop(active) { + box-shadow: inset 0 0 0 2px alpha(currentColor, 0.08); +} + +.gedit-search-slider .linked:not(.vertical) > entry:disabled { + box-shadow: inset 0 0 0 2px transparent; + background-color: #; + color: ; +} + +.gedit-search-slider .linked:not(.vertical) > entry.error { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1), + box-shadow 300ms cubic-bezier(0, 0, 0.2, 1); + border-image: none; + box-shadow: inset 0 0 0 2px transparent; + background-color: #; + color: ; +} + +.gedit-search-slider .linked:not(.vertical) > entry.error:focus { + border-image: none; + box-shadow: inset 0 0 0 2px #; +} + +.gedit-search-slider .linked:not(.vertical) > entry.error:disabled { + box-shadow: inset 0 0 0 2px transparent; + background-color: #; + color: ; +} + +.gedit-search-slider .linked:not(.vertical) > entry.error image { + color: ; +} + +.gedit-search-slider .linked:not(.vertical) > entry.error image:hover, +.gedit-search-slider .linked:not(.vertical) > entry.error image:active { + color: ; +} + +.gedit-search-slider .linked:not(.vertical) > entry.error image:disabled { + color: ; +} + +.gedit-search-slider .linked:not(.vertical) > entry.warning { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1), + box-shadow 300ms cubic-bezier(0, 0, 0.2, 1); + border-image: none; + box-shadow: inset 0 0 0 2px transparent; + background-color: #; + color: ; +} + +.gedit-search-slider .linked:not(.vertical) > entry.warning:focus { + border-image: none; + box-shadow: inset 0 0 0 2px #; +} + +.gedit-search-slider .linked:not(.vertical) > entry.warning:disabled { + box-shadow: inset 0 0 0 2px transparent; + background-color: #; + color: ; +} + +.gedit-search-slider .linked:not(.vertical) > entry.warning image { + color: ; +} + +.gedit-search-slider .linked:not(.vertical) > entry.warning image:hover, +.gedit-search-slider .linked:not(.vertical) > entry.warning image:active { + color: ; +} + +.gedit-search-slider .linked:not(.vertical) > entry.warning image:disabled { + color: ; +} + +treeview entry.flat, +treeview entry { + background-color: #; +} + +treeview entry.flat, +treeview entry.flat:focus, +treeview entry, +treeview entry:focus { + border-image: none; + box-shadow: none; +} + +.entry-tag, +.photos-entry-tag, +.documents-entry-tag { + margin: 2px; + border-radius: 9999px; + box-shadow: none; + background-color: ; + color: #; +} + +.entry-tag:hover, +.photos-entry-tag:hover, +.documents-entry-tag:hover { + background-image: image(alpha(currentColor, 0.08)); +} + +:dir(ltr) .entry-tag, +:dir(ltr) .photos-entry-tag, +:dir(ltr) .documents-entry-tag { + margin-left: 4px; + margin-right: 0; + padding-left: 12px; + padding-right: 8px; +} + +:dir(rtl) .entry-tag, +:dir(rtl) .photos-entry-tag, +:dir(rtl) .documents-entry-tag { + margin-left: 0; + margin-right: 4px; + padding-left: 8px; + padding-right: 12px; +} + +.entry-tag.button, +.button.photos-entry-tag, +.button.documents-entry-tag { + box-shadow: none; + background-color: transparent; +} + +.entry-tag.button:not(:hover):not(:active), +.button.photos-entry-tag:not(:hover):not(:active), +.button.documents-entry-tag:not(:hover):not(:active) { + color: ; +} + +/*********** + * Buttons * + ***********/ +@keyframes needs-attention { + from { + background-image: -gtk-gradient( + radial, + center center, + 0, + center center, + 0.001, + to(#), + to(transparent) + ); + } + to { + background-image: -gtk-gradient( + radial, + center center, + 0, + center center, + 0.5, + to(#), + to(transparent) + ); + } +} + +.xfce4-panel.background button, +.raven-mpris button.image-button, +.mate-panel-menu-bar button, +infobar.warning > revealer > box button, +infobar.warning:backdrop > revealer > box button { + color: ; +} + +.xfce4-panel.background button:focus, +.raven-mpris button.image-button:focus, +.mate-panel-menu-bar button:focus, +infobar.warning > revealer > box button:focus, +.xfce4-panel.background button:hover, +.raven-mpris button.image-button:hover, +.mate-panel-menu-bar button:hover, +infobar.warning > revealer > box button:hover, +.xfce4-panel.background button:active, +.raven-mpris button.image-button:active, +.mate-panel-menu-bar button:active, +infobar.warning > revealer > box button:active, +.xfce4-panel.background button:checked, +.raven-mpris button.image-button:checked, +.mate-panel-menu-bar button:checked, +infobar.warning > revealer > box button:checked { + color: #; +} + +.xfce4-panel.background button:disabled, +.raven-mpris button.image-button:disabled, +.mate-panel-menu-bar button:disabled, +infobar.warning > revealer > box button:disabled { + color: ; +} + +.xfce4-panel.background button:checked:disabled, +.raven-mpris button.image-button:checked:disabled, +.mate-panel-menu-bar button:checked:disabled, +infobar.warning > revealer > box button:checked:disabled { + color: ; +} + +actionbar + > revealer + > box + .linked + > button:not(.suggested-action):not(.destructive-action), +button { + transition: all 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); + outline: none; + box-shadow: inset 0 0 0 9999px transparent; + background-color: ; + background-image: radial-gradient(circle, transparent 10%, transparent 0%); + background-repeat: no-repeat; + background-position: center; + background-size: 1000% 1000%; + color: #; +} + +actionbar + > revealer + > box + .linked + > button:focus:not(.suggested-action):not(.destructive-action), +button:focus { + box-shadow: inset 0 0 0 2px alpha(currentColor, 0.08); +} + +actionbar + > revealer + > box + .linked + > button:hover:not(.suggested-action):not(.destructive-action), +button:hover { + box-shadow: inset 0 0 0 9999px alpha(currentColor, 0.08); +} + +actionbar + > revealer + > box + .linked + > button:active:not(.suggested-action):not(.destructive-action), +button:active { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1), background-size 0ms, + background-image 0ms, border 0ms; + animation: ripple 225ms cubic-bezier(0, 0, 0.2, 1) forwards; + box-shadow: inset 0 0 0 9999px alpha(currentColor, 0.08); + background-image: radial-gradient( + circle, + alpha(currentColor, 0.12) 10%, + transparent 0% + ); + background-size: 0% 0%; +} + +actionbar + > revealer + > box + .linked + > button:disabled:not(.suggested-action):not(.destructive-action), +button:disabled { + box-shadow: none; + background-color: ; + color: ; +} + +actionbar + > revealer + > box + .linked + > button:checked:not(.suggested-action):not(.destructive-action), +button:checked { + box-shadow: none; + background-color: #; + color: ; +} + +actionbar + > revealer + > box + .linked + > button:checked:hover:not(.suggested-action):not(.destructive-action), +button:checked:hover { + box-shadow: inset 0 0 0 9999px transparent; +} + +actionbar + > revealer + > box + .linked + > button:checked:disabled:not(.suggested-action):not(.destructive-action), +button:checked:disabled { + box-shadow: inset 0 0 0 9999px alpha(currentColor, 0.1); + background-color: ; + color: ; +} + +.raven .expander-button, +window.background + > box.vertical + > toolbar.primary-toolbar + > toolitem + > box.horizontal:not(.linked) + > button.toggle, +window.background + > box.vertical + > toolbar.primary-toolbar + > toolitem + > .linked + > button:not(.toggle):not(.raised):not(.flat), +window.background + > box.vertical + > toolbar.primary-toolbar + > toolitem + button.flat.scale, +window.background + > box.vertical + > toolbar.primary-toolbar + > toolitem + > .linked + > button.image-button.raised, +window.csd + > box.vertical + > box.vertical + > toolbar.horizontal + > toolitem + > .linked + > button, +window.csd + > box.vertical + > box.vertical + > toolbar.horizontal + > toolitem + > box.horizontal + > button, +window.solid-csd + > box.vertical + > box.vertical + > toolbar.horizontal + > toolitem + > .linked + > button, +window.solid-csd + > box.vertical + > box.vertical + > toolbar.horizontal + > toolitem + > box.horizontal + > button, +.nautilus-window headerbar revealer > button, +button.titlebutton:not(.suggested-action):not(.destructive-action), +filechooser #pathbarbox > stack > box > button, +check, +radio, +button.close, +button.circular, +.inline-toolbar button:not(.text-button), +button.image-button { + border-radius: 9999px; +} + +.raven .expander-button label, +window.background + > box.vertical + > toolbar.primary-toolbar + > toolitem + > box.horizontal:not(.linked) + > button.toggle + label, +window.background + > box.vertical + > toolbar.primary-toolbar + > toolitem + > .linked + > button:not(.toggle):not(.raised):not(.flat) + label, +window.background + > box.vertical + > toolbar.primary-toolbar + > toolitem + button.flat.scale + label, +window.background + > box.vertical + > toolbar.primary-toolbar + > toolitem + > .linked + > button.image-button.raised + label, +window.csd + > box.vertical + > box.vertical + > toolbar.horizontal + > toolitem + > .linked + > button + label, +window.csd + > box.vertical + > box.vertical + > toolbar.horizontal + > toolitem + > box.horizontal + > button + label, +window.solid-csd + > box.vertical + > box.vertical + > toolbar.horizontal + > toolitem + > .linked + > button + label, +window.solid-csd + > box.vertical + > box.vertical + > toolbar.horizontal + > toolitem + > box.horizontal + > button + label, +.nautilus-window headerbar revealer > button label, +button.titlebutton:not(.suggested-action):not(.destructive-action) label, +filechooser #pathbarbox > stack > box > button label, +check label, +radio label, +button.close label, +button.circular label, +.inline-toolbar button:not(.text-button) label, +button.image-button label { + padding: 0; +} + +.pluma-window paned.horizontal box.vertical box.horizontal button.flat, +.gedit-search-slider .linked > button, +.gedit-document-panel row button.flat, +.nautilus-window .floating-bar button, +placessidebar.sidebar row button.sidebar-button, +notebook > header tab button.flat, +spinbutton.vertical button, +spinbutton:not(.vertical) button { + min-height: 24px; + min-width: 24px; + padding: 0; + border-radius: 9999px; +} + +button { + min-height: 24px; + min-width: 16px; + padding: 6px 10px; + border-radius: 6px; + font-weight: 500; +} + +button:drop(active) { + box-shadow: inset 0 0 0 9999px alpha(currentColor, 0.08); +} + +.budgie-session-dialog .linked.horizontal > button, +.budgie-polkit-dialog .linked.horizontal > button, +.budgie-run-dialog .linked.horizontal > button, +.drop-shadow button, +.budgie-panel button, +.budgie-popover row button, +.budgie-settings-window buttonbox.inline-toolbar button, +#mate-menu button, +#MatePanelPopupWindow button, +popover.messagepopover .popover-action-area button, +tabbox > tab button, +.gedit-search-slider .linked > button, +placessidebar.sidebar row button.sidebar-button, +calendar.button, +.budgie-popover.budgie-menu + button.flat:not(.image-button):not(.indicator-item) + button.circular, +.budgie-popover + scrolledwindow.sidebar:not(.categories) + list + > row.activatable + button.circular, +treeview.view header button button.circular, +row.activatable button.circular, +check, +radio, +scrollbar button, +notebook > header > tabs > arrow, +spinbutton.vertical button, +spinbutton:not(.vertical) button, +modelbutton.flat, +.menuitem.button.flat, +.nemo-window .toolbar button, +#buttonbox_frame button, +.xfce4-panel.background button, +.raven stackswitcher.linked > button, +.lock-dialog button, +.mate-panel-menu-bar button, +window.background.csd.geary-main-window + stack#conversation_viewer + .geary-expanded + > .geary-composer-embed + headerbar + button, +window#GearyMainWindow.background.csd + stack#conversation_viewer + .geary-expanded + > .geary-composer-embed + headerbar + button, +layouttabbar button, +filechooser #pathbarbox > stack > box > button, +messagedialog.csd .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, +.caja-pathbar button, +.path-bar.linked:not(.vertical) > button, +.nemo-window .primary-toolbar button:not(.text-button), +headerbar button:not(.suggested-action):not(.destructive-action), +toolbar button, +combobox > .linked:not(.vertical) > button:not(:only-child), +button.flat { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1), + border-image 225ms 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); + outline: none; + box-shadow: inset 0 0 0 9999px transparent; + background-color: transparent; + background-image: radial-gradient(circle, transparent 10%, transparent 0%); + background-repeat: no-repeat; + background-position: center; + background-size: 1000% 1000%; + color: ; +} + +.budgie-session-dialog .linked.horizontal > button:focus, +.budgie-polkit-dialog .linked.horizontal > button:focus, +.budgie-run-dialog .linked.horizontal > button:focus, +.drop-shadow button:focus, +.budgie-panel button:focus, +.budgie-popover row button:focus, +.budgie-settings-window buttonbox.inline-toolbar button:focus, +#mate-menu button:focus, +#MatePanelPopupWindow button:focus, +popover.messagepopover .popover-action-area button:focus, +tabbox > tab button:focus, +.gedit-search-slider .linked > button:focus, +placessidebar.sidebar row button.sidebar-button:focus, +calendar.button:focus, +.budgie-popover.budgie-menu + button.flat:not(.image-button):not(.indicator-item) + button.circular:focus, +.budgie-popover + scrolledwindow.sidebar:not(.categories) + list + > row.activatable + button.circular:focus, +treeview.view header button button.circular:focus, +row.activatable button.circular:focus, +check:focus, +radio:focus, +scrollbar button:focus, +notebook > header > tabs > arrow:focus, +spinbutton.vertical button:focus, +spinbutton:not(.vertical) button:focus, +modelbutton.flat:focus, +.menuitem.button.flat:focus, +.nemo-window .toolbar button:focus, +#buttonbox_frame button:focus, +.xfce4-panel.background button:focus, +.raven stackswitcher.linked > button:focus, +.lock-dialog button:focus, +.mate-panel-menu-bar button:focus, +window.background.csd.geary-main-window + stack#conversation_viewer + .geary-expanded + > .geary-composer-embed + headerbar + button:focus, +window#GearyMainWindow.background.csd + stack#conversation_viewer + .geary-expanded + > .geary-composer-embed + headerbar + button:focus, +layouttabbar button:focus, +filechooser #pathbarbox > stack > box > button:focus, +messagedialog.csd .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, +.caja-pathbar button:focus, +.path-bar.linked:not(.vertical) > button:focus, +.nemo-window .primary-toolbar button:focus:not(.text-button), +headerbar button:focus:not(.suggested-action):not(.destructive-action), +toolbar button:focus, +combobox > .linked:not(.vertical) > button:focus:not(:only-child), +button.flat:focus { + box-shadow: inset 0 0 0 2px alpha(currentColor, 0.08); + color: #; +} + +.budgie-session-dialog .linked.horizontal > button:hover, +.budgie-polkit-dialog .linked.horizontal > button:hover, +.budgie-run-dialog .linked.horizontal > button:hover, +.drop-shadow button:hover, +.budgie-panel button:hover, +.budgie-popover row button:hover, +.budgie-settings-window buttonbox.inline-toolbar button:hover, +#mate-menu button:hover, +#MatePanelPopupWindow button:hover, +popover.messagepopover .popover-action-area button:hover, +tabbox > tab button:hover, +.gedit-search-slider .linked > button:hover, +placessidebar.sidebar row button.sidebar-button:hover, +calendar.button:hover, +.budgie-popover.budgie-menu + button.flat:not(.image-button):not(.indicator-item) + button.circular:hover, +.budgie-popover + scrolledwindow.sidebar:not(.categories) + list + > row.activatable + button.circular:hover, +treeview.view header button button.circular:hover, +row.activatable button.circular:hover, +check:hover, +radio:hover, +scrollbar button:hover, +notebook > header > tabs > arrow:hover, +spinbutton.vertical button:hover, +spinbutton:not(.vertical) button:hover, +modelbutton.flat:hover, +.menuitem.button.flat:hover, +.nemo-window .toolbar button:hover, +#buttonbox_frame button:hover, +.xfce4-panel.background button:hover, +.raven stackswitcher.linked > button:hover, +.lock-dialog button:hover, +.mate-panel-menu-bar button:hover, +window.background.csd.geary-main-window + stack#conversation_viewer + .geary-expanded + > .geary-composer-embed + headerbar + button:hover, +window#GearyMainWindow.background.csd + stack#conversation_viewer + .geary-expanded + > .geary-composer-embed + headerbar + button:hover, +layouttabbar button:hover, +filechooser #pathbarbox > stack > box > button:hover, +messagedialog.csd .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, +.caja-pathbar button:hover, +.path-bar.linked:not(.vertical) > button:hover, +.nemo-window .primary-toolbar button:hover:not(.text-button), +headerbar button:hover:not(.suggested-action):not(.destructive-action), +toolbar button:hover, +combobox > .linked:not(.vertical) > button:hover:not(:only-child), +button.flat:hover { + box-shadow: inset 0 0 0 9999px alpha(currentColor, 0.08); + color: #; +} + +.budgie-session-dialog .linked.horizontal > button:active, +.budgie-polkit-dialog .linked.horizontal > button:active, +.budgie-run-dialog .linked.horizontal > button:active, +.drop-shadow button:active, +.budgie-panel button:active, +.budgie-popover row button:active, +.budgie-settings-window buttonbox.inline-toolbar button:active, +#mate-menu button:active, +#MatePanelPopupWindow button:active, +popover.messagepopover .popover-action-area button:active, +tabbox > tab button:active, +.gedit-search-slider .linked > button:active, +placessidebar.sidebar row button.sidebar-button:active, +calendar.button:active, +.budgie-popover.budgie-menu + button.flat:not(.image-button):not(.indicator-item) + button.circular:active, +.budgie-popover + scrolledwindow.sidebar:not(.categories) + list + > row.activatable + button.circular:active, +treeview.view header button button.circular:active, +row.activatable button.circular:active, +check:active, +radio:active, +scrollbar button:active, +notebook > header > tabs > arrow:active, +spinbutton.vertical button:active, +spinbutton:not(.vertical) button:active, +modelbutton.flat:active, +.menuitem.button.flat:active, +.nemo-window .toolbar button:active, +#buttonbox_frame button:active, +.xfce4-panel.background button:active, +.raven stackswitcher.linked > button:active, +.lock-dialog button:active, +.mate-panel-menu-bar button:active, +window.background.csd.geary-main-window + stack#conversation_viewer + .geary-expanded + > .geary-composer-embed + headerbar + button:active, +window#GearyMainWindow.background.csd + stack#conversation_viewer + .geary-expanded + > .geary-composer-embed + headerbar + button:active, +layouttabbar button:active, +filechooser #pathbarbox > stack > box > button:active, +messagedialog.csd .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, +.caja-pathbar button:active, +.path-bar.linked:not(.vertical) > button:active, +.nemo-window .primary-toolbar button:active:not(.text-button), +headerbar button:active:not(.suggested-action):not(.destructive-action), +toolbar button:active, +combobox > .linked:not(.vertical) > button:active:not(:only-child), +button.flat:active { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1), + border-image 225ms cubic-bezier(0, 0, 0.2, 1), background-size 0ms, + background-image 0ms; + animation: ripple 225ms cubic-bezier(0, 0, 0.2, 1) forwards; + box-shadow: inset 0 0 0 9999px alpha(currentColor, 0.08); + background-image: radial-gradient( + circle, + alpha(currentColor, 0.12) 10%, + transparent 0% + ); + background-size: 0% 0%; + color: #; +} + +.budgie-session-dialog .linked.horizontal > button:disabled, +.budgie-polkit-dialog .linked.horizontal > button:disabled, +.budgie-run-dialog .linked.horizontal > button:disabled, +.drop-shadow button:disabled, +.budgie-panel button:disabled, +.budgie-popover row button:disabled, +.budgie-settings-window buttonbox.inline-toolbar button:disabled, +#mate-menu button:disabled, +#MatePanelPopupWindow button:disabled, +popover.messagepopover .popover-action-area button:disabled, +tabbox > tab button:disabled, +.gedit-search-slider .linked > button:disabled, +placessidebar.sidebar row button.sidebar-button:disabled, +calendar.button:disabled, +.budgie-popover.budgie-menu + button.flat:not(.image-button):not(.indicator-item) + button.circular:disabled, +.budgie-popover + scrolledwindow.sidebar:not(.categories) + list + > row.activatable + button.circular:disabled, +treeview.view header button button.circular:disabled, +row.activatable button.circular:disabled, +check:disabled, +radio:disabled, +scrollbar button:disabled, +notebook > header > tabs > arrow:disabled, +spinbutton.vertical button:disabled, +spinbutton:not(.vertical) button:disabled, +modelbutton.flat:disabled, +.menuitem.button.flat:disabled, +.nemo-window .toolbar button:disabled, +#buttonbox_frame button:disabled, +.xfce4-panel.background button:disabled, +.raven stackswitcher.linked > button:disabled, +.lock-dialog button:disabled, +.mate-panel-menu-bar button:disabled, +window.background.csd.geary-main-window + stack#conversation_viewer + .geary-expanded + > .geary-composer-embed + headerbar + button:disabled, +window#GearyMainWindow.background.csd + stack#conversation_viewer + .geary-expanded + > .geary-composer-embed + headerbar + button:disabled, +layouttabbar button:disabled, +filechooser #pathbarbox > stack > box > button:disabled, +messagedialog.csd .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, +.caja-pathbar button:disabled, +.path-bar.linked:not(.vertical) > button:disabled, +.nemo-window .primary-toolbar button:disabled:not(.text-button), +headerbar button:disabled:not(.suggested-action):not(.destructive-action), +toolbar button:disabled, +combobox > .linked:not(.vertical) > button:disabled:not(:only-child), +button.flat:disabled { + box-shadow: none; + background-color: transparent; + color: ; +} + +.nemo-window .toolbar button:checked, +#buttonbox_frame button:checked, +.xfce4-panel.background button:checked, +.raven stackswitcher.linked > button:checked, +.lock-dialog button:checked, +.mate-panel-menu-bar button:checked, +window.background.csd.geary-main-window + stack#conversation_viewer + .geary-expanded + > .geary-composer-embed + headerbar + button:checked, +window#GearyMainWindow.background.csd + stack#conversation_viewer + .geary-expanded + > .geary-composer-embed + headerbar + button:checked, +layouttabbar button:checked, +filechooser #pathbarbox > stack > box > button:checked, +messagedialog.csd .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, +.caja-pathbar button:checked, +.path-bar.linked:not(.vertical) > button:checked, +.nemo-window .primary-toolbar button:checked:not(.text-button), +headerbar button:checked:not(.suggested-action):not(.destructive-action), +toolbar button:checked, +combobox > .linked:not(.vertical) > button:checked:not(:only-child), +button.flat:checked, +button.flat:checked:hover { + background-color: alpha(currentColor, 0.1); + color: #; +} + +.nemo-window .toolbar button:checked:disabled, +#buttonbox_frame button:checked:disabled, +.xfce4-panel.background button:checked:disabled, +.raven stackswitcher.linked > button:checked:disabled, +.lock-dialog button:checked:disabled, +.mate-panel-menu-bar button:checked:disabled, +window.background.csd.geary-main-window + stack#conversation_viewer + .geary-expanded + > .geary-composer-embed + headerbar + button:checked:disabled, +window#GearyMainWindow.background.csd + stack#conversation_viewer + .geary-expanded + > .geary-composer-embed + headerbar + button:checked:disabled, +layouttabbar button:checked:disabled, +filechooser #pathbarbox > stack > box > button:checked:disabled, +messagedialog.csd .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, +.caja-pathbar button:checked:disabled, +.path-bar.linked:not(.vertical) > button:checked:disabled, +.nemo-window .primary-toolbar button:checked:disabled:not(.text-button), +headerbar + button:checked:disabled:not(.suggested-action):not(.destructive-action), +toolbar button:checked:disabled, +combobox > .linked:not(.vertical) > button:checked:disabled:not(:only-child), +button.flat:checked:disabled { + background-color: alpha(currentColor, 0.1); + color: ; +} + +button.text-button { + min-width: 32px; + padding-left: 16px; + padding-right: 16px; +} + +button.text-button.flat { + min-width: 48px; + padding-left: 8px; + padding-right: 8px; +} + +button.image-button { + min-width: 24px; + padding: 6px; +} + +button.image-button.destructive-action { + border-radius: 6px; +} + +button.text-button.image-button { + min-width: 24px; + padding: 6px; + border-radius: 6px; +} + +button.text-button.image-button label:first-child { + margin-left: 10px; +} + +button.text-button.image-button label:last-child { + margin-right: 10px; +} + +button.text-button.image-button.flat label:first-child { + margin-left: 6px; +} + +button.text-button.image-button.flat label:last-child { + margin-right: 6px; +} + +button.text-button.image-button image:not(:only-child) { + margin: 0 4px; +} + +.linked:not(.vertical) > button.flat:not(:only-child), +.linked.vertical > button.flat:not(:only-child) { + border-radius: 6px; +} + +.linked:not(.vertical) + > button.flat.image-button:not(:only-child):not(.text-button), +.linked.vertical > button.flat.image-button:not(:only-child):not(.text-button) { + border-radius: 9999px; +} + +.linked:not(.vertical) > button.flat:focus, +.linked.vertical > button.flat:focus { + box-shadow: inset 0 0 0 9999px alpha(currentColor, 0.08); +} + +button.osd { + min-width: 24px; + min-width: 24px; + padding: 12px 16px; + background-color: #; + color: ; +} + +button.osd:hover { + background-color: rgba(147, 153, 178, 0.9844); + color: ; +} + +button.osd:active { + background-color: rgba(147, 153, 178, 0.7844); + color: ; +} + +button.osd.image-button, +button.osd.circular { + padding: 12px; +} + +button.osd.image-button > image, +button.osd.circular > image { + padding: 0; +} + +button.osd:disabled { + opacity: 0; +} + +button.suggested-action { + background-color: #; + color: ; + box-shadow: none; +} + +button.suggested-action:disabled { + box-shadow: none; + background-color: ; + color: ; +} + +button.suggested-action:hover { + box-shadow: inset 0 0 0 9999px transparent, + 0 2px 2.4px -1px rgba(242, 205, 205, 0.2), + 0 4px 3px 0 rgba(242, 205, 205, 0.14), 0 1px 6px 0 rgba(242, 205, 205, 0.12); +} + +button.suggested-action:checked { + background-color: rgba(242, 205, 205, 0.5); +} + +button.suggested-action:checked:hover { + box-shadow: inset 0 0 0 9999px transparent, + 0 3px 3px -3px rgba(242, 205, 205, 0.3), + 0 2px 3px -1px rgba(242, 205, 205, 0.24), + 0 2px 5px 0 rgba(242, 205, 205, 0.12); +} + +button.suggested-action:focus { + box-shadow: 0 0 0 2px rgba(242, 205, 205, 0.35); +} + +button.suggested-action.flat { + background-color: transparent; + color: #; +} + +button.suggested-action.flat:disabled { + box-shadow: none; + background-color: transparent; + color: ; +} + +button.suggested-action.flat:checked { + background-color: rgba(242, 205, 205, 0.3); +} + +button.destructive-action { + background-color: #; + color: ; + box-shadow: none; +} + +button.destructive-action:disabled { + box-shadow: none; + background-color: ; + color: ; +} + +button.destructive-action:hover { + box-shadow: inset 0 0 0 9999px transparent, + 0 2px 2.4px -1px rgba(242, 139, 130, 0.2), + 0 4px 3px 0 rgba(242, 139, 130, 0.14), 0 1px 6px 0 rgba(242, 139, 130, 0.12); +} + +button.destructive-action:checked { + background-color: rgba(182, 105, 98, 0.961); +} + +button.destructive-action:checked:hover { + box-shadow: inset 0 0 0 9999px transparent, + 0 3px 3px -3px rgba(242, 139, 130, 0.3), + 0 2px 3px -1px rgba(242, 139, 130, 0.24), + 0 2px 5px 0 rgba(242, 139, 130, 0.12); +} + +button.destructive-action:focus { + box-shadow: 0 0 0 2px rgba(242, 139, 130, 0.35); +} + +button.destructive-action.flat { + background-color: transparent; + color: #; +} + +button.destructive-action.flat:disabled { + box-shadow: none; + background-color: transparent; + color: ; +} + +button.destructive-action.flat:checked { + background-color: rgba(242, 139, 130, 0.3); +} + +.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; +} + +.primary-toolbar button { + -gtk-icon-shadow: none; +} + +button.close, +button.circular { + min-width: 24px; + padding: 6px; +} + +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; +} + +modelbutton.flat, +.menuitem.button.flat { + min-height: 28px; + padding: 0 8px; + border-radius: 6px; + color: #; +} + +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: 6px; +} + +/********* + * Links * + *********/ +*:link { + color: #; +} + +*:visited { + color: #; +} + +button.link:link, +button.link:link:focus, +button.link:link:hover, +button.link:link:active { + color: #; +} + +button.link:visited, +button.link:visited:focus, +button.link:visited:hover, +button.link:visited:active { + color: #; +} + +button.link > label { + text-decoration-line: underline; +} + +/***************** + * GtkSpinButton * + *****************/ +spinbutton:not(.vertical) { + padding: 0; +} + +spinbutton:not(.vertical) entry { + min-width: 32px; + margin: 0; + border-image: none; + border-radius: 0; + box-shadow: none; + background-color: transparent; +} + +spinbutton:not(.vertical) button { + border: solid 6px transparent; +} + +spinbutton:not(.vertical) button:focus:not(:hover):not(:active):not(:disabled) { + box-shadow: inset 0 0 0 9999px transparent; + color: ; +} + +spinbutton:not(.vertical) button.up:dir(ltr), +spinbutton:not(.vertical) button.down:dir(rtl) { + margin-left: -3px; +} + +spinbutton:not(.vertical) button.up:dir(rtl), +spinbutton:not(.vertical) button.down:dir(ltr) { + margin-right: -3px; +} + +spinbutton.vertical { + padding: 0; +} + +spinbutton.vertical:disabled { + color: ; +} + +spinbutton.vertical entry { + margin: 0; + border-image: none; + border-radius: 0; + box-shadow: none; + background-color: transparent; + min-height: 36px; + min-width: 42px; + padding: 0; +} + +spinbutton.vertical button { + padding: 0; + border: solid 6px transparent; +} + +spinbutton.vertical button:focus:not(:hover):not(:active) { + box-shadow: inset 0 0 0 9999px transparent; + color: ; +} + +spinbutton.vertical button.up { + margin: 0 3px; +} + +spinbutton.vertical button.down { + margin: 0 3px; +} + +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 { + -gtk-icon-source: -gtk-icontheme('pan-down-symbolic'); + min-height: 16px; + min-width: 16px; +} + +combobox decoration { + transition: none; +} + +combobox button.combo cellview:dir(ltr) { + margin-left: -2px; +} + +combobox button.combo cellview:dir(rtl) { + margin-right: -2px; +} + +combobox.linked button:nth-child(2):dir(ltr) { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} + +combobox.linked button:nth-child(2):dir(rtl) { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} + +combobox > .linked:not(.vertical) > entry:not(:only-child) { + border-radius: 6px; +} + +combobox > .linked:not(.vertical) > entry:not(:only-child):first-child { + margin-right: -36px; + padding-right: 36px; +} + +combobox > .linked:not(.vertical) > entry:not(:only-child):last-child { + margin-left: -36px; + padding-left: 36px; +} + +combobox > .linked:not(.vertical) > button:not(:only-child) { + min-height: 16px; + min-width: 16px; + margin: 6px; + padding: 4px; + border-radius: 6px; +} + +.linked:not(.vertical) > combobox:not(:first-child) > box > button.combo { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} + +.linked:not(.vertical) > combobox:not(:last-child) > box > button.combo { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} + +.linked.vertical > combobox:not(:first-child) > box > button.combo { + border-top-left-radius: 0; + border-top-right-radius: 0; +} + +.linked.vertical > combobox:not(:last-child) > box > button.combo { + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; +} + +button.combo:only-child { + border-radius: 6px; + font-weight: normal; + transition: all 75ms cubic-bezier(0, 0, 0.2, 1), + box-shadow 300ms cubic-bezier(0, 0, 0.2, 1); + box-shadow: inset 0 0 0 2px transparent; + background-color: ; + color: #; +} + +button.combo:only-child:focus { + background-color: alpha(currentColor, 0.08); + box-shadow: inset 0 0 0 2px ; +} + +button.combo:only-child:hover { + background-color: alpha(currentColor, 0.08); + box-shadow: inset 0 0 0 2px alpha(currentColor, 0.08); +} + +button.combo:only-child:checked { + background-color: ; + box-shadow: inset 0 0 0 2px #; +} + +button.combo:only-child:disabled { + box-shadow: inset 0 0 0 2px transparent; + background-color: ; + color: ; +} + +/************ + * Toolbars * + ************/ +toolbar { + -gtkwidget-window-dragging: true; + padding: 2px; + background-color: #; +} + +.osd toolbar { + background-color: transparent; +} + +frame.documents-dropdown, +.app-notification, +toolbar.osd { + transition: box-shadow 75ms cubic-bezier(0, 0, 0.2, 1); + padding: 6px; + border-radius: 6px; + box-shadow: 0 2px 2.4px -1px , + 0 4px 3px 0 , 0 1px 6px 0 , + inset 0 1px ; + background-color: #; +} + +frame.documents-dropdown:backdrop, +.app-notification:backdrop, +toolbar.osd:backdrop { + box-shadow: 0 3px 2px -3px , + 0 2px 2px -1px , 0 1px 3px 0 , + inset 0 1px ; +} + +frame.left.documents-dropdown, +.left.app-notification, +frame.right.documents-dropdown, +.right.app-notification, +frame.top.documents-dropdown, +.top.app-notification, +frame.bottom.documents-dropdown, +.bottom.app-notification, +toolbar.osd.left, +toolbar.osd.right, +toolbar.osd.top, +toolbar.osd.bottom { + border-radius: 0; +} + +frame.bottom.documents-dropdown, +.bottom.app-notification, +toolbar.osd.bottom { + box-shadow: none; + background-color: transparent; + background-image: linear-gradient( + to bottom, + transparent, + 30%, + 50%, + + ); +} + +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: 8px 2px; +} + +.inline-toolbar { + padding: 6px; + border-style: solid; + border-width: 0 1px 1px; + border-color: ; + background-color: #; +} + +searchbar > revealer > box, +.location-bar { + padding: 6px; + border-style: solid; + border-width: 0 0 1px; + border-color: ; + background-color: #; + background-clip: border-box; +} + +searchbar > revealer > box { + margin: -6px; +} + +/*************** + * Header bars * + ***************/ +.nemo-window .primary-toolbar button:not(.text-button), +headerbar button:not(.suggested-action):not(.destructive-action) { + color: ; +} + +.nemo-window .primary-toolbar .linked:not(.vertical) > button:not(.text-button), +headerbar + .linked:not(.vertical) + > button:not(.suggested-action):not(.destructive-action) { + border-radius: 6px; +} + +.nemo-window .primary-toolbar button:focus:not(.text-button), +headerbar button:focus:not(.suggested-action):not(.destructive-action), +.nemo-window .primary-toolbar button:hover:not(.text-button), +headerbar button:hover:not(.suggested-action):not(.destructive-action), +.nemo-window .primary-toolbar button:active:not(.text-button), +headerbar button:active:not(.suggested-action):not(.destructive-action), +.nemo-window .primary-toolbar button:checked:not(.text-button), +headerbar button:checked:not(.suggested-action):not(.destructive-action) { + color: #; +} + +.nemo-window .primary-toolbar button:disabled:not(.text-button), +headerbar button:disabled:not(.suggested-action):not(.destructive-action) { + color: ; +} + +.nemo-window .primary-toolbar button:checked:disabled:not(.text-button), +headerbar + button:checked:disabled:not(.suggested-action):not(.destructive-action) { + background-color: transparent; + color: ; +} + +.nemo-window .primary-toolbar button:backdrop:not(.text-button), +headerbar button:backdrop:not(.suggested-action):not(.destructive-action) { + color: ; +} + +.nemo-window .primary-toolbar button:backdrop:focus:not(.text-button), +headerbar button:backdrop:focus:not(.suggested-action):not(.destructive-action), +.nemo-window .primary-toolbar button:backdrop:hover:not(.text-button), +headerbar button:backdrop:hover:not(.suggested-action):not(.destructive-action), +.nemo-window .primary-toolbar button:backdrop:active:not(.text-button), +headerbar + button:backdrop:active:not(.suggested-action):not(.destructive-action) { + color: ; +} + +.nemo-window .primary-toolbar button:backdrop:disabled:not(.text-button), +headerbar + button:backdrop:disabled:not(.suggested-action):not(.destructive-action) { + color: ; +} + +.nemo-window .primary-toolbar button:backdrop:checked:not(.text-button), +headerbar + button:backdrop:checked:not(.suggested-action):not(.destructive-action) { + color: ; +} + +.nemo-window + .primary-toolbar + button:backdrop:checked:disabled:not(.text-button), +headerbar + button:backdrop:checked:disabled:not(.suggested-action):not(.destructive-action) { + color: ; +} + +.nemo-window .primary-toolbar entry, +.titlebar entry { + background-color: ; + color: #; +} + +.nemo-window .primary-toolbar entry:disabled, +.titlebar entry:disabled { + background-color: ; + color: ; +} + +.nemo-window .primary-toolbar entry image, +.titlebar entry image { + color: ; +} + +.nemo-window .primary-toolbar entry image:hover, +.titlebar entry image:hover, +.nemo-window .primary-toolbar entry image:active, +.titlebar entry image:active { + color: #; +} + +.nemo-window .primary-toolbar entry image:disabled, +.titlebar entry image:disabled { + color: ; +} + +.titlebar { + transition: background-color 75ms cubic-bezier(0, 0, 0.2, 1), + color 75ms cubic-bezier(0, 0, 0.2, 1); + background-color: #; + color: #; + border-radius: 12px 12px 0 0; +} + +.titlebar:disabled { + color: ; +} + +.titlebar:backdrop { + background-color: #; + color: ; +} + +.titlebar:backdrop:disabled { + color: ; +} + +.titlebar .title { + padding: 0 12px; + font-weight: bold; +} + +.titlebar .subtitle { + padding: 0 12px; + font-size: smaller; +} + +.titlebar .subtitle, +.titlebar .dim-label { + transition: color 75ms cubic-bezier(0, 0, 0.2, 1); + color: ; +} + +.titlebar .subtitle:backdrop, +.titlebar .dim-label:backdrop { + color: ; +} + +.titlebar .titlebar { + background-color: transparent; + box-shadow: none; +} + +.titlebar headerbar + separator { + background-color: ; +} + +.titlebar .linked:not(.vertical) > entry { + border-radius: 6px; + margin-left: 3px; + margin-right: 3px; +} + +.titlebar button.suggested-action:disabled, +.titlebar button.destructive-action:disabled { + background-color: ; + color: ; +} + +.titlebar stackswitcher { + border: 2px solid #; +} + +.titlebar + stackswitcher.linked:not(.vertical) + > button.text-button:not(.suggested-action):not(.destructive-action):active { + box-shadow: inset 0 0 0 9999px ; + background-image: radial-gradient( + circle, + 10%, + transparent 0% + ); +} + +.titlebar + stackswitcher.linked:not(.vertical) + > button.text-button:not(.suggested-action):not(.destructive-action):checked { + background-color: #; + color: #; +} + +.titlebar + .path-bar + button.text-button:not(.suggested-action):not(.destructive-action) { + min-width: 0; + padding-left: 6px; + padding-right: 6px; +} + +.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: inset 0 1px ; + background-color: #; + color: ; +} + +.titlebar.selection-mode:backdrop { + color: ; +} + +.titlebar.selection-mode .subtitle:link { + color: ; +} + +.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: ; +} + +.titlebar.selection-mode + button:not(.suggested-action):not(.destructive-action):disabled { + color: ; +} + +.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: ; +} + +.titlebar.selection-mode + button:not(.suggested-action):not(.destructive-action):checked:disabled { + color: ; +} + +.titlebar.selection-mode + button:not(.suggested-action):not(.destructive-action):backdrop { + color: ; +} + +.titlebar.selection-mode + button:not(.suggested-action):not(.destructive-action):backdrop:disabled { + color: ; +} + +.titlebar.selection-mode + button:not(.suggested-action):not(.destructive-action):backdrop:checked { + color: ; +} + +.titlebar.selection-mode + button:not(.suggested-action):not(.destructive-action):backdrop:checked:disabled { + color: ; +} + +.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 ; + background-color: #; +} + +.tiled .titlebar, +.tiled-top .titlebar, +.tiled-right .titlebar, +.tiled-bottom .titlebar, +.tiled-left .titlebar, +.maximized .titlebar, +.fullscreen .titlebar { + border-radius: 0; +} + +.titlebar.default-decoration { + min-height: 24px; + padding: 10px 20px; + border-radius: 12px 12px 0 0; +} + +.tiled .titlebar.default-decoration, +.maximized .titlebar.default-decoration, +.fullscreen .titlebar.default-decoration { + box-shadow: none; + border-radius: 0; +} + +.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: none; +} + +headerbar { + min-height: 48px; + padding: 1px 20px; +} + +headerbar:not(.titlebar) { + box-shadow: none; +} + +box.vertical headerbar { + background-color: #; +} + +headerbar > box.left, +headerbar > box.right { + padding: 0; +} + +headerbar entry, +headerbar spinbutton, +headerbar button { + margin-top: 6px; + margin-bottom: 6px; +} + +headerbar button, +headerbar button.image-button { + border-radius: 6px; +} + +headerbar separator.titlebutton { + margin-top: 12px; + margin-bottom: 12px; + background-color: transparent; +} + +headerbar switch { + margin-top: 12px; + margin-bottom: 12px; +} + +headerbar spinbutton button { + margin-top: 0; + margin-bottom: 0; +} + +headerbar .entry-tag, +headerbar .photos-entry-tag, +headerbar .documents-entry-tag { + margin-top: 5px; + margin-bottom: 5px; +} + +headerbar.windowhandle + viewswitcher + button:not(.titlebutton):not(.suggested-action):not(.destructive-action) { + border-radius: 6px; + margin: 5px 2px; + min-width: 120px; + padding: 0; + background-image: none; + background-color: transparent; +} + +headerbar.windowhandle + viewswitcher + button:not(.titlebutton):not(.suggested-action):not(.destructive-action) + > stack + > box { + padding: 0 12px; +} + +headerbar.windowhandle + viewswitcher + button:not(.titlebutton):not(.suggested-action):not(.destructive-action):active { + box-shadow: inset 0 0 0 9999px ; + background-image: radial-gradient( + circle, + 10%, + transparent 0% + ); +} + +headerbar.windowhandle + viewswitcher + button:not(.titlebutton):not(.suggested-action):not(.destructive-action):checked { + background-color: #; + color: #; + font-weight: 500; +} + +headerbar.windowhandle + viewswitcher + button:not(.titlebutton):not(.suggested-action):not(.destructive-action):focus { + box-shadow: none; +} + +headerbar.windowhandle > button.popup label, +headerbar.windowhandle > button.popup image { + min-height: 0; +} + +headerbar.windowhandle viewswitchertitle > squeezer { + margin-top: 0; + margin-bottom: 0; + background: none; +} + +headerbar.windowhandle viewswitchertitle > squeezer > viewswitcher { + margin: 0 0; + background: none; +} + +headerbar.windowhandle + viewswitchertitle + > squeezer + > viewswitcher + > box.horizontal + > button.radio { + margin: 0; + padding: 0; + border-radius: 0; +} + +/************ + * Pathbars * + ************/ +.caja-pathbar button, +.path-bar.linked:not(.vertical) > button { + padding-left: 6px; + padding-right: 6px; + border-image: radial-gradient( + circle closest-corner at center calc(100% - 1px), + # 0%, + transparent 0% + ) + 0 0 0/0 0 0px; + border-radius: 6px; +} + +.caja-pathbar button:checked, +.path-bar.linked:not(.vertical) > button:checked { + border-image: radial-gradient( + circle closest-corner at center calc(100% - 1px), + # 100%, + transparent 0% + ) + 0 0 2/0 0 2px; +} + +.caja-pathbar button:checked, +.path-bar.linked:not(.vertical) > button:checked, +.path-bar.linked:not(.vertical) > button:checked:disabled { + background-color: transparent; +} + +.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: ; + border-top-color: ; + min-height: 36px; +} + +* { + -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; +} + +window.background.csd + treeview.view:not(:selected):not(:hover):not(.progressbar):not(.expander):not(.trough):not(.separator) { + background-color: transparent; +} + +treeview.view:selected:not(.progressbar):not(.trough) { + background-image: image(alpha(currentColor, 0.1)); +} + +treeview.view:hover, +treeview.view:selected { + border-radius: 0; +} + +treeview.view.separator { + min-height: 6px; + color: ; +} + +treeview.view:drop(active) { + border-style: solid none; + border-width: 9999px; + border-color: alpha(currentColor, 0.08); +} + +treeview.view.after:drop(active) { + border-top-style: none; +} + +treeview.view.before:drop(active) { + border-bottom-style: none; +} + +treeview.view.expander { + -gtk-icon-source: -gtk-icontheme('pan-down-symbolic'); + -gtk-icon-transform: rotate(-90deg); + color: ; +} + +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: #; +} + +treeview.view.expander:disabled { + color: ; +} + +treeview.view.progressbar { + border: none; + box-shadow: none; + background-color: #; + background-image: none; + border-radius: 9999px; + color: ; +} + +treeview.view.progressbar:selected:hover { + box-shadow: none; +} + +treeview.view.trough { + border: none; + box-shadow: none; + background-color: ; + background-image: none; + border-radius: 9999px; + padding: 0; + margin: 0; +} + +treeview.view.trough:selected:hover { + box-shadow: none; +} + +treeview.view header button { + padding: 2px 6px; + border: none; + border-radius: 6px; +} + +treeview.view header button:not(:focus):not(:hover):not(:active) { + color: ; +} + +treeview.view header button, +treeview.view header button:disabled { + background-color: #; +} + +treeview.view button.dnd, +treeview.view header.button.dnd { + padding: 2px 6px; + border-style: none solid solid; + border-width: 1px; + border-color: ; + border-radius: 0; + box-shadow: none; + background-color: #; + background-clip: border-box; + color: #; +} + +treeview.view acceleditor > label { + background-color: #; +} + +/********* + * Menus * + *********/ +menubar, +.menubar { + -gtkwidget-window-dragging: true; + padding: 0; + background-color: #; + color: #; +} + +menubar:backdrop, +.menubar:backdrop { + background-color: #; + color: ; +} + +.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: ; + border-radius: 6px; +} + +menubar > menuitem:hover, +.menubar > menuitem:hover { + transition: none; + background-color: alpha(currentColor, 0.1); + color: #; +} + +menubar > menuitem:disabled, +.menubar > menuitem:disabled { + color: ; +} + +menubar > menuitem label:disabled, +.menubar > menuitem label:disabled { + color: inherit; +} + +.background.popup { + background-color: transparent; +} + +menu, +.menu, +.context-menu { + margin: 6px; + padding: 6px; + background-color: #; + background-clip: border-box; + border-radius: 12px; + border: 2px solid #; +} + +.csd menu, +.csd .menu, +.csd .context-menu { + border: none; +} + +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; + color: #; + font: initial; + font-weight: 500; + text-shadow: none; + border-radius: 6px; +} + +menu menuitem:hover, +.menu menuitem:hover, +.context-menu menuitem:hover { + transition: none; + background-color: #; + color: #; + font-weight: 500; +} + +menu menuitem:hover accelerator, +.menu menuitem:hover accelerator, +.context-menu menuitem:hover accelerator { + color: #; + font-weight: 500; +} + +menu menuitem:hover:disabled accelerator, +.menu menuitem:hover:disabled accelerator, +.context-menu menuitem:hover:disabled accelerator { + color: #; + font-weight: 500; +} + +menu menuitem:disabled, +.menu menuitem:disabled, +.context-menu menuitem:disabled { + color: ; +} + +menu menuitem accelerator, +.menu menuitem accelerator, +.context-menu menuitem accelerator { + color: ; +} + +menu menuitem:disabled accelerator, +.menu menuitem:disabled accelerator, +.context-menu menuitem:disabled accelerator { + color: ; +} + +menu menuitem arrow, +.menu menuitem arrow, +.context-menu menuitem arrow { + min-height: 16px; + min-width: 16px; +} + +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 menuitem label:dir(rtl), +menu menuitem label:dir(ltr), +.menu menuitem label:dir(rtl), +.menu menuitem label:dir(ltr), +.context-menu menuitem label:dir(rtl), +.context-menu menuitem label:dir(ltr) { + color: inherit; +} + +menu .view:selected, +.menu .view:selected, +.context-menu .view:selected { + background-color: #; +} + +menu > arrow, +.menu > arrow, +.context-menu > arrow { + min-height: 16px; + min-width: 16px; + padding: 4px; + background-color: #; + color: ; +} + +menu > arrow.top, +.menu > arrow.top, +.context-menu > arrow.top { + margin-top: 0; + border-radius: 6px; + -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-radius: 6px; + -gtk-icon-source: -gtk-icontheme('pan-down-symbolic'); +} + +menu > arrow:hover, +.menu > arrow:hover, +.context-menu > arrow:hover { + background-image: image(alpha(currentColor, 0.08)); + color: #; +} + +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; +} + +/************ + * Popovers * + ************/ +popover.background { + transition: box-shadow 75ms cubic-bezier(0, 0, 0.2, 1); + padding: 0; + background-color: #; + border-radius: 12px; +} + +popover.background, +.csd popover.background { + border: 2px solid #; + box-shadow: none; +} + +popover.background > stack { + margin: 0; +} + +popover.background > toolbar { + margin: 0; +} + +popover.background > list, +popover.background > .view, +popover.background > toolbar { + border-style: none; + box-shadow: none; + background-color: transparent; +} + +popover.background list, +popover.background .view:not(:selected), +popover.background toolbar { + background-color: #; +} + +popover.background.combo viewport.frame > list { + background-color: transparent; +} + +popover.background.combo viewport.frame > list > row { + padding: 6px 12px; +} + +popover.background.combo viewport.frame > list > row:first-child { + border-radius: 12px 12px 0 0; +} + +popover.background.combo viewport.frame > list > row:last-child { + border-radius: 0 0 12px 12px; +} + +popover.background .linked > button:not(.radio) { + border-radius: 6px; +} + +popover.background .linked > button:not(.radio):first-child { + border-radius: 6px; +} + +popover.background .linked > button:not(.radio):last-child { + border-radius: 6px; +} + +popover.background .linked > button:not(.radio):only-child { + border-radius: 6px; +} + +popover.background.menu button, +popover.background button.model { + min-height: 32px; + padding: 0 8px; + border-radius: 6px; +} + +popover.background separator { + margin: 4px 0; +} + +popover.background list separator { + margin: 0; +} + +/************* + * Notebooks * + *************/ +tabbox > tab, +notebook > header tab { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1), background-size 0ms, + background-image 0ms; + min-height: 24px; + min-width: 24px; + padding: 3px 12px; + border: none; + outline: none; + background-clip: padding-box; + color: ; + font-weight: 500; + border-radius: 6px; +} + +tabbox > tab:hover, +notebook > header tab:hover { + background-color: ; + color: #; +} + +tabbox > tab:disabled, +notebook > header tab:disabled { + color: ; +} + +tabbox > tab:checked, +notebook > header tab:checked { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1); + background-color: #; + color: #; + box-shadow: 0 1px 3px ; +} + +tabbox > tab:checked:disabled, +notebook > header tab:checked:disabled { + color: ; +} + +frame > paned > notebook > header, +notebook.frame > header { + background-color: ; +} + +notebook, +notebook.frame { + background-color: #; + border-radius: 12px; +} + +notebook.frame frame > border { + border: none; + border-radius: 6px; +} + +notebook.frame frame > list row.activatable { + border-radius: 6px; +} + +notebook > header { + border: none; + background-color: transparent; + padding: 3px; + margin: 3px; + border-radius: 9px; +} + +notebook > header.top > tabs > arrow { + border-top-style: none; +} + +notebook > header.bottom > tabs > arrow { + border-bottom-style: none; +} + +notebook > header.top > tabs > arrow, +notebook > header.bottom > tabs > arrow { + padding-left: 4px; + padding-right: 4px; +} + +notebook > header.top > tabs > arrow.down, +notebook > header.bottom > tabs > arrow.down { + margin-left: 0; + -gtk-icon-source: -gtk-icontheme('pan-start-symbolic'); +} + +notebook > header.top > tabs > arrow.up, +notebook > header.bottom > tabs > arrow.up { + margin-right: 0; + -gtk-icon-source: -gtk-icontheme('pan-end-symbolic'); +} + +notebook > header.left > tabs > arrow { + border-left-style: none; +} + +notebook > header.right > tabs > arrow { + border-right-style: none; +} + +notebook > header.left > tabs > arrow, +notebook > header.right > tabs > arrow { + padding-top: 4px; + padding-bottom: 4px; +} + +notebook > header.left > tabs > arrow.down, +notebook > header.right > tabs > arrow.down { + margin-top: 0; + -gtk-icon-source: -gtk-icontheme('pan-up-symbolic'); +} + +notebook > header.left > tabs > arrow.up, +notebook > header.right > tabs > arrow.up { + margin-bottom: 0; + -gtk-icon-source: -gtk-icontheme('pan-down-symbolic'); +} + +notebook > header > tabs > arrow { + min-height: 16px; + min-width: 16px; + border-radius: 6px; +} + +notebook > header tab > box { + transition: background-color 75ms cubic-bezier(0, 0, 0.2, 1); + margin: -6px -12px; + padding: 6px 12px; +} + +notebook > header tab > box:drop(active) { + background-color: ; + color: #; +} + +notebook > header tab button.flat:last-child { + margin-left: 6px; + margin-right: -6px; +} + +notebook > header tab button.flat:first-child { + margin-left: -6px; + margin-right: 6px; +} + +notebook > header tab button.close-button { + min-width: 24px; + min-height: 24px; +} + +notebook > header.top tabs:not(:only-child):first-child, +notebook > header.bottom tabs:not(:only-child):first-child { + margin-left: 0; +} + +notebook > header.top tabs:not(:only-child):last-child, +notebook > header.bottom tabs:not(:only-child):last-child { + margin-right: 0; +} + +notebook > header.top tabs tab.reorderable-page, +notebook > header.bottom tabs tab.reorderable-page { + border-style: solid; +} + +notebook > header.left tabs:not(:only-child):first-child, +notebook > header.right tabs:not(:only-child):first-child { + margin-top: 0; +} + +notebook > header.left tabs:not(:only-child):last-child, +notebook > header.right tabs:not(:only-child):last-child { + margin-bottom: 0; +} + +notebook > header.left tabs tab.reorderable-page, +notebook > header.right tabs tab.reorderable-page { + border-style: solid; +} + +notebook > stack:not(:only-child) { + background-color: transparent; + border-radius: 6px; +} + +/************** + * Scrollbars * + **************/ +scrollbar { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1); + background-color: #; +} + +* { + -gtkscrollbar-has-backward-stepper: false; + -gtkscrollbar-has-forward-stepper: false; +} + +scrollbar.top { + border-bottom: transparent; +} + +scrollbar.bottom { + border-bottom: transparent; +} + +scrollbar.left { + border-bottom: transparent; +} + +scrollbar.right { + border-bottom: transparent; +} + +scrollbar slider { + transition: background-color 75ms cubic-bezier(0, 0, 0.2, 1); + min-width: 4px; + min-height: 4px; + border: 2px solid transparent; + border-radius: 9999px; + background-clip: padding-box; + background-color: ; +} + +scrollbar slider:hover { + background-color: ; +} + +scrollbar slider:active { + background-color: ; +} + +scrollbar slider:disabled { + background-color: ; +} + +scrollbar.fine-tune slider { + min-width: 2px; + min-height: 2px; +} + +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: 2px; + min-height: 2px; + margin: 2px; + border: 1px solid rgba(44, 44, 44, 0.3); +} + +scrollbar.overlay-indicator:not(.dragging):not(.hovering) button { + min-width: 4px; + min-height: 4px; + margin: 2px; + border: 1px solid rgba(44, 44, 44, 0.3); + border-radius: 9999px; + background-color: transparent; + background-clip: padding-box; + -gtk-icon-source: none; +} + +scrollbar.overlay-indicator:not(.dragging):not(.hovering) button:disabled { + background-color: transparent; +} + +scrollbar.overlay-indicator.horizontal:not(.dragging):not(.hovering) slider { + min-width: 24px; +} + +scrollbar.overlay-indicator.horizontal:not(.dragging):not(.hovering) button { + min-width: 8px; +} + +scrollbar.overlay-indicator.vertical:not(.dragging):not(.hovering) slider { + min-height: 24px; +} + +scrollbar.overlay-indicator.vertical:not(.dragging):not(.hovering) button { + min-height: 8px; +} + +scrollbar.overlay-indicator.dragging, +scrollbar.overlay-indicator.hovering { + background-color: transparent; +} + +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, +scrollbar.vertical button.down:hover, +scrollbar.vertical button.up, +scrollbar.vertical button.up:hover, +scrollbar.horizontal button.down, +scrollbar.horizontal button.down:hover, +scrollbar.horizontal button.up, +scrollbar.horizontal button.up:hover { + background-color: transparent; + color: transparent; +} + +/********** + * Switch * + **********/ +switch { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1); + margin: 6px 0; + padding: 0; + border: 2px solid ; + border-radius: 9999px; + background-color: transparent; + background-clip: border-box; + font-size: 0; +} + +switch:checked { + background-color: #; + border-color: #; +} + +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: 16px; + min-height: 16px; + margin: 2px; + border-radius: 9999px; + outline: none; + box-shadow: none; + background-color: ; + border: none; +} + +switch:focus slider, +switch:hover slider, +switch:focus:hover slider { + box-shadow: 0 0 0 10px ; +} + +switch:checked slider { + background-color: #; + color: #; +} + +/************************* + * Check and Radio items * + *************************/ +.view.content-view.check:not(list), +.content-view .tile check:not(list) { + min-height: 40px; + min-width: 40px; + margin: 0; + padding: 0; + box-shadow: none; + background-color: transparent; + background-image: none; +} + +.view.content-view.check:not(list), +.content-view .tile check:not(list) { + -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 .tile check:not(list):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; +} + +check:checked, +check:indeterminate, +radio:checked, +radio:indeterminate { + color: #; +} + +check:checked:disabled, +check:indeterminate:disabled, +radio:checked:disabled, +radio:indeterminate:disabled { + color: ; +} + +check:not(:hover):focus, +radio:not(:hover):focus { + box-shadow: inset 0 0 0 9999px transparent; +} + +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; + box-shadow: none; + background-image: none; +} + +popover modelbutton.flat check:not(:checked):not(:indeterminate):not(:disabled), +popover + modelbutton.flat + radio:not(:checked):not(:indeterminate):not(:disabled) { + color: ; +} + +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:not(:checked):not(:indeterminate):not(:disabled), +menu menuitem radio:not(:checked):not(:indeterminate):not(:disabled) { + color: ; +} + +menu menuitem check:not(:checked):not(:indeterminate):not(:disabled):hover, +menu menuitem radio:not(:checked):not(:indeterminate):not(:disabled):hover { + color: inherit; +} + +menu menuitem check, +menu menuitem check:hover, +menu menuitem check:disabled, +menu menuitem radio, +menu menuitem radio:hover, +menu menuitem radio:disabled { + box-shadow: none; + color: inherit; +} + +check { + -gtk-icon-source: -gtk-recolor( + url('assets/scalable/checkbox-unchecked-symbolic.svg') + ); +} + +check:checked { + -gtk-icon-source: -gtk-recolor( + url('assets/scalable/checkbox-checked-symbolic.svg') + ); +} + +check:indeterminate { + -gtk-icon-source: -gtk-recolor( + url('assets/scalable/checkbox-mixed-symbolic.svg') + ); +} + +radio { + -gtk-icon-source: -gtk-recolor( + url('assets/scalable/radio-unchecked-symbolic.svg') + ); +} + +radio:checked { + -gtk-icon-source: -gtk-recolor( + url('assets/scalable/radio-checked-symbolic.svg') + ); +} + +radio:indeterminate { + -gtk-icon-source: -gtk-recolor( + url('assets/scalable/radio-mixed-symbolic.svg') + ); +} + +#MozillaGtkWidget > widget > checkbutton > check, +menu menuitem check { + min-height: 16px; + min-width: 16px; + border-radius: 6px; + -gtk-icon-source: -gtk-recolor( + url('assets/scalable/small-checkbox-unchecked-symbolic.svg') + ); +} + +#MozillaGtkWidget > widget > checkbutton > check:checked, +menu menuitem check:checked { + -gtk-icon-source: -gtk-recolor( + url('assets/scalable/small-checkbox-checked-symbolic.svg') + ); +} + +#MozillaGtkWidget > widget > checkbutton > check:indeterminate, +menu menuitem check:indeterminate { + -gtk-icon-source: -gtk-recolor( + url('assets/scalable/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('assets/scalable/small-radio-unchecked-symbolic.svg') + ); +} + +#MozillaGtkWidget > widget > radiobutton > radio:checked, +menu menuitem radio:checked { + -gtk-icon-source: -gtk-recolor( + url('assets/scalable/small-radio-checked-symbolic.svg') + ); +} + +#MozillaGtkWidget > widget > radiobutton > radio:indeterminate, +menu menuitem radio:indeterminate { + -gtk-icon-source: -gtk-recolor( + url('assets/scalable/small-radio-mixed-symbolic.svg') + ); +} + +check:not(:checked):active { + -gtk-icon-transform: rotate(90deg); +} + +check:not(:checked):indeterminate:active, +radio:not(:checked):indeterminate:active { + -gtk-icon-transform: scaleX(-1); +} + +check:not(:checked), +radio:not(:checked) { + transition: all 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), -gtk-icon-transform 0; +} + +check:not(:checked):active, +radio:not(:checked):active { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1), background-size 0, + background-image 0, -gtk-icon-transform 0; +} + +menu menuitem check:not(:checked), +menu menuitem radio:not(:checked) { + transition: none; +} + +treeview.view check, +treeview.view radio { + padding: 0; + color: ; +} + +treeview.view check:hover, +treeview.view check:active, +treeview.view radio:hover, +treeview.view radio:active { + color: #; +} + +treeview.view check:disabled, +treeview.view radio:disabled { + color: ; +} + +treeview.view check:checked, +treeview.view check:indeterminate, +treeview.view radio:checked, +treeview.view radio:indeterminate { + color: #; +} + +treeview.view check:checked:disabled, +treeview.view check:indeterminate:disabled, +treeview.view radio:checked:disabled, +treeview.view radio:indeterminate:disabled { + color: ; +} + +treeview.view check:hover, +treeview.view check:selected, +treeview.view radio:hover, +treeview.view radio:selected { + box-shadow: none; + background-color: transparent; +} + +treeview.view radio:checked { + -gtk-icon-source: -gtk-recolor( + url('assets/scalable/radio-checked-symbolic.svg') + ); + border-image: none; +} + +/************ + * GtkScale * + ************/ +scale { + min-height: 2px; + min-width: 2px; +} + +scale.horizontal { + padding: 17px 12px; +} + +scale.vertical { + padding: 12px 17px; +} + +scale slider { + min-height: 18px; + min-width: 18px; + margin: -8px; +} + +scale.fine-tune.horizontal { + min-height: 4px; + padding-top: 16px; + padding-bottom: 16px; +} + +scale.fine-tune.vertical { + min-width: 4px; + padding-left: 16px; + padding-right: 16px; +} + +scale.fine-tune slider { + margin: -7px; +} + +scale trough { + transition: background-color 75ms cubic-bezier(0, 0, 0.2, 1); + outline: none; + background-color: ; +} + +scale trough:disabled { + background-color: ; +} + +scale highlight { + transition: background-image 75ms cubic-bezier(0, 0, 0.2, 1); + background-image: image(#); +} + +scale highlight:disabled { + background-color: #; + background-image: image(); +} + +scale fill { + transition: background-color 75ms cubic-bezier(0, 0, 0.2, 1); + background-color: ; +} + +scale fill:disabled { + background-color: transparent; +} + +scale slider { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1); + border-radius: 9999px; + color: #; + background-color: #; + box-shadow: inset 0 0 0 2px #; +} + +scale slider:hover { + box-shadow: inset 0 0 0 2px #, 0 0 0 8px ; +} + +scale slider:active { + box-shadow: inset 0 0 0 4px #, 0 0 0 8px ; +} + +scale slider:disabled { + box-shadow: inset 0 0 0 2px ; +} + +scale marks, +scale value { + color: ; +} + +scale indicator { + background-color: ; + 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 { + 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-height: 32px; + min-width: 32px; + margin: -15px; + border-radius: 50%; + background-size: auto, 1000% 1000%; + background-repeat: no-repeat; + background-position: center center; + background-color: transparent; +} + +scale.horizontal.marks-before:not(.marks-after) slider, +scale.horizontal.marks-before:not(.marks-after) slider:hover, +scale.horizontal.marks-before:not(.marks-after) slider:active, +scale.horizontal.marks-before:not(.marks-after) slider:disabled { + box-shadow: none; +} + +scale.horizontal.marks-before:not(.marks-after) slider:focus { + background-color: alpha(currentColor, 0.08); +} + +scale.horizontal.marks-before:not(.marks-after) slider:hover { + background-color: alpha(currentColor, 0.08); +} + +scale.horizontal.marks-before:not(.marks-after) slider:focus:hover { + background-color: alpha(currentColor, 0.16); +} + +scale.horizontal.marks-before:not(.marks-after) 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-size: auto, 0% 0%; + background-color: alpha(currentColor, 0.08); +} + +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, alpha(currentColor, 0.12) 10%, transparent 0%); +} + +scale.horizontal.marks-after:not(.marks-before) 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-height: 32px; + min-width: 32px; + margin: -15px; + border-radius: 50%; + background-size: auto, 1000% 1000%; + background-repeat: no-repeat; + background-position: center center; + background-color: transparent; +} + +scale.horizontal.marks-after:not(.marks-before) slider, +scale.horizontal.marks-after:not(.marks-before) slider:hover, +scale.horizontal.marks-after:not(.marks-before) slider:active, +scale.horizontal.marks-after:not(.marks-before) slider:disabled { + box-shadow: none; +} + +scale.horizontal.marks-after:not(.marks-before) slider:focus { + background-color: alpha(currentColor, 0.08); +} + +scale.horizontal.marks-after:not(.marks-before) slider:hover { + background-color: alpha(currentColor, 0.08); +} + +scale.horizontal.marks-after:not(.marks-before) slider:focus:hover { + background-color: alpha(currentColor, 0.16); +} + +scale.horizontal.marks-after:not(.marks-before) 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-size: auto, 0% 0%; + background-color: alpha(currentColor, 0.08); +} + +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, alpha(currentColor, 0.12) 10%, transparent 0%); +} + +scale.vertical.marks-before:not(.marks-after) 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-height: 32px; + min-width: 32px; + margin: -15px; + border-radius: 50%; + background-size: auto, 1000% 1000%; + background-repeat: no-repeat; + background-position: center center; + background-color: transparent; +} + +scale.vertical.marks-before:not(.marks-after) slider, +scale.vertical.marks-before:not(.marks-after) slider:hover, +scale.vertical.marks-before:not(.marks-after) slider:active, +scale.vertical.marks-before:not(.marks-after) slider:disabled { + box-shadow: none; +} + +scale.vertical.marks-before:not(.marks-after) slider:focus { + background-color: alpha(currentColor, 0.08); +} + +scale.vertical.marks-before:not(.marks-after) slider:hover { + background-color: alpha(currentColor, 0.08); +} + +scale.vertical.marks-before:not(.marks-after) slider:focus:hover { + background-color: alpha(currentColor, 0.16); +} + +scale.vertical.marks-before:not(.marks-after) 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-size: auto, 0% 0%; + background-color: alpha(currentColor, 0.08); +} + +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, alpha(currentColor, 0.12) 10%, transparent 0%); +} + +scale.vertical.marks-after:not(.marks-before) 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-height: 32px; + min-width: 32px; + margin: -15px; + border-radius: 50%; + background-size: auto, 1000% 1000%; + background-repeat: no-repeat; + background-position: center center; + background-color: transparent; +} + +scale.vertical.marks-after:not(.marks-before) slider, +scale.vertical.marks-after:not(.marks-before) slider:hover, +scale.vertical.marks-after:not(.marks-before) slider:active, +scale.vertical.marks-after:not(.marks-before) slider:disabled { + box-shadow: none; +} + +scale.vertical.marks-after:not(.marks-before) slider:focus { + background-color: alpha(currentColor, 0.08); +} + +scale.vertical.marks-after:not(.marks-before) slider:hover { + background-color: alpha(currentColor, 0.08); +} + +scale.vertical.marks-after:not(.marks-before) slider:focus:hover { + background-color: alpha(currentColor, 0.16); +} + +scale.vertical.marks-after:not(.marks-before) 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-size: auto, 0% 0%; + background-color: alpha(currentColor, 0.08); +} + +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, alpha(currentColor, 0.12) 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: -13.5px; + margin-top: 11.5px; +} + +scale.color.vertical:dir(ltr) { + padding: 0 0 0 12px; +} + +scale.color.vertical:dir(ltr) slider { + margin-left: -13.5px; + margin-right: 11.5px; +} + +scale.color.vertical:dir(rtl) { + padding: 0 12px 0 0; +} + +scale.color.vertical:dir(rtl) slider { + margin-right: -13.5px; + margin-left: 11.5px; +} + +/***************** + * Progress bars * + *****************/ +progressbar { + color: ; + font-size: smaller; +} + +progressbar.horizontal trough, +progressbar.horizontal progress { + min-height: 6px; +} + +progressbar.vertical trough, +progressbar.vertical progress { + min-width: 6px; +} + +progressbar trough { + border-radius: 6px; + background-color: ; +} + +progressbar progress { + border-radius: 6px; + background-color: #; +} + +progressbar.osd { + min-width: 6px; + min-height: 6px; + background-color: transparent; +} + +progressbar.osd trough { + background-color: transparent; +} + +progressbar.osd progress { + background-color: #; +} + +progressbar trough.empty progress { + all: unset; +} + +/************* + * Level Bar * + *************/ +levelbar.horizontal block { + min-height: 6px; +} + +levelbar.horizontal.discrete block { + min-width: 36px; +} + +levelbar.horizontal.discrete block:not(:last-child) { + margin-right: 2px; +} + +levelbar.vertical block { + min-width: 6px; +} + +levelbar.vertical.discrete block { + min-height: 36px; +} + +levelbar.vertical.discrete block:not(:last-child) { + margin-bottom: 2px; +} + +levelbar trough { + border-radius: 6px; +} + +levelbar block.low { + background-color: #; +} + +levelbar block.high, +levelbar block:not(.empty) { + background-color: #; +} + +levelbar block.full { + background-color: #81c995; +} + +levelbar block.empty { + background-color: ; +} + +/**************** + * Print dialog * +*****************/ +printdialog paper { + padding: 0; + border: 1px solid ; + background-color: #; + color: #; +} + +printdialog .dialog-action-box { + margin: 12px; +} + +/********** + * Frames * + **********/ +frame > border, +.frame { + margin: 0; + padding: 0; + border: 1px solid ; + border-radius: 0; + box-shadow: none; +} + +frame > border.view, +.frame.view { + border-radius: 6px; +} + +frame > border.flat, +.frame.flat { + border-style: none; +} + +frame.flat > border, +statusbar frame > border { + border: none; +} + +actionbar > revealer > box { + padding: 6px; + border-top: 1px solid ; + background-color: #; + background-clip: border-box; +} + +.background.csd box.vertical > actionbar > revealer > box { + border-radius: 0 0 12px 12px; +} + +scrolledwindow viewport.frame { + border: none; +} + +stack scrolledwindow.frame viewport.frame list { + border: none; +} + +overshoot.top { + background-image: -gtk-gradient( + radial, + center top, + 0, + center top, + 0.75, + to(rgba(242, 205, 205, 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(242, 205, 205, 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(242, 205, 205, 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(242, 205, 205, 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: ; + background-color: #; +} + +junction:dir(rtl) { + border-style: solid solid none none; +} + +separator { + min-width: 1px; + min-height: 1px; + background-color: ; +} + +preferences stacksidebar.sidebar list separator, +hdyleaflet + > box.vertical + > scrolledwindow + > viewport.frame + list:not(.view):not(.tweak-group) + separator, +leaflet + > box.vertical + > scrolledwindow + > viewport.frame + list:not(.view):not(.tweak-group) + separator, +box.horizontal + > stack.background + > box.vertical + > scrolledwindow + > viewport.frame + list:not(.view):not(.tweak-group) + separator, +.tweak-categories separator, +placessidebar.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: ; + background-color: #; +} + +list row { + padding: 3px; +} + +list.navigation-sidebar { + padding: 3px; +} + +.budgie-popover.budgie-menu button.flat:not(.image-button):not(.indicator-item), +.budgie-popover scrolledwindow.sidebar:not(.categories) list > row.activatable, +treeview.view header button, +row.activatable { + transition: all 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); + outline: none; + box-shadow: inset 0 0 0 9999px transparent; + background-image: radial-gradient(circle, transparent 10%, transparent 0%); + background-repeat: no-repeat; + background-position: center; + background-size: 1000% 1000%; +} + +.budgie-popover.budgie-menu + button.flat:focus:not(.image-button):not(.indicator-item), +.budgie-popover + scrolledwindow.sidebar:not(.categories) + list + > row.activatable:focus, +treeview.view header button:focus, +row.activatable:focus { + box-shadow: inset 0 0 0 9999px alpha(currentColor, 0.08); +} + +.budgie-popover.budgie-menu + button.flat:hover:not(.image-button):not(.indicator-item), +.budgie-popover + scrolledwindow.sidebar:not(.categories) + list + > row.activatable:hover, +treeview.view header button:hover, +row.activatable:hover { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1), box-shadow 0ms, + background-size 300ms cubic-bezier(0, 0, 0.2, 1), + background-image 1200ms cubic-bezier(0, 0, 0.2, 1); + box-shadow: inset 0 0 0 9999px alpha(currentColor, 0.08); +} + +.budgie-popover.budgie-menu + button.has-open-popup.flat:not(.image-button):not(.indicator-item), +.budgie-popover + scrolledwindow.sidebar:not(.categories) + list + > row.has-open-popup.activatable, +treeview.view header button.has-open-popup, +.budgie-popover.budgie-menu + button.flat:active:not(.image-button):not(.indicator-item), +.budgie-popover + scrolledwindow.sidebar:not(.categories) + list + > row.activatable:active, +treeview.view header button:active, +row.activatable.has-open-popup, +row.activatable:active { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1), background-size 0ms, + background-image 0ms; + animation: ripple 225ms cubic-bezier(0, 0, 0.2, 1) forwards; + box-shadow: inset 0 0 0 9999px alpha(currentColor, 0.08); + background-image: radial-gradient( + circle, + alpha(currentColor, 0.12) 10%, + transparent 0% + ); + background-size: 0% 0%; +} + +row:selected { + color: inherit; +} + +row:selected image, +row:selected label { + color: #; +} + +row:selected button image, +row:selected button label { + color: inherit; +} + +row:selected:disabled image, +row:selected:disabled label { + color: ; +} + +/********************* + * App Notifications * + *********************/ +.app-notification { + margin: 8px; +} + +.app-notification button.text-button:not(:disabled) { + color: #; +} + +.app-notification.frame, +.app-notification border { + border-style: none; +} + +/************* + * 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'); + -gtk-icon-transform: rotate(-90deg); + color: ; +} + +expander title > arrow:dir(rtl) { + -gtk-icon-transform: rotate(90deg); +} + +expander title > arrow:checked { + -gtk-icon-transform: unset; +} + +expander title > arrow:hover, +expander title > arrow:active { + color: #; +} + +expander title > arrow:disabled { + color: ; +} + +/************ + * Calendar * + ************/ +calendar { + padding: 3px 6px; + border: 1px solid ; + color: #; +} + +calendar:disabled { + color: ; +} + +calendar:selected { + border-radius: 6px; +} + +calendar.header { + border-style: none none solid; + border-color: ; + border-radius: 0; +} + +calendar.button { + border-radius: 6px; +} + +calendar.highlight { + color: ; + font-weight: 500; +} + +calendar:indeterminate { + color: ; +} + +/*********** + * Dialogs * + ***********/ +messagedialog.background { + background-color: #; +} + +messagedialog .titlebar { + min-height: 24px; + border-style: none; + box-shadow: inset 0 1px ; + background-color: #; + color: #; +} + +messagedialog .titlebar:backdrop { + background-color: #; + color: ; +} + +messagedialog checkbutton.text-button { + padding: 2px 12px 2px 24px; +} + +messagedialog checkbutton.text-button > check { + margin-left: 0; +} + +messagedialog.csd.background { + border-bottom-left-radius: 12px; + border-bottom-right-radius: 12px; +} + +messagedialog.csd .dialog-action-box { + margin-top: -6px; +} + +messagedialog.csd .dialog-action-box button, +messagedialog.csd .dialog-action-box button:first-child, +messagedialog.csd .dialog-action-box button:last-child { + border-radius: 6px; +} + +messagedialog.csd .dialog-action-box button:not(:last-child) { + margin-right: 6px; +} + +messagedialog.csd .dialog-action-box button:not(:disabled) { + color: #; +} + +messagedialog.csd .dialog-action-box button.suggested-action:not(:disabled) { + color: #; +} + +messagedialog.csd .dialog-action-box button.destructive-action:not(:disabled) { + color: #; +} + +.csd filechooser { + background-color: #; + border-radius: 0 0 12px 12px; +} + +filechooser .dialog-action-box { + border-top: 1px solid ; +} + +filechooser #pathbarbox { + border-bottom: 1px solid ; + background-color: #; +} + +filechooser stack.view { + background-color: transparent; + padding: 0; +} + +filechooser stack.view scrolledwindow { + background-color: transparent; + border-radius: 0 0 12px 0; +} + +filechooser stack.view scrolledwindow list { + background-color: transparent; +} + +filechooser stack.view > placesview { + background-color: transparent; +} + +filechooser stack.view > placesview > actionbar, +filechooser stack.view > placesview > actionbar > revealer > box { + background-color: transparent; +} + +filechooser stack.view frame > border { + border: none; +} + +.csd filechooser placessidebar { + background: none; + border-bottom-left-radius: 12px; +} + +filechooser actionbar, +filechooser actionbar > revealer > box { + background-color: transparent; +} + +filechooser revealer box button label { + padding-left: 10px; +} + +/*********** + * Sidebar * + ***********/ +.sidebar { + border-style: none; +} + +stacksidebar.sidebar:dir(ltr) list, +stacksidebar.sidebar.left list, +stacksidebar.sidebar.left:dir(rtl) list, +.sidebar:not(separator):dir(ltr), +.sidebar.left:not(separator) { + border-right: 1px solid ; + border-left-style: none; +} + +stacksidebar.sidebar:dir(rtl) list, +stacksidebar.sidebar.right list, +.sidebar:not(separator):dir(rtl), +.sidebar.right:not(separator) { + border-left: 1px solid ; + border-right-style: none; +} + +.sidebar list { + background-color: transparent; +} + +paned .sidebar.left, +paned .sidebar.right, +paned .sidebar.left:dir(rtl), +paned .sidebar:dir(rtl), +paned .sidebar:dir(ltr), +paned .sidebar { + border-style: none; +} + +stacksidebar.sidebar list { + padding: 3px; + background-color: #; +} + +stacksidebar.sidebar row { + min-height: 32px; + padding: 0 3px; + border-radius: 6px; +} + +stacksidebar.sidebar row:selected { + background-color: #; + color: ; + font-weight: 500; +} + +stacksidebar.sidebar row:selected label, +stacksidebar.sidebar row:selected image { + color: ; +} + +stacksidebar.sidebar row + row { + margin-top: 3px; +} + +stacksidebar.sidebar row > label { + padding-left: 6px; + padding-right: 6px; + color: inherit; +} + +separator.sidebar { + background-color: ; +} + +/**************** + * File chooser * + ****************/ +row image.sidebar-icon { + transition: color 75ms cubic-bezier(0, 0, 0.2, 1); + color: ; +} + +row image.sidebar-icon:disabled { + color: ; +} + +placessidebar.sidebar > viewport.frame { + border-style: none; +} + +placessidebar.sidebar list { + padding: 6px; +} + +placessidebar.sidebar row { + min-height: 32px; + margin: 0; + padding: 0; + border-radius: 6px; +} + +placessidebar.sidebar row > revealer { + padding: 0 8px 0 16px; +} + +placessidebar.sidebar row:selected { + background-color: #; + font-weight: 500; +} + +placessidebar.sidebar row:selected, +placessidebar.sidebar row:selected image.sidebar-icon, +placessidebar.sidebar row:selected button.sidebar-button { + color: ; +} + +placessidebar.sidebar row:disabled { + color: ; +} + +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 { + color: inherit; +} + +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: alpha(currentColor, 0.08); +} + +placessidebar.sidebar row.sidebar-new-bookmark-row { + color: #; +} + +placessidebar.sidebar row.sidebar-new-bookmark-row image.sidebar-icon { + color: #; +} + +placessidebar.sidebar row:drop(active) { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1), box-shadow 0ms, + background-size 300ms cubic-bezier(0, 0, 0.2, 1), + background-image 1200ms cubic-bezier(0, 0, 0.2, 1); + box-shadow: inset 0 0 0 9999px alpha(currentColor, 0.08); +} + +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 > 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(); + background-size: 1px 1px; + background-clip: content-box; +} + +paned > separator.wide { + min-width: 6px; + min-height: 6px; + background-color: #; + background-image: image(), + image(); + 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: none; + margin-bottom: 0; +} + +infobar.info > revealer > box, +infobar.info:hover > revealer > box, +infobar.info:backdrop > revealer > box { + background-color: #; +} + +infobar.info > revealer > box button, +infobar.info > revealer > box button.text-button:not(:disabled), +infobar.info:hover > revealer > box button, +infobar.info:hover > revealer > box button.text-button:not(:disabled), +infobar.info:backdrop > revealer > box button, +infobar.info:backdrop > revealer > box button.text-button:not(:disabled) { + color: #; +} + +infobar.action > revealer > box, +infobar.action:backdrop > revealer > box, +infobar.question > revealer > box, +infobar.question:backdrop > revealer > box { + background-color: #; + color: ; + border-radius: 12px 12px 0 0; +} + +infobar.action > revealer > box button, +infobar.action > revealer > box button:hover, +infobar.action > revealer > box button:focus, +infobar.action > revealer > box button:active, +infobar.action > revealer > box button:checked, +infobar.action > revealer > box button.text-button:not(:disabled), +infobar.action:backdrop > revealer > box button, +infobar.action:backdrop > revealer > box button:hover, +infobar.action:backdrop > revealer > box button:focus, +infobar.action:backdrop > revealer > box button:active, +infobar.action:backdrop > revealer > box button:checked, +infobar.action:backdrop > revealer > box button.text-button:not(:disabled), +infobar.question > revealer > box button, +infobar.question > revealer > box button:hover, +infobar.question > revealer > box button:focus, +infobar.question > revealer > box button:active, +infobar.question > revealer > box button:checked, +infobar.question > revealer > box button.text-button:not(:disabled), +infobar.question:backdrop > revealer > box button, +infobar.question:backdrop > revealer > box button:hover, +infobar.question:backdrop > revealer > box button:focus, +infobar.question:backdrop > revealer > box button:active, +infobar.question:backdrop > revealer > box button:checked, +infobar.question:backdrop > revealer > box button.text-button:not(:disabled) { + color: ; +} + +infobar.action > revealer > box *:link, +infobar.action:backdrop > revealer > box *:link, +infobar.question > revealer > box *:link, +infobar.question:backdrop > revealer > box *:link { + color: ; +} + +infobar.action:hover > revealer > box, +infobar.question:hover > revealer > box { + background-color: #; + border-radius: 12px 12px 0 0; +} + +infobar.warning > revealer > box, +infobar.warning:backdrop > revealer > box { + background-color: #; + color: ; +} + +infobar.warning > revealer > box button, +infobar.warning > revealer > box button:hover, +infobar.warning > revealer > box button:focus, +infobar.warning > revealer > box button:active, +infobar.warning > revealer > box button:checked, +infobar.warning > revealer > box button.text-button:not(:disabled), +infobar.warning:backdrop > revealer > box button, +infobar.warning:backdrop > revealer > box button:hover, +infobar.warning:backdrop > revealer > box button:focus, +infobar.warning:backdrop > revealer > box button:active, +infobar.warning:backdrop > revealer > box button:checked, +infobar.warning:backdrop > revealer > box button.text-button:not(:disabled) { + color: ; +} + +infobar.warning > revealer > box *:link, +infobar.warning:backdrop > revealer > box *:link { + color: ; +} + +infobar.warning:hover > revealer > box { + background-color: #fdd11a; +} + +infobar.error > revealer > box, +infobar.error:backdrop > revealer > box { + background-color: #; + color: ; +} + +infobar.error > revealer > box button, +infobar.error > revealer > box button:hover, +infobar.error > revealer > box button:focus, +infobar.error > revealer > box button:active, +infobar.error > revealer > box button:checked, +infobar.error > revealer > box button.text-button:not(:disabled), +infobar.error:backdrop > revealer > box button, +infobar.error:backdrop > revealer > box button:hover, +infobar.error:backdrop > revealer > box button:focus, +infobar.error:backdrop > revealer > box button:active, +infobar.error:backdrop > revealer > box button:checked, +infobar.error:backdrop > revealer > box button.text-button:not(:disabled) { + color: ; +} + +infobar.error > revealer > box *:link, +infobar.error:backdrop > revealer > box *:link { + color: ; +} + +infobar.error:hover > revealer > box { + background-color: #f0766b; +} + +/************ + * Tooltips * + ************/ +tooltip { + border-radius: 3px; + box-shadow: none; +} + +tooltip.background { + background-color: rgba(30, 30, 46, 0.9); + color: #; +} + +tooltip.background.csd { + border-radius: 6px; +} + +tooltip decoration { + background-color: transparent; +} + +tooltip > box { + margin: -6px; + min-height: 24px; + padding: 4px 8px; +} + +/***************** + * Color Chooser * + *****************/ +colorswatch.top { + border-top-left-radius: 6px; + border-top-right-radius: 6px; +} + +colorswatch.top overlay { + border-top-left-radius: 6px; + border-top-right-radius: 6px; +} + +colorswatch.bottom { + border-bottom-left-radius: 6px; + border-bottom-right-radius: 6px; +} + +colorswatch.bottom overlay { + border-bottom-left-radius: 6px; + border-bottom-right-radius: 6px; +} + +colorswatch.left, +colorswatch:first-child:not(.top) { + border-top-left-radius: 6px; + border-bottom-left-radius: 6px; +} + +colorswatch.left overlay, +colorswatch:first-child:not(.top) overlay { + border-top-left-radius: 6px; + border-bottom-left-radius: 6px; +} + +colorswatch.right, +colorswatch:last-child:not(.bottom) { + border-top-right-radius: 6px; + border-bottom-right-radius: 6px; +} + +colorswatch.right overlay, +colorswatch:last-child:not(.bottom) overlay { + border-top-right-radius: 6px; + border-bottom-right-radius: 6px; +} + +colorswatch.dark { + color: #; +} + +colorswatch.light { + color: ; +} + +colorswatch overlay { + transition: box-shadow 75ms cubic-bezier(0, 0, 0.2, 1); +} + +colorswatch overlay:hover { + box-shadow: 0 0 0 2px #; +} + +colorswatch#add-color-button { + border-radius: 6px 6px 0 0; +} + +colorswatch#add-color-button:only-child { + border-radius: 6px; +} + +colorswatch#add-color-button overlay { + background-color: ; +} + +colorswatch#add-color-button overlay:hover { + background-color: ; + box-shadow: none; +} + +colorswatch#add-color-button overlay:active { + background-color: ; +} + +colorswatch:disabled { + opacity: 0.5; +} + +colorswatch:disabled overlay { + box-shadow: none; +} + +colorswatch#editor-color-sample { + border-radius: 12px; +} + +colorswatch#editor-color-sample overlay { + border-radius: 12px; +} + +colorchooser .popover.osd { + transition: box-shadow 75ms cubic-bezier(0, 0, 0.2, 1); + border-radius: 6px; + box-shadow: 0 2px 2.4px -1px , + 0 4px 3px 0 , 0 1px 6px 0 , + inset 0 1px ; + background-color: #; +} + +colorchooser .popover.osd:backdrop { + box-shadow: 0 3px 2px -3px , + 0 2px 2px -1px , 0 1px 3px 0 , + inset 0 1px ; +} + +/******** + * Misc * + ********/ +.content-view { + background-color: #; +} + +/********************** + * Window Decorations * + **********************/ +decoration { + transition: box-shadow 75ms cubic-bezier(0, 0, 0.2, 1); + border-radius: 14px; + box-shadow: 0 2px 2.4px -1px , + 0 4px 3px 0 , 0 1px 6px 0 , + 0 0 16px transparent; + border: 2px solid #; + background-clip: border-box; + margin: 8px; +} + +decoration:backdrop { + box-shadow: 0 2px 2px -2px , + 0 1px 2px -1px , 0 1px 2px -0.6px , + 0 0 16px transparent; + border: 2px solid #; + background-clip: border-box; +} + +.maximized decoration, +.fullscreen decoration, +.tiled decoration, +.tiled-top decoration, +.tiled-right decoration, +.tiled-bottom decoration, +.tiled-left decoration { + border-radius: 0; + border: none; +} + +.popup decoration { + box-shadow: none; +} + +.ssd decoration { + box-shadow: 0 3px 3px , + 0 0 0 2px #; + border: none; + border-radius: 12px 12px 0 0; +} + +.ssd decoration:backdrop { + box-shadow: 0 3px 3px , + 0 0 0 2px #; +} + +.csd.popup decoration { + border-radius: 12px; + border: 2px solid #; + background-clip: border-box; +} + +tooltip.csd decoration { + border-radius: 12px; + box-shadow: none; + border: none; +} + +messagedialog.csd decoration { + border-radius: 12px; + border: none; +} + +.solid-csd decoration { + margin: 0; + padding: 2px; + border-radius: 0; + box-shadow: none; + background-color: #; + border: 2px solid #; +} + +.solid-csd decoration:backdrop { + background-color: #; +} + +button.titlebutton:not(.suggested-action):not(.destructive-action) { + min-height: 12px; + min-width: 12px; + padding: 0; + margin: 0 2px; +} + +button.titlebutton:not(.suggested-action):not(.destructive-action).minimize, +button.titlebutton:not(.suggested-action):not(.destructive-action).maximize, +button.titlebutton:not(.suggested-action):not(.destructive-action).close { + color: transparent; +} + +button.titlebutton:not(.suggested-action):not(.destructive-action).minimize, +button.titlebutton:not(.suggested-action):not(.destructive-action).minimize:active, +button.titlebutton:not(.suggested-action):not(.destructive-action).minimize:backdrop:hover, +button.titlebutton:not(.suggested-action):not(.destructive-action).minimize:backdrop:active { + background-color: #; + color: transparent; +} + +button.titlebutton:not(.suggested-action):not(.destructive-action).minimize:hover, +button.titlebutton:not(.suggested-action):not(.destructive-action).minimize:active { + background-color: shade(#, 0.5); + color: transparent; +} + +button.titlebutton:not(.suggested-action):not(.destructive-action).maximize, +button.titlebutton:not(.suggested-action):not(.destructive-action).maximize:active, +button.titlebutton:not(.suggested-action):not(.destructive-action).maximize:backdrop:hover, +button.titlebutton:not(.suggested-action):not(.destructive-action).maximize:backdrop:active { + background-color: #; + color: transparent; +} + +button.titlebutton:not(.suggested-action):not(.destructive-action).maximize:hover, +button.titlebutton:not(.suggested-action):not(.destructive-action).maximize:active { + background-color: shade(#, 0.5); + color: transparent; +} + +button.titlebutton:not(.suggested-action):not(.destructive-action).close, +button.titlebutton:not(.suggested-action):not(.destructive-action).close:active, +button.titlebutton:not(.suggested-action):not(.destructive-action).close:backdrop:hover, +button.titlebutton:not(.suggested-action):not(.destructive-action).close:backdrop:active { + background-color: #; + color: transparent; +} + +button.titlebutton:not(.suggested-action):not(.destructive-action).close:hover, +button.titlebutton:not(.suggested-action):not(.destructive-action).close:active { + background-color: shade(#, 0.5); + color: transparent; +} + +button.titlebutton:not(.suggested-action):not(.destructive-action).minimize:backdrop, +button.titlebutton:not(.suggested-action):not(.destructive-action).maximize:backdrop, +button.titlebutton:not(.suggested-action):not(.destructive-action).close:backdrop { + background-color: #; + color: transparent; +} + +.monospace { + font-family: monospace; +} + +/********************** + * Touch Copy & Paste * + **********************/ +cursor-handle { + color: #; + -gtk-icon-source: -gtk-recolor( + url('assets/scalable/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: 26px; + margin-top: 2px; + padding-bottom: 2px; + padding-left: 8px; + padding-right: 8px; + border: solid 1px ; + border-radius: 7px; + box-shadow: inset 0 -2px ; + background-color: #; + color: #; + font-size: smaller; +} + +:not(decoration):not(window):drop(active) { + caret-color: #; +} + +stackswitcher { + min-height: 0; + border-radius: 9999px; + padding: 2px; + margin: 6px 0; + background-color: transparent; + border: 2px solid #; +} + +stackswitcher.linked:not(.vertical) + > button:not(.suggested-action):not(.destructive-action) { + margin: 0 0; + border-radius: 9999px; + background-color: transparent; + min-height: 20px; + padding: 5px 10px; +} + +stackswitcher.linked:not(.vertical) + > button.text-button:not(.suggested-action):not(.destructive-action) { + min-width: 100px; +} + +stackswitcher.linked:not(.vertical) + > button:not(.suggested-action):not(.destructive-action):focus:not(:hover) { + box-shadow: inset 0 0 0 2px alpha(currentColor, 0.08); +} + +stackswitcher.linked:not(.vertical) + > button:not(.suggested-action):not(.destructive-action):active { + box-shadow: inset 0 0 0 9999px alpha(#, 0.08); + background-image: radial-gradient( + circle, + alpha(#, 0.08) 10%, + transparent 0% + ); +} + +stackswitcher.linked:not(.vertical) + > button:not(.suggested-action):not(.destructive-action):checked { + background-color: #; + color: ; +} + +stackswitcher button.text-button { + min-width: 100px; +} + +stackswitcher button.circular, +stackswitcher button.text-button.circular { + min-width: 36px; + min-height: 36px; + padding: 0; +} + +/************* + * App Icons * + *************/ +/********* + * Emoji * + *********/ +popover.emoji-picker { + padding: 0; +} + +popover.emoji-picker entry { + border-bottom: 1px solid ; + border-image: none; + border-radius: 0; + box-shadow: none; + background-color: transparent; +} + +popover.emoji-picker scrolledwindow { + border-bottom: 1px solid ; +} + +button.emoji-section { + margin: 4px; +} + +button.emoji-section:checked { + color: #; +} + +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: 6px; +} + +popover.emoji-picker .emoji widget:hover { + background-color: alpha(currentColor, 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: alpha(currentColor, 0.08); +} + +/************ + * Nautilus * + ************/ +.nautilus-window.background.csd.unified headerbar { + box-shadow: none; +} + +.nautilus-window.background.csd { + background-color: #; + border-radius: 0 0 12px 12px; +} + +.nautilus-window.background.csd headerbar { + padding-left: 12px; + box-shadow: inset 0 1px ; +} + +.nautilus-window.background.csd + > grid.horizontal + > paned.horizontal + > separator, +.nautilus-window.background.csd + > deck + > box.vertical + > paned.horizontal + > separator { + margin-left: 0; +} + +.nautilus-window.background.csd placessidebar { + background-color: transparent; + color: ; +} + +.nautilus-window.background.csd placessidebar > viewport.frame { + background-color: #; + color: #; + margin: 0 0 6px 6px; + border-radius: 0 12px 12px 0; +} + +.nautilus-window.background.csd placessidebar > viewport.frame > list { + background: none; + padding: 0 0 0 4px; +} + +.nautilus-window.background.csd + placessidebar + > viewport.frame + > list + > row.activatable { + border-radius: 6px; +} + +.nautilus-window.background.csd + placessidebar + > viewport.frame + > list + > row.activatable, +.nautilus-window.background.csd + placessidebar + > viewport.frame + > list + > row.activatable + image.sidebar-icon, +.nautilus-window.background.csd + placessidebar + > viewport.frame + > list + > row.activatable + label.sidebar-label, +.nautilus-window.background.csd + placessidebar + > viewport.frame + > list + > row.activatable + button.sidebar-button { + color: #; +} + +.nautilus-window.background.csd + placessidebar + > viewport.frame + > list + > row.activatable:hover { + background-color: #; + color: #; +} + +.nautilus-window.background.csd + placessidebar + > viewport.frame + > list + > row.activatable:selected { + background-color: #; + font-weight: 700; + border-left: 3px solid #f7768e; +} + +.nautilus-window.background.csd + placessidebar + > viewport.frame + > list + > row.activatable:selected, +.nautilus-window.background.csd + placessidebar + > viewport.frame + > list + > row.activatable:selected + image.sidebar-icon, +.nautilus-window.background.csd + placessidebar + > viewport.frame + > list + > row.activatable:selected + label.sidebar-label, +.nautilus-window.background.csd + placessidebar + > viewport.frame + > list + > row.activatable:selected + button.sidebar-button { + color: #; +} + +.nautilus-window.background.csd + placessidebar + > viewport.frame + > list + > row.activatable:disabled, +.nautilus-window.background.csd + placessidebar + > viewport.frame + > list + > row.activatable:disabled + image.sidebar-icon, +.nautilus-window.background.csd + placessidebar + > viewport.frame + > list + > row.activatable:disabled + label.sidebar-label { + color: ; +} + +.nautilus-window.background.csd placessidebar scrollbar { + background: none; + border: none; +} + +.nautilus-window.background.csd paned > separator { + background: none; +} + +.nautilus-window.background.csd paned > separator.wide { + min-width: 0; + min-height: 0; + background: none; +} + +.nautilus-window.background.csd .nautilus-list-view { + background-color: transparent; + border-radius: 12px; +} + +.nautilus-window.background.csd notebook { + background: none; +} + +.nautilus-window.background.csd notebook > stack { + background-color: #; + border-radius: 12px; + border: 1px solid rgba(65, 72, 104, 0.2); + margin: 0 6px 6px; +} + +.nautilus-window.background.csd + notebook + scrolledwindow + > .view:not(:selected):not(:hover):not(:checked) { + background-color: transparent; +} + +.nautilus-window.background.csd notebook scrolledwindow .view:selected { + background-color: ; +} + +.nautilus-window.background.csd + notebook + placesview + > stack + > frame + > scrolledwindow + > viewport + > list { + background-color: transparent; +} + +.nautilus-window.background.csd notebook placesview > actionbar { + background-color: transparent; + border-radius: 0 0 12px 12px; +} + +.nautilus-window.background.csd + notebook + placesview + > actionbar + > revealer + > box { + background-color: transparent; +} + +.nautilus-window.maximized, +.nautilus-window.maximized placessidebar { + border-radius: 0; +} + +.nautilus-window .floating-bar { + min-height: 32px; + padding: 0; + margin: 6px; + border-style: none; + border-radius: 6px; + background-color: #; + color: ; +} + +.nautilus-window .floating-bar button { + margin: 4px; + color: ; +} + +.nautilus-canvas-item.dim-label, +.nautilus-list-dim-label { + color: ; +} + +.nemo-desktop.nemo-canvas-item, +.caja-desktop.caja-canvas-item, +.nautilus-desktop.nautilus-canvas-item { + color: #; +} + +@keyframes nautilus-operations-button-needs-attention { + to { + background-color: alpha(currentColor, 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; +} + +.path-bar-box { + transition: background-color 75ms cubic-bezier(0, 0, 0.2, 1); + margin: 6px 0; + border-radius: 6px; +} + +.path-bar-box button { + margin: 0; +} + +.path-bar-box.width-maximized { + background-color: ; +} + +.path-bar-box.background.frame { + border-style: none; + background-color: ; +} + +.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 + .linked.nautilus-path-bar + button:not(.suggested-action):not(.destructive-action) { + padding-left: 12px; + padding-right: 12px; + margin-left: 1px; + margin-right: 1px; +} + +.path-bar-box + .linked.nautilus-path-bar + button:not(.suggested-action):not(.destructive-action) + label:not(:only-child):first-child { + margin-left: 0; +} + +.path-bar-box + .linked.nautilus-path-bar + button:not(.suggested-action):not(.destructive-action) + label:not(:only-child):last-child { + margin-right: 0; +} + +.path-bar-box + .linked.nautilus-path-bar + button.text-button:not(.suggested-action):not(.destructive-action) { + min-width: 0; +} + +.path-bar-box + .linked.nautilus-path-bar + button.text-button.image-button:not(.suggested-action):not(.destructive-action) + image:not(:only-child) { + margin: 0; +} + +.path-bar-box + .linked.nautilus-path-bar + button:not(.suggested-action):not(.destructive-action):last-child:dir(ltr), +.path-bar-box + .linked.nautilus-path-bar + button:not(.suggested-action):not(.destructive-action):first-child:dir(rtl) { + color: #; + background-color: #; +} + +.path-bar-box + .linked.nautilus-path-bar + button:not(.suggested-action):not(.destructive-action):last-child:dir(ltr):disabled, +.path-bar-box + .linked.nautilus-path-bar + button:not(.suggested-action):not(.destructive-action):first-child:dir(rtl):disabled { + color: #; + background-color: #; +} + +.windowhandle .linked.nautilus-path-bar { + background-color: #; + border-radius: 6px; + margin: 6px 0; +} + +.windowhandle + .linked.nautilus-path-bar + button:not(.suggested-action):not(.destructive-action) { + margin-top: 0; + margin-bottom: 0; +} + +.windowhandle + .linked.nautilus-path-bar + button.current-dir:not(.suggested-action):not(.destructive-action) { + color: #; +} + +.windowhandle + .linked.nautilus-path-bar + button.current-dir:not(.suggested-action):not(.destructive-action):hover, +.windowhandle + .linked.nautilus-path-bar + button.current-dir:not(.suggested-action):not(.destructive-action):active { + background: none; + box-shadow: none; +} + +.disk-space-display.unknown { + background-color: ; + color: ; +} + +.disk-space-display.used { + background-color: #; + color: #; +} + +.disk-space-display.free { + background-color: ; + color: ; +} + +.search-information { + padding: 2px; + border-bottom: 1px solid ; + background-color: #; + color: #; +} + +.conflict-row:not(:selected) { + background-color: #6b5f2e; +} + +.nautilus-window flowboxchild .icon-item-background { + padding: 4px; + border-radius: 6px; +} + +.nautilus-window flowboxchild:selected { + background-color: transparent; +} + +.nautilus-window notebook .view:not(treeview) { + border-radius: 6px; +} + +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 ; +} + +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: ; +} + +.nautilus-window paned > separator { + background-color: #; +} + +/********* + * gedit * + *********/ +window.org-gnome-gedit > paned.titlebar > separator { + background-color: transparent; +} + +window.org-gnome-gedit + > overlay + > box.vertical + > paned.gedit-side-panel-paned + > box.vertical + > stack + > grid.horizontal + > box.horizontal { + margin: 4px 0; +} + +window.org-gnome-gedit + > overlay + > box.vertical + > paned.gedit-side-panel-paned + > box.vertical + > stack + > grid.horizontal + > scrolledwindow { + border-bottom-left-radius: 12px; +} + +window.org-gnome-gedit + > overlay + > box.vertical + > paned.gedit-side-panel-paned + stack + scrolledwindow + viewport.frame + list.gedit-document-panel { + background: none; +} + +.open-document-selector-path-label { + color: ; + font-size: smaller; +} + +.open-document-selector-match { + background-color: #; + color: ; +} + +.gedit-document-panel { + background-color: #; +} + +.gedit-document-panel row button.flat { + margin-top: 8px; + margin-bottom: 8px; +} + +.gedit-document-panel-group-row:not(:first-child) { + border-top: 1px solid ; +} + +.gedit-side-panel-paned statusbar { + border-top: 1px solid ; + border-radius: 0 0 12px 12px; +} + +.gedit-search-slider { + margin: 4px 4px 8px; +} + +.gedit-search-slider .linked:not(.vertical) > entry { + border-radius: 6px; +} + +.gedit-search-slider + .linked:not(.vertical) + > entry + .gedit-search-entry-occurrences-tag { + all: unset; + color: ; +} + +.gedit-search-slider .linked:not(.vertical) > entry:dir(ltr) { + margin-right: -66px; + padding-right: 66px; +} + +.gedit-search-slider + .linked:not(.vertical) + > entry:dir(ltr) + .gedit-search-entry-occurrences-tag { + margin-left: 6px; +} + +.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: -66px; + padding-left: 66px; +} + +.gedit-search-slider + .linked:not(.vertical) + > entry:dir(rtl) + .gedit-search-entry-occurrences-tag { + margin-right: 6px; +} + +.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: #; +} + +.gedit-search-slider .linked:not(.vertical) > entry.error ~ button { + color: ; +} + +.gedit-search-slider .linked:not(.vertical) > entry.error ~ button:hover, +.gedit-search-slider .linked:not(.vertical) > entry.error ~ button:active { + color: ; +} + +.gedit-search-slider .linked:not(.vertical) > entry.error ~ button:disabled { + color: ; +} + +.gedit-search-slider .linked > button { + border: solid 6px transparent; + border-radius: 9999px; +} + +.gedit-search-slider .linked > button:last-child:dir(ltr), +.gedit-search-slider .linked > button:not(:first-child):dir(rtl) { + margin-left: -3px; +} + +.gedit-search-slider .linked > button:first-child:dir(rtl), +.gedit-search-slider .linked > button:not(:last-child):dir(ltr) { + margin-right: -3px; +} + +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 * + **********/ +window.background.csd stack stack stack frame > list, +window.background.csd > stack > stack > box > frame > list, +window.background.csd > stack > stack > box > box > frame > list, +window.background.csd > stack > box > stack > box > frame > list, +window.background.csd + > stack + > box + > stack + > scrolledwindow + > viewport + frame + > list, +window.background.csd + > stack + > box + > stack + > box + > scrolledwindow + > viewport + > frame + > list, +window.background.csd + > stack + > grid + > scrolledwindow + > viewport + > box + > frame + > list, +window.background.csd > stack > list, +window.background.csd > stack > scrolledwindow > viewport > box > list, +window.background.csd > box > stack > scrolledwindow > viewport > box > list, +preferencesgroup list, +.geary-accounts-editor-pane list, +window.background.csd.unified > deck > deck > deck list, +hdyleaflet list.view, +hdyleaflet list.frame, +leaflet list.view, +leaflet list.frame, +box.horizontal > stack.background list.view, +box.horizontal > stack.background list.frame, +hdyleaflet frame.view, +leaflet frame.view, +box.horizontal > stack.background frame.view, +hdyleaflet stack.background scrolledwindow > viewport list, +hdyleaflet overlay scrolledwindow > viewport list, +leaflet stack.background scrolledwindow > viewport list, +leaflet overlay scrolledwindow > viewport list, +box.horizontal + > stack.background + stack.background + scrolledwindow + > viewport + list, +box.horizontal > stack.background overlay scrolledwindow > viewport list, +hdyleaflet frame:not(.view) list:not(.contacts-contact-list), +leaflet frame:not(.view) list:not(.contacts-contact-list), +box.horizontal + > stack.background + frame:not(.view) + list:not(.contacts-contact-list), +list.tweak-group list, +.tweak-group-startup, +list.content:not(.conversation-listbox) { + border-radius: 7px; + box-shadow: none; + border: 1px solid ; +} + +window.background.csd + stack + stack + stack + frame + > list + row.activatable:first-child, +window.background.csd > stack > list row.activatable:first-child, +preferencesgroup list row.activatable:first-child, +.geary-accounts-editor-pane list row.activatable:first-child, +window.background.csd.unified + > deck + > deck + > deck + list + row.activatable:first-child, +hdyleaflet list.view row.activatable:first-child, +hdyleaflet list.frame row.activatable:first-child, +leaflet list.view row.activatable:first-child, +leaflet list.frame row.activatable:first-child, +box.horizontal > stack.background list.view row.activatable:first-child, +box.horizontal > stack.background list.frame row.activatable:first-child, +hdyleaflet frame.view list row.activatable:first-child, +leaflet frame.view list row.activatable:first-child, +box.horizontal > stack.background frame.view list row.activatable:first-child, +hdyleaflet + stack.background + scrolledwindow + > viewport + list + row.activatable:first-child, +hdyleaflet overlay scrolledwindow > viewport list row.activatable:first-child, +leaflet + stack.background + scrolledwindow + > viewport + list + row.activatable:first-child, +leaflet overlay scrolledwindow > viewport list row.activatable:first-child, +box.horizontal + > stack.background + stack.background + scrolledwindow + > viewport + list + row.activatable:first-child, +box.horizontal + > stack.background + overlay + scrolledwindow + > viewport + list + row.activatable:first-child, +hdyleaflet + frame:not(.view) + list:not(.contacts-contact-list) + row.activatable:first-child, +leaflet + frame:not(.view) + list:not(.contacts-contact-list) + row.activatable:first-child, +box.horizontal + > stack.background + frame:not(.view) + list:not(.contacts-contact-list) + row.activatable:first-child, +list.tweak-group list row.activatable:first-child, +.tweak-group-startup row.activatable:first-child, +list.content:not(.conversation-listbox) > row:first-child { + border-top-left-radius: 6px; + border-top-right-radius: 6px; +} + +window.background.csd stack stack stack frame > list row.activatable:last-child, +window.background.csd > stack > list row.activatable:last-child, +preferencesgroup list row.activatable:last-child, +.geary-accounts-editor-pane list row.activatable:last-child, +window.background.csd.unified + > deck + > deck + > deck + list + row.activatable:last-child, +hdyleaflet list.view row.activatable:last-child, +hdyleaflet list.frame row.activatable:last-child, +leaflet list.view row.activatable:last-child, +leaflet list.frame row.activatable:last-child, +box.horizontal > stack.background list.view row.activatable:last-child, +box.horizontal > stack.background list.frame row.activatable:last-child, +hdyleaflet frame.view list row.activatable:last-child, +leaflet frame.view list row.activatable:last-child, +box.horizontal > stack.background frame.view list row.activatable:last-child, +hdyleaflet + stack.background + scrolledwindow + > viewport + list + row.activatable:last-child, +hdyleaflet overlay scrolledwindow > viewport list row.activatable:last-child, +leaflet + stack.background + scrolledwindow + > viewport + list + row.activatable:last-child, +leaflet overlay scrolledwindow > viewport list row.activatable:last-child, +box.horizontal + > stack.background + stack.background + scrolledwindow + > viewport + list + row.activatable:last-child, +box.horizontal + > stack.background + overlay + scrolledwindow + > viewport + list + row.activatable:last-child, +hdyleaflet + frame:not(.view) + list:not(.contacts-contact-list) + row.activatable:last-child, +leaflet + frame:not(.view) + list:not(.contacts-contact-list) + row.activatable:last-child, +box.horizontal + > stack.background + frame:not(.view) + list:not(.contacts-contact-list) + row.activatable:last-child, +list.tweak-group list row.activatable:last-child, +.tweak-group-startup row.activatable:last-child, +list.content:not(.conversation-listbox) > row:last-child { + border-bottom-left-radius: 6px; + border-bottom-right-radius: 6px; +} + +window.background.csd stack stack stack frame > list row.activatable:only-child, +window.background.csd > stack > list row.activatable:only-child, +preferencesgroup list row.activatable:only-child, +.geary-accounts-editor-pane list row.activatable:only-child, +window.background.csd.unified + > deck + > deck + > deck + list + row.activatable:only-child, +hdyleaflet list.view row.activatable:only-child, +hdyleaflet list.frame row.activatable:only-child, +leaflet list.view row.activatable:only-child, +leaflet list.frame row.activatable:only-child, +box.horizontal > stack.background list.view row.activatable:only-child, +box.horizontal > stack.background list.frame row.activatable:only-child, +hdyleaflet frame.view list row.activatable:only-child, +leaflet frame.view list row.activatable:only-child, +box.horizontal > stack.background frame.view list row.activatable:only-child, +hdyleaflet + stack.background + scrolledwindow + > viewport + list + row.activatable:only-child, +hdyleaflet overlay scrolledwindow > viewport list row.activatable:only-child, +leaflet + stack.background + scrolledwindow + > viewport + list + row.activatable:only-child, +leaflet overlay scrolledwindow > viewport list row.activatable:only-child, +box.horizontal + > stack.background + stack.background + scrolledwindow + > viewport + list + row.activatable:only-child, +box.horizontal + > stack.background + overlay + scrolledwindow + > viewport + list + row.activatable:only-child, +hdyleaflet + frame:not(.view) + list:not(.contacts-contact-list) + row.activatable:only-child, +leaflet + frame:not(.view) + list:not(.contacts-contact-list) + row.activatable:only-child, +box.horizontal + > stack.background + frame:not(.view) + list:not(.contacts-contact-list) + row.activatable:only-child, +list.tweak-group list row.activatable:only-child, +.tweak-group-startup row.activatable:only-child, +list.content:not(.conversation-listbox) > row:only-child { + border-radius: 6px; +} + +window.background.csd stack stack stack frame > list row.activatable:focus, +window.background.csd > stack > list row.activatable:focus, +preferencesgroup list row.activatable:focus, +.geary-accounts-editor-pane list row.activatable:focus, +window.background.csd.unified > deck > deck > deck list row.activatable:focus, +hdyleaflet list.view row.activatable:focus, +hdyleaflet list.frame row.activatable:focus, +leaflet list.view row.activatable:focus, +leaflet list.frame row.activatable:focus, +box.horizontal > stack.background list.view row.activatable:focus, +box.horizontal > stack.background list.frame row.activatable:focus, +hdyleaflet frame.view list row.activatable:focus, +leaflet frame.view list row.activatable:focus, +box.horizontal > stack.background frame.view list row.activatable:focus, +hdyleaflet + stack.background + scrolledwindow + > viewport + list + row.activatable:focus, +hdyleaflet overlay scrolledwindow > viewport list row.activatable:focus, +leaflet stack.background scrolledwindow > viewport list row.activatable:focus, +leaflet overlay scrolledwindow > viewport list row.activatable:focus, +box.horizontal + > stack.background + stack.background + scrolledwindow + > viewport + list + row.activatable:focus, +box.horizontal + > stack.background + overlay + scrolledwindow + > viewport + list + row.activatable:focus, +hdyleaflet + frame:not(.view) + list:not(.contacts-contact-list) + row.activatable:focus, +leaflet frame:not(.view) list:not(.contacts-contact-list) row.activatable:focus, +box.horizontal + > stack.background + frame:not(.view) + list:not(.contacts-contact-list) + row.activatable:focus, +list.tweak-group list row.activatable:focus, +.tweak-group-startup row.activatable:focus, +list.content:not(.conversation-listbox) > row:focus { + box-shadow: inset 0 0 0 2px alpha(currentColor, 0.08); +} + +window.background.csd + > box.vertical + > overlay + > stack + > box.vertical + > box.horizontal + > revealer + > stack + > list + > row.activatable, +window.background.csd + > box.vertical + > overlay + > stack + > box.vertical + > box.horizontal + > revealer + > stack + > scrolledwindow + > viewport.frame + > list + > row.activatable, +window.background.csd + > box.vertical + > overlay + > stack + > box.vertical + > box.horizontal + > revealer + > stack + > box.vertical + > stack + > scrolledwindow + > viewport.frame + > list + > row.activatable, +hdyleaflet + > box.vertical + > scrolledwindow + > viewport.frame + list:not(.view):not(.tweak-group) + row.activatable, +leaflet + > box.vertical + > scrolledwindow + > viewport.frame + list:not(.view):not(.tweak-group) + row.activatable, +box.horizontal + > stack.background + > box.vertical + > scrolledwindow + > viewport.frame + list:not(.view):not(.tweak-group) + row.activatable, +list.navigation-sidebar > row { + border-radius: 6px; + margin: 1px 3px; +} + +window.background.csd + > box.vertical + > overlay + > stack + > box.vertical + > box.horizontal + > revealer + > stack + > list + > row.activatable:selected, +window.background.csd + > box.vertical + > overlay + > stack + > box.vertical + > box.horizontal + > revealer + > stack + > scrolledwindow + > viewport.frame + > list + > row.activatable:selected, +window.background.csd + > box.vertical + > overlay + > stack + > box.vertical + > box.horizontal + > revealer + > stack + > box.vertical + > stack + > scrolledwindow + > viewport.frame + > list + > row.activatable:selected, +hdyleaflet + > box.vertical + > scrolledwindow + > viewport.frame + list:not(.view):not(.tweak-group) + row.activatable:selected, +leaflet + > box.vertical + > scrolledwindow + > viewport.frame + list:not(.view):not(.tweak-group) + row.activatable:selected, +box.horizontal + > stack.background + > box.vertical + > scrolledwindow + > viewport.frame + list:not(.view):not(.tweak-group) + row.activatable:selected, +list.navigation-sidebar > row:selected { + background-color: #; +} + +window.background.csd + > box.vertical + > overlay + > stack + > box.vertical + > box.horizontal + > revealer + > stack + > list + > row.activatable:selected, +window.background.csd + > box.vertical + > overlay + > stack + > box.vertical + > box.horizontal + > revealer + > stack + > scrolledwindow + > viewport.frame + > list + > row.activatable:selected, +window.background.csd + > box.vertical + > overlay + > stack + > box.vertical + > box.horizontal + > revealer + > stack + > box.vertical + > stack + > scrolledwindow + > viewport.frame + > list + > row.activatable:selected, +hdyleaflet + > box.vertical + > scrolledwindow + > viewport.frame + list:not(.view):not(.tweak-group) + row.activatable:selected, +leaflet + > box.vertical + > scrolledwindow + > viewport.frame + list:not(.view):not(.tweak-group) + row.activatable:selected, +box.horizontal + > stack.background + > box.vertical + > scrolledwindow + > viewport.frame + list:not(.view):not(.tweak-group) + row.activatable:selected, +list.navigation-sidebar > row:selected, +window.background.csd + > box.vertical + > overlay + > stack + > box.vertical + > box.horizontal + > revealer + > stack + > list + > row.activatable:selected + image, +window.background.csd + > box.vertical + > overlay + > stack + > box.vertical + > box.horizontal + > revealer + > stack + > scrolledwindow + > viewport.frame + > list + > row.activatable:selected + image, +window.background.csd + > box.vertical + > overlay + > stack + > box.vertical + > box.horizontal + > revealer + > stack + > box.vertical + > stack + > scrolledwindow + > viewport.frame + > list + > row.activatable:selected + image, +hdyleaflet + > box.vertical + > scrolledwindow + > viewport.frame + list:not(.view):not(.tweak-group) + row.activatable:selected + image, +leaflet + > box.vertical + > scrolledwindow + > viewport.frame + list:not(.view):not(.tweak-group) + row.activatable:selected + image, +box.horizontal + > stack.background + > box.vertical + > scrolledwindow + > viewport.frame + list:not(.view):not(.tweak-group) + row.activatable:selected + image, +list.navigation-sidebar > row:selected image, +window.background.csd + > box.vertical + > overlay + > stack + > box.vertical + > box.horizontal + > revealer + > stack + > list + > row.activatable:selected + label, +window.background.csd + > box.vertical + > overlay + > stack + > box.vertical + > box.horizontal + > revealer + > stack + > scrolledwindow + > viewport.frame + > list + > row.activatable:selected + label, +window.background.csd + > box.vertical + > overlay + > stack + > box.vertical + > box.horizontal + > revealer + > stack + > box.vertical + > stack + > scrolledwindow + > viewport.frame + > list + > row.activatable:selected + label, +hdyleaflet + > box.vertical + > scrolledwindow + > viewport.frame + list:not(.view):not(.tweak-group) + row.activatable:selected + label, +leaflet + > box.vertical + > scrolledwindow + > viewport.frame + list:not(.view):not(.tweak-group) + row.activatable:selected + label, +box.horizontal + > stack.background + > box.vertical + > scrolledwindow + > viewport.frame + list:not(.view):not(.tweak-group) + row.activatable:selected + label, +list.navigation-sidebar > row:selected label { + color: #; + font-weight: 500; +} + +.csd .tweak-categories { + border-bottom-left-radius: 12px; +} + +.csd.maximized .tweak-categories, +.csd.tiled .tweak-categories { + border-bottom-left-radius: 0; +} + +.tweak { + padding: 3px; +} + +.tweak.title:hover { + box-shadow: none; +} + +.tweak-group-#, +.tweak-#, +.tweak-#:hover { + background-image: image(#); +} + +.tweak-startup, +.tweak-startup:hover { + background-image: image(#); +} + +.tweak-group-startup { + background-image: image(#); +} + +.tweak-group-startup row.tweak-startup { + border-radius: 6px; + background-color: transparent; + background-image: none; +} + +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(); +} + +/************************ + * Gnome Control Center * + ************************/ +window.background.csd + > headerbar.titlebar + > leaflet + > headerbar:first-child:not(:only-child), +window.background.csd + > headerbar.titlebar + > hdyleaflet + > headerbar:first-child:not(:only-child) { + border-top-left-radius: 12px; +} + +window.background.csd + > headerbar.titlebar + > leaflet + > headerbar:last-child:not(:only-child), +window.background.csd + > headerbar.titlebar + > hdyleaflet + > headerbar:last-child:not(:only-child) { + border-top-right-radius: 12px; +} + +window.background.csd + > headerbar.titlebar + > leaflet + > headerbar:first-child:only-child, +window.background.csd + > headerbar.titlebar + > leaflet + > headerbar:last-child:only-child, +window.background.csd + > headerbar.titlebar + > hdyleaflet + > headerbar:first-child:only-child, +window.background.csd + > headerbar.titlebar + > hdyleaflet + > headerbar:last-child:only-child { + border-top-right-radius: 12px; + border-top-left-radius: 12px; +} + +window.background.csd > stack:not(.titlebar) > stack.background { + border-radius: 0 0 12px 12px; +} + +window.background.csd > leaflet > stack.background, +window.background.csd > hdyleaflet > stack.background, +window.background.csd > box.horizontal > stack.background { + background: none; +} + +window.background.csd + > leaflet + > stack.background + > widget + > box.vertical + > box.vertical + > scrolledwindow + > viewport.frame, +window.background.csd + > hdyleaflet + > stack.background + > widget + > box.vertical + > box.vertical + > scrolledwindow + > viewport.frame, +window.background.csd + > box.horizontal + > stack.background + > widget + > box.vertical + > box.vertical + > scrolledwindow + > viewport.frame { + background-color: #; + border-bottom-right-radius: 12px; +} + +window.background.csd + > leaflet + > stack.background + > widget + > box.vertical + > box.vertical + > scrolledwindow + > viewport.frame + > box.vertical.view, +window.background.csd + > hdyleaflet + > stack.background + > widget + > box.vertical + > box.vertical + > scrolledwindow + > viewport.frame + > box.vertical.view, +window.background.csd + > box.horizontal + > stack.background + > widget + > box.vertical + > box.vertical + > scrolledwindow + > viewport.frame + > box.vertical.view { + background: none; +} + +window.background.csd > leaflet > box.vertical > scrolledwindow.view, +window.background.csd > hdyleaflet > box.vertical > scrolledwindow.view, +window.background.csd > box.horizontal > box.vertical > scrolledwindow.view { + background-color: #; + border-bottom-left-radius: 12px; +} + +window.background.csd + > leaflet + > box.vertical + > scrolledwindow.view + > viewport.frame + > stack, +window.background.csd + > hdyleaflet + > box.vertical + > scrolledwindow.view + > viewport.frame + > stack, +window.background.csd + > box.horizontal + > box.vertical + > scrolledwindow.view + > viewport.frame + > stack { + background-color: transparent; +} + +window.background.csd + > leaflet + > box.vertical + > scrolledwindow.view + > viewport.frame + > stack + list, +window.background.csd + > hdyleaflet + > box.vertical + > scrolledwindow.view + > viewport.frame + > stack + list, +window.background.csd + > box.horizontal + > box.vertical + > scrolledwindow.view + > viewport.frame + > stack + list { + background-color: transparent; +} + +window.background.csd + > leaflet + > box.vertical + > scrolledwindow.view + > viewport.frame + > stack + list + row.activatable:not(:hover):not(:active):not(:selected), +window.background.csd + > hdyleaflet + > box.vertical + > scrolledwindow.view + > viewport.frame + > stack + list + row.activatable:not(:hover):not(:active):not(:selected), +window.background.csd + > box.horizontal + > box.vertical + > scrolledwindow.view + > viewport.frame + > stack + list + row.activatable:not(:hover):not(:active):not(:selected) { + background-color: transparent; +} + +window.background.csd.maximized + > headerbar.titlebar + > leaflet + > headerbar:first-child:not(:only-child), +window.background.csd.maximized + > headerbar.titlebar + > hdyleaflet + > headerbar:first-child:not(:only-child), +window.background.csd.tiled + > headerbar.titlebar + > leaflet + > headerbar:first-child:not(:only-child), +window.background.csd.tiled + > headerbar.titlebar + > hdyleaflet + > headerbar:first-child:not(:only-child) { + border-top-left-radius: 0; +} + +window.background.csd.maximized + > headerbar.titlebar + > leaflet + > headerbar:last-child:not(:only-child), +window.background.csd.maximized + > headerbar.titlebar + > hdyleaflet + > headerbar:last-child:not(:only-child), +window.background.csd.tiled + > headerbar.titlebar + > leaflet + > headerbar:last-child:not(:only-child), +window.background.csd.tiled + > headerbar.titlebar + > hdyleaflet + > headerbar:last-child:not(:only-child) { + border-top-right-radius: 0; +} + +window.background.csd.maximized + > headerbar.titlebar + > leaflet + > headerbar:first-child:only-child, +window.background.csd.maximized + > headerbar.titlebar + > leaflet + > headerbar:last-child:only-child, +window.background.csd.maximized + > headerbar.titlebar + > hdyleaflet + > headerbar:first-child:only-child, +window.background.csd.maximized + > headerbar.titlebar + > hdyleaflet + > headerbar:last-child:only-child, +window.background.csd.tiled + > headerbar.titlebar + > leaflet + > headerbar:first-child:only-child, +window.background.csd.tiled + > headerbar.titlebar + > leaflet + > headerbar:last-child:only-child, +window.background.csd.tiled + > headerbar.titlebar + > hdyleaflet + > headerbar:first-child:only-child, +window.background.csd.tiled + > headerbar.titlebar + > hdyleaflet + > headerbar:last-child:only-child { + border-top-right-radius: 0; + border-top-left-radius: 0; +} + +window.background.csd.maximized > stack:not(.titlebar) > stack.background, +window.background.csd.tiled > stack:not(.titlebar) > stack.background { + border-radius: 0; +} + +window.background.csd.maximized + > leaflet + > stack.background + > widget + > box.vertical + > box.vertical + > scrolledwindow + > viewport.frame, +window.background.csd.maximized + > hdyleaflet + > stack.background + > widget + > box.vertical + > box.vertical + > scrolledwindow + > viewport.frame, +window.background.csd.maximized + > box.horizontal + > stack.background + > widget + > box.vertical + > box.vertical + > scrolledwindow + > viewport.frame, +window.background.csd.tiled + > leaflet + > stack.background + > widget + > box.vertical + > box.vertical + > scrolledwindow + > viewport.frame, +window.background.csd.tiled + > hdyleaflet + > stack.background + > widget + > box.vertical + > box.vertical + > scrolledwindow + > viewport.frame, +window.background.csd.tiled + > box.horizontal + > stack.background + > widget + > box.vertical + > box.vertical + > scrolledwindow + > viewport.frame { + border-bottom-right-radius: 0; +} + +window.background.csd.maximized > leaflet > box.vertical > scrolledwindow.view, +window.background.csd.maximized + > hdyleaflet + > box.vertical + > scrolledwindow.view, +window.background.csd.maximized + > box.horizontal + > box.vertical + > scrolledwindow.view, +window.background.csd.tiled > leaflet > box.vertical > scrolledwindow.view, +window.background.csd.tiled > hdyleaflet > box.vertical > scrolledwindow.view, +window.background.csd.tiled + > box.horizontal + > box.vertical + > scrolledwindow.view { + border-bottom-left-radius: 0; +} + +dialog.background.csd + > box.vertical.dialog-vbox + > notebook + > stack + > box.horizontal + > notebook + > stack { + border-radius: 0 0 12px 12px; +} + +dialog.background.csd.maximized + > box.vertical.dialog-vbox + > notebook + > stack + > box.horizontal + > notebook + > stack, +dialog.background.csd.tiled + > box.vertical.dialog-vbox + > notebook + > stack + > box.horizontal + > notebook + > stack { + border-radius: 0; +} + +hdyleaflet frame > border, +leaflet frame > border, +box.horizontal > stack.background frame > border { + border: none; +} + +hdyleaflet + > box.vertical + > scrolledwindow + > viewport.frame + list:not(.view):not(.tweak-group), +leaflet + > box.vertical + > scrolledwindow + > viewport.frame + list:not(.view):not(.tweak-group), +box.horizontal + > stack.background + > box.vertical + > scrolledwindow + > viewport.frame + list:not(.view):not(.tweak-group) { + padding: 3px; +} + +hdyleaflet frame.view list, +leaflet frame.view list, +box.horizontal > stack.background frame.view list { + background: none; +} + +hdyleaflet frame.view list > separator, +leaflet frame.view list > separator, +box.horizontal > stack.background frame.view list > separator { + background: none; + min-height: 0; +} + +/************************ + * Gnome system monitor * + ************************/ +window#gnome-system-monitor.background.csd > box.vertical > stack { + background-color: #; + border-radius: 0 0 12px 12px; +} + +window#gnome-system-monitor.background.csd + > box.vertical + > stack + > box.vertical + > revealer + > actionbar + > revealer + > box { + border-radius: 0 0 12px 12px; +} + +window#gnome-system-monitor.background:not(.csd) > box.vertical > headerbar { + box-shadow: none; +} + +/************************ + * Gnome Sound Recorder * + ************************/ +stack > grid.vertical > scrolledwindow { + border: none; + border-radius: 0 0 12px 12px; +} + +stack > grid.vertical > scrolledwindow > viewport.frame list { + border-radius: 0 0 12px 12px; +} + +stack > grid.vertical scrolledwindow.frame.emptyGrid { + border: none; +} + +/****************** + * Gnome Contacts * + ******************/ +window.background.csd scrolledwindow.contacts-contact-form { + border-bottom-right-radius: 12px; +} + +/************************ + * Epiphany (Gnome Web) * + ************************/ +tabbox { + border: none; + background-color: ; + padding: 3px; + margin: 3px; + border-radius: 9px; +} + +tabbox > tab button { + min-height: 24px; + min-width: 24px; + border-radius: 9999px; + border: none; + padding: 0; +} + +/***************** + * Gnome Weather * + *****************/ +#weather-page, +#weekly-forecast-frame { + border-bottom-right-radius: 12px; +} + +#weather-page-content-view { + border-bottom-right-radius: 12px; + border-bottom-left-radius: 12px; +} + +/*************** + * Gnome Music * + ***************/ +window.background.csd box.vertical > overlay > stack.background { + border-radius: 0 0 12px 12px; +} + +/**************** + * Gnome Clocks * + ****************/ +/************* + * Rhythmbox * + *************/ +window.background + > box.vertical + > toolbar.primary-toolbar + > toolitem + > box.horizontal:not(.linked) + > button.toggle, +window.background + > box.vertical + > toolbar.primary-toolbar + > toolitem + > .linked + > button:not(.toggle):not(.raised):not(.flat), +window.background + > box.vertical + > toolbar.primary-toolbar + > toolitem + button.flat.scale, +window.background + > box.vertical + > toolbar.primary-toolbar + > toolitem + > .linked + > button.image-button.raised, +window.csd + > box.vertical + > box.vertical + > toolbar.horizontal + > toolitem + > .linked + > button, +window.csd + > box.vertical + > box.vertical + > toolbar.horizontal + > toolitem + > box.horizontal + > button, +window.solid-csd + > box.vertical + > box.vertical + > toolbar.horizontal + > toolitem + > .linked + > button, +window.solid-csd + > box.vertical + > box.vertical + > toolbar.horizontal + > toolitem + > box.horizontal + > button { + min-height: 24px; + min-width: 24px; + padding: 6px; + margin: 0; +} + +.sidebar-paned .inline-toolbar.horizontal.sidebar-toolbar button.image-button { + border-radius: 9999px; +} + +.sidebar-paned + .inline-toolbar.horizontal.sidebar-toolbar + button.image-button:not(:first-child), +.sidebar-paned + .inline-toolbar.horizontal.sidebar-toolbar + button.image-button:not(:last-child) { + border-top-left-radius: 9999px; + border-bottom-left-radius: 9999px; + border-top-right-radius: 9999px; + border-bottom-right-radius: 9999px; +} + +.sidebar-paned + .inline-toolbar.horizontal.sidebar-toolbar + button.image-button.image-button:not(.text-button):first-child { + border-top-left-radius: 9999px; + border-bottom-left-radius: 9999px; +} + +.sidebar-paned + .inline-toolbar.horizontal.sidebar-toolbar + button.image-button.image-button:not(.text-button):last-child { + border-top-right-radius: 9999px; + border-bottom-right-radius: 9999px; +} + +.sidebar-paned + .inline-toolbar.horizontal.sidebar-toolbar + button.image-button + > widget + > box + > image { + padding: 0; +} + +window.csd > box.vertical > box.vertical > toolbar.horizontal, +window.solid-csd > box.vertical > box.vertical > toolbar.horizontal { + padding: 6px; + border-bottom: none; + box-shadow: none; + background-color: transparent; +} + +window.csd > box.vertical > box.vertical > frame, +window.solid-csd > box.vertical > box.vertical > frame { + margin: -1px 0; + padding: 0; +} + +window.csd > box.vertical > box.vertical > frame > border, +window.solid-csd > box.vertical > box.vertical > frame > border { + border: none; +} + +window.background + > box.vertical + > toolbar.primary-toolbar + > toolitem + > .linked + > button.image-button.raised + > widget + > box + > image { + padding: 0; +} + +/********** + * Polari * + **********/ +.polari-room-list .sidebar { + background: none; +} + +.polari-room-list .sidebar > row.activatable:selected { + background-color: #; + color: ; +} + +stack.view.polari-entry-area { + background-color: #; + border-top: 1px solid ; + border-bottom-right-radius: 12px; +} + +stack.view.polari-entry-area:disabled { + background-image: image(#); +} + +/*********** + * Builder * + ***********/ +layouttabbar { + border-bottom: 1px solid ; + background-color: #; +} + +layouttabbar > box > button { + margin: 2px 0; +} + +layouttab { + margin: 0 8px; + border-style: none solid; + border-width: 1px; + border-color: ; + box-shadow: inset 0 -2px #; + background-color: #; +} + +layouttab separator.vertical { + margin: 8px 4px; +} + +layouttab button.text-button, +layouttab button.image-button, +layouttab button { + margin-top: 8px; + margin-bottom: 8px; + padding: 0 4px; +} + +layout { + border: 1px solid ; + -pnldockbin-handle-size: 1; +} + +entry.search-missing { + background-color: #; + color: ; +} + +window.workbench treeview.image { + color: ; +} + +popover.popover-selector list { + padding: 6px; +} + +popover.popover-selector list row { + border-radius: 6px; +} + +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: 6px; +} + +omnibar:not(:hover):not(:active) entry { + color: ; +} + +popover.omnibar list row:not(:last-child) { + border-bottom: 1px solid ; +} + +entry.preferences-search { + border-bottom: 1px solid ; + box-shadow: none; + background-color: #; +} + +preferences stacksidebar.sidebar list { + background-color: #; +} + +preferences stacksidebar.sidebar:dir(ltr) list, +preferences stacksidebar.sidebar:dir(rtl) list { + border-style: none; +} + +preferences > box > box:dir(ltr) { + border-right: 1px solid ; +} + +preferences > box > box:dir(rtl) { + border-left: 1px solid ; +} + +popover.messagepopover.background { + padding: 0; +} + +popover.messagepopover .popover-action-area button { + padding: 8px 16px; + border-top: 1px solid ; + border-radius: 0; +} + +popover.messagepopover .popover-action-area button:first-child { + border-bottom-left-radius: 6px; +} + +popover.messagepopover .popover-action-area button:last-child { + border-bottom-right-radius: 6px; +} + +popover.messagepopover .popover-content-area { + margin: 16px; +} + +popover.transfers list { + background-color: transparent; +} + +popover.transfers list row:not(:first-child) { + border-top: 1px solid ; +} + +popover.transfers list row > box { + padding: 10px; +} + +dockbin { + border: 1px solid ; + -pnldockbin-handle-size: 1; +} + +dockpaned { + border: 1px solid ; +} + +eggsearchbar box.search-bar { + padding: 0 8px; + border-bottom: 1px solid ; + background-color: #; +} + +docktabstrip { + padding: 0 8px; + border-bottom: 1px solid ; + background-color: #; +} + +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: 6px 6px; + border-width: 1px; + border-color: transparent; + box-shadow: inset 0 -2px transparent; + background-image: radial-gradient(circle, # 10%, transparent 0%); + background-repeat: no-repeat; + background-position: center; + background-size: 0% 0%; + color: ; + font-weight: 500; +} + +docktab:hover { + background-color: alpha(currentColor, 0.08); + color: #; +} + +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 #; + background-color: transparent; + background-image: radial-gradient(circle, transparent 10%, transparent 0%); + background-size: 1000% 1000%; + color: #; +} + +dockoverlayedge { + background-color: #; +} + +dockoverlayedge docktabstrip { + padding: 0; + border: none; +} + +dockoverlayedge.left-edge docktab:checked { + box-shadow: inset -2px 0 #; +} + +dockoverlayedge.right-edge docktab:checked { + box-shadow: inset 2px 0 #; +} + +pillbox { + background-color: #; + border-radius: 6px; +} + +layoutpane entry.search { + border-bottom: 1px solid ; + box-shadow: none; + background-color: #; +} + +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: 10px; + padding-right: 10px; +} + +button.dzlmenubutton image { + min-width: 30px; +} + +button.dzlmenubutton image.arrow { + min-width: 27px; +} + +button.dzlmenubuttonitem { + color: #; + font-weight: normal; +} + +button.dzlmenubuttonitem:disabled { + color: ; +} + +idelayoutstackheader { + border-bottom: 1px solid ; +} + +idelayoutstackheader button:checked { + color: #; +} + +ideeditorutilities > dzldockpaned > box > stackswitcher { + padding: 8px 0; + background-color: #; +} + +ideeditorutilities > dzldockpaned > box > stackswitcher:dir(ltr) { + border-right: 1px solid ; +} + +ideeditorutilities > dzldockpaned > box > stackswitcher:dir(rtl) { + border-left: 1px solid ; +} + +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(242, 205, 205, 0.7) 10%, + transparent 0% + ); +} + +ideeditorutilities > dzldockpaned > box > stackswitcher button:checked { + background-color: transparent; + color: #; +} + +ideeditorutilities > dzldockpaned > box > stackswitcher button:dir(ltr) { + margin-right: -1px; +} + +ideeditorutilities + > dzldockpaned + > box + > stackswitcher + button:dir(ltr):checked { + box-shadow: inset -2px 0 #; +} + +ideeditorutilities > dzldockpaned > box > stackswitcher button:dir(rtl) { + margin-left: -1px; +} + +ideeditorutilities + > dzldockpaned + > box + > stackswitcher + button:dir(rtl):checked { + box-shadow: inset 2px 0 #; +} + +ideeditorsidebar notebook header { + background: transparent; +} + +popover.messagepopover list { + border: 1px solid ; +} + +popover.messagepopover list row:not(:last-child) { + border-bottom: 1px solid ; +} + +/********** + * Photos * + **********/ +GdMainIconView.content-view { + -gdmainiconview-icon-size: 48; +} + +.documents-counter { + margin: 8px; + border-radius: 9999px; + box-shadow: 0 2px 2.4px -1px , + 0 4px 3px 0 , 0 1px 6px 0 ; + background-color: #; + color: ; + font-weight: bold; +} + +.documents-scrolledwin.frame { + border-style: none; +} + +.documents-scrolledwin.frame frame.content-view > border { + border-style: none; +} + +.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: #; + font-weight: normal; +} + +button.photos-filter-preview:checked { + background-color: alpha(currentColor, 0.06); + color: #; +} + +button.photos-filter-preview:checked image { + color: #; +} + +overlay grid.horizontal > revealer > scrolledwindow.frame:dir(ltr) { + border-style: none none none solid; +} + +overlay grid.horizontal > revealer > scrolledwindow.frame:dir(rtl) { + border-style: none solid none none; +} + +/********* + * Music * + *********/ +.side-panel:dir(ltr) { + border-style: solid; + border-color: ; +} + +.side-panel:dir(rtl) { + border-style: solid; + border-color: ; +} + +.side-panel .view { + background-image: image(#); +} + +.side-panel .view:hover { + background-image: image(#363636); +} + +.side-panel .view:selected { + background-image: image(#); +} + +.side-panel .view:selected:hover { + background-image: image(rgba(210, 210, 210, 0.9896)); +} + +.songs-list:hover { + background-image: image(alpha(currentColor, 0.08)); +} + +frame.documents-dropdown { + margin: 8px; +} + +frame.documents-dropdown > border { + border: none; +} + +box.vertical > revealer > toolbar.search-bar { + border-bottom: 1px solid ; + background-clip: border-box; +} + +box.vertical > revealer > toolbar.search-bar button > widget { + -gtk-icon-source: -gtk-icontheme('pan-down-symbolic'); +} + +/************* + * Documents * + *************/ +.documents-scrolledwin { + background-color: transparent; +} + +.documents-scrolledwin .content-view:not(:selected):not(:hover) { + background-color: transparent; +} + +.documents-scrolledwin viewport.frame { + background-color: transparent; +} + +.documents-scrolledwin + viewport.frame + widget + > frame.content-view:not(:selected):not(:hover) { + background-color: transparent; +} + +.documents-scrolledwin + viewport.frame + widget + > frame.content-view:not(:selected):not(:hover) + border { + border: none; +} + +/******************* + * Document Viewer * + *******************/ +window.background.csd evview.view.content-view { + border-radius: 0 0 12px 12px; +} + +/******************* + * Archive Manager * + *******************/ +.background.csd > grid.horizontal > paned.horizontal > scrolledwindow { + border-radius: 0 0 12px 12px; + background-color: #; +} + +.background.csd + > grid.horizontal + > paned.horizontal + > box.vertical + > scrolledwindow { + border-radius: 0 0 0 12px; + background-color: #; +} + +/************ + * Terminal * + ************/ +terminal-window decoration { + padding: 0 2px 3px 2px; + background-color: #; + border-radius: 12px; +} + +terminal-window.background.csd, +terminal-window.background.csd.maximized { + border-radius: 0 0 0 0; +} + +terminal-window notebook > header > box { + margin: -2px -2px -2px 1px; +} + +terminal-window notebook > header > box button { + min-height: 24px; + min-width: 24px; + padding: 3px; +} + +window.background > box.vertical > box.horizontal > frame > border { + border-width: 0 1px 0 0; +} + +window.background + > box.vertical + > box.horizontal + > frame + > scrolledwindow + > viewport.frame + list { + border-bottom-left-radius: 12px; +} + +window.background + > box.vertical + > box.horizontal + > stack + > widget + > notebook.frame { + border-width: 0; +} + +window.background + > box.vertical + > box.horizontal + > stack + > widget + > notebook.frame + > stack { + border-bottom-right-radius: 12px; +} + +.tilix-background, +.tilix-background vte-terminal { + border-radius: 0 0 12px 12px; +} + +/********* + * 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: -6px; +} + +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: -6px; +} + +tasklistview > box > revealer > box > button .dim-label { + color: inherit; +} + +/******* + * Eog * + *******/ +#eog-thumb-nav scrolledwindow { + border-top: none; +} + +/************* + * Evolution * + *************/ +frame.taskbar > border { + border-style: solid none none; +} + +box.vertical > paned.horizontal notebook widget .frame { + border-style: none; +} + +/*********** + * Fractal * + ***********/ +.background.csd.main-window .sidebar.rooms-sidebar { + border-bottom-left-radius: 12px; +} + +/******** + * Gitg * + ********/ +frame.commit-frame > border { + border-style: solid none none; +} + +/************** + * Characters * + **************/ +box.dialog-vbox scrolledwindow.related { + border: 1px solid ; +} + +list.categories { + background-image: image(#); +} + +/********* + * Boxes * + *********/ +.transparent-bg + stack overlay > label { + min-height: 24px; + padding: 0 4px; + border-radius: 6px; + background-color: #; + color: #; +} + +/************** + * Calculator * + **************/ +button.title label { + min-height: 36px; +} + +/********* + * Geary * + *********/ +window.background.csd.geary-main-window + > deck + > overlay + > box.vertical + > paned.horizontal + > box.sidebar.vertical, +window#GearyMainWindow.background.csd + > deck + > overlay + > box.vertical + > paned.horizontal + > box.sidebar.vertical { + border-bottom-left-radius: 12px; +} + +window.background.csd.geary-main-window + > deck + > overlay + > box.vertical + > paned.horizontal + > box.sidebar.vertical + statusbar, +window#GearyMainWindow.background.csd + > deck + > overlay + > box.vertical + > paned.horizontal + > box.sidebar.vertical + statusbar { + border-bottom-left-radius: 12px; +} + +window.background.csd.geary-main-window stack#conversation_viewer, +window#GearyMainWindow.background.csd stack#conversation_viewer { + border-bottom-right-radius: 12px; +} + +window.background.csd.geary-main-window + stack#conversation_viewer + scrolledwindow.geary-conversation-scroller + viewport.frame + list.conversation-listbox, +window#GearyMainWindow.background.csd + stack#conversation_viewer + scrolledwindow.geary-conversation-scroller + viewport.frame + list.conversation-listbox { + background: none; + border-bottom-right-radius: 12px; +} + +window.background.csd.geary-main-window + stack#conversation_viewer + .geary-expanded, +window#GearyMainWindow.background.csd + stack#conversation_viewer + .geary-expanded { + animation: none; + background-image: none; +} + +window.background.csd.geary-main-window + stack#conversation_viewer + .geary-expanded + > .geary-composer-embed + actionbar + > revealer + > box, +window#GearyMainWindow.background.csd + stack#conversation_viewer + .geary-expanded + > .geary-composer-embed + actionbar + > revealer + > box { + border-radius: 0; +} + +window.background.csd.geary-main-window + stack#conversation_viewer + .geary-expanded + > .geary-composer-embed + headerbar, +window#GearyMainWindow.background.csd + stack#conversation_viewer + .geary-expanded + > .geary-composer-embed + headerbar { + color: #; + background-color: #; + box-shadow: none; + border-bottom: 1px solid ; +} + +window.background.csd.geary-main-window + stack#conversation_viewer + .geary-composer-box + actionbar + > revealer + > box, +window#GearyMainWindow.background.csd + stack#conversation_viewer + .geary-composer-box + actionbar + > revealer + > box { + border-bottom-left-radius: 0; +} + +.geary-accounts-editor-pane frame:not(.geary-signature) > border, +.geary-accounts-editor-pane scrolledwindow.frame { + border: none; +} + +.geary-main-window.unified > deck > overlay > .geary-main-layout { + background-color: #; +} + +.geary-main-window.unified + > deck + > overlay + > .geary-main-layout + > leaflet + > headerbar, +.geary-main-window.unified + > deck + > overlay + > .geary-main-layout + > leaflet + > leaflet + > headerbar { + box-shadow: inset 0 -1px ; +} + +.geary-main-window.unified + > deck + > overlay + > .geary-main-layout + > leaflet + > separator.sidebar, +.geary-main-window.unified + > deck + > overlay + > .geary-main-layout + > leaflet + > leaflet + > separator.sidebar { + background-color: #; + box-shadow: inset 0 -1px ; + transition: background-color 75ms cubic-bezier(0, 0, 0.2, 1), + color 75ms cubic-bezier(0, 0, 0.2, 1), + box-shadow 75ms cubic-bezier(0, 0, 0.2, 1); +} + +.geary-main-window.unified + > deck + > overlay + > .geary-main-layout + > leaflet + > separator.sidebar:backdrop, +.geary-main-window.unified + > deck + > overlay + > .geary-main-layout + > leaflet + > leaflet + > separator.sidebar:backdrop { + background-color: #; +} + +.geary-main-window.unified + > deck + > overlay + > .geary-main-layout + > leaflet + > leaflet + > box.vertical + + separator.sidebar { + min-width: 1px; + background-color: ; +} + +.geary-main-window.unified frame.geary-conversation-frame scrolledwindow { + padding: 3px; +} + +.geary-main-window.unified + frame.geary-conversation-frame + scrolledwindow + treeview.view { + border: 1px solid transparent; + border-radius: 6px; + padding: 6px; +} + +.geary-main-window.unified + frame.geary-conversation-frame + scrolledwindow + treeview.view:selected, +.geary-main-window.unified + frame.geary-conversation-frame + scrolledwindow + treeview.view:active { + border-radius: 6px; + background-color: #; + color: ; +} + +.geary-main-window.unified separator.geary-sidebar-pane-separator { + min-width: 1px; + background-color: ; +} + +.geary-main-window.unified + geary-conversation-viewer#conversation_viewer + list.background.conversation-listbox.content + > row.activatable { + border: 1px solid ; + border-bottom-width: 0; + background-color: #; +} + +.geary-main-window.unified + geary-conversation-viewer#conversation_viewer + list.background.conversation-listbox.content + > row.activatable:first-child { + border-top-left-radius: 8px; + border-top-right-radius: 8px; +} + +.geary-main-window.unified + geary-conversation-viewer#conversation_viewer + list.background.conversation-listbox.content + .geary-attachment-pane { + border-radius: 0 0 8px 8px; +} + +.geary-main-window.unified + geary-conversation-viewer#conversation_viewer + list.background.conversation-listbox.content + .geary-attachment-pane + actionbar.background { + background-color: transparent; +} + +.geary-main-window.unified + geary-conversation-viewer#conversation_viewer + list.background.conversation-listbox.content + .geary-attachment-pane + actionbar.background + > revealer + > box { + border-radius: 0 0 6px 6px; +} + +/************** + * Extensions * + **************/ +window.background.csd stack stack stack frame > border, +window.background.csd > stack > stack > box > frame > border, +window.background.csd > stack > stack > box > box > frame > border, +window.background.csd > stack > box > stack > box > frame > border, +window.background.csd + > stack + > box + > stack + > scrolledwindow + > viewport + frame + > border, +window.background.csd + > stack + > box + > stack + > box + > scrolledwindow + > viewport + > frame + > border, +window.background.csd + > stack + > grid + > scrolledwindow + > viewport + > box + > frame + > border { + border: none; +} + +window.background.csd > stack > box > box > list, +window.background.csd > stack > box > stack > scrolledwindow > viewport > list { + border-bottom-left-radius: 12px; +} + +window.background.csd + > stack + > box + > .sidebar + > scrolledwindow + > viewport + > list { + padding: 0 0; +} + +/*********** + * Dialogs * + ***********/ +dialog.background.csd > headerbar.titlebar { + box-shadow: inset 0 -1px ; +} + +dialog.background.csd + > box.vertical.dialog-vbox + > grid.horizontal + > scrolledwindow.frame + > viewport.frame + list:first-child { + border-radius: 0 0 0 12px; +} + +dialog.background.csd + > box.vertical.dialog-vbox + > grid.horizontal + > scrolledwindow.frame + > viewport.frame + list:last-child { + border-radius: 0 0 12px 0; +} + +dialog.background.csd > box.vertical.dialog-vbox > stack > scrolledwindow, +dialog.background.csd + > box.vertical.dialog-vbox + > stack + > stack + > scrolledwindow { + border-radius: 0 0 12px 12px; + background-color: #; +} + +dialog.background.csd + > box.vertical.dialog-vbox + > stack + > scrolledwindow + iconview.view:not(:hover):not(:selected):not(:active), +dialog.background.csd + > box.vertical.dialog-vbox + > stack + > stack + > scrolledwindow + iconview.view:not(:hover):not(:selected):not(:active) { + background-color: transparent; +} + +dialog.background.csd + > box.vertical.dialog-vbox + > stack + > scrolledwindow + > viewport.frame + > list { + border-radius: 0 0 12px 12px; +} + +dialog.background.csd + > box.vertical.dialog-vbox + > stack + > scrolledwindow + > viewport.frame + > list + row.activatable:not(:hover):not(:selected):not(:active) { + background-color: transparent; +} + +dialog.background.csd > box.vertical.dialog-vbox > stack toolbar.toolbar { + border-radius: 0 0 12px 12px; +} + +dialog.background.csd > box.vertical.dialog-vbox > notebook > stack { + border-radius: 0 0 12px 12px; +} + +dialog.background.csd stack scrolledwindow.frame { + border-radius: 6px; +} + +dialog.background.csd stack scrolledwindow.frame textview.view { + border-radius: 6px; +} + +dialog.background.csd stack scrolledwindow.frame textview.view > text { + background: none; +} + +dialog.background.csd stack scrolledwindow viewport.frame.view { + border-radius: 6px; +} + +window.background.csd.unified headerbar { + box-shadow: none; +} + +window.background.csd.unified headerbar.selection-mode { + box-shadow: none; +} + +window.background.csd.unified, +window.background.csd.unified > decoration, +window.background.csd.unified > decoration-overlay { + border-radius: 12px; + border: none; + box-shadow: 0 2px 2.4px -1px , + 0 4px 3px 0 , 0 1px 6px 0 , + 0 0 0 2px #, 0 0 16px transparent; +} + +window.background.csd.unified:backdrop, +window.background.csd.unified > decoration:backdrop, +window.background.csd.unified > decoration-overlay:backdrop { + box-shadow: 0 2px 2px -2px , + 0 1px 2px -1px , 0 1px 2px -0.6px , + 0 0 0 2px #, 0 0 16px transparent; +} + +window.background.csd.unified.tiled > decoration-overlay, +window.background.csd.unified.tiled-top > decoration-overlay, +window.background.csd.unified.tiled-right > decoration-overlay, +window.background.csd.unified.tiled-bottom > decoration-overlay, +window.background.csd.unified.tiled-left > decoration-overlay, +window.background.csd.unified.maximized > decoration-overlay, +window.background.csd.unified.fullscreen > decoration-overlay { + box-shadow: none; +} + +window.background.csd.unified.tiled, +window.background.csd.unified.tiled > decoration, +window.background.csd.unified.tiled > decoration-overlay, +window.background.csd.unified.tiled-top, +window.background.csd.unified.tiled-top > decoration, +window.background.csd.unified.tiled-top > decoration-overlay, +window.background.csd.unified.tiled-right, +window.background.csd.unified.tiled-right > decoration, +window.background.csd.unified.tiled-right > decoration-overlay, +window.background.csd.unified.tiled-bottom, +window.background.csd.unified.tiled-bottom > decoration, +window.background.csd.unified.tiled-bottom > decoration-overlay, +window.background.csd.unified.tiled-left, +window.background.csd.unified.tiled-left > decoration, +window.background.csd.unified.tiled-left > decoration-overlay, +window.background.csd.unified.maximized, +window.background.csd.unified.maximized > decoration, +window.background.csd.unified.maximized > decoration-overlay, +window.background.csd.unified.fullscreen, +window.background.csd.unified.fullscreen > decoration, +window.background.csd.unified.fullscreen > decoration-overlay { + border-radius: 0; +} + +/********* + * Tilix * + *********/ +overlay > revealer.left > scrolledwindow.frame, +overlay > revealer.right > scrolledwindow.frame { + border-style: none; + box-shadow: 0 8px 6px -5px , + 0 16px 14.4px 2px , 0 6px 18px 5px ; +} + +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(#); +} + +.terminal-titlebar button { + border-radius: 0; +} + +button.image-button.session-new-button { + min-width: 32px; +} + +notebook.tilix-background tab > box > stack { + margin: -6px; +} + +button.flat.tilix-small-button { + min-height: 20px; + min-width: 16px; +} + +window > notebook > stack { + margin: 0 3px 3px 3px; +} + +window > notebook { + border-top-left-radius: 0px; + border-top-right-radius: 0px; +} + +/************** + * Terminator * + **************/ +.terminator-terminal-window paned > separator { + background-color: #; +} + +.terminator-terminal-window notebook.frame { + border-style: none; +} + +/************* + * Ubitquity * + *************/ +#live_installer .menubar progressbar trough { + border-radius: 4px; + background-color: ; +} + +/*********** + * 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: 6px; +} + +/************ + * Chromium * + ************/ +window.background.chromium { + background-color: #; +} + +window.background.chromium decoration { + background-clip: padding-box; + box-shadow: 0 8px 6px -5px , + 0 16px 14.4px 2px , 0 6px 18px 5px ; +} + +window.background.chromium entry, +window.background.chromium > button { + border: 1px solid #; +} + +window.background.chromium > button { + color: #; +} + +window.background.chromium > button:disabled { + color: ; +} + +window.background.chromium menubar, +window.background.chromium headerbar { + color: ; +} + +window.background.chromium headerbar button:active { + background-color: alpha(currentColor, 0.12); +} + +window.background.chromium spinner { + color: #; +} + +window.background.chromium textview.view { + background-color: transparent; +} + +window.background.chromium treeview.view.cell:selected:focus { + background-color: #; + color: ; +} + +window.background.chromium treeview.view button { + border: 1px solid #; + background-color: #; +} + +window.background.chromium menu { + border-color: #; +} + +window.background.chromium menu menuitem { + border-radius: 0; +} + +tooltip.background.chromium { + background-color: #191919; +} + +/*********** + * Firefox * + ***********/ +#MozillaGtkWidget > widget text { + background-color: #; +} + +#MozillaGtkWidget > widget text:selected { + background-color: #; + color: ; +} + +#MozillaGtkWidget > widget > separator { + color: #; +} + +#MozillaGtkWidget > widget > scrollbar { + background-clip: border-box; +} + +#MozillaGtkWidget > widget > frame > border { + border-color: #; +} + +#MozillaGtkWidget > widget > entry, +#MozillaGtkWidget > widget > button > button { + border: 1px solid #; + border-radius: 6px; + box-shadow: none; +} + +#MozillaGtkWidget > widget > entry:disabled, +#MozillaGtkWidget > widget > button > button:disabled { + border-color: ; +} + +#MozillaGtkWidget > widget > entry { + min-height: 30px; + background-color: #; +} + +#MozillaGtkWidget > widget > entry:focus { + border-color: #; + box-shadow: inset 0 0 0 1px #; +} + +#MozillaGtkWidget > widget > entry:disabled { + background-color: #; +} + +#MozillaGtkWidget > widget > button > button { + padding: 4px 8px; + background-size: auto; +} + +#MozillaGtkWidget > widget > button > button:hover { + box-shadow: inset 0 0 0 9999px alpha(currentColor, 0.08); +} + +#MozillaGtkWidget > widget > button > button:active { + background-image: image(alpha(currentColor, 0.12)); +} + +#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: #; +} + +#MozillaGtkWidget + > widget + > checkbutton + > check:not(:checked):not(:indeterminate):hover, +#MozillaGtkWidget + > widget + > checkbutton + > check:not(:checked):not(:indeterminate):active, +#MozillaGtkWidget + > widget + > radiobutton + > radio:not(:checked):not(:indeterminate):hover, +#MozillaGtkWidget + > widget + > radiobutton + > radio:not(:checked):not(:indeterminate):active { + color: #; +} + +#MozillaGtkWidget + > widget + > checkbutton + > check:not(:checked):not(:indeterminate):disabled, +#MozillaGtkWidget + > widget + > radiobutton + > radio:not(:checked):not(:indeterminate):disabled { + color: rgba(127, 132, 165, 0.5); +} + +#MozillaGtkWidget menu { + border: none; +} + +#MozillaGtkWidget > widget > menubar { + color: ; +} + +#MozillaGtkWidget > widget > menubar:hover { + color: #; +} + +#MozillaGtkWidget > widget > menubar:disabled { + color: ; +} + +#MozillaGtkWidget > widget > frame { + color: #; +} + +#MozillaGtkWidget menu > separator { + color: #; +} + +window.background:not(.csd) > window > menu menuitem { + transition: none; +} + +/************ + * 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; +} + +#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; +} + +#CanvasTable button { + min-height: 16px; + min-width: 16px; + padding: 0; +} + +#CanvasTable #HorizontalScrollbar { + border-top: 1px solid ; +} + +#CanvasTable #VerticalScrollbar:dir(ltr) { + border-left: 1px solid ; +} + +#CanvasTable #VerticalScrollbar:dir(rtl) { + border-right: 1px solid ; +} + +#Canvas_and_Dock frame > border { + border: none; +} + +#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; +} + +scrolledwindow#DialogNotebook + > viewport.frame + > notebook.frame + button.close-button + image { + padding: 4px; +} + +/*********** + * Synapse * + ***********/ +/*************** + * Libreoffice * + ***************/ +window.background + > grid + > widget + > widget + > scrolledwindow + > viewport + > grid + > box + > box + > frame + > box { + background-color: #; +} + +/********* + * Pamac * + *********/ +window.background.csd + > box.vertical + > overlay + > stack + > box.vertical + > box.horizontal + > revealer + > stack + > list, +window.background.csd + > box.vertical + > overlay + > stack + > box.vertical + > box.horizontal + > revealer + > stack + > scrolledwindow + > viewport.frame + > list, +window.background.csd + > box.vertical + > overlay + > stack + > box.vertical + > box.horizontal + > revealer + > stack + > box.vertical + > stack + > scrolledwindow + > viewport.frame + > list { + border: none; + border-radius: 0; +} + +/*********** + * GnuCash * + ***********/ +#gnc-id-main-window gnc-id-sheet-list > scrolledwindow { + box-shadow: 0 2px 2.4px -1px , + 0 4px 3px 0 , 0 1px 6px 0 ; + margin-top: -2px; + border: 2px solid #; +} + +#gnc-id-main-window treeview.view { + background-color: #; +} + +/********* + * 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: ; + -unitydecoration-active-shadow-radius: 18px; + -unitydecoration-inactive-shadow-color: ; + -unitydecoration-inactive-shadow-radius: 6px; + -unitydecoration-glow-size: 8px; + -unitydecoration-glow-color: #; + -unitydecoration-title-indent: 4px; + -unitydecoration-title-fade: 32px; + -unitydecoration-title-alignment: 0; +} + +UnityDecoration .top { + padding: 0 2px; + border-style: none; + border-radius: 12px 12px 0 0; + box-shadow: inset 0 1px ; + background-color: #; + color: #; +} + +UnityDecoration .top:backdrop { + background-color: #; + color: ; +} + +UnityDecoration .menuitem { + color: ; +} + +UnityDecoration .menuitem:hover { + box-shadow: inset 0 -2px currentColor; + background-color: transparent; + color: #; +} + +.background:not(.csd) headerbar:not(.titlebar) { + border-radius: 0; + box-shadow: 0 2px 2px -2px , + 0 1px 2px -1px , 0 1px 2px -0.6px ; +} + +.background:not(.csd) headerbar.inline-toolbar:not(.titlebar) { + border-style: none; +} + +UnityPanelWidget, +.unity-panel { + background-color: rgba(30, 30, 46, 0.95); + color: #; +} + +UnityPanelWidget:backdrop, +.unity-panel:backdrop { + color: ; +} + +.unity-panel.menuitem, +.unity-panel .menuitem { + color: ; +} + +.unity-panel.menubar.menuitem:hover, +.unity-panel.menubar .menuitem *:hover { + box-shadow: inset 0 -2px currentColor; + background-color: transparent; + color: #; +} + +.menu IdoPlaybackMenuItem.menuitem:active { + -gtk-icon-source: -gtk-icontheme('process-working-symbolic'); + animation: spin 1s linear infinite; + color: #; +} + +/************** + * Mate-Panel * + **************/ +.mate-panel-menu-bar menubar, +#PanelApplet-window-menu-applet-button { + background-color: transparent; +} + +.mate-panel-menu-bar { + background-color: rgba(30, 30, 46, 0.95); + color: ; + font-weight: 500; +} + +.mate-panel-menu-bar button { + min-height: 16px; + min-width: 16px; + padding: 0; + border-radius: 0; +} + +PanelToplevel.horizontal > grid > button { + min-width: 24px; +} + +PanelToplevel.vertical > grid > button { + min-height: 24px; +} + +PanelSeparator { + color: ; +} + +MatePanelAppletFrameDBus { + border-style: solid; + border-color: ; +} + +.mate-panel-menu-bar.horizontal MatePanelAppletFrameDBus { + border-width: 0 1px; +} + +.mate-panel-menu-bar.vertical MatePanelAppletFrameDBus { + border-width: 1px 0; +} + +.mate-panel-menu-bar menubar > menuitem { + color: ; +} + +.mate-panel-menu-bar menubar > menuitem:hover { + color: #; +} + +.mate-panel-menu-bar menubar > menuitem:disabled { + color: ; +} + +.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 0px; +} + +.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: #; +} + +PanelApplet.wnck-applet .wnck-pager:hover { + background-color: alpha(currentColor, 0.08); +} + +PanelApplet.wnck-applet .wnck-pager:active { + background-color: alpha(currentColor, 0.12); +} + +PanelApplet.wnck-applet .wnck-pager:selected { + background-color: #; +} + +.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 ; + border-radius: 7px; + box-shadow: inset 0 1px ; + background-color: #; +} + +#MatePanelPopupWindow frame > border { + border-style: none; +} + +#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 ; +} + +#MatePanelPopupWindow expander > title { + min-height: 32px; +} + +#MatePanelPopupWindow button { + padding: 4px 16px; +} + +#MatePanelPopupWindow > frame > box > box > box > widget { + color: ; +} + +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 ; + border-radius: 7px; + box-shadow: inset 0 1px ; + background-color: #; +} + +.mate-panel-applet-slider frame > border { + border-style: none; +} + +#PanelApplet:not(:selected) > box { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1); +} + +#PanelApplet:selected > box { + background-color: alpha(currentColor, 0.1); + color: #; +} + +#mate-menu { + border: 1px solid ; + background-color: #; +} + +#mate-menu button { + min-height: 24px; + min-width: 24px; + padding: 4px 0; + color: #; + font-weight: normal; +} + +#mate-menu button:not(.flat) { + background-color: alpha(currentColor, 0.1); +} + +#mate-menu button image, +#mate-menu button label + label { + color: ; +} + +#mate-menu entry { + margin: 0 0 4px; +} + +#mate-menu entry image { + margin: 0; +} + +#mate-menu entry + button { + margin: 0 4px 4px; + padding: 6px; +} + +.brisk-menu { + box-shadow: inset 0 1px ; + background-color: #; +} + +.brisk-menu entry { + margin-bottom: -2px; + border-bottom: 1px solid ; + border-image: none; + box-shadow: none; + background-color: transparent; +} + +.brisk-menu entry + box > box:dir(ltr) { + margin-right: -2px; + border-right: 1px solid ; +} + +.brisk-menu entry + box > box:dir(rtl) { + margin-left: -2px; + border-left: 1px solid ; +} + +.brisk-menu .categories-list { + padding-top: 4px; +} + +.brisk-menu .categories-list button { + margin: 0 4px; +} + +.brisk-menu .categories-list button:checked { + color: #; +} + +.brisk-menu .session-button { + padding: 12px; +} + +.brisk-menu .frame { + border-style: none; +} + +.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: #; + font-weight: normal; +} + +/********************* + * CAJA File manager * + *********************/ +.caja-navigation-window button.toggle.image-button { + border-radius: 6px; +} + +.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 viewport.frame, +.caja-side-pane notebook widget .vertical { + background-color: #; +} + +.caja-side-pane notebook, +.caja-notebook { + border-top: 1px solid ; +} + +.caja-side-pane notebook .frame, +.caja-notebook .frame { + border-style: none; +} + +.caja-canvas-item { + border-radius: 6px; +} + +.caja-desktop.view .entry, +.caja-navigation-window .view .entry { + border: none; + border-radius: 6px; + background-color: ; + background-image: none; + color: #; +} + +.caja-desktop.view .entry:selected, +.caja-navigation-window .view .entry:selected { + background-color: alpha(currentColor, 0.06); +} + +.caja-desktop.view .entry { + background-color: #; + color: #; + caret-color: currentColor; +} + +.caja-desktop.view .entry:selected { + background-color: alpha(currentColor, 0.06); +} + +.caja-navigation-window statusbar { + margin: 0 -10px; + padding: 0 4px; + border-top: 1px solid ; +} + +.caja-notebook frame > border { + border-style: none; +} + +#caja-extra-view-widget { + border-bottom: 1px solid ; + background-color: #; +} + +#caja-extra-view-widget > box > box > label { + font-weight: bold; +} + +/********* + * Pluma * + *********/ +.pluma-window statusbar { + margin: 0 -10px; + padding: 0 4px; + border-top: 1px solid ; +} + +.pluma-window statusbar frame > border { + border-style: none; +} + +.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 ; +} + +.pluma-window paned.horizontal box.vertical box.horizontal button.flat { + margin: 1px; +} + +.pluma-window paned.horizontal box.vertical .frame { + border-style: none; +} + +.pluma-window paned.horizontal box.vertical notebook.frame { + margin-top: -1px; + border-top: 1px solid ; +} + +.pluma-window + paned.horizontal + box.vertical + notebook.frame + box.vertical + toolbar.horizontal { + border-bottom: 1px solid ; +} + +/********* + * Atril * + *********/ +.atril-window paned.horizontal box.vertical .frame { + border-style: none; +} + +.atril-window paned.horizontal box.vertical notebook .frame { + border-top: 1px solid ; +} + +/* mate-screensaver lock dialog */ +.lock-dialog { + border: 1px solid ; + border-radius: 7px; + box-shadow: 0 2px 2.4px -1px , + 0 4px 3px 0 , 0 1px 6px 0 , + inset 0 1px ; + background-color: #; +} + +.lock-dialog frame > border { + border-style: none; +} + +.lock-dialog button:not(:disabled) { + color: #; +} + +/* multimedia OSD */ +MsdOsdWindow.background.osd { + border-radius: 6px; + background-color: rgba(30, 30, 46, 0.9); + color: #; +} + +MsdOsdWindow.background.osd .trough { + border-radius: 0; + background-color: ; +} + +MsdOsdWindow.background.osd .progressbar { + border-radius: 0; + background-color: #; +} + +/****************** + * Budgie Desktop * + ******************/ +.budgie-container { + background-color: transparent; +} + +.budgie-settings-window list.sidebar { + border-radius: 0 0 0 12px; +} + +.budgie-settings-window buttonbox.inline-toolbar { + border-style: none none solid; +} + +.budgie-settings-window buttonbox.inline-toolbar button { + border-radius: 6px; +} + +.budgie-popover { + border-style: solid; + border-width: 1px; + border-color: ; + border-radius: 6px; + box-shadow: 0 2px 2.4px -1px , + 0 4px 3px 0 , 0 1px 6px 0 ; + background-color: #; +} + +.budgie-popover .container { + padding: 6px; +} + +.budgie-popover separator { + margin: 3px 0; +} + +.budgie-popover border { + border: none; +} + +.budgie-popover list { + background-color: transparent; +} + +.budgie-popover row { + padding: 0; +} + +.budgie-popover row:hover { + box-shadow: none; +} + +.budgie-popover row button { + border-radius: 0px; +} + +.budgie-popover scrolledwindow.sidebar.categories { + background-color: ; +} + +.budgie-popover scrolledwindow.sidebar:not(.categories) { + background-color: ; + border-right: none; + border-bottom-left-radius: 6px; +} + +.budgie-popover scrolledwindow.sidebar:not(.categories) list > row.activatable { + padding: 6px 8px; +} + +.budgie-popover.bottom scrolledwindow.sidebar:not(.categories) { + padding-top: 6px; + border-top-left-radius: 6px; + border-bottom-left-radius: 0; +} + +.budgie-popover + > frame.container + > grid.horizontal + > grid.horizontal + > widget + > grid.horizontal + > stack { + border-top: 1px solid ; +} + +.budgie-popover.bottom + > frame.container + > grid.horizontal + > grid.horizontal + > widget + > grid.horizontal + > stack { + border-top: none; + border-bottom: 1px solid ; +} + +.budgie-popover button { + border-radius: 0px; +} + +.budgie-popover button.flat:not(.image-button) { + min-height: 28px; + padding: 0 8px; + color: #; + font-weight: normal; + border-radius: 0px; +} + +.budgie-popover button.flat:not(.image-button):disabled { + color: ; +} + +.budgie-popover.budgie-menu .container { + padding: 0; +} + +.budgie-popover.budgie-menu .sidebar, +.budgie-popover.budgie-menu scrollbar, +.budgie-popover.budgie-menu entry.search { + background-color: transparent; +} + +.budgie-popover.budgie-menu entry.search { + border-bottom: 1px solid ; + border-image: none; + border-radius: 0; + box-shadow: none; + font-size: 120%; +} + +.budgie-popover.budgie-menu + button.flat:not(.image-button):not(.indicator-item) { + min-height: 32px; + padding: 0 8px; + border-radius: 0; +} + +.budgie-popover.budgie-menu + button.flat:not(.image-button):not(.indicator-item):checked:disabled { + background-color: transparent; +} + +.budgie-popover.user-menu list, +.budgie-popover.user-menu row { + border: none; + background: none; + box-shadow: none; +} + +.budgie-popover.user-menu + > frame.container + > box.vertical + row.activatable:first-child { + margin-bottom: 3px; + outline-width: 0; + border-radius: 6px; +} + +.budgie-popover.user-menu + > frame.container + > box.vertical + row.activatable:first-child + button.indicator-item { + transition: none; + animation: none; +} + +.budgie-popover.night-light-indicator .container { + padding: 3px; +} + +.budgie-popover.night-light-indicator .view-header { + margin: 0 6px; +} + +.budgie-popover.places-menu .container { + padding: 3px; +} + +.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: 3px; + padding-top: 3px; + border-top: 1px solid ; +} + +.budgie-popover.places-menu .alternative-label { + padding: 3px; + font-size: 15px; +} + +.budgie-popover.workspace-popover flowboxchild { + padding: 0; +} + +.workspace-switcher .workspace-layout { + border: 0 solid ; +} + +.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 ; +} + +.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: alpha(currentColor, 0.1); +} + +.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: 6px; +} + +.budgie-panel button.budgie-menu-launcher { + padding: 0 0; + margin: 3px 0; + min-width: 16px; + min-height: 16px; + color: ; +} + +.budgie-panel button.budgie-menu-launcher { + background: none; + box-shadow: none; +} + +.budgie-panel button.budgie-menu-launcher image { + padding: 0; + margin: 0; + border-radius: 9999px; + background-image: image(); +} + +.budgie-panel button.budgie-menu-launcher:hover { + color: #; +} + +.budgie-panel button.budgie-menu-launcher:hover image { + background-image: image(); +} + +.budgie-panel button.budgie-menu-launcher:active, +.budgie-panel button.budgie-menu-launcher:checked { + color: #; +} + +.budgie-panel button.budgie-menu-launcher:active image, +.budgie-panel button.budgie-menu-launcher:checked image { + background-image: image(); +} + +.budgie-panel { + transition: background-color 75ms cubic-bezier(0, 0, 0.2, 1); + background-color: rgba(30, 30, 46, 0.95); + color: ; + font-weight: 500; +} + +.budgie-panel.transparent { + background-color: #; +} + +.budgie-panel button { + color: ; + min-height: 24px; + min-width: 24px; + padding: 0; + border-radius: 0; +} + +.budgie-panel button:hover { + color: #; +} + +.budgie-panel button:active { + color: ; +} + +.budgie-panel button.budgie-menu-launcher { + color: ; +} + +.budgie-panel button.budgie-menu-launcher:focus { + background: none; + box-shadow: none; + border: none; + color: ; +} + +.budgie-panel button.raven-trigger { + color: ; +} + +.budgie-panel.horizontal button { + padding: 0 4px; +} + +.budgie-panel.vertical button { + padding: 4px 0; +} + +.budgie-panel separator { + background-color: ; +} + +.budgie-panel .alert { + color: #; +} + +.budgie-panel .titlebar:not(headerbar) { + min-height: 0; + padding: 0; + box-shadow: none; + background-color: transparent; + color: #; +} + +.budgie-panel + .titlebar:not(headerbar) + button:not(.suggested-action):not(.destructive-action) { + color: ; +} + +.budgie-panel + .titlebar:not(headerbar) + button:not(.suggested-action):not(.destructive-action):hover, +.budgie-panel + .titlebar:not(headerbar) + button:not(.suggested-action):not(.destructive-action):active { + color: #; +} + +.budgie-panel menubar, +.budgie-panel .menubar { + color: ; +} + +.budgie-panel menubar > menuitem, +.budgie-panel .menubar > menuitem { + color: ; +} + +.budgie-panel menubar > menuitem:hover, +.budgie-panel menubar > menuitem:active, +.budgie-panel .menubar > menuitem:hover, +.budgie-panel .menubar > menuitem:active { + color: #; +} + +.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: ; +} + +.budgie-panel button.flat.launcher:not(:checked):hover, +.budgie-panel button.flat.launcher:not(:checked):active { + color: ; +} + +.budgie-panel button.flat.launcher:not(:checked):disabled { + color: ; +} + +.top .budgie-panel .unpinned button.flat.launcher:checked, +.top .budgie-panel .pinned button.flat.launcher.running: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 .unpinned button.flat.launcher:checked, +.bottom .budgie-panel .pinned button.flat.launcher.running: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 .unpinned button.flat.launcher:checked, +.left .budgie-panel .pinned button.flat.launcher.running: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 .unpinned button.flat.launcher:checked, +.right .budgie-panel .pinned button.flat.launcher.running: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; +} + +.top .budgie-panel #tasklist-button, +.budgie-panel .top #tasklist-button { + border-image: radial-gradient( + circle closest-corner at center calc(1px), + currentColor 0%, + transparent 0% + ) + 0 0 0 0/0 0 0 0; +} + +.top .budgie-panel #tasklist-button:checked, +.budgie-panel .top #tasklist-button: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 { + border-image: radial-gradient( + circle closest-corner at center calc(100% - 1px), + currentColor 0%, + transparent 0% + ) + 0 0 0 0/0 0 0 0; +} + +.bottom .budgie-panel #tasklist-button:checked, +.budgie-panel .bottom #tasklist-button: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 { + border-image: radial-gradient( + circle closest-corner at calc(1px) center, + currentColor 0%, + transparent 0% + ) + 0 0 0 0/0 0 0 0; +} + +.left .budgie-panel #tasklist-button:checked, +.budgie-panel .left #tasklist-button: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 { + border-image: radial-gradient( + circle closest-corner at calc(100% - 1px) center, + currentColor 0%, + transparent 0% + ) + 0 0 0 0/0 0 0 0; +} + +.right .budgie-panel #tasklist-button:checked, +.budgie-panel .right #tasklist-button: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; +} + +.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: #; + box-shadow: 0 8px 6px -5px , + 0 16px 14.4px 2px , 0 6px 18px 5px ; +} + +.raven > box { + margin-bottom: -10px; +} + +.raven stackswitcher.linked { + margin: 6px 16px; +} + +.raven stackswitcher.linked > button:focus { + box-shadow: none; +} + +.raven .raven-header { + min-height: 36px; + padding: 3px; +} + +.raven .raven-header.top { + padding: 0; + border-bottom: 1px solid ; +} + +.raven .raven-header.top stackswitcher button { + margin: -4px 0 -5px; + padding: 0 16px; + min-height: 36px; +} + +.raven .raven-header.bottom { + border-top: 1px solid ; +} + +.raven stack .raven-header { + margin-top: -6px; +} + +.raven stack scrolledwindow .raven-header { + margin-top: -8px; +} + +.raven .raven-background { + border-style: solid none; + border-width: 1px; + border-color: ; + background-color: #; +} + +.raven .raven-background > overlay > widget > image { + color: ; +} + +.raven scrolledwindow.raven-background { + border-bottom-style: none; +} + +.raven .powerstrip button { + margin: 2px 0 1px; + padding: 12px; +} + +.raven .option-subtitle { + font-size: smaller; +} + +.raven .audio-widget scale.marks-after { + padding-top: 0; + padding-bottom: 0; +} + +.raven .audio-widget scale.marks-after label { + font-size: 90%; + padding: 0; + margin: -10px 0 0 6px; +} + +.raven .audio-widget button.flat.expander-button { + margin-top: 4px; + margin-bottom: 4px; +} + +.raven .audio-widget list.devices-list.sound-devices > row.activatable:selected, +.raven .audio-widget list.devices-list.sound-devices > row.activatable:checked { + background-color: ; + color: #; +} + +.raven + .audio-widget + list.devices-list.sound-devices + > row.activatable:selected + label, +.raven + .audio-widget + list.devices-list.sound-devices + > row.activatable:checked + label { + color: #; +} + +.raven .audio-widget list.devices-list.sound-devices > row.activatable label { + padding-left: 12px; +} + +calendar.raven-calendar { + border-style: none; + background-color: transparent; +} + +calendar.raven-calendar:selected { + border-radius: 6px; +} + +.raven-mpris { + background-color: #; + color: #; +} + +.raven-mpris label { + min-height: 24px; +} + +.raven-mpris button.image-button { + padding: 12px; +} + +.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: ; +} + +.budgie-osd .budgie-osd-text { + font-size: 120%; +} + +.budgie-panel .lock-keys image:disabled { + color: ; +} + +.drop-shadow { + margin: 5px 9px; + padding: 3px; + border-radius: 12px; + box-shadow: 0 2px 2.4px -1px , + 0 4px 3px 0 , 0 1px 6px 0 , + inset 0 1px ; + background-color: #; +} + +.drop-shadow .linked > button { + border-radius: 12px; +} + +.budgie-session-dialog, +.budgie-polkit-dialog, +.budgie-run-dialog { + box-shadow: inset 0 1px ; + background-color: #; +} + +.budgie-session-dialog.background.csd, +.budgie-session-dialog decoration, +.budgie-polkit-dialog.background.csd, +.budgie-polkit-dialog decoration, +.budgie-run-dialog.background.csd, +.budgie-run-dialog decoration { + border-radius: 12px 12px 12px 12px; +} + +.budgie-session-dialog label:not(:last-child), +.budgie-session-dialog .dialog-title, +.budgie-polkit-dialog label:not(:last-child), +.budgie-polkit-dialog .dialog-title, +.budgie-run-dialog label:not(:last-child), +.budgie-run-dialog .dialog-title { + font-size: 120%; +} + +.budgie-session-dialog .linked.horizontal > button, +.budgie-polkit-dialog .linked.horizontal > button, +.budgie-run-dialog .linked.horizontal > button { + padding: 8px 16px; + border-top: 1px solid ; + border-radius: 0; +} + +.budgie-session-dialog .linked.horizontal > button:first-child, +.budgie-polkit-dialog .linked.horizontal > button:first-child, +.budgie-run-dialog .linked.horizontal > button:first-child { + border-bottom-left-radius: 12px; +} + +.budgie-session-dialog .linked.horizontal > button:last-child, +.budgie-polkit-dialog .linked.horizontal > button:last-child, +.budgie-run-dialog .linked.horizontal > button:last-child { + border-bottom-right-radius: 12px; +} + +.budgie-polkit-dialog .message { + color: ; +} + +.budgie-polkit-dialog .failure { + color: #; +} + +.budgie-run-dialog entry.search { + font-size: 120%; + padding: 6px 14px; + border-image: none; + box-shadow: none; + background-color: transparent; +} + +.budgie-run-dialog list .dim-label { + color: #; +} + +.budgie-run-dialog scrolledwindow { + border-top: 1px solid ; +} + +/************** + * Xfce4 Apps * + **************/ +.XfceHeading { + background-color: #; +} + +/*************** + * xfce4-panel * + ***************/ +.xfce4-panel.background { + border: none; + background-color: rgba(30, 30, 46, 0.95); + color: ; + font-weight: 500; +} + +.xfce4-panel.background button { + min-height: 16px; + min-width: 16px; + padding: 0; + border-radius: 0; +} + +.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; +} + +wnck-pager:hover { + background-color: alpha(currentColor, 0.08); +} + +wnck-pager:active { + background-color: alpha(currentColor, 0.12); +} + +wnck-pager:selected { + background-color: #; +} + +XfdesktopIconView.view { + border-radius: 6px; + background-color: transparent; + color: #; +} + +XfdesktopIconView.view:active { + box-shadow: none; +} + +XfdesktopIconView.view .rubberband { + border-radius: 0; +} + +#XfceNotifyWindow buttonbox { + padding: 0; +} + +#XfceNotifyWindow label#summary { + font-weight: bold; +} + +#xfwm-tabwin { + padding: 12px; + border-radius: 6px; + -xfwmtabwinwidget-icon-size: 64px; + -xfwmtabwinwidget-preview-size: 64px; +} + +/********** + * Thunar * + **********/ +.thunar #location-toolbar { + border-bottom: 1px solid ; +} + +.thunar .standard-view.frame { + border-style: none; +} + +.thunar .sidebar .view:not(:selected) { + background-color: transparent; +} + +.thunar statusbar { + margin: 0 -10px; + padding: 0 4px; + border-top: 1px solid ; +} + +.thunar + > grid.horizontal + > paned.horizontal + > scrolledwindow.frame.sidebar.shortcuts-pane { + border-top: none; +} + +window.background.csd.thunar + > grid.horizontal + > paned.horizontal + > scrolledwindow.frame.sidebar.shortcuts-pane { + border-bottom-left-radius: 12px; +} + +window.background.csd.thunar + > grid.horizontal + > paned.horizontal + > scrolledwindow.frame.sidebar.shortcuts-pane + treeview.view:not(:hover):not(:selected) { + background-color: transparent; +} + +/************************ + * LightDM GTK+ Greeter * + ************************/ +#panel_window { + background-color: #; + color: #; +} + +#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: ; +} + +#panel_window menubar > menuitem:hover { + color: #; +} + +#panel_window menubar > menuitem:disabled label { + color: ; +} + +#login_window, +#shutdown_dialog, +#restart_dialog { + margin: 8px; + border-radius: 6px; + box-shadow: 0 2px 2.4px -1px , + 0 4px 3px 0 , 0 1px 6px 0 , + inset 0 1px ; + background-color: #; +} + +#content_frame { + padding-bottom: 16px; +} + +#buttonbox_frame { + padding-top: 24px; +} + +#buttonbox_frame > box, +#buttonbox_frame > buttonbox { + margin: -16px; +} + +#buttonbox_frame button:not(:disabled) { + color: #; +} + +/******** + * Nemo * + ********/ +.nemo-window .primary-toolbar { + background-color: #; + border-bottom: 1px solid ; +} + +.nemo-window .primary-toolbar entry { + min-height: 0; + margin: 0; +} + +.nemo-window .primary-toolbar button.text-button { + padding-left: 8px; + padding-right: 8px; + color: ; +} + +.nemo-window .primary-toolbar button.text-button:hover, +.nemo-window .primary-toolbar button.text-button:active, +.nemo-window .primary-toolbar button.text-button:checked { + color: #; +} + +.nemo-window .primary-toolbar button.text-button:disabled { + color: ; +} + +.nemo-window .primary-toolbar button:not(.text-button):not(.image-button) { + padding-left: 4px; + padding-right: 4px; +} + +.nemo-window scrolledwindow.frame { + border-style: none; +} + +.nemo-window scrolledwindow.frame .view:not(:selected) { + background-color: transparent; +} + +.nemo-window .nemo-inactive-pane .view:not(:selected) { + background-color: #; +} + +.nemo-window .nemo-window-pane widget.entry { + border-radius: 6px; + background-color: ; +} + +.places-treeview { + -nemoplacestreeview-disk-full-bg-color: #; + -nemoplacestreeview-disk-full-fg-color: #; + -nemoplacestreeview-disk-full-bar-width: 2px; + -nemoplacestreeview-disk-full-bar-radius: 0; + -nemoplacestreeview-disk-full-bottom-padding: 1px; + -nemoplacestreeview-disk-full-max-length: 80px; + padding-top: 3px; + padding-bottom: 3px; +} diff --git a/Configs/.config/hyde/wallbash/Wall-Dcol/gtk/gtk4.dcol b/Configs/.config/hyde/wallbash/Wall-Dcol/gtk/gtk4.dcol new file mode 100644 index 0000000..45e61b3 --- /dev/null +++ b/Configs/.config/hyde/wallbash/Wall-Dcol/gtk/gtk4.dcol @@ -0,0 +1,7012 @@ +$HOME/.themes/Wallbash-Gtk/gtk-4.0/gtk.css|cp $HOME/.themes/Wallbash-Gtk/gtk-4.0/gtk.css $HOME/.themes/Wallbash-Gtk/gtk-4.0/gtk-dark.css +/* GTK NAMED COLORS -- USE RESPONSIBLY! */ + +/* widget text/foreground color */ +@define-color theme_fg_color #; +/* text color for entries, views and content in general */ +@define-color theme_text_color #; +/* widget base background color */ +@define-color theme_bg_color #; +/* text widgets and the like base background color */ +@define-color theme_base_color #; +/* base background color of selections */ +@define-color theme_selected_bg_color #; +/* text/foreground color of selections */ +@define-color theme_selected_fg_color ; +/* base background color of insensitive widgets */ +@define-color insensitive_bg_color #; +/* text foreground color of insensitive widgets */ +@define-color insensitive_fg_color ; +/* insensitive text widgets and the like base background color */ +@define-color insensitive_base_color #; +/* widget text/foreground color on backdrop windows */ +@define-color theme_unfocused_fg_color #; +/* text color for entries, views and content in general on backdrop windows */ +@define-color theme_unfocused_text_color #; +/* widget base background color on backdrop windows */ +@define-color theme_unfocused_bg_color #; +/* text widgets and the like base background color on backdrop windows */ +@define-color theme_unfocused_base_color #; +/* base background color of selections on backdrop windows */ +@define-color theme_unfocused_selected_bg_color #; +/* text/foreground color of selections on backdrop windows */ +@define-color theme_unfocused_selected_fg_color ; +/* insensitive color on backdrop windows */ +@define-color unfocused_insensitive_color ; +/* widgets main borders color */ +@define-color borders ; +/* widgets main borders color on backdrop windows */ +@define-color unfocused_borders ; +/* these are pretty self explicative */ +@define-color warning_color #FDD633; +@define-color error_color #F28B82; +@define-color success_color #81C995; +/* 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 #; +@define-color wm_unfocused_title ; +@define-color wm_highlight ; +@define-color wm_bg #; +@define-color wm_unfocused_bg #; +@define-color wm_button_close_icon #; +@define-color wm_button_close_hover_bg #; +@define-color wm_button_close_active_bg #c7c7c7; +/* FIXME this is really an API */ +@define-color content_view_bg #; +@define-color placeholder_text_color silver; +/* Very contrasty background for text views (@theme_text_color foreground) */ +@define-color text_view_bg #1d1d1d; +@define-color budgie_tasklist_indicator_color #; +@define-color budgie_tasklist_indicator_color_active #; +@define-color budgie_tasklist_indicator_color_active_window #999999; +@define-color budgie_tasklist_indicator_color_attention #FDD633; +@define-color STRAWBERRY_100 #FF9262; +@define-color STRAWBERRY_300 #FF793E; +@define-color STRAWBERRY_500 #F15D22; +@define-color STRAWBERRY_700 #CF3B00; +@define-color STRAWBERRY_900 #AC1800; +@define-color ORANGE_100 #FFDB91; +@define-color ORANGE_300 #FFCA40; +@define-color ORANGE_500 #FAA41A; +@define-color ORANGE_700 #DE8800; +@define-color ORANGE_900 #C26C00; +@define-color BANANA_100 #FFFFA8; +@define-color BANANA_300 #FFFA7D; +@define-color BANANA_500 #FFCE51; +@define-color BANANA_700 #D1A023; +@define-color BANANA_900 #A27100; +@define-color LIME_100 #A2F3BE; +@define-color LIME_300 #8ADBA6; +@define-color LIME_500 #73C48F; +@define-color LIME_700 #479863; +@define-color LIME_900 #1C6D38; +@define-color BLUEBERRY_100 #94A6FF; +@define-color BLUEBERRY_300 #6A7CE0; +@define-color BLUEBERRY_500 #3F51B5; +@define-color BLUEBERRY_700 #213397; +@define-color BLUEBERRY_900 #031579; +@define-color GRAPE_100 #D25DE6; +@define-color GRAPE_300 #B84ACB; +@define-color GRAPE_500 #9C27B0; +@define-color GRAPE_700 #830E97; +@define-color GRAPE_900 #6A007E; +@define-color COCOA_100 #9F9792; +@define-color COCOA_300 #7B736E; +@define-color COCOA_500 #574F4A; +@define-color COCOA_700 #463E39; +@define-color COCOA_900 #342C27; +@define-color SILVER_100 #EEE; +@define-color SILVER_300 #CCC; +@define-color SILVER_500 #AAA; +@define-color SILVER_700 #888; +@define-color SILVER_900 #666; +@define-color SLATE_100 #888; +@define-color SLATE_300 #666; +@define-color SLATE_500 #444; +@define-color SLATE_700 #222; +@define-color SLATE_900 #111; +@define-color BLACK_100 #474341; +@define-color BLACK_300 #403C3A; +@define-color BLACK_500 #393634; +@define-color BLACK_700 #33302F; +@define-color BLACK_900 #2B2928; + +/* GTK LIBADWAITA NAMED COLORS -- USE RESPONSIBLY! */ +@define-color accent_bg_color #; +@define-color accent_fg_color ; +@define-color accent_color #; +@define-color destructive_bg_color #F28B82; +@define-color destructive_fg_color ; +@define-color destructive_color #F28B82; +@define-color success_bg_color #81C995; +@define-color success_fg_color ; +@define-color success_color #81C995; +@define-color warning_bg_color #FDD633; +@define-color warning_fg_color ; +@define-color warning_color #FDD633; +@define-color error_bg_color #F28B82; +@define-color error_fg_color ; +@define-color error_color #F28B82; +@define-color window_bg_color #; +@define-color window_fg_color #; +@define-color view_bg_color #; +@define-color view_fg_color #; +@define-color headerbar_bg_color #; +@define-color headerbar_fg_color #; +@define-color headerbar_border_color ; +@define-color headerbar_backdrop_color @window_bg_color; +@define-color headerbar_shade_color ; +@define-color card_bg_color #; +@define-color card_fg_color #; +@define-color card_shade_color ; +@define-color dialog_bg_color #; +@define-color dialog_fg_color #; +@define-color popover_bg_color #; +@define-color popover_fg_color #; +@define-color thumbnail_bg_color #; +@define-color thumbnail_fg_color #; +@define-color shade_color ; +@define-color scrollbar_outline_color ; + +/*************** + * Base States * + ***************/ +.background { + background-color: #; + color: #; +} + +dnd { + color: #; +} + +.normal-icons { + -gtk-icon-size: 16px; +} + +.large-icons { + -gtk-icon-size: 32px; +} + +spinner:disabled, +arrow:disabled, +scrollbar:disabled, +check:disabled, +radio:disabled, +treeview.expander:disabled { + -gtk-icon-filter: opacity(0.5); +} + +iconview, +.view { + color: #; +} + +iconview:disabled, +.view:disabled { + color: ; +} + +textview text { + background-color: #; +} + +textview border { + background-color: #; + color: ; +} + +iconview:hover, +iconview:selected { + border-radius: 3px; +} + +rubberband, +.content-view rubberband, +.content-view columnview.view > rubberband, +.content-view treeview.view > rubberband, +.content-view .rubberband, +columnview.view > rubberband, +treeview.view > rubberband, +gridview > rubberband, +flowbox > rubberband { + border: 1px solid #; + background-color: rgba(242, 205, 205, 0.3); +} + +flowbox > flowboxchild { + padding: 4px; + border-radius: 6px; +} + +.content-view .tile:selected { + background-color: transparent; +} + +gridview > child { + padding: 3px; +} + +gridview > child:selected { + outline-color: alpha(currentColor, 0.06); +} + +gridview > child box { + border-spacing: 8px; + margin: 12px; +} + +coverflow cover { + color: #; + background-color: #; + border: 1px solid black; +} + +label.separator { + color: ; +} + +label:disabled { + color: ; + opacity: 1; + filter: none; +} + +headerbar label:disabled, +tab label:disabled, +button label:disabled { + color: inherit; +} + +label.osd { + border-radius: 6px; + background-color: rgba(24, 24, 37, 0.9); + color: #; +} + +label.search-information { + background-color: #; + color: ; +} + +.dim-label, +row label.subtitle { + color: ; + opacity: 1; +} + +window.assistant .sidebar { + padding: 4px 0; +} + +window.assistant .sidebar label { + min-height: 36px; + padding: 0 12px; + color: ; + font-weight: 500; +} + +window.assistant .sidebar label.highlight { + color: #; +} + +.osd popover.background > arrow, +.osd popover.background > contents, +popover.background.touch-selection > arrow, +popover.background.touch-selection > contents, +popover.background.magnifier > arrow, +popover.background.magnifier > contents, +.osd { + color: #; + background-clip: padding-box; + border-radius: 6px; + border: none; +} + +.osd { + padding: 6px; + margin: 6px; + box-shadow: 0 2px 2.4px -1px , + 0 4px 3px 0 , 0 1px 6px 0 ; +} + +.osd.circular { + border-radius: 9999px; +} + +/********************* + * Spinner Animation * + *********************/ +@keyframes spin { + to { + transform: rotate(1turn); + } +} + +spinner { + background: none; + opacity: 0; + -gtk-icon-source: -gtk-icontheme('process-working-symbolic'); +} + +spinner:checked { + opacity: 1; + animation: spin 1s linear infinite; +} + +spinner:checked:disabled { + opacity: 0.5; +} + +.large-title { + font-weight: 300; + font-size: 24pt; +} + +.title-1 { + font-weight: 800; + font-size: 20pt; +} + +.title-2 { + font-weight: 800; + font-size: 15pt; +} + +.title-3 { + font-weight: 700; + font-size: 15pt; +} + +.title-4 { + font-weight: 700; + font-size: 13pt; +} + +.heading { + font-weight: 700; + font-size: 11pt; +} + +.body { + font-weight: 400; + font-size: 11pt; +} + +.caption { + font-weight: 400; + font-size: 9pt; +} + +.caption-heading { + font-weight: 700; + font-size: 9pt; +} + +/**************** + * Text Entries * + ****************/ +entry { + min-height: 36px; + padding: 0 8px; + border-spacing: 6px; + border-radius: 6px; + caret-color: currentColor; + transition: all 75ms cubic-bezier(0, 0, 0.2, 1), + box-shadow 300ms cubic-bezier(0, 0, 0.2, 1); + box-shadow: inset 0 0 0 2px transparent; + background-color: ; + color: #; + outline: none; +} + +entry:focus-within { + background-color: ; + box-shadow: inset 0 0 0 2px #; + outline: none; +} + +entry:drop(active) { + background-color: alpha(currentColor, 0.08); + box-shadow: inset 0 0 0 2px alpha(currentColor, 0.08); + outline: none; +} + +entry:disabled { + box-shadow: inset 0 0 0 2px transparent; + background-color: ; + color: ; + outline: none; + opacity: 1; + filter: none; +} + +entry.search { + border-radius: 6px; + padding: 2px 12px; +} + +entry.flat { + min-height: 0; + padding: 2px; + border-radius: 0; + background-color: transparent; +} + +entry image { + color: ; +} + +entry image:hover, +entry image:active { + color: #; +} + +entry image:disabled { + color: ; +} + +entry image.left { + margin-left: 2px; + margin-right: 6px; +} + +entry image.right { + margin-left: 6px; + margin-right: 2px; +} + +entry undershoot.left { + background-color: transparent; + background-image: linear-gradient( + to top, + transparent 50%, + 50% + ); + padding-left: 1px; + background-size: 1px 12px; + background-repeat: repeat-y; + background-origin: content-box; + background-position: left top; + margin: 0 4px; + margin: 4px 0; +} + +entry undershoot.right { + background-color: transparent; + background-image: linear-gradient( + to top, + transparent 50%, + 50% + ); + padding-right: 1px; + background-size: 1px 12px; + background-repeat: repeat-y; + background-origin: content-box; + background-position: right top; + margin: 0 4px; + margin: 4px 0; +} + +entry.error { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1), + box-shadow 300ms cubic-bezier(0, 0, 0.2, 1); + box-shadow: inset 0 0 0 2px transparent; + background-color: ; + color: #; + outline: none; +} + +entry.error:focus-within { + background-color: ; + box-shadow: inset 0 0 0 2px #; + outline: none; +} + +entry.error:disabled { + box-shadow: inset 0 0 0 2px transparent; + background-color: ; + color: ; + outline: none; + opacity: 1; + filter: none; +} + +entry.warning { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1), + box-shadow 300ms cubic-bezier(0, 0, 0.2, 1); + box-shadow: inset 0 0 0 2px transparent; + background-color: ; + color: #; + outline: none; +} + +entry.warning:focus-within { + background-color: ; + box-shadow: inset 0 0 0 2px #fdd633; + outline: none; +} + +entry.warning:disabled { + box-shadow: inset 0 0 0 2px transparent; + background-color: ; + color: ; + outline: none; + opacity: 1; + filter: none; +} + +entry > progress, +entry progress > trough > progress { + margin: 2px -8px; + border-bottom: 2px solid #; + background-color: transparent; +} + +treeview entry.flat, +treeview entry { + background-color: #; +} + +treeview entry.flat, +treeview entry.flat:focus-within, +treeview entry, +treeview entry:focus-within { + border-image: none; + box-shadow: none; +} + +.entry-tag { + margin: 2px; + border-radius: 9999px; + box-shadow: none; + background-color: ; + color: #; +} + +.entry-tag:hover { + background-image: image(alpha(currentColor, 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; +} + +.entry-tag.button:not(:hover):not(:active) { + color: ; +} + +editablelabel > stack > text { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1), + box-shadow 300ms cubic-bezier(0, 0, 0.2, 1); + box-shadow: inset 0 0 0 2px transparent; + background-color: ; + color: #; + outline: none; +} + +/*********** + * Buttons * + ***********/ +@keyframes needs-attention { + from { + background-image: radial-gradient( + farthest-side, + # 0%, + rgba(242, 205, 205, 0) 0% + ); + } + to { + background-image: radial-gradient( + farthest-side, + # 95%, + rgba(242, 205, 205, 0) + ); + } +} + +toast button, +toast button.text-button, +toast button.circular.flat, +infobar.warning > revealer > box button, +infobar.warning:backdrop > revealer > box button, +popover.background.touch-selection button, +popover.background.magnifier button, +headerbar.selection-mode + button:not(.suggested-action):not(.destructive-action) { + color: ; +} + +toast button:focus, +toast button.circular.flat:focus, +infobar.warning > revealer > box button:focus, +popover.background.touch-selection button:focus, +popover.background.magnifier button:focus, +headerbar.selection-mode + button:focus:not(.suggested-action):not(.destructive-action), +toast button:hover, +toast button.circular.flat:hover, +infobar.warning > revealer > box button:hover, +popover.background.touch-selection button:hover, +popover.background.magnifier button:hover, +headerbar.selection-mode + button:hover:not(.suggested-action):not(.destructive-action), +toast button:active, +toast button.circular.flat:active, +infobar.warning > revealer > box button:active, +popover.background.touch-selection button:active, +popover.background.magnifier button:active, +headerbar.selection-mode + button:active:not(.suggested-action):not(.destructive-action), +toast button:checked, +toast button.circular.flat:checked, +infobar.warning > revealer > box button:checked, +popover.background.touch-selection button:checked, +popover.background.magnifier button:checked, +headerbar.selection-mode + button:checked:not(.suggested-action):not(.destructive-action) { + color: #; +} + +toast button:disabled, +toast button.circular.flat:disabled, +infobar.warning > revealer > box button:disabled, +popover.background.touch-selection button:disabled, +popover.background.magnifier button:disabled, +headerbar.selection-mode + button:disabled:not(.suggested-action):not(.destructive-action) { + color: ; +} + +toast button:checked:disabled, +infobar.warning > revealer > box button:checked:disabled, +popover.background.touch-selection button:checked:disabled, +popover.background.magnifier button:checked:disabled, +headerbar.selection-mode + button:checked:disabled:not(.suggested-action):not(.destructive-action) { + color: ; +} + +headerbar + popover + button:not(.suggested-action):not(.destructive-action):not(.flat), +button { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1), + background-color 225ms cubic-bezier(0, 0, 0.2, 1), + box-shadow 300ms cubic-bezier(0, 0, 0.2, 1); + outline: none; + background-color: ; + color: #; + box-shadow: inset 0 0 0 2px transparent; +} + +headerbar + popover + button:focus:not(.suggested-action):not(.destructive-action):not(.flat), +button:focus { + box-shadow: inset 0 0 0 2px alpha(currentColor, 0.08); + color: #; + outline: none; +} + +headerbar + popover + button:hover:not(.suggested-action):not(.destructive-action):not(.flat), +button:hover { + background-color: alpha(currentColor, 0.08); + color: #; + box-shadow: inset 0 0 0 2px transparent; +} + +headerbar + popover + button:active:not(.suggested-action):not(.destructive-action):not(.flat), +button:active { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1), + background-color 225ms cubic-bezier(0, 0, 0.2, 1), + box-shadow 300ms cubic-bezier(0, 0, 0.2, 1); + background-color: alpha(currentColor, 0.12); + box-shadow: inset 0 0 0 2px transparent; + color: #; +} + +headerbar + popover + button:disabled:not(.suggested-action):not(.destructive-action):not(.flat), +button:disabled { + box-shadow: none; + background-color: ; + color: ; + transition: none; + opacity: 1; + filter: none; +} + +headerbar + popover + button:checked:not(.suggested-action):not(.destructive-action):not(.flat), +button:checked { + box-shadow: none; + background-color: #; + color: ; + outline: none; +} + +headerbar + popover + button:checked:hover:not(.suggested-action):not(.destructive-action):not(.flat), +button:checked:hover { + box-shadow: none; +} + +headerbar + popover + button:checked:disabled:not(.suggested-action):not(.destructive-action):not(.flat), +button:checked:disabled { + box-shadow: none; + background-color: ; + color: ; + opacity: 1; + filter: none; +} + +button { + min-height: 24px; + min-width: 16px; + padding: 6px 10px; + border-radius: 6px; + font-weight: 500; +} + +button:drop(active) { + background-color: alpha(currentColor, 0.08); + color: #; + box-shadow: inset 0 0 0 2px transparent; +} + +placessidebar .navigation-sidebar > row button.sidebar-button, +calendar > header > button, +columnview.view > header > button button.circular, +treeview.view > header > button button.circular, +row.activatable button.circular, +scrollbar button, +notebook > header > tabs > arrow, +popover.menu box.circular-buttons button.circular.image-button.model, +headerbar popover calendar > header > button, +spinbutton.vertical > button, +spinbutton:not(.vertical) > button, +splitbutton.flat > button, +splitbutton.flat > menubutton > button, +filechooser #pathbarbox > stack > box > button, +window.dialog.message.csd .dialog-action-area > button, +.app-notification button, +headerbar button:not(.suggested-action):not(.destructive-action), +.toolbar button, +toolbar button, +dropdown > .linked:not(.vertical) > button:not(:only-child), +combobox > .linked:not(.vertical) > button:not(:only-child), +splitbutton.suggested-action > button, +splitbutton.suggested-action > menubutton > button, +splitbutton.destructive-action > button, +splitbutton.destructive-action > menubutton > button, +splitbutton.opaque > button, +splitbutton.opaque > menubutton > button, +menubutton.suggested-action > button, +menubutton.destructive-action > button, +menubutton.opaque > button, +menubutton.flat > button, +button.flat { + background-color: transparent; + color: ; +} + +placessidebar .navigation-sidebar > row button.sidebar-button:focus, +calendar > header > button:focus, +columnview.view > header > button button.circular:focus, +treeview.view > header > button button.circular:focus, +row.activatable button.circular:focus, +scrollbar button:focus, +notebook > header > tabs > arrow:focus, +popover.menu box.circular-buttons button.circular.image-button.model:focus, +headerbar popover calendar > header > button:focus, +spinbutton.vertical > button:focus, +spinbutton:not(.vertical) > button:focus, +splitbutton.flat > button:focus, +splitbutton.flat > menubutton > button:focus, +filechooser #pathbarbox > stack > box > button:focus, +window.dialog.message.csd .dialog-action-area > button:focus, +.app-notification button:focus, +headerbar button:focus:not(.suggested-action):not(.destructive-action), +.toolbar button:focus, +toolbar button:focus, +dropdown > .linked:not(.vertical) > button:focus:not(:only-child), +combobox > .linked:not(.vertical) > button:focus:not(:only-child), +splitbutton.suggested-action > button:focus, +splitbutton.suggested-action > menubutton > button:focus, +splitbutton.destructive-action > button:focus, +splitbutton.destructive-action > menubutton > button:focus, +splitbutton.opaque > button:focus, +splitbutton.opaque > menubutton > button:focus, +menubutton.suggested-action > button:focus, +menubutton.destructive-action > button:focus, +menubutton.opaque > button:focus, +menubutton.flat > button:focus, +button.flat:focus { + box-shadow: inset 0 0 0 2px alpha(currentColor, 0.08); + color: #; +} + +placessidebar .navigation-sidebar > row button.sidebar-button:hover, +calendar > header > button:hover, +columnview.view > header > button button.circular:hover, +treeview.view > header > button button.circular:hover, +row.activatable button.circular:hover, +scrollbar button:hover, +notebook > header > tabs > arrow:hover, +popover.menu box.circular-buttons button.circular.image-button.model:hover, +headerbar popover calendar > header > button:hover, +spinbutton.vertical > button:hover, +spinbutton:not(.vertical) > button:hover, +splitbutton.flat > button:hover, +splitbutton.flat > menubutton > button:hover, +filechooser #pathbarbox > stack > box > button:hover, +window.dialog.message.csd .dialog-action-area > button:hover, +.app-notification button:hover, +headerbar button:hover:not(.suggested-action):not(.destructive-action), +.toolbar button:hover, +toolbar button:hover, +dropdown > .linked:not(.vertical) > button:hover:not(:only-child), +combobox > .linked:not(.vertical) > button:hover:not(:only-child), +splitbutton.suggested-action > button:hover, +splitbutton.suggested-action > menubutton > button:hover, +splitbutton.destructive-action > button:hover, +splitbutton.destructive-action > menubutton > button:hover, +splitbutton.opaque > button:hover, +splitbutton.opaque > menubutton > button:hover, +menubutton.suggested-action > button:hover, +menubutton.destructive-action > button:hover, +menubutton.opaque > button:hover, +menubutton.flat > button:hover, +button.flat:hover { + background-color: alpha(currentColor, 0.08); + color: #; +} + +placessidebar .navigation-sidebar > row button.sidebar-button:active, +calendar > header > button:active, +columnview.view > header > button button.circular:active, +treeview.view > header > button button.circular:active, +row.activatable button.circular:active, +scrollbar button:active, +notebook > header > tabs > arrow:active, +popover.menu box.circular-buttons button.circular.image-button.model:active, +headerbar popover calendar > header > button:active, +spinbutton.vertical > button:active, +spinbutton:not(.vertical) > button:active, +splitbutton.flat > button:active, +splitbutton.flat > menubutton > button:active, +filechooser #pathbarbox > stack > box > button:active, +window.dialog.message.csd .dialog-action-area > button:active, +.app-notification button:active, +headerbar button:active:not(.suggested-action):not(.destructive-action), +.toolbar button:active, +toolbar button:active, +dropdown > .linked:not(.vertical) > button:active:not(:only-child), +combobox > .linked:not(.vertical) > button:active:not(:only-child), +splitbutton.suggested-action > button:active, +splitbutton.suggested-action > menubutton > button:active, +splitbutton.destructive-action > button:active, +splitbutton.destructive-action > menubutton > button:active, +splitbutton.opaque > button:active, +splitbutton.opaque > menubutton > button:active, +menubutton.suggested-action > button:active, +menubutton.destructive-action > button:active, +menubutton.opaque > button:active, +menubutton.flat > button:active, +button.flat:active { + background-color: alpha(currentColor, 0.12); + color: #; + box-shadow: none; +} + +placessidebar .navigation-sidebar > row button.sidebar-button:disabled, +calendar > header > button:disabled, +columnview.view > header > button button.circular:disabled, +treeview.view > header > button button.circular:disabled, +row.activatable button.circular:disabled, +scrollbar button:disabled, +notebook > header > tabs > arrow:disabled, +popover.menu box.circular-buttons button.circular.image-button.model:disabled, +headerbar popover calendar > header > button:disabled, +spinbutton.vertical > button:disabled, +spinbutton:not(.vertical) > button:disabled, +splitbutton.flat > button:disabled, +splitbutton.flat > menubutton > button:disabled, +filechooser #pathbarbox > stack > box > button:disabled, +window.dialog.message.csd .dialog-action-area > button:disabled, +.app-notification button:disabled, +headerbar button:disabled:not(.suggested-action):not(.destructive-action), +.toolbar button:disabled, +toolbar button:disabled, +dropdown > .linked:not(.vertical) > button:disabled:not(:only-child), +combobox > .linked:not(.vertical) > button:disabled:not(:only-child), +splitbutton.suggested-action > button:disabled, +splitbutton.suggested-action > menubutton > button:disabled, +splitbutton.destructive-action > button:disabled, +splitbutton.destructive-action > menubutton > button:disabled, +splitbutton.opaque > button:disabled, +splitbutton.opaque > menubutton > button:disabled, +menubutton.suggested-action > button:disabled, +menubutton.destructive-action > button:disabled, +menubutton.opaque > button:disabled, +menubutton.flat > button:disabled, +button.flat:disabled { + box-shadow: none; + background-color: transparent; + color: ; + opacity: 1; + filter: none; +} + +filechooser #pathbarbox > stack > box > button:checked, +window.dialog.message.csd .dialog-action-area > button:checked, +.app-notification button:checked, +headerbar button:checked:not(.suggested-action):not(.destructive-action), +.toolbar button:checked, +toolbar button:checked, +dropdown > .linked:not(.vertical) > button:checked:not(:only-child), +combobox > .linked:not(.vertical) > button:checked:not(:only-child), +splitbutton.suggested-action > button:checked, +splitbutton.suggested-action > menubutton > button:checked, +splitbutton.destructive-action > button:checked, +splitbutton.destructive-action > menubutton > button:checked, +splitbutton.opaque > button:checked, +splitbutton.opaque > menubutton > button:checked, +menubutton.suggested-action > button:checked, +menubutton.destructive-action > button:checked, +menubutton.opaque > button:checked, +menubutton.flat > button:checked, +button.flat:checked, +button.flat:checked:hover { + background-color: alpha(currentColor, 0.1); + color: #; + outline: none; + box-shadow: none; +} + +filechooser #pathbarbox > stack > box > button:checked:disabled, +window.dialog.message.csd .dialog-action-area > button:checked:disabled, +.app-notification button:checked:disabled, +headerbar + button:checked:disabled:not(.suggested-action):not(.destructive-action), +.toolbar button:checked:disabled, +toolbar button:checked:disabled, +dropdown > .linked:not(.vertical) > button:checked:disabled:not(:only-child), +combobox > .linked:not(.vertical) > button:checked:disabled:not(:only-child), +splitbutton.suggested-action > button:checked:disabled, +splitbutton.suggested-action > menubutton > button:checked:disabled, +splitbutton.destructive-action > button:checked:disabled, +splitbutton.destructive-action > menubutton > button:checked:disabled, +splitbutton.opaque > button:checked:disabled, +splitbutton.opaque > menubutton > button:checked:disabled, +menubutton.suggested-action > button:checked:disabled, +menubutton.destructive-action > button:checked:disabled, +menubutton.opaque > button:checked:disabled, +menubutton.flat > button:checked:disabled, +button.flat:checked:disabled { + background-color: alpha(currentColor, 0.06); + color: ; + opacity: 1; + filter: none; +} + +button.text-button { + min-width: 32px; + padding-left: 16px; + padding-right: 16px; +} + +button.text-button.flat { + min-width: 48px; + padding-left: 8px; + padding-right: 8px; +} + +button.image-button { + min-width: 24px; + padding: 6px; + border-radius: 6px; +} + +.linked button.image-button { + border-radius: 6px; +} + +button.text-button.image-button { + min-width: 24px; + padding: 6px; + border-radius: 6px; +} + +button.text-button.image-button label:first-child { + margin-left: 10px; +} + +button.text-button.image-button label:last-child { + margin-right: 10px; +} + +button.text-button.image-button.flat label:first-child { + margin-left: 6px; +} + +button.text-button.image-button.flat label:last-child { + margin-right: 6px; +} + +button.text-button.image-button image:not(:only-child) { + margin: 0 4px; +} + +.linked:not(.vertical) > button.flat:not(:only-child), +.linked.vertical > button.flat:not(:only-child) { + border-radius: 6px; +} + +.linked:not(.vertical) > button.flat:focus, +.linked.vertical > button.flat:focus { + box-shadow: inset 0 0 0 9999px alpha(currentColor, 0.08); +} + +button.osd { + padding: 12px 16px; + box-shadow: none; + background-color: #; + color: #; +} + +button.osd:hover { + background-color: #; + color: #; +} + +button.osd:active { + background-color: #080808; + color: #; +} + +button.osd.image-button { + padding: 6px; +} + +button.osd:disabled { + opacity: 0; +} + +button.suggested-action { + background-color: #; + color: ; + box-shadow: none; +} + +button.suggested-action:disabled { + box-shadow: none; + background-color: ; + color: ; + transition: none; + opacity: 1; + filter: none; +} + +button.suggested-action:hover { + box-shadow: inset 0 0 0 9999px transparent, + 0 2px 2.4px -1px rgba(242, 205, 205, 0.2), + 0 4px 3px 0 rgba(242, 205, 205, 0.14), 0 1px 6px 0 rgba(242, 205, 205, 0.12); +} + +button.suggested-action:checked { + background-color: rgba(168, 168, 168, 0.961); +} + +button.suggested-action:checked:hover { + box-shadow: inset 0 0 0 9999px transparent, + 0 3px 3px -3px rgba(242, 205, 205, 0.3), + 0 2px 3px -1px rgba(242, 205, 205, 0.24), + 0 2px 5px 0 rgba(242, 205, 205, 0.12); +} + +button.suggested-action:focus { + box-shadow: 0 0 0 2px rgba(242, 205, 205, 0.35); +} + +button.suggested-action.flat { + background-color: transparent; + color: #; +} + +button.suggested-action.flat:disabled { + box-shadow: none; + background-color: transparent; + color: ; + opacity: 1; + filter: none; +} + +button.suggested-action.flat:checked { + background-color: rgba(242, 205, 205, 0.3); +} + +button.destructive-action { + background-color: #; + color: ; + box-shadow: none; +} + +button.destructive-action:disabled { + box-shadow: none; + background-color: ; + color: ; + transition: none; + opacity: 1; + filter: none; +} + +button.destructive-action:hover { + box-shadow: inset 0 0 0 9999px transparent, + 0 2px 2.4px -1px rgba(242, 139, 130, 0.2), + 0 4px 3px 0 rgba(242, 139, 130, 0.14), 0 1px 6px 0 rgba(242, 139, 130, 0.12); +} + +button.destructive-action:checked { + background-color: rgba(182, 105, 98, 0.961); +} + +button.destructive-action:checked:hover { + box-shadow: inset 0 0 0 9999px transparent, + 0 3px 3px -3px rgba(242, 139, 130, 0.3), + 0 2px 3px -1px rgba(242, 139, 130, 0.24), + 0 2px 5px 0 rgba(242, 139, 130, 0.12); +} + +button.destructive-action:focus { + box-shadow: 0 0 0 2px rgba(242, 139, 130, 0.35); +} + +button.destructive-action.flat { + background-color: transparent; + color: #; +} + +button.destructive-action.flat:disabled { + box-shadow: none; + background-color: transparent; + color: ; + opacity: 1; + filter: none; +} + +button.destructive-action.flat:checked { + background-color: rgba(242, 139, 130, 0.3); +} + +menubutton.pill > button, +button.pill { + padding: 9px 30px; + border-radius: 9999px; +} + +button.card { + background-clip: padding-box; + font-weight: inherit; + background-clip: border-box; + transition: all 75ms cubic-bezier(0, 0, 0.2, 1), + background-color 225ms cubic-bezier(0, 0, 0.2, 1), + box-shadow 300ms cubic-bezier(0, 0, 0.2, 1); + outline: none; + background-color: ; + color: #; + box-shadow: inset 0 0 0 2px transparent; +} + +button.card:hover { + background-image: none; + background-color: alpha(currentColor, 0.08); + color: #; + box-shadow: inset 0 0 0 2px transparent; +} + +button.card.keyboard-activating, +button.card:active { + background-image: none; + transition: all 75ms cubic-bezier(0, 0, 0.2, 1), + background-color 225ms cubic-bezier(0, 0, 0.2, 1), + box-shadow 300ms cubic-bezier(0, 0, 0.2, 1); + background-color: alpha(currentColor, 0.12); + box-shadow: inset 0 0 0 2px transparent; + color: #; +} + +button.card:checked { + background-image: none; + box-shadow: none; + background-color: #; + color: ; + outline: none; + border-color: #; +} + +button.card:checked:hover { + background-image: none; + box-shadow: none; +} + +button.card:checked:disabled { + box-shadow: none; + background-color: ; + color: ; + opacity: 1; + filter: none; +} + +button.card.keyboard-activating:checked, +button.card:checked:active { + background-image: none; +} + +button.card.has-open-popup:checked { + background-image: none; +} + +button.card:drop(active) { + color: #; + box-shadow: inset 0 0 0 1px #; +} + +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, +button.file > box { + border-spacing: 6px; +} + +button.font > box > box > label, +button.file > box > box > label { + font-weight: bold; +} + +windowcontrols button:not(.suggested-action):not(.destructive-action), +filechooser #pathbarbox > stack > box > button, +menubutton.circular > button, +button.close, +button.circular { + border-radius: 9999px; + min-width: 24px; + min-height: 24px; + padding: 6px; +} + +windowcontrols button:not(.suggested-action):not(.destructive-action) label, +filechooser #pathbarbox > stack > box > button label, +menubutton.circular > button label, +button.close label, +button.circular label { + padding: 0; +} + +.nautilus-window .floating-bar button, +placessidebar .navigation-sidebar > row button.sidebar-button, +notebook > header tab button.flat, +popover.menu box.circular-buttons button.circular.image-button.model, +spinbutton.vertical > button, +spinbutton:not(.vertical) > button { + min-height: 24px; + min-width: 24px; + padding: 0; + border-radius: 9999px; +} + +menubutton.osd { + background: none; + color: inherit; +} + +menubutton.suggested-action { + background-color: #; + color: #; +} + +menubutton.destructive-action { + background-color: #; + color: #; +} + +menubutton.opaque { + background-color: #; + color: #; +} + +menubutton.suggested-action, +menubutton.destructive-action, +menubutton.opaque { + border-radius: 6px; +} + +menubutton.suggested-action.circular, +menubutton.suggested-action.pill, +menubutton.destructive-action.circular, +menubutton.destructive-action.pill, +menubutton.opaque.circular, +menubutton.opaque.pill { + border-radius: 9999px; +} + +menubutton.suggested-action > button, +menubutton.suggested-action > button:checked, +menubutton.destructive-action > button, +menubutton.destructive-action > button:checked, +menubutton.opaque > button, +menubutton.opaque > button:checked { + background-color: transparent; + color: inherit; +} + +menubutton.image-button > button { + min-width: 24px; + padding-left: 6px; + padding-right: 6px; +} + +menubutton arrow { + min-height: 16px; + min-width: 16px; +} + +menubutton arrow.none { + -gtk-icon-source: -gtk-icontheme('open-menu-symbolic'); +} + +menubutton arrow.down { + -gtk-icon-source: -gtk-icontheme('pan-down-symbolic'); +} + +menubutton arrow.up { + -gtk-icon-source: -gtk-icontheme('pan-up-symbolic'); +} + +menubutton arrow.left { + -gtk-icon-source: -gtk-icontheme('pan-start-symbolic'); +} + +menubutton arrow.right { + -gtk-icon-source: -gtk-icontheme('pan-end-symbolic'); +} + +splitbutton { + border-radius: 6px; +} + +splitbutton, +splitbutton > separator { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1); + transition-property: background; +} + +splitbutton:disabled { + filter: none; +} + +splitbutton:disabled > button, +splitbutton:disabled > menubutton > button { + filter: none; +} + +splitbutton > separator { + margin-top: 6px; + margin-bottom: 6px; + background: none; +} + +splitbutton > menubutton > button { + padding-left: 4px; + padding-right: 4px; +} + +splitbutton.image-button > button { + min-width: 24px; + padding-left: 6px; + padding-right: 6px; +} + +splitbutton.text-button.image-button > button, +splitbutton.image-text-button > button { + padding-left: 9px; + padding-right: 9px; +} + +splitbutton.text-button.image-button > button > box, +splitbutton.image-text-button > button > box { + border-spacing: 6px; +} + +splitbutton > button:dir(ltr), +splitbutton > menubutton > button:dir(rtl) { + border-top-right-radius: 0; + border-bottom-right-radius: 0; + margin-right: -1px; +} + +splitbutton > button:dir(rtl), +splitbutton > menubutton > button:dir(ltr) { + border-top-left-radius: 0; + border-bottom-left-radius: 0; + margin-left: -1px; +} + +splitbutton.flat > separator { + background: ; +} + +splitbutton.flat:hover, +splitbutton.flat:active, +splitbutton.flat:checked { + background: alpha(currentColor, 0.07); +} + +splitbutton.flat:hover > separator, +splitbutton.flat:active > separator, +splitbutton.flat:checked > separator { + background: none; +} + +splitbutton.flat:focus-within:focus-visible > separator { + background: none; +} + +splitbutton.flat > button, +splitbutton.flat > menubutton > button { + border-radius: 6px; +} + +splitbutton.suggested-action { + background-color: #; + color: #; +} + +splitbutton.destructive-action { + background-color: #; + color: #; +} + +splitbutton.opaque { + background-color: #; + color: #; +} + +splitbutton.suggested-action > button, +splitbutton.suggested-action > button:checked, +splitbutton.suggested-action > menubutton > button, +splitbutton.suggested-action > menubutton > button:checked, +splitbutton.destructive-action > button, +splitbutton.destructive-action > button:checked, +splitbutton.destructive-action > menubutton > button, +splitbutton.destructive-action > menubutton > button:checked, +splitbutton.opaque > button, +splitbutton.opaque > button:checked, +splitbutton.opaque > menubutton > button, +splitbutton.opaque > menubutton > button:checked { + color: inherit; + background-color: transparent; +} + +splitbutton.suggested-action > menubutton > button:dir(ltr), +splitbutton.destructive-action > menubutton > button:dir(ltr), +splitbutton.opaque > menubutton > button:dir(ltr) { + box-shadow: inset 1px 0 ; +} + +splitbutton.suggested-action > menubutton > button:dir(rtl), +splitbutton.destructive-action > menubutton > button:dir(rtl), +splitbutton.opaque > menubutton > button:dir(rtl) { + box-shadow: inset -1px 0 ; +} + +splitbutton > menubutton > button > arrow.none { + -gtk-icon-source: -gtk-icontheme('pan-down-symbolic'); +} + +buttoncontent { + border-spacing: 6px; +} + +buttoncontent > label { + font-weight: bold; +} + +buttoncontent > label:dir(ltr) { + padding-right: 2px; +} + +buttoncontent > label:dir(rtl) { + padding-left: 2px; +} + +.arrow-button > box > buttoncontent > label:dir(ltr), +splitbutton > button > buttoncontent > label:dir(ltr) { + padding-right: 0; +} + +.arrow-button > box > buttoncontent > label:dir(rtl), +splitbutton > button > buttoncontent > label:dir(rtl) { + padding-left: 0; +} + +stacksidebar 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 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(.vertical) > entry, +.linked:not(.vertical) > button, +.linked:not(.vertical) > button.image-button { + border-radius: 0; +} + +.linked:not(.vertical) > entry:first-child, +.linked:not(.vertical) > button:first-child { + border-top-left-radius: 6px; + border-bottom-left-radius: 6px; +} + +.linked:not(.vertical) > entry:last-child, +.linked:not(.vertical) > button:last-child { + border-top-right-radius: 6px; + border-bottom-right-radius: 6px; +} + +.linked:not(.vertical) > entry:only-child, +.linked:not(.vertical) > button:only-child { + border-radius: 6px; +} + +.linked.vertical > entry, +.linked.vertical > button, +.linked.vertical > button.image-button { + border-radius: 0; +} + +.linked.vertical > entry:first-child, +.linked.vertical > button:first-child { + border-top-left-radius: 6px; + border-top-right-radius: 6px; +} + +.linked.vertical > entry:last-child, +.linked.vertical > button:last-child { + border-bottom-left-radius: 6px; + border-bottom-right-radius: 6px; +} + +.linked.vertical > entry:only-child, +.linked.vertical > button:only-child { + border-radius: 6px; +} + +.linked:not(.vertical) > button:not(.combo):dir(ltr):not(:first-child), +.linked:not(.vertical) > button:not(.combo):dir(rtl):not(:last-child) { + border-top-left-radius: 0; + border-bottom-left-radius: 0; + margin-left: 0; +} + +.linked:not(.vertical) > button:not(.combo):dir(ltr):not(:last-child), +.linked:not(.vertical) > button:not(.combo):dir(rtl):not(:first-child) { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} + +.linked.vertical button:not(.combo):not(:first-child) { + border-top-left-radius: 0; + border-top-right-radius: 0; + margin-top: 0; +} + +.linked.vertical button:not(.combo):not(:last-child) { + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; +} + +.linked:not(.vertical) > menubutton:dir(ltr):not(:first-child) > button, +.linked:not(.vertical) > menubutton:dir(rtl):not(:last-child) > button { + border-top-left-radius: 0; + border-bottom-left-radius: 0; + margin-left: 0; +} + +.linked:not(.vertical) > menubutton:dir(ltr):not(:last-child) > button, +.linked:not(.vertical) > menubutton:dir(rtl):not(:first-child) > button { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} + +.linked.vertical menubutton:not(:first-child) > button { + border-top-left-radius: 0; + border-top-right-radius: 0; + margin-top: 0; +} + +.linked.vertical menubutton:not(:last-child) > button { + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; +} + +.linked:not(.vertical) > dropdown:dir(ltr):not(:first-child) > button, +.linked:not(.vertical) > dropdown:dir(rtl):not(:last-child) > button { + border-top-left-radius: 0; + border-bottom-left-radius: 0; + margin-left: 0; +} + +.linked:not(.vertical) > dropdown:dir(ltr):not(:last-child) > button, +.linked:not(.vertical) > dropdown:dir(rtl):not(:first-child) > button { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} + +.linked.vertical dropdown:not(:first-child) > button { + border-top-left-radius: 0; + border-top-right-radius: 0; + margin-top: 0; +} + +.linked.vertical dropdown:not(:last-child) > button { + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; +} + +.linked:not(.vertical) > colorbutton:dir(ltr):not(:first-child) > button, +.linked:not(.vertical) > colorbutton:dir(rtl):not(:last-child) > button { + border-top-left-radius: 0; + border-bottom-left-radius: 0; + margin-left: 0; +} + +.linked:not(.vertical) > colorbutton:dir(ltr):not(:last-child) > button, +.linked:not(.vertical) > colorbutton:dir(rtl):not(:first-child) > button { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} + +.linked.vertical colorbutton:not(:first-child) > button { + border-top-left-radius: 0; + border-top-right-radius: 0; + margin-top: 0; +} + +.linked.vertical colorbutton:not(:last-child) > button { + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; +} + +.linked:not(.vertical) > fontbutton:dir(ltr):not(:first-child) > button, +.linked:not(.vertical) > fontbutton:dir(rtl):not(:last-child) > button { + border-top-left-radius: 0; + border-bottom-left-radius: 0; + margin-left: 0; +} + +.linked:not(.vertical) > fontbutton:dir(ltr):not(:last-child) > button, +.linked:not(.vertical) > fontbutton:dir(rtl):not(:first-child) > button { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} + +.linked.vertical fontbutton:not(:first-child) > button { + border-top-left-radius: 0; + border-top-right-radius: 0; + margin-top: 0; +} + +.linked.vertical fontbutton:not(:last-child) > button { + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; +} + +.linked:not(.vertical) > tabbutton:dir(ltr):not(:first-child) > button, +.linked:not(.vertical) > tabbutton:dir(rtl):not(:last-child) > button { + border-top-left-radius: 0; + border-bottom-left-radius: 0; + margin-left: 0; +} + +.linked:not(.vertical) > tabbutton:dir(ltr):not(:last-child) > button, +.linked:not(.vertical) > tabbutton:dir(rtl):not(:first-child) > button { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} + +.linked.vertical tabbutton:not(:first-child) > button { + border-top-left-radius: 0; + border-top-right-radius: 0; + margin-top: 0; +} + +.linked.vertical tabbutton:not(:last-child) > button { + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; +} + +.linked:not(.vertical) > entry:not(.combo):dir(ltr):not(:first-child), +.linked:not(.vertical) > entry:not(.combo):dir(rtl):not(:last-child) { + border-top-left-radius: 0; + border-bottom-left-radius: 0; + margin-left: 0; +} + +.linked:not(.vertical) > entry:not(.combo):dir(ltr):not(:last-child), +.linked:not(.vertical) > entry:not(.combo):dir(rtl):not(:first-child) { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} + +.linked.vertical entry:not(.combo):not(:first-child) { + border-top-left-radius: 0; + border-top-right-radius: 0; + margin-top: 0; +} + +.linked.vertical entry:not(.combo):not(:last-child) { + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; +} + +button.color { + min-height: 24px; + min-width: 24px; + padding: 6px; +} + +list > row button.image-button:not(.flat) { + background-color: transparent; + box-shadow: none; + border: none; +} + +list > row button.image-button:not(.flat):hover { + background-color: alpha(currentColor, 0.08); + color: #; + box-shadow: inset 0 0 0 2px transparent; +} + +list > row button.image-button:not(.flat):active, +list > row button.image-button:not(.flat):checked { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1), + background-color 225ms cubic-bezier(0, 0, 0.2, 1), + box-shadow 300ms cubic-bezier(0, 0, 0.2, 1); + background-color: alpha(currentColor, 0.12); + box-shadow: inset 0 0 0 2px transparent; + color: #; +} + +list > row button.image-button.suggested-action:not(.flat) { + background-color: #; + color: ; +} + +list > row button.image-button.destructive-action:not(.flat) { + background-color: #; + color: ; +} + +/********* + * Links * + *********/ +link { + color: #; +} + +link:visited { + color: #; +} + +button.link:link, +button.link:link:focus, +button.link:link:hover, +button.link:link:active { + color: #; +} + +button.link:visited, +button.link:visited:focus, +button.link:visited:hover, +button.link:visited:active { + color: #; +} + +button.link > label { + text-decoration-line: underline; +} + +/***************** + * GtkSpinButton * + *****************/ +spinbutton { + border-radius: 6px; + padding: 0; + border-spacing: 0; + min-height: 0; + transition: all 75ms cubic-bezier(0, 0, 0.2, 1), + box-shadow 300ms cubic-bezier(0, 0, 0.2, 1); + box-shadow: inset 0 0 0 2px transparent; + background-color: ; + color: #; + outline: none; +} + +spinbutton:focus-within { + background-color: ; + box-shadow: inset 0 0 0 2px #; + outline: none; +} + +spinbutton:disabled { + box-shadow: inset 0 0 0 2px transparent; + background-color: ; + color: ; + outline: none; + opacity: 1; + filter: none; +} + +spinbutton:not(.vertical) > text { + min-width: 32px; + margin: 0; + padding-left: 12px; + border-image: none; + border-radius: 0; + box-shadow: none; + background-color: transparent; +} + +spinbutton:not(.vertical) > button { + border: solid 6px transparent; +} + +spinbutton:not(.vertical) + > button:focus:not(:hover):not(:active):not(:disabled) { + box-shadow: inset 0 0 0 9999px transparent; + color: ; +} + +spinbutton:not(.vertical) > button.up:dir(ltr), +spinbutton:not(.vertical) > button.down:dir(rtl) { + margin-left: -3px; +} + +spinbutton:not(.vertical) > button.up:dir(rtl), +spinbutton:not(.vertical) > button.down:dir(ltr) { + margin-right: -3px; +} + +spinbutton.vertical > text { + margin: 0; + border-image: none; + border-radius: 0; + box-shadow: none; + background-color: transparent; + min-height: 36px; + min-width: 42px; + padding: 0; +} + +spinbutton.vertical > button { + padding: 0; + border: solid 6px transparent; +} + +spinbutton.vertical > button:focus:not(:hover):not(:active) { + box-shadow: inset 0 0 0 9999px transparent; + color: ; +} + +spinbutton.vertical > button.up { + margin: 0 3px; +} + +spinbutton.vertical > button.down { + margin: 0 3px; +} + +list > row spinbutton:not(.vertical) > button { + margin: 6px; +} + +list > row spinbutton:not(.vertical) > button.up:dir(ltr), +list > row spinbutton:not(.vertical) > button.down:dir(rtl) { + margin-left: 3px; +} + +list > row spinbutton:not(.vertical) > button.up:dir(rtl), +list > row spinbutton:not(.vertical) > button.down:dir(ltr) { + margin-right: 3px; +} + +/************** + * ComboBoxes * + **************/ +dropdown > button > box { + border-spacing: 6px; +} + +dropdown arrow, +combobox arrow { + -gtk-icon-source: -gtk-icontheme('pan-down-symbolic'); + min-height: 16px; + min-width: 16px; +} + +dropdown > popover.menu > contents modelbutton, +combobox > popover.menu > contents modelbutton { + padding-left: 9px; + padding-right: 9px; +} + +dropdown button.combo cellview:dir(ltr), +combobox button.combo cellview:dir(ltr) { + margin-left: -2px; +} + +dropdown button.combo cellview:dir(rtl), +combobox button.combo cellview:dir(rtl) { + margin-right: -2px; +} + +dropdown popover, +combobox popover { + margin-top: 4px; + padding: 0; +} + +dropdown popover listview, +combobox popover listview { + margin: 0; +} + +dropdown popover listview > row, +combobox popover listview > row { + padding: 6px; +} + +dropdown popover listview > row:selected, +combobox popover listview > row:selected { + color: #; + background-color: alpha(currentColor, 0.06); +} + +dropdown popover .dropdown-searchbar, +combobox popover .dropdown-searchbar { + padding: 6px; +} + +dropdown.linked button:nth-child(2):dir(ltr), +combobox.linked button:nth-child(2):dir(ltr) { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} + +dropdown.linked button:nth-child(2):dir(rtl), +combobox.linked button:nth-child(2):dir(rtl) { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} + +dropdown > .linked:not(.vertical) > entry:not(:only-child), +combobox > .linked:not(.vertical) > entry:not(:only-child) { + border-radius: 6px; +} + +dropdown > .linked:not(.vertical) > entry:not(:only-child):first-child, +combobox > .linked:not(.vertical) > entry:not(:only-child):first-child { + margin-right: -36px; + padding-right: 36px; +} + +dropdown > .linked:not(.vertical) > entry:not(:only-child):last-child, +combobox > .linked:not(.vertical) > entry:not(:only-child):last-child { + margin-left: -36px; + padding-left: 36px; +} + +dropdown > .linked:not(.vertical) > button:not(:only-child), +combobox > .linked:not(.vertical) > button:not(:only-child) { + min-height: 16px; + min-width: 16px; + margin: 6px; + padding: 4px; + border-radius: 9999px; +} + +.linked:not(.vertical) > combobox:not(:first-child) > box > button.combo { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} + +.linked:not(.vertical) > combobox:not(:last-child) > box > button.combo { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} + +.linked.vertical > combobox:not(:first-child) > box > button.combo { + border-top-left-radius: 0; + border-top-right-radius: 0; +} + +.linked.vertical > combobox:not(:last-child) > box > button.combo { + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; +} + +button.combo:only-child { + border-radius: 6px; + font-weight: normal; + transition: all 75ms cubic-bezier(0, 0, 0.2, 1), + box-shadow 300ms cubic-bezier(0, 0, 0.2, 1); + box-shadow: inset 0 0 0 2px transparent; + background-color: ; + color: #; + outline: none; +} + +button.combo:only-child:focus { + box-shadow: inset 0 0 0 2px alpha(currentColor, 0.08); + color: #; +} + +button.combo:only-child:hover { + background-color: alpha(currentColor, 0.08); + color: #; +} + +button.combo:only-child:active { + background-color: alpha(currentColor, 0.12); + color: #; + box-shadow: none; +} + +button.combo:only-child:checked { + background-color: alpha(currentColor, 0.1); + color: #; + outline: none; + box-shadow: none; +} + +button.combo:only-child:disabled { + box-shadow: none; + background-color: ; + color: ; + transition: none; + opacity: 1; + filter: none; +} + +/************ + * Toolbars * + ************/ +.toolbar, +toolbar { + padding: 3px 6px; + background-color: #; + border-spacing: 6px; +} + +.osd .toolbar, +.osd toolbar { + background-color: transparent; +} + +.app-notification, +.toolbar.osd, +toolbar.osd { + transition: box-shadow 75ms cubic-bezier(0, 0, 0.2, 1); + padding: 6px; + border-radius: 6px; + box-shadow: 0 2px 2.4px -1px , + 0 4px 3px 0 , 0 1px 6px 0 , + inset 0 1px ; + background-color: #; +} + +.app-notification:backdrop, +.toolbar.osd:backdrop, +toolbar.osd:backdrop { + box-shadow: 0 3px 2px -3px , + 0 2px 2px -1px , 0 1px 3px 0 , + inset 0 1px ; +} + +.left.app-notification, +.right.app-notification, +.top.app-notification, +.bottom.app-notification, +.toolbar.osd.left, +.toolbar.osd.right, +.toolbar.osd.top, +.toolbar.osd.bottom, +toolbar.osd.left, +toolbar.osd.right, +toolbar.osd.top, +toolbar.osd.bottom { + border-radius: 0; +} + +.bottom.app-notification, +.toolbar.osd.bottom, +toolbar.osd.bottom { + box-shadow: none; + background-color: transparent; + background-image: linear-gradient( + to bottom, + transparent, + 30%, + 50%, + + ); +} + +.toolbar.horizontal > separator, +toolbar.horizontal > separator { + margin: 2px; +} + +.toolbar.vertical > separator, +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, +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), +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), +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, +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, +toolbar:not(.inline-toolbar):not(.osd) switch { + margin: 8px 2px; +} + +searchbar > revealer > box { + padding: 6px; + border-spacing: 6px; + border-style: solid; + border-width: 0 0 1px; + border-color: ; + background-color: #; + background-clip: border-box; + box-shadow: none; +} + +searchbar > revealer > box entry, +searchbar > revealer > box button { + margin: 0; +} + +/*************** + * Header bars * + ***************/ +headerbar button:not(.suggested-action):not(.destructive-action) { + color: ; + border-radius: 6px; +} + +headerbar button:focus:not(.suggested-action):not(.destructive-action), +headerbar button:hover:not(.suggested-action):not(.destructive-action), +headerbar button:active:not(.suggested-action):not(.destructive-action), +headerbar button:checked:not(.suggested-action):not(.destructive-action) { + color: #; +} + +headerbar button:disabled:not(.suggested-action):not(.destructive-action) { + color: ; +} + +headerbar + button:checked:disabled:not(.suggested-action):not(.destructive-action) { + background-color: transparent; + color: ; +} + +headerbar button:backdrop:not(.suggested-action):not(.destructive-action) { + color: ; +} + +headerbar button:backdrop:focus:not(.suggested-action):not(.destructive-action), +headerbar button:backdrop:hover:not(.suggested-action):not(.destructive-action), +headerbar + button:backdrop:active:not(.suggested-action):not(.destructive-action) { + color: ; +} + +headerbar + button:backdrop:disabled:not(.suggested-action):not(.destructive-action) { + color: ; +} + +headerbar + button:backdrop:checked:not(.suggested-action):not(.destructive-action) { + color: ; +} + +headerbar + button:backdrop:checked:disabled:not(.suggested-action):not(.destructive-action) { + color: ; +} + +headerbar entry { + background-color: ; + color: #; +} + +headerbar entry:focus-within { + box-shadow: inset 0 0 0 2px #; +} + +headerbar entry:disabled { + background-color: ; + color: ; +} + +headerbar entry image { + color: ; +} + +headerbar entry image:hover, +headerbar entry image:active { + color: #; +} + +headerbar entry image:disabled { + color: ; +} + +headerbar { + min-height: 48px; + padding: 0; + margin: 0; + border: none; + transition: all 75ms cubic-bezier(0, 0, 0.2, 1); + background-color: #; + color: #; + box-shadow: none; +} + +headerbar:disabled { + color: ; +} + +headerbar:backdrop { + background-color: #; + color: ; +} + +headerbar:backdrop:disabled { + color: ; +} + +headerbar.flat { + background-color: transparent; + color: #; +} + +headerbar .title { + padding: 0 12px; + font-weight: bold; +} + +headerbar .subtitle { + padding: 0 12px; + font-size: smaller; +} + +headerbar .subtitle, +headerbar .dim-label, +headerbar row label.subtitle, +row headerbar label.subtitle { + transition: color 75ms cubic-bezier(0, 0, 0.2, 1); + color: ; +} + +headerbar .subtitle:backdrop, +headerbar .dim-label:backdrop, +headerbar row label.subtitle:backdrop, +row headerbar label.subtitle:backdrop { + color: ; +} + +headerbar > windowhandle > box { + padding: 0 6px; +} + +headerbar > windowhandle > box, +headerbar > windowhandle > box > box.start, +headerbar > windowhandle > box > box.end { + border-spacing: 6px; +} + +headerbar entry, +headerbar spinbutton, +headerbar button, +headerbar stackswitcher, +headerbar menubutton, +headerbar splitbutton, +headerbar separator { + margin-top: 6px; + margin-bottom: 6px; +} + +headerbar menubutton > button, +headerbar spinbutton > button, +headerbar splitbutton > button, +headerbar splitbutton > menubutton, +headerbar stackswitcher > button { + margin-top: 0; + margin-bottom: 0; +} + +headerbar separator:not(.spacer) { + background-color: ; +} + +headerbar switch { + margin-top: 12px; + margin-bottom: 12px; +} + +headerbar spinbutton button { + margin-top: 0; + margin-bottom: 0; +} + +headerbar .entry-tag { + margin-top: 5px; + margin-bottom: 5px; +} + +headerbar .titlebar { + background-color: transparent; + box-shadow: none; +} + +headerbar headerbar + separator { + background-color: ; +} + +headerbar .linked:not(.vertical) > entry:not(:only-child) { + border-radius: 6px; +} + +headerbar button.suggested-action:disabled, +headerbar button.destructive-action:disabled { + background-color: ; + color: ; +} + +headerbar stackswitcher { + margin: 6px 0; + border-radius: 9999px; + border: 2px solid #; +} + +headerbar + stackswitcher.linked:not(.vertical) + > button.text-button:not(.suggested-action):not(.destructive-action) { + border-radius: 9999px; +} + +headerbar + stackswitcher.linked:not(.vertical) + > button.text-button:not(.suggested-action):not(.destructive-action):checked { + background-color: #; + color: ; +} + +headerbar.selection-mode { + transition: background-color 0.1ms 225ms, + color 75ms cubic-bezier(0, 0, 0.2, 1); + box-shadow: inset 0 1px ; + background-color: #; + color: ; +} + +headerbar.selection-mode:backdrop { + color: ; +} + +headerbar.selection-mode .subtitle:link { + color: ; +} + +headerbar.selection-mode .selection-menu { + padding-left: 16px; + padding-right: 16px; +} + +headerbar.selection-mode .selection-menu .arrow { + -gtk-icon-source: -gtk-icontheme('pan-down-symbolic'); +} + +headerbar .selection-mode { + box-shadow: inset 0 1px ; + background-color: #; +} + +.tiled headerbar, +.tiled-top headerbar, +.tiled-right headerbar, +.tiled-bottom headerbar, +.tiled-left headerbar, +.maximized headerbar, +.fullscreen headerbar { + border-radius: 0; +} + +headerbar.default-decoration { + min-height: 24px; + padding: 6px; + border-radius: 6px 6px 0 0; +} + +headerbar.default-decoration windowcontrols button, +headerbar.default-decoration windowcontrols menubutton { + min-height: 24px; + min-width: 24px; + margin: 0; + padding: 0; +} + +.solid-csd headerbar:dir(rtl), +.solid-csd headerbar:dir(ltr) { + border-radius: 0; + box-shadow: none; +} + +window.devel headerbar.titlebar { + background: # + cross-fade(10% -gtk-icontheme('system-run-symbolic'), image(transparent)) + 90% 0/256px 256px no-repeat, + linear-gradient(to right, transparent 65%, rgba(242, 205, 205, 0.1)), + linear-gradient(to top, #343434 3px, #393939); +} + +window.devel headerbar.titlebar:backdrop { + background: # + cross-fade(10% -gtk-icontheme('system-run-symbolic'), image(transparent)) + 90% 0/256px 256px no-repeat, + image(#); + /* background-color would flash */ +} + +/************ + * Pathbars * + ************/ + +pathbar > button { + padding-left: 6px; + padding-right: 6px; + border-radius: 6px; +} + +pathbar > button label:not(:only-child):first-child { + margin-left: 0; +} + +pathbar > button label:not(:only-child):last-child { + margin-right: 0; +} + +pathbar > button.text-button { + min-width: 0; +} + +pathbar > button.slider-button { + padding-left: 4px; + padding-right: 4px; +} + +.pathbar { + background-color: ; + color: ; + border: none; + border-radius: 6px; + padding: 2px; +} + +headerbar .pathbar { + margin-top: 6px; + margin-bottom: 6px; + background-color: ; + color: ; +} + +.pathbar > button { + margin-top: 0; + margin-bottom: 0; + min-height: 20px; + border-radius: 4px; + border: none; + box-shadow: none; +} + +.pathbar > button:last-child { + background-color: alpha(currentColor, 0.1); + color: #; + outline: none; + box-shadow: none; +} + +/************** + * Tree Views * + **************/ +columnview.view, +treeview.view { + border-left-color: #; + border-top-color: #; +} + +columnview.view:selected, +treeview.view:selected { + background-color: alpha(currentColor, 0.1); + box-shadow: none; +} + +columnview.view:focus, +treeview.view:focus { + box-shadow: none; + outline: none; +} + +columnview.view:hover, +columnview.view:selected, +treeview.view:hover, +treeview.view:selected { + border-radius: 0; + box-shadow: none; +} + +columnview.view.separator, +treeview.view.separator { + min-height: 5px; + color: ; +} + +columnview.view:drop(active), +treeview.view:drop(active) { + box-shadow: none; +} + +columnview.view.after:drop(active), +treeview.view.after:drop(active) { + border-top-style: none; +} + +columnview.view.before:drop(active), +treeview.view.before:drop(active) { + border-bottom-style: none; +} + +columnview.view > dndtarget:drop(active), +treeview.view > dndtarget:drop(active) { + border-style: solid none; + border-width: 1px; + border-color: alpha(currentColor, 0.06); +} + +columnview.view > dndtarget.after:drop(active), +treeview.view > dndtarget.after:drop(active) { + border-top-style: none; +} + +columnview.view > dndtarget.before:drop(active), +treeview.view > dndtarget.before:drop(active) { + border-bottom-style: none; +} + +columnview.view.expander, +treeview.view.expander { + min-width: 16px; + min-height: 16px; + -gtk-icon-source: -gtk-icontheme('pan-end-symbolic'); + color: ; +} + +columnview.view.expander:dir(rtl), +treeview.view.expander:dir(rtl) { + -gtk-icon-source: -gtk-icontheme('pan-end-symbolic-rtl'); +} + +columnview.view.expander:hover, +treeview.view.expander:hover { + color: #; +} + +columnview.view.expander:selected, +treeview.view.expander:selected { + color: #; +} + +columnview.view.expander:selected:hover, +treeview.view.expander:selected:hover { + color: #; +} + +columnview.view.expander:checked, +treeview.view.expander:checked { + -gtk-icon-source: -gtk-icontheme('pan-down-symbolic'); +} + +columnview.view.expander:disabled, +treeview.view.expander:disabled { + color: ; +} + +columnview.view.progressbar, +treeview.view.progressbar { + border-bottom: 6px solid #; + box-shadow: none; + background-color: transparent; + background-image: none; +} + +columnview.view.progressbar:selected:hover, +treeview.view.progressbar:selected:hover { + box-shadow: none; +} + +columnview.view.trough, +treeview.view.trough { + border-bottom: 6px solid ; + box-shadow: none; + background-color: transparent; + background-image: none; +} + +columnview.view.trough:selected:hover, +treeview.view.trough:selected:hover { + box-shadow: none; +} + +columnview.view > header > button, +treeview.view > header > button { + padding: 2px 6px; + border-style: none solid solid none; + border-width: 1px; + border-color: ; + border-radius: 0; + background-clip: border-box; +} + +columnview.view > header > button:not(:focus):not(:hover):not(:active), +treeview.view > header > button:not(:focus):not(:hover):not(:active) { + color: ; +} + +columnview.view > header > button, +columnview.view > header > button:disabled, +treeview.view > header > button, +treeview.view > header > button:disabled { + background-color: #; +} + +columnview.view > header > button:last-child, +treeview.view > header > button:last-child { + border-right-style: none; +} + +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: ; + border-radius: 0; + box-shadow: none; + background-color: #; + background-clip: border-box; + color: #; +} + +columnview.view acceleditor > label, +treeview.view acceleditor > label { + background-color: #; +} + +/********* + * Menus * + *********/ +menubar { + padding: 0; + color: #; +} + +menubar:backdrop { + color: ; +} + +.csd menubar { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1); +} + +menubar > item { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1); + min-height: 20px; + padding: 4px 8px; + color: ; +} + +menubar > item:selected { + transition: none; + background-color: alpha(currentColor, 0.1); + color: #; +} + +menubar > item:disabled { + color: ; +} + +menubar > item label:disabled { + color: inherit; +} + +menubar > item popover.menu popover.menu { + margin-left: 9px; +} + +menubar > item popover.menu.background popover.menu.background > contents { + margin: 0; + border-radius: 12px; +} + +/********************** + * Popover Base Menus * + **********************/ +popover.menu box.inline-buttons { + padding: 0 6px; +} + +popover.menu box.inline-buttons button.image-button.model { + min-height: 28px; + min-width: 28px; + padding: 0; + border: none; + outline: none; + transition: none; +} + +popover.menu box.inline-buttons button.image-button.model:selected { + background-image: image(alpha(currentColor, 0.06)); +} + +popover.menu box.circular-buttons { + padding: 6px; +} + +popover.menu box.circular-buttons button.circular.image-button.model { + padding: 6px; +} + +popover.menu box.circular-buttons button.circular.image-button.model:focus { + background-color: alpha(currentColor, 0.06); +} + +popover.menu arrow.left, +popover.menu radio.left, +popover.menu check.left { + margin-left: 0; + margin-right: 0; +} + +popover.menu arrow.right, +popover.menu radio.right, +popover.menu check.right { + margin-left: 0; + margin-right: 0; +} + +/************ + * Popovers * + ************/ +popover.background { + font: initial; +} + +popover.background, +popover.background:backdrop { + background-color: transparent; +} + +popover.background > arrow, +popover.background > contents { + transition: box-shadow 75ms cubic-bezier(0, 0, 0.2, 1); + padding: 6px; + background-color: #; + background-clip: border-box; + border-radius: 12px; + color: #; + border: 2px solid #; +} + +popover.background:backdrop > arrow, +popover.background:backdrop > contents { + border: 2px solid #; +} + +popover.background separator { + margin: 6px 0; +} + +popover.background modelbutton { + transition: background-color 75ms cubic-bezier(0, 0, 0.2, 1); + min-height: 22px; + min-width: 56px; + padding: 3px 9px; + border-radius: 6px; + color: #; + font: initial; + text-shadow: none; + box-shadow: none; + background: none; +} + +popover.background modelbutton:hover { + transition: none; + background-color: #; + color: #; +} + +popover.background modelbutton:disabled { + color: ; +} + +popover.background modelbutton arrow.left { + -gtk-icon-source: -gtk-icontheme('go-previous-symbolic'); +} + +popover.background modelbutton arrow.right { + -gtk-icon-source: -gtk-icontheme('go-next-symbolic'); +} + +popover.background label.title { + font-weight: bold; + padding: 4px 26px; +} + +popover.background > contents > list, +popover.background > contents > .view, +popover.background > contents > toolbar { + border-style: none; + box-shadow: none; + background-color: transparent; +} + +popover.background > contents separator { + background-color: ; + margin: 3px 0; +} + +popover.background > contents list separator { + margin: 0; +} + +popover.background > contents stack > box { + padding: 0; +} + +popover.background > contents stack > scrolledwindow > viewport { + border: 1px solid ; + border-radius: 2px; +} + +popover.background > contents > box > button { + margin: 0; +} + +popover.background.menu button, +popover.background button.model { + min-height: 32px; + padding: 0 8px; + border-radius: 6px; +} + +.osd popover.background, +popover.background.touch-selection, +popover.background.magnifier { + background-color: transparent; +} + +.osd popover.background > arrow, +.osd popover.background > contents, +popover.background.touch-selection > arrow, +popover.background.touch-selection > contents, +popover.background.magnifier > arrow, +popover.background.magnifier > contents { + border: none; + box-shadow: none; +} + +/************* + * Notebooks * + *************/ +tabbar scrolledwindow:not(.pinned) > tabbox tab, +notebook > header tab { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1), background-size 0ms, + background-image 0ms; + min-height: 24px; + min-width: 24px; + padding: 6px; + border: none; + outline: none; + background-clip: padding-box; + color: ; + font-weight: 500; + border-radius: 6px; +} + +tabbar scrolledwindow:not(.pinned) > tabbox tab:hover, +notebook > header tab:hover { + background-color: ; + color: #; +} + +tabbar scrolledwindow:not(.pinned) > tabbox tab:disabled, +notebook > header tab:disabled { + color: ; +} + +tabbar scrolledwindow:not(.pinned) > tabbox tab:checked, +notebook > header tab:checked, +tabbar scrolledwindow:not(.pinned) > tabbox tab:selected, +notebook > header tab:selected { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1); + background-color: #; + color: #; + box-shadow: 0 1px 3px ; +} + +tabbar scrolledwindow:not(.pinned) > tabbox tab:checked:disabled, +notebook > header tab:checked:disabled, +tabbar scrolledwindow:not(.pinned) > tabbox tab:selected:disabled, +notebook > header tab:selected:disabled { + color: ; +} + +frame > paned > notebook > header, +notebook.frame > header { + background-color: ; +} + +notebook, +notebook.frame { + background-color: #; + border-radius: 12px; +} + +notebook.frame frame > border { + border: none; + border-radius: 6px; +} + +notebook.frame frame > list row.activatable { + border-radius: 6px; +} + +notebook > header { + border: none; + background-color: ; + padding: 3px; + margin: 3px; + border-radius: 9px; +} + +notebook > header.top > tabs > arrow { + border-top-style: none; +} + +notebook > header.bottom > tabs > arrow { + border-bottom-style: none; +} + +notebook > header.top > tabs > arrow, +notebook > header.bottom > tabs > arrow { + padding-left: 4px; + padding-right: 4px; +} + +notebook > header.top > tabs > arrow.down, +notebook > header.bottom > tabs > arrow.down { + margin-left: 0; + -gtk-icon-source: -gtk-icontheme('pan-start-symbolic'); +} + +notebook > header.top > tabs > arrow.up, +notebook > header.bottom > tabs > arrow.up { + margin-right: 0; + -gtk-icon-source: -gtk-icontheme('pan-end-symbolic'); +} + +notebook > header.left > tabs > arrow { + border-left-style: none; +} + +notebook > header.right > tabs > arrow { + border-right-style: none; +} + +notebook > header.left > tabs > arrow, +notebook > header.right > tabs > arrow { + padding-top: 4px; + padding-bottom: 4px; +} + +notebook > header.left > tabs > arrow.down, +notebook > header.right > tabs > arrow.down { + margin-top: 0; + -gtk-icon-source: -gtk-icontheme('pan-up-symbolic'); +} + +notebook > header.left > tabs > arrow.up, +notebook > header.right > tabs > arrow.up { + margin-bottom: 0; + -gtk-icon-source: -gtk-icontheme('pan-down-symbolic'); +} + +notebook > header > tabs > arrow { + min-height: 16px; + min-width: 16px; + border-radius: 6px; +} + +notebook > header tab > box { + transition: background-color 75ms cubic-bezier(0, 0, 0.2, 1); + margin: -6px -12px; + padding: 6px 12px; +} + +notebook > header tab > box:drop(active) { + background-color: ; + color: #; +} + +notebook > header tab button.flat:last-child { + margin-left: 6px; + margin-right: -6px; +} + +notebook > header tab button.flat:first-child { + margin-left: -6px; + margin-right: 6px; +} + +notebook > header tab button.close-button { + min-width: 24px; + min-height: 24px; +} + +notebook > header.top tabs:not(:only-child):first-child, +notebook > header.bottom tabs:not(:only-child):first-child { + margin-left: 0; +} + +notebook > header.top tabs:not(:only-child):last-child, +notebook > header.bottom tabs:not(:only-child):last-child { + margin-right: 0; +} + +notebook > header.top tabs tab.reorderable-page, +notebook > header.bottom tabs tab.reorderable-page { + border-style: solid; +} + +notebook > header.left tabs:not(:only-child):first-child, +notebook > header.right tabs:not(:only-child):first-child { + margin-top: 0; +} + +notebook > header.left tabs:not(:only-child):last-child, +notebook > header.right tabs:not(:only-child):last-child { + margin-bottom: 0; +} + +notebook > header.left tabs tab.reorderable-page, +notebook > header.right tabs tab.reorderable-page { + border-style: solid; +} + +notebook > header > menubutton > button.image-button { + padding: 3px; + min-width: 24px; + min-height: 24px; + margin-left: 3px; +} + +notebook > stack:not(:only-child) { + background-color: transparent; + border-radius: 6px; +} + +tabbar .box { + min-height: 36px; +} + +tabbar:not(.inline) .box { + border: none; + background-color: transparent; + padding: 0; + margin: 3px; + border-radius: 12px; + box-shadow: none; +} + +tabbar:not(.inline):backdrop .box { + background-color: transparent; +} + +tabbar:not(.inline):backdrop .box > scrolledwindow, +tabbar:not(.inline):backdrop .box > .start-action, +tabbar:not(.inline):backdrop .box > .end-action { + filter: opacity(0.5); +} + +tabbar scrolledwindow:not(.pinned) > tabbox > tabboxchild { + padding: 3px 0; + margin: 0 -3px; +} + +tabbar scrolledwindow:not(.pinned) > tabbox > tabboxchild > tab { + margin: 3px; +} + +tabbar scrolledwindow.pinned > tabbox > tabboxchild { + padding: 3px 0; + margin: 0; +} + +tabbar scrolledwindow.pinned > tabbox > tabboxchild > tab { + margin: 3px; + padding: 3px; +} + +tabbar .start-action, +tabbar .end-action { + padding: 6px; +} + +tabbar .start-action:dir(ltr), +tabbar .end-action:dir(rtl) { + padding-right: 0; +} + +tabbar .start-action:dir(rtl), +tabbar .end-action:dir(ltr) { + padding-left: 0; +} + +dnd tab { + min-height: 24px; + background-color: #; + color: #; + margin: 24px; + outline: none; + box-shadow: 0 1px 5px 1px , + 0 2px 14px 3px , 0 0 0 1px ; +} + +tabbar tab, +dnd tab { + padding: 6px; +} + +tabbar tab button.image-button, +dnd tab button.image-button { + padding: 0; + margin: 0; + min-width: 24px; + min-height: 24px; + border-radius: 9999px; +} + +tabbar tab indicator, +dnd tab indicator { + min-height: 2px; + border-radius: 2px; + background: alpha(#, 0.5); + transform: translateY(4px); +} + +tabthumbnail { + border-radius: 10px; + transition: box-shadow 200ms cubic-bezier(0, 0, 0.2, 1), + background-color cubic-bezier(0, 0, 0.2, 1); +} + +tabthumbnail > box { + margin: 6px; +} + +tabthumbnail:drop(active) { + box-shadow: inset 0 0 0 2px alpha(#, 0.4); + background-color: alpha(#, 0.1); +} + +tabthumbnail .needs-attention:dir(ltr) { + transform: translate(8px, -8px); +} + +tabthumbnail .needs-attention:dir(rtl) { + transform: translate(-8px, -8px); +} + +tabthumbnail .needs-attention > widget { + background: #; + min-width: 12px; + min-height: 12px; + border-radius: 6px; + margin: 3px; + box-shadow: 0 1px 2px alpha(#, 0.4); +} + +tabthumbnail .card { + background: none; + color: inherit; +} + +tabthumbnail .card picture { + outline: none; + border-radius: 6px; +} + +tabthumbnail.pinned .card { + background-color: #; + color: #; +} + +tabthumbnail .pinned-box { + margin-left: 10px; + margin-right: 10px; +} + +tabthumbnail .icon-title-box { + border-spacing: 6px; +} + +tabthumbnail .tab-unpin-icon { + margin: 6px; + min-width: 24px; + min-height: 24px; +} + +taboverview > .overview.scrolled-to-top headerbar, +taboverview > .overview.scrolled-to-top searchbar > revealer > box { + background: none; + color: inherit; + box-shadow: none; +} + +taboverview > .overview .new-tab-button { + margin: 18px; +} + +tabview:drop(active), +tabbox:drop(active), +tabgrid:drop(active) { + box-shadow: none; +} + +/************** + * Scrollbars * + **************/ +scrollbar { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1); + background-color: #; +} + +scrollbar > range > trough { + outline: none; + background: none; + border: none; +} + +scrollbar > range > trough > 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: ; + box-shadow: none; + outline: none; +} + +scrollbar > range > trough > slider:hover { + background-color: ; +} + +scrollbar > range > trough > slider:active { + background-color: #; +} + +scrollbar > range > trough > slider:disabled { + background-color: ; +} + +scrollbar > range.fine-tune > trough > slider { + min-width: 4px; + min-height: 4px; +} + +scrollbar > range.fine-tune.horizontal > trough > slider { + margin: 2px 0; +} + +scrollbar > range.fine-tune.vertical > trough > slider { + margin: 0 2px; +} + +scrollbar.overlay-indicator:not(.fine-tune) > range > 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: 3px; + border: 1px solid rgba(44, 44, 44, 0.3); +} + +scrollbar.overlay-indicator:not(.dragging):not(.hovering) button { + min-width: 4px; + min-height: 4px; + margin: 3px; + border: 1px solid rgba(44, 44, 44, 0.3); + border-radius: 9999px; + background-color: ; + background-clip: padding-box; + -gtk-icon-source: none; +} + +scrollbar.overlay-indicator:not(.dragging):not(.hovering) button:disabled { + background-color: ; +} + +scrollbar.overlay-indicator.horizontal:not(.dragging):not(.hovering) + > range + > trough + > slider { + min-width: 24px; +} + +scrollbar.overlay-indicator.horizontal:not(.dragging):not(.hovering) button { + min-width: 8px; +} + +scrollbar.overlay-indicator.vertical:not(.dragging):not(.hovering) + > range + > trough + > slider { + min-height: 24px; +} + +scrollbar.overlay-indicator.vertical:not(.dragging):not(.hovering) button { + min-height: 8px; +} + +scrollbar.overlay-indicator.dragging, +scrollbar.overlay-indicator.hovering { + background-color: transparent; +} + +scrollbar.horizontal > range > trough > slider { + min-width: 24px; +} + +scrollbar.vertical > range > trough > 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: 6px 0; + padding: 0; + border: 2px solid ; + border-radius: 9999px; + background-color: transparent; + background-clip: border-box; + font-size: 0; + color: transparent; +} + +switch:checked { + background-color: #; + border-color: #; +} + +switch:disabled { + opacity: 0.5; +} + +switch image { + margin: -8px; +} + +switch > slider { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1); + min-width: 16px; + min-height: 16px; + margin: 2px; + border-radius: 9999px; + outline: none; + box-shadow: none; + background-color: ; + border: none; +} + +switch:focus > slider { + box-shadow: 0 0 0 10px ; +} + +switch:hover > slider { + box-shadow: 0 0 0 10px ; +} + +switch:focus:hover > slider { + box-shadow: 0 0 0 10px ; +} + +switch:checked > slider { + background-color: #; + color: #; +} + +/************************* + * Check and Radio items * + *************************/ +checkbutton, +radiobutton { + outline: none; + border-spacing: 4px; +} + +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: 16px; + min-width: 16px; + -gtk-icon-size: 16px; + padding: 0; + margin: 3px; + border: 2px solid ; + background-clip: border-box; + background-color: transparent; + border-radius: 9999px; + box-shadow: 0 0 0 10px transparent; + transition: all 75ms cubic-bezier(0, 0, 0.2, 1), + background-color 225ms cubic-bezier(0, 0, 0.2, 1), + box-shadow 225ms cubic-bezier(0, 0, 0.2, 1); +} + +check:hover, +radio:hover { + border-color: inherit; + box-shadow: 0 0 0 10px ; +} + +check:active, +radio:active { + border-color: #; + box-shadow: 0 0 0 10px ; +} + +check:checked, +check:indeterminate, +radio:checked, +radio:indeterminate { + border-color: transparent; + background-color: #; + color: ; +} + +check:checked:hover, +check:indeterminate:hover, +radio:checked:hover, +radio:indeterminate:hover { + background-color: #; + color: ; +} + +check:checked:active, +check:indeterminate:active, +radio:checked:active, +radio:indeterminate:active { + background-color: #; + color: ; +} + +check:checked:disabled, +check:indeterminate:disabled, +radio:checked:disabled, +radio:indeterminate:disabled { + border-color: transparent; + background-color: ; + color: #; +} + +check:disabled, +radio:disabled { + border-color: ; +} + +check:not(:hover):focus, +radio:not(:hover):focus { + box-shadow: none; +} + +popover.menu check, +popover.menu radio { + transition: none; + margin: 0; + padding: 0; +} + +popover.menu check, +popover.menu check:focus, +popover.menu check:hover, +popover.menu check:focus:hover, +popover.menu check:active, +popover.menu check:disabled, +popover.menu radio, +popover.menu radio:focus, +popover.menu radio:hover, +popover.menu radio:focus:hover, +popover.menu radio:active, +popover.menu radio:disabled { + transition: none; + box-shadow: none; + background-image: none; +} + +popover.menu check:not(:checked):not(:indeterminate):not(:disabled):hover, +popover.menu radio:not(:checked):not(:indeterminate):not(:disabled):hover { + border-color: ; + background-color: transparent; +} + +popover.menu check:active, +popover.menu check:checked, +popover.menu check:indeterminate, +popover.menu radio:active, +popover.menu radio:checked, +popover.menu radio:indeterminate { + border-color: transparent; + background-color: #; + color: ; +} + +popover.menu check:active:hover, +popover.menu check:checked:hover, +popover.menu check:indeterminate:hover, +popover.menu radio:active:hover, +popover.menu radio:checked:hover, +popover.menu radio:indeterminate:hover { + border-color: transparent; + background-color: ; + color: #; +} + +popover.menu check:active:disabled, +popover.menu check:checked:disabled, +popover.menu check:indeterminate:disabled, +popover.menu radio:active:disabled, +popover.menu radio:checked:disabled, +popover.menu radio:indeterminate:disabled { + border-color: transparent; + background-color: ; + color: #; +} + +popover.menu check, +popover.menu check:hover, +popover.menu check:active, +popover.menu check:disabled, +popover.menu radio, +popover.menu radio:hover, +popover.menu radio:active, +popover.menu radio:disabled { + box-shadow: none; + color: inherit; +} + +popover.menu check:dir(ltr), +popover.menu radio:dir(ltr) { + margin-right: 6px; +} + +popover.menu check:dir(rtl), +popover.menu radio:dir(rtl) { + margin-left: 6px; +} + +check:checked { + -gtk-icon-source: -gtk-scaled( + -gtk-recolor(url('assets/scalable/check-symbolic.svg')), + -gtk-recolor(url('assets/scalable/check-symbolic@2.svg')) + ); +} + +radio:checked { + -gtk-icon-source: -gtk-scaled( + -gtk-recolor(url('assets/scalable/dot-symbolic.svg')), + -gtk-recolor(url('assets/scalable/dot-symbolic@2.svg')) + ); +} + +check:indeterminate, +radio:indeterminate { + -gtk-icon-source: -gtk-scaled( + -gtk-recolor(url('assets/scalable/line-symbolic.svg')), + -gtk-recolor(url('assets/scalable/line-symbolic@2.svg')) + ); +} + +check:not(:checked):active { + -gtk-icon-transform: rotate(90deg); +} + +check:not(:checked):indeterminate:active { + -gtk-icon-transform: scaleX(-1); +} + +checkbutton.theme-selector radio, +checkbutton.theme-selector radio:hover, +checkbutton.theme-selector radio:disabled { + border-color: transparent; + background-color: transparent; +} + +checkbutton.theme-selector + radio:not(:checked):not(:indeterminate):not(:disabled):hover { + border-color: transparent; + background-color: transparent; +} + +checkbutton.theme-selector radio:checked, +checkbutton.theme-selector radio:active, +checkbutton.theme-selector radio:active:hover { + border-color: transparent; + background-color: #; + color: ; + -gtk-icon-source: -gtk-scaled( + -gtk-recolor(url('assets/scalable/check-symbolic.svg')), + -gtk-recolor(url('assets/scalable/check-symbolic@2.svg')) + ); +} + +checkbutton.theme-selector radio:checked:hover { + background-color: #; + color: ; +} + +themeswitcher { + padding: 6px; +} + +themeswitcher .check { + min-height: 16px; + min-width: 16px; + background-color: #; + color: ; + padding: 2px; + border-radius: 9999px; + margin: 3px; + -gtk-icon-size: 20px; + -gtk-icon-source: -gtk-scaled( + -gtk-recolor(url('assets/scalable/check-symbolic.svg')), + -gtk-recolor(url('assets/scalable/check-symbolic@2.svg')) + ); +} + +themeswitcher .check:hover { + background-color: #; + color: ; +} + +themeswitcher checkbutton radio { + padding: 0; + margin: 2px; + min-height: 48px; + min-width: 48px; +} + +themeswitcher checkbutton radio, +themeswitcher checkbutton radio:hover { + outline-color: ; + outline-width: 1px; + outline-offset: -1px; + outline-style: solid; + box-shadow: none; +} + +themeswitcher checkbutton radio, +themeswitcher checkbutton radio:hover, +themeswitcher checkbutton radio:checked, +themeswitcher checkbutton radio:checked:hover { + -gtk-icon-source: none; + transition: none; + border: none; +} + +themeswitcher checkbutton radio:checked, +themeswitcher checkbutton radio:checked:hover { + box-shadow: inset 0 0 0 2px #; + outline: none; +} + +themeswitcher checkbutton.system radio, +themeswitcher checkbutton.system radio:hover, +themeswitcher checkbutton.system radio:checked, +themeswitcher checkbutton.system radio:checked:hover { + background-image: linear-gradient(-45deg, # 49.99%, # 50.01%); + background-color: transparent; +} + +themeswitcher checkbutton.light radio, +themeswitcher checkbutton.light radio:hover, +themeswitcher checkbutton.light radio:checked, +themeswitcher checkbutton.light radio:checked:hover { + color: ; + background-color: #; +} + +themeswitcher checkbutton.dark radio, +themeswitcher checkbutton.dark radio:hover, +themeswitcher checkbutton.dark radio:checked, +themeswitcher checkbutton.dark radio:checked:hover { + color: #; + background-image: image(#); + background-color: transparent; +} + +/************ + * GtkScale * + ************/ +scale { + min-height: 2px; + min-width: 2px; +} + +scale.horizontal { + padding: 17px 12px; +} + +scale.vertical { + padding: 12px 17px; +} + +scale slider { + min-height: 18px; + min-width: 18px; + margin: -8px; +} + +scale.fine-tune.horizontal { + min-height: 4px; + padding-top: 16px; + padding-bottom: 16px; +} + +scale.fine-tune.vertical { + min-width: 4px; + padding-left: 16px; + padding-right: 16px; +} + +scale.fine-tune slider { + margin: -7px; +} + +scale trough { + transition: background-color 75ms cubic-bezier(0, 0, 0.2, 1); + outline: none; + background-color: ; +} + +scale trough:disabled { + background-color: ; +} + +scale highlight { + transition: background-image 75ms cubic-bezier(0, 0, 0.2, 1); + background-image: image(#); +} + +scale highlight:disabled { + background-color: #; + background-image: image(); +} + +scale fill { + transition: background-color 75ms cubic-bezier(0, 0, 0.2, 1); + background-color: ; +} + +scale fill:disabled { + background-color: transparent; +} + +scale slider { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1); + border-radius: 9999px; + color: #; + background-color: #; + box-shadow: inset 0 0 0 2px #; +} + +scale slider:hover { + box-shadow: inset 0 0 0 2px #, 0 0 0 8px ; +} + +scale slider:active { + box-shadow: inset 0 0 0 4px #, 0 0 0 8px ; +} + +scale slider:disabled { + box-shadow: inset 0 0 0 2px ; +} + +scale marks, +scale value { + color: ; +} + +scale indicator { + background-color: ; + 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 { + 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-height: 32px; + min-width: 32px; + margin: -15px; + border-radius: 50%; + background-size: auto, 1000% 1000%; + background-repeat: no-repeat; + background-position: center center; + background-color: transparent; +} + +scale.horizontal.marks-before:not(.marks-after) slider, +scale.horizontal.marks-before:not(.marks-after) slider:hover, +scale.horizontal.marks-before:not(.marks-after) slider:active, +scale.horizontal.marks-before:not(.marks-after) slider:disabled { + box-shadow: none; +} + +scale.horizontal.marks-before:not(.marks-after) slider:focus { + background-color: alpha(currentColor, 0.08); +} + +scale.horizontal.marks-before:not(.marks-after) slider:hover { + background-color: alpha(currentColor, 0.08); +} + +scale.horizontal.marks-before:not(.marks-after) slider:focus:hover { + background-color: alpha(currentColor, 0.16); +} + +scale.horizontal.marks-before:not(.marks-after) slider:active { + background-size: auto, 0% 0%; + background-color: alpha(currentColor, 0.08); +} + +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') + ); +} + +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') + ); +} + +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') + ); +} + +scale.horizontal.marks-after:not(.marks-before) 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-height: 32px; + min-width: 32px; + margin: -15px; + border-radius: 50%; + background-size: auto, 1000% 1000%; + background-repeat: no-repeat; + background-position: center center; + background-color: transparent; +} + +scale.horizontal.marks-after:not(.marks-before) slider, +scale.horizontal.marks-after:not(.marks-before) slider:hover, +scale.horizontal.marks-after:not(.marks-before) slider:active, +scale.horizontal.marks-after:not(.marks-before) slider:disabled { + box-shadow: none; +} + +scale.horizontal.marks-after:not(.marks-before) slider:focus { + background-color: alpha(currentColor, 0.08); +} + +scale.horizontal.marks-after:not(.marks-before) slider:hover { + background-color: alpha(currentColor, 0.08); +} + +scale.horizontal.marks-after:not(.marks-before) slider:focus:hover { + background-color: alpha(currentColor, 0.16); +} + +scale.horizontal.marks-after:not(.marks-before) slider:active { + background-size: auto, 0% 0%; + background-color: alpha(currentColor, 0.08); +} + +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') + ); +} + +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') + ); +} + +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') + ); +} + +scale.vertical.marks-before:not(.marks-after) 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-height: 32px; + min-width: 32px; + margin: -15px; + border-radius: 50%; + background-size: auto, 1000% 1000%; + background-repeat: no-repeat; + background-position: center center; + background-color: transparent; +} + +scale.vertical.marks-before:not(.marks-after) slider, +scale.vertical.marks-before:not(.marks-after) slider:hover, +scale.vertical.marks-before:not(.marks-after) slider:active, +scale.vertical.marks-before:not(.marks-after) slider:disabled { + box-shadow: none; +} + +scale.vertical.marks-before:not(.marks-after) slider:focus { + background-color: alpha(currentColor, 0.08); +} + +scale.vertical.marks-before:not(.marks-after) slider:hover { + background-color: alpha(currentColor, 0.08); +} + +scale.vertical.marks-before:not(.marks-after) slider:focus:hover { + background-color: alpha(currentColor, 0.16); +} + +scale.vertical.marks-before:not(.marks-after) slider:active { + background-size: auto, 0% 0%; + background-color: alpha(currentColor, 0.08); +} + +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') + ); +} + +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') + ); +} + +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') + ); +} + +scale.vertical.marks-after:not(.marks-before) 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-height: 32px; + min-width: 32px; + margin: -15px; + border-radius: 50%; + background-size: auto, 1000% 1000%; + background-repeat: no-repeat; + background-position: center center; + background-color: transparent; +} + +scale.vertical.marks-after:not(.marks-before) slider, +scale.vertical.marks-after:not(.marks-before) slider:hover, +scale.vertical.marks-after:not(.marks-before) slider:active, +scale.vertical.marks-after:not(.marks-before) slider:disabled { + box-shadow: none; +} + +scale.vertical.marks-after:not(.marks-before) slider:focus { + background-color: alpha(currentColor, 0.08); +} + +scale.vertical.marks-after:not(.marks-before) slider:hover { + background-color: alpha(currentColor, 0.08); +} + +scale.vertical.marks-after:not(.marks-before) slider:focus:hover { + background-color: alpha(currentColor, 0.16); +} + +scale.vertical.marks-after:not(.marks-before) slider:active { + background-size: auto, 0% 0%; + background-color: alpha(currentColor, 0.08); +} + +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') + ); +} + +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') + ); +} + +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') + ); +} + +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: -13.5px; + margin-top: 11.5px; +} + +scale.color.vertical:dir(ltr) { + padding: 0 0 0 12px; +} + +scale.color.vertical:dir(ltr) slider { + margin-left: -13.5px; + margin-right: 11.5px; +} + +scale.color.vertical:dir(rtl) { + padding: 0 12px 0 0; +} + +scale.color.vertical:dir(rtl) slider { + margin-right: -13.5px; + margin-left: 11.5px; +} + +/***************** + * Progress bars * + *****************/ +progressbar { + color: ; + font-size: smaller; +} + +progressbar.horizontal trough, +progressbar.horizontal progress { + min-height: 6px; +} + +progressbar.vertical trough, +progressbar.vertical progress { + min-width: 6px; +} + +progressbar trough { + border-radius: 6px; + background-color: ; +} + +progressbar progress { + border-radius: 6px; + background-color: #; +} + +progressbar.osd { + min-width: 6px; + min-height: 6px; + background-color: transparent; + box-shadow: none; + margin: 0; + padding: 0; +} + +progressbar.osd trough { + background-color: transparent; +} + +progressbar.osd progress { + background-color: #; +} + +progressbar trough.empty progress { + all: unset; +} + +/************* + * Level Bar * + *************/ +levelbar.horizontal block { + min-height: 6px; +} + +levelbar.horizontal.discrete block { + min-width: 36px; +} + +levelbar.horizontal.discrete block:not(:last-child) { + margin-right: 2px; +} + +levelbar.vertical block { + min-width: 6px; +} + +levelbar.vertical.discrete block { + min-height: 36px; +} + +levelbar.vertical.discrete block:not(:last-child) { + margin-bottom: 2px; +} + +levelbar trough { + border-radius: 6px; +} + +levelbar block.low { + background-color: #fdd633; +} + +levelbar block.high, +levelbar block:not(.empty) { + background-color: #; +} + +levelbar block.full { + background-color: #81c995; +} + +levelbar block.empty { + background-color: ; +} + +/**************** + * Print dialog * +*****************/ +window.dialog.print drawing { + color: #; + background: none; + border: none; + padding: 0; +} + +window.dialog.print drawing paper { + padding: 0; + border: 1px solid ; + background-color: #; + color: #; +} + +window.dialog.print .dialog-action-box { + margin: 12px; +} + +/********** + * Frames * + **********/ +frame, +.frame { + border: 1px solid ; +} + +frame > list, +.frame > list { + border: none; +} + +frame.view, +.frame.view { + border-radius: 6px; +} + +frame.flat, +.frame.flat { + border-style: none; +} + +frame { + border-radius: 6px; +} + +frame > label { + margin: 4px; +} + +frame.flat > border, +statusbar frame > border { + border: none; +} + +actionbar > revealer > box { + padding: 6px; + border-spacing: 6px; + border-top: 1px solid ; + background-color: #; + background-clip: border-box; + box-shadow: none; +} + +statusbar { + padding: 6px 18px; +} + +scrolledwindow viewport.frame { + border: none; +} + +stack scrolledwindow.frame viewport.frame list { + border: none; +} + +overshoot.top { + background-size: 200% 70%; + background-image: radial-gradient( + farthest-side at top, + rgba(242, 205, 205, 0.24) 99%, + rgba(242, 205, 205, 0) 100% + ); + background-repeat: no-repeat; + background-position: center top; + background-color: transparent; + border: none; + box-shadow: none; +} + +overshoot.bottom { + background-size: 200% 70%; + background-image: radial-gradient( + farthest-side at bottom, + rgba(242, 205, 205, 0.24) 99%, + rgba(242, 205, 205, 0) 100% + ); + background-repeat: no-repeat; + background-position: center bottom; + background-color: transparent; + border: none; + box-shadow: none; +} + +overshoot.left { + background-size: 200% 70%; + background-image: radial-gradient( + farthest-side at left, + rgba(242, 205, 205, 0.24) 99%, + rgba(242, 205, 205, 0) 100% + ); + background-repeat: no-repeat; + background-position: left center; + background-color: transparent; + border: none; + box-shadow: none; +} + +overshoot.right { + background-size: 200% 70%; + background-image: radial-gradient( + farthest-side at right, + rgba(242, 205, 205, 0.24) 99%, + rgba(242, 205, 205, 0) 100% + ); + 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: ; + background-color: #; +} + +junction:dir(rtl) { + border-style: solid solid none none; +} + +separator:not(.spacer) { + min-width: 1px; + min-height: 1px; + background-color: ; +} + +stacksidebar + separator.vertical, +stacksidebar separator.horizontal, +button.font separator, +button.file separator { + min-width: 0; + min-height: 0; + background-color: transparent; +} + +/********* + * Lists * + *********/ +listview.boxed-list, +list.boxed-list, +listview.content:not(.conversation-listbox), +list.content:not(.conversation-listbox) { + border-radius: 7px; + box-shadow: none; + border: 1px solid ; +} + +listview.boxed-list > row.expander list > row, +list.boxed-list > row.expander list > row, +listview.boxed-list > row, +list.boxed-list > row, +listview.content:not(.conversation-listbox) > row, +list.content:not(.conversation-listbox) > row { + border-radius: 0; +} + +listview.boxed-list > row.expander list > row:first-child, +list.boxed-list > row.expander list > row:first-child, +listview.boxed-list > row:first-child, +list.boxed-list > row:first-child, +listview.content:not(.conversation-listbox) > row:first-child, +list.content:not(.conversation-listbox) > row:first-child { + border-top-left-radius: 6px; + border-top-right-radius: 6px; +} + +listview.boxed-list > row.expander list > row:last-child, +list.boxed-list > row.expander list > row:last-child, +listview.boxed-list > row:last-child, +list.boxed-list > row:last-child, +listview.content:not(.conversation-listbox) > row:last-child, +list.content:not(.conversation-listbox) > row:last-child { + border-bottom-left-radius: 6px; + border-bottom-right-radius: 6px; +} + +listview.boxed-list > row.expander list > row:only-child, +list.boxed-list > row.expander list > row:only-child, +listview.boxed-list > row:only-child, +list.boxed-list > row:only-child, +listview.content:not(.conversation-listbox) > row:only-child, +list.content:not(.conversation-listbox) > row:only-child { + border-radius: 6px; +} + +listview.boxed-list > row.expander list > row:not(:last-child), +list.boxed-list > row.expander list > row:not(:last-child), +listview.boxed-list > row:not(:last-child), +list.boxed-list > row:not(:last-child), +listview.content:not(.conversation-listbox) > row:not(:last-child), +list.content:not(.conversation-listbox) > row:not(:last-child) { + border-bottom: 1px solid ; +} + +listview.boxed-list > row.expander list > row:focus, +list.boxed-list > row.expander list > row:focus, +listview.boxed-list > row:focus, +list.boxed-list > row:focus, +listview.content:not(.conversation-listbox) > row:focus, +list.content:not(.conversation-listbox) > row:focus { + box-shadow: inset 0 0 0 1000px alpha(currentColor, 0.08); +} + +listview, +list { + border-color: ; + background-color: #; + color: ; +} + +listview row, +list row { + padding: 2px; + color: ; +} + +listview > row.expander, +list > row.expander { + padding: 0px; +} + +listview > row.expander .row-header, +list > row.expander .row-header { + padding: 2px; +} + +listview.boxed-list > row.expander list, +list.boxed-list > row.expander list { + background-color: transparent; + box-shadow: none; + border: none; +} + +list.frame { + border-radius: 6px; +} + +listview.view { + color: #; + background-color: transparent; +} + +popover.menu listview.view { + padding: 0; +} + +popover.menu listview.view > row { + margin-left: 0; + margin-right: 0; +} + +popover.menu listview.view > row:first-child, +popover.menu listview.view > row:last-child, +popover.menu listview.view > row { + border-radius: 6px; +} + +row { + color: ; + background-clip: padding-box; +} + +row label.subtitle { + font-size: smaller; +} + +row > box.header { + margin-left: 12px; + margin-right: 12px; + min-height: 48px; +} + +row > box.header > .icon:disabled { + filter: opacity(0.35); +} + +row > box.header > box.title { + margin-top: 6px; + margin-bottom: 6px; + border-spacing: 3px; +} + +columnview.view > header > button, +treeview.view > header > button, +row.activatable { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1); + outline: none; + box-shadow: inset 0 0 0 9999px transparent; +} + +columnview.view > header > button:focus, +treeview.view > header > button:focus, +row.activatable:focus { + box-shadow: inset 0 0 0 9999px alpha(currentColor, 0.08); +} + +columnview.view > header > button:hover, +treeview.view > header > button:hover, +row.activatable:hover { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1), box-shadow 0ms; + box-shadow: inset 0 0 0 9999px alpha(currentColor, 0.08); +} + +columnview.view > header > button.has-open-popup, +treeview.view > header > button.has-open-popup, +columnview.view > header > button:active, +treeview.view > header > button:active, +row.activatable.has-open-popup, +row.activatable:active { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1); + box-shadow: inset 0 0 0 9999px alpha(currentColor, 0.12); +} + +button row.activatable:focus, +button row.activatable:hover, +button row.activatable:active { + box-shadow: none; +} + +button:checked row.activatable { + color: ; +} + +row:selected image, +row:selected label { + color: #; +} + +row:selected button image, +row:selected button label { + color: inherit; +} + +row:selected:disabled image, +row:selected:disabled label { + color: ; +} + +treeexpander { + border-spacing: 4px; +} + +columnview row:not(:selected) cell editablelabel:not(.editing):focus-within { + outline: 2px solid alpha(currentColor, 0.06); +} + +columnview row:not(:selected) cell editablelabel.editing:focus-within { + outline: 2px solid #; +} + +columnview row:not(:selected) cell editablelabel.editing text selection { + color: ; + background-color: #; +} + +.rich-list { + /* rich lists usually containing other widgets than just labels/text */ +} + +.rich-list > row { + padding: 9px 12px; + min-height: 32px; + /* should be tall even when only containing a label */ +} + +.rich-list > row > box { + border-spacing: 12px; +} + +/********************* + * App Notifications * + *********************/ +.app-notification { + margin: 8px; + border-spacing: 9px; + padding: 9px; + border: none; +} + +.app-notification button.text-button:not(:disabled) { + color: #; +} + +.app-notification.frame, +.app-notification border { + border-style: none; +} + +/************* + * Expanders * + *************/ +expander { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1); + min-width: 16px; + min-height: 16px; + color: ; + -gtk-icon-source: -gtk-icontheme('pan-end-symbolic'); +} + +expander:dir(rtl) { + -gtk-icon-source: -gtk-icontheme('pan-end-symbolic-rtl'); +} + +expander:hover, +expander:active { + color: #; +} + +expander:disabled { + color: ; +} + +expander-widget > box > title { + border-radius: 6px; +} + +expander-widget > box > title:hover > expander { + color: ; +} + +.navigation-sidebar:not(decoration):not(window):drop(active):focus, +.navigation-sidebar:not(decoration):not(window):drop(active), +placessidebar:not(decoration):not(window):drop(active):focus, +placessidebar:not(decoration):not(window):drop(active), +stackswitcher:not(decoration):not(window):drop(active):focus, +stackswitcher:not(decoration):not(window):drop(active), +expander-widget:not(decoration):not(window):drop(active):focus, +expander-widget:not(decoration):not(window):drop(active) { + box-shadow: none; +} + +/************ + * Calendar * + ************/ +calendar { + padding: 0; + border: 1px solid ; + border-radius: 6px; + color: #; +} + +calendar:disabled { + color: ; +} + +calendar:selected { + border-radius: 6px; +} + +calendar > header { + padding: 3px; + border-bottom: 1px solid ; +} + +calendar > header > button { + min-height: 24px; +} + +calendar > grid { + margin: 3px; +} + +calendar > grid > label { + border-radius: 9999px; + margin: 0; +} + +calendar > grid > label.today { + box-shadow: none; +} + +calendar > grid > label.today:selected { + box-shadow: none; +} + +calendar > grid > label:focus { + outline-style: none; +} + +calendar > grid > label.day-number { + padding: 9px; +} + +calendar > grid > label.day-number:selected { + color: #; + background-color: alpha(currentColor, 0.06); +} + +calendar > grid > label.day-number.other-month { + color: alpha(currentColor, 0.3); +} + +/*********** + * Dialogs * + ***********/ +window.dialog.message.background { + background-color: #; +} + +window.dialog.message box.dialog-vbox.vertical { + border-spacing: 10px; +} + +window.dialog.message .titlebar { + min-height: 24px; + border-style: none; + box-shadow: inset 0 1px ; + background-color: #; + color: #; +} + +window.dialog.message .titlebar:backdrop { + background-color: #; + color: ; +} + +window.dialog.message.csd .dialog-action-area { + margin-top: -6px; + padding: 6px; +} + +window.dialog.message.csd .dialog-action-area > button, +window.dialog.message.csd .dialog-action-area > button:first-child, +window.dialog.message.csd .dialog-action-area > button:last-child { + border-radius: 6px; +} + +window.dialog.message.csd .dialog-action-area > button:not(:last-child) { + margin-right: 6px; +} + +window.dialog.message.csd .dialog-action-area > button:not(:disabled) { + color: #; +} + +window.dialog.message.csd + .dialog-action-area + > button.destructive-action:not(:disabled) { + color: #; +} + +window.background.csd.dialog > headerbar.titlebar { + box-shadow: inset 0 -1px ; +} + +window.aboutdialog.background.csd scrolledwindow.frame, +window.aboutdialog.background.csd scrolledwindow.frame > viewport.view, +window.aboutdialog.background.csd scrolledwindow.frame > textview.view, +window.aboutdialog.background.csd scrolledwindow.frame > textview.view > text { + border-radius: 6px; +} + +filechooser .dialog-action-box { + border-top: 1px solid ; +} + +filechooser #pathbarbox { + border-bottom: 1px solid ; + background-color: #; +} + +filechooser stack.view frame > border { + border: none; +} + +filechooserbutton > button > box { + border-spacing: 6px; +} + +filechooserbutton:drop(active) { + box-shadow: none; + border-color: transparent; +} + +/*********** + * Sidebar * + ***********/ +.sidebar { + border-style: none; +} + +.sidebar:not(separator):dir(ltr), +.sidebar.left:not(separator), +.sidebar.left:not(separator):dir(rtl) { + border-right: 1px solid ; + border-left-style: none; +} + +.sidebar:not(separator):dir(rtl), +.sidebar.right:not(separator) { + border-left: 1px solid ; + border-right-style: none; +} + +separator + .sidebar:not(separator):dir(ltr), +separator + .sidebar.left:not(separator), +separator + .sidebar.left:not(separator):dir(rtl), +separator + box > .sidebar:not(separator):dir(ltr), +separator + box > .sidebar.left:not(separator), +separator + box > .sidebar.left:not(separator):dir(rtl) { + border-right: none; +} + +separator + .sidebar:not(separator):dir(rtl), +separator + .sidebar.right:not(separator), +separator + box > .sidebar:not(separator):dir(rtl), +separator + box > .sidebar.right:not(separator) { + border-left: none; +} + +.sidebar listview.view, +.sidebar list { + background-color: transparent; +} + +paned .sidebar.left, +paned .sidebar.right, +paned .sidebar.left:dir(rtl), +paned .sidebar:dir(rtl), +paned .sidebar:dir(ltr), +paned .sidebar { + border-style: none; +} + +leaflet.unfolded > box > stacksidebar.sidebar { + border: none; +} + +stacksidebar list { + padding: 4px 0; +} + +stacksidebar row { + min-height: 24px; + padding: 6px 9px; + border-radius: 6px; + margin: 2px 6px; +} + +stacksidebar row:selected { + font-weight: 500; +} + +stacksidebar row > label { + padding-left: 6px; + padding-right: 6px; + color: inherit; +} + +separator.sidebar { + background-color: ; + border-right: none; +} + +separator.sidebar.selection-mode, +.selection-mode separator.sidebar { + background-color: ; +} + +/********************** + * Navigation Sidebar * + **********************/ +.navigation-sidebar { + border-right: none; + margin: 0 4px; +} + +.navigation-sidebar > row { + min-height: 32px; + padding: 2px 4px; + margin: 1px 0; + border-radius: 6px; +} + +.navigation-sidebar > row:hover, +.navigation-sidebar > row:focus-visible:focus-within { + background-color: alpha(currentColor, 0.16); +} + +.navigation-sidebar > row:selected label, +.navigation-sidebar > row:selected image { + color: #; + font-weight: 500; +} + +.navigation-sidebar > row:selected:hover { + background-color: #; +} + +.navigation-sidebar > row:selected:focus-visible:focus-within { + outline: none; + background-color: alpha(currentColor, 0.08); +} + +.navigation-sidebar > row:selected:focus-visible:focus-within:hover { + background-color: alpha(currentColor, 0.16); +} + +.navigation-sidebar > row:disabled { + color: ; +} + +.navigation-sidebar > separator { + margin: 3px 0; +} + +/**************** + * File chooser * + ****************/ +row image.sidebar-icon { + transition: color 75ms cubic-bezier(0, 0, 0.2, 1); + color: ; +} + +row image.sidebar-icon:disabled { + color: ; +} + +placessidebar > viewport.frame { + border-style: none; +} + +placessidebar .navigation-sidebar > row:selected { + font-weight: 500; +} + +placessidebar .navigation-sidebar > row image.sidebar-icon:dir(ltr) { + padding-right: 8px; +} + +placessidebar .navigation-sidebar > row image.sidebar-icon:dir(rtl) { + padding-left: 8px; +} + +placessidebar .navigation-sidebar > row label.sidebar-label { + color: inherit; +} + +placessidebar .navigation-sidebar > row label.sidebar-label:dir(ltr) { + padding-right: 2px; +} + +placessidebar .navigation-sidebar > row label.sidebar-label:dir(rtl) { + padding-left: 2px; +} + +placessidebar .navigation-sidebar > row.sidebar-placeholder-row { + background-color: alpha(currentColor, 0.08); +} + +placessidebar .navigation-sidebar > row.sidebar-new-bookmark-row { + color: #; +} + +placessidebar + .navigation-sidebar + > row.sidebar-new-bookmark-row + image.sidebar-icon { + color: #; +} + +placessidebar .navigation-sidebar > row:drop(active) { + transition: all 75ms cubic-bezier(0, 0, 0.2, 1), box-shadow 0ms; + box-shadow: inset 0 0 0 9999px alpha(currentColor, 0.08); +} + +placesview .server-list-button > image { + transition: 200ms cubic-bezier(0, 0, 0.2, 1); + -gtk-icon-transform: rotate(0turn); +} + +placesview .server-list-button:checked > image { + transition: 200ms cubic-bezier(0, 0, 0.2, 1); + -gtk-icon-transform: rotate(-0.5turn); +} + +placesview > actionbar > revealer > box > label { + border-spacing: 6px; +} + +/********* + * Paned * + *********/ +paned > separator { + min-width: 1px; + min-height: 1px; + -gtk-icon-source: none; + border: none; + box-shadow: none; + background-color: transparent; + background-image: image(#); + background-size: 1px 1px; + background-clip: content-box; +} + +paned > separator.wide { + min-width: 6px; + min-height: 6px; + background-color: #; + background-image: image(#), image(#); + 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; +} + +/************ + * GtkVideo * + ************/ +video { + background: black; + border-radius: 6px; +} + +video image.osd { + min-width: 64px; + min-height: 64px; + border-radius: 9999px; + border: none; +} + +/************** + * GtkInfoBar * + **************/ +infobar { + border: none; + margin-bottom: 0; +} + +infobar > revealer > box { + padding: 6px; + border-spacing: 12px; +} + +infobar.info > revealer > box button, +infobar.info > revealer > box button.text-button:not(:disabled), +infobar.info:hover > revealer > box button, +infobar.info:hover > revealer > box button.text-button:not(:disabled), +infobar.info:backdrop > revealer > box button, +infobar.info:backdrop > revealer > box button.text-button:not(:disabled) { + color: #; +} + +infobar.action > revealer > box, +infobar.action:backdrop > revealer > box, +infobar.question > revealer > box, +infobar.question:backdrop > revealer > box { + background-color: #; + color: #; + border-radius: 6px; +} + +infobar.action > revealer > box button, +infobar.action > revealer > box button:hover, +infobar.action > revealer > box button:focus, +infobar.action > revealer > box button:active, +infobar.action > revealer > box button:checked, +infobar.action > revealer > box button.text-button:not(:disabled), +infobar.action:backdrop > revealer > box button, +infobar.action:backdrop > revealer > box button:hover, +infobar.action:backdrop > revealer > box button:focus, +infobar.action:backdrop > revealer > box button:active, +infobar.action:backdrop > revealer > box button:checked, +infobar.action:backdrop > revealer > box button.text-button:not(:disabled), +infobar.question > revealer > box button, +infobar.question > revealer > box button:hover, +infobar.question > revealer > box button:focus, +infobar.question > revealer > box button:active, +infobar.question > revealer > box button:checked, +infobar.question > revealer > box button.text-button:not(:disabled), +infobar.question:backdrop > revealer > box button, +infobar.question:backdrop > revealer > box button:hover, +infobar.question:backdrop > revealer > box button:focus, +infobar.question:backdrop > revealer > box button:active, +infobar.question:backdrop > revealer > box button:checked, +infobar.question:backdrop > revealer > box button.text-button:not(:disabled) { + color: #; +} + +infobar.action > revealer > box *:link, +infobar.action:backdrop > revealer > box *:link, +infobar.question > revealer > box *:link, +infobar.question:backdrop > revealer > box *:link { + color: ; +} + +infobar.action:hover > revealer > box, +infobar.question:hover > revealer > box { + background-color: #; + color: #; + border-radius: 6px; +} + +infobar.warning > revealer > box, +infobar.warning:backdrop > revealer > box { + background-color: #fdd633; + color: ; +} + +infobar.warning > revealer > box button, +infobar.warning > revealer > box button:hover, +infobar.warning > revealer > box button:focus, +infobar.warning > revealer > box button:active, +infobar.warning > revealer > box button:checked, +infobar.warning > revealer > box button.text-button:not(:disabled), +infobar.warning:backdrop > revealer > box button, +infobar.warning:backdrop > revealer > box button:hover, +infobar.warning:backdrop > revealer > box button:focus, +infobar.warning:backdrop > revealer > box button:active, +infobar.warning:backdrop > revealer > box button:checked, +infobar.warning:backdrop > revealer > box button.text-button:not(:disabled) { + color: ; +} + +infobar.warning > revealer > box *:link, +infobar.warning:backdrop > revealer > box *:link { + color: ; +} + +infobar.warning:hover > revealer > box { + background-color: #; +} + +infobar.error > revealer > box, +infobar.error:backdrop > revealer > box { + background-color: #; + color: ; +} + +infobar.error > revealer > box button, +infobar.error > revealer > box button:hover, +infobar.error > revealer > box button:focus, +infobar.error > revealer > box button:active, +infobar.error > revealer > box button:checked, +infobar.error > revealer > box button.text-button:not(:disabled), +infobar.error:backdrop > revealer > box button, +infobar.error:backdrop > revealer > box button:hover, +infobar.error:backdrop > revealer > box button:focus, +infobar.error:backdrop > revealer > box button:active, +infobar.error:backdrop > revealer > box button:checked, +infobar.error:backdrop > revealer > box button.text-button:not(:disabled) { + color: ; +} + +infobar.error > revealer > box *:link, +infobar.error:backdrop > revealer > box *:link { + color: ; +} + +infobar.error:hover > revealer > box { + background-color: #f0766b; +} + +/************ + * Tooltips * + ************/ +tooltip { + border: none; + background-clip: padding-box; + padding: 6px 12px; + box-shadow: none; +} + +tooltip.background { + background-color: rgba(24, 24, 37, 0.9); + color: #; + box-shadow: 0 2px 2.4px -1px , + 0 4px 3px 0 , 0 1px 6px 0 ; + border-radius: 6px; + margin: 2px 6px 8px 6px; +} + +tooltip > box { + border-spacing: 6px; +} + +/***************** + * Color Chooser * + *****************/ +colorswatch.top { + border-top-left-radius: 12px; + border-top-right-radius: 12px; +} + +colorswatch.top overlay { + border-top-left-radius: 12px; + border-top-right-radius: 12px; +} + +colorswatch.bottom { + border-bottom-left-radius: 12px; + border-bottom-right-radius: 12px; +} + +colorswatch.bottom overlay { + border-bottom-left-radius: 12px; + border-bottom-right-radius: 12px; +} + +colorswatch.left, +colorswatch:first-child:not(.top) { + border-top-left-radius: 12px; + border-bottom-left-radius: 12px; +} + +colorswatch.left overlay, +colorswatch:first-child:not(.top) overlay { + border-top-left-radius: 12px; + border-bottom-left-radius: 12px; +} + +colorswatch.right, +colorswatch:last-child:not(.bottom) { + border-top-right-radius: 12px; + border-bottom-right-radius: 12px; +} + +colorswatch.right overlay, +colorswatch:last-child:not(.bottom) overlay { + border-top-right-radius: 12px; + border-bottom-right-radius: 12px; +} + +colorswatch.dark { + color: #; +} + +colorswatch.light { + color: ; +} + +colorswatch#add-color-button { + border-radius: 12px 12px 0 0; + color: #; +} + +colorswatch#add-color-button:only-child { + border-radius: 12px; +} + +colorswatch#add-color-button overlay { + background-color: #; +} + +colorswatch:disabled { + opacity: 0.5; +} + +colorswatch:disabled overlay { + box-shadow: none; +} + +colorswatch#editor-color-sample { + border-radius: 12px; +} + +colorswatch#editor-color-sample overlay { + border-radius: 12px; +} + +colorchooser .popover.osd { + transition: box-shadow 75ms cubic-bezier(0, 0, 0.2, 1); + border-radius: 6px; + box-shadow: 0 2px 2.4px -1px , + 0 4px 3px 0 , 0 1px 6px 0 , + inset 0 1px ; + background-color: #; +} + +colorchooser .popover.osd:backdrop { + box-shadow: 0 3px 2px -3px , + 0 2px 2px -1px , 0 1px 3px 0 , + inset 0 1px ; +} + +/******** + * Misc * + ********/ +.content-view { + background-color: #; +} + +/********************** + * Window Decorations * + **********************/ +window { + transition: box-shadow 75ms cubic-bezier(0, 0, 0.2, 1); + border-radius: 12px; + box-shadow: 0 2px 2.4px -1px , + 0 4px 3px 0 , 0 1px 6px 0 , + 0 0 0 2px #, 0 0 16px transparent; +} + +window.csd { + border-radius: 12px; +} + +window:backdrop { + box-shadow: 0 2px 2px -2px , + 0 1px 2px -1px , 0 1px 2px -0.6px , + 0 0 0 2px #, 0 0 16px transparent; +} + +window.popup { + border-radius: 12px; + box-shadow: none; +} + +window.dialog.message { + border-radius: 12px; +} + +window.solid-csd { + margin: 0; + padding: 2px; + border-radius: 0; + background-color: #; + border: 2px solid #; +} + +window.solid-csd:backdrop { + background-color: #; +} + +window.maximized, +window.fullscreen, +window.tiled, +window.tiled-top, +window.tiled-right, +window.tiled-bottom, +window.tiled-left { + border-radius: 0; + outline-width: 0; +} + +windowcontrols { + border-spacing: 6px; +} + +windowcontrols.start:not(.empty):dir(ltr), +windowcontrols.end:not(.empty):dir(rtl) { + margin-left: 15px; + margin-right: 15px; +} + +windowcontrols.start:not(.empty):dir(rtl), +windowcontrols.end:not(.empty):dir(ltr) { + margin-left: 15px; + margin-right: 15px; +} + +windowcontrols button:not(.suggested-action):not(.destructive-action) { + min-height: 12px; + min-width: 12px; + padding: 0; + margin: 0 2px; + border-radius: 9999px; +} + +windowcontrols button.minimize:not(.suggested-action):not(.destructive-action), +windowcontrols button.maximize:not(.suggested-action):not(.destructive-action), +windowcontrols button.close:not(.suggested-action):not(.destructive-action) { + color: transparent; +} + +windowcontrols + button.minimize:not(.suggested-action):not(.destructive-action) + image, +windowcontrols + button.maximize:not(.suggested-action):not(.destructive-action) + image, +windowcontrols + button.close:not(.suggested-action):not(.destructive-action) + image { + padding: 0; +} + +windowcontrols + button.minimize:hover:not(.suggested-action):not(.destructive-action), +windowcontrols + button.minimize:active:not(.suggested-action):not(.destructive-action) { + background-color: shade(#ff9e64, 0.5); +} + +windowcontrols + button.maximize:hover:not(.suggested-action):not(.destructive-action), +windowcontrols + button.maximize:active:not(.suggested-action):not(.destructive-action) { + background-color: shade(#9ece6a, 0.5); +} + +windowcontrols + button.close:hover:not(.suggested-action):not(.destructive-action), +windowcontrols + button.close:active:not(.suggested-action):not(.destructive-action) { + background-color: shade(#f7768e, 0.5); +} + +windowcontrols + button.minimize:backdrop:hover:not(.suggested-action):not(.destructive-action), +windowcontrols + button.minimize:backdrop:active:not(.suggested-action):not(.destructive-action), +windowcontrols + button.maximize:backdrop:hover:not(.suggested-action):not(.destructive-action), +windowcontrols + button.maximize:backdrop:active:not(.suggested-action):not(.destructive-action), +windowcontrols + button.close:backdrop:hover:not(.suggested-action):not(.destructive-action), +windowcontrols + button.close:backdrop:active:not(.suggested-action):not(.destructive-action) { + color: transparent; +} + +windowcontrols button.minimize:not(.suggested-action):not(.destructive-action), +windowcontrols + button.minimize:active:not(.suggested-action):not(.destructive-action) { + background-color: #ff9e64; +} + +windowcontrols button.maximize:not(.suggested-action):not(.destructive-action), +windowcontrols + button.maximize:active:not(.suggested-action):not(.destructive-action) { + background-color: #9ece6a; +} + +windowcontrols button.close:not(.suggested-action):not(.destructive-action), +windowcontrols + button.close:active:not(.suggested-action):not(.destructive-action) { + background-color: #f7768e; +} + +button.titlebutton.close:backdrop, +button.titlebutton.maximize:backdrop, +button.titlebutton.minimize:backdrop, +windowcontrols > button.close:backdrop, +windowcontrols > button.maximize:backdrop, +windowcontrols > button.minimize:backdrop { + background-color: #; +} + +gridview > child:selected, +row:selected, +calendar:selected { + background-color: alpha(currentColor, 0.06); +} + +.view:selected, +iconview:selected, +flowbox > flowboxchild:selected, +calendar > grid > label.today { + color: #; + background-color: rgba(242, 205, 205, 0.2); +} + +text > selection, +label > selection, +calendar > grid > label.today:selected, +stacksidebar row:selected, +.navigation-sidebar > row:selected { + color: #; + background-color: #; +} + +.monospace { + font-family: monospace; +} + +/********************** + * Touch Copy & Paste * + **********************/ +cursor-handle { + color: #; + -gtk-icon-source: -gtk-recolor( + url('assets/scalable/cursor-handle-symbolic.svg') + ); +} + +cursor-handle.insertion-cursor:dir(ltr), +cursor-handle.insertion-cursor:dir(rtl) { + padding-top: 6px; +} + +shortcuts-section { + margin: 20px; +} + +.shortcuts-search-results { + margin: 20px; + border-spacing: 24px; +} + +shortcut { + border-spacing: 6px; +} + +shortcut > .keycap { + min-width: 12px; + min-height: 26px; + margin-top: 2px; + padding-bottom: 2px; + padding-left: 8px; + padding-right: 8px; + border: solid 1px ; + border-radius: 7px; + box-shadow: inset 0 -2px ; + background-color: #; + color: #; + font-size: smaller; +} + +:not(decoration):not(window):drop(active) { + caret-color: #; +} + +stackswitcher { + min-height: 0; + border-radius: 9999px; + padding: 2px; + margin: 6px 0; + background-color: transparent; + border: 2px solid #; +} + +stackswitcher.linked:not(.vertical) + > button:not(.suggested-action):not(.destructive-action) { + margin: 0 0; + min-height: 20px; + padding: 5px 10px; +} + +stackswitcher.linked:not(.vertical) + > button:not(.suggested-action):not(.destructive-action):not(:hover):not(:active):not(:checked) { + background-color: transparent; +} + +stackswitcher.linked:not(.vertical) + > button:not(.suggested-action):not(.destructive-action):first-child, +stackswitcher.linked:not(.vertical) + > button:not(.suggested-action):not(.destructive-action):last-child, +stackswitcher.linked:not(.vertical) + > button:not(.suggested-action):not(.destructive-action) { + border-radius: 9999px; +} + +stackswitcher.linked:not(.vertical) + > button.text-button:not(.suggested-action):not(.destructive-action) { + min-width: 100px; +} + +stackswitcher button.text-button { + min-width: 100px; +} + +stackswitcher.circular { + border-spacing: 12px; +} + +stackswitcher.circular button.circular, +stackswitcher.circular button.text-button.circular { + min-width: 36px; + min-height: 36px; + padding: 0; +} + +/************* + * App Icons * + *************/ +.lowres-icon { + -gtk-icon-shadow: none; +} + +.icon-dropshadow { + -gtk-icon-shadow: none; +} + +/********* + * Emoji * + *********/ +popover.emoji-picker { + padding: 0; +} + +popover.emoji-picker > contents { + padding: 0; +} + +.emoji-searchbar { + padding: 6px; + border-spacing: 6px; + border-bottom: 1px solid ; + background: none; +} + +.emoji-searchbar entry text { + background: none; + box-shadow: none; +} + +.emoji-toolbar { + padding: 0; + border-spacing: 3px; + border-top: 1px solid ; + background: none; +} + +button.emoji-section { + margin: 0; + padding: 6px; + border-radius: 6px; +} + +button.emoji-section:checked { + color: #; +} + +popover.emoji-picker emoji { + font-size: x-large; + padding: 6px; + transition: all 75ms cubic-bezier(0, 0, 0.2, 1); + border-radius: 6px; +} + +popover.emoji-picker emoji:focus, +popover.emoji-picker emoji:hover { + background: alpha(currentColor, 0.08); +} + +emoji-completion-row { + min-height: 28px; + padding: 0 12px; +} + +emoji-completion-row > box { + border-spacing: 6px; + padding: 2px 6px; +} + +emoji-completion-row:focus, +emoji-completion-row:hover, +emoji-completion-row emoji:hover, +emoji-completion-row emoji:focus { + background-color: alpha(currentColor, 0.08); + color: #; +} + +popover.entry-completion > contents { + padding: 0; +} + +.nautilus-window { + background-color: #; +} + +.nautilus-window:backdrop { + background-color: #; +} + +.nautilus-window headerbar { + box-shadow: none; +} + +.nautilus-window separator.spacer { + padding-right: 2em; +} + +.nautilus-window flap.unfolded > placessidebar { + background-color: transparent; + color: ; + padding: 0 0 0 2px; + margin: 0 0 0 2px; +} + +.nautilus-window + flap.unfolded + > placessidebar + > scrolledwindow + > viewport + > list.navigation-sidebar { + background: none; + padding: 0 0 0 2px; + margin: 0 0 0 2px; +} + +.nautilus-window + flap.unfolded + > placessidebar + > scrolledwindow + > viewport + > list.navigation-sidebar + > separator { + background: ; +} + +.nautilus-window .vertical separator { + background: none; +} + +.nautilus-window + flap.unfolded + > placessidebar + > scrolledwindow + > viewport + > list.navigation-sidebar + > row.activatable { + border-radius: 6px; +} + +.nautilus-window + flap.unfolded + > placessidebar + > scrolledwindow + > viewport + > list.navigation-sidebar + > row.activatable, +.nautilus-window + flap.unfolded + > placessidebar + > scrolledwindow + > viewport + > list.navigation-sidebar + > row.activatable + image.sidebar-icon, +.nautilus-window + flap.unfolded + > placessidebar + > scrolledwindow + > viewport + > list.navigation-sidebar + > row.activatable + label.sidebar-label, +.nautilus-window + flap.unfolded + > placessidebar + > scrolledwindow + > viewport + > list.navigation-sidebar + > row.activatable + button.sidebar-button { + color: #; +} + +.nautilus-window + flap.unfolded + > placessidebar + > scrolledwindow + > viewport + > list.navigation-sidebar + > row.activatable:hover { + background-color: ; + color: #; +} + +.nautilus-window + flap.unfolded + > placessidebar + > scrolledwindow + > viewport + > list.navigation-sidebar + > row.activatable:selected { + background-color: #; + font-weight: 700; + border-left: 3px solid #f7768e; +} + +.nautilus-window + flap.unfolded + > placessidebar + > scrolledwindow + > viewport + > list.navigation-sidebar + > row.activatable:selected, +.nautilus-window + flap.unfolded + > placessidebar + > scrolledwindow + > viewport + > list.navigation-sidebar + > row.activatable:selected + image.sidebar-icon, +.nautilus-window + flap.unfolded + > placessidebar + > scrolledwindow + > viewport + > list.navigation-sidebar + > row.activatable:selected + label.sidebar-label, +.nautilus-window + flap.unfolded + > placessidebar + > scrolledwindow + > viewport + > list.navigation-sidebar + > row.activatable:selected + button.sidebar-button { + color: #; +} + +.nautilus-window + flap.unfolded + > placessidebar + > scrolledwindow + > viewport + > list.navigation-sidebar + > row.activatable:disabled, +.nautilus-window + flap.unfolded + > placessidebar + > scrolledwindow + > viewport + > list.navigation-sidebar + > row.activatable:disabled + image.sidebar-icon, +.nautilus-window + flap.unfolded + > placessidebar + > scrolledwindow + > viewport + > list.navigation-sidebar + > row.activatable:disabled + label.sidebar-label { + color: ; +} + +.nautilus-window + flap.unfolded + > placessidebar + > scrolledwindow + > scrollbar + > range + > though { + background: none; +} + +.nautilus-window + flap.unfolded + > placessidebar + > scrolledwindow + > scrollbar + > range + > though + > slider { + border: none; +} + +.nautilus-window .nautilus-grid-view.view { + margin: 0 6px 6px; +} + +.nautilus-window .unfolded { + background-color: #; +} + +.nautilus-window .nautilus-grid-view.view, +.nautilus-window .nautilus-grid-view.view gridview.view { + background-color: #; + border-radius: 12px; +} + +.nautilus-window flap > separator { + background: none; +} + +.nautilus-window placesview label { + color: ; +} + +.nautilus-window infobar { + margin: 3px; +} + +.nautilus-window infobar > revealer > box { + border-radius: 12px; +} + +.nautilus-window label.search-information { + margin: 3px; + border-radius: 6px; +} + +.nautilus-window .floating-bar { + min-height: 32px; + padding: 0; + margin: 6px; + border-style: none; + border-radius: 6px; + background-color: #; + color: ; + box-shadow: 0 3px 2px -2px , + 0 3px 2.4px 0 , 0 1px 4.8px 0 ; +} + +.nautilus-window .floating-bar button { + margin: 4px; + color: ; +} + +#NautilusViewCell clamp box { + margin: 0; + border-spacing: 0; +} + +#NautilusQueryEditor > menubutton > button { + min-width: 16px; + min-height: 16px; + margin: 0; +} + +#NautilusQueryEditor > text { + margin: 0; +} + +#NautilusPathBar { + background-color: #; + border-radius: 6px; + margin: 6px 0; +} + +#NautilusPathBar #NautilusPathButton { + margin: 0 3px; + border-radius: 6px; +} + +#NautilusPathBar #NautilusPathButton.current-dir { + color: #; +} + +#NautilusPathBar #NautilusPathButton.current-dir:hover, +#NautilusPathBar #NautilusPathButton.current-dir:active { + background: none; + box-shadow: none; +} + +#NautilusPathBar #NautilusPathButton:first-child { + margin-left: 0; +} + +#NautilusPathBar > menubutton { + margin: 0; +} + +#NautilusPathBar > menubutton > button { + border-radius: 9999px; +} + +#NautilusQueryEditorTag { + border-radius: 9999px; +} + +#NautilusQueryEditorTag > button { + margin: 3px; + padding: 0; + min-height: 22px; + min-width: 22px; +} + +window.dialog > box > stack > box > box > notebook.frame { + border-width: 0 0 0 1px; + border-radius: 0; +} + +.history-view { + background-color: #; +} + +#displayitem { + border-top: 1px solid ; +} + +.small .card { + border-radius: 0; + box-shadow: none; +} + +.small .card.forecast-card { + border-width: 1px 0; +} + +.small .card.display-container { + border-width: 0 0 1px 0; +} + +leaflet button.number-button { + background-color: ; +} + +leaflet button.number-button:hover { + background-color: ; +} + +leaflet button.number-button:active { + background-color: ; +} + +leaflet button.clear-button.image-button { + border-radius: 6px; +} + +datechooser.view button.flat.pill, +datechooser.view button.circular.day { + min-height: 24px; + min-width: 24px; + padding: 6px; +} + +.contacts-contact-list list.navigation-sidebar { + background: none; +} + +flowboxchild > button.card.category-tile { + padding: 21px; + border: none; + border-radius: 6px; +} + +flowboxchild > button.card.category-tile-iconless { + padding: 9px 15px; +} + +app-context-bar > box:not(:first-child) > button.flat { + border-radius: 0; +} + +app-context-bar > box:not(:first-child) > button.flat:last-child { + border-radius: 0 6px 6px 0; +} + +app-context-bar > box:first-child > button.flat { + border-radius: 0; +} + +app-context-bar > box:first-child > button.flat:first-child { + border-radius: 6px 0 0 6px; +} + +app-context-bar > box > button.flat { + border-left-color: ; +} + +carousel.card { + border: none; +} + +.context-tile-lozenge { + min-height: 28px; + min-width: 28px; + padding: 6px; +} + +.context-tile-lozenge.grey { + color: #; + background-color: ; +} + +.context-tile-lozenge.green, +.context-tile-lozenge.details-rating-0 { + color: #4cb168; + background-color: rgba(129, 201, 149, 0.15); +} + +.context-tile-lozenge.blue, +.context-tile-lozenge.details-rating-5 { + color: #; + background-color: rgba(33, 150, 243, 0.15); +} + +.context-tile-lozenge.yellow, +.context-tile-lozenge.details-rating-12 { + color: #e1b602; + background-color: rgba(253, 214, 51, 0.15); +} + +.context-tile-lozenge.details-rating-15 { + color: #ff9800; + background-color: rgba(255, 152, 0, 0.15); +} + +.context-tile-lozenge.red, +.context-tile-lozenge.details-rating-18 { + color: #eb4b3d; + background-color: rgba(242, 139, 130, 0.15); +} + +screenshot-carousel box.frame.view { + border-width: 1px 0; + border-radius: 0; +} + +/* Styling for specific category buttons. */ +.category-tile.category-create { + background: linear-gradient(180deg, #ce8cd7 0%, #2861c6 100%); + color: #; +} + +.category-tile.category-create:hover { + background: linear-gradient( + 180deg, + shade(#ce8cd7, 1.07) 0%, + shade(#2861c6, 1.1) 100% + ); +} + +.category-tile.category-create:active { + background: linear-gradient( + 180deg, + shade(#ce8cd7, 0.95) 0%, + shade(#2861c6, 0.95) 100% + ); +} + +.category-tile.category-develop { + background: #5e5c64; + color: #; +} + +.category-tile.category-develop:hover { + background: shade(#5e5c64, 1.2); +} + +.category-tile.category-develop:active { + background-color: shade(#5e5c64, 0.95); +} + +.category-tile.category-learn { + background: linear-gradient(180deg, #2ec27e 30%, #27a66c 100%); + color: #; +} + +.category-tile.category-learn:hover { + background: linear-gradient( + 180deg, + shade(#2ec27e, 1.06) 30%, + shade(#27a66c, 1.06) 100% + ); +} + +.category-tile.category-learn:active { + background: linear-gradient( + 180deg, + shade(#2ec27e, 0.95) 30%, + shade(#27a66c, 0.95) 100% + ); +} + +.category-tile.category-play { + background: linear-gradient(75deg, #f9e2a7 0%, #eb5ec3 50%, #6d53e0 100%); + color: #393484; +} + +.category-tile.category-play:hover { + background: linear-gradient( + 75deg, + shade(#f9e2a7, 1.07) 0%, + shade(#eb5ec3, 1.07) 50%, + shade(#6d53e0, 1.07) 100% + ); +} + +.category-tile.category-play:active { + background: linear-gradient( + 75deg, + shade(#f9e2a7, 0.97) 0%, + shade(#eb5ec3, 0.95) 50%, + shade(#6d53e0, 1.07) 100% + ); +} + +.category-tile.category-socialize { + background: linear-gradient(90deg, #ef4e9b 0%, #f77466 100%); + color: ; +} + +.category-tile.category-socialize:hover { + background: linear-gradient( + 90deg, + shade(#ef4e9b, 1.08) 0%, + shade(#f77466, 1.08) 100% + ); +} + +.category-tile.category-socialize:active { + background: linear-gradient( + 90deg, + shade(#ef4e9b, 0.95) 0%, + shade(#f77466, 0.95) 100% + ); +} + +.category-tile.category-work { + padding: 1px; + /* FIXME: work around https://gitlab.gnome.org/GNOME/gtk/-/issues/4324 */ + color: #1c71d8; + background-color: #fdf8d7; + background-image: linear-gradient( + 1px, + transparent 1px + ), + linear-gradient(90deg, 1px, transparent 1px); + background-size: 10px 10px, 10px 10px; + background-position: -1px -4px, center -1px; +} + +.category-tile.category-work:hover { + background-color: #fefcef; + background-image: linear-gradient( + 1px, + transparent 1px + ), + linear-gradient(90deg, 1px, transparent 1px); +} + +.category-tile.category-work:active { + background-color: #fcf4bf; + background-image: linear-gradient( + 1px, + transparent 1px + ), + linear-gradient(90deg, 1px, transparent 1px); +} + +.polari-room-list .sidebar { + background: none; +} + +.polari-room-list .sidebar > row.activatable:selected { + background-color: #; + color: ; +} + +.polari-room-list popover.background > arrow, +.polari-room-list popover.background > contents { + padding: 0; +} + +window.org-gnome-Builder headerbar { + box-shadow: inset 0 -1px ; +} + +window.org-gnome-Builder headerbar splitbutton button { + border-radius: 6px; +} + +window.org-gnome-Builder headerbar splitbutton notification button { + margin: 0; + min-height: 24px; + min-width: 24px; + padding: 0; +} + +window.org-gnome-Builder headerbar menubutton > button { + border-radius: 6px; + padding: 6px 9px; +} + +window.org-gnome-Builder headerbar paneltogglebutton button { + border-radius: 6px; +} + +popover.background.global-search > arrow, +popover.background.global-search > contents { + padding: 0; +} + +panelframeswitcher { + padding: 6px; +} + +.frameheader.header { + min-height: 24px; + background-color: ; +} + +.frameheader.header > button { + border: none; + margin: 0; + padding: 3px; +} + +.frameheader.header tabbar.inline > revealer > box { + min-height: 24px; +} + +.frameheader.header tabbar.inline > revealer > box .start-action { + padding: 0; + border: none; +} + +.frameheader.header tabbar.inline > revealer > box .end-action { + padding: 0; + border-left: 1px solid ; +} + +.frameheader.header + tabbar.inline + > revealer + > box + .end-action + menubutton + > button { + margin: 6px; + min-height: 24px; + min-width: 24px; + padding: 3px; + border-radius: 6px; +} + +.frameheader.header tabbar.inline > revealer > box tabbox { + border: none; + background: none; +} + +panelstatusbar { + background-color: #; +} + +panelstatusbar > menubutton > button, +panelstatusbar > paneltogglebutton button.image-button { + border-radius: 0; +} + +.style-variant { + padding: 0 12px; +} + +.style-variant button.toggle { + padding: 0; +} + +.style-variant button.toggle, +.style-variant button.toggle:hover, +.style-variant button.toggle:focus, +.style-variant button.toggle:active, +.style-variant button.toggle:checked { + background: none; + outline: none; + border: none; + box-shadow: none; +} + +.style-variant button.toggle > stylevariantpreview > .wallpaper { + border-radius: 6px; + outline-color: transparent; + outline-width: 3px; + outline-offset: 3px; + outline-style: solid; + box-shadow: none; +} + +.style-variant button.toggle:hover > stylevariantpreview > .wallpaper { + outline-color: ; +} + +.style-variant button.toggle:active > stylevariantpreview > .wallpaper { + outline-color: ; +} + +.style-variant button.toggle:checked > stylevariantpreview > .wallpaper { + outline-color: #; +} + +window.dialog + > .dialog-vbox + > box + > scrolledwindow + > viewport + > widget + > list.boxed-list { + border: none; + border-radius: 0; +} + +window.dialog + > .dialog-vbox + > box + > scrolledwindow + > viewport + > widget + > list.boxed-list + > row:first-child, +window.dialog + > .dialog-vbox + > box + > scrolledwindow + > viewport + > widget + > list.boxed-list + > row:last-child { + border-radius: 0; +} + +avatar { + border-radius: 9999px; + font-weight: bold; +} + +avatar.color1 { + background-image: linear-gradient(#83b6ec, #337fdc); + color: #cfe1f5; +} + +avatar.color2 { + background-image: linear-gradient(#7ad9f1, #0f9ac8); + color: #caeaf2; +} + +avatar.color3 { + background-image: linear-gradient(#8de6b1, #29ae74); + color: #cef8d8; +} + +avatar.color4 { + background-image: linear-gradient(#b5e98a, #6ab85b); + color: #e6f9d7; +} + +avatar.color5 { + background-image: linear-gradient(#f8e359, #d29d09); + color: #f9f4e1; +} + +avatar.color6 { + background-image: linear-gradient(#ffcb62, #d68400); + color: #ffead1; +} + +avatar.color7 { + background-image: linear-gradient(#ffa95a, #ed5b00); + color: #ffe5c5; +} + +avatar.color8 { + background-image: linear-gradient(#f78773, #e62d42); + color: #f8d2ce; +} + +avatar.color9 { + background-image: linear-gradient(#e973ab, #e33b6a); + color: #fac7de; +} + +avatar.color10 { + background-image: linear-gradient(#cb78d4, #9945b5); + color: #e7c2e8; +} + +avatar.color11 { + background-image: linear-gradient(#9e91e8, #7a59ca); + color: #d5d2f5; +} + +avatar.color12 { + background-image: linear-gradient(#e3cf9c, #b08952); + color: #f2eade; +} + +avatar.color13 { + background-image: linear-gradient(#be916d, #785336); + color: #e5d6ca; +} + +avatar.color14 { + background-image: linear-gradient(#c0bfbc, #6e6d71); + color: #d8d7d3; +} + +avatar.contrasted { + color: #; +} + +avatar.image { + background: none; +} + +.card { + border-radius: 6px; + box-shadow: none; + border: 1px solid ; + background-clip: border-box; + background-color: #; + color: ; +} + +preferencespage > scrolledwindow > viewport > clamp > box { + margin: 24px 12px; + border-spacing: 24px; +} + +preferencesgroup > box, +preferencesgroup > box .labels { + border-spacing: 6px; +} + +preferencesgroup > box > box.header:not(.single-line) { + margin-bottom: 6px; +} + +preferencesgroup > box > box.single-line { + min-height: 34px; +} + +preferencesgroup > box button.background-preview-button.toggle { + padding: 0; + background: none; + box-shadow: none; + outline-color: transparent; + outline-width: 3px; + outline-offset: 3px; + outline-style: solid; +} + +preferencesgroup > box button.background-preview-button.toggle, +preferencesgroup + > box + button.background-preview-button.toggle + > background-preview { + border-radius: 6px; +} + +preferencesgroup > box button.background-preview-button.toggle:hover { + outline-color: ; +} + +preferencesgroup > box button.background-preview-button.toggle:active { + outline-color: ; +} + +preferencesgroup > box button.background-preview-button.toggle:checked { + outline-color: #; +} + +statuspage > scrolledwindow > viewport > box { + margin: 36px 12px; + border-spacing: 36px; +} + +statuspage > scrolledwindow > viewport > box > clamp > box { + border-spacing: 12px; +} + +statuspage > scrolledwindow > viewport > box > clamp > box > .icon { + -gtk-icon-size: 128px; + color: alpha(currentColor, 0.55); +} + +statuspage > scrolledwindow > viewport > box > clamp > box > .icon:disabled { + opacity: 0.35; +} + +statuspage + > scrolledwindow + > viewport + > box + > clamp + > box + > .icon:not(:last-child) { + margin-bottom: 24px; +} + +statuspage.compact > scrolledwindow > viewport > box { + margin: 24px 12px; + border-spacing: 24px; +} + +statuspage.compact > scrolledwindow > viewport > box > clamp > box > .icon { + -gtk-icon-size: 96px; +} + +statuspage.compact + > scrolledwindow + > viewport + > box + > clamp + > box + > .icon:not(:last-child) { + margin-bottom: 12px; +} + +statuspage.compact > scrolledwindow > viewport > box > clamp > box > .title { + font-size: 18pt; +} + +toast { + margin: 12px; + margin-bottom: 24px; + border-radius: 9999px; + border-spacing: 6px; + padding: 6px; + box-shadow: 0 7px 4.8px -4px , + 0 12px 10.2px 2px , 0 5px 13.2px 4px , + inset 0 1px ; + background-color: #; + color: #; + border: none; +} + +toast:dir(ltr) { + padding-left: 12px; +} + +toast:dir(rtl) { + padding-right: 12px; +} + +toast > label { + margin: 0 6px; +} + +viewswitcher { + margin: 0; +} + +viewswitcher.wide { + margin-top: 6px; + margin-bottom: 6px; +} + +viewswitcher.wide button.toggle:checked, +viewswitcher.wide button.toggle.flat:checked { + background-color: #; + color: ; +} + +viewswitcher.wide button.toggle:checked:backdrop, +viewswitcher.wide button.toggle.flat:checked:backdrop { + color: ; +} + +viewswitcher.wide + button.toggle:checked + indicatorbin.needs-attention + > indicator, +viewswitcher.wide + button.toggle.flat:checked + indicatorbin.needs-attention + > indicator { + background-color: ; +} + +viewswitcher.wide + button.toggle:checked + indicatorbin.needs-attention + > indicator + > label, +viewswitcher.wide + button.toggle.flat:checked + indicatorbin.needs-attention + > indicator + > label { + color: #; +} + +viewswitcher.narrow button.toggle { + border-radius: 0; + margin: 0; + border: none; +} + +headerbar viewswitcher.narrow button.toggle { + border-radius: 6px; + margin: 5px 2px; + min-width: 119px; + padding: 0; + background-color: transparent; +} + +headerbar viewswitcher.narrow button.toggle:checked { + background-color: #; + color: ; +} + +headerbar viewswitcher.narrow button.toggle:checked indicator { + background: ; +} + +headerbar viewswitcher.narrow button.toggle:checked indicator > label { + color: #; +} + +headerbar viewswitcher.narrow button.toggle:checked:backdrop { + color: ; +} + +headerbar viewswitcher.narrow button.toggle:focus { + box-shadow: none; +} + +viewswitcher button.toggle { + font-weight: bold; + padding: 0; + min-height: 0; + margin: 0; +} + +viewswitcher button.toggle > stack > box.narrow { + font-size: 0.75rem; + padding-top: 7px; + padding-bottom: 5px; + border-spacing: 4px; +} + +viewswitcher button.toggle > stack > box.narrow > stack > label { + padding-left: 8px; + padding-right: 8px; +} + +viewswitcher button.toggle > stack > box.wide { + padding: 0 12px; + border-spacing: 6px; +} + +viewswitcherbar actionbar > revealer > box { + padding: 0; +} + +viewswitchertitle viewswitcher { + margin-left: 12px; + margin-right: 12px; +} + +indicatorbin > indicator, +indicatorbin > mask { + min-width: 6px; + min-height: 6px; + border-radius: 9999px; +} + +indicatorbin > indicator { + margin: 1px; + padding: 0; + background: alpha(currentColor, 0.4); +} + +indicatorbin > indicator > label { + font-size: 0.6rem; + font-weight: bold; + padding: 2px 5px; + color: #; +} + +indicatorbin > mask { + padding: 1px; + background: black; +} + +indicatorbin.needs-attention > indicator { + background-color: #; +} + +indicatorbin.needs-attention > indicator > label { + color: ; +} diff --git a/Configs/.config/hyde/wallbash/Wall-Dcol/hypr.dcol b/Configs/.config/hyde/wallbash/Wall-Dcol/hypr.dcol new file mode 100644 index 0000000..0083ba3 --- /dev/null +++ b/Configs/.config/hyde/wallbash/Wall-Dcol/hypr.dcol @@ -0,0 +1,15 @@ +$HOME/.config/hypr/themes/colors.conf +exec = gsettings set org.gnome.desktop.interface gtk-theme 'Wallbash-Gtk' +exec = gsettings set org.gnome.desktop.interface color-scheme 'prefer-' + +general { + col.active_border = rgba(ff) rgba(ff) 45deg + col.inactive_border = rgba(ff) rgba(ff) 45deg +} + +group { + col.border_active = rgba(ff) rgba(ff) 45deg + col.border_inactive = rgba(cc) rgba(cc) 45deg + col.border_locked_active = rgba(ff) rgba(ff) 45deg + col.border_locked_inactive = rgba(cc) rgba(cc) 45deg +} diff --git a/Configs/.config/hyde/wallbash/Wall-Dcol/kitty.dcol b/Configs/.config/hyde/wallbash/Wall-Dcol/kitty.dcol new file mode 100644 index 0000000..ab1043a --- /dev/null +++ b/Configs/.config/hyde/wallbash/Wall-Dcol/kitty.dcol @@ -0,0 +1,44 @@ +$HOME/.config/kitty/theme.conf|killall -SIGUSR1 kitty +foreground # +background # +selection_foreground # +selection_background # +cursor # +cursor_text_color # + +active_tab_foreground # +active_tab_background # +inactive_tab_foreground # +inactive_tab_background # + +# black +color0 # +color8 # + +# red +color1 # +color9 # + +# green +color2 # +color10 # + +# yellow +color3 # +color11 # + +# blue +color4 # +color12 # + +# magenta +color5 # +color13 # + +# cyan +color6 # +color14 # + +# white +color7 # +color15 # diff --git a/Configs/.config/hyde/wallbash/Wall-Dcol/kvantum/kvantum.dcol b/Configs/.config/hyde/wallbash/Wall-Dcol/kvantum/kvantum.dcol new file mode 100644 index 0000000..540d89a --- /dev/null +++ b/Configs/.config/hyde/wallbash/Wall-Dcol/kvantum/kvantum.dcol @@ -0,0 +1,1959 @@ +$HOME/.config/Kvantum/wallbash/wallbash.svg + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Configs/.config/hyde/wallbash/Wall-Dcol/kvantum/kvconfig.dcol b/Configs/.config/hyde/wallbash/Wall-Dcol/kvantum/kvconfig.dcol new file mode 100644 index 0000000..09abfa2 --- /dev/null +++ b/Configs/.config/hyde/wallbash/Wall-Dcol/kvantum/kvconfig.dcol @@ -0,0 +1,471 @@ +$HOME/.config/Kvantum/wallbash/wallbash.kvconfig +[%General] +author=prasanth rangan +comment=wallbash +spread_menuitems=true +left_tabs=true +mirror_doc_tabs=true +scroll_width=8 +attach_active_tab=true +composite=true +menu_shadow_depth=7 +tooltip_shadow_depth=0 +splitter_width=7 +check_size=16 +slider_width=4 +slider_handle_width=18 +slider_handle_length=18 +textless_progressbar=false +menubar_mouse_tracking=true +slim_toolbars=false +toolbutton_style=1 +x11drag=menubar_and_primary_toolbar +double_click=false +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 +group_toolbar_buttons=false +vertical_spin_indicators=false +fill_rubberband=false +spread_progressbar=true +merge_menubar_with_toolbar=true +small_icon_size=16 +large_icon_size=32 +button_icon_size=16 +scroll_arrows=false +iconless_pushbutton=true +toolbar_icon_size=16 +combo_as_lineedit=true +button_contents_shift=false +groupbox_top_label=true +inline_spin_indicators=true +joined_inactive_tabs=false +layout_spacing=2 +submenu_overlap=0 +tooltip_delay=-1 +animate_states=true +transient_scrollbar=true +alt_mnemonic=true +combo_menu=true +layout_margin=4 +no_window_pattern=false +respect_DE=true +scroll_min_extent=36 +scrollable_menu=false +scrollbar_in_view=false +spin_button_width=16 +submenu_delay=250 +tree_branch_line=true +progressbar_thickness=8 +click_behavior=0 +contrast=1.00 +dialog_button_layout=0 +drag_from_buttons=false +hide_combo_checkboxes=false +intensity=1.00 +no_inactiveness=false +reduce_menu_opacity=0 +reduce_window_opacity=10 +saturation=1.00 +shadowless_popup=true +transient_groove=false +menu_blur_radius=6 +tooltip_blur_radius=6 + +[GeneralColors] +window.color=# +base.color=# +alt.base.color=# +button.color=# +light.color=# +mid.light.color=# +dark.color=# +mid.color=# +highlight.color=# +inactive.highlight.color=# +text.color=# +window.text.color=# +button.text.color=# +disabled.text.color=# +tooltip.text.color=# +highlight.text.color=# +link.color=# +link.visited.color=# + +[ItemView] +inherits=PanelButtonCommand +frame.element=itemview +interior.element=itemview +frame=true +interior=true +text.iconspacing=3 +text.toggle.color=# + +[RadioButton] +inherits=PanelButtonCommand +frame=false +interior.element=radio + +[CheckBox] +inherits=PanelButtonCommand +frame=false +interior.element=checkbox + +[TreeExpander] +indicator.element=tree +indicator.size=8 + +[ToolTip] +frame.top=4 +frame.right=4 +frame.bottom=4 +frame.left=4 +frame=true + +[PanelButtonCommand] +inherits=PanelButtonCommand +interior.element=button +frame.element=button +text.normal.color=# +text.focus.color=# +text.press.color=# +text.toggle.color=# + +[PanelButtonTool] +inherits=PanelButtonCommand + +[DockTitle] +inherits=PanelButtonCommand +interior=false +frame=false +text.margin.top=5 +text.margin.bottom=5 +text.margin.left=5 +text.margin.right=5 +indicator.size=0 + +[Dock] +interior.element=toolbar +frame.element=toolbar +frame=true +interior=true + +[GroupBox] +inherits=PanelButtonCommand +interior.element=tabframe +interior=true +frame=false + +[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.element=common +frame.top=1 +frame.bottom=1 +frame.left=1 +frame.right=1 + +[Slider] +inherits=PanelButtonCommand +interior=true +frame.element=slider +interior.element=slider +frame.top=3 +frame.bottom=3 +frame.left=3 +frame.right=3 +focusFrame=true + +[SliderCursor] +inherits=PanelButtonCommand +interior=true +interior.element=slidercursor +frame=false + +[LineEdit] +inherits=PanelButtonCommand +frame.element=lineedit +interior.element=lineedit + +[IndicatorSpinBox] +inherits=LineEdit +frame.element=lineedit +interior.element=lineedit +frame.top=0 +frame.bottom=2 +frame.left=2 +frame.right=2 +indicator.size=8 + +[DropDownButton] +inherits=PanelButtonCommand +frame.top=2 +frame.bottom=2 +frame.left=0 +frame.right=1 +indicator.size=8 + +[ToolboxTab] +inherits=PanelButtonCommand +frame.element=tabframe +frame.top=1 +frame.bottom=1 +frame.left=1 +frame.right=1 + +[Tab] +inherits=PanelButtonCommand +interior.element=tab +frame.element=tab +frame.top=2 +frame.bottom=3 +frame.left=3 +frame.right=3 +indicator.size=10 +text.normal.color=# +text.focus.color=# +text.press.color=# +text.toggle.color=# +focusFrame=true + +[TabBarFrame] +inherits=GenericFrame +frame=true +frame.element=tabBarFrame +interior=false +frame.top=4 +frame.bottom=4 +frame.left=4 +frame.right=4 + +[TabFrame] +inherits=PanelButtonCommand +frame.element=tabframe +interior.element=tabframe + +[Dialog] +inherits=TabBarFrame +frame.element=tabframe +interior=false +frame=false +frame.top=1 +frame.bottom=1 +frame.left=1 +frame.right=1 + +[HeaderSection] +inherits=PanelButtonCommand +interior.element=header +frame.element=header +frame.top=0 +frame.bottom=1 +frame.left=1 +frame.right=1 +frame.expansion=0 +text.normal.color=# +text.focus.color=# +text.press.color=# +text.toggle.color=# +indicator.element=harrow + +[SizeGrip] +inherits=PanelButtonCommand +frame=false +interior=false +indicator.element=resize-grip +indicator.size=0 + +[Toolbar] +inherits=PanelButtonCommand +interior.element=menubar +frame.element=menubar +frame=true +frame.bottom=4 +frame.left=4 +frame.right=4 +text.normal.color=# +text.focus.color=# +text.press.color=# +text.toggle.color=# +text.bold=false + +[MenuBar] +inherits=PanelButtonCommand +frame.element=menubar +interior.element=menubar +frame.bottom=0 +text.normal.color=# +frame.expansion=0 +text.bold=false + +[ToolbarButton] +frame.element=tbutton +interior.element=tbutton +indicator.element=arrow +text.normal.color=# +text.focus.color=# +text.press.color=# +text.toggle.color=# +text.bold=false + +[Scrollbar] +inherits=PanelButtonCommand +indicator.size=0 +interior=false +frame=false + +[ScrollbarGroove] +inherits=PanelButtonCommand +interior=false +frame=false + +[ScrollbarSlider] +inherits=PanelButtonCommand +interior=false +frame.element=scrollbarslider +frame.top=4 +frame.bottom=4 +frame.left=4 +frame.right=4 + +[ProgressbarContents] +inherits=PanelButtonCommand +frame=true +frame.element=progress-pattern +interior.element=progress-pattern +frame.top=2 +frame.bottom=2 +frame.left=2 +frame.right=2 + +[Progressbar] +inherits=PanelButtonCommand +frame.element=progress +interior.element=progress +frame.top=2 +frame.bottom=2 +frame.left=2 +frame.right=2 +text.margin=0 +text.normal.color=# +text.focus.color=# +text.press.color=# +text.toggle.color=# +text.bold=false +frame.expansion=18 + +[RadioButton] +inherits=PanelButtonCommand + +[Menu] +frame.element=menu +interior.element=menu +inherits=PanelButtonCommand +text.press.color=# +text.toggle.color=# +text.bold=false +frame.top=3 +frame.bottom=3 +frame.left=3 +frame.right=3 + +[MenuItem] +inherits=PanelButtonCommand +interior.element=menuitem +indicator.size=8 +text.focus.color=# +text.press.color=# +text.margin.top=2 +text.margin.bottom=2 +text.margin.left=15 +text.margin.right=5 + +[MenuBarItem] +inherits=PanelButtonCommand +interior.element=menubaritem +frame=false +text.margin.top=3 +text.margin.bottom=3 +text.margin.left=5 +text.margin.right=5 + +[StatusBar] +inherits=Toolbar +frame.element=toolbar +font.bold=true +text.normal.color=# +frame=true +frame.top=0 +frame.bottom=0 + +[TitleBar] +inherits=PanelButtonCommand +frame=false +interior=false +text.margin.top=2 +text.margin.bottom=2 +text.margin.left=3 +text.margin.right=3 + +[ComboBox] +inherits=PanelButtonCommand +indicator.size=8 +frame.top=3 +frame.bottom=3 +frame.left=3 +frame.right=3 +text.margin.top=1 +text.margin.bottom=1 +text.margin.left=3 +text.margin.right=3 +text.toggle.color=# + +[ToolboxTab] +inherits=PanelButtonCommand +text.normal.color=# +text.press.color=# +text.focus.color=# + +[Hacks] +transparent_dolphin_view=true +blur_konsole=true +transparent_ktitle_label=true +transparent_menutitle=true +respect_darkness=true +kcapacitybar_as_progressbar=true +force_size_grip=false +iconless_pushbutton=true +iconless_menu=true +disabled_icon_opacity=80 +lxqtmainmenu_iconsize=0 +normal_default_pushbutton=true +single_top_toolbar=false +tint_on_mouseover=0 +transparent_pcmanfm_sidepane=true +transparent_pcmanfm_view=true +blur_translucent=true +centered_forms=false +kinetic_scrolling=false +middle_click_scroll=false +no_selection_tint=false +noninteger_translucency=false +style_vertical_toolbars=false +blur_only_active_window=false + +[Window] +interior=true +interior.element=window +frame.top=0 +frame.bottom=0 +frame.left=0 +frame.right=0 diff --git a/Configs/.config/hyde/wallbash/Wall-Dcol/rofi.dcol b/Configs/.config/hyde/wallbash/Wall-Dcol/rofi.dcol new file mode 100644 index 0000000..23a06f4 --- /dev/null +++ b/Configs/.config/hyde/wallbash/Wall-Dcol/rofi.dcol @@ -0,0 +1,9 @@ +$HOME/.config/rofi/theme.rasi +* { + main-bg: #B3; + main-fg: #E6; + main-br: #E6; + main-ex: #E6; + select-bg: #80; + select-fg: #E6; +} diff --git a/Configs/.config/hyde/wallbash/Wall-Dcol/waybar.dcol b/Configs/.config/hyde/wallbash/Wall-Dcol/waybar.dcol new file mode 100644 index 0000000..52c5a84 --- /dev/null +++ b/Configs/.config/hyde/wallbash/Wall-Dcol/waybar.dcol @@ -0,0 +1,8 @@ +$HOME/.config/waybar/theme.css|${scrDir}/wbarconfgen.sh +@define-color bar-bg ; +@define-color main-bg ; +@define-color main-fg ; +@define-color wb-act-bg ; +@define-color wb-act-fg ; +@define-color wb-hvr-bg ; +@define-color wb-hvr-fg ; diff --git a/Configs/.config/hyde/wallbash/Wall-Ways/cava.dcol b/Configs/.config/hyde/wallbash/Wall-Ways/cava.dcol new file mode 100644 index 0000000..b9586a1 --- /dev/null +++ b/Configs/.config/hyde/wallbash/Wall-Ways/cava.dcol @@ -0,0 +1,14 @@ +$HOME/.config/cava/Wall-Dcol|${scrDir}/wallbashcava.sh + +[color] + + gradient = 1 + gradient_count = 8 + gradient_color_1 = '#' + gradient_color_2 = '#' + gradient_color_3 = '#' + gradient_color_4 = '#' + gradient_color_5 = '#' + gradient_color_6 = '#' + gradient_color_7 = '#' + gradient_color_8 = '#' diff --git a/Configs/.config/hyde/wallbash/Wall-Ways/code.dcol b/Configs/.config/hyde/wallbash/Wall-Ways/code.dcol new file mode 100644 index 0000000..c128129 --- /dev/null +++ b/Configs/.config/hyde/wallbash/Wall-Ways/code.dcol @@ -0,0 +1,2206 @@ +${cacheDir}/landing/wallbashcode.json|${scrDir}/wallbashcode.sh +{ + "name": "wallbash", + "colors": { + "focusBorder": "#", + "foreground": "#", + "disabledForeground": "#", + "widget.shadow": "#80", + "selection.background": "#66", + "descriptionForeground": "#", + "errorForeground": "#", + "icon.foreground": "#", + "sash.hoverBorder": "#", + "window.activeBorder": "#00000000", + "window.inactiveBorder": "#00000000", + "textBlockQuote.background": "#", + "textBlockQuote.border": "#", + "textCodeBlock.background": "#", + "textLink.activeForeground": "#", + "textLink.foreground": "#", + "textPreformat.foreground": "#", + "textSeparator.foreground": "#", + "activityBar.background": "#", + "activityBar.foreground": "#", + "activityBar.dropBorder": "#33", + "activityBar.inactiveForeground": "#", + "activityBar.border": "#00000000", + "activityBarBadge.background": "#", + "activityBarBadge.foreground": "#", + "activityBar.activeBorder": "#00000000", + "activityBar.activeBackground": "#00000000", + "activityBar.activeFocusBorder": "#00000000", + "activityBarTop.foreground": "#", + "activityBarTop.activeBorder": "#00000000", + "activityBarTop.inactiveForeground": "#", + "activityBarTop.dropBorder": "#33", + "badge.background": "#", + "badge.foreground": "#", + "breadcrumb.activeSelectionForeground": "#", + "breadcrumb.background": "#", + "breadcrumb.focusForeground": "#", + "breadcrumb.foreground": "#cc", + "breadcrumbPicker.background": "#", + "button.background": "#", + "button.foreground": "#", + "button.border": "#00000000", + "button.separator": "#00000000", + "button.hoverBackground": "#dec7fa", + "button.secondaryForeground": "#", + "button.secondaryBackground": "#", + "button.secondaryHoverBackground": "#686b84", + "checkbox.background": "#", + "checkbox.border": "#00000000", + "checkbox.foreground": "#", + "dropdown.background": "#", + "dropdown.listBackground": "#", + "dropdown.border": "#", + "dropdown.foreground": "#", + "debugToolBar.background": "#", + "debugToolBar.border": "#00000000", + "debugExceptionWidget.background": "#", + "debugExceptionWidget.border": "#", + "debugTokenExpression.number": "#", + "debugTokenExpression.boolean": "#", + "debugTokenExpression.string": "#", + "debugTokenExpression.error": "#", + "debugIcon.breakpointForeground": "#", + "debugIcon.breakpointDisabledForeground": "#99", + "debugIcon.breakpointUnverifiedForeground": "#a6738c", + "debugIcon.breakpointCurrentStackframeForeground": "#", + "debugIcon.breakpointStackframeForeground": "#", + "debugIcon.startForeground": "#", + "debugIcon.pauseForeground": "#", + "debugIcon.stopForeground": "#", + "debugIcon.disconnectForeground": "#", + "debugIcon.restartForeground": "#", + "debugIcon.stepOverForeground": "#", + "debugIcon.stepIntoForeground": "#", + "debugIcon.stepOutForeground": "#", + "debugIcon.continueForeground": "#", + "debugIcon.stepBackForeground": "#", + "debugConsole.infoForeground": "#", + "debugConsole.warningForeground": "#", + "debugConsole.errorForeground": "#", + "debugConsole.sourceForeground": "#", + "debugConsoleInputIcon.foreground": "#", + "diffEditor.border": "#", + "diffEditor.insertedTextBackground": "#1a", + "diffEditor.removedTextBackground": "#1a", + "diffEditor.insertedLineBackground": "#26", + "diffEditor.removedLineBackground": "#26", + "diffEditor.diagonalFill": "#99", + "diffEditorOverview.insertedForeground": "#cc", + "diffEditorOverview.removedForeground": "#cc", + "editor.background": "#", + "editor.findMatchBackground": "#5e3f53", + "editor.findMatchBorder": "#33", + "editor.findMatchHighlightBackground": "#3e5767", + "editor.findMatchHighlightBorder": "#33", + "editor.findRangeHighlightBackground": "#3e5767", + "editor.findRangeHighlightBorder": "#33", + "editor.foldBackground": "#40", + "editor.foreground": "#", + "editor.hoverHighlightBackground": "#40", + "editor.lineHighlightBackground": "#12", + "editor.lineHighlightBorder": "#00000000", + "editor.rangeHighlightBackground": "#40", + "editor.rangeHighlightBorder": "#00000000", + "editor.selectionBackground": "#40", + "editor.selectionHighlightBackground": "#33", + "editor.selectionHighlightBorder": "#33", + "editor.wordHighlightBackground": "#33", + "editorBracketMatch.background": "#1a", + "editorBracketMatch.border": "#", + "editorCodeLens.foreground": "#", + "editorCursor.background": "#", + "editorCursor.foreground": "#", + "editorGroup.border": "#", + "editorGroup.dropBackground": "#33", + "editorGroup.emptyBackground": "#", + "editorGroupHeader.tabsBackground": "#", + "editorGutter.addedBackground": "#", + "editorGutter.background": "#", + "editorGutter.commentRangeForeground": "#", + "editorGutter.deletedBackground": "#", + "editorGutter.foldingControlForeground": "#", + "editorGutter.modifiedBackground": "#", + "editorHoverWidget.background": "#", + "editorHoverWidget.border": "#", + "editorHoverWidget.foreground": "#", + "editorIndentGuide.activeBackground": "#", + "editorIndentGuide.background": "#", + "editorInlayHint.foreground": "#", + "editorInlayHint.background": "#bf", + "editorInlayHint.typeForeground": "#", + "editorInlayHint.typeBackground": "#bf", + "editorInlayHint.parameterForeground": "#", + "editorInlayHint.parameterBackground": "#bf", + "editorLineNumber.activeForeground": "#", + "editorLineNumber.foreground": "#", + "editorLink.activeForeground": "#", + "editorMarkerNavigation.background": "#", + "editorMarkerNavigationError.background": "#", + "editorMarkerNavigationInfo.background": "#", + "editorMarkerNavigationWarning.background": "#", + "editorOverviewRuler.background": "#", + "editorOverviewRuler.border": "#12", + "editorOverviewRuler.modifiedForeground": "#", + "editorRuler.foreground": "#", + "editor.stackFrameHighlightBackground": "#26", + "editor.focusedStackFrameHighlightBackground": "#26", + "editorStickyScrollHover.background": "#", + "editorSuggestWidget.background": "#", + "editorSuggestWidget.border": "#", + "editorSuggestWidget.foreground": "#", + "editorSuggestWidget.highlightForeground": "#", + "editorSuggestWidget.selectedBackground": "#", + "editorWhitespace.foreground": "#66", + "editorWidget.background": "#", + "editorWidget.foreground": "#", + "editorWidget.resizeBorder": "#", + "editorLightBulb.foreground": "#", + "editorError.foreground": "#", + "editorError.border": "#00000000", + "editorError.background": "#00000000", + "editorWarning.foreground": "#", + "editorWarning.border": "#00000000", + "editorWarning.background": "#00000000", + "editorInfo.foreground": "#", + "editorInfo.border": "#00000000", + "editorInfo.background": "#00000000", + "problemsErrorIcon.foreground": "#", + "problemsInfoIcon.foreground": "#", + "problemsWarningIcon.foreground": "#", + "extensionButton.prominentForeground": "#", + "extensionButton.prominentBackground": "#", + "extensionButton.separator": "#", + "extensionButton.prominentHoverBackground": "#dec7fa", + "extensionBadge.remoteBackground": "#", + "extensionBadge.remoteForeground": "#", + "extensionIcon.starForeground": "#", + "extensionIcon.verifiedForeground": "#", + "extensionIcon.preReleaseForeground": "#", + "extensionIcon.sponsorForeground": "#", + "gitDecoration.addedResourceForeground": "#", + "gitDecoration.conflictingResourceForeground": "#", + "gitDecoration.deletedResourceForeground": "#", + "gitDecoration.ignoredResourceForeground": "#", + "gitDecoration.modifiedResourceForeground": "#", + "gitDecoration.stageDeletedResourceForeground": "#", + "gitDecoration.stageModifiedResourceForeground": "#", + "gitDecoration.submoduleResourceForeground": "#", + "gitDecoration.untrackedResourceForeground": "#", + "input.background": "#", + "input.border": "#00000000", + "input.foreground": "#", + "input.placeholderForeground": "#73", + "inputOption.activeBackground": "#", + "inputOption.activeBorder": "#", + "inputOption.activeForeground": "#", + "inputValidation.errorBackground": "#", + "inputValidation.errorBorder": "#33", + "inputValidation.errorForeground": "#", + "inputValidation.infoBackground": "#", + "inputValidation.infoBorder": "#33", + "inputValidation.infoForeground": "#", + "inputValidation.warningBackground": "#", + "inputValidation.warningBorder": "#33", + "inputValidation.warningForeground": "#", + "list.activeSelectionBackground": "#", + "list.activeSelectionForeground": "#", + "list.dropBackground": "#33", + "list.focusBackground": "#", + "list.focusForeground": "#", + "list.focusOutline": "#00000000", + "list.highlightForeground": "#", + "list.hoverBackground": "#80", + "list.hoverForeground": "#", + "list.inactiveSelectionBackground": "#", + "list.inactiveSelectionForeground": "#", + "list.warningForeground": "#", + "listFilterWidget.background": "#", + "listFilterWidget.noMatchesOutline": "#", + "listFilterWidget.outline": "#00000000", + "tree.indentGuidesStroke": "#", + "tree.inactiveIndentGuidesStroke": "#", + "menu.background": "#", + "menu.border": "#80", + "menu.foreground": "#", + "menu.selectionBackground": "#", + "menu.selectionBorder": "#00000000", + "menu.selectionForeground": "#", + "menu.separatorBackground": "#", + "menubar.selectionBackground": "#", + "menubar.selectionForeground": "#", + "merge.commonContentBackground": "#", + "merge.commonHeaderBackground": "#", + "merge.currentContentBackground": "#33", + "merge.currentHeaderBackground": "#66", + "merge.incomingContentBackground": "#33", + "merge.incomingHeaderBackground": "#66", + "minimap.background": "#80", + "minimap.findMatchHighlight": "#4d", + "minimap.selectionHighlight": "#bf", + "minimap.selectionOccurrenceHighlight": "#bf", + "minimap.warningHighlight": "#bf", + "minimap.errorHighlight": "#bf", + "minimapSlider.background": "#33", + "minimapSlider.hoverBackground": "#66", + "minimapSlider.activeBackground": "#99", + "minimapGutter.addedBackground": "#bf", + "minimapGutter.deletedBackground": "#bf", + "minimapGutter.modifiedBackground": "#bf", + "notificationCenter.border": "#", + "notificationCenterHeader.foreground": "#", + "notificationCenterHeader.background": "#", + "notificationToast.border": "#", + "notifications.foreground": "#", + "notifications.background": "#", + "notifications.border": "#", + "notificationLink.foreground": "#", + "notificationsErrorIcon.foreground": "#", + "notificationsWarningIcon.foreground": "#", + "notificationsInfoIcon.foreground": "#", + "panel.background": "#", + "panel.border": "#", + "panelSection.border": "#", + "panelSection.dropBackground": "#33", + "panelTitle.activeBorder": "#", + "panelTitle.activeForeground": "#", + "panelTitle.inactiveForeground": "#", + "peekView.border": "#", + "peekViewEditor.background": "#", + "peekViewEditorGutter.background": "#", + "peekViewEditor.matchHighlightBackground": "#4d", + "peekViewEditor.matchHighlightBorder": "#00000000", + "peekViewResult.background": "#", + "peekViewResult.fileForeground": "#", + "peekViewResult.lineForeground": "#", + "peekViewResult.matchHighlightBackground": "#4d", + "peekViewResult.selectionBackground": "#", + "peekViewResult.selectionForeground": "#", + "peekViewTitle.background": "#", + "peekViewTitleDescription.foreground": "#b3", + "peekViewTitleLabel.foreground": "#", + "pickerGroup.border": "#", + "pickerGroup.foreground": "#", + "progressBar.background": "#", + "scrollbar.shadow": "#", + "scrollbarSlider.activeBackground": "#66", + "scrollbarSlider.background": "#80", + "scrollbarSlider.hoverBackground": "#", + "settings.focusedRowBackground": "#33", + "settings.headerForeground": "#", + "settings.modifiedItemIndicator": "#", + "settings.dropdownBackground": "#", + "settings.dropdownListBorder": "#00000000", + "settings.textInputBackground": "#", + "settings.textInputBorder": "#00000000", + "settings.numberInputBackground": "#", + "settings.numberInputBorder": "#00000000", + "sideBar.background": "#", + "sideBar.dropBackground": "#33", + "sideBar.foreground": "#", + "sideBar.border": "#00000000", + "sideBarSectionHeader.background": "#", + "sideBarSectionHeader.foreground": "#", + "sideBarTitle.foreground": "#", + "banner.background": "#", + "banner.foreground": "#", + "banner.iconForeground": "#", + "statusBar.background": "#", + "statusBar.foreground": "#", + "statusBar.border": "#00000000", + "statusBar.noFolderBackground": "#", + "statusBar.noFolderForeground": "#", + "statusBar.noFolderBorder": "#00000000", + "statusBar.debuggingBackground": "#", + "statusBar.debuggingForeground": "#", + "statusBar.debuggingBorder": "#00000000", + "statusBarItem.remoteBackground": "#", + "statusBarItem.remoteForeground": "#", + "statusBarItem.activeBackground": "#66", + "statusBarItem.hoverBackground": "#33", + "statusBarItem.prominentForeground": "#", + "statusBarItem.prominentBackground": "#00000000", + "statusBarItem.prominentHoverBackground": "#33", + "statusBarItem.errorForeground": "#", + "statusBarItem.errorBackground": "#00000000", + "statusBarItem.warningForeground": "#", + "statusBarItem.warningBackground": "#00000000", + "commandCenter.foreground": "#", + "commandCenter.inactiveForeground": "#", + "commandCenter.activeForeground": "#", + "commandCenter.background": "#", + "commandCenter.activeBackground": "#33", + "commandCenter.border": "#00000000", + "commandCenter.inactiveBorder": "#00000000", + "commandCenter.activeBorder": "#", + "tab.activeBackground": "#", + "tab.activeBorder": "#00000000", + "tab.activeBorderTop": "#", + "tab.activeForeground": "#", + "tab.activeModifiedBorder": "#", + "tab.border": "#", + "tab.hoverBackground": "#28283d", + "tab.hoverBorder": "#00000000", + "tab.hoverForeground": "#", + "tab.inactiveBackground": "#", + "tab.inactiveForeground": "#", + "tab.inactiveModifiedBorder": "#4d", + "tab.lastPinnedBorder": "#", + "tab.unfocusedActiveBackground": "#", + "tab.unfocusedActiveBorder": "#00000000", + "tab.unfocusedActiveBorderTop": "#4d", + "tab.unfocusedInactiveBackground": "#0e0e16", + "terminal.foreground": "#", + "terminal.ansiBlack": "#", + "terminal.ansiRed": "#", + "terminal.ansiGreen": "#", + "terminal.ansiYellow": "#", + "terminal.ansiBlue": "#", + "terminal.ansiMagenta": "#", + "terminal.ansiCyan": "#", + "terminal.ansiWhite": "#", + "terminal.ansiBrightBlack": "#", + "terminal.ansiBrightRed": "#", + "terminal.ansiBrightGreen": "#", + "terminal.ansiBrightYellow": "#", + "terminal.ansiBrightBlue": "#", + "terminal.ansiBrightMagenta": "#", + "terminal.ansiBrightCyan": "#", + "terminal.ansiBrightWhite": "#", + "terminal.selectionBackground": "#", + "terminal.inactiveSelectionBackground": "#80", + "terminalCursor.background": "#", + "terminalCursor.foreground": "#", + "terminal.border": "#", + "terminal.dropBackground": "#33", + "terminal.tab.activeBorder": "#", + "terminalCommandDecoration.defaultBackground": "#", + "terminalCommandDecoration.successBackground": "#", + "terminalCommandDecoration.errorBackground": "#", + "titleBar.activeBackground": "#", + "titleBar.activeForeground": "#", + "titleBar.inactiveBackground": "#", + "titleBar.inactiveForeground": "#80", + "titleBar.border": "#00000000", + "welcomePage.tileBackground": "#", + "welcomePage.progress.background": "#", + "welcomePage.progress.foreground": "#", + "walkThrough.embeddedEditorBackground": "#4d", + "symbolIcon.textForeground": "#", + "symbolIcon.arrayForeground": "#", + "symbolIcon.booleanForeground": "#", + "symbolIcon.classForeground": "#", + "symbolIcon.colorForeground": "#", + "symbolIcon.constantForeground": "#", + "symbolIcon.constructorForeground": "#", + "symbolIcon.enumeratorForeground": "#", + "symbolIcon.enumeratorMemberForeground": "#", + "symbolIcon.eventForeground": "#", + "symbolIcon.fieldForeground": "#", + "symbolIcon.fileForeground": "#", + "symbolIcon.folderForeground": "#", + "symbolIcon.functionForeground": "#", + "symbolIcon.interfaceForeground": "#", + "symbolIcon.keyForeground": "#", + "symbolIcon.keywordForeground": "#", + "symbolIcon.methodForeground": "#", + "symbolIcon.moduleForeground": "#", + "symbolIcon.namespaceForeground": "#", + "symbolIcon.nullForeground": "#", + "symbolIcon.numberForeground": "#", + "symbolIcon.objectForeground": "#", + "symbolIcon.operatorForeground": "#", + "symbolIcon.packageForeground": "#", + "symbolIcon.propertyForeground": "#", + "symbolIcon.referenceForeground": "#", + "symbolIcon.snippetForeground": "#", + "symbolIcon.stringForeground": "#", + "symbolIcon.structForeground": "#", + "symbolIcon.typeParameterForeground": "#", + "symbolIcon.unitForeground": "#", + "symbolIcon.variableForeground": "#", + "charts.foreground": "#", + "charts.lines": "#", + "charts.red": "#", + "charts.blue": "#", + "charts.yellow": "#", + "charts.orange": "#", + "charts.green": "#", + "charts.purple": "#", + "errorLens.errorBackground": "#26", + "errorLens.errorBackgroundLight": "#26", + "errorLens.errorForeground": "#", + "errorLens.errorForegroundLight": "#", + "errorLens.errorMessageBackground": "#26", + "errorLens.hintBackground": "#26", + "errorLens.hintBackgroundLight": "#26", + "errorLens.hintForeground": "#", + "errorLens.hintForegroundLight": "#", + "errorLens.hintMessageBackground": "#26", + "errorLens.infoBackground": "#26", + "errorLens.infoBackgroundLight": "#26", + "errorLens.infoForeground": "#", + "errorLens.infoForegroundLight": "#", + "errorLens.infoMessageBackground": "#26", + "errorLens.statusBarErrorForeground": "#", + "errorLens.statusBarHintForeground": "#", + "errorLens.statusBarIconErrorForeground": "#", + "errorLens.statusBarIconWarningForeground": "#", + "errorLens.statusBarInfoForeground": "#", + "errorLens.statusBarWarningForeground": "#", + "errorLens.warningBackground": "#26", + "errorLens.warningBackgroundLight": "#26", + "errorLens.warningForeground": "#", + "errorLens.warningForegroundLight": "#", + "errorLens.warningMessageBackground": "#26", + "issues.closed": "#", + "issues.newIssueDecoration": "#", + "issues.open": "#", + "pullRequests.closed": "#", + "pullRequests.draft": "#", + "pullRequests.merged": "#", + "pullRequests.notification": "#", + "pullRequests.open": "#", + "gitlens.gutterBackgroundColor": "#4d", + "gitlens.gutterForegroundColor": "#", + "gitlens.gutterUncommittedForegroundColor": "#", + "gitlens.trailingLineBackgroundColor": "#00000000", + "gitlens.trailingLineForegroundColor": "#4d", + "gitlens.lineHighlightBackgroundColor": "#26", + "gitlens.lineHighlightOverviewRulerColor": "#cc", + "gitlens.openAutolinkedIssueIconColor": "#", + "gitlens.closedAutolinkedIssueIconColor": "#", + "gitlens.closedPullRequestIconColor": "#", + "gitlens.openPullRequestIconColor": "#", + "gitlens.mergedPullRequestIconColor": "#", + "gitlens.unpublishedChangesIconColor": "#", + "gitlens.unpublishedCommitIconColor": "#", + "gitlens.unpulledChangesIconColor": "#", + "gitlens.decorations.branchAheadForegroundColor": "#", + "gitlens.decorations.branchBehindForegroundColor": "#", + "gitlens.decorations.branchDivergedForegroundColor": "#", + "gitlens.decorations.branchUnpublishedForegroundColor": "#", + "gitlens.decorations.branchMissingUpstreamForegroundColor": "#", + "gitlens.decorations.statusMergingOrRebasingConflictForegroundColor": "#", + "gitlens.decorations.statusMergingOrRebasingForegroundColor": "#", + "gitlens.decorations.workspaceRepoMissingForegroundColor": "#", + "gitlens.decorations.workspaceCurrentForegroundColor": "#", + "gitlens.decorations.workspaceRepoOpenForegroundColor": "#", + "gitlens.decorations.worktreeHasUncommittedChangesForegroundColor": "#", + "gitlens.decorations.worktreeMissingForegroundColor": "#", + "gitlens.graphLane1Color": "#", + "gitlens.graphLane2Color": "#", + "gitlens.graphLane3Color": "#", + "gitlens.graphLane4Color": "#", + "gitlens.graphLane5Color": "#", + "gitlens.graphLane6Color": "#", + "gitlens.graphLane7Color": "#", + "gitlens.graphLane8Color": "#", + "gitlens.graphLane9Color": "#", + "gitlens.graphLane10Color": "#", + "gitlens.graphChangesColumnAddedColor": "#", + "gitlens.graphChangesColumnDeletedColor": "#", + "gitlens.graphMinimapMarkerHeadColor": "#", + "gitlens.graphScrollMarkerHeadColor": "#", + "gitlens.graphMinimapMarkerUpstreamColor": "#93dd8d", + "gitlens.graphScrollMarkerUpstreamColor": "#93dd8d", + "gitlens.graphMinimapMarkerHighlightsColor": "#", + "gitlens.graphScrollMarkerHighlightsColor": "#", + "gitlens.graphMinimapMarkerLocalBranchesColor": "#", + "gitlens.graphScrollMarkerLocalBranchesColor": "#", + "gitlens.graphMinimapMarkerRemoteBranchesColor": "#71a4f9", + "gitlens.graphScrollMarkerRemoteBranchesColor": "#71a4f9", + "gitlens.graphMinimapMarkerStashesColor": "#", + "gitlens.graphScrollMarkerStashesColor": "#", + "gitlens.graphMinimapMarkerTagsColor": "#", + "gitlens.graphScrollMarkerTagsColor": "#", + "editorBracketHighlight.foreground1": "#", + "editorBracketHighlight.foreground2": "#", + "editorBracketHighlight.foreground3": "#", + "editorBracketHighlight.foreground4": "#", + "editorBracketHighlight.foreground5": "#", + "editorBracketHighlight.foreground6": "#", + "editorBracketHighlight.unexpectedBracket.foreground": "#", + "button.secondaryBorder": "#", + "table.headerBackground": "#", + "table.headerForeground": "#", + "list.focusAndSelectionBackground": "#" + }, + "semanticHighlighting": true, + "semanticTokenColors": { + "enumMember": { + "foreground": "#" + }, + "selfKeyword": { + "foreground": "#" + }, + "boolean": { + "foreground": "#" + }, + "number": { + "foreground": "#" + }, + "variable.defaultLibrary": { + "foreground": "#" + }, + "class:python": { + "foreground": "#" + }, + "class.builtin:python": { + "foreground": "#" + }, + "variable.typeHint:python": { + "foreground": "#" + }, + "function.decorator:python": { + "foreground": "#" + }, + "variable.readonly:javascript": { + "foreground": "#" + }, + "variable.readonly:typescript": { + "foreground": "#" + }, + "property.readonly:javascript": { + "foreground": "#" + }, + "property.readonly:typescript": { + "foreground": "#" + }, + "variable.readonly:javascriptreact": { + "foreground": "#" + }, + "variable.readonly:typescriptreact": { + "foreground": "#" + }, + "property.readonly:javascriptreact": { + "foreground": "#" + }, + "property.readonly:typescriptreact": { + "foreground": "#" + }, + "variable.readonly:scala": { + "foreground": "#" + }, + "type.defaultLibrary:go": { + "foreground": "#" + }, + "variable.readonly.defaultLibrary:go": { + "foreground": "#" + }, + "tomlArrayKey": { + "foreground": "#", + "fontStyle": "" + }, + "tomlTableKey": { + "foreground": "#", + "fontStyle": "" + }, + "builtinAttribute.attribute.library:rust": { + "foreground": "#" + }, + "generic.attribute:rust": { + "foreground": "#" + }, + "constant.builtin.readonly:nix": { + "foreground": "#" + }, + "heading": { + "foreground": "#" + }, + "text.emph": { + "foreground": "#", + "fontStyle": "italic" + }, + "text.strong": { + "foreground": "#", + "fontStyle": "bold" + }, + "text.math": { + "foreground": "#" + }, + "pol": { + "foreground": "#" + } + }, + "tokenColors": [ + { + "name": "Basic text & variable names (incl. leading punctuation)", + "scope": [ + "text", + "source", + "variable.other.readwrite", + "punctuation.definition.variable" + ], + "settings": { + "foreground": "#" + } + }, + { + "name": "Parentheses, Brackets, Braces", + "scope": "punctuation", + "settings": { + "foreground": "#", + "fontStyle": "" + } + }, + { + "name": "Comments", + "scope": [ + "comment", + "punctuation.definition.comment" + ], + "settings": { + "foreground": "#", + "fontStyle": "italic" + } + }, + { + "scope": [ + "string", + "punctuation.definition.string" + ], + "settings": { + "foreground": "#" + } + }, + { + "scope": "constant.character.escape", + "settings": { + "foreground": "#" + } + }, + { + "name": "Booleans, constants, numbers", + "scope": [ + "constant.numeric", + "variable.other.constant", + "entity.name.constant", + "constant.language.boolean", + "constant.language.false", + "constant.language.true", + "keyword.other.unit.user-defined", + "keyword.other.unit.suffix.floating-point" + ], + "settings": { + "foreground": "#" + } + }, + { + "scope": [ + "keyword", + "keyword.operator.word", + "keyword.operator.new", + "variable.language.super", + "support.type.primitive", + "storage.type", + "storage.modifier", + "punctuation.definition.keyword" + ], + "settings": { + "foreground": "#", + "fontStyle": "" + } + }, + { + "scope": "entity.name.tag.documentation", + "settings": { + "foreground": "#" + } + }, + { + "name": "Punctuation", + "scope": [ + "keyword.operator", + "punctuation.accessor", + "punctuation.definition.generic", + "meta.function.closure punctuation.section.parameters", + "punctuation.definition.tag", + "punctuation.separator.key-value" + ], + "settings": { + "foreground": "#" + } + }, + { + "scope": [ + "entity.name.function", + "meta.function-call.method", + "support.function", + "support.function.misc", + "variable.function" + ], + "settings": { + "foreground": "#", + "fontStyle": "italic" + } + }, + { + "name": "Classes", + "scope": [ + "entity.name.class", + "entity.other.inherited-class", + "support.class", + "meta.function-call.constructor", + "entity.name.struct" + ], + "settings": { + "foreground": "#", + "fontStyle": "italic" + } + }, + { + "name": "Enum", + "scope": "entity.name.enum", + "settings": { + "foreground": "#", + "fontStyle": "italic" + } + }, + { + "name": "Enum member", + "scope": [ + "meta.enum variable.other.readwrite", + "variable.other.enummember" + ], + "settings": { + "foreground": "#" + } + }, + { + "name": "Object properties", + "scope": "meta.property.object", + "settings": { + "foreground": "#" + } + }, + { + "name": "Types", + "scope": [ + "meta.type", + "meta.type-alias", + "support.type", + "entity.name.type" + ], + "settings": { + "foreground": "#", + "fontStyle": "italic" + } + }, + { + "name": "Decorators", + "scope": [ + "meta.annotation variable.function", + "meta.annotation variable.annotation.function", + "meta.annotation punctuation.definition.annotation", + "meta.decorator", + "punctuation.decorator" + ], + "settings": { + "foreground": "#" + } + }, + { + "scope": [ + "variable.parameter", + "meta.function.parameters" + ], + "settings": { + "foreground": "#", + "fontStyle": "italic" + } + }, + { + "name": "Built-ins", + "scope": [ + "constant.language", + "support.function.builtin" + ], + "settings": { + "foreground": "#" + } + }, + { + "scope": "entity.other.attribute-name.documentation", + "settings": { + "foreground": "#" + } + }, + { + "name": "Preprocessor directives", + "scope": [ + "keyword.control.directive", + "punctuation.definition.directive" + ], + "settings": { + "foreground": "#" + } + }, + { + "name": "Type parameters", + "scope": "punctuation.definition.typeparameters", + "settings": { + "foreground": "#" + } + }, + { + "name": "Namespaces", + "scope": "entity.name.namespace", + "settings": { + "foreground": "#" + } + }, + { + "name": "Property names (left hand assignments in json/yaml/css)", + "scope": "support.type.property-name.css", + "settings": { + "foreground": "#", + "fontStyle": "" + } + }, + { + "name": "This/Self keyword", + "scope": [ + "variable.language.this", + "variable.language.this punctuation.definition.variable" + ], + "settings": { + "foreground": "#" + } + }, + { + "name": "Object properties", + "scope": "variable.object.property", + "settings": { + "foreground": "#" + } + }, + { + "name": "String template interpolation", + "scope": [ + "string.template variable", + "string variable" + ], + "settings": { + "foreground": "#" + } + }, + { + "name": "`new` as bold", + "scope": "keyword.operator.new", + "settings": { + "fontStyle": "bold" + } + }, + { + "name": "C++ extern keyword", + "scope": "storage.modifier.specifier.extern.cpp", + "settings": { + "foreground": "#" + } + }, + { + "name": "C++ scope resolution", + "scope": [ + "entity.name.scope-resolution.template.call.cpp", + "entity.name.scope-resolution.parameter.cpp", + "entity.name.scope-resolution.cpp", + "entity.name.scope-resolution.function.definition.cpp" + ], + "settings": { + "foreground": "#" + } + }, + { + "name": "C++ doc keywords", + "scope": "storage.type.class.doxygen", + "settings": { + "fontStyle": "" + } + }, + { + "name": "C++ operators", + "scope": [ + "storage.modifier.reference.cpp" + ], + "settings": { + "foreground": "#" + } + }, + { + "name": "C# Interpolated Strings", + "scope": "meta.interpolation.cs", + "settings": { + "foreground": "#" + } + }, + { + "name": "C# xml-style docs", + "scope": "comment.block.documentation.cs", + "settings": { + "foreground": "#" + } + }, + { + "name": "Classes, reflecting the className color in JSX", + "scope": [ + "source.css entity.other.attribute-name.class.css", + "entity.other.attribute-name.parent-selector.css punctuation.definition.entity.css" + ], + "settings": { + "foreground": "#" + } + }, + { + "name": "Operators", + "scope": "punctuation.separator.operator.css", + "settings": { + "foreground": "#" + } + }, + { + "name": "Pseudo classes", + "scope": "source.css entity.other.attribute-name.pseudo-class", + "settings": { + "foreground": "#" + } + }, + { + "scope": "source.css constant.other.unicode-range", + "settings": { + "foreground": "#" + } + }, + { + "scope": "source.css variable.parameter.url", + "settings": { + "foreground": "#", + "fontStyle": "" + } + }, + { + "name": "CSS vendored property names", + "scope": [ + "support.type.vendored.property-name" + ], + "settings": { + "foreground": "#" + } + }, + { + "name": "Less/SCSS right-hand variables (@/$-prefixed)", + "scope": [ + "source.css meta.property-value variable", + "source.css meta.property-value variable.other.less", + "source.css meta.property-value variable.other.less punctuation.definition.variable.less", + "meta.definition.variable.scss" + ], + "settings": { + "foreground": "#" + } + }, + { + "name": "CSS variables (--prefixed)", + "scope": [ + "source.css meta.property-list variable", + "meta.property-list variable.other.less", + "meta.property-list variable.other.less punctuation.definition.variable.less" + ], + "settings": { + "foreground": "#" + } + }, + { + "name": "CSS Percentage values, styled the same as numbers", + "scope": "keyword.other.unit.percentage.css", + "settings": { + "foreground": "#" + } + }, + { + "name": "CSS Attribute selectors, styled the same as strings", + "scope": "source.css meta.attribute-selector", + "settings": { + "foreground": "#" + } + }, + { + "name": "JSON/YAML keys, other left-hand assignments", + "scope": [ + "keyword.other.definition.ini", + "punctuation.support.type.property-name.json", + "support.type.property-name.json", + "punctuation.support.type.property-name.toml", + "support.type.property-name.toml", + "entity.name.tag.yaml", + "punctuation.support.type.property-name.yaml", + "support.type.property-name.yaml" + ], + "settings": { + "foreground": "#", + "fontStyle": "" + } + }, + { + "name": "JSON/YAML constants", + "scope": [ + "constant.language.json", + "constant.language.yaml" + ], + "settings": { + "foreground": "#" + } + }, + { + "name": "YAML anchors", + "scope": [ + "entity.name.type.anchor.yaml", + "variable.other.alias.yaml" + ], + "settings": { + "foreground": "#", + "fontStyle": "" + } + }, + { + "name": "TOML tables / ini groups", + "scope": [ + "support.type.property-name.table", + "entity.name.section.group-title.ini" + ], + "settings": { + "foreground": "#" + } + }, + { + "name": "TOML dates", + "scope": "constant.other.time.datetime.offset.toml", + "settings": { + "foreground": "#" + } + }, + { + "name": "YAML anchor puctuation", + "scope": [ + "punctuation.definition.anchor.yaml", + "punctuation.definition.alias.yaml" + ], + "settings": { + "foreground": "#" + } + }, + { + "name": "YAML triple dashes", + "scope": "entity.other.document.begin.yaml", + "settings": { + "foreground": "#" + } + }, + { + "name": "Markup Diff", + "scope": "markup.changed.diff", + "settings": { + "foreground": "#" + } + }, + { + "name": "Diff", + "scope": [ + "meta.diff.header.from-file", + "meta.diff.header.to-file", + "punctuation.definition.from-file.diff", + "punctuation.definition.to-file.diff" + ], + "settings": { + "foreground": "#" + } + }, + { + "name": "Diff Inserted", + "scope": "markup.inserted.diff", + "settings": { + "foreground": "#" + } + }, + { + "name": "Diff Deleted", + "scope": "markup.deleted.diff", + "settings": { + "foreground": "#" + } + }, + { + "name": "dotenv left-hand side assignments", + "scope": [ + "variable.other.env" + ], + "settings": { + "foreground": "#" + } + }, + { + "name": "dotenv reference to existing env variable", + "scope": [ + "string.quoted variable.other.env" + ], + "settings": { + "foreground": "#" + } + }, + { + "name": "GDScript functions", + "scope": "support.function.builtin.gdscript", + "settings": { + "foreground": "#" + } + }, + { + "name": "GDScript constants", + "scope": "constant.language.gdscript", + "settings": { + "foreground": "#" + } + }, + { + "name": "Comment keywords", + "scope": "comment meta.annotation.go", + "settings": { + "foreground": "#" + } + }, + { + "name": "go:embed, go:build, etc.", + "scope": "comment meta.annotation.parameters.go", + "settings": { + "foreground": "#" + } + }, + { + "name": "Go constants (nil, true, false)", + "scope": "constant.language.go", + "settings": { + "foreground": "#" + } + }, + { + "name": "GraphQL variables", + "scope": "variable.graphql", + "settings": { + "foreground": "#" + } + }, + { + "name": "GraphQL aliases", + "scope": "string.unquoted.alias.graphql", + "settings": { + "foreground": "#" + } + }, + { + "name": "GraphQL enum members", + "scope": "constant.character.enum.graphql", + "settings": { + "foreground": "#" + } + }, + { + "name": "GraphQL field in types", + "scope": "meta.objectvalues.graphql constant.object.key.graphql string.unquoted.graphql", + "settings": { + "foreground": "#" + } + }, + { + "name": "HTML/XML DOCTYPE as keyword", + "scope": [ + "keyword.other.doctype", + "meta.tag.sgml.doctype punctuation.definition.tag", + "meta.tag.metadata.doctype entity.name.tag", + "meta.tag.metadata.doctype punctuation.definition.tag" + ], + "settings": { + "foreground": "#" + } + }, + { + "name": "HTML/XML-like ", + "scope": [ + "entity.name.tag" + ], + "settings": { + "foreground": "#", + "fontStyle": "" + } + }, + { + "name": "Special characters like &", + "scope": [ + "text.html constant.character.entity", + "text.html constant.character.entity punctuation", + "constant.character.entity.xml", + "constant.character.entity.xml punctuation", + "constant.character.entity.js.jsx", + "constant.charactger.entity.js.jsx punctuation", + "constant.character.entity.tsx", + "constant.character.entity.tsx punctuation" + ], + "settings": { + "foreground": "#" + } + }, + { + "name": "HTML/XML tag attribute values", + "scope": [ + "entity.other.attribute-name" + ], + "settings": { + "foreground": "#" + } + }, + { + "name": "Components", + "scope": [ + "support.class.component", + "support.class.component.jsx", + "support.class.component.tsx", + "support.class.component.vue" + ], + "settings": { + "foreground": "#", + "fontStyle": "" + } + }, + { + "name": "Annotations", + "scope": [ + "punctuation.definition.annotation", + "storage.type.annotation" + ], + "settings": { + "foreground": "#" + } + }, + { + "name": "Java enums", + "scope": "constant.other.enum.java", + "settings": { + "foreground": "#" + } + }, + { + "name": "Java imports", + "scope": "storage.modifier.import.java", + "settings": { + "foreground": "#" + } + }, + { + "name": "Javadoc", + "scope": "comment.block.javadoc.java keyword.other.documentation.javadoc.java", + "settings": { + "fontStyle": "" + } + }, + { + "name": "Exported Variable", + "scope": "meta.export variable.other.readwrite.js", + "settings": { + "foreground": "#" + } + }, + { + "name": "JS/TS constants & properties", + "scope": [ + "variable.other.constant.js", + "variable.other.constant.ts", + "variable.other.property.js", + "variable.other.property.ts" + ], + "settings": { + "foreground": "#" + } + }, + { + "name": "JSDoc; these are mainly params, so styled as such", + "scope": [ + "variable.other.jsdoc", + "comment.block.documentation variable.other" + ], + "settings": { + "foreground": "#", + "fontStyle": "" + } + }, + { + "name": "JSDoc keywords", + "scope": "storage.type.class.jsdoc", + "settings": { + "fontStyle": "" + } + }, + { + "scope": "support.type.object.console.js", + "settings": { + "foreground": "#" + } + }, + { + "name": "Node constants as keywords (module, etc.)", + "scope": [ + "support.constant.node", + "support.type.object.module.js" + ], + "settings": { + "foreground": "#" + } + }, + { + "name": "implements as keyword", + "scope": "storage.modifier.implements", + "settings": { + "foreground": "#" + } + }, + { + "name": "Builtin types", + "scope": [ + "constant.language.null.js", + "constant.language.null.ts", + "constant.language.undefined.js", + "constant.language.undefined.ts", + "support.type.builtin.ts" + ], + "settings": { + "foreground": "#" + } + }, + { + "scope": "variable.parameter.generic", + "settings": { + "foreground": "#" + } + }, + { + "name": "Arrow functions", + "scope": [ + "keyword.declaration.function.arrow.js", + "storage.type.function.arrow.ts" + ], + "settings": { + "foreground": "#" + } + }, + { + "name": "Decorator punctuations (decorators inherit from blue functions, instead of styleguide peach)", + "scope": "punctuation.decorator.ts", + "settings": { + "foreground": "#", + "fontStyle": "italic" + } + }, + { + "name": "Extra JS/TS keywords", + "scope": [ + "keyword.operator.expression.in.js", + "keyword.operator.expression.in.ts", + "keyword.operator.expression.infer.ts", + "keyword.operator.expression.instanceof.js", + "keyword.operator.expression.instanceof.ts", + "keyword.operator.expression.is", + "keyword.operator.expression.keyof.ts", + "keyword.operator.expression.of.js", + "keyword.operator.expression.of.ts", + "keyword.operator.expression.typeof.ts" + ], + "settings": { + "foreground": "#" + } + }, + { + "name": "Julia macros", + "scope": "support.function.macro.julia", + "settings": { + "foreground": "#", + "fontStyle": "italic" + } + }, + { + "name": "Julia language constants (true, false)", + "scope": "constant.language.julia", + "settings": { + "foreground": "#" + } + }, + { + "name": "Julia other constants (these seem to be arguments inside arrays)", + "scope": "constant.other.symbol.julia", + "settings": { + "foreground": "#" + } + }, + { + "name": "LaTeX preamble", + "scope": "text.tex keyword.control.preamble", + "settings": { + "foreground": "#" + } + }, + { + "name": "LaTeX be functions", + "scope": "text.tex support.function.be", + "settings": { + "foreground": "#" + } + }, + { + "name": "LaTeX math", + "scope": "constant.other.general.math.tex", + "settings": { + "foreground": "#" + } + }, + { + "name": "Lua docstring keywords", + "scope": "comment.line.double-dash.documentation.lua storage.type.annotation.lua", + "settings": { + "foreground": "#", + "fontStyle": "" + } + }, + { + "name": "Lua docstring variables", + "scope": [ + "comment.line.double-dash.documentation.lua entity.name.variable.lua", + "comment.line.double-dash.documentation.lua variable.lua" + ], + "settings": { + "foreground": "#" + } + }, + { + "scope": [ + "heading.1.markdown punctuation.definition.heading.markdown", + "heading.1.markdown", + "markup.heading.atx.1.mdx", + "markup.heading.atx.1.mdx punctuation.definition.heading.mdx", + "markup.heading.setext.1.markdown", + "markup.heading.heading-0.asciidoc" + ], + "settings": { + "foreground": "#" + } + }, + { + "scope": [ + "heading.2.markdown punctuation.definition.heading.markdown", + "heading.2.markdown", + "markup.heading.atx.2.mdx", + "markup.heading.atx.2.mdx punctuation.definition.heading.mdx", + "markup.heading.setext.2.markdown", + "markup.heading.heading-1.asciidoc" + ], + "settings": { + "foreground": "#" + } + }, + { + "scope": [ + "heading.3.markdown punctuation.definition.heading.markdown", + "heading.3.markdown", + "markup.heading.atx.3.mdx", + "markup.heading.atx.3.mdx punctuation.definition.heading.mdx", + "markup.heading.heading-2.asciidoc" + ], + "settings": { + "foreground": "#" + } + }, + { + "scope": [ + "heading.4.markdown punctuation.definition.heading.markdown", + "heading.4.markdown", + "markup.heading.atx.4.mdx", + "markup.heading.atx.4.mdx punctuation.definition.heading.mdx", + "markup.heading.heading-3.asciidoc" + ], + "settings": { + "foreground": "#" + } + }, + { + "scope": [ + "heading.5.markdown punctuation.definition.heading.markdown", + "heading.5.markdown", + "markup.heading.atx.5.mdx", + "markup.heading.atx.5.mdx punctuation.definition.heading.mdx", + "markup.heading.heading-4.asciidoc" + ], + "settings": { + "foreground": "#" + } + }, + { + "scope": [ + "heading.6.markdown punctuation.definition.heading.markdown", + "heading.6.markdown", + "markup.heading.atx.6.mdx", + "markup.heading.atx.6.mdx punctuation.definition.heading.mdx", + "markup.heading.heading-5.asciidoc" + ], + "settings": { + "foreground": "#" + } + }, + { + "scope": "markup.bold", + "settings": { + "foreground": "#", + "fontStyle": "bold" + } + }, + { + "scope": "markup.italic", + "settings": { + "foreground": "#", + "fontStyle": "italic" + } + }, + { + "scope": "markup.strikethrough", + "settings": { + "foreground": "#", + "fontStyle": "strikethrough" + } + }, + { + "name": "Markdown auto links", + "scope": [ + "punctuation.definition.link", + "markup.underline.link" + ], + "settings": { + "foreground": "#" + } + }, + { + "name": "Markdown links", + "scope": [ + "text.html.markdown punctuation.definition.link.title", + "string.other.link.title.markdown", + "markup.link", + "punctuation.definition.constant.markdown", + "constant.other.reference.link.markdown", + "markup.substitution.attribute-reference" + ], + "settings": { + "foreground": "#" + } + }, + { + "name": "Markdown code spans", + "scope": [ + "punctuation.definition.raw.markdown", + "markup.inline.raw.string.markdown", + "markup.raw.block.markdown" + ], + "settings": { + "foreground": "#" + } + }, + { + "name": "Markdown triple backtick language identifier", + "scope": "fenced_code.block.language", + "settings": { + "foreground": "#" + } + }, + { + "name": "Markdown triple backticks", + "scope": [ + "markup.fenced_code.block punctuation.definition", + "markup.raw support.asciidoc" + ], + "settings": { + "foreground": "#" + } + }, + { + "name": "Markdown quotes", + "scope": [ + "markup.quote", + "punctuation.definition.quote.begin" + ], + "settings": { + "foreground": "#" + } + }, + { + "name": "Markdown separators", + "scope": "meta.separator.markdown", + "settings": { + "foreground": "#" + } + }, + { + "name": "Markdown list bullets", + "scope": [ + "punctuation.definition.list.begin.markdown", + "markup.list.bullet" + ], + "settings": { + "foreground": "#" + } + }, + { + "name": "Nix attribute names", + "scope": [ + "entity.other.attribute-name.multipart.nix", + "entity.other.attribute-name.single.nix" + ], + "settings": { + "foreground": "#" + } + }, + { + "name": "Nix parameter names", + "scope": "variable.parameter.name.nix", + "settings": { + "foreground": "#", + "fontStyle": "" + } + }, + { + "name": "Nix interpolated parameter names", + "scope": "meta.embedded variable.parameter.name.nix", + "settings": { + "foreground": "#", + "fontStyle": "" + } + }, + { + "name": "Nix paths", + "scope": "string.unquoted.path.nix", + "settings": { + "foreground": "#", + "fontStyle": "" + } + }, + { + "name": "PHP Attributes", + "scope": [ + "support.attribute.builtin", + "meta.attribute.php" + ], + "settings": { + "foreground": "#" + } + }, + { + "name": "PHP Parameters (needed for the leading dollar sign)", + "scope": "meta.function.parameters.php punctuation.definition.variable.php", + "settings": { + "foreground": "#" + } + }, + { + "name": "PHP Constants (null, __FILE__, etc.)", + "scope": "constant.language.php", + "settings": { + "foreground": "#" + } + }, + { + "name": "PHP functions", + "scope": "text.html.php support.function", + "settings": { + "foreground": "#" + } + }, + { + "name": "PHPdoc keywords", + "scope": "keyword.other.phpdoc.php", + "settings": { + "fontStyle": "" + } + }, + { + "name": "Python argument functions reset to text, otherwise they inherit blue from function-call", + "scope": [ + "support.variable.magic.python", + "meta.function-call.arguments.python" + ], + "settings": { + "foreground": "#" + } + }, + { + "name": "Python double underscore functions", + "scope": [ + "support.function.magic.python" + ], + "settings": { + "foreground": "#", + "fontStyle": "italic" + } + }, + { + "name": "Python `self` keyword", + "scope": [ + "variable.parameter.function.language.special.self.python", + "variable.language.special.self.python" + ], + "settings": { + "foreground": "#", + "fontStyle": "italic" + } + }, + { + "name": "python keyword flow/logical (for ... in)", + "scope": [ + "keyword.control.flow.python", + "keyword.operator.logical.python" + ], + "settings": { + "foreground": "#" + } + }, + { + "name": "python storage type", + "scope": "storage.type.function.python", + "settings": { + "foreground": "#" + } + }, + { + "name": "python function support", + "scope": [ + "support.token.decorator.python", + "meta.function.decorator.identifier.python" + ], + "settings": { + "foreground": "#" + } + }, + { + "name": "python function calls", + "scope": [ + "meta.function-call.python" + ], + "settings": { + "foreground": "#" + } + }, + { + "name": "python function decorators", + "scope": [ + "entity.name.function.decorator.python", + "punctuation.definition.decorator.python" + ], + "settings": { + "foreground": "#", + "fontStyle": "italic" + } + }, + { + "name": "python placeholder reset to normal string", + "scope": "constant.character.format.placeholder.other.python", + "settings": { + "foreground": "#" + } + }, + { + "name": "Python exception & builtins such as exit()", + "scope": [ + "support.type.exception.python", + "support.function.builtin.python" + ], + "settings": { + "foreground": "#" + } + }, + { + "name": "entity.name.type", + "scope": [ + "support.type.python" + ], + "settings": { + "foreground": "#" + } + }, + { + "name": "python constants (True/False)", + "scope": "constant.language.python", + "settings": { + "foreground": "#" + } + }, + { + "name": "Arguments accessed later in the function body", + "scope": [ + "meta.indexed-name.python", + "meta.item-access.python" + ], + "settings": { + "foreground": "#", + "fontStyle": "italic" + } + }, + { + "name": "Python f-strings/binary/unicode storage types", + "scope": "storage.type.string.python", + "settings": { + "foreground": "#", + "fontStyle": "italic" + } + }, + { + "name": "Python type hints", + "scope": "meta.function.parameters.python", + "settings": { + "fontStyle": "" + } + }, + { + "name": "Regex string begin/end in JS/TS", + "scope": [ + "string.regexp punctuation.definition.string.begin", + "string.regexp punctuation.definition.string.end" + ], + "settings": { + "foreground": "#" + } + }, + { + "name": "Regex anchors (^, $)", + "scope": "keyword.control.anchor.regexp", + "settings": { + "foreground": "#" + } + }, + { + "name": "Regex regular string match", + "scope": "string.regexp.ts", + "settings": { + "foreground": "#" + } + }, + { + "name": "Regex group parenthesis & backreference (\\1, \\2, \\3, ...)", + "scope": [ + "punctuation.definition.group.regexp", + "keyword.other.back-reference.regexp" + ], + "settings": { + "foreground": "#" + } + }, + { + "name": "Regex character class []", + "scope": "punctuation.definition.character-class.regexp", + "settings": { + "foreground": "#" + } + }, + { + "name": "Regex character classes (\\d, \\w, \\s)", + "scope": "constant.other.character-class.regexp", + "settings": { + "foreground": "#" + } + }, + { + "name": "Regex range", + "scope": "constant.other.character-class.range.regexp", + "settings": { + "foreground": "#" + } + }, + { + "name": "Regex quantifier", + "scope": "keyword.operator.quantifier.regexp", + "settings": { + "foreground": "#" + } + }, + { + "name": "Regex constant/numeric", + "scope": "constant.character.numeric.regexp", + "settings": { + "foreground": "#" + } + }, + { + "name": "Regex lookaheads, negative lookaheads, lookbehinds, negative lookbehinds", + "scope": [ + "punctuation.definition.group.no-capture.regexp", + "meta.assertion.look-ahead.regexp", + "meta.assertion.negative-look-ahead.regexp" + ], + "settings": { + "foreground": "#" + } + }, + { + "name": "Rust attribute", + "scope": [ + "meta.annotation.rust", + "meta.annotation.rust punctuation", + "meta.attribute.rust", + "punctuation.definition.attribute.rust" + ], + "settings": { + "foreground": "#", + "fontStyle": "italic" + } + }, + { + "name": "Rust attribute strings", + "scope": [ + "meta.attribute.rust string.quoted.double.rust", + "meta.attribute.rust string.quoted.single.char.rust" + ], + "settings": { + "fontStyle": "" + } + }, + { + "name": "Rust keyword", + "scope": [ + "entity.name.function.macro.rules.rust", + "storage.type.module.rust", + "storage.modifier.rust", + "storage.type.struct.rust", + "storage.type.enum.rust", + "storage.type.trait.rust", + "storage.type.union.rust", + "storage.type.impl.rust", + "storage.type.rust", + "storage.type.function.rust", + "storage.type.type.rust" + ], + "settings": { + "foreground": "#", + "fontStyle": "" + } + }, + { + "name": "Rust u/i32, u/i64, etc.", + "scope": "entity.name.type.numeric.rust", + "settings": { + "foreground": "#", + "fontStyle": "" + } + }, + { + "name": "Rust generic", + "scope": "meta.generic.rust", + "settings": { + "foreground": "#" + } + }, + { + "name": "Rust impl", + "scope": "entity.name.impl.rust", + "settings": { + "foreground": "#", + "fontStyle": "italic" + } + }, + { + "name": "Rust module", + "scope": "entity.name.module.rust", + "settings": { + "foreground": "#" + } + }, + { + "name": "Rust trait", + "scope": "entity.name.trait.rust", + "settings": { + "foreground": "#", + "fontStyle": "italic" + } + }, + { + "name": "Rust struct", + "scope": "storage.type.source.rust", + "settings": { + "foreground": "#" + } + }, + { + "name": "Rust union", + "scope": "entity.name.union.rust", + "settings": { + "foreground": "#" + } + }, + { + "name": "Rust enum member", + "scope": "meta.enum.rust storage.type.source.rust", + "settings": { + "foreground": "#" + } + }, + { + "name": "Rust macro", + "scope": [ + "support.macro.rust", + "meta.macro.rust support.function.rust", + "entity.name.function.macro.rust" + ], + "settings": { + "foreground": "#", + "fontStyle": "italic" + } + }, + { + "name": "Rust lifetime", + "scope": [ + "storage.modifier.lifetime.rust", + "entity.name.type.lifetime" + ], + "settings": { + "foreground": "#", + "fontStyle": "italic" + } + }, + { + "name": "Rust string formatting", + "scope": "string.quoted.double.rust constant.other.placeholder.rust", + "settings": { + "foreground": "#" + } + }, + { + "name": "Rust return type generic", + "scope": "meta.function.return-type.rust meta.generic.rust storage.type.rust", + "settings": { + "foreground": "#" + } + }, + { + "name": "Rust functions", + "scope": "meta.function.call.rust", + "settings": { + "foreground": "#" + } + }, + { + "name": "Rust angle brackets", + "scope": "punctuation.brackets.angle.rust", + "settings": { + "foreground": "#" + } + }, + { + "name": "Rust constants", + "scope": "constant.other.caps.rust", + "settings": { + "foreground": "#" + } + }, + { + "name": "Rust function parameters", + "scope": [ + "meta.function.definition.rust variable.other.rust" + ], + "settings": { + "foreground": "#" + } + }, + { + "name": "Rust closure variables", + "scope": "meta.function.call.rust variable.other.rust", + "settings": { + "foreground": "#" + } + }, + { + "name": "Rust self", + "scope": "variable.language.self.rust", + "settings": { + "foreground": "#" + } + }, + { + "name": "Rust metavariable names", + "scope": [ + "variable.other.metavariable.name.rust", + "meta.macro.metavariable.rust keyword.operator.macro.dollar.rust" + ], + "settings": { + "foreground": "#" + } + }, + { + "name": "Shell shebang", + "scope": [ + "comment.line.shebang", + "comment.line.shebang punctuation.definition.comment", + "comment.line.shebang", + "punctuation.definition.comment.shebang.shell", + "meta.shebang.shell" + ], + "settings": { + "foreground": "#", + "fontStyle": "italic" + } + }, + { + "name": "Shell shebang command", + "scope": "comment.line.shebang constant.language", + "settings": { + "foreground": "#", + "fontStyle": "italic" + } + }, + { + "name": "Shell interpolated command", + "scope": [ + "meta.function-call.arguments.shell punctuation.definition.variable.shell", + "meta.function-call.arguments.shell punctuation.section.interpolation", + "meta.function-call.arguments.shell punctuation.definition.variable.shell", + "meta.function-call.arguments.shell punctuation.section.interpolation" + ], + "settings": { + "foreground": "#" + } + }, + { + "name": "Shell interpolated command variable", + "scope": "meta.string meta.interpolation.parameter.shell variable.other.readwrite", + "settings": { + "foreground": "#", + "fontStyle": "italic" + } + }, + { + "scope": [ + "source.shell punctuation.section.interpolation", + "punctuation.definition.evaluation.backticks.shell" + ], + "settings": { + "foreground": "#" + } + }, + { + "name": "Shell EOF", + "scope": "entity.name.tag.heredoc.shell", + "settings": { + "foreground": "#" + } + }, + { + "name": "Shell quoted variable", + "scope": "string.quoted.double.shell variable.other.normal.shell", + "settings": { + "foreground": "#" + } + } + ] +} diff --git a/Configs/.config/hyde/wallbash/Wall-Ways/discord.dcol b/Configs/.config/hyde/wallbash/Wall-Ways/discord.dcol new file mode 100644 index 0000000..ca898d2 --- /dev/null +++ b/Configs/.config/hyde/wallbash/Wall-Ways/discord.dcol @@ -0,0 +1,74 @@ +${cacheDir}/landing/discord.css|${scrDir}/wallbashdiscord.sh + +:root { + --accent-color: #; + --border-color: #; + --background-1: #; + --background-2: #; + --background-tertiary: #66; + --background-mentioned: # !important; + --background-mentioned-hover: # !important; + --background-modifier-hover: # !important; + --background-modifier-active: # !important; + --text-normal: # !important; + --text-positive: # !important; + --text-muted: #66 !important; + --text-link: # !important; + --channel-default: #99 !important; + --button-background: # !important; + --button-background-hover: # !important; + --button-background-active: # !important; + --button-accent: # !important; + --button-accent-hover: # !important; + --button-accent-active: # !important; + --button-destructive: # !important; + --button-destructive-hover: # !important; + --button-destructive-active: # !important; + --settings-icon-color: # !important; + --tab-selected: # !important; + --switch: # !important; + + --background-primary: var(--background-1); + --background-primary-alt: var(--background-1); + --background-secondary: var(--background-tertiary); + --background-secondary-alt: var(--background-tertiary); + --background-accent-gradient: var(--background-1); + --background-floating: var(--background-2); + --background-modifier-selected: var(--accent-color); + --background-modifier-accent: var(--border-color); + --background-message-hover: transparent; + --interactive-selected: var(--background-primary); + --interactive-active: var(--text-positive); + --interactive-normal: var(--text-normal); + --interactive-muted: var(--text-muted); + --channels-default: var(--channel-default); + --header-primary: var(--text-normal); + --header-secondary: var(--text-muted); + --control-brand-foreground: var(--accent-color); + --info-warning-foreground: var(--accent-color); + --activity-card-background: var(--background-1); + --brand-experiment: var(--accent-color) !important; + --close-button-color: var(--accent-color); + --maximize-button-color: var(--accent-color); + --minimize-button-color: var(--accent-color); + --scrollbar-color-alt: var(--accent-color); + --scrollbar-thin-track: transparent; + --scrollbar-auto-thumb: transparent; + --scrollbar-auto-thumb-hover: var(--accent-color); + --scrollbar-auto-track: transparent; + --scrollbar-auto-scrollbar-color-thumb: var(--accent-color); + --scrollbar-auto-scrollbar-color-track: transparent; + --channeltextarea-background: var(--accent-color); + --channeltextarea-background-hover: var(--background-tertiary); + --avatar-roundess: 5px; +} + +.theme-dark { + --background-primary: var(--background-1); + --background-primary-alt: var(--background-1); + --background-secondary: var(--background-tertiary); + --background-secondary-alt: var(--background-tertiary); + --background-floating: var(--background-2); + --background-mentioned: var(--accent-color); + --background-mentioned-hover: var(--scrollbar-auto-thumb); +} diff --git a/Configs/.config/hyde/wallbash/Wall-Ways/notification/dunst.dcol b/Configs/.config/hyde/wallbash/Wall-Ways/notification/dunst.dcol new file mode 100644 index 0000000..d5046dd --- /dev/null +++ b/Configs/.config/hyde/wallbash/Wall-Ways/notification/dunst.dcol @@ -0,0 +1,15 @@ +$HOME/.config/dunst/wallbash.conf|${scrDir}/wallbashdunst.sh + +[urgency_low] + background = "#80" + foreground = "#E6" + frame_color = "#03" + icon = "$HOME/.config/dunst/icons/hyprdots.svg" + timeout = 5 + +[urgency_normal] + background = "#80" + foreground = "#E6" + frame_color = "#03" + icon = "$HOME/.config/dunst/icons/hyprdots.svg" + timeout = 5 diff --git a/Configs/.config/hyde/wallbash/Wall-Ways/notification/hyprdots.dcol b/Configs/.config/hyde/wallbash/Wall-Ways/notification/hyprdots.dcol new file mode 100644 index 0000000..3a226c7 --- /dev/null +++ b/Configs/.config/hyde/wallbash/Wall-Ways/notification/hyprdots.dcol @@ -0,0 +1,193 @@ +$HOME/.config/dunst/icons/hyprdots.svg + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Configs/.config/hyde/wallbash/Wall-Ways/notification/muted-mic.dcol b/Configs/.config/hyde/wallbash/Wall-Ways/notification/muted-mic.dcol new file mode 100644 index 0000000..b2f38e8 --- /dev/null +++ b/Configs/.config/hyde/wallbash/Wall-Ways/notification/muted-mic.dcol @@ -0,0 +1,6 @@ +$HOME/.config/dunst/icons/vol/muted-mic.svg + + + + + \ No newline at end of file diff --git a/Configs/.config/hyde/wallbash/Wall-Ways/notification/muted-speaker.dcol b/Configs/.config/hyde/wallbash/Wall-Ways/notification/muted-speaker.dcol new file mode 100644 index 0000000..27a2a4b --- /dev/null +++ b/Configs/.config/hyde/wallbash/Wall-Ways/notification/muted-speaker.dcol @@ -0,0 +1,3 @@ +$HOME/.config/dunst/icons/vol/muted-speaker.svg + + \ No newline at end of file diff --git a/Configs/.config/hyde/wallbash/Wall-Ways/notification/unmuted-mic.dcol b/Configs/.config/hyde/wallbash/Wall-Ways/notification/unmuted-mic.dcol new file mode 100644 index 0000000..227d59f --- /dev/null +++ b/Configs/.config/hyde/wallbash/Wall-Ways/notification/unmuted-mic.dcol @@ -0,0 +1,6 @@ +$HOME/.config/dunst/icons/vol/unmuted-mic.svg + + + + + \ No newline at end of file diff --git a/Configs/.config/hyde/wallbash/Wall-Ways/notification/unmuted-speaker.dcol b/Configs/.config/hyde/wallbash/Wall-Ways/notification/unmuted-speaker.dcol new file mode 100644 index 0000000..3ae0d14 --- /dev/null +++ b/Configs/.config/hyde/wallbash/Wall-Ways/notification/unmuted-speaker.dcol @@ -0,0 +1,3 @@ +$HOME/.config/dunst/icons/vol/unmuted-speaker.svg + + \ No newline at end of file diff --git a/Configs/.config/hyde/wallbash/Wall-Ways/notification/vol-0.dcol b/Configs/.config/hyde/wallbash/Wall-Ways/notification/vol-0.dcol new file mode 100644 index 0000000..b4005ce --- /dev/null +++ b/Configs/.config/hyde/wallbash/Wall-Ways/notification/vol-0.dcol @@ -0,0 +1,74 @@ +$HOME/.config/dunst/icons/vol/vol-0.svg + + + + + \ No newline at end of file diff --git a/Configs/.config/hyde/wallbash/Wall-Ways/notification/vol-10.dcol b/Configs/.config/hyde/wallbash/Wall-Ways/notification/vol-10.dcol new file mode 100644 index 0000000..7daf3fa --- /dev/null +++ b/Configs/.config/hyde/wallbash/Wall-Ways/notification/vol-10.dcol @@ -0,0 +1,77 @@ +$HOME/.config/dunst/icons/vol/vol-10.svg + + + + + \ No newline at end of file diff --git a/Configs/.config/hyde/wallbash/Wall-Ways/notification/vol-100.dcol b/Configs/.config/hyde/wallbash/Wall-Ways/notification/vol-100.dcol new file mode 100644 index 0000000..95a34f7 --- /dev/null +++ b/Configs/.config/hyde/wallbash/Wall-Ways/notification/vol-100.dcol @@ -0,0 +1,74 @@ +$HOME/.config/dunst/icons/vol/vol-100.svg + + + + + diff --git a/Configs/.config/hyde/wallbash/Wall-Ways/notification/vol-15.dcol b/Configs/.config/hyde/wallbash/Wall-Ways/notification/vol-15.dcol new file mode 100644 index 0000000..90295ed --- /dev/null +++ b/Configs/.config/hyde/wallbash/Wall-Ways/notification/vol-15.dcol @@ -0,0 +1,77 @@ +$HOME/.config/dunst/icons/vol/vol-15.svg + + + + + diff --git a/Configs/.config/hyde/wallbash/Wall-Ways/notification/vol-20.dcol b/Configs/.config/hyde/wallbash/Wall-Ways/notification/vol-20.dcol new file mode 100644 index 0000000..934bfe1 --- /dev/null +++ b/Configs/.config/hyde/wallbash/Wall-Ways/notification/vol-20.dcol @@ -0,0 +1,77 @@ +$HOME/.config/dunst/icons/vol/vol-20.svg + + + + + diff --git a/Configs/.config/hyde/wallbash/Wall-Ways/notification/vol-25.dcol b/Configs/.config/hyde/wallbash/Wall-Ways/notification/vol-25.dcol new file mode 100644 index 0000000..3888d64 --- /dev/null +++ b/Configs/.config/hyde/wallbash/Wall-Ways/notification/vol-25.dcol @@ -0,0 +1,77 @@ +$HOME/.config/dunst/icons/vol/vol-25.svg + + + + + diff --git a/Configs/.config/hyde/wallbash/Wall-Ways/notification/vol-30.dcol b/Configs/.config/hyde/wallbash/Wall-Ways/notification/vol-30.dcol new file mode 100644 index 0000000..7034b52 --- /dev/null +++ b/Configs/.config/hyde/wallbash/Wall-Ways/notification/vol-30.dcol @@ -0,0 +1,77 @@ +$HOME/.config/dunst/icons/vol/vol-30.svg + + + + + diff --git a/Configs/.config/hyde/wallbash/Wall-Ways/notification/vol-35.dcol b/Configs/.config/hyde/wallbash/Wall-Ways/notification/vol-35.dcol new file mode 100644 index 0000000..d9076cb --- /dev/null +++ b/Configs/.config/hyde/wallbash/Wall-Ways/notification/vol-35.dcol @@ -0,0 +1,77 @@ +$HOME/.config/dunst/icons/vol/vol-35.svg + + + + + diff --git a/Configs/.config/hyde/wallbash/Wall-Ways/notification/vol-40.dcol b/Configs/.config/hyde/wallbash/Wall-Ways/notification/vol-40.dcol new file mode 100644 index 0000000..fc16896 --- /dev/null +++ b/Configs/.config/hyde/wallbash/Wall-Ways/notification/vol-40.dcol @@ -0,0 +1,77 @@ +$HOME/.config/dunst/icons/vol/vol-40.svg + + + + + diff --git a/Configs/.config/hyde/wallbash/Wall-Ways/notification/vol-45.dcol b/Configs/.config/hyde/wallbash/Wall-Ways/notification/vol-45.dcol new file mode 100644 index 0000000..57c8d55 --- /dev/null +++ b/Configs/.config/hyde/wallbash/Wall-Ways/notification/vol-45.dcol @@ -0,0 +1,77 @@ +$HOME/.config/dunst/icons/vol/vol-45.svg + + + + + diff --git a/Configs/.config/hyde/wallbash/Wall-Ways/notification/vol-5.dcol b/Configs/.config/hyde/wallbash/Wall-Ways/notification/vol-5.dcol new file mode 100644 index 0000000..3446cd8 --- /dev/null +++ b/Configs/.config/hyde/wallbash/Wall-Ways/notification/vol-5.dcol @@ -0,0 +1,76 @@ +$HOME/.config/dunst/icons/vol/vol-5.svg + + + + + \ No newline at end of file diff --git a/Configs/.config/hyde/wallbash/Wall-Ways/notification/vol-50.dcol b/Configs/.config/hyde/wallbash/Wall-Ways/notification/vol-50.dcol new file mode 100644 index 0000000..13b5259 --- /dev/null +++ b/Configs/.config/hyde/wallbash/Wall-Ways/notification/vol-50.dcol @@ -0,0 +1,76 @@ +$HOME/.config/dunst/icons/vol/vol-50.svg + + + + + diff --git a/Configs/.config/hyde/wallbash/Wall-Ways/notification/vol-55.dcol b/Configs/.config/hyde/wallbash/Wall-Ways/notification/vol-55.dcol new file mode 100644 index 0000000..df7deb3 --- /dev/null +++ b/Configs/.config/hyde/wallbash/Wall-Ways/notification/vol-55.dcol @@ -0,0 +1,77 @@ +$HOME/.config/dunst/icons/vol/vol-55.svg + + + + + diff --git a/Configs/.config/hyde/wallbash/Wall-Ways/notification/vol-60.dcol b/Configs/.config/hyde/wallbash/Wall-Ways/notification/vol-60.dcol new file mode 100644 index 0000000..1b8243c --- /dev/null +++ b/Configs/.config/hyde/wallbash/Wall-Ways/notification/vol-60.dcol @@ -0,0 +1,77 @@ +$HOME/.config/dunst/icons/vol/vol-60.svg + + + + + diff --git a/Configs/.config/hyde/wallbash/Wall-Ways/notification/vol-65.dcol b/Configs/.config/hyde/wallbash/Wall-Ways/notification/vol-65.dcol new file mode 100644 index 0000000..6272148 --- /dev/null +++ b/Configs/.config/hyde/wallbash/Wall-Ways/notification/vol-65.dcol @@ -0,0 +1,77 @@ +$HOME/.config/dunst/icons/vol/vol-65.svg + + + + + diff --git a/Configs/.config/hyde/wallbash/Wall-Ways/notification/vol-70.dcol b/Configs/.config/hyde/wallbash/Wall-Ways/notification/vol-70.dcol new file mode 100644 index 0000000..717d8b4 --- /dev/null +++ b/Configs/.config/hyde/wallbash/Wall-Ways/notification/vol-70.dcol @@ -0,0 +1,77 @@ +$HOME/.config/dunst/icons/vol/vol-70.svg + + + + + diff --git a/Configs/.config/hyde/wallbash/Wall-Ways/notification/vol-75.dcol b/Configs/.config/hyde/wallbash/Wall-Ways/notification/vol-75.dcol new file mode 100644 index 0000000..2e08509 --- /dev/null +++ b/Configs/.config/hyde/wallbash/Wall-Ways/notification/vol-75.dcol @@ -0,0 +1,77 @@ +$HOME/.config/dunst/icons/vol/vol-75.svg + + + + + diff --git a/Configs/.config/hyde/wallbash/Wall-Ways/notification/vol-80.dcol b/Configs/.config/hyde/wallbash/Wall-Ways/notification/vol-80.dcol new file mode 100644 index 0000000..69cca1f --- /dev/null +++ b/Configs/.config/hyde/wallbash/Wall-Ways/notification/vol-80.dcol @@ -0,0 +1,77 @@ +$HOME/.config/dunst/icons/vol/vol-80.svg + + + + + diff --git a/Configs/.config/hyde/wallbash/Wall-Ways/notification/vol-85.dcol b/Configs/.config/hyde/wallbash/Wall-Ways/notification/vol-85.dcol new file mode 100644 index 0000000..a5563bc --- /dev/null +++ b/Configs/.config/hyde/wallbash/Wall-Ways/notification/vol-85.dcol @@ -0,0 +1,77 @@ +$HOME/.config/dunst/icons/vol/vol-85.svg + + + + + diff --git a/Configs/.config/hyde/wallbash/Wall-Ways/notification/vol-90.dcol b/Configs/.config/hyde/wallbash/Wall-Ways/notification/vol-90.dcol new file mode 100644 index 0000000..5327178 --- /dev/null +++ b/Configs/.config/hyde/wallbash/Wall-Ways/notification/vol-90.dcol @@ -0,0 +1,77 @@ +$HOME/.config/dunst/icons/vol/vol-90.svg + + + + + diff --git a/Configs/.config/hyde/wallbash/Wall-Ways/notification/vol-95.dcol b/Configs/.config/hyde/wallbash/Wall-Ways/notification/vol-95.dcol new file mode 100644 index 0000000..778b197 --- /dev/null +++ b/Configs/.config/hyde/wallbash/Wall-Ways/notification/vol-95.dcol @@ -0,0 +1,77 @@ +$HOME/.config/dunst/icons/vol/vol-95.svg + + + + + diff --git a/Configs/.config/hyde/wallbash/Wall-Ways/palette/palette_v2.t2 b/Configs/.config/hyde/wallbash/Wall-Ways/palette/palette_v2.t2 new file mode 100644 index 0000000..22b425a --- /dev/null +++ b/Configs/.config/hyde/wallbash/Wall-Ways/palette/palette_v2.t2 @@ -0,0 +1,178 @@ +${cacheDir}/palette_v2.svg + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Configs/.config/hyde/wallbash/Wall-Ways/palette/palette_v3.t2 b/Configs/.config/hyde/wallbash/Wall-Ways/palette/palette_v3.t2 new file mode 100644 index 0000000..924036d --- /dev/null +++ b/Configs/.config/hyde/wallbash/Wall-Ways/palette/palette_v3.t2 @@ -0,0 +1,572 @@ +${cacheDir}/palette_v3.svg + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Configs/.config/hyde/wallbash/Wall-Ways/qtct.dcol b/Configs/.config/hyde/wallbash/Wall-Ways/qtct.dcol new file mode 100644 index 0000000..c63ae1b --- /dev/null +++ b/Configs/.config/hyde/wallbash/Wall-Ways/qtct.dcol @@ -0,0 +1,5 @@ +$HOME/.config/qt5ct/colors.conf|${scrDir}/wallbashqt.sh +[ColorScheme] +active_colors= #, ##, ##, ##, ##, ##, #, ##, #, ##, ##, ##, #, #, ##, ##, ##, ##, ##, ##, ## +disabled_colors=#, ##, ##, ##, ##, ##, #, ##, #, ##, ##, ##, #, #, ##, ##, ##, ##, ##, ##, ## +inactive_colors=#, ##, ##, ##, ##, ##, #, ##, #, ##, ##, ##, #, #, ##, ##, ##, ##, ##, ##, ## diff --git a/Configs/.config/hyde/wallbash/Wall-Ways/spotify.dcol b/Configs/.config/hyde/wallbash/Wall-Ways/spotify.dcol new file mode 100644 index 0000000..e553e59 --- /dev/null +++ b/Configs/.config/hyde/wallbash/Wall-Ways/spotify.dcol @@ -0,0 +1,45 @@ +$HOME/.config/spicetify/Themes/Sleek/color.ini|${scrDir}/wallbashspotify.sh + +[Wallbash] +text = +subtext = +nav-active-text = +main = +sidebar = +player = +card = +shadow = +main-secondary = +button = +button-secondary = +button-active = +button-disabled = +nav-active = +play-button = +tab-active = +notification = +notification-error = +playback-bar = +misc = + +; Description + +; text = main text, playlist names in main field, name of playlist selected in sidebar, headings +; subtext = text in main buttons in sidebar, playlist names in sidebar, artist names, and mini infos +; nav-active-text = text in main buttons in sidebar when active +; main = main bg +; main-secondary = bg color of selected song rows, bg color of artist/track cards +; sidebar = sidebar bg +; player = player bg +; card = popup-card bg +; shadow = all shadows +; button = playlist buttons bg in sidebar, drop-down menus, now playing song, like button +; button-secondary = download and options button +; button-active = hover on song selected +; button-disabled = seekbar bg, volume bar bg, scrollbar +; nav-active = sidebar buttons bg +; play-button = color of main play button in main field +; tab-active = button bg in main field (playlists, podcasts, artists, albums) +; notification = notification ('Added to liked songs' etc.) +; playback-bar = seekbar fg, volume bar fg, main play/pause button +; misc = miscellaneous diff --git a/Configs/.config/hypr/animations.conf b/Configs/.config/hypr/animations.conf new file mode 100644 index 0000000..4e33fd3 --- /dev/null +++ b/Configs/.config/hypr/animations.conf @@ -0,0 +1,21 @@ + +# ▄▀█ █▄░█ █ █▀▄▀█ ▄▀█ ▀█▀ █ █▀█ █▄░█ +# █▀█ █░▀█ █ █░▀░█ █▀█ ░█░ █ █▄█ █░▀█ + +# See https://wiki.hyprland.org/Configuring/Animations/ + +animations { + enabled = yes + bezier = wind, 0.05, 0.9, 0.1, 1.05 + bezier = winIn, 0.1, 1.1, 0.1, 1.1 + bezier = winOut, 0.3, -0.3, 0, 1 + bezier = liner, 1, 1, 1, 1 + animation = windows, 1, 6, wind, slide + animation = windowsIn, 1, 6, winIn, slide + animation = windowsOut, 1, 5, winOut, slide + animation = windowsMove, 1, 5, wind, slide + animation = border, 1, 1, liner + animation = borderangle, 1, 30, liner, loop + animation = fade, 1, 10, default + animation = workspaces, 1, 5, wind +} diff --git a/Configs/.config/hypr/hyprland.conf b/Configs/.config/hypr/hyprland.conf new file mode 100644 index 0000000..11847c8 --- /dev/null +++ b/Configs/.config/hypr/hyprland.conf @@ -0,0 +1,141 @@ + +#   ░▒▒▒░░░░░▓▓          ___________ +# ░░▒▒▒░░░░░▓▓        //___________/ +# ░░▒▒▒░░░░░▓▓     _   _ _    _ _____ +# ░░▒▒░░░░░▓▓▓▓▓▓ | | | | |  | |  __/ +# ░▒▒░░░░▓▓   ▓▓ | |_| | |_/ /| |___ +#  ░▒▒░░▓▓   ▓▓   \__  |____/ |____/ +#    ░▒▓▓   ▓▓  //____/ + + +$scrPath = $HOME/.local/share/bin # set scripts path + + +# █▀▄▀█ █▀█ █▄░█ █ ▀█▀ █▀█ █▀█ +# █░▀░█ █▄█ █░▀█ █ ░█░ █▄█ █▀▄ + +# See https://wiki.hyprland.org/Configuring/Monitors/ + +monitor = ,preferred,auto,auto + + +# █░░ ▄▀█ █░█ █▄░█ █▀▀ █░█ +# █▄▄ █▀█ █▄█ █░▀█ █▄▄ █▀█ + +# See https://wiki.hyprland.org/Configuring/Keywords/ + +exec-once = $scrPath/resetxdgportal.sh # reset XDPH for screenshare +exec-once = dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP # for XDPH +exec-once = dbus-update-activation-environment --systemd --all # for XDPH +exec-once = systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP # for XDPH +exec-once = $scrPath/polkitkdeauth.sh # authentication dialogue for GUI apps +exec-once = waybar # launch the system bar +exec-once = blueman-applet # systray app for Bluetooth +exec-once = udiskie --no-automount --smart-tray # front-end that allows to manage removable media +exec-once = nm-applet --indicator # systray app for Network/Wifi +exec-once = dunst # start notification demon +exec-once = wl-paste --type text --watch cliphist store # clipboard store text data +exec-once = wl-paste --type image --watch cliphist store # clipboard store image data +exec-once = $scrPath/swwwallpaper.sh # start wallpaper daemon +exec-once = $scrPath/batterynotify.sh # battery notification + + +# █▀▀ █▄░█ █░█ +# ██▄ █░▀█ ▀▄▀ + +# See https://wiki.hyprland.org/Configuring/Environment-variables/ + +env = PATH,$PATH:$scrPath +env = XDG_CURRENT_DESKTOP,Hyprland +env = XDG_SESSION_TYPE,wayland +env = XDG_SESSION_DESKTOP,Hyprland +env = QT_QPA_PLATFORM,wayland;xcb +env = QT_QPA_PLATFORMTHEME,qt6ct +env = QT_WAYLAND_DISABLE_WINDOWDECORATION,1 +env = QT_AUTO_SCREEN_SCALE_FACTOR,1 +env = MOZ_ENABLE_WAYLAND,1 +env = GDK_SCALE,1 + + +# █ █▄░█ █▀█ █░█ ▀█▀ +# █ █░▀█ █▀▀ █▄█ ░█░ + +# See https://wiki.hyprland.org/Configuring/Variables/ + +input { + kb_layout = us + follow_mouse = 1 + + touchpad { + natural_scroll = no + } + + sensitivity = 0 + force_no_accel = 1 + numlock_by_default = true +} + +# See https://wiki.hyprland.org/Configuring/Keywords/#executing + +device { + name = epic mouse V1 + sensitivity = -0.5 +} + +# See https://wiki.hyprland.org/Configuring/Variables/ + +gestures { + workspace_swipe = true + workspace_swipe_fingers = 3 +} + + +# █░░ ▄▀█ █▄█ █▀█ █░█ ▀█▀ █▀ +# █▄▄ █▀█ ░█░ █▄█ █▄█ ░█░ ▄█ + +# See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ + +dwindle { + pseudotile = yes + preserve_split = yes +} + +# See https://wiki.hyprland.org/Configuring/Master-Layout/ + +master { + new_status = master +} + + +# █▀▄▀█ █ █▀ █▀▀ +# █░▀░█ █ ▄█ █▄▄ + +# See https://wiki.hyprland.org/Configuring/Variables/ + +misc { + vrr = 0 + disable_hyprland_logo = true + disable_splash_rendering = true + force_default_wallpaper = 0 +} + +xwayland { + force_zero_scaling = true +} + + +# █▀ █▀█ █░█ █▀█ █▀▀ █▀▀ +# ▄█ █▄█ █▄█ █▀▄ █▄▄ ██▄ + +source = ~/.config/hypr/animations.conf +source = ~/.config/hypr/keybindings.conf +source = ~/.config/hypr/windowrules.conf +source = ~/.config/hypr/themes/common.conf # shared theme settings +# hyprlang noerror true +source = ~/.config/hypr/themes/theme.conf # theme specific settings +# hyprlang noerror false +source = ~/.config/hypr/themes/colors.conf # wallbash color override +source = ~/.config/hypr/monitors.conf # initially empty, to be configured by user and remains static +source = ~/.config/hypr/userprefs.conf # initially empty, to be configured by user and remains static + +# Note: as userprefs.conf is sourced at the end, settings configured in this file will override the defaults diff --git a/Configs/.config/hypr/keybindings.conf b/Configs/.config/hypr/keybindings.conf new file mode 100644 index 0000000..352f259 --- /dev/null +++ b/Configs/.config/hypr/keybindings.conf @@ -0,0 +1,170 @@ + +# █▄▀ █▀▀ █▄█ █▄▄ █ █▄░█ █▀▄ █ █▄░█ █▀▀ █▀ +# █░█ ██▄ ░█░ █▄█ █ █░▀█ █▄▀ █ █░▀█ █▄█ ▄█ + +# See https://wiki.hyprland.org/Configuring/Keywords/ +# & https://wiki.hyprland.org/Configuring/Binds/ + +# Main modifier +$mainMod = Super # super / meta / windows key + +# Assign apps +$term = kitty +$editor = code +$file = dolphin +$browser = firefox + +# Window/Session actions +bindd = $mainMod+Shift, P,Color Picker , exec, hyprpicker -a # Pick color (Hex) >> clipboard# +bind = $mainMod, Q, exec, $scrPath/dontkillsteam.sh # close focused window +bind = Alt, F4, exec, $scrPath/dontkillsteam.sh # close focused window +bind = $mainMod, Delete, exit, # kill hyprland session +bind = $mainMod, W, togglefloating, # toggle the window between focus and float +bind = $mainMod, G, togglegroup, # toggle the window between focus and group +bind = Alt, Return, fullscreen, # toggle the window between focus and fullscreen +bind = $mainMod, L, exec, swaylock # launch lock screen +bind = $mainMod+Shift, F, exec, $scrPath/windowpin.sh # toggle pin on focused window +bind = $mainMod, Backspace, exec, $scrPath/logoutlaunch.sh # launch logout menu +bind = Ctrl+Alt, W, exec, killall waybar || (env reload_flag=1 $scrPath/wbarconfgen.sh) # toggle waybar and reload config +#bind = Ctrl+Alt, W, exec, killall waybar || waybar # toggle waybar without reloading, this is faster + +# Application shortcuts +bind = $mainMod, T, exec, $term # launch terminal emulator +bind = $mainMod, E, exec, $file # launch file manager +bind = $mainMod, C, exec, $editor # launch text editor +bind = $mainMod, F, exec, $browser # launch web browser +bind = Ctrl+Shift, Escape, exec, $scrPath/sysmonlaunch.sh # launch system monitor (htop/btop or fallback to top) + +# Rofi menus +bind = $mainMod, A, exec, pkill -x rofi || $scrPath/rofilaunch.sh d # launch application launcher +bind = $mainMod, Tab, exec, pkill -x rofi || $scrPath/rofilaunch.sh w # launch window switcher +bind = $mainMod+Shift, E, exec, pkill -x rofi || $scrPath/rofilaunch.sh f # launch file explorer + +# Audio control +bindl = , F10, exec, $scrPath/volumecontrol.sh -o m # toggle audio mute +bindel = , F11, exec, $scrPath/volumecontrol.sh -o d # decrease volume +bindel = , F12, exec, $scrPath/volumecontrol.sh -o i # increase volume +bindl = , XF86AudioMute, exec, $scrPath/volumecontrol.sh -o m # toggle audio mute +bindl = , XF86AudioMicMute, exec, $scrPath/volumecontrol.sh -i m # toggle microphone mute +bindel = , XF86AudioLowerVolume, exec, $scrPath/volumecontrol.sh -o d # decrease volume +bindel = , XF86AudioRaiseVolume, exec, $scrPath/volumecontrol.sh -o i # increase volume + +# Media control +bindl = , XF86AudioPlay, exec, playerctl play-pause # toggle between media play and pause +bindl = , XF86AudioPause, exec, playerctl play-pause # toggle between media play and pause +bindl = , XF86AudioNext, exec, playerctl next # media next +bindl = , XF86AudioPrev, exec, playerctl previous # media previous + +# Brightness control +bindel = , XF86MonBrightnessUp, exec, $scrPath/brightnesscontrol.sh i # increase brightness +bindel = , XF86MonBrightnessDown, exec, $scrPath/brightnesscontrol.sh d # decrease brightness + +# Move between grouped windows +bind = $mainMod CTRL , H, changegroupactive, b +bind = $mainMod CTRL , L, changegroupactive, f + +# Screenshot/Screencapture +bind = $mainMod, P, exec, $scrPath/screenshot.sh s # partial screenshot capture +bind = $mainMod+Ctrl, P, exec, $scrPath/screenshot.sh sf # partial screenshot capture (frozen screen) +bind = $mainMod+Alt, P, exec, $scrPath/screenshot.sh m # monitor screenshot capture +bind = , Print, exec, $scrPath/screenshot.sh p # all monitors screenshot capture + +# Custom scripts +bind = $mainMod+Alt, G, exec, $scrPath/gamemode.sh # disable hypr effects for gamemode +bind = $mainMod+Alt, Right, exec, $scrPath/swwwallpaper.sh -n # next wallpaper +bind = $mainMod+Alt, Left, exec, $scrPath/swwwallpaper.sh -p # previous wallpaper +bind = $mainMod+Alt, Up, exec, $scrPath/wbarconfgen.sh n # next waybar mode +bind = $mainMod+Alt, Down, exec, $scrPath/wbarconfgen.sh p # previous waybar mode +bind = $mainMod+Shift, R, exec, pkill -x rofi || $scrPath/wallbashtoggle.sh -m # launch wallbash mode select menu +bind = $mainMod+Shift, T, exec, pkill -x rofi || $scrPath/themeselect.sh # launch theme select menu +bind = $mainMod+Shift, A, exec, pkill -x rofi || $scrPath/rofiselect.sh # launch select menu +bind = $mainMod+Shift, X, exec, pkill -x rofi || $scrPath/themestyle.sh # launch theme style select menu +bind = $mainMod+Shift, W, exec, pkill -x rofi || $scrPath/swwwallselect.sh # launch wallpaper select menu +bind = $mainMod, V, exec, pkill -x rofi || $scrPath/cliphist.sh c # launch clipboard +bind = $mainMod+Shift, V, exec, pkill -x rofi || $scrPath/cliphist.sh # launch clipboard Manager +bind = $mainMod, K, exec, $scrPath/keyboardswitch.sh # switch keyboard layout +bind = $mainMod, slash, exec, pkill -x rofi || $scrPath/keybinds_hint.sh c # launch keybinds hint + +# Move/Change window focus +bind = $mainMod, Left, movefocus, l +bind = $mainMod, Right, movefocus, r +bind = $mainMod, Up, movefocus, u +bind = $mainMod, Down, movefocus, d +bind = Alt, Tab, movefocus, d + +# Switch workspaces +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 + +# Switch workspaces to a relative workspace +bind = $mainMod+Ctrl, Right, workspace, r+1 +bind = $mainMod+Ctrl, Left, workspace, r-1 + +# Move to the first empty workspace +bind = $mainMod+Ctrl, Down, workspace, empty + +# Resize windows +binde = $mainMod+Shift, Right, resizeactive, 30 0 +binde = $mainMod+Shift, Left, resizeactive, -30 0 +binde = $mainMod+Shift, Up, resizeactive, 0 -30 +binde = $mainMod+Shift, Down, resizeactive, 0 30 + +# Move focused window to a workspace +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 + +# Move focused window to a relative workspace +bind = $mainMod+Ctrl+Alt, Right, movetoworkspace, r+1 +bind = $mainMod+Ctrl+Alt, Left, movetoworkspace, r-1 + +# Move active window around current workspace with mainMod + SHIFT + CTRL [←→↑↓] +$moveactivewindow=grep -q "true" <<< $(hyprctl activewindow -j | jq -r .floating) && hyprctl dispatch moveactive +binded = $mainMod SHIFT $CONTROL, left,Move activewindow to the right,exec, $moveactivewindow -30 0 || hyprctl dispatch movewindow l +binded = $mainMod SHIFT $CONTROL, right,Move activewindow to the right,exec, $moveactivewindow 30 0 || hyprctl dispatch movewindow r +binded = $mainMod SHIFT $CONTROL, up,Move activewindow to the right,exec, $moveactivewindow 0 -30 || hyprctl dispatch movewindow u +binded = $mainMod SHIFT $CONTROL, down,Move activewindow to the right,exec, $moveactivewindow 0 30 || hyprctl dispatch movewindow d + +# Scroll through existing workspaces +bind = $mainMod, mouse_down, workspace, e+1 +bind = $mainMod, mouse_up, workspace, e-1 + +# Move/Resize focused window +bindm = $mainMod, mouse:272, movewindow +bindm = $mainMod, mouse:273, resizewindow +bindm = $mainMod, Z, movewindow +bindm = $mainMod, X, resizewindow + +# Move/Switch to special workspace (scratchpad) +bind = $mainMod+Alt, S, movetoworkspacesilent, special +bind = $mainMod, S, togglespecialworkspace, + +# Toggle focused window split +bind = $mainMod, J, togglesplit + +# Move focused window to a workspace silently +bind = $mainMod+Alt, 1, movetoworkspacesilent, 1 +bind = $mainMod+Alt, 2, movetoworkspacesilent, 2 +bind = $mainMod+Alt, 3, movetoworkspacesilent, 3 +bind = $mainMod+Alt, 4, movetoworkspacesilent, 4 +bind = $mainMod+Alt, 5, movetoworkspacesilent, 5 +bind = $mainMod+Alt, 6, movetoworkspacesilent, 6 +bind = $mainMod+Alt, 7, movetoworkspacesilent, 7 +bind = $mainMod+Alt, 8, movetoworkspacesilent, 8 +bind = $mainMod+Alt, 9, movetoworkspacesilent, 9 +bind = $mainMod+Alt, 0, movetoworkspacesilent, 10 diff --git a/Configs/.config/hypr/monitors.conf b/Configs/.config/hypr/monitors.conf new file mode 100644 index 0000000..2ecb27d --- /dev/null +++ b/Configs/.config/hypr/monitors.conf @@ -0,0 +1,7 @@ + +# █▀▄▀█ █▀█ █▄░█ █ ▀█▀ █▀█ █▀█ █▀ +# █░▀░█ █▄█ █░▀█ █ ░█░ █▄█ █▀▄ ▄█ + +# Set your monitor configuration here +# See https://wiki.hyprland.org/Configuring/Monitors/ +# For a sample file, please refer to https://github.com/prasanthrangan/hyprdots/blob/main/Configs/.config/hypr/monitors.t2 diff --git a/Configs/.config/hypr/monitors.t2 b/Configs/.config/hypr/monitors.t2 new file mode 100644 index 0000000..877547e --- /dev/null +++ b/Configs/.config/hypr/monitors.t2 @@ -0,0 +1,18 @@ + +# █▀▄▀█ █▀█ █▄░█ █ ▀█▀ █▀█ █▀█ █▀ +# █░▀░█ █▄█ █░▀█ █ ░█░ █▄█ █▀▄ ▄█ + +# See https://wiki.hyprland.org/Configuring/Monitors/ + +# monitor = ,preferred,auto,auto +monitor = DP-1, 2560x1080@144, 0x0, 1 + + +# █▀▄▀█ █ █▀ █▀▀ +# █░▀░█ █ ▄█ █▄▄ + +# See https://wiki.hyprland.org/Configuring/Variables/ + +misc { + vrr = 0 +} diff --git a/Configs/.config/hypr/nvidia.conf b/Configs/.config/hypr/nvidia.conf new file mode 100644 index 0000000..d78f36f --- /dev/null +++ b/Configs/.config/hypr/nvidia.conf @@ -0,0 +1,12 @@ + +# █▄░█ █░█ █ █▀▄ █ ▄▀█ +# █░▀█ ▀▄▀ █ █▄▀ █ █▀█ + +# See https://wiki.hyprland.org/Nvidia/ + +env = LIBVA_DRIVER_NAME,nvidia +env = __GLX_VENDOR_LIBRARY_NAME,nvidia +env = __GL_VRR_ALLOWED,1 +env = WLR_DRM_NO_ATOMIC,1 + +cursor:no_hardware_cursors = true diff --git a/Configs/.config/hypr/themes/colors.conf b/Configs/.config/hypr/themes/colors.conf new file mode 100644 index 0000000..e69de29 diff --git a/Configs/.config/hypr/themes/common.conf b/Configs/.config/hypr/themes/common.conf new file mode 100644 index 0000000..45759cc --- /dev/null +++ b/Configs/.config/hypr/themes/common.conf @@ -0,0 +1,28 @@ + +# █▀▀ █░█ █▀█ █▀ █▀█ █▀█ +# █▄▄ █▄█ █▀▄ ▄█ █▄█ █▀▄ + +exec = hyprctl setcursor Bibata-Modern-Ice 20 +exec = gsettings set org.gnome.desktop.interface cursor-theme 'Bibata-Modern-Ice' +exec = gsettings set org.gnome.desktop.interface cursor-size 20 + + +# █▀▀ █▀█ █▄░█ ▀█▀ +# █▀░ █▄█ █░▀█ ░█░ + +exec = gsettings set org.gnome.desktop.interface font-name 'Cantarell 10' +exec = gsettings set org.gnome.desktop.interface document-font-name 'Cantarell 10' +exec = gsettings set org.gnome.desktop.interface monospace-font-name 'CaskaydiaCove Nerd Font Mono 9' +exec = gsettings set org.gnome.desktop.interface font-antialiasing 'rgba' +exec = gsettings set org.gnome.desktop.interface font-hinting 'full' + + +# █▀ █▀█ █▀▀ █▀▀ █ ▄▀█ █░░ +# ▄█ █▀▀ ██▄ █▄▄ █ █▀█ █▄▄ + +decoration { + dim_special = 0.3 + blur { + special = true + } +} diff --git a/Configs/.config/hypr/themes/theme.conf b/Configs/.config/hypr/themes/theme.conf new file mode 100644 index 0000000..c14da36 --- /dev/null +++ b/Configs/.config/hypr/themes/theme.conf @@ -0,0 +1,39 @@ +exec = gsettings set org.gnome.desktop.interface icon-theme 'Tela-circle-dracula' +exec = gsettings set org.gnome.desktop.interface gtk-theme 'Catppuccin-Mocha' +exec = gsettings set org.gnome.desktop.interface color-scheme 'prefer-dark' + +general { + gaps_in = 3 + gaps_out = 8 + border_size = 2 + col.active_border = rgba(ca9ee6ff) rgba(f2d5cfff) 45deg + col.inactive_border = rgba(b4befecc) rgba(6c7086cc) 45deg + layout = dwindle + resize_on_border = true +} + +group { + col.border_active = rgba(ca9ee6ff) rgba(f2d5cfff) 45deg + col.border_inactive = rgba(b4befecc) rgba(6c7086cc) 45deg + col.border_locked_active = rgba(ca9ee6ff) rgba(f2d5cfff) 45deg + col.border_locked_inactive = rgba(b4befecc) rgba(6c7086cc) 45deg +} + +decoration { + rounding = 10 + + blur { + enabled = yes + size = 6 + passes = 3 + new_optimizations = on + ignore_opacity = on + xray = false + } + + shadow { + enabled = false + } +} + +layerrule = blur,waybar diff --git a/Configs/.config/hypr/userprefs.conf b/Configs/.config/hypr/userprefs.conf new file mode 100644 index 0000000..7ee4618 --- /dev/null +++ b/Configs/.config/hypr/userprefs.conf @@ -0,0 +1,6 @@ + +# █░█ █▀ █▀▀ █▀█   █▀█ █▀█ █▀▀ █▀▀ █▀ +# █▄█ ▄█ ██▄ █▀▄   █▀▀ █▀▄ ██▄ █▀░ ▄█ + +# Set your personal hyprland configuration here +# For a sample file, please refer to https://github.com/prasanthrangan/hyprdots/blob/main/Configs/.config/hypr/userprefs.t2 diff --git a/Configs/.config/hypr/userprefs.t2 b/Configs/.config/hypr/userprefs.t2 new file mode 100644 index 0000000..1a61025 --- /dev/null +++ b/Configs/.config/hypr/userprefs.t2 @@ -0,0 +1,44 @@ + +# █▀▀ █▄░█ █░█ +# ██▄ █░▀█ ▀▄▀ + +# env = MANGOHUD,1 +# env = MANGOHUD_DLSYM,1 + + +# █▄▀ █▀▀ █▄█ █▄▄ █ █▄░█ █▀▄ █ █▄░█ █▀▀ █▀ +# █░█ ██▄ ░█░ █▄█ █ █░▀█ █▄▀ █ █░▀█ █▄█ ▄█ + +bind = Ctrl+Alt+Shift, R, pass, ^(com\.obsproject\.Studio)$ # toggle obs screen recording // install obs flatpak +bind = $mainMod+Shift, G, exec, pkill -x rofi || $scrPath/gamelauncher.sh # launch steam game launcher // install steam +# bind = $mainMod, Period, exec, emote # launch emoji selector // install emote +# bind = $mainMod+Alt, XF86MonBrightnessDown, exec, hyprshade on blue-light-filter # enable blue light filter // install hyprshade +# bind = $mainMod+Alt, XF86MonBrightnessUp, exec, hyprshade off # disable blue light filter // install hyprshade + + +# █░░ ▄▀█ █░█ █▄░█ █▀▀ █░█ +# █▄▄ █▀█ █▄█ █░▀█ █▄▄ █▀█ + +# exec-once = swayidle -w timeout 600 'swaylock' timeout 900 'hyprctl dispatch dpms off' resume 'hyprctl dispatch dpms on' # lock after 10 mins, sleep after 15 mins // install swayidle +# exec-once = swayidle -w timeout 1200 'swaylock; hyprctl dispatch dpms off' resume 'hyprctl dispatch dpms on' timeout 1800 'systemctl suspend' # lock and sleep after 20 mins, suspend after 30 mins // install swayidle +# exec-once = libinput-gestures // install libinput-gestures +# exec-once = swayosd-server # enable swayosd service +# exec-once = `pkexec swayosd-libinput-backend` # swayosd service for keyboard input (requires to be run in a subshell) + +# █░█░█ █ █▄░█ █▀▄ █▀█ █░█░█   █▀█ █░█ █░░ █▀▀ █▀ +# ▀▄▀▄▀ █ █░▀█ █▄▀ █▄█ ▀▄▀▄▀   █▀▄ █▄█ █▄▄ ██▄ ▄█ + +# windowrulev2 = opacity 0.60 0.60,class:^(Steam)$ +# windowrulev2 = opacity 0.60 0.60,class:^(steam)$ +# windowrulev2 = opacity 0.60 0.60,class:^(steamwebhelper)$ +# windowrulev2 = opacity 0.60 0.60,class:^(Spotify)$ + + +# █░█ █▀▄▀█ +# ▀▄▀ █░▀░█ + +bind = Ctrl+Alt_L, V, submap, passthrough +submap = passthrough +bind = Ctrl+Alt_L, V, submap, reset +submap = reset + diff --git a/Configs/.config/hypr/windowrules.conf b/Configs/.config/hypr/windowrules.conf new file mode 100644 index 0000000..4e64bfc --- /dev/null +++ b/Configs/.config/hypr/windowrules.conf @@ -0,0 +1,105 @@ + +# █░█░█ █ █▄░█ █▀▄ █▀█ █░█░█   █▀█ █░█ █░░ █▀▀ █▀ +# ▀▄▀▄▀ █ █░▀█ █▄▀ █▄█ ▀▄▀▄▀   █▀▄ █▄█ █▄▄ ██▄ ▄█ + +# See https://wiki.hyprland.org/Configuring/Window-Rules/ + +windowrulev2 = opacity 0.90 0.90,class:^(firefox)$ +windowrulev2 = opacity 0.90 0.90,class:^(Brave-browser)$ +windowrulev2 = opacity 0.80 0.80,class:^(code-oss)$ +windowrulev2 = opacity 0.80 0.80,class:^([Cc]ode)$ +windowrulev2 = opacity 0.80 0.80,class:^(code-url-handler)$ +windowrulev2 = opacity 0.80 0.80,class:^(code-insiders-url-handler)$ +windowrulev2 = opacity 0.80 0.80,class:^(kitty)$ +windowrulev2 = opacity 0.80 0.80,class:^(org.kde.dolphin)$ +windowrulev2 = opacity 0.80 0.80,class:^(org.kde.ark)$ +windowrulev2 = opacity 0.80 0.80,class:^(nwg-look)$ +windowrulev2 = opacity 0.80 0.80,class:^(qt5ct)$ +windowrulev2 = opacity 0.80 0.80,class:^(qt6ct)$ +windowrulev2 = opacity 0.80 0.80,class:^(kvantummanager)$ +windowrulev2 = opacity 0.80 0.70,class:^(org.pulseaudio.pavucontrol)$ +windowrulev2 = opacity 0.80 0.70,class:^(blueman-manager)$ +windowrulev2 = opacity 0.80 0.70,class:^(nm-applet)$ +windowrulev2 = opacity 0.80 0.70,class:^(nm-connection-editor)$ +windowrulev2 = opacity 0.80 0.70,class:^(org.kde.polkit-kde-authentication-agent-1)$ +windowrulev2 = opacity 0.80 0.70,class:^(polkit-gnome-authentication-agent-1)$ +windowrulev2 = opacity 0.80 0.70,class:^(org.freedesktop.impl.portal.desktop.gtk)$ +windowrulev2 = opacity 0.80 0.70,class:^(org.freedesktop.impl.portal.desktop.hyprland)$ +windowrulev2 = opacity 0.70 0.70,class:^([Ss]team)$ +windowrulev2 = opacity 0.70 0.70,class:^(steamwebhelper)$ +windowrulev2 = opacity 0.70 0.70,class:^([Ss]potify)$ +windowrulev2 = opacity 0.70 0.70,initialTitle:^(Spotify Free)$ +windowrulev2 = opacity 0.70 0.70,initialTitle:^(Spotify Premium)$ + +windowrulev2 = opacity 0.90 0.90,class:^(com.github.rafostar.Clapper)$ # Clapper-Gtk +windowrulev2 = opacity 0.80 0.80,class:^(com.github.tchx84.Flatseal)$ # Flatseal-Gtk +windowrulev2 = opacity 0.80 0.80,class:^(hu.kramo.Cartridges)$ # Cartridges-Gtk +windowrulev2 = opacity 0.80 0.80,class:^(com.obsproject.Studio)$ # Obs-Qt +windowrulev2 = opacity 0.80 0.80,class:^(gnome-boxes)$ # Boxes-Gtk +windowrulev2 = opacity 0.80 0.80,class:^(vesktop)$ # Vesktop +windowrulev2 = opacity 0.80 0.80,class:^(discord)$ # Discord-Electron +windowrulev2 = opacity 0.80 0.80,class:^(WebCord)$ # WebCord-Electron +windowrulev2 = opacity 0.80 0.80,class:^(ArmCord)$ # ArmCord-Electron +windowrulev2 = opacity 0.80 0.80,class:^(app.drey.Warp)$ # Warp-Gtk +windowrulev2 = opacity 0.80 0.80,class:^(net.davidotek.pupgui2)$ # ProtonUp-Qt +windowrulev2 = opacity 0.80 0.80,class:^(yad)$ # Protontricks-Gtk +windowrulev2 = opacity 0.80 0.80,class:^(Signal)$ # Signal-Gtk +windowrulev2 = opacity 0.80 0.80,class:^(io.github.alainm23.planify)$ # planify-Gtk +windowrulev2 = opacity 0.80 0.80,class:^(io.gitlab.theevilskeleton.Upscaler)$ # Upscaler-Gtk +windowrulev2 = opacity 0.80 0.80,class:^(com.github.unrud.VideoDownloader)$ # VideoDownloader-Gtk +windowrulev2 = opacity 0.80 0.80,class:^(io.gitlab.adhami3310.Impression)$ # Impression-Gtk +windowrulev2 = opacity 0.80 0.80,class:^(io.missioncenter.MissionCenter)$ # MissionCenter-Gtk +windowrulev2 = opacity 0.80 0.80,class:^(io.github.flattool.Warehouse)$ # Warehouse-Gtk + +windowrulev2 = float,class:^(org.kde.dolphin)$,title:^(Progress Dialog — Dolphin)$ +windowrulev2 = float,class:^(org.kde.dolphin)$,title:^(Copying — Dolphin)$ +windowrulev2 = float,title:^(About Mozilla Firefox)$ +windowrulev2 = float,class:^(firefox)$,title:^(Picture-in-Picture)$ +windowrulev2 = float,class:^(firefox)$,title:^(Library)$ +windowrulev2 = float,class:^(kitty)$,title:^(top)$ +windowrulev2 = float,class:^(kitty)$,title:^(btop)$ +windowrulev2 = float,class:^(kitty)$,title:^(htop)$ +windowrulev2 = float,class:^(vlc)$ +windowrulev2 = float,class:^(kvantummanager)$ +windowrulev2 = float,class:^(qt5ct)$ +windowrulev2 = float,class:^(qt6ct)$ +windowrulev2 = float,class:^(nwg-look)$ +windowrulev2 = float,class:^(org.kde.ark)$ +windowrulev2 = float,class:^(org.pulseaudio.pavucontrol)$ +windowrulev2 = float,class:^(blueman-manager)$ +windowrulev2 = float,class:^(nm-applet)$ +windowrulev2 = float,class:^(nm-connection-editor)$ +windowrulev2 = float,class:^(org.kde.polkit-kde-authentication-agent-1)$ + +windowrulev2 = float,class:^(Signal)$ # Signal-Gtk +windowrulev2 = float,class:^(com.github.rafostar.Clapper)$ # Clapper-Gtk +windowrulev2 = float,class:^(app.drey.Warp)$ # Warp-Gtk +windowrulev2 = float,class:^(net.davidotek.pupgui2)$ # ProtonUp-Qt +windowrulev2 = float,class:^(yad)$ # Protontricks-Gtk +windowrulev2 = float,class:^(eog)$ # Imageviewer-Gtk +windowrulev2 = float,class:^(io.github.alainm23.planify)$ # planify-Gtk +windowrulev2 = float,class:^(io.gitlab.theevilskeleton.Upscaler)$ # Upscaler-Gtk +windowrulev2 = float,class:^(com.github.unrud.VideoDownloader)$ # VideoDownloader-Gkk +windowrulev2 = float,class:^(io.gitlab.adhami3310.Impression)$ # Impression-Gtk +windowrulev2 = float,class:^(io.missioncenter.MissionCenter)$ # MissionCenter-Gtk + +# common modals +windowrule = float,title:^(Open)$ +windowrule = float,title:^(Choose Files)$ +windowrule = float,title:^(Save As)$ +windowrule = float,title:^(Confirm to replace files)$ +windowrule = float,title:^(File Operation Progress)$ +windowrulev2 = float,class:^(xdg-desktop-portal-gtk)$ + +# █░░ ▄▀█ █▄█ █▀▀ █▀█   █▀█ █░█ █░░ █▀▀ █▀ +# █▄▄ █▀█ ░█░ ██▄ █▀▄   █▀▄ █▄█ █▄▄ ██▄ ▄█ + +layerrule = blur,rofi +layerrule = ignorezero,rofi +layerrule = blur,notifications +layerrule = ignorezero,notifications +layerrule = blur,swaync-notification-window +layerrule = ignorezero,swaync-notification-window +layerrule = blur,swaync-control-center +layerrule = ignorezero,swaync-control-center +layerrule = blur,logout_dialog diff --git a/Configs/.config/kdeglobals b/Configs/.config/kdeglobals new file mode 100644 index 0000000..a9ec22a --- /dev/null +++ b/Configs/.config/kdeglobals @@ -0,0 +1,11 @@ +[General] +TerminalApplication=kitty + +[Icons] +Theme=Will be overwritten by themeswitch + +[Colors:View] +BackgroundNormal=#00000000 + +[UiSettings] +ColorScheme=* diff --git a/Configs/.config/kitty/kitty.conf b/Configs/.config/kitty/kitty.conf new file mode 100644 index 0000000..31a0a4b --- /dev/null +++ b/Configs/.config/kitty/kitty.conf @@ -0,0 +1,11 @@ +font_family CaskaydiaCove Nerd Font Mono +bold_font auto +italic_font auto +bold_italic_font auto +enable_audio_bell no +font_size 9.0 +window_padding_width 25 +include theme.conf +#background_opacity 0.60 +#hide_window_decorations yes +#confirm_os_window_close 0 diff --git a/Configs/.config/kitty/theme.conf b/Configs/.config/kitty/theme.conf new file mode 100644 index 0000000..7a91612 --- /dev/null +++ b/Configs/.config/kitty/theme.conf @@ -0,0 +1,79 @@ + +## name: Catppuccin Mocha 🌿 +## author: Pocco81 (https://github.com/Pocco81) +## license: MIT +## upstream: https://github.com/catppuccin/kitty/blob/main/mocha.conf +## blurb: Soothing pastel theme for the high-spirited! + + + +# The basic colors +foreground #CDD6F4 +background #1E1E2E +selection_foreground #1E1E2E +selection_background #F5E0DC + +# Cursor colors +cursor #F5E0DC +cursor_text_color #1E1E2E + +# URL underline color when hovering with mouse +url_color #B4BEFE + +# Kitty window border colors +active_border_color #CBA6F7 +inactive_border_color #8E95B3 +bell_border_color #EBA0AC + +# OS Window titlebar colors +wayland_titlebar_color system +macos_titlebar_color system + +# Tab bar colors +active_tab_foreground #11111B +active_tab_background #CBA6F7 +inactive_tab_foreground #CDD6F4 +inactive_tab_background #181825 +tab_bar_background #11111B + +# Colors for marks (marked text in the terminal) +mark1_foreground #1E1E2E +mark1_background #87B0F9 +mark2_foreground #1E1E2E +mark2_background #CBA6F7 +mark3_foreground #1E1E2E +mark3_background #74C7EC + +# The 16 terminal colors + +# black +color0 #43465A +color8 #43465A + +# red +color1 #F38BA8 +color9 #F38BA8 + +# green +color2 #A6E3A1 +color10 #A6E3A1 + +# yellow +color3 #F9E2AF +color11 #F9E2AF + +# blue +color4 #87B0F9 +color12 #87B0F9 + +# magenta +color5 #F5C2E7 +color13 #F5C2E7 + +# cyan +color6 #94E2D5 +color14 #94E2D5 + +# white +color7 #CDD6F4 +color15 #A1A8C9 diff --git a/Configs/.config/libinput-gestures.conf b/Configs/.config/libinput-gestures.conf new file mode 100644 index 0000000..4f16d80 --- /dev/null +++ b/Configs/.config/libinput-gestures.conf @@ -0,0 +1,19 @@ +# Generated by Gestures 0.3.0 --> https://gitlab.com/cunidev/gestures +# Manual editing might result in data loss! + + +# Invalid lines + + +# Unsupported lines + +# Swipe threshold (0-100) +swipe_threshold 0 + +# Gestures +gesture swipe up 3 ~/.config/hyprdots/scripts/volumecontrol.sh -o i +gesture swipe down 3 ~/.config/hyprdots/scripts/volumecontrol.sh -o d +gesture swipe up 4 hyprctl dispatch fullscreen 0 +gesture swipe down 4 hyprctl dispatch exec ~/.config/hyprdots/scripts/screenshot.sh p # print all monitor outputs +gesture swipe right 4 hyprctl dispatch exec pkill rofi || ~/.config/hyprdots/scripts/cliphist.sh c # open Pasteboard in screen center +gesture swipe left 4 hyprctl dispatch exec dunstctl history-pop diff --git a/Configs/.config/lsd/colors.yaml b/Configs/.config/lsd/colors.yaml new file mode 100644 index 0000000..7604d23 --- /dev/null +++ b/Configs/.config/lsd/colors.yaml @@ -0,0 +1,27 @@ +user: 230 +group: 187 +permission: + read: dark_yellow + write: dark_blue + exec: dark_green + exec-sticky: 5 + no-access: 245 + octal: 6 + acl: dark_cyan + context: cyan +date: + hour-old: 40 + day-old: 42 + older: 36 +size: + none: 245 + small: 229 + medium: 216 + large: 172 +inode: + valid: 13 + invalid: 245 +links: + valid: 13 + invalid: 245 +tree-edge: 245 diff --git a/Configs/.config/lsd/config.yaml b/Configs/.config/lsd/config.yaml new file mode 100644 index 0000000..d0d0850 --- /dev/null +++ b/Configs/.config/lsd/config.yaml @@ -0,0 +1,89 @@ +classic: false + +blocks: + - permission + - user + - group + - size + - date + - name + +color: + when: auto + theme: custom + +date: '+%A, %d %B %Y, %R' + +# == Dereference == +# Whether to dereference symbolic links. +# Possible values: false, true +dereference: false + +# == Icons == +icons: + when: auto + # Which icon theme to use. + # Possible values: fancy, unicode + theme: fancy + # Separator between icon and the name + # Default to 1 space + separator: ' ' + +# == Ignore Globs == +# A list of globs to ignore when listing. +# ignore-globs: +# - .git + +# == Indicators == +# Whether to add indicator characters to certain listed files. +# Possible values: false, true +indicators: false + +layout: grid + +# == Recursion == +recursion: + # Whether to enable recursion. + # Possible values: false, true + enabled: false + # How deep the recursion should go. This has to be a positive integer. Leave + # it unspecified for (virtually) infinite. + # depth: 3 + +size: default + +permission: rwx + +# == Sorting == +sorting: + column: name + reverse: false + # Whether to group directories together and where. + # When "classic" is set, this is set to "none". + # Possible values: first, last, none + dir-grouping: first + +# == No Symlink == +# Whether to omit showing symlink targets +# Possible values: false, true +no-symlink: false + +# == Total size == +# Whether to display the total size of directories. +# Possible values: false, true +total-size: true + +# == Hyperlink == +# Attach hyperlink to filenames +# Possible values: always, auto, never +hyperlink: never + +# == Symlink arrow == +# Specifies how the symlink arrow display, chars in both ascii and utf8 +symlink-arrow: ⇒ + +# == Header == +# Whether to display block headers. +# Possible values: false, true +header: true + diff --git a/Configs/.config/lsd/icons.yaml b/Configs/.config/lsd/icons.yaml new file mode 100644 index 0000000..1730c43 --- /dev/null +++ b/Configs/.config/lsd/icons.yaml @@ -0,0 +1,24 @@ +name: + .trash:  + .cargo: 󱣘 + .emacs.d:  + a.out:  +extension: + go:  + hs:  + rs:  + lua:  + md:  + pdf:  + png:  +filetype: + dir:  + file:  + pipe: 󰟥 + socket: 󰐧 + executable:  + symlink-dir:  + symlink-file:  + device-char:  + device-block: 󰜫 + special:  diff --git a/Configs/.config/menus/applications.menu b/Configs/.config/menus/applications.menu new file mode 100644 index 0000000..a46f76c --- /dev/null +++ b/Configs/.config/menus/applications.menu @@ -0,0 +1,411 @@ + + + + + Applications + kde-main.directory + + + + + + + + More + + + + Applications + + + + + Applications + kf5-unknown.directory + + + + + + Core + KDE + + + X-SuSE-YaST + X-KDE-settings-hardware + X-KDE-settings-accessibility + X-KDE-settings-components + X-KDE-settings-desktop + X-KDE-settings-looknfeel + X-KDE-settings-network + X-KDE-settings-webbrowsing + X-KDE-settings-peripherals + X-KDE-settings-hardware + X-KDE-settings-power + X-KDE-settings-security + X-KDE-settings-sound + X-KDE-settings-system + X-KDE-information + kde-kcm_knetworkconfmodule_ss.desktop + kde-medianotifications.desktop + kde-audioencoding.desktop + + + + + Development + kf5-development.directory + + Translation + kf5-development-translation.directory + + + Development + Translation + + + + + Web Development + kf5-development-webdevelopment.directory + + + Development + WebDevelopment + + + + + + Development + Translation + WebDevelopment + + + + + Science + kf5-science.directory + + + + Astronomy + Biology + Chemistry + Geology + MedicalSoftware + Physics + Math + Science + + Education + + + + + Education + kf5-education.directory + + Languages + kf5-edu-languages.directory + + + Education + Languages + + + + + Mathematics + kf5-edu-mathematics.directory + + + Education + Math + + + + + Miscellaneous + kf5-edu-miscellaneous.directory + + + Education + + Languages + Math + Science + Teaching + + + + + + Science + kf5-edu-science.directory + + + Education + Science + + + + + Tools + kf5-edu-tools.directory + + + Education + Teaching + + + + + + Games + kf5-games.directory + + Arcade + kf5-games-arcade.directory + + + Game + ArcadeGame + + + + + Board + kf5-games-board.directory + + + Game + BoardGame + + + + + Card + kf5-games-card.directory + + + Game + CardGame + + + + + Kidsgames + kf5-games-kids.directory + + + Game + KidsGame + + + + + TacticStrategy + kf5-games-strategy.directory + + + Game + StrategyGame + + + + + Logic + kf5-games-logic.directory + + + Game + LogicGame + + + + + + Game + + ArcadeGame + BoardGame + CardGame + KidsGame + StrategyGame + LogicGame + + + + + + Graphics + kf5-graphics.directory + + + Graphics + X-KDE-More + + + + More + kf5-more.directory + + + Graphics + X-KDE-More + + + + + + Internet + kf5-internet.directory + + + Network + X-KDE-More + + + + Terminal + kf5-internet-terminal.directory + + + More + kf5-more.directory + + + Network + X-KDE-More + + + + + + Multimedia + kf5-multimedia.directory + + + AudioVideo + X-KDE-More + + + + More + kf5-more.directory + + + AudioVideo + X-KDE-More + + + + + + Office + kf5-office.directory + + + kde-koshell.desktop + kde-Kontact.desktop + + kde-kword.desktop + kde-kspread.desktop + kde-kpresenter.desktop + + + More + + + + Office + X-KDE-More + + + + More + kf5-more.directory + + + Office + X-KDE-More + + + + + + Settingsmenu + kf5-settingsmenu.directory + + Settings + + + + System + kf5-system.directory + + + System + X-KDE-More + + + + More + kf5-more.directory + + + System + X-KDE-More + + + + + ScreenSavers + kf5-system-screensavers.directory + + + Terminal + kf5-system-terminal.directory + + + + Utilities + kf5-utilities.directory + + + Utility + X-KDE-More + + TextEditor + Accessibility + X-KDE-Utilities-Desktop + X-KDE-Utilities-File + X-KDE-Utilities-Peripherals + X-KDE-Utilities-PIM + + + XUtilities + kf5-utilities-xutils.directory + + + More + kf5-more.directory + + + Utility + X-KDE-More + + + + + + + KDE + Core + + + + applications-kmenuedit.menu + diff --git a/Configs/.config/nwg-look/config b/Configs/.config/nwg-look/config new file mode 100644 index 0000000..a244fe5 --- /dev/null +++ b/Configs/.config/nwg-look/config @@ -0,0 +1,6 @@ +{ + "export-settings-ini": true, + "export-gtkrc-20": true, + "export-index-theme": true, + "export-xsettingsd": true +} \ No newline at end of file diff --git a/Configs/.config/qt5ct/colors.conf b/Configs/.config/qt5ct/colors.conf new file mode 100644 index 0000000..f524fcf --- /dev/null +++ b/Configs/.config/qt5ct/colors.conf @@ -0,0 +1,4 @@ +[ColorScheme] +active_colors= #FFFFFF, ##FFFFFF, ##FFFFFF, ##FFFFFF, ##FFFFFF, ##FFFFFF, #FFFFFF, ##FFFFFF, #6565A3, ##FFFFFF, ##FFFFFF, ##FFFFFF, #9A9AE6, #FFFFFF, ##FFFFFF, ##FFFFFF, ##FFFFFF, ##FFFFFF, ##FFFFFF, ##FFFFFF, ##FFFFFF +disabled_colors=#AAAAF0, ##FFFFFF, ##FFFFFF, ##FFFFFF, ##FFFFFF, ##FFFFFF, #FFFFFF, ##FFFFFF, #6565A3, ##FFFFFF, ##FFFFFF, ##FFFFFF, #9A9AE6, #FFFFFF, ##FFFFFF, ##FFFFFF, ##FFFFFF, ##FFFFFF, ##FFFFFF, ##FFFFFF, ##FFFFFF +inactive_colors=#7A7AC2, ##FFFFFF, ##FFFFFF, ##FFFFFF, ##FFFFFF, ##FFFFFF, #FFFFFF, ##FFFFFF, #6565A3, ##FFFFFF, ##FFFFFF, ##FFFFFF, #9A9AE6, #FFFFFF, ##FFFFFF, ##FFFFFF, ##FFFFFF, ##FFFFFF, ##FFFFFF, ##FFFFFF, ##FFFFFF diff --git a/Configs/.config/qt5ct/qt5ct.conf b/Configs/.config/qt5ct/qt5ct.conf new file mode 100644 index 0000000..ef7f2b7 --- /dev/null +++ b/Configs/.config/qt5ct/qt5ct.conf @@ -0,0 +1,32 @@ +[Appearance] +color_scheme_path=$HOME/.config/qt5ct/colors.conf +custom_palette=true +icon_theme=Tela-circle-dracula +standard_dialogs=default +style=kvantum + +[Fonts] +fixed="CaskaydiaCove Nerd Font Mono,9,-1,5,50,0,0,0,0,0,Regular" +general="Cantarell,10,-1,5,50,0,0,0,0,0,Regular" + +[Interface] +activate_item_on_single_click=1 +buttonbox_layout=0 +cursor_flash_time=1000 +dialog_buttons_have_icons=0 +double_click_interval=400 +gui_effects=General, AnimateMenu, AnimateCombo, AnimateTooltip, AnimateToolBox +keyboard_scheme=2 +menus_have_icons=false +show_shortcuts_in_context_menus=true +stylesheets=@Invalid() +toolbutton_style=4 +underline_shortcut=2 +wheel_scroll_lines=4 + +[SettingsWindow] +geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\0\0\0\0\0\0\0\0\x2\xde\0\0\x2\xfa\0\0\0\0\0\0\0\0\0\0\x2\xde\0\0\x2\xfa\0\0\0\0\x2\0\0\0\n\0\0\0\0\0\0\0\0\0\0\0\x2\xde\0\0\x2\xfa) + +[Troubleshooting] +force_raster_widgets=1 +ignored_applications=@Invalid() diff --git a/Configs/.config/qt6ct/colors.conf b/Configs/.config/qt6ct/colors.conf new file mode 100644 index 0000000..f524fcf --- /dev/null +++ b/Configs/.config/qt6ct/colors.conf @@ -0,0 +1,4 @@ +[ColorScheme] +active_colors= #FFFFFF, ##FFFFFF, ##FFFFFF, ##FFFFFF, ##FFFFFF, ##FFFFFF, #FFFFFF, ##FFFFFF, #6565A3, ##FFFFFF, ##FFFFFF, ##FFFFFF, #9A9AE6, #FFFFFF, ##FFFFFF, ##FFFFFF, ##FFFFFF, ##FFFFFF, ##FFFFFF, ##FFFFFF, ##FFFFFF +disabled_colors=#AAAAF0, ##FFFFFF, ##FFFFFF, ##FFFFFF, ##FFFFFF, ##FFFFFF, #FFFFFF, ##FFFFFF, #6565A3, ##FFFFFF, ##FFFFFF, ##FFFFFF, #9A9AE6, #FFFFFF, ##FFFFFF, ##FFFFFF, ##FFFFFF, ##FFFFFF, ##FFFFFF, ##FFFFFF, ##FFFFFF +inactive_colors=#7A7AC2, ##FFFFFF, ##FFFFFF, ##FFFFFF, ##FFFFFF, ##FFFFFF, #FFFFFF, ##FFFFFF, #6565A3, ##FFFFFF, ##FFFFFF, ##FFFFFF, #9A9AE6, #FFFFFF, ##FFFFFF, ##FFFFFF, ##FFFFFF, ##FFFFFF, ##FFFFFF, ##FFFFFF, ##FFFFFF diff --git a/Configs/.config/qt6ct/qt6ct.conf b/Configs/.config/qt6ct/qt6ct.conf new file mode 100644 index 0000000..e9198b8 --- /dev/null +++ b/Configs/.config/qt6ct/qt6ct.conf @@ -0,0 +1,32 @@ +[Appearance] +color_scheme_path=$HOME/.config/qt6ct/colors.conf +custom_palette=true +icon_theme=Tela-circle-dracula +standard_dialogs=default +style=kvantum + +[Fonts] +fixed="CaskaydiaCove Nerd Font Mono,9,-1,5,400,0,0,0,0,0,0,0,0,0,0,1,Regular" +general="Cantarell,10,-1,5,400,0,0,0,0,0,0,0,0,0,0,1,Regular" + +[Interface] +activate_item_on_single_click=1 +buttonbox_layout=0 +cursor_flash_time=1000 +dialog_buttons_have_icons=0 +double_click_interval=400 +gui_effects=General, AnimateMenu, AnimateCombo, AnimateTooltip, AnimateToolBox +keyboard_scheme=2 +menus_have_icons=false +show_shortcuts_in_context_menus=true +stylesheets=@Invalid() +toolbutton_style=4 +underline_shortcut=2 +wheel_scroll_lines=4 + +[SettingsWindow] +geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\0\0\0\0\0\0\0\0\x2\xde\0\0\x2\xfa\0\0\0\0\0\0\0\0\0\0\x2\xde\0\0\x2\xfa\0\0\0\0\x2\0\0\0\n\0\0\0\0\0\0\0\0\0\0\0\x2\xde\0\0\x2\xfa) + +[Troubleshooting] +force_raster_widgets=1 +ignored_applications=@Invalid() diff --git a/Configs/.config/rofi/assets/notification.png b/Configs/.config/rofi/assets/notification.png new file mode 100644 index 0000000..a47c9ef Binary files /dev/null and b/Configs/.config/rofi/assets/notification.png differ diff --git a/Configs/.config/rofi/assets/steamdeck_holographic.png b/Configs/.config/rofi/assets/steamdeck_holographic.png new file mode 100644 index 0000000..de5c489 Binary files /dev/null and b/Configs/.config/rofi/assets/steamdeck_holographic.png differ diff --git a/Configs/.config/rofi/assets/style_1.png b/Configs/.config/rofi/assets/style_1.png new file mode 100644 index 0000000..400b82b Binary files /dev/null and b/Configs/.config/rofi/assets/style_1.png differ diff --git a/Configs/.config/rofi/assets/style_10.png b/Configs/.config/rofi/assets/style_10.png new file mode 100644 index 0000000..6a4a89f Binary files /dev/null and b/Configs/.config/rofi/assets/style_10.png differ diff --git a/Configs/.config/rofi/assets/style_11.png b/Configs/.config/rofi/assets/style_11.png new file mode 100644 index 0000000..de12694 Binary files /dev/null and b/Configs/.config/rofi/assets/style_11.png differ diff --git a/Configs/.config/rofi/assets/style_12.png b/Configs/.config/rofi/assets/style_12.png new file mode 100644 index 0000000..2298bcf Binary files /dev/null and b/Configs/.config/rofi/assets/style_12.png differ diff --git a/Configs/.config/rofi/assets/style_2.png b/Configs/.config/rofi/assets/style_2.png new file mode 100644 index 0000000..0686312 Binary files /dev/null and b/Configs/.config/rofi/assets/style_2.png differ diff --git a/Configs/.config/rofi/assets/style_3.png b/Configs/.config/rofi/assets/style_3.png new file mode 100644 index 0000000..61fedd6 Binary files /dev/null and b/Configs/.config/rofi/assets/style_3.png differ diff --git a/Configs/.config/rofi/assets/style_4.png b/Configs/.config/rofi/assets/style_4.png new file mode 100644 index 0000000..25d2a45 Binary files /dev/null and b/Configs/.config/rofi/assets/style_4.png differ diff --git a/Configs/.config/rofi/assets/style_5.png b/Configs/.config/rofi/assets/style_5.png new file mode 100644 index 0000000..77fd487 Binary files /dev/null and b/Configs/.config/rofi/assets/style_5.png differ diff --git a/Configs/.config/rofi/assets/style_6.png b/Configs/.config/rofi/assets/style_6.png new file mode 100644 index 0000000..a120367 Binary files /dev/null and b/Configs/.config/rofi/assets/style_6.png differ diff --git a/Configs/.config/rofi/assets/style_7.png b/Configs/.config/rofi/assets/style_7.png new file mode 100644 index 0000000..c96086e Binary files /dev/null and b/Configs/.config/rofi/assets/style_7.png differ diff --git a/Configs/.config/rofi/assets/style_8.png b/Configs/.config/rofi/assets/style_8.png new file mode 100644 index 0000000..e62a0e1 Binary files /dev/null and b/Configs/.config/rofi/assets/style_8.png differ diff --git a/Configs/.config/rofi/assets/style_9.png b/Configs/.config/rofi/assets/style_9.png new file mode 100644 index 0000000..b6d7c86 Binary files /dev/null and b/Configs/.config/rofi/assets/style_9.png differ diff --git a/Configs/.config/rofi/assets/theme_style_1.png b/Configs/.config/rofi/assets/theme_style_1.png new file mode 100644 index 0000000..7e3c61f Binary files /dev/null and b/Configs/.config/rofi/assets/theme_style_1.png differ diff --git a/Configs/.config/rofi/assets/theme_style_2.png b/Configs/.config/rofi/assets/theme_style_2.png new file mode 100644 index 0000000..0f8b532 Binary files /dev/null and b/Configs/.config/rofi/assets/theme_style_2.png differ diff --git a/Configs/.config/rofi/assets/wallbash_mode.png b/Configs/.config/rofi/assets/wallbash_mode.png new file mode 100644 index 0000000..96678e4 Binary files /dev/null and b/Configs/.config/rofi/assets/wallbash_mode.png differ diff --git a/Configs/.config/rofi/clipboard.rasi b/Configs/.config/rofi/clipboard.rasi new file mode 100644 index 0000000..09a11ea --- /dev/null +++ b/Configs/.config/rofi/clipboard.rasi @@ -0,0 +1,113 @@ +// Config // +configuration { + modi: "drun"; + show-icons: false; +} + +@theme "~/.config/rofi/theme.rasi" + + +// Main // +window { + width: 23em; + height: 30em; + transparency: "real"; + fullscreen: false; + enabled: true; + cursor: "default"; + spacing: 0em; + padding: 0em; + border-color: @main-br; + background-color: @main-bg; +} +mainbox { + enabled: true; + spacing: 0em; + padding: 0.5em; + orientation: vertical; + children: [ "wallbox" , "listbox" ]; + background-color: transparent; +} +wallbox { + spacing: 0em; + padding: 0em; + expand: false; + orientation: horizontal; + background-color: transparent; + background-image: url("~/.cache/hyde/wall.blur", width); + children: [ "wallframe" , "inputbar" ]; +} +wallframe { + width: 5em; + spacing: 0em; + padding: 0em; + expand: false; + background-color: @main-bg; + background-image: url("~/.cache/hyde/wall.quad", width); +} + + +// Inputs // +inputbar { + enabled: true; + padding: 0em; + children: [ "entry" ]; + background-color: @main-bg; + expand: true; +} +entry { + enabled: true; + padding: 1.8em; + text-color: @main-fg; + background-color: transparent; +} + + +// Lists // +listbox { + spacing: 0em; + padding: 0em; + orientation: vertical; + children: [ "dummy" , "listview" , "dummy" ]; + background-color: transparent; +} +listview { + enabled: true; + padding: 0.5em; + columns: 1; + lines: 11; + cycle: true; + fixed-height: true; + fixed-columns: false; + expand: false; + cursor: "default"; + background-color: transparent; + text-color: @main-fg; +} +dummy { + spacing: 0em; + padding: 0em; + background-color: transparent; +} + + +// Elements // +element { + enabled: true; + padding: 0.5em; + cursor: pointer; + background-color: transparent; + text-color: @main-fg; +} +element selected.normal { + background-color: @select-bg; + text-color: @select-fg; +} +element-text { + vertical-align: 0.0; + horizontal-align: 0.0; + cursor: inherit; + background-color: transparent; + text-color: inherit; +} + diff --git a/Configs/.config/rofi/notification.rasi b/Configs/.config/rofi/notification.rasi new file mode 100644 index 0000000..f7da2a1 --- /dev/null +++ b/Configs/.config/rofi/notification.rasi @@ -0,0 +1,95 @@ +// Config // +configuration { + modi: "drun"; + show-icons: true; + drun-display-format: "{name}"; + font: "JetBrainsMono Nerd Font 9"; +} + +@theme "~/.config/rofi/theme.rasi" + + +// Main // +window { + enabled: true; + fullscreen: false; + width: 40em; + height: 32.8em; + transparency: "real"; + cursor: "default"; + spacing: 0em; + padding: 0em; + border: 0em; + border-radius: 0em; + border-color: transparent; + background-color: transparent; + background-image: url("~/.config/rofi/assets/notification.png", width); +} +mainbox { + enabled: true; + orientation: vertical; + children: [ "dummy" , "frame" ]; + background-color: transparent; +} +dummy { + padding: 6em; + expand: false; + background-color: transparent; +} +frame { + enabled: true; + orientation: vertical; + children: [ "dummy2" , "listview" , "dummy2" ]; + background-color: transparent; +} + +// Lists // +listview { + enabled: true; + spacing: 0em; + padding: 0em; + columns: 1; + lines: 5; + cycle: true; + dynamic: true; + scrollbar: false; + layout: vertical; + reverse: false; + expand: false; + fixed-height: true; + fixed-columns: true; + cursor: "default"; + background-color: transparent; +} +dummy2 { + spacing: 0em; + padding: 0em; + background-color: transparent; +} + + +// Elements // +element { + enabled: true; + spacing: 1em; + padding: 1em; + cursor: pointer; + background-color: transparent; + text-color: @main-fg; + border-radius: 0em; +} +element selected.normal { + background-color: @select-bg; + text-color: @select-fg; +} +element-icon { + enabled: false; +} +element-text { + vertical-align: 0.5; + horizontal-align: 0.5; + cursor: inherit; + background-color: transparent; + text-color: inherit; +} + diff --git a/Configs/.config/rofi/quickapps.rasi b/Configs/.config/rofi/quickapps.rasi new file mode 100644 index 0000000..75941be --- /dev/null +++ b/Configs/.config/rofi/quickapps.rasi @@ -0,0 +1,74 @@ +// Config // +configuration { + modi: "drun"; + show-icons: true; +} + +@theme "~/.config/rofi/theme.rasi" + + +// Main // +window { + transparency: "real"; + fullscreen: false; + enabled: true; + cursor: "default"; + spacing: 0em; + padding: 0em; + background-color: @main-bg; +} +mainbox { + enabled: true; + spacing: 0em; + padding: 0em; + orientation: horizontal; + children: [ "listbox" ]; + background-color: transparent; +} + + +// Lists // +listbox { + padding: 0em; + spacing: 0em; + orientation: horizontal; + children: [ "listview" ]; + background-color: transparent; +} +listview { + padding: 2px; + spacing: 0em; + enabled: true; + columns: 1; + cycle: true; + dynamic: true; + scrollbar: false; + flow: horizontal; + reverse: false; + fixed-height: false; + fixed-columns: false; + cursor: "default"; + background-color: transparent; +} + + +// Elements // +element { + orientation: vertical; + enabled: true; + spacing: 0em; + padding: 0em; + cursor: pointer; + background-color: transparent; +} +element selected.normal { + background-color: @main-fg; +} +element-icon { + cursor: inherit; + background-color: transparent; +} +element-text { + enabled: false; +} + diff --git a/Configs/.config/rofi/selector.rasi b/Configs/.config/rofi/selector.rasi new file mode 100644 index 0000000..edfda45 --- /dev/null +++ b/Configs/.config/rofi/selector.rasi @@ -0,0 +1,86 @@ +// Config // +configuration { + modi: "drun"; + show-icons: true; + drun-display-format: "{name}"; + font: "JetBrainsMono Nerd Font 10"; +} + +@theme "~/.config/rofi/theme.rasi" + + +// Main // +window { + enabled: true; + fullscreen: false; + transparency: "real"; + cursor: "default"; + spacing: 0em; + padding: 0em; + border: 0em; + border-radius: 0em; + border-color: transparent; + background-color: @main-bg; +} +mainbox { + enabled: true; + orientation: horizontal; + children: [ "dummy", "frame", "dummy" ]; + background-color: transparent; +} +frame { + children: [ "listview" ]; + background-color: transparent; +} + + +// Lists // +listview { + enabled: true; + spacing: 4em; + padding: 4em; + columns: 10; + lines: 1; + dynamic: false; + fixed-height: false; + fixed-columns: true; + reverse: true; + cursor: "default"; + background-color: transparent; + text-color: @main-fg; +} +dummy { + width: 2em; + expand: false; + background-color: transparent; +} + + +// Elements // +element { + enabled: true; + spacing: 0em; + padding: 0em; + cursor: pointer; + background-color: transparent; + text-color: @main-fg; +} +element selected.normal { + background-color: @select-bg; + text-color: @select-fg; +} +element-icon { + cursor: inherit; + size: 10em; + background-color: transparent; + text-color: inherit; + expand: false; +} +element-text { + vertical-align: 0.5; + horizontal-align: 0.5; + cursor: inherit; + background-color: transparent; + text-color: inherit; +} + diff --git a/Configs/.config/rofi/steam/gamelauncher_1.rasi b/Configs/.config/rofi/steam/gamelauncher_1.rasi new file mode 100644 index 0000000..48d76bd --- /dev/null +++ b/Configs/.config/rofi/steam/gamelauncher_1.rasi @@ -0,0 +1,89 @@ +// Config // +configuration { + modi: "drun"; + show-icons: true; + drun-display-format: "{name}"; + font: "JetBrainsMono Nerd Font 8"; +} + +@theme "~/.config/rofi/theme.rasi" + + +// Main // +window { + enabled: true; + fullscreen: false; + width: 20%; + height: 100%; + location: west; + x-offset: 10%; + transparency: "real"; + cursor: "default"; + spacing: 0px; + padding: 0px; + border: 0px; + border-radius: 0px; + border-color: transparent; + background-color: transparent; +} +mainbox { + enabled: true; + children: [ "listview" ]; + background-color: @main-bg; +} + + +// Lists // +listview { + enabled: true; + columns: 1; + spacing: 17px; + padding: 10px 20px 10px 20px; + cycle: true; + dynamic: false; + scrollbar: false; + layout: vertical; + reverse: true; + fixed-height: true; + fixed-columns: true; + cursor: "default"; + background-color: transparent; + text-color: @main-fg; +} + + +// Elements // +element { + enabled: true; + orientation: horizontal; + spacing: 0px; + padding: 0px; + border-radius: 0px; + cursor: pointer; + background-color: transparent; + text-color: @main-fg; +} +element selected.normal { + background-color: @select-bg; + text-color: @select-fg; +} +element-icon { + size: 15%; + spacing: 0px; + padding: 0px; + cursor: inherit; + border-radius: 35px; + background-color: transparent; + text-color: inherit; +} +element-text { + enabled: true; + vertical-align: 0.5; + horizontal-align: 0; + spacing: 0px; + padding: 0px; + cursor: inherit; + background-color: transparent; + text-color: inherit; +} + diff --git a/Configs/.config/rofi/steam/gamelauncher_2.rasi b/Configs/.config/rofi/steam/gamelauncher_2.rasi new file mode 100644 index 0000000..acac131 --- /dev/null +++ b/Configs/.config/rofi/steam/gamelauncher_2.rasi @@ -0,0 +1,87 @@ +// Config // +configuration { + modi: "drun"; + show-icons: true; + drun-display-format: "{name}"; + font: "JetBrainsMono Nerd Font 8"; +} + +@theme "~/.config/rofi/theme.rasi" + + +// Main // +window { + enabled: true; + fullscreen: false; + width: 100%; + height: 800px; + transparency: "real"; + cursor: "default"; + spacing: 0px; + padding: 0px; + border: 0px; + border-radius: 0px; + border-color: transparent; + background-color: transparent; +} +mainbox { + enabled: true; + children: [ "listview" ]; + background-color: @main-bg; +} + + +// Lists // +listview { + enabled: true; + columns: 9; + lines: 1; + spacing: 30px; + padding: 30px 200px 30px 200px; + cycle: true; + dynamic: false; + scrollbar: false; + layout: vertical; + reverse: true; + fixed-height: true; + fixed-columns: true; + cursor: "default"; + background-color: transparent; + text-color: @main-fg; +} + + +// Elements // +element { + enabled: true; + orientation: vertical; + spacing: 0px; + padding: 5px; + border-radius: 0px; + cursor: pointer; + background-color: transparent; + text-color: @main-fg; +} +element selected.normal { + background-color: @select-bg; + text-color: @select-fg; +} +element-icon { + size: 29%; + spacing: 0px; + padding: 0px; + cursor: inherit; + border-radius: 35px; + background-color: transparent; + text-color: inherit; +} +element-text { + vertical-align: 0.5; + horizontal-align: 0.5; + spacing: 0px; + padding: 10px; + cursor: inherit; + background-color: transparent; + text-color: inherit; +} + diff --git a/Configs/.config/rofi/steam/gamelauncher_3.rasi b/Configs/.config/rofi/steam/gamelauncher_3.rasi new file mode 100644 index 0000000..9ab5659 --- /dev/null +++ b/Configs/.config/rofi/steam/gamelauncher_3.rasi @@ -0,0 +1,88 @@ +// Config // +configuration { + modi: "drun"; + show-icons: true; + drun-display-format: "{name}"; + font: "JetBrainsMono Nerd Font 8"; +} + +@theme "~/.config/rofi/theme.rasi" + + +// Main // +window { + enabled: true; + fullscreen: false; + width: 28%; + height: 100%; + location: west; + transparency: "real"; + cursor: "default"; + spacing: 0px; + padding: 0px; + border: 0px; + border-radius: 0px; + border-color: transparent; + background-color: transparent; +} +mainbox { + enabled: true; + children: [ "listview" ]; + background-color: @main-bg; +} + + +// Lists // +listview { + enabled: true; + columns: 4; + spacing: 20px; + padding: 10px 50px 10px 50px; + cycle: true; + dynamic: false; + scrollbar: false; + layout: vertical; + reverse: true; + fixed-height: true; + fixed-columns: true; + cursor: "default"; + background-color: transparent; + text-color: @main-fg; +} + + +// Elements // +element { + enabled: true; + orientation: vertical; + spacing: 0px; + padding: 3px; + border-radius: 0px; + cursor: pointer; + background-color: transparent; + text-color: @main-fg; +} +element selected.normal { + background-color: @select-bg; + text-color: @select-fg; +} +element-icon { + size: 20%; + spacing: 0px; + padding: 0px; + cursor: inherit; + border-radius: 35px; + background-color: transparent; + text-color: inherit; +} +element-text { + enabled: true; + vertical-align: 0.5; + horizontal-align: 0.5; + spacing: 0px; + padding: 5px; + cursor: inherit; + background-color: transparent; + text-color: inherit; +} + diff --git a/Configs/.config/rofi/steam/gamelauncher_4.rasi b/Configs/.config/rofi/steam/gamelauncher_4.rasi new file mode 100644 index 0000000..b5e92c8 --- /dev/null +++ b/Configs/.config/rofi/steam/gamelauncher_4.rasi @@ -0,0 +1,86 @@ +// Config // +configuration { + modi: "drun"; + show-icons: true; + drun-display-format: "{name}"; + font: "JetBrainsMono Nerd Font 8"; +} + +@theme "~/.config/rofi/theme.rasi" + + +// Main // +window { + enabled: true; + fullscreen: false; + width: 100%; + transparency: "real"; + cursor: "default"; + spacing: 0px; + padding: 0px; + border: 0px; + border-radius: 0px; + border-color: transparent; + background-color: transparent; +} +mainbox { + enabled: true; + children: [ "listview" ]; + background-color: @main-bg; +} + + +// Lists // +listview { + enabled: true; + columns: 10; + lines: 1; + spacing: 30px; + padding: 40px 100px 40px 100px; + cycle: true; + dynamic: false; + scrollbar: false; + layout: vertical; + reverse: true; + fixed-height: true; + fixed-columns: true; + cursor: "default"; + background-color: transparent; + text-color: @main-fg; +} + + +// Elements // +element { + enabled: true; + orientation: vertical; + spacing: 0px; + padding: 5px; + border-radius: 0px; + cursor: pointer; + background-color: transparent; + text-color: @main-fg; +} +element selected.normal { + background-color: @select-bg; + text-color: @select-fg; +} +element-icon { + size: 30%; + spacing: 0px; + padding: 0px; + cursor: inherit; + border-radius: 35px; + background-color: transparent; + text-color: inherit; +} +element-text { + vertical-align: 0.5; + horizontal-align: 0.5; + spacing: 0px; + padding: 10px; + cursor: inherit; + background-color: transparent; + text-color: inherit; +} + diff --git a/Configs/.config/rofi/steam/gamelauncher_5.rasi b/Configs/.config/rofi/steam/gamelauncher_5.rasi new file mode 100644 index 0000000..ffb0279 --- /dev/null +++ b/Configs/.config/rofi/steam/gamelauncher_5.rasi @@ -0,0 +1,92 @@ +// Config // +configuration { + modi: "drun"; + show-icons: true; + drun-display-format: "{name}"; + font: "JetBrainsMono Nerd Font 8"; +} + +@theme "~/.config/rofi/theme.rasi" + + +// Main // +window { + enabled: true; + fullscreen: false; + width: 2155px; + height: 850px; + transparency: "real"; + cursor: "default"; + spacing: 0px; + padding: 0px; + border: 0px; + border-radius: 0px; + border-color: transparent; + background-image: url("~/.config/rofi/assets/steamdeck_holographic.png", width); + background-color: transparent; +} +mainbox { + enabled: true; + children: [ "listview" ]; + background-color: transparent; + orientation: horizontal; + spacing: 0px; + padding: 42px 442px 50px 450px; +} + + +// Lists // +listview { + enabled: true; + columns: 5; + rows: 2; + flow: horizontal; + spacing: 25px; + padding: 20px 50px 20px 50px; + cycle: true; + dynamic: true; + scrollbar: false; + reverse: true; + fixed-height: false; + fixed-columns: false; + cursor: "default"; + background-color: @main-bg; + text-color: @main-fg; + border-radius: 8px; +} + + +// Elements // +element { + enabled: true; + orientation: vertical; + spacing: 0px; + padding: 5px; + border-radius: 0px; + cursor: pointer; + background-color: transparent; + text-color: @main-fg; +} +element selected.normal { + background-color: @select-bg; + text-color: @select-fg; +} +element-icon { + size: 300px; + spacing: 0px; + padding: 0px; + cursor: inherit; + border-radius: 0px; + background-color: transparent; + text-color: inherit; +} +element-text { + vertical-align: 0.5; + horizontal-align: 0.5; + spacing: 0px; + padding: 10px; + cursor: inherit; + background-color: transparent; + text-color: inherit; +} + diff --git a/Configs/.config/rofi/styles/style_1.rasi b/Configs/.config/rofi/styles/style_1.rasi new file mode 100644 index 0000000..81e22f0 --- /dev/null +++ b/Configs/.config/rofi/styles/style_1.rasi @@ -0,0 +1,154 @@ +// Config // +configuration { + modi: "drun,filebrowser,window,run"; + show-icons: true; + display-drun: " "; + display-run: " "; + display-filebrowser: " "; + display-window: " "; + drun-display-format: "{name}"; + window-format: "{w}{t}"; + font: "JetBrainsMono Nerd Font 10"; + icon-theme: "Tela-circle-dracula"; +} + +@theme "~/.config/rofi/theme.rasi" + + +// Main // +window { + height: 33em; + width: 63em; + transparency: "real"; + fullscreen: false; + enabled: true; + cursor: "default"; + spacing: 0em; + padding: 0em; + border-color: @main-br; + background-color: @main-bg; +} +mainbox { + enabled: true; + spacing: 0em; + padding: 0em; + orientation: horizontal; + children: [ "dummywall" , "listbox" ]; + background-color: transparent; +} +dummywall { + spacing: 0em; + padding: 0em; + width: 37em; + expand: false; + orientation: horizontal; + children: [ "mode-switcher" , "inputbar" ]; + background-color: transparent; + background-image: url("~/.cache/hyde/wall.thmb", height); +} + + +// Modes // +mode-switcher{ + orientation: vertical; + enabled: true; + width: 3.8em; + padding: 9.2em 0.5em 9.2em 0.5em; + spacing: 1.2em; + background-color: transparent; + background-image: url("~/.cache/hyde/wall.blur", height); +} +button { + cursor: pointer; + border-radius: 2em; + background-color: @main-bg; + text-color: @main-fg; +} +button selected { + background-color: @main-fg; + text-color: @main-bg; +} + + +// Inputs // +inputbar { + enabled: true; + children: [ "entry" ]; + background-color: transparent; +} +entry { + enabled: false; +} + + +// Lists // +listbox { + spacing: 0em; + padding: 2em; + children: [ "dummy" , "listview" , "dummy" ]; + background-color: transparent; +} +listview { + enabled: true; + spacing: 0em; + padding: 0em; + columns: 1; + lines: 8; + cycle: true; + dynamic: true; + scrollbar: false; + layout: vertical; + reverse: false; + expand: false; + fixed-height: true; + fixed-columns: true; + cursor: "default"; + background-color: transparent; + text-color: @main-fg; +} +dummy { + background-color: transparent; +} + + +// Elements // +element { + enabled: true; + spacing: 0.8em; + padding: 0.4em 0.4em 0.4em 1.5em; + cursor: pointer; + background-color: transparent; + text-color: @main-fg; +} +element selected.normal { + background-color: @select-bg; + text-color: @select-fg; +} +element-icon { + size: 2.8em; + cursor: inherit; + background-color: transparent; + text-color: inherit; +} +element-text { + vertical-align: 0.5; + horizontal-align: 0.0; + cursor: inherit; + background-color: transparent; + text-color: inherit; +} + +// Error message // +error-message { + text-color: @main-fg; + background-color: @main-bg; + text-transform: capitalize; + children: [ "textbox" ]; +} + +textbox { + text-color: inherit; + background-color: inherit; + vertical-align: 0.5; + horizontal-align: 0.5; +} diff --git a/Configs/.config/rofi/styles/style_10.rasi b/Configs/.config/rofi/styles/style_10.rasi new file mode 100644 index 0000000..13c8d78 --- /dev/null +++ b/Configs/.config/rofi/styles/style_10.rasi @@ -0,0 +1,135 @@ +// Config // +configuration { + modi: "drun,filebrowser,window,run"; + show-icons: true; + display-drun: " "; + display-run: " "; + display-filebrowser: " "; + display-window: " "; + drun-display-format: "{name}"; + window-format: "{w}{t}"; + font: "JetBrainsMono Nerd Font 10"; + icon-theme: "Tela-circle-dracula"; +} + +@theme "~/.config/rofi/theme.rasi" + + +// Main // +window { + height: 40em; + width: 25em; + transparency: "real"; + fullscreen: false; + enabled: true; + cursor: "default"; + spacing: 0em; + padding: 0em; + border-color: @main-br; + background-color: @main-bg; +} +mainbox { + enabled: true; + spacing: 0em; + padding: 1em; + orientation: vertical; + children: [ "inputbar" , "listbox" ]; + background-color: transparent; +} + + +// Inputs // +inputbar { + enabled: true; + spacing: 0em; + padding: 4em; + children: [ "entry" ]; + background-color: @main-bg; + background-image: url("~/.cache/hyde/wall.thmb", width); + border-radius: 1em 1em 0em 0em; +} +entry { + enabled: false; +} + + +// Lists // +listbox { + spacing: 0em; + padding: 0em; + children: [ "dummyt" , "listview" , "dummyb" ]; + background-color: @main-bg; + border-radius: 0em 0em 1em 1em; +} +listview { + enabled: true; + spacing: 0.4em; + padding: 1em; + columns: 1; + lines: 10; + cycle: true; + dynamic: true; + scrollbar: false; + layout: vertical; + reverse: false; + expand: false; + fixed-height: true; + fixed-columns: true; + cursor: "default"; + background-color: @main-bg; + text-color: @main-fg; +} +dummyt { + spacing: 0em; + padding: 0em; + background-color: @main-bg; +} +dummyb { + spacing: 0em; + padding: 0em; + background-color: @main-bg; + border-radius: 0em 0em 1em 1em; +} + + +// Elements // +element { + enabled: true; + spacing: 1em; + padding: 0.2em 0.2em 0.2em 1.5em; + cursor: pointer; + background-color: transparent; + text-color: @main-fg; +} +element selected.normal { + background-color: @select-bg; + text-color: @select-fg; +} +element-icon { + size: 2em; + cursor: inherit; + background-color: transparent; + text-color: inherit; +} +element-text { + vertical-align: 0.5; + horizontal-align: 0.0; + cursor: inherit; + background-color: transparent; + text-color: inherit; +} + +// Error message // +error-message { + text-color: @main-fg; + background-color: @main-bg; + text-transform: capitalize; + children: [ "textbox" ]; +} + +textbox { + text-color: inherit; + background-color: inherit; + vertical-align: 0.5; + horizontal-align: 0.5; +} diff --git a/Configs/.config/rofi/styles/style_11.rasi b/Configs/.config/rofi/styles/style_11.rasi new file mode 100644 index 0000000..364221c --- /dev/null +++ b/Configs/.config/rofi/styles/style_11.rasi @@ -0,0 +1,129 @@ +// Config // +configuration { + modi: "drun,filebrowser,window,run"; + show-icons: true; + display-drun: " "; + display-run: " "; + display-filebrowser: " "; + display-window: " "; + drun-display-format: "{name}"; + window-format: "{w}{t}"; + font: "JetBrainsMono Nerd Font 10"; + icon-theme: "Tela-circle-dracula"; +} + +@theme "~/.config/rofi/theme.rasi" + + +// Main // +window { + height: 30em; + width: 58em; + transparency: "real"; + fullscreen: false; + enabled: true; + cursor: "default"; + spacing: 0em; + padding: 0em; + border-color: @main-br; + background-color: transparent; +} +mainbox { + enabled: true; + spacing: 0em; + padding: 0.8em; + orientation: horizontal; + children: [ "inputbar" , "listbox" ]; + background-color: #00000003; +} + + +// Inputs // +inputbar { + enabled: true; + width: 28.5em; + spacing: 0em; + padding: 0em; + children: [ "entry" ]; + expand: false; + background-color: @main-bg; + background-image: url("~/.cache/hyde/wall.quad", width); + border-radius: 1em 0em 0em 1em; +} +entry { + enabled: false; +} + + +// Lists // +listbox { + spacing: 0em; + padding: 0em; + children: [ "dummy" , "listview" , "dummy" ]; + background-color: @main-bg; + border-radius: 0em 1em 1em 0em; +} +listview { + enabled: true; + spacing: 0em; + padding: 1em 2em 1em 2em; + columns: 1; + lines: 8; + cycle: true; + dynamic: true; + scrollbar: false; + layout: vertical; + reverse: false; + expand: false; + fixed-height: true; + fixed-columns: true; + cursor: "default"; + background-color: transparent; + text-color: @main-fg; +} +dummy { + background-color: transparent; +} + + +// Elements // +element { + enabled: true; + spacing: 1em; + padding: 0.5em 0.5em 0.5em 1.5em; + cursor: pointer; + background-color: transparent; + text-color: @main-fg; +} +element selected.normal { + background-color: @select-bg; + text-color: @select-fg; +} +element-icon { + size: 2.2em; + cursor: inherit; + background-color: transparent; + text-color: inherit; +} +element-text { + vertical-align: 0.5; + horizontal-align: 0.0; + cursor: inherit; + background-color: transparent; + text-color: inherit; +} + +// Error message // +error-message { + text-color: @main-fg; + background-color: @main-bg; + text-transform: capitalize; + children: [ "textbox" ]; +} + +textbox { + text-color: inherit; + background-color: inherit; + vertical-align: 0.5; + horizontal-align: 0.5; +} diff --git a/Configs/.config/rofi/styles/style_12.rasi b/Configs/.config/rofi/styles/style_12.rasi new file mode 100644 index 0000000..0f2f990 --- /dev/null +++ b/Configs/.config/rofi/styles/style_12.rasi @@ -0,0 +1,130 @@ +// Config // +configuration { + modi: "drun,filebrowser,window,run"; + show-icons: true; + display-drun: " "; + display-run: " "; + display-filebrowser: " "; + display-window: " "; + drun-display-format: "{name}"; + window-format: "{w}{t}"; + font: "JetBrainsMono Nerd Font 10"; + icon-theme: "Tela-circle-dracula"; +} + +@theme "~/.config/rofi/theme.rasi" + + +// Main // +window { + height: 30em; + width: 60em; + transparency: "real"; + fullscreen: false; + enabled: true; + cursor: "default"; + spacing: 0em; + padding: 0em; + border-color: transparent; + background-color: transparent; +} +mainbox { + enabled: true; + spacing: 0em; + padding: 0em; + orientation: horizontal; + children: [ "listbox" , "inputbar" ]; + background-color: transparent; +} + + +// Inputs // +inputbar { + enabled: true; + width: 30em; + spacing: 0em; + padding: 0em; + children: [ "entry" ]; + expand: false; + background-color: transparent; + background-image: url("~/.cache/hyde/wall.quad", width); +} +entry { + enabled: false; +} + + +// Lists // +listbox { + spacing: 0em; + padding: 0em; + children: [ "dummy" , "listview" , "dummy" ]; + background-color: @main-bg; + expand: false; + width: 27em; +} +listview { + enabled: true; + spacing: 0em; + padding: 1em 2em 1em 2em; + columns: 1; + lines: 8; + cycle: true; + dynamic: true; + scrollbar: false; + layout: vertical; + reverse: false; + expand: false; + fixed-height: true; + fixed-columns: true; + cursor: "default"; + background-color: transparent; + text-color: @main-fg; +} +dummy { + background-color: transparent; + expand: true; +} + + +// Elements // +element { + enabled: true; + spacing: 1em; + padding: 0.5em; + cursor: pointer; + background-color: transparent; + text-color: @main-fg; +} +element selected.normal { + background-color: @select-bg; + text-color: @select-fg; +} +element-icon { + size: 2.2em; + cursor: inherit; + background-color: transparent; + text-color: inherit; +} +element-text { + vertical-align: 0.5; + horizontal-align: 0.0; + cursor: inherit; + background-color: transparent; + text-color: inherit; +} + +// Error message // +error-message { + text-color: @main-fg; + background-color: @main-bg; + text-transform: capitalize; + children: [ "textbox" ]; +} + +textbox { + text-color: inherit; + background-color: inherit; + vertical-align: 0.5; + horizontal-align: 0.5; +} diff --git a/Configs/.config/rofi/styles/style_2.rasi b/Configs/.config/rofi/styles/style_2.rasi new file mode 100644 index 0000000..5521482 --- /dev/null +++ b/Configs/.config/rofi/styles/style_2.rasi @@ -0,0 +1,149 @@ +// Config // +configuration { + modi: "drun,filebrowser,window,run"; + show-icons: true; + display-drun: " "; + display-run: " "; + display-filebrowser: " "; + display-window: " "; + drun-display-format: "{name}"; + window-format: "{w}{t}"; + font: "JetBrainsMono Nerd Font 10"; + icon-theme: "Tela-circle-dracula"; +} + +@theme "~/.config/rofi/theme.rasi" + + +// Main // +window { + height: 35em; + width: 56em; + transparency: "real"; + fullscreen: false; + enabled: true; + cursor: "default"; + spacing: 0em; + padding: 0em; + border-color: @main-br; + background-color: @main-bg; +} +mainbox { + enabled: true; + spacing: 0em; + padding: 0em; + orientation: vertical; + children: [ "inputbar" , "listbox" ]; + background-color: transparent; + background-image: url("~/.cache/hyde/wall.blur", height); +} + + +// Inputs // +inputbar { + enabled: true; + spacing: 0em; + padding: 5em; + children: [ "entry" ]; + background-color: transparent; + background-image: url("~/.cache/hyde/wall.thmb", width); +} +entry { + border-radius: 2em; + enabled: true; + spacing: 1em; + padding: 1em; + text-color: @main-fg; + background-color: @main-bg; +} + + +// Lists // +listbox { + padding: 0em; + spacing: 0em; + orientation: horizontal; + children: [ "listview" , "mode-switcher" ]; + background-color: @main-bg; +} +listview { + padding: 1.5em; + spacing: 0.5em; + enabled: true; + columns: 2; + lines: 3; + cycle: true; + dynamic: true; + scrollbar: false; + layout: vertical; + reverse: false; + fixed-height: true; + fixed-columns: true; + cursor: "default"; + background-color: transparent; + text-color: @main-fg; +} + + +// Modes // +mode-switcher { + orientation: vertical; + width: 6.6em; + enabled: true; + padding: 1.5em; + spacing: 1.5em; + background-color: transparent; +} +button { + cursor: pointer; + border-radius: 2em; + background-color: @main-bg; + text-color: @main-fg; +} +button selected { + background-color: @main-fg; + text-color: @main-bg; +} + + +// Elements // +element { + enabled: true; + spacing: 0em; + padding: 0.5em; + cursor: pointer; + background-color: transparent; + text-color: @main-fg; +} +element selected.normal { + background-color: @select-bg; + text-color: @select-fg; +} +element-icon { + size: 3em; + cursor: inherit; + background-color: transparent; + text-color: inherit; +} +element-text { + vertical-align: 0.5; + horizontal-align: 0.0; + cursor: inherit; + background-color: transparent; + text-color: inherit; +} + +// Error message // +error-message { + text-color: @main-fg; + background-color: @main-bg; + text-transform: capitalize; + children: [ "textbox" ]; +} + +textbox { + text-color: inherit; + background-color: inherit; + vertical-align: 0.5; + horizontal-align: 0.5; +} diff --git a/Configs/.config/rofi/styles/style_3.rasi b/Configs/.config/rofi/styles/style_3.rasi new file mode 100644 index 0000000..38a08d7 --- /dev/null +++ b/Configs/.config/rofi/styles/style_3.rasi @@ -0,0 +1,149 @@ +// Config // +configuration { + modi: "drun,filebrowser,window,run"; + show-icons: true; + display-drun: " "; + display-run: " "; + display-filebrowser: " "; + display-window: " "; + drun-display-format: "{name}"; + window-format: "{w}{t}"; + font: "JetBrainsMono Nerd Font 10"; + icon-theme: "Tela-circle-dracula"; +} + +@theme "~/.config/rofi/theme.rasi" + + +// Main // +window { + height: 30em; + width: 37em; + transparency: "real"; + fullscreen: false; + enabled: true; + cursor: "default"; + spacing: 0em; + padding: 0em; + border-color: @main-br; + background-color: @main-bg; +} +mainbox { + enabled: true; + spacing: 0em; + padding: 0em; + orientation: vertical; + children: [ "inputbar" , "dummybox" ]; + background-color: transparent; + background-image: url("~/.cache/hyde/wall.blur", height); +} +dummybox { + padding: 0.5em; + spacing: 0em; + orientation: horizontal; + children: [ "mode-switcher" , "listbox" ]; + background-color: transparent; + background-image: transparent; +} + + +// Inputs // +inputbar { + enabled: false; +} + + +// Lists // +listbox { + padding: 0em; + spacing: 0em; + children: [ "dummy" , "listview" , "dummy" ]; + background-color: transparent; + background-image: transparent; +} +listview { + padding: 1em; + spacing: 0em; + enabled: true; + columns: 1; + lines: 7; + cycle: true; + dynamic: true; + scrollbar: false; + layout: vertical; + reverse: false; + expand: false; + fixed-height: true; + fixed-columns: true; + cursor: "default"; + background-color: @main-bg; + text-color: @main-fg; + border-radius: 1.5em; +} +dummy { + background-color: transparent; +} + + +// Modes // +mode-switcher { + orientation: vertical; + width: 6.8em; + enabled: true; + padding: 3.2em 1em 3.2em 1em; + spacing: 1em; + background-color: transparent; +} +button { + cursor: pointer; + border-radius: 3em; + background-color: @main-bg; + text-color: @main-fg; +} +button selected { + background-color: @main-fg; + text-color: @main-bg; +} + + +// Elements // +element { + enabled: true; + spacing: 1em; + padding: 0.4em; + cursor: pointer; + background-color: transparent; + text-color: @main-fg; +} +element selected.normal { + background-color: @select-bg; + text-color: @select-fg; +} +element-icon { + size: 3em; + cursor: inherit; + background-color: transparent; + text-color: inherit; +} +element-text { + vertical-align: 0.5; + horizontal-align: 0.0; + cursor: inherit; + background-color: transparent; + text-color: inherit; +} + +// Error message // +error-message { + text-color: @main-fg; + background-color: @main-bg; + text-transform: capitalize; + children: [ "textbox" ]; +} + +textbox { + text-color: inherit; + background-color: inherit; + vertical-align: 0.5; + horizontal-align: 0.5; +} diff --git a/Configs/.config/rofi/styles/style_4.rasi b/Configs/.config/rofi/styles/style_4.rasi new file mode 100644 index 0000000..15a021e --- /dev/null +++ b/Configs/.config/rofi/styles/style_4.rasi @@ -0,0 +1,147 @@ +// Config // +configuration { + modi: "drun,filebrowser,window,run"; + show-icons: true; + display-drun: " "; + display-run: " "; + display-filebrowser: " "; + display-window: " "; + drun-display-format: "{name}"; + window-format: "{w}{t}"; + font: "JetBrainsMono Nerd Font 10"; + icon-theme: "Tela-circle-dracula"; +} + +@theme "~/.config/rofi/theme.rasi" + + +// Main // +window { + height: 30em; + width: 46em; + transparency: "real"; + fullscreen: false; + enabled: true; + cursor: "default"; + spacing: 0em; + padding: 0em; + border-color: @main-br; + background-color: @main-bg; +} +mainbox { + enabled: true; + spacing: 0em; + padding: 0em; + orientation: horizontal; + children: [ "inputbar" , "mode-switcher" , "listbox" ]; + background-color: transparent; + background-image: url("~/.cache/hyde/wall.blur", height); +} + + +// Inputs // +inputbar { + enabled: true; + width: 8em; + children: [ "entry" ]; + background-color: transparent; + background-image: url("~/.cache/hyde/wall.thmb", height); +} +entry { + enabled: false; +} + + +// Modes // +mode-switcher{ + orientation: vertical; + enabled: true; + width: 7em; + spacing: 1em; + padding: 3.4em 1em 3.4em 1em; + background-color: transparent; +} +button { + cursor: pointer; + border-radius: 3em; + background-color: @main-bg; + text-color: @main-fg; +} +button selected { + background-color: @main-fg; + text-color: @main-bg; +} + + +// Lists // +listbox { + spacing: 0em; + padding: 0.5em; + children: [ "dummy" , "listview" , "dummy" ]; + background-color: transparent; +} +listview { + spacing: 0em; + padding: 1em; + enabled: true; + columns: 1; + lines: 7; + cycle: true; + dynamic: true; + scrollbar: false; + layout: vertical; + reverse: false; + expand: false; + fixed-height: true; + fixed-columns: true; + cursor: "default"; + background-color: @main-bg; + text-color: @main-fg; + border-radius: 1.5em; +} +dummy { + background-color: transparent; +} + + +// Elements // +element { + enabled: true; + spacing: 1em; + padding: 0.4em; + cursor: pointer; + background-color: transparent; + text-color: @main-fg; +} +element selected.normal { + background-color: @select-bg; + text-color: @select-fg; +} +element-icon { + size: 3em; + cursor: inherit; + background-color: transparent; + text-color: inherit; +} +element-text { + vertical-align: 0.5; + horizontal-align: 0.0; + cursor: inherit; + background-color: transparent; + text-color: inherit; +} + +// Error message // +error-message { + text-color: @main-fg; + background-color: @main-bg; + text-transform: capitalize; + children: [ "textbox" ]; +} + +textbox { + text-color: inherit; + background-color: inherit; + vertical-align: 0.5; + horizontal-align: 0.5; +} diff --git a/Configs/.config/rofi/styles/style_5.rasi b/Configs/.config/rofi/styles/style_5.rasi new file mode 100644 index 0000000..edb6f3d --- /dev/null +++ b/Configs/.config/rofi/styles/style_5.rasi @@ -0,0 +1,141 @@ +// Config // +configuration { + modi: "drun,filebrowser,window,run"; + show-icons: true; + display-drun: " "; + display-run: " "; + display-filebrowser: " "; + display-window: " "; + drun-display-format: "{name}"; + window-format: "{w}{t}"; + font: "JetBrainsMono Nerd Font 10"; + icon-theme: "Tela-circle-dracula"; +} + +@theme "~/.config/rofi/theme.rasi" + + +// Main // +window { + height: 31em; + width: 50em; + transparency: "real"; + fullscreen: false; + enabled: true; + cursor: "default"; + spacing: 0em; + padding: 0em; + border-color: @main-br; + background-color: @main-bg; +} +mainbox { + enabled: true; + spacing: 0em; + padding: 0em; + orientation: vertical; + children: [ "inputbar" , "listbox" , "mode-switcher" ]; + background-color: transparent; +} + + +// Inputs // +inputbar { + enabled: true; + children: [ "entry" ]; +} +entry { + enabled: false; +} + + +// Lists // +listbox { + padding: 0em; + spacing: 0em; + orientation: horizontal; + children: [ "listview" ]; + background-color: transparent; + background-image: url("~/.cache/hyde/wall.blur", width); +} +listview { + padding: 2em; + spacing: 1em; + enabled: true; + columns: 5; + cycle: true; + dynamic: true; + scrollbar: false; + layout: vertical; + reverse: false; + fixed-height: true; + fixed-columns: true; + cursor: "default"; + background-color: @main-bg; + text-color: @main-fg; +} + + +// Modes // +mode-switcher { + orientation: horizontal; + enabled: true; + padding: 2em 9.8em 2em 9.8em; + spacing: 2em; + background-color: transparent; +} +button { + cursor: pointer; + padding: 2.5em; + spacing: 0em; + border-radius: 3em; + background-color: @main-bg; + text-color: @main-fg; +} +button selected { + background-color: @main-fg; + text-color: @main-bg; +} + + +// Elements // +element { + orientation: vertical; + enabled: true; + spacing: 0.2em; + padding: 0.5em; + cursor: pointer; + background-color: transparent; + text-color: @main-fg; +} +element selected.normal { + background-color: @select-bg; + text-color: @select-fg; +} +element-icon { + size: 5.5em; + cursor: inherit; + background-color: transparent; + text-color: inherit; +} +element-text { + vertical-align: 0.5; + horizontal-align: 0.5; + cursor: inherit; + background-color: transparent; + text-color: inherit; +} + +// Error message // +error-message { + text-color: @main-fg; + background-color: @main-bg; + text-transform: capitalize; + children: [ "textbox" ]; +} + +textbox { + text-color: inherit; + background-color: inherit; + vertical-align: 0.5; + horizontal-align: 0.5; +} diff --git a/Configs/.config/rofi/styles/style_6.rasi b/Configs/.config/rofi/styles/style_6.rasi new file mode 100644 index 0000000..984e7a9 --- /dev/null +++ b/Configs/.config/rofi/styles/style_6.rasi @@ -0,0 +1,146 @@ +// Config // +configuration { + modi: "drun,filebrowser,window,run"; + show-icons: true; + display-drun: " "; + display-run: " "; + display-filebrowser: " "; + display-window: " "; + drun-display-format: "{name}"; + window-format: "{w}{t}"; + font: "JetBrainsMono Nerd Font 10"; + icon-theme: "Tela-circle-dracula"; +} + +@theme "~/.config/rofi/theme.rasi" + + +// Main // +window { + height: 31em; + width: 37em; + transparency: "real"; + fullscreen: false; + enabled: true; + cursor: "default"; + spacing: 0em; + padding: 0em; + border-color: @main-br; + background-color: @main-bg; +} +mainbox { + enabled: true; + spacing: 0em; + padding: 0em; + orientation: horizontal; + children: [ "inputbar" , "mode-switcher" , "listbox" ]; + background-color: @main-bg; +} + + +// Inputs // +inputbar { + width: 0em; + enabled: true; + children: [ "entry" ]; +} +entry { + enabled: false; +} + + +// Modes // +mode-switcher { + width: 9em; + orientation: vertical; + enabled: true; + padding: 3em 1.8em 3em 1.8em; + spacing: 1em; + background-color: @main-bg; +} +button { + cursor: pointer; + border-radius: 3em; + background-color: @main-bg; + text-color: @main-fg; +} +button selected { + border-radius: 3em; + background-color: @main-fg; + text-color: @main-bg; +} + + +// Lists // +listbox { + padding: 0em; + spacing: 0em; + orientation: vertical; + children: [ "dummy" , "listview" , "dummy" ]; + background-color: transparent; +} +listview { + padding: 1em; + spacing: 0em; + enabled: true; + columns: 1; + lines: 7; + cycle: true; + dynamic: true; + scrollbar: false; + layout: vertical; + reverse: false; + expand: false; + fixed-height: true; + fixed-columns: true; + cursor: "default"; + background-color: transparent; + text-color: @main-fg; +} +dummy { + background-color: transparent; +} + + +// Elements // +element { + orientation: horizontal; + enabled: true; + spacing: 1.5em; + padding: 0.5em; + cursor: pointer; + background-color: transparent; + text-color: @main-fg; +} +element selected.normal { + background-color: @select-bg; + text-color: @select-fg; +} +element-icon { + size: 3em; + cursor: inherit; + background-color: transparent; + text-color: inherit; +} +element-text { + vertical-align: 0.5; + horizontal-align: 0; + cursor: inherit; + background-color: transparent; + text-color: inherit; +} + +// Error message // +error-message { + text-color: @main-fg; + background-color: @main-bg; + text-transform: capitalize; + children: [ "textbox" ]; +} + +textbox { + text-color: inherit; + background-color: inherit; + vertical-align: 0.5; + horizontal-align: 0.5; +} diff --git a/Configs/.config/rofi/styles/style_7.rasi b/Configs/.config/rofi/styles/style_7.rasi new file mode 100644 index 0000000..bf69ec1 --- /dev/null +++ b/Configs/.config/rofi/styles/style_7.rasi @@ -0,0 +1,158 @@ +// Config // +configuration { + modi: "drun,filebrowser,window"; + show-icons: true; + display-drun: " "; + display-run: " "; + display-filebrowser: " "; + display-window: " "; + drun-display-format: "{name}"; + window-format: "{w}{t}"; + font: "JetBrainsMono Nerd Font 10"; + icon-theme: "Tela-circle-dracula"; +} + +@theme "~/.config/rofi/theme.rasi" + + +// Main // +window { + height: 12em; + width: 38em; + transparency: "real"; + fullscreen: false; + enabled: true; + cursor: "default"; + spacing: 0em; + padding: 0em; + border-color: @main-br; + background-color: @main-bg; +} +mainbox { + enabled: true; + spacing: 0em; + padding: 0em; + orientation: vertical; + children: [ "listbox" , "inputmode" ]; + background-color: transparent; +} + + +// Lists // +listbox { + padding: 0em; + spacing: 0em; + orientation: horizontal; + children: [ "listview" ]; + background-color: transparent; + background-image: url("~/.cache/hyde/wall.blur", width); +} +listview { + padding: 0.5em; + spacing: 0.2em; + enabled: true; + columns: 5; + cycle: true; + dynamic: true; + scrollbar: false; + reverse: false; + fixed-height: true; + fixed-columns: true; + cursor: "default"; + background-color: @main-bg; + text-color: @main-fg; +} + + +// Inputs // +inputmode { + padding: 0em; + spacing: 0em; + orientation: horizontal; + children: [ "inputbar" , "mode-switcher" ]; + background-color: transparent; +} +inputbar { + enabled: true; + width: 24em; + padding: 0em; + spacing: 0em; + padding: 1.5em 1em 1.5em 2.5em; + children: [ "entry" ]; + background-color: transparent; +} +entry { + vertical-align: 0.5; + border-radius: 3em; + enabled: true; + spacing: 0em; + padding: 1em; + text-color: @main-fg; + background-color: @main-bg; +} + + +// Modes // +mode-switcher { + width: 13em; + orientation: horizontal; + enabled: true; + padding: 1.5em 2.5em 1.5em 0em; + spacing: 1em; + background-color: transparent; +} +button { + cursor: pointer; + padding: 0em; + border-radius: 3em; + background-color: @main-bg; + text-color: @main-fg; +} +button selected { + background-color: @main-fg; + text-color: @main-bg; +} + + +// Elements // +element { + orientation: vertical; + enabled: true; + spacing: 0.2em; + padding: 0.5em; + cursor: pointer; + background-color: transparent; + text-color: @main-fg; +} +element selected.normal { + background-color: @select-bg; + text-color: @select-fg; +} +element-icon { + size: 2.5em; + cursor: inherit; + background-color: transparent; + text-color: inherit; +} +element-text { + vertical-align: 0.5; + horizontal-align: 0.5; + cursor: inherit; + background-color: transparent; + text-color: inherit; +} + +// Error message // +error-message { + text-color: @main-fg; + background-color: @main-bg; + text-transform: capitalize; + children: [ "textbox" ]; +} + +textbox { + text-color: inherit; + background-color: inherit; + vertical-align: 0.5; + horizontal-align: 0.5; +} diff --git a/Configs/.config/rofi/styles/style_8.rasi b/Configs/.config/rofi/styles/style_8.rasi new file mode 100644 index 0000000..1a7bf36 --- /dev/null +++ b/Configs/.config/rofi/styles/style_8.rasi @@ -0,0 +1,151 @@ +// Config // +configuration { + modi: "drun,filebrowser,window,run"; + show-icons: true; + display-drun: " "; + display-run: " "; + display-filebrowser: " "; + display-window: " "; + drun-display-format: "{name}"; + window-format: "{w}{t}"; + font: "JetBrainsMono Nerd Font 10"; + icon-theme: "Tela-circle-dracula"; +} + +@theme "~/.config/rofi/theme.rasi" + + +// Main // +window { + height: 30em; + width: 37em; + transparency: "real"; + fullscreen: false; + enabled: true; + cursor: "default"; + spacing: 0em; + padding: 0em; + border-color: @main-br; + background-color: @main-bg; +} +mainbox { + enabled: true; + spacing: 0em; + orientation: horizontal; + children: [ "listmode" , "inputbar" ]; + background-color: transparent; + background-image: url("~/.cache/hyde/wall.thmb", height); +} + + +// Lists // +listmode { + enabled: true; + children: [ "listbox" , "mode-switcher" ]; + background-color: transparent; + background-image: url("~/.cache/hyde/wall.blur", height); +} +listbox { + spacing: 0em; + padding: 1em; + children: [ "dummy" , "listview" , "dummy" ]; + background-color: transparent; +} +listview { + enabled: true; + spacing: 0em; + padding: 0.5em; + columns: 1; + lines: 6; + cycle: true; + dynamic: true; + scrollbar: false; + layout: vertical; + reverse: false; + expand: false; + fixed-height: true; + fixed-columns: true; + cursor: "default"; + background-color: @main-bg; + text-color: @main-fg; + border-radius: 1em; +} +dummy { + background-color: transparent; +} + + +// Modes // +mode-switcher{ + orientation: horizontal; + enabled: true; + spacing: 1em; + padding: 0em 9.5em 2em 2em; + background-color: transparent; +} +button { + padding: 1em; + cursor: pointer; + border-radius: 3em; + background-color: @main-bg; + text-color: @main-fg; +} +button selected { + background-color: @main-fg; + text-color: @main-bg; +} + + +// Inputs // +inputbar { + enabled: true; + width: 10em; + children: [ "entry" ]; + background-color: transparent; +} +entry { + enabled: false; +} + + +// Elements // +element { + enabled: true; + spacing: 1em; + padding: 0.3em; + cursor: pointer; + background-color: transparent; + text-color: @main-fg; +} +element selected.normal { + background-color: @select-bg; + text-color: @select-fg; +} +element-icon { + size: 3em; + cursor: inherit; + background-color: transparent; + text-color: inherit; +} +element-text { + vertical-align: 0.5; + horizontal-align: 0.0; + cursor: inherit; + background-color: transparent; + text-color: inherit; +} + +// Error message // +error-message { + text-color: @main-fg; + background-color: @main-bg; + text-transform: capitalize; + children: [ "textbox" ]; +} + +textbox { + text-color: inherit; + background-color: inherit; + vertical-align: 0.5; + horizontal-align: 0.5; +} diff --git a/Configs/.config/rofi/styles/style_9.rasi b/Configs/.config/rofi/styles/style_9.rasi new file mode 100644 index 0000000..a66484b --- /dev/null +++ b/Configs/.config/rofi/styles/style_9.rasi @@ -0,0 +1,127 @@ +// Config // +configuration { + modi: "drun,filebrowser,window,run"; + show-icons: true; + display-drun: " "; + display-run: " "; + display-filebrowser: " "; + display-window: " "; + drun-display-format: "{name}"; + window-format: "{w}{t}"; + font: "JetBrainsMono Nerd Font 10"; + icon-theme: "Tela-circle-dracula"; +} + +@theme "~/.config/rofi/theme.rasi" + + +// Main // +window { + height: 30em; + width: 57em; + transparency: "real"; + fullscreen: false; + enabled: true; + cursor: "default"; + spacing: 0em; + padding: 0em; + border-color: @main-br; + background-color: @main-bg; +} +mainbox { + enabled: true; + spacing: 1em; + padding: 1em; + orientation: horizontal; + children: [ "inputbar" , "listbox" ]; + background-color: transparent; +} + + +// Inputs // +inputbar { + enabled: true; + width: 27em; + spacing: 0em; + padding: 0em; + children: [ "entry" ]; + background-color: transparent; + background-image: url("~/.cache/hyde/wall.sqre", height); + border-radius: 1em; +} +entry { + enabled: false; +} + + +// Lists // +listbox { + spacing: 0em; + padding: 0em; + children: [ "dummy" , "listview" , "dummy" ]; + background-color: transparent; +} +listview { + enabled: true; + spacing: 0em; + padding: 1em; + columns: 1; + lines: 7; + cycle: true; + dynamic: true; + scrollbar: false; + layout: vertical; + reverse: false; + expand: false; + fixed-height: true; + fixed-columns: true; + cursor: "default"; + background-color: transparent; + text-color: @main-fg; +} +dummy { + background-color: transparent; +} + + +// Elements // +element { + enabled: true; + spacing: 1em; + padding: 0.5em 0.5em 0.5em 1.5em; + cursor: pointer; + background-color: transparent; + text-color: @main-fg; +} +element selected.normal { + background-color: @select-bg; + text-color: @select-fg; +} +element-icon { + size: 2.7em; + cursor: inherit; + background-color: transparent; + text-color: inherit; +} +element-text { + vertical-align: 0.5; + horizontal-align: 0.0; + cursor: inherit; + background-color: transparent; + text-color: inherit; +} + +// Error message // +error-message { + text-color: @main-fg; + background-color: @main-bg; + text-transform: capitalize; + children: [ "textbox" ]; +} + +textbox { + text-color: inherit; + background-color: inherit; + vertical-align: 0.5; + horizontal-align: 0.5; +} diff --git a/Configs/.config/rofi/theme.rasi b/Configs/.config/rofi/theme.rasi new file mode 100644 index 0000000..b5de329 --- /dev/null +++ b/Configs/.config/rofi/theme.rasi @@ -0,0 +1,10 @@ +* { + main-bg: #11111be6; + main-fg: #cdd6f4ff; + main-br: #cba6f7ff; + main-ex: #f5e0dcff; + select-bg: #b4befeff; + select-fg: #11111bff; + separatorcolor: transparent; + border-color: transparent; +} diff --git a/Configs/.config/rofi/wallbash.rasi b/Configs/.config/rofi/wallbash.rasi new file mode 100644 index 0000000..ca2ffc7 --- /dev/null +++ b/Configs/.config/rofi/wallbash.rasi @@ -0,0 +1,82 @@ +// Config // +configuration { + modi: "drun"; + show-icons: true; + drun-display-format: "{name}"; + font: "JetBrainsMono Nerd Font 9"; +} + +@theme "~/.config/rofi/theme.rasi" + + +// Main // +window { + enabled: true; + fullscreen: false; + width: 40em; + height: 20em; + transparency: "real"; + cursor: "default"; + spacing: 0em; + padding: 0em; + border: 1em; + border-radius: 0em; + border-color: #00000003; + background-color: @main-bg; + background-image: url("~/.config/rofi/assets/wallbash_mode.png", width); +} +mainbox { + enabled: true; + orientation: vertical; + children: [ "dummy" , "listview" ]; + background-color: transparent; +} + + +// Lists // +listview { + enabled: true; + spacing: 1em; + padding: 1em 2em 2.5em 2em; + columns: 4; + lines: 1; + dynamic: false; + fixed-height: false; + fixed-columns: true; + reverse: true; + cursor: "default"; + background-color: transparent; + text-color: @main-fg; +} +dummy { + padding: 4em; + expand: false; + background-color: transparent; +} + + +// Elements // +element { + enabled: true; + spacing: 0em; + padding: 1.5em; + cursor: pointer; + background-color: @main-bg; + text-color: @main-fg; + border-radius: 0em; +} +element selected.normal { + background-color: @select-bg; + text-color: @select-fg; +} +element-icon { + enabled: false; +} +element-text { + vertical-align: 0.5; + horizontal-align: 0.5; + cursor: inherit; + background-color: transparent; + text-color: inherit; +} + diff --git a/Configs/.config/spotify-flags.conf b/Configs/.config/spotify-flags.conf new file mode 100644 index 0000000..e973a47 --- /dev/null +++ b/Configs/.config/spotify-flags.conf @@ -0,0 +1 @@ +--ozone-platform-hint=wayland diff --git a/Configs/.config/swaylock/config b/Configs/.config/swaylock/config new file mode 100644 index 0000000..477d393 --- /dev/null +++ b/Configs/.config/swaylock/config @@ -0,0 +1,38 @@ +daemonize +show-failed-attempts +clock +screenshot +effect-blur=15x15 +effect-vignette=1:1 +color=1f1d2e80 +font="Inter" +indicator +indicator-radius=200 +indicator-thickness=20 +line-color=1f1d2e +ring-color=191724 +inside-color=1f1d2e +key-hl-color=eb6f92 +separator-color=00000000 +text-color=e0def4 +text-caps-lock-color="" +line-ver-color=eb6f92 +ring-ver-color=eb6f92 +inside-ver-color=1f1d2e +text-ver-color=e0def4 +ring-wrong-color=31748f +text-wrong-color=31748f +inside-wrong-color=1f1d2e +inside-clear-color=1f1d2e +text-clear-color=e0def4 +ring-clear-color=9ccfd8 +line-clear-color=1f1d2e +line-wrong-color=1f1d2e +bs-hl-color=31748f +grace=2 +grace-no-mouse +grace-no-touch +datestr=%a, %B %e +timestr=%I:%M %p +fade-in=0.3 +ignore-empty-password diff --git a/Configs/.config/waybar/config.ctl b/Configs/.config/waybar/config.ctl new file mode 100644 index 0000000..ec30961 --- /dev/null +++ b/Configs/.config/waybar/config.ctl @@ -0,0 +1,25 @@ +0|28|bottom|( cpu memory custom/cpuinfo custom/gpuinfo ) ( idle_inhibitor clock )|( hyprland/workspaces hyprland/window )|( backlight network pulseaudio pulseaudio#microphone custom/updates custom/keybindhint ) ( privacy tray battery ) ( custom/wallchange custom/theme custom/wbar custom/cliphist custom/power ) +0|28|top|( cpu memory custom/cpuinfo custom/gpuinfo ) ( idle_inhibitor clock )|( hyprland/workspaces hyprland/window )|( backlight network pulseaudio pulseaudio#microphone custom/updates custom/keybindhint ) ( privacy tray battery ) ( custom/wallchange custom/theme custom/wbar custom/cliphist custom/power ) +0|28|bottom|( cpu memory custom/cpuinfo custom/gpuinfo ) ( idle_inhibitor clock ) ( hyprland/workspaces )|( hyprland/window )|( backlight network pulseaudio pulseaudio#microphone custom/updates custom/keybindhint ) ( privacy tray battery ) ( custom/wallchange custom/theme custom/wbar custom/cliphist custom/power ) +0|28|top|( cpu memory custom/cpuinfo ) ( idle_inhibitor clock ) ( hyprland/workspaces )|( hyprland/window )|( backlight network pulseaudio pulseaudio#microphone custom/updates custom/keybindhint ) ( privacy tray battery ) ( custom/wallchange custom/theme custom/wbar custom/cliphist custom/power ) +0||bottom|( hyprland/workspaces hyprland/window )|( idle_inhibitor clock )|( cpu memory custom/cpuinfo custom/gpuinfo ) ( backlight network pulseaudio pulseaudio#microphone custom/updates custom/keybindhint ) ( privacy tray battery ) ( custom/wallchange custom/theme custom/wbar custom/cliphist custom/power ) +0||top|( hyprland/workspaces hyprland/window )|( idle_inhibitor clock )|( cpu memory custom/cpuinfo custom/gpuinfo ) ( backlight network pulseaudio pulseaudio#microphone custom/updates custom/keybindhint ) ( privacy tray battery ) ( custom/wallchange custom/theme custom/wbar custom/cliphist custom/power ) +1|31|bottom|( custom/power custom/cliphist custom/wbar custom/theme custom/wallchange ) ( wlr/taskbar custom/spotify ) |( idle_inhibitor clock )|( privacy tray battery ) ( backlight network pulseaudio pulseaudio#microphone custom/notifications custom/keybindhint ) +0|31|left|( custom/power custom/cliphist custom/wbar custom/theme custom/wallchange ) ( wlr/taskbar custom/spotify ) |( idle_inhibitor clock )|( privacy tray battery ) ( backlight network pulseaudio pulseaudio#microphone custom/keybindhint ) +0|31|top|( custom/power custom/cliphist custom/wbar custom/theme custom/wallchange ) ( wlr/taskbar custom/spotify ) |( idle_inhibitor clock )|( privacy tray battery ) ( backlight network pulseaudio pulseaudio#microphone custom/keybindhint ) +0|31|right|( custom/power custom/cliphist custom/wbar custom/theme custom/wallchange ) ( wlr/taskbar custom/spotify ) |( idle_inhibitor clock )|( privacy tray battery ) ( backlight network pulseaudio pulseaudio#microphone custom/keybindhint ) +0|32|bottom||( custom/power ) ( privacy tray battery ) ( wlr/taskbar idle_inhibitor clock ) ( custom/cliphist ) ( custom/wbar ) ( custom/wallchange ) ( custom/theme )| +0|32|left||( custom/power ) ( privacy tray battery ) ( wlr/taskbar idle_inhibitor clock ) ( custom/cliphist ) ( custom/wbar ) ( custom/wallchange ) ( custom/theme )| +0|32|top||( custom/power ) ( privacy tray battery ) ( wlr/taskbar idle_inhibitor clock ) ( custom/cliphist ) ( custom/wbar ) ( custom/wallchange ) ( custom/theme )| +0|32|right||( custom/power ) ( privacy tray battery ) ( wlr/taskbar idle_inhibitor clock ) ( custom/cliphist ) ( custom/wbar ) ( custom/wallchange ) ( custom/theme )| +0|31|bottom|( cpu memory custom/cpuinfo custom/gpuinfo ) ( idle_inhibitor clock ) ( hyprland/workspaces )|( wlr/taskbar )|( backlight network pulseaudio pulseaudio#microphone custom/updates custom/keybindhint ) ( privacy tray battery ) ( custom/wallchange custom/theme custom/wbar custom/cliphist custom/power ) +0|31|top|( cpu memory custom/cpuinfo custom/gpuinfo ) ( idle_inhibitor clock ) ( hyprland/workspaces )|( wlr/taskbar )|( backlight network pulseaudio pulseaudio#microphone custom/updates custom/keybindhint ) ( privacy tray battery ) ( custom/wallchange custom/theme custom/wbar custom/cliphist custom/power ) +0|29|bottom|( wlr/taskbar mpris )|( idle_inhibitor clock )|( backlight network pulseaudio pulseaudio#microphone custom/updates ) ( privacy tray battery ) ( custom/wallchange custom/theme custom/wbar custom/cliphist custom/power ) +0|29|left|( wlr/taskbar mpris )|( idle_inhibitor clock )|( backlight network pulseaudio pulseaudio#microphone custom/updates ) ( privacy tray battery ) ( custom/wallchange custom/theme custom/wbar custom/cliphist custom/power ) +0|29|top|( wlr/taskbar mpris )|( idle_inhibitor clock )|( backlight network pulseaudio pulseaudio#microphone custom/updates ) ( privacy tray battery ) ( custom/wallchange custom/theme custom/wbar custom/cliphist custom/power ) +0|29|right|( wlr/taskbar mpris )|( idle_inhibitor clock )|( backlight network pulseaudio pulseaudio#microphone custom/updates ) ( privacy tray battery ) ( custom/wallchange custom/theme custom/wbar custom/cliphist custom/power ) +0|28|bottom|( custom/power custom/cliphist custom/wbar custom/theme custom/wallchange ) ( idle_inhibitor clock custom/spotify )|( wlr/taskbar )|( privacy tray ) ( backlight network pulseaudio pulseaudio#microphone ) +0|28|left|( custom/power custom/cliphist custom/wbar custom/theme custom/wallchange ) ( idle_inhibitor clock custom/spotify )|( wlr/taskbar )|( privacy tray ) ( backlight network pulseaudio pulseaudio#microphone ) +0|28|top|( custom/power custom/cliphist custom/wbar custom/theme custom/wallchange ) ( idle_inhibitor clock custom/spotify )|( wlr/taskbar )|( privacy tray ) ( backlight network pulseaudio pulseaudio#microphone ) +0|28|right|( custom/power custom/cliphist custom/wbar custom/theme custom/wallchange ) ( idle_inhibitor clock custom/spotify )|( wlr/taskbar )|( privacy tray ) ( backlight network pulseaudio pulseaudio#microphone ) +0|40|top|( hyprland/workspaces )|( custom/cava idle_inhibitor clock )|( backlight pulseaudio pulseaudio#microphone tray battery custom/keybindhint custom/cliphist custom/power ) \ No newline at end of file diff --git a/Configs/.config/waybar/config.jsonc b/Configs/.config/waybar/config.jsonc new file mode 100644 index 0000000..aecc187 --- /dev/null +++ b/Configs/.config/waybar/config.jsonc @@ -0,0 +1,302 @@ +// --// waybar config generated by wbarconfgen.sh //-- // + +{ +// sourced from header module // + + "layer": "top", + "position": "bottom", + "mod": "dock", + "height": 31, + "exclusive": true, + "passthrough": false, + "gtk-layer-shell": true, + "reload_style_on_change": true, + + +// positions generated based on config.ctl // + + "modules-left": ["custom/padd","custom/l_end","custom/power","custom/cliphist","custom/wbar","custom/theme","custom/wallchange","custom/r_end","custom/l_end","wlr/taskbar","custom/spotify","custom/r_end","","custom/padd"], + "modules-center": ["custom/padd","custom/l_end","idle_inhibitor","clock","custom/r_end","custom/padd"], + "modules-right": ["custom/padd","custom/l_end","tray","battery","custom/r_end","custom/l_end","backlight","network","pulseaudio","pulseaudio#microphone","custom/notifications","custom/keybindhint","custom/r_end","custom/padd"], + + +// sourced from modules based on config.ctl // + + "custom/power": { + "format": "{}", + "rotate": 0, + "exec": "echo ; echo  logout", + "on-click": "logoutlaunch.sh 2", + "on-click-right": "logoutlaunch.sh 1", + "interval" : 86400, // once every day + "tooltip": true + }, + + "custom/cliphist": { + "format": "{}", + "rotate": 0, + "exec": "echo ; echo 󰅇 clipboard history", + "on-click": "sleep 0.1 && cliphist.sh c", + "on-click-right": "sleep 0.1 && cliphist.sh d", + "on-click-middle": "sleep 0.1 && cliphist.sh w", + "interval" : 86400, // once every day + "tooltip": true + }, + + "custom/wbar": { + "format": "{}", //   // + "rotate": 0, + "exec": "echo ; echo  switch bar //  dock", + "on-click": "wbarconfgen.sh n", + "on-click-right": "wbarconfgen.sh p", + "on-click-middle": "sleep 0.1 && quickapps.sh kitty firefox spotify code dolphin", + "interval" : 86400, + "tooltip": true + }, + + "custom/theme": { + "format": "{}", + "rotate": 0, + "exec": "echo ; echo 󰟡 switch theme", + "on-click": "themeswitch.sh -n", + "on-click-right": "themeswitch.sh -p", + "on-click-middle": "sleep 0.1 && themeselect.sh", + "interval" : 86400, // once every day + "tooltip": true + }, + + "custom/wallchange": { + "format": "{}", + "rotate": 0, + "exec": "echo ; echo 󰆊 switch wallpaper", + "on-click": "swwwallpaper.sh -n", + "on-click-right": "swwwallpaper.sh -p", + "on-click-middle": "sleep 0.1 && swwwallselect.sh", + "interval" : 86400, // once every day + "tooltip": true + }, + + "wlr/taskbar": { + "format": "{icon}", + "rotate": 0, + "icon-size": 18, + "icon-theme": "Tela-circle-dracula", + "spacing": 0, + "tooltip-format": "{title}", + "on-click": "activate", + "on-click-middle": "close", + "ignore-list": [ + "Alacritty" + ], + "app_ids-mapping": { + "firefoxdeveloperedition": "firefox-developer-edition" + } + }, + + "custom/spotify": { + "exec": "mediaplayer.py --player spotify", + "format": " {}", + "rotate": 0, + "return-type": "json", + "on-click": "playerctl play-pause --player spotify", + "on-click-right": "playerctl next --player spotify", + "on-click-middle": "playerctl previous --player spotify", + "on-scroll-up": "volumecontrol.sh -p spotify i", + "on-scroll-down": "volumecontrol.sh -p spotify d", + "max-length": 25, + "escape": true, + "tooltip": true + }, + + "idle_inhibitor": { + "format": "{icon}", + "rotate": 0, + "format-icons": { + "activated": "󰥔", + "deactivated": "" + } + }, + + "clock": { + "format": "{:%I:%M %p}", + "rotate": 0, + "format-alt": "{:%R 󰃭 %d·%m·%y}", + "tooltip-format": "{calendar}", + "calendar": { + "mode": "month", + "mode-mon-col": 3, + "on-scroll": 1, + "on-click-right": "mode", + "format": { + "months": "{}", + "weekdays": "{}", + "today": "{}" + } + }, + "actions": { + "on-click-right": "mode", + "on-click-forward": "tz_up", + "on-click-backward": "tz_down", + "on-scroll-up": "shift_up", + "on-scroll-down": "shift_down" + } + }, + + "tray": { + "icon-size": 18, + "rotate": 0, + "spacing": 5 + }, + + "battery": { + "states": { + "good": 95, + "warning": 30, + "critical": 20 + }, + "format": "{icon} {capacity}%", + "rotate": 0, + "format-charging": " {capacity}%", + "format-plugged": " {capacity}%", + "format-alt": "{time} {icon}", + "format-icons": ["󰂎", "󰁺", "󰁻", "󰁼", "󰁽", "󰁾", "󰁿", "󰂀", "󰂁", "󰂂", "󰁹"] + }, + + "backlight": { + "device": "intel_backlight", + "rotate": 0, + "format": "{icon} {percent}%", + "format-icons": ["", "", "", "", "", "", "", "", ""], + "on-scroll-up": "brightnessctl set 1%+", + "on-scroll-down": "brightnessctl set 1%-", + "min-length": 6 + }, + + "network": { + "tooltip": true, + "format-wifi": " ", + "rotate": 0, + "format-ethernet": "󰈀 ", + "tooltip-format": "Network: {essid}\nSignal strength: {signaldBm}dBm ({signalStrength}%)\nFrequency: {frequency}MHz\nInterface: {ifname}\nIP: {ipaddr}/{cidr}\nGateway: {gwaddr}\nNetmask: {netmask}", + "format-linked": "󰈀 {ifname} (No IP)", + "format-disconnected": "󰖪 ", + "tooltip-format-disconnected": "Disconnected", + "format-alt": " {bandwidthDownBytes}  {bandwidthUpBytes}", + "interval": 2, + }, + + "pulseaudio": { + "format": "{icon} {volume}", + "rotate": 0, + "format-muted": "婢", + "on-click": "pavucontrol -t 3", + "on-click-middle": "volumecontrol.sh -o m", + "on-scroll-up": "volumecontrol.sh -o i", + "on-scroll-down": "volumecontrol.sh -o d", + "tooltip-format": "{icon} {desc} // {volume}%", + "scroll-step": 5, + "format-icons": { + "headphone": "", + "hands-free": "", + "headset": "", + "phone": "", + "portable": "", + "car": "", + "default": ["", "", ""] + } + }, + + "pulseaudio#microphone": { + "format": "{format_source}", + "rotate": 0, + "format-source": "", + "format-source-muted": "", + "on-click": "pavucontrol -t 4", + "on-click-middle": "volumecontrol.sh -i m", + "on-scroll-up": "volumecontrol.sh -i i", + "on-scroll-down": "volumecontrol.sh -i d", + "tooltip-format": "{format_source} {source_desc} // {source_volume}%", + "scroll-step": 5 + }, + + "custom/notifications": { + "tooltip": false, + "format": "{icon} {}", + "rotate": 0, + "format-icons": { + "email-notification": "", + "chat-notification": "󱋊", + "warning-notification": "󱨪", + "error-notification": "󱨪", + "network-notification": "󱂇", + "battery-notification": "󰁺", + "update-notification": "󰚰", + "music-notification": "󰝚", + "volume-notification": "󰕿", + "notification": "", + "none": "" + }, + "return-type": "json", + "exec-if": "which dunstctl", + "exec": "notifications.py", + "on-click": "sleep 0.1 && dunstctl history-pop", + "on-click-middle": "dunstctl history-clear", + "on-click-right": "dunstctl close-all", + "interval": 1, + "tooltip": true, + "escape": true + }, + + "custom/keybindhint": { + "format": " ", + "rotate": 0, + "on-click": "keybinds_hint.sh" + }, + + +// modules for padding // + + "custom/l_end": { + "format": " ", + "interval" : "once", + "tooltip": false + }, + + "custom/r_end": { + "format": " ", + "interval" : "once", + "tooltip": false + }, + + "custom/sl_end": { + "format": " ", + "interval" : "once", + "tooltip": false + }, + + "custom/sr_end": { + "format": " ", + "interval" : "once", + "tooltip": false + }, + + "custom/rl_end": { + "format": " ", + "interval" : "once", + "tooltip": false + }, + + "custom/rr_end": { + "format": " ", + "interval" : "once", + "tooltip": false + }, + + "custom/padd": { + "format": " ", + "interval" : "once", + "tooltip": false + } + +} + diff --git a/Configs/.config/waybar/modules/backlight.jsonc b/Configs/.config/waybar/modules/backlight.jsonc new file mode 100644 index 0000000..f8ea3d3 --- /dev/null +++ b/Configs/.config/waybar/modules/backlight.jsonc @@ -0,0 +1,10 @@ + "backlight": { + "device": "intel_backlight", + "rotate": ${r_deg}, + "format": "{icon} {percent}%", + "format-icons": ["", "", "", "", "", "", "", "", ""], + "on-scroll-up": "brightnesscontrol.sh i 1", + "on-scroll-down": "brightnesscontrol.sh d 1", + "min-length": 6 + }, + diff --git a/Configs/.config/waybar/modules/battery.jsonc b/Configs/.config/waybar/modules/battery.jsonc new file mode 100644 index 0000000..51d6482 --- /dev/null +++ b/Configs/.config/waybar/modules/battery.jsonc @@ -0,0 +1,14 @@ + "battery": { + "states": { + "good": 95, + "warning": 30, + "critical": 20 + }, + "format": "{icon} {capacity}%", + "rotate": ${r_deg}, + "format-charging": " {capacity}%", + "format-plugged": " {capacity}%", + "format-alt": "{time} {icon}", + "format-icons": ["󰂎", "󰁺", "󰁻", "󰁼", "󰁽", "󰁾", "󰁿", "󰂀", "󰂁", "󰂂", "󰁹"] + }, + diff --git a/Configs/.config/waybar/modules/bluetooth.jsonc b/Configs/.config/waybar/modules/bluetooth.jsonc new file mode 100644 index 0000000..919bbd8 --- /dev/null +++ b/Configs/.config/waybar/modules/bluetooth.jsonc @@ -0,0 +1,15 @@ + "bluetooth": { + "format": "", + "rotate": ${r_deg}, + "format-disabled": "", + "format-connected": " {num_connections}", + "format-connected-battery": "{icon} {num_connections}", + // "format-connected-battery": "{icon} {device_alias}-{device_battery_percentage}%", + "format-icons": ["󰥇", "󰤾", "󰤿", "󰥀", "󰥁", "󰥂", "󰥃", "󰥄", "󰥅", "󰥆", "󰥈"], + // "format-device-preference": [ "device1", "device2" ], // preference list deciding the displayed device If this config option is not defined or none of the devices in the list are connected, it will fall back to showing the last connected device. + "tooltip-format": "{controller_alias}\n{num_connections} connected", + "tooltip-format-connected": "{controller_alias}\n{num_connections} connected\n\n{device_enumerate}", + "tooltip-format-enumerate-connected": "{device_alias}", + "tooltip-format-enumerate-connected-battery": "{device_alias}\t{icon} {device_battery_percentage}%" + }, + diff --git a/Configs/.config/waybar/modules/cava.jsonc b/Configs/.config/waybar/modules/cava.jsonc new file mode 100644 index 0000000..d5d2277 --- /dev/null +++ b/Configs/.config/waybar/modules/cava.jsonc @@ -0,0 +1,6 @@ +"custom/cava": { + "format": "{}", + "exec": "waybar_cava.sh", + "restart-interval": 1, + "hide-empty": true +}, \ No newline at end of file diff --git a/Configs/.config/waybar/modules/cliphist.jsonc b/Configs/.config/waybar/modules/cliphist.jsonc new file mode 100644 index 0000000..02024fa --- /dev/null +++ b/Configs/.config/waybar/modules/cliphist.jsonc @@ -0,0 +1,11 @@ + "custom/cliphist": { + "format": "{}", + "rotate": ${r_deg}, + "exec": "echo ; echo 󰅇 clipboard history", + "on-click": "sleep 0.1 && cliphist.sh c", + "on-click-right": "sleep 0.1 && cliphist.sh d", + "on-click-middle": "sleep 0.1 && cliphist.sh w", + "interval" : 86400, // once every day + "tooltip": true + }, + diff --git a/Configs/.config/waybar/modules/clock.jsonc b/Configs/.config/waybar/modules/clock.jsonc new file mode 100644 index 0000000..17f9a15 --- /dev/null +++ b/Configs/.config/waybar/modules/clock.jsonc @@ -0,0 +1,25 @@ + "clock": { + "format": "{:%I:%M %p}", + "rotate": ${r_deg}, + "format-alt": "{:%R 󰃭 %d·%m·%y}", + "tooltip-format": "{calendar}", + "calendar": { + "mode": "month", + "mode-mon-col": 3, + "on-scroll": 1, + "on-click-right": "mode", + "format": { + "months": "{}", + "weekdays": "{}", + "today": "{}" + } + }, + "actions": { + "on-click-right": "mode", + "on-click-forward": "tz_up", + "on-click-backward": "tz_down", + "on-scroll-up": "shift_up", + "on-scroll-down": "shift_down" + } + }, + diff --git a/Configs/.config/waybar/modules/cpu.jsonc b/Configs/.config/waybar/modules/cpu.jsonc new file mode 100644 index 0000000..cc89cb0 --- /dev/null +++ b/Configs/.config/waybar/modules/cpu.jsonc @@ -0,0 +1,8 @@ + "cpu": { + "interval": 10, + "format": "󰍛 {usage}%", + "rotate": ${r_deg}, + "format-alt": "{icon0}{icon1}{icon2}{icon3}", + "format-icons": ["▁", "▂", "▃", "▄", "▅", "▆", "▇", "█"] + }, + diff --git a/Configs/.config/waybar/modules/cpuinfo.jsonc b/Configs/.config/waybar/modules/cpuinfo.jsonc new file mode 100644 index 0000000..fb6bb76 --- /dev/null +++ b/Configs/.config/waybar/modules/cpuinfo.jsonc @@ -0,0 +1,10 @@ + "custom/cpuinfo": { + "exec": " cpuinfo.sh", + "return-type": "json", + "format": "{}", + "rotate": ${r_deg}, + "interval": 5, // once every 5 seconds + "tooltip": true, + "max-length": 1000 + }, + diff --git a/Configs/.config/waybar/modules/footer.jsonc b/Configs/.config/waybar/modules/footer.jsonc new file mode 100644 index 0000000..1387f74 --- /dev/null +++ b/Configs/.config/waybar/modules/footer.jsonc @@ -0,0 +1,47 @@ + +// modules for padding // + + "custom/l_end": { + "format": " ", + "interval" : "once", + "tooltip": false + }, + + "custom/r_end": { + "format": " ", + "interval" : "once", + "tooltip": false + }, + + "custom/sl_end": { + "format": " ", + "interval" : "once", + "tooltip": false + }, + + "custom/sr_end": { + "format": " ", + "interval" : "once", + "tooltip": false + }, + + "custom/rl_end": { + "format": " ", + "interval" : "once", + "tooltip": false + }, + + "custom/rr_end": { + "format": " ", + "interval" : "once", + "tooltip": false + }, + + "custom/padd": { + "format": " ", + "interval" : "once", + "tooltip": false + } + +} + diff --git a/Configs/.config/waybar/modules/gpuinfo.jsonc b/Configs/.config/waybar/modules/gpuinfo.jsonc new file mode 100644 index 0000000..f9f5d61 --- /dev/null +++ b/Configs/.config/waybar/modules/gpuinfo.jsonc @@ -0,0 +1,41 @@ + "custom/gpuinfo": { + "exec": " gpuinfo.sh", + "return-type": "json", + "format": "{}", + "rotate": ${r_deg}, + "interval": 5, // once every 5 seconds + "tooltip": true, + "max-length": 1000, + "on-click": "gpuinfo.sh --toggle", + }, + + "custom/gpuinfo#nvidia": { + "exec": " gpuinfo.sh --use nvidia ", + "return-type": "json", + "format": "{}", + "rotate": ${r_deg}, + "interval": 5, // once every 5 seconds + "tooltip": true, + "max-length": 1000, + }, + + "custom/gpuinfo#amd": { + "exec": " gpuinfo.sh --use amd ", + "return-type": "json", + "format": "{}", + "rotate": ${r_deg}, + "interval": 5, // once every 5 seconds + "tooltip": true, + "max-length": 1000, + }, + + "custom/gpuinfo#intel": { + "exec": " gpuinfo.sh --use intel ", + "return-type": "json", + "format": "{}", + "rotate": ${r_deg}, + "interval": 5, // once every 5 seconds + "tooltip": true, + "max-length": 1000, + }, + diff --git a/Configs/.config/waybar/modules/header.jsonc b/Configs/.config/waybar/modules/header.jsonc new file mode 100644 index 0000000..fba2a5b --- /dev/null +++ b/Configs/.config/waybar/modules/header.jsonc @@ -0,0 +1,14 @@ +// --// waybar config generated by wbarconfgen.sh //-- // + +{ +// sourced from header module // + + "layer": "top", + "output": [ ${w_output} ], + "position": "${w_position}", + "mod": "dock", + "${hv_pos}": ${w_height}, + "exclusive": true, + "passthrough": false, + "gtk-layer-shell": true, + "reload_style_on_change": true, diff --git a/Configs/.config/waybar/modules/idle_inhibitor.jsonc b/Configs/.config/waybar/modules/idle_inhibitor.jsonc new file mode 100644 index 0000000..d109a95 --- /dev/null +++ b/Configs/.config/waybar/modules/idle_inhibitor.jsonc @@ -0,0 +1,9 @@ + "idle_inhibitor": { + "format": "{icon}", + "rotate": ${r_deg}, + "format-icons": { + "activated": "󰥔", + "deactivated": "" + } + }, + diff --git a/Configs/.config/waybar/modules/keybindhint.jsonc b/Configs/.config/waybar/modules/keybindhint.jsonc new file mode 100644 index 0000000..e9edd21 --- /dev/null +++ b/Configs/.config/waybar/modules/keybindhint.jsonc @@ -0,0 +1,6 @@ + "custom/keybindhint": { + "format": " ", + "rotate": ${r_deg}, + "on-click": "keybinds_hint.sh" + }, + diff --git a/Configs/.config/waybar/modules/language.jsonc b/Configs/.config/waybar/modules/language.jsonc new file mode 100644 index 0000000..6045d28 --- /dev/null +++ b/Configs/.config/waybar/modules/language.jsonc @@ -0,0 +1,6 @@ + "hyprland/language": { + "format": "{short} {variant}", + "rotate": ${r_deg}, + "on-click": "keyboardswitch.sh", + }, + diff --git a/Configs/.config/waybar/modules/memory.jsonc b/Configs/.config/waybar/modules/memory.jsonc new file mode 100644 index 0000000..1e2c8d8 --- /dev/null +++ b/Configs/.config/waybar/modules/memory.jsonc @@ -0,0 +1,18 @@ + "memory": { + "states": { + "c": 90, // critical + "h": 60, // high + "m": 30, // medium + }, + "interval": 30, + "format": "󰾆 {used}GB", + "rotate": ${r_deg}, + "format-m": "󰾅 {used}GB", + "format-h": "󰓅 {used}GB", + "format-c": " {used}GB", + "format-alt": "󰾆 {percentage}%", + "max-length": 10, + "tooltip": true, + "tooltip-format": "󰾆 {percentage}%\n {used:0.1f}GB/{total:0.1f}GB" + }, + diff --git a/Configs/.config/waybar/modules/mpris.jsonc b/Configs/.config/waybar/modules/mpris.jsonc new file mode 100644 index 0000000..04ff2cd --- /dev/null +++ b/Configs/.config/waybar/modules/mpris.jsonc @@ -0,0 +1,16 @@ + "mpris": { + "format": "{player_icon} {dynamic}", + "rotate": ${r_deg}, + "format-paused": "{status_icon} {dynamic}", + "player-icons": { + "default": "▶", + "mpv": "🎵" + }, + "status-icons": { + "paused": "" + }, + // "ignored-players": ["firefox"] + "max-length": 1000, + "interval": 1 + }, + diff --git a/Configs/.config/waybar/modules/network.jsonc b/Configs/.config/waybar/modules/network.jsonc new file mode 100644 index 0000000..1c5231d --- /dev/null +++ b/Configs/.config/waybar/modules/network.jsonc @@ -0,0 +1,13 @@ + "network": { + "tooltip": true, + "format-wifi": " ", + "rotate": ${r_deg}, + "format-ethernet": "󰈀 ", + "tooltip-format": "Network: {essid}\nSignal strength: {signaldBm}dBm ({signalStrength}%)\nFrequency: {frequency}MHz\nInterface: {ifname}\nIP: {ipaddr}/{cidr}\nGateway: {gwaddr}\nNetmask: {netmask}", + "format-linked": "󰈀 {ifname} (No IP)", + "format-disconnected": "󰖪 ", + "tooltip-format-disconnected": "Disconnected", + "format-alt": " {bandwidthDownBytes}  {bandwidthUpBytes}", + "interval": 2, + }, + diff --git a/Configs/.config/waybar/modules/notifications.jsonc b/Configs/.config/waybar/modules/notifications.jsonc new file mode 100644 index 0000000..9627e1f --- /dev/null +++ b/Configs/.config/waybar/modules/notifications.jsonc @@ -0,0 +1,29 @@ + "custom/notifications": { + // "format": "{icon} {}", + "format": "{} {icon}", // TODO: workaround for the module not showing up // revert when fixed + "rotate": ${r_deg}, + "format-icons": { + "email-notification": "", + "chat-notification": "󱋊", + "warning-notification": "󱨪", + "error-notification": "󱨪", + "network-notification": "󱂇", + "battery-notification": "󰁺", + "update-notification": "󰚰", + "music-notification": "󰝚", + "volume-notification": "󰕿", + "notification": "", + "dnd": "", + "none": "" + }, + "return-type": "json", + "exec-if": "which dunstctl", + "exec": "notifications.py", + "on-scroll-down": "sleep 0.1 && dunstctl history-pop", + "on-click": "dunstctl set-paused toggle", + "on-click-middle": "dunstctl history-clear", + "on-click-right": "dunstctl close-all", + "interval": 1, + "tooltip": true, + "escape": true + }, diff --git a/Configs/.config/waybar/modules/power.jsonc b/Configs/.config/waybar/modules/power.jsonc new file mode 100644 index 0000000..a41eaf6 --- /dev/null +++ b/Configs/.config/waybar/modules/power.jsonc @@ -0,0 +1,10 @@ + "custom/power": { + "format": "{}", + "rotate": ${r_deg}, + "exec": "echo ; echo  logout", + "on-click": "logoutlaunch.sh 2", + "on-click-right": "logoutlaunch.sh 1", + "interval" : 86400, // once every day + "tooltip": true + }, + diff --git a/Configs/.config/waybar/modules/privacy.jsonc b/Configs/.config/waybar/modules/privacy.jsonc new file mode 100644 index 0000000..8556586 --- /dev/null +++ b/Configs/.config/waybar/modules/privacy.jsonc @@ -0,0 +1,18 @@ + "privacy": { + "icon-size": ${i_priv}, + "icon-spacing": 5, + "transition-duration": 250, + "modules": [ + { + "type": "screenshare", + "tooltip": true, + "tooltip-icon-size": 24 + }, + { + "type": "audio-in", + "tooltip": true, + "tooltip-icon-size": 24 + } + ] + }, + diff --git a/Configs/.config/waybar/modules/pulseaudio.jsonc b/Configs/.config/waybar/modules/pulseaudio.jsonc new file mode 100644 index 0000000..c5770a7 --- /dev/null +++ b/Configs/.config/waybar/modules/pulseaudio.jsonc @@ -0,0 +1,35 @@ +"pulseaudio": { + "format": "{icon} {volume}", + "rotate": ${r_deg}, + "format-muted": "婢", + "on-click": "pavucontrol -t 3", + "on-click-right": "volumecontrol.sh -s ''", + "on-click-middle": "volumecontrol.sh -o m", + "on-scroll-up": "volumecontrol.sh -o i", + "on-scroll-down": "volumecontrol.sh -o d", + "tooltip-format": "{icon} {desc} // {volume}%", + "scroll-step": 5, + "format-icons": { + "headphone": "", + "hands-free": "", + "headset": "", + "phone": "", + "portable": "", + "car": "", + "default": ["", "", ""] + } +}, + +"pulseaudio#microphone": { + "format": "{format_source}", + "rotate": ${r_deg}, + "format-source": "", + "format-source-muted": "", + "on-click": "pavucontrol -t 4", + "on-click-middle": "volumecontrol.sh -i m", + "on-scroll-up": "volumecontrol.sh -i i", + "on-scroll-down": "volumecontrol.sh -i d", + "tooltip-format": "{format_source} {source_desc} // {source_volume}%", + "scroll-step": 5 +}, + diff --git a/Configs/.config/waybar/modules/spotify.jsonc b/Configs/.config/waybar/modules/spotify.jsonc new file mode 100644 index 0000000..13bd6bc --- /dev/null +++ b/Configs/.config/waybar/modules/spotify.jsonc @@ -0,0 +1,15 @@ + "custom/spotify": { + "exec": "mediaplayer.py --player spotify", + "format": " {}", + "rotate": ${r_deg}, + "return-type": "json", + "on-click": "playerctl play-pause --player spotify", + "on-click-right": "playerctl next --player spotify", + "on-click-middle": "playerctl previous --player spotify", + "on-scroll-up": "volumecontrol.sh -p spotify i", + "on-scroll-down": "volumecontrol.sh -p spotify d", + "max-length": 25, + "escape": true, + "tooltip": true + }, + diff --git a/Configs/.config/waybar/modules/style.css b/Configs/.config/waybar/modules/style.css new file mode 100644 index 0000000..93da5c3 --- /dev/null +++ b/Configs/.config/waybar/modules/style.css @@ -0,0 +1,151 @@ +* { + border: none; + border-radius: 0px; + font-family: "JetBrainsMono Nerd Font"; + font-weight: bold; + font-size: ${s_fontpx}px; + min-height: 10px; +} + +@import "theme.css"; + +window#waybar { + background: @bar-bg; +} + +tooltip { + background: @main-bg; + color: @main-fg; + border-radius: ${t_radius}px; + border-width: 0px; +} + +#workspaces button { + box-shadow: none; + text-shadow: none; + padding: 0px; + border-radius: ${w_radius}px; + margin-${x1}: ${w_margin}px; + margin-${x2}: ${w_margin}px; + margin-${x3}: 0px; + padding-${x3}: ${w_paddin}px; + padding-${x4}: ${w_paddin}px; + margin-${x4}: 0px; + color: @main-fg; + animation: ws_normal 20s ease-in-out 1; +} + +#workspaces button.active { + background: @wb-act-bg; + color: @wb-act-fg; + margin-${x3}: ${w_margin}px; + padding-${x3}: ${w_padact}px; + padding-${x4}: ${w_padact}px; + margin-${x4}: ${w_margin}px; + animation: ws_active 20s ease-in-out 1; + transition: all 0.4s cubic-bezier(.55,-0.68,.48,1.682); +} + +#workspaces button:hover { + background: @wb-hvr-bg; + color: @wb-hvr-fg; + animation: ws_hover 20s ease-in-out 1; + transition: all 0.3s cubic-bezier(.55,-0.68,.48,1.682); +} + +#taskbar button { + box-shadow: none; + text-shadow: none; + padding: 0px; + border-radius: ${w_radius}px; + margin-${x1}: ${w_margin}px; + margin-${x2}: ${w_margin}px; + margin-${x3}: 0px; + padding-${x3}: ${w_paddin}px; + padding-${x4}: ${w_paddin}px; + margin-${x4}: 0px; + color: @wb-color; + animation: tb_normal 20s ease-in-out 1; +} + +#taskbar button.active { + background: @wb-act-bg; + color: @wb-act-color; + margin-${x3}: ${w_margin}px; + padding-${x3}: ${w_padact}px; + padding-${x4}: ${w_padact}px; + margin-${x4}: ${w_margin}px; + animation: tb_active 20s ease-in-out 1; + transition: all 0.4s cubic-bezier(.55,-0.68,.48,1.682); +} + +#taskbar button:hover { + background: @wb-hvr-bg; + color: @wb-hvr-color; + animation: tb_hover 20s ease-in-out 1; + transition: all 0.3s cubic-bezier(.55,-0.68,.48,1.682); +} + +#tray menu * { + min-height: 16px +} + +#tray menu separator { + min-height: 10px +} + +${modules_ls} +#custom-l_end, +#custom-r_end, +#custom-sl_end, +#custom-sr_end, +#custom-rl_end, +#custom-rr_end { + color: @main-fg; + background: @main-bg; + opacity: 1; + margin: ${x1g_margin}px ${x2g_margin}px ${x3g_margin}px ${x4g_margin}px; + padding-${x3}: ${g_paddin}px; + padding-${x4}: ${g_paddin}px; +} + +#workspaces, +#taskbar { + padding: 0px; +} + +#custom-r_end { + border-radius: ${x1rb_radius}px ${x2rb_radius}px ${x3rb_radius}px ${x4rb_radius}px; + margin-${x4}: ${e_margin}px; + padding-${x4}: ${e_paddin}px; +} + +#custom-l_end { + border-radius: ${x1lb_radius}px ${x2lb_radius}px ${x3lb_radius}px ${x4lb_radius}px; + margin-${x3}: ${e_margin}px; + padding-${x3}: ${e_paddin}px; +} + +#custom-sr_end { + border-radius: 0px; + margin-${x4}: ${e_margin}px; + padding-${x4}: ${e_paddin}px; +} + +#custom-sl_end { + border-radius: 0px; + margin-${x3}: ${e_margin}px; + padding-${x3}: ${e_paddin}px; +} + +#custom-rr_end { + border-radius: ${x1rc_radius}px ${x2rc_radius}px ${x3rc_radius}px ${x4rc_radius}px; + margin-${x4}: ${e_margin}px; + padding-${x4}: ${e_paddin}px; +} + +#custom-rl_end { + border-radius: ${x1lc_radius}px ${x2lc_radius}px ${x3lc_radius}px ${x4lc_radius}px; + margin-${x3}: ${e_margin}px; + padding-${x3}: ${e_paddin}px; +} diff --git a/Configs/.config/waybar/modules/taskbar.jsonc b/Configs/.config/waybar/modules/taskbar.jsonc new file mode 100644 index 0000000..630d574 --- /dev/null +++ b/Configs/.config/waybar/modules/taskbar.jsonc @@ -0,0 +1,18 @@ + "wlr/taskbar": { + "format": "{icon}", + "rotate": ${r_deg}, + "icon-size": ${i_task}, + "icon-theme": "${i_theme}", + "spacing": 0, + "tooltip-format": "{title}", + "on-click": "activate", + "on-click-middle": "close", + "ignore-list": [ + "Alacritty" + ], + "app_ids-mapping": { + "firefoxdeveloperedition": "firefox-developer-edition", + "jetbrains-datagrip": "DataGrip" + } + }, + diff --git a/Configs/.config/waybar/modules/theme.jsonc b/Configs/.config/waybar/modules/theme.jsonc new file mode 100644 index 0000000..6482c6e --- /dev/null +++ b/Configs/.config/waybar/modules/theme.jsonc @@ -0,0 +1,11 @@ + "custom/theme": { + "format": "{}", + "rotate": ${r_deg}, + "exec": "echo ; echo 󰟡 switch theme", + "on-click": "themeswitch.sh -n", + "on-click-right": "themeswitch.sh -p", + "on-click-middle": "sleep 0.1 && themeselect.sh", + "interval" : 86400, // once every day + "tooltip": true + }, + diff --git a/Configs/.config/waybar/modules/tray.jsonc b/Configs/.config/waybar/modules/tray.jsonc new file mode 100644 index 0000000..d7c0bce --- /dev/null +++ b/Configs/.config/waybar/modules/tray.jsonc @@ -0,0 +1,6 @@ + "tray": { + "icon-size": ${i_size}, + "rotate": ${r_deg}, + "spacing": 5 + }, + diff --git a/Configs/.config/waybar/modules/updates.jsonc b/Configs/.config/waybar/modules/updates.jsonc new file mode 100644 index 0000000..996f732 --- /dev/null +++ b/Configs/.config/waybar/modules/updates.jsonc @@ -0,0 +1,10 @@ + "custom/updates": { + "exec": "systemupdate.sh", + "return-type": "json", + "format": "{}", + "rotate": ${r_deg}, + "on-click": "hyprctl dispatch exec 'systemupdate.sh up'", + "interval": 86400, // once every day + "tooltip": true, + "signal": 20, + }, diff --git a/Configs/.config/waybar/modules/wallchange.jsonc b/Configs/.config/waybar/modules/wallchange.jsonc new file mode 100644 index 0000000..0c839ca --- /dev/null +++ b/Configs/.config/waybar/modules/wallchange.jsonc @@ -0,0 +1,11 @@ + "custom/wallchange": { + "format": "{}", + "rotate": ${r_deg}, + "exec": "echo ; echo 󰆊 switch wallpaper", + "on-click": "swwwallpaper.sh -n", + "on-click-right": "swwwallpaper.sh -p", + "on-click-middle": "sleep 0.1 && swwwallselect.sh", + "interval" : 86400, // once every day + "tooltip": true + }, + diff --git a/Configs/.config/waybar/modules/wbar.jsonc b/Configs/.config/waybar/modules/wbar.jsonc new file mode 100644 index 0000000..7738657 --- /dev/null +++ b/Configs/.config/waybar/modules/wbar.jsonc @@ -0,0 +1,11 @@ + "custom/wbar": { + "format": "{}", //   // + "rotate": ${r_deg}, + "exec": "echo ; echo  switch bar //  dock", + "on-click": "wbarconfgen.sh n", + "on-click-right": "wbarconfgen.sh p", + "on-click-middle": "sleep 0.1 && quickapps.sh kitty firefox spotify code dolphin", + "interval" : 86400, + "tooltip": true + }, + diff --git a/Configs/.config/waybar/modules/window.jsonc b/Configs/.config/waybar/modules/window.jsonc new file mode 100644 index 0000000..b2fa83f --- /dev/null +++ b/Configs/.config/waybar/modules/window.jsonc @@ -0,0 +1,20 @@ + "hyprland/window": { + "format": "  {}", + "rotate": ${r_deg}, + "separate-outputs": true, + "rewrite": { + "(.*)${USER}@${set_sysname}:(.*)": "$1  :$2", + "(.*) — Mozilla Firefox": "$1 󰈹", + "(.*)Mozilla Firefox": "$1 Firefox 󰈹", + "(.*) - Visual Studio Code": "$1 󰨞", + "(.*)Visual Studio Code": "$1 Code 󰨞", + "(.*) — Dolphin": "$1 󰉋", + "(.*)Spotify.*": "$1 Spotify 󰓇", + "(.*)Steam": "$1 Steam 󰓓", + "(.*) - Discord": "$1  ", + "(.*?)-\\s*YouTube(.*)": "$1󰗃", + "(.*?\\s)YouTube(.*)": "$1YouTube 󰗃" + }, + "max-length": 50 + }, + diff --git a/Configs/.config/waybar/modules/workspaces.jsonc b/Configs/.config/waybar/modules/workspaces.jsonc new file mode 100644 index 0000000..c1e580a --- /dev/null +++ b/Configs/.config/waybar/modules/workspaces.jsonc @@ -0,0 +1,13 @@ + "hyprland/workspaces": { + "disable-scroll": true, + "rotate": ${r_deg}, + "all-outputs": true, + "active-only": false, + "on-click": "activate", + "disable-scroll": false, + "on-scroll-up": "hyprctl dispatch workspace -1", + "on-scroll-down": "hyprctl dispatch workspace +1", + "persistent-workspaces": { + } + }, + diff --git a/Configs/.config/waybar/style.css b/Configs/.config/waybar/style.css new file mode 100644 index 0000000..2715b2a --- /dev/null +++ b/Configs/.config/waybar/style.css @@ -0,0 +1,176 @@ +* { + border: none; + border-radius: 0px; + font-family: "JetBrainsMono Nerd Font"; + font-weight: bold; + font-size: 10px; + min-height: 10px; +} + +@import "theme.css"; + +window#waybar { + background: @bar-bg; +} + +tooltip { + background: @main-bg; + color: @main-fg; + border-radius: 7px; + border-width: 0px; +} + +#workspaces button { + box-shadow: none; + text-shadow: none; + padding: 0px; + border-radius: 9px; + margin-top: 3px; + margin-bottom: 3px; + margin-left: 0px; + padding-left: 3px; + padding-right: 3px; + margin-right: 0px; + color: @main-fg; + animation: ws_normal 20s ease-in-out 1; +} + +#workspaces button.active { + background: @wb-act-bg; + color: @wb-act-fg; + margin-left: 3px; + padding-left: 12px; + padding-right: 12px; + margin-right: 3px; + animation: ws_active 20s ease-in-out 1; + transition: all 0.4s cubic-bezier(.55,-0.68,.48,1.682); +} + +#workspaces button:hover { + background: @wb-hvr-bg; + color: @wb-hvr-fg; + animation: ws_hover 20s ease-in-out 1; + transition: all 0.3s cubic-bezier(.55,-0.68,.48,1.682); +} + +#taskbar button { + box-shadow: none; + text-shadow: none; + padding: 0px; + border-radius: 9px; + margin-top: 3px; + margin-bottom: 3px; + margin-left: 0px; + padding-left: 3px; + padding-right: 3px; + margin-right: 0px; + color: @wb-color; + animation: tb_normal 20s ease-in-out 1; +} + +#taskbar button.active { + background: @wb-act-bg; + color: @wb-act-color; + margin-left: 3px; + padding-left: 12px; + padding-right: 12px; + margin-right: 3px; + animation: tb_active 20s ease-in-out 1; + transition: all 0.4s cubic-bezier(.55,-0.68,.48,1.682); +} + +#taskbar button:hover { + background: @wb-hvr-bg; + color: @wb-hvr-color; + animation: tb_hover 20s ease-in-out 1; + transition: all 0.3s cubic-bezier(.55,-0.68,.48,1.682); +} + +#tray menu * { + min-height: 16px +} + +#tray menu separator { + min-height: 10px +} + +#backlight, +#battery, +#bluetooth, +#custom-cliphist, +#clock, +#custom-cpuinfo, +#cpu, +#custom-gpuinfo, +#idle_inhibitor, +#custom-keybindhint, +#language, +#memory, +#mpris, +#network, +#custom-notifications, +#custom-power, +#pulseaudio, +#custom-spotify, +#taskbar, +#custom-theme, +#tray, +#custom-updates, +#custom-wallchange, +#custom-wbar, +#window, +#workspaces, +#custom-l_end, +#custom-r_end, +#custom-sl_end, +#custom-sr_end, +#custom-rl_end, +#custom-rr_end { + color: @main-fg; + background: @main-bg; + opacity: 1; + margin: 4px 0px 4px 0px; + padding-left: 4px; + padding-right: 4px; +} + +#workspaces, +#taskbar { + padding: 0px; +} + +#custom-r_end { + border-radius: 0px 21px 21px 0px; + margin-right: 9px; + padding-right: 3px; +} + +#custom-l_end { + border-radius: 21px 0px 0px 21px; + margin-left: 9px; + padding-left: 3px; +} + +#custom-sr_end { + border-radius: 0px; + margin-right: 9px; + padding-right: 3px; +} + +#custom-sl_end { + border-radius: 0px; + margin-left: 9px; + padding-left: 3px; +} + +#custom-rr_end { + border-radius: 0px 7px 7px 0px; + margin-right: 9px; + padding-right: 3px; +} + +#custom-rl_end { + border-radius: 7px 0px 0px 7px; + margin-left: 9px; + padding-left: 3px; +} diff --git a/Configs/.config/waybar/theme.css b/Configs/.config/waybar/theme.css new file mode 100644 index 0000000..89b79d0 --- /dev/null +++ b/Configs/.config/waybar/theme.css @@ -0,0 +1,10 @@ +@define-color bar-bg rgba(0, 0, 0, 0); + +@define-color main-bg #11111b; +@define-color main-fg #cdd6f4; + +@define-color wb-act-bg #a6adc8; +@define-color wb-act-fg #313244; + +@define-color wb-hvr-bg #f5c2e7; +@define-color wb-hvr-fg #313244; diff --git a/Configs/.config/wlogout/icons/hibernate_black.png b/Configs/.config/wlogout/icons/hibernate_black.png new file mode 100644 index 0000000..6f98a08 Binary files /dev/null and b/Configs/.config/wlogout/icons/hibernate_black.png differ diff --git a/Configs/.config/wlogout/icons/hibernate_white.png b/Configs/.config/wlogout/icons/hibernate_white.png new file mode 100644 index 0000000..cea1ebc Binary files /dev/null and b/Configs/.config/wlogout/icons/hibernate_white.png differ diff --git a/Configs/.config/wlogout/icons/lock_black.png b/Configs/.config/wlogout/icons/lock_black.png new file mode 100644 index 0000000..b4c8c52 Binary files /dev/null and b/Configs/.config/wlogout/icons/lock_black.png differ diff --git a/Configs/.config/wlogout/icons/lock_white.png b/Configs/.config/wlogout/icons/lock_white.png new file mode 100644 index 0000000..2925c26 Binary files /dev/null and b/Configs/.config/wlogout/icons/lock_white.png differ diff --git a/Configs/.config/wlogout/icons/logout_black.png b/Configs/.config/wlogout/icons/logout_black.png new file mode 100644 index 0000000..b918ce7 Binary files /dev/null and b/Configs/.config/wlogout/icons/logout_black.png differ diff --git a/Configs/.config/wlogout/icons/logout_white.png b/Configs/.config/wlogout/icons/logout_white.png new file mode 100644 index 0000000..33ecdc1 Binary files /dev/null and b/Configs/.config/wlogout/icons/logout_white.png differ diff --git a/Configs/.config/wlogout/icons/reboot_black.png b/Configs/.config/wlogout/icons/reboot_black.png new file mode 100644 index 0000000..0bbf256 Binary files /dev/null and b/Configs/.config/wlogout/icons/reboot_black.png differ diff --git a/Configs/.config/wlogout/icons/reboot_white.png b/Configs/.config/wlogout/icons/reboot_white.png new file mode 100644 index 0000000..e4a6987 Binary files /dev/null and b/Configs/.config/wlogout/icons/reboot_white.png differ diff --git a/Configs/.config/wlogout/icons/shutdown_black.png b/Configs/.config/wlogout/icons/shutdown_black.png new file mode 100644 index 0000000..e57ea3a Binary files /dev/null and b/Configs/.config/wlogout/icons/shutdown_black.png differ diff --git a/Configs/.config/wlogout/icons/shutdown_white.png b/Configs/.config/wlogout/icons/shutdown_white.png new file mode 100644 index 0000000..a8892ae Binary files /dev/null and b/Configs/.config/wlogout/icons/shutdown_white.png differ diff --git a/Configs/.config/wlogout/icons/suspend_black.png b/Configs/.config/wlogout/icons/suspend_black.png new file mode 100644 index 0000000..e307b6e Binary files /dev/null and b/Configs/.config/wlogout/icons/suspend_black.png differ diff --git a/Configs/.config/wlogout/icons/suspend_white.png b/Configs/.config/wlogout/icons/suspend_white.png new file mode 100644 index 0000000..ee09b8c Binary files /dev/null and b/Configs/.config/wlogout/icons/suspend_white.png differ diff --git a/Configs/.config/wlogout/layout_1 b/Configs/.config/wlogout/layout_1 new file mode 100644 index 0000000..3aa0636 --- /dev/null +++ b/Configs/.config/wlogout/layout_1 @@ -0,0 +1,41 @@ +{ + "label" : "lock", + "action" : "swaylock", + "text" : "Lock", + "keybind" : "l" +} + +{ + "label" : "logout", + "action" : "hyprctl dispatch exit 0", + "text" : "Logout", + "keybind" : "e" +} + +{ + "label" : "suspend", + "action" : "swaylock -f && systemctl suspend", + "text" : "Suspend", + "keybind" : "u" +} + +{ + "label" : "shutdown", + "action" : "systemctl poweroff", + "text" : "Shutdown", + "keybind" : "s" +} + +{ + "label" : "hibernate", + "action" : "systemctl hibernate", + "text" : "Hibernate", + "keybind" : "h" +} + +{ + "label" : "reboot", + "action" : "systemctl reboot", + "text" : "Reboot", + "keybind" : "r" +} diff --git a/Configs/.config/wlogout/layout_2 b/Configs/.config/wlogout/layout_2 new file mode 100644 index 0000000..9876330 --- /dev/null +++ b/Configs/.config/wlogout/layout_2 @@ -0,0 +1,27 @@ +{ + "label" : "lock", + "action" : "swaylock", + "text" : "Lock", + "keybind" : "l" +} + +{ + "label" : "logout", + "action" : "hyprctl dispatch exit 0", + "text" : "Logout", + "keybind" : "e" +} + +{ + "label" : "shutdown", + "action" : "systemctl poweroff", + "text" : "Shutdown", + "keybind" : "s" +} + +{ + "label" : "reboot", + "action" : "systemctl reboot", + "text" : "Reboot", + "keybind" : "r" +} diff --git a/Configs/.config/wlogout/style_1.css b/Configs/.config/wlogout/style_1.css new file mode 100644 index 0000000..b0e6650 --- /dev/null +++ b/Configs/.config/wlogout/style_1.css @@ -0,0 +1,104 @@ +* { + background-image: none; + font-size: ${fntSize}px; +} + +@import "$HOME/.config/waybar/theme.css"; + +window { + background-color: transparent; +} + +button { + color: ${BtnCol}; + background-color: @main-bg; + outline-style: none; + border: none; + border-width: 0px; + background-repeat: no-repeat; + background-position: center; + background-size: 20%; + border-radius: 0px; + box-shadow: none; + text-shadow: none; + animation: gradient_f 20s ease-in infinite; +} + +button:focus { + background-color: @wb-act-bg; + background-size: 30%; +} + +button:hover { + background-color: @wb-hvr-bg; + background-size: 40%; + border-radius: ${active_rad}px; + animation: gradient_f 20s ease-in infinite; + transition: all 0.3s cubic-bezier(.55,0.0,.28,1.682); +} + +button:hover#lock { + border-radius: ${active_rad}px; + margin : ${hvr}px 0px ${hvr}px ${mgn}px; +} + +button:hover#logout { + border-radius: ${active_rad}px; + margin : ${hvr}px 0px ${hvr}px 0px; +} + +button:hover#suspend { + border-radius: ${active_rad}px; + margin : ${hvr}px 0px ${hvr}px 0px; +} + +button:hover#shutdown { + border-radius: ${active_rad}px; + margin : ${hvr}px 0px ${hvr}px 0px; +} + +button:hover#hibernate { + border-radius: ${active_rad}px; + margin : ${hvr}px 0px ${hvr}px 0px; +} + +button:hover#reboot { + border-radius: ${active_rad}px; + margin : ${hvr}px ${mgn}px ${hvr}px 0px; +} + +#lock { + background-image: image(url("$HOME/.config/wlogout/icons/lock_${BtnCol}.png"), url("/usr/share/wlogout/icons/lock.png"), url("/usr/local/share/wlogout/icons/lock.png")); + border-radius: ${button_rad}px 0px 0px ${button_rad}px; + margin : ${mgn}px 0px ${mgn}px ${mgn}px; +} + +#logout { + background-image: image(url("$HOME/.config/wlogout/icons/logout_${BtnCol}.png"), url("/usr/share/wlogout/icons/logout.png"), url("/usr/local/share/wlogout/icons/logout.png")); + border-radius: 0px 0px 0px 0px; + margin : ${mgn}px 0px ${mgn}px 0px; +} + +#suspend { + background-image: image(url("$HOME/.config/wlogout/icons/suspend_${BtnCol}.png"), url("/usr/share/wlogout/icons/suspend.png"), url("/usr/local/share/wlogout/icons/suspend.png")); + border-radius: 0px 0px 0px 0px; + margin : ${mgn}px 0px ${mgn}px 0px; +} + +#shutdown { + background-image: image(url("$HOME/.config/wlogout/icons/shutdown_${BtnCol}.png"), url("/usr/share/wlogout/icons/shutdown.png"), url("/usr/local/share/wlogout/icons/shutdown.png")); + border-radius: 0px 0px 0px 0px; + margin : ${mgn}px 0px ${mgn}px 0px; +} + +#hibernate { + background-image: image(url("$HOME/.config/wlogout/icons/hibernate_${BtnCol}.png"), url("/usr/share/wlogout/icons/hibernate.png"), url("/usr/local/share/wlogout/icons/hibernate.png")); + border-radius: 0px 0px 0px 0px; + margin : ${mgn}px 0px ${mgn}px 0px; +} + +#reboot { + background-image: image(url("$HOME/.config/wlogout/icons/reboot_${BtnCol}.png"), url("/usr/share/wlogout/icons/reboot.png"), url("/usr/local/share/wlogout/icons/reboot.png")); + border-radius: 0px ${button_rad}px ${button_rad}px 0px; + margin : ${mgn}px ${mgn}px ${mgn}px 0px; +} diff --git a/Configs/.config/wlogout/style_2.css b/Configs/.config/wlogout/style_2.css new file mode 100644 index 0000000..2435dba --- /dev/null +++ b/Configs/.config/wlogout/style_2.css @@ -0,0 +1,82 @@ +* { + background-image: none; + font-size: ${fntSize}px; +} + +@import "$HOME/.config/waybar/theme.css"; + +window { + background-color: transparent; +} + +button { + color: ${BtnCol}; + background-color: @main-bg; + outline-style: none; + border: none; + border-width: 0px; + background-repeat: no-repeat; + background-position: center; + background-size: 10%; + border-radius: 0px; + box-shadow: none; + text-shadow: none; + animation: gradient_f 20s ease-in infinite; +} + +button:focus { + background-color: @wb-act-bg; + background-size: 20%; +} + +button:hover { + background-color: @wb-hvr-bg; + background-size: 25%; + border-radius: ${active_rad}px; + animation: gradient_f 20s ease-in infinite; + transition: all 0.3s cubic-bezier(.55,0.0,.28,1.682); +} + +button:hover#lock { + border-radius: ${active_rad}px ${active_rad}px 0px ${active_rad}px; + margin : ${y_hvr}px 0px 0px ${x_hvr}px; +} + +button:hover#logout { + border-radius: ${active_rad}px 0px ${active_rad}px ${active_rad}px; + margin : 0px 0px ${y_hvr}px ${x_hvr}px; +} + +button:hover#shutdown { + border-radius: ${active_rad}px ${active_rad}px ${active_rad}px 0px; + margin : ${y_hvr}px ${x_hvr}px 0px 0px; +} + +button:hover#reboot { + border-radius: 0px ${active_rad}px ${active_rad}px ${active_rad}px; + margin : 0px ${x_hvr}px ${y_hvr}px 0px; +} + +#lock { + background-image: image(url("$HOME/.config/wlogout/icons/lock_${BtnCol}.png"), url("/usr/share/wlogout/icons/lock.png"), url("/usr/local/share/wlogout/icons/lock.png")); + border-radius: ${button_rad}px 0px 0px 0px; + margin : ${y_mgn}px 0px 0px ${x_mgn}px; +} + +#logout { + background-image: image(url("$HOME/.config/wlogout/icons/logout_${BtnCol}.png"), url("/usr/share/wlogout/icons/logout.png"), url("/usr/local/share/wlogout/icons/logout.png")); + border-radius: 0px 0px 0px ${button_rad}px; + margin : 0px 0px ${y_mgn}px ${x_mgn}px; +} + +#shutdown { + background-image: image(url("$HOME/.config/wlogout/icons/shutdown_${BtnCol}.png"), url("/usr/share/wlogout/icons/shutdown.png"), url("/usr/local/share/wlogout/icons/shutdown.png")); + border-radius: 0px ${button_rad}px 0px 0px; + margin : ${y_mgn}px ${x_mgn}px 0px 0px; +} + +#reboot { + background-image: image(url("$HOME/.config/wlogout/icons/reboot_${BtnCol}.png"), url("/usr/share/wlogout/icons/reboot.png"), url("/usr/local/share/wlogout/icons/reboot.png")); + border-radius: 0px 0px ${button_rad}px 0px; + margin : 0px ${x_mgn}px ${y_mgn}px 0px; +} diff --git a/Configs/.config/xsettingsd/xsettingsd.conf b/Configs/.config/xsettingsd/xsettingsd.conf new file mode 100644 index 0000000..61bb2b0 --- /dev/null +++ b/Configs/.config/xsettingsd/xsettingsd.conf @@ -0,0 +1,9 @@ +Net/ThemeName "Catppuccin-Mocha" +Net/IconThemeName "Tela-circle-dracula" +Gtk/CursorThemeName "Bibata-Modern-Ice" +Net/EnableEventSounds 1 +EnableInputFeedbackSounds 0 +Xft/Antialias 1 +Xft/Hinting 1 +Xft/HintStyle "hintfull" +Xft/RGBA "rgb" diff --git a/Configs/.gtkrc-2.0 b/Configs/.gtkrc-2.0 new file mode 100644 index 0000000..e3029dc --- /dev/null +++ b/Configs/.gtkrc-2.0 @@ -0,0 +1,19 @@ +# DO NOT EDIT! This file will be overwritten by nwg-look. +# Any customization should be done in ~/.gtkrc-2.0.mine instead. + +include "~/.gtkrc-2.0.mine" +gtk-theme-name="Catppuccin-Mocha" +gtk-icon-theme-name="Tela-circle-dracula" +gtk-font-name="Cantarell 10" +gtk-cursor-theme-name="Bibata-Modern-Ice" +gtk-cursor-theme-size=20 +gtk-toolbar-style=GTK_TOOLBAR_ICONS +gtk-toolbar-icon-size=GTK_ICON_SIZE_LARGE_TOOLBAR +gtk-button-images=0 +gtk-menu-images=0 +gtk-enable-event-sounds=1 +gtk-enable-input-feedback-sounds=0 +gtk-xft-antialias=1 +gtk-xft-hinting=1 +gtk-xft-hintstyle="hintfull" +gtk-xft-rgba="rgb" diff --git a/Configs/.icons/default/index.theme b/Configs/.icons/default/index.theme new file mode 100644 index 0000000..87185a6 --- /dev/null +++ b/Configs/.icons/default/index.theme @@ -0,0 +1,5 @@ +# This file is written by nwg-look. Do not edit. +[Icon Theme] +Name=Default +Comment=Default Cursor Theme +Inherits=Bibata-Modern-Ice diff --git a/Configs/.local/share/bin/amdgpu.py b/Configs/.local/share/bin/amdgpu.py new file mode 100755 index 0000000..c273375 --- /dev/null +++ b/Configs/.local/share/bin/amdgpu.py @@ -0,0 +1,83 @@ +import pyamdgpuinfo +import json + +def format_frequency(frequency_hz: int) -> str: + """ + Takes a frequency (in Hz) and normalizes it: `Hz`, `MHz`, or `GHz` + + Returns: + str: frequency string with the appropriate suffix applied + """ + return ( + format_size(frequency_hz, binary=False) + .replace("B", "Hz") + .replace("bytes", "Hz") + ) + +def format_size(size: int, binary=True) -> str: + """ + Format size in bytes to a human-readable format. + + Args: + size (int): Size in bytes. + binary (bool): If True, use binary (base 1024) units. + + Returns: + str: Formatted size string. + """ + suffixes = ["B", "KiB", "MiB", "GiB", "TiB"] if binary else ["B", "KB", "MB", "GB", "TB"] + base = 1024 if binary else 1000 + index = 0 + + while size >= base and index < len(suffixes) - 1: + size /= base + index += 1 + + return f"{size:.0f} {suffixes[index]}" + +def main(): + # Detect the number of GPUs available + n_devices = pyamdgpuinfo.detect_gpus() + + if n_devices == 0: + print("No AMD GPUs detected.") + return + + # Get GPU information for the first GPU (index 0) + first_gpu = pyamdgpuinfo.get_gpu(0) + + try: + # Query GPU temperature + temperature = first_gpu.query_temperature() + temperature = f"{temperature:.0f}°C" # Format temperature to 2 digits with "°C" + + # Query GPU core clock + core_clock_hz = first_gpu.query_sclk() # In Hz + formatted_core_clock = format_frequency(core_clock_hz) + + # Query GPU power consumption + power_usage = first_gpu.query_power() + + # Query GPU load + gpu_load = first_gpu.query_load() + formatted_gpu_load = f"{gpu_load:.1f}%" # Format GPU load to 1 decimal place + + # Create a dictionary with the GPU information + gpu_info = { + "GPU Temperature": temperature, + "GPU Load": formatted_gpu_load, + "GPU Core Clock": formatted_core_clock, + "GPU Power Usage": f"{power_usage} Watts" + } + + # Convert the dictionary to a JSON string, ensure_ascii=False to prevent escaping + json_output = json.dumps(gpu_info, ensure_ascii=False) + + # Print the JSON string + print(json_output) + + except Exception as e: + print(f"Error: {str(e)}") + +if __name__ == "__main__": + main() diff --git a/Configs/.local/share/bin/batterynotify.sh b/Configs/.local/share/bin/batterynotify.sh new file mode 100755 index 0000000..0cb5b46 --- /dev/null +++ b/Configs/.local/share/bin/batterynotify.sh @@ -0,0 +1,228 @@ +#!/usr/bin/env bash + +undock=false +scrDir=$(dirname "$(realpath "$0")") +source $scrDir/globalcontrol.sh +batterynotify_conf="${hydeConfDir}/hyde.conf" # Shared with hyde configuration +config_info() { +cat << EOF + +Modify $batterynotify_conf to set options. + + STATUS THRESHOLD INTERVAL + Full $battery_full_threshold $notify Minutes + Critical $battery_critical_threshold $timer Seconds then '$execute_critical' + Low $battery_low_threshold $interval Percent then '$execute_low' + Unplug $unplug_charger_threshold $interval Percent then '$execute_unplug' + + Charging: $execute_charging + Discharging: $execute_discharging +EOF +} + +is_laptop() { # Check if the system is a laptop + if grep -q "Battery" /sys/class/power_supply/BAT*/type; then + return 0 # It's a laptop + else + echo "No battery detected. If you think this is an error please post a report to the repo" + exit 0 # It's not a laptop + fi +} +is_laptop +fn_verbose () { +if $verbose; then +cat << VERBOSE +============================================= + Battery Status: $battery_status + Battery Percentage: $battery_percentage +============================================= +VERBOSE +fi +} +fn_notify () { # Send notification + + notify-send -a "Power" $1 -u $2 "$3" "$4" -p # Call the notify-send command with the provided arguments \$1 is the flags \$2 is the urgency \$3 is the title \$4 is the message +} +fn_percentage () { + if [[ "$battery_percentage" -ge "$unplug_charger_threshold" ]] && [[ "$battery_status" != "Discharging" ]] && [[ "$battery_status" != "Full" ]] && (( (battery_percentage - last_notified_percentage) >= $interval )); then if $verbose; then echo "Prompt:UNPLUG: $battery_unplug_threshold $battery_status $battery_percentage" ; fi + fn_notify "-t 5000 " "CRITICAL" "Battery Charged" "Battery is at $battery_percentage%. You can unplug the charger!" + last_notified_percentage=$battery_percentage + elif [[ "$battery_percentage" -le "$battery_critical_threshold" ]]; then + count=$(( timer > $mnt ? timer : $mnt )) # reset count + while [ $count -gt 0 ] && [[ $battery_status == "Discharging"* ]]; do + for battery in /sys/class/power_supply/BAT*; do battery_status=$(< "$battery/status") ; done + if [[ $battery_status != "Discharging" ]] ; then break ; fi + fn_notify "-t 5000 -r 69 " "CRITICAL" "Battery Critically Low" "$battery_percentage% is critically low. Device will execute $execute_critical in $((count/60)):$((count%60)) ." + count=$((count-1)) + sleep 1 + done + [ $count -eq 0 ] && fn_action + elif [[ "$battery_percentage" -le "$battery_low_threshold" ]] && [[ "$battery_status" == "Discharging" ]] && (( (last_notified_percentage - battery_percentage) >= $interval )); then if $verbose; then echo "Prompt:LOW: $battery_low_threshold $battery_status $battery_percentage" ; fi + fn_notify "-t 5000 " "CRITICAL" "Battery Low" "Battery is at $battery_percentage%. Connect the charger." + last_notified_percentage=$battery_percentage + fi +} +fn_action () { #handles the $execute_critical command #? This is special as it will try to execute always + count=$(( timer > $mnt ? timer : $mnt )) # reset count + nohup $execute_critical +} + +fn_status () { +if [[ $battery_percentage -ge $battery_full_threshold ]] && [[ "$battery_status" != *"Discharging"* ]]; then echo "Full and $battery_status" + battery_status="Full" ;fi +case "$battery_status" in # Handle the power supply status + "Discharging") if $verbose; then echo "Case:$battery_status Level: $battery_percentage" ;fi + if [[ "$prev_status" != "Discharging" ]] || [[ "$prev_status" == "Full" ]] ; then + prev_status=$battery_status + urgency=$([[ $battery_percentage -le "$battery_low_threshold" ]] && echo "CRITICAL" || echo "NORMAL") + fn_notify "-t 5000 -r 54321 " "$urgency" "Charger Plug OUT" "Battery is at $battery_percentage%." + $execute_discharging + fi + fn_percentage + ;; + "Not"*|"Charging") if $verbose; then echo "Case:$battery_status Level: $battery_percentage" ;fi + if [[ "$prev_status" == "Discharging" ]] || [[ "$prev_status" == "Not"* ]] ; then + prev_status=$battery_status + count=$(( timer > $mnt ? timer : $mnt )) # reset count + urgency=$([[ "$battery_percentage" -ge $unplug_charger_threshold ]] && echo "CRITICAL" || echo "NORMAL") + fn_notify "-t 5000 -r 54321 " "$urgency" "Charger Plug In" "Battery is at $battery_percentage%." + $execute_charging + fi + fn_percentage + ;; + "Full") if $verbose; then echo "Case:$battery_status Level: $battery_percentage" ;fi + if [[ $battery_status != "Discharging" ]]; then + now=$(date +%s) + if [[ "$prev_status" == *"harging"* ]] || ((now - lt >= $((notify*60)) )); then + fn_notify "-t 5000 -r 54321" "CRITICAL" "Battery Full" "Please unplug your Charger" + prev_status=$battery_status lt=$now + $execute_charging + fi + fi + ;; + *) + if [[ ! -f "/tmp/hyprdots.batterynotify.status.fallback.$battery_status-$$" ]]; then + echo "Status: '==>> "$battery_status" <<==' Script on Fallback mode,Unknown power supply status.Please copy this line and raise an issue to the Github Repo.Also run 'ls /tmp/hyprdots.batterynotify' to see the list of lock files.*" + touch "/tmp/hyprdots.batterynotify.status.fallback.$battery_status-$$" + fi + fn_percentage + ;; + esac +} + +get_battery_info() { #TODO Might change this if we can get an effective way to parse dbus. I will do it some time... + total_percentage=0 battery_count=0 + for battery in /sys/class/power_supply/BAT*; do + battery_status=$(<"$battery/status") battery_percentage=$(<"$battery/capacity") + total_percentage=$((total_percentage + battery_percentage)) + battery_count=$((battery_count + 1)) + done + battery_percentage=$((total_percentage / battery_count)) #? For Multiple Battery +} + +fn_status_change () { # Handle when status changes +get_battery_info + # Add these two lines at the beginning of the function + local executed_low=false + local executed_unplug=false + + if [ "$battery_status" != "$last_battery_status" ] || [ "$battery_percentage" != "$last_battery_percentage" ]; then + last_battery_status=$battery_status + last_battery_percentage=$battery_percentage # Check if battery status or percentage has changed + fn_verbose + fn_percentage + + if [[ "$battery_percentage" -le "$battery_low_threshold" ]] && ! $executed_low; then $execute_low + executed_low=true executed_unplug=false + fi + if [[ "$battery_percentage" -ge "$unplug_charger_threshold" ]] && ! $executed_unplug; then $execute_unplug + executed_unplug=true executed_low=false + fi + + if $undock; then fn_status; fi + fi +} + +# resume_processes() { for pid in $pids ; do if [ "$pid" -ne "$current_pid" ] ; then kill -CONT $pid ; notify-send -a "Battery Notify" -t 2000 -r 9889 -u "CRITICAL" "Debugging ENDED, Resuming Regular Process" ; fi ; done } + +main() { # Main function +rm -fr /tmp/hyprdots.batterynotify* # Cleaning the lock file +battery_full_threshold=${battery_full_threshold:-100} +battery_critical_threshold=${battery_critical_threshold:-5} +unplug_charger_threshold=${unplug_charger_threshold:-80} +battery_low_threshold=${battery_low_threshold:-20} +timer=${timer:-120} +notify=${notify:-1140} +interval=${interval:-5} +execute_critical=${execute_critical:-"systemctl suspend"} +execute_low=${execute_low:-} +execute_unplug=${execute_unplug:-} + +config_info +if $verbose; then for line in "Verbose Mode is ON..." "" "" "" "" ; do echo $line ; done; +#TODO Might still need this in the future but for now we don't have any battery notify issues +# current_pid=$$ +# pids=$(pgrep -f "/usr/bin/env bash ${scrDir}/batterynotify.sh" ) +# for pid in $pids ; do if [ "$pid" -ne $current_pid ] ;then kill -STOP "$pid" ;notify-send -a "Battery Notify" -t 2000 -r 9889 -u "CRITICAL" "Debugging STARTED, Pausing Regular Process" ;fi ; done ; trap resume_processes SIGINT ; +fi + get_battery_info # initiate the function + last_notified_percentage=$battery_percentage + prev_status=$battery_status +dbus-monitor --system "type='signal',interface='org.freedesktop.DBus.Properties',path='$(upower -e | grep battery)'" 2> /dev/null | while read -r battery_status_change; do fn_status_change ; done +} + +verbose=false + case "$1" in + -m|--modify) + EDITOR="${EDITOR:-code}" #* Use VS Code as the default editor + echo -e "[Editor]: $EDITOR \n To change editor, run 'export EDITOR=preferred-editor' \n[Modifying]: $batterynotify_conf \nPress Any Key if done editing" + #kitty -o allow_remote_control=yes -o listen_on=unix:/tmp/mykitty $(which $EDITOR) "$batterynotify_conf" > /dev/null 2>&1 & + kitty "$(which $EDITOR)" "$batterynotify_conf" > /dev/null 2>&1 & + LAST_MD5SUM=$(md5sum "$batterynotify_conf") + while true; do CURRENT_MD5SUM=$(md5sum "$batterynotify_conf") + if [ "$CURRENT_MD5SUM" != "$LAST_MD5SUM" ]; then + notify-send "Config Changed: Needs reboot or restart $0" + LAST_MD5SUM="$CURRENT_MD5SUM" + fi ; read -t 2 -n 1 > /dev/null && break #? loop every 2 seconds + done + exit 0 + ;; + -i|--info) + config_info + exit 0 + ;; + -v|--verbose) + verbose=true + ;; + -*) + cat << HELP +Usage: $0 [options] + +[-m|--modify] Modify configuration file +[-i|--info] Display configuration information +[-v|--verbose] Debugging mode +[-h|--help] This Message +HELP + exit 0 + ;; + esac + +mnc=2 mxc=50 mnl=10 mxl=80 mnu=50 mxu=100 mnt=60 mxt=1000 mnf=80 mxf=100 mnn=1 mxn=1140 mni=1 mxi=10 #Defaults Ranges +check_range() { + local var=$1 min=$2 max=$3 error_message=$4 + if [[ $var =~ ^[0-9]+$ ]] && (( var >= min && var <= max )); then + var=$var ; shift 2 + else + echo -e "$1 WARNING: $error_message must be $min - $max." >&2 + fi +} + + check_range "$battery_full_threshold" $mnf $mxf "Full Threshold" + check_range "$battery_critical_threshold" $mnc $mxc "Critical Threshold" + check_range "$battery_low_threshold" $mnl $mxl "Low Threshold" + check_range "$unplug_charger_threshold" $mnu $mxu "Unplug Threshold" + check_range "$timer" $mnt $mxt "Timer" + check_range "$notify" $mnn $mxn "Notify" + check_range "$interval" $mni $mxi "Interval" + +main diff --git a/Configs/.local/share/bin/brightnesscontrol.sh b/Configs/.local/share/bin/brightnesscontrol.sh new file mode 100755 index 0000000..d8cd380 --- /dev/null +++ b/Configs/.local/share/bin/brightnesscontrol.sh @@ -0,0 +1,111 @@ +#!/usr/bin/env sh + +# Check if the script is already running +pgrep -cf "${0##*/}" | grep -qv 1 && echo "An instance of the script is already running..." && exit 1 + +scrDir=`dirname "$(realpath "$0")"` +source $scrDir/globalcontrol.sh + +# Check if SwayOSD is installed +use_swayosd=false +if command -v swayosd-client >/dev/null 2>&1 && pgrep -x swayosd-server >/dev/null; then + use_swayosd=true +fi + +print_error() +{ +cat << EOF + $(basename ${0}) [step] [mode] + ...valid actions are... + i -- ncrease brightness [+5%] + d -- ecrease brightness [-5%] + + Example: + $(basename ${0}) i 10 # Increase brightness by 10% + $(basename ${0}) d # Decrease brightness by default step (5%) + $(basename ${0}) i 5 -q # Increase brightness by 5% quietly +EOF +} +notify="${waybar_brightness_notification:-true}" # Default: notifications are enabled +action="" # Will store 'increase' or 'decrease' +step=5 # Default step value + +# Parse all arguments +for arg in "$@"; do + case $arg in + i|-i) + [ -n "$action" ] && + { + echo -e "\033[38;2;255;0;0mOne or more actions are provided\033[0m"; + print_error; + exit 1; + } # Prevent multiple actions + action="increase" ;; # Increase brightness + d|-d) + [ -n "$action" ] && + { + echo -e "\033[38;2;255;0;0mOne or more actions are provided\033[0m"; + print_error; + exit 1; + } # Prevent multiple actions + action="decrease" ;; # Decrease brightness + q|-q) + notify=false ;; # Disabling notification + [0-9]*) + if ! echo "$arg" | grep -Eq '^[0-9]+$'; then + print_error + exit 1 + fi + step=$arg ;; # Step value + *) + print_error && exit 1 ;; # Invalid input + esac +done + +if [ -z "$action" ]; then # If actions are missing with mode/value + echo -e "\033[38;2;255;0;0mActions are not provided\033[0m" + print_error + exit 1 +fi + +send_notification() { + brightness=`brightnessctl info | grep -oP "(?<=\()\d+(?=%)" | cat` + brightinfo=$(brightnessctl info | awk -F "'" '/Device/ {print $2}') + angle="$(((($brightness + 2) / 5) * 5))" + ico="$HOME/.config/dunst/icons/vol/vol-${angle}.svg" + bar=$(seq -s "." $(($brightness / 15)) | sed 's/[0-9]//g') + notify-send -a "t2" -r 91190 -t 800 -i "${ico}" "${brightness}${bar}" "${brightinfo}" +} + +get_brightness() { + brightnessctl -m | grep -o '[0-9]\+%' | head -c-2 +} + + +case $action in +increase) # increase the backlight + if [[ $(get_brightness) -lt 10 ]] ; then + # increase the backlight by 1% if less than 10% + step=1 + fi + + $use_swayosd && swayosd-client --brightness raise "$step" && exit 0 + brightnessctl set +${step}% + [ "$notify" = true ] && send_notification ;; +decrease) # decrease the backlight + + if [[ $(get_brightness) -le 10 ]] ; then + # decrease the backlight by 1% if less than 10% + step=1 + fi + + if [[ $(get_brightness) -le 1 ]]; then + brightnessctl set ${step}% + $use_swayosd && exit 0 + else + $use_swayosd && swayosd-client --brightness lower "$step" && exit 0 + brightnessctl set ${step}%- + fi + + [ "$notify" = true ] && send_notification ;; +esac diff --git a/Configs/.local/share/bin/cliphist.sh b/Configs/.local/share/bin/cliphist.sh new file mode 100755 index 0000000..f9db195 --- /dev/null +++ b/Configs/.local/share/bin/cliphist.sh @@ -0,0 +1,183 @@ +#!/usr/bin/env sh + +# Set variables +scrDir=$(dirname "$(realpath "$0")") +source "$scrDir/globalcontrol.sh" +roconf="${confDir}/rofi/clipboard.rasi" +favoritesFile="${HOME}/.cliphist_favorites" + +# Set rofi scaling +[[ "${rofiScale}" =~ ^[0-9]+$ ]] || rofiScale=10 +r_scale="configuration {font: \"JetBrainsMono Nerd Font ${rofiScale}\";}" +wind_border=$((hypr_border * 3 / 2)) +elem_border=$([ $hypr_border -eq 0 ] && echo "5" || echo $hypr_border) + +# Evaluate spawn position +readarray -t curPos < <(hyprctl cursorpos -j | jq -r '.x,.y') +readarray -t monRes < <(hyprctl -j monitors | jq '.[] | select(.focused==true) | .width,.height,.scale,.x,.y') +readarray -t offRes < <(hyprctl -j monitors | jq -r '.[] | select(.focused==true).reserved | map(tostring) | join("\n")') +monRes[2]="$(echo "${monRes[2]}" | sed "s/\.//")" +monRes[0]="$(( ${monRes[0]} * 100 / ${monRes[2]} ))" +monRes[1]="$(( ${monRes[1]} * 100 / ${monRes[2]} ))" +curPos[0]="$(( ${curPos[0]} - ${monRes[3]} ))" +curPos[1]="$(( ${curPos[1]} - ${monRes[4]} ))" + +if [ "${curPos[0]}" -ge "$((${monRes[0]} / 2))" ] ; then + x_pos="east" + x_off="-$(( ${monRes[0]} - ${curPos[0]} - ${offRes[2]} ))" +else + x_pos="west" + x_off="$(( ${curPos[0]} - ${offRes[0]} ))" +fi + +if [ "${curPos[1]}" -ge "$((${monRes[1]} / 2))" ] ; then + y_pos="south" + y_off="-$(( ${monRes[1]} - ${curPos[1]} - ${offRes[3]} ))" +else + y_pos="north" + y_off="$(( ${curPos[1]} - ${offRes[1]} ))" +fi + +r_override="window{location:${x_pos} ${y_pos};anchor:${x_pos} ${y_pos};x-offset:${x_off}px;y-offset:${y_off}px;border:${hypr_width}px;border-radius:${wind_border}px;} wallbox{border-radius:${elem_border}px;} element{border-radius:${elem_border}px;}" + +# Show main menu if no arguments are passed +if [ $# -eq 0 ]; then + main_action=$(echo -e "History\nDelete\nView Favorites\nManage Favorites\nClear History" | rofi -dmenu -theme-str "entry { placeholder: \"Choose action\";}" -theme-str "${r_scale}" -theme-str "${r_override}" -config "${roconf}") +else + main_action="History" +fi + +case "${main_action}" in +"History") + selected_item=$(cliphist list | rofi -dmenu -theme-str "entry { placeholder: \"History...\";}" -theme-str "${r_scale}" -theme-str "${r_override}" -config "${roconf}") + if [ -n "$selected_item" ]; then + echo "$selected_item" | cliphist decode | wl-copy + notify-send "Copied to clipboard." + fi + ;; +"Delete") + selected_item=$(cliphist list | rofi -dmenu -theme-str "entry { placeholder: \"Delete...\";}" -theme-str "${r_scale}" -theme-str "${r_override}" -config "${roconf}") + if [ -n "$selected_item" ]; then + echo "$selected_item" | cliphist delete + notify-send "Deleted." + fi + ;; +"View Favorites") + if [ -f "$favoritesFile" ] && [ -s "$favoritesFile" ]; then + # Read each Base64 encoded favorite as a separate line + mapfile -t favorites < "$favoritesFile" + + # Prepare a list of decoded single-line representations for rofi + decoded_lines=() + for favorite in "${favorites[@]}"; do + decoded_favorite=$(echo "$favorite" | base64 --decode) + # Replace newlines with spaces for rofi display + single_line_favorite=$(echo "$decoded_favorite" | tr '\n' ' ') + decoded_lines+=("$single_line_favorite") + done + + selected_favorite=$(printf "%s\n" "${decoded_lines[@]}" | rofi -dmenu -theme-str "entry { placeholder: \"View Favorites\";}" -theme-str "${r_scale}" -theme-str "${r_override}" -config "${roconf}") + if [ -n "$selected_favorite" ]; then + # Find the index of the selected favorite + index=$(printf "%s\n" "${decoded_lines[@]}" | grep -nxF "$selected_favorite" | cut -d: -f1) + # Use the index to get the Base64 encoded favorite + if [ -n "$index" ]; then + selected_encoded_favorite="${favorites[$((index - 1))]}" + # Decode and copy the full multi-line content to clipboard + echo "$selected_encoded_favorite" | base64 --decode | wl-copy + notify-send "Copied to clipboard." + else + notify-send "Error: Selected favorite not found." + fi + fi + else + notify-send "No favorites." + fi + ;; +"Manage Favorites") + manage_action=$(echo -e "Add to Favorites\nDelete from Favorites\nClear All Favorites" | rofi -dmenu -theme-str "entry { placeholder: \"Manage Favorites\";}" -theme-str "${r_scale}" -theme-str "${r_override}" -config "${roconf}") + + case "${manage_action}" in + "Add to Favorites") + # Show clipboard history to add to favorites + item=$(cliphist list | rofi -dmenu -theme-str "entry { placeholder: \"Add to Favorites...\";}" -theme-str "${r_scale}" -theme-str "${r_override}" -config "${roconf}") + if [ -n "$item" ]; then + # Decode the item from clipboard history + full_item=$(echo "$item" | cliphist decode) + encoded_item=$(echo "$full_item" | base64 -w 0) + + # Check if the item is already in the favorites file + if grep -Fxq "$encoded_item" "$favoritesFile"; then + notify-send "Item is already in favorites." + else + # Add the encoded item to the favorites file + echo "$encoded_item" >> "$favoritesFile" + notify-send "Added in favorites." + fi + fi + ;; + "Delete from Favorites") + if [ -f "$favoritesFile" ] && [ -s "$favoritesFile" ]; then + # Read each Base64 encoded favorite as a separate line + mapfile -t favorites < "$favoritesFile" + + # Prepare a list of decoded single-line representations for rofi + decoded_lines=() + for favorite in "${favorites[@]}"; do + decoded_favorite=$(echo "$favorite" | base64 --decode) + # Replace newlines with spaces for rofi display + single_line_favorite=$(echo "$decoded_favorite" | tr '\n' ' ') + decoded_lines+=("$single_line_favorite") + done + + selected_favorite=$(printf "%s\n" "${decoded_lines[@]}" | rofi -dmenu -theme-str "entry { placeholder: \"Remove from Favorites...\";}" -theme-str "${r_scale}" -theme-str "${r_override}" -config "${roconf}") + if [ -n "$selected_favorite" ]; then + index=$(printf "%s\n" "${decoded_lines[@]}" | grep -nxF "$selected_favorite" | cut -d: -f1) + if [ -n "$index" ]; then + selected_encoded_favorite="${favorites[$((index - 1))]}" + + # Handle case where only one item is present + if [ "$(wc -l < "$favoritesFile")" -eq 1 ]; then + # Remove the single encoded item from the file + > "$favoritesFile" + else + # Remove the selected encoded item from the favorites file + grep -vF -x "$selected_encoded_favorite" "$favoritesFile" > "${favoritesFile}.tmp" && mv "${favoritesFile}.tmp" "$favoritesFile" + fi + notify-send "Item removed from favorites." + else + notify-send "Error: Selected favorite not found." + fi + fi + else + notify-send "No favorites to remove." + fi + ;; + "Clear All Favorites") + if [ -f "$favoritesFile" ] && [ -s "$favoritesFile" ]; then + confirm=$(echo -e "Yes\nNo" | rofi -dmenu -theme-str "entry { placeholder: \"Clear All Favorites?\";}" -theme-str "${r_scale}" -theme-str "${r_override}" -config "${roconf}") + if [ "$confirm" = "Yes" ]; then + > "$favoritesFile" + notify-send "All favorites have been deleted." + fi + else + notify-send "No favorites to delete." + fi + ;; + *) + echo "Invalid action" + exit 1 + ;; + esac + ;; +"Clear History") + if [ "$(echo -e "Yes\nNo" | rofi -dmenu -theme-str "entry { placeholder: \"Clear Clipboard History?\";}" -theme-str "${r_scale}" -theme-str "${r_override}" -config "${roconf}")" == "Yes" ] ; then + cliphist wipe + notify-send "Clipboard history cleared." + fi + ;; +*) + echo "Invalid action" + exit 1 + ;; +esac \ No newline at end of file diff --git a/Configs/.local/share/bin/cpuinfo.sh b/Configs/.local/share/bin/cpuinfo.sh new file mode 100755 index 0000000..064cfb2 --- /dev/null +++ b/Configs/.local/share/bin/cpuinfo.sh @@ -0,0 +1,38 @@ +#!/usr/bin/env sh + +# CPU model +model=$(cat /proc/cpuinfo | grep 'model name' | head -n 1 | awk -F ': ' '{print $2}') + +# CPU utilization +utilization=$(top -bn1 | awk '/^%Cpu/ {print 100 - $8}') + +# Clock speed +freqlist=$(cat /proc/cpuinfo | grep "cpu MHz" | awk '{ print $4 }') +maxfreq=$(cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq | sed 's/...$//') +frequency=$(echo $freqlist | tr ' ' '\n' | awk "{ sum+=\$1 } END {printf \"%.0f/$maxfreq MHz\", sum/NR}") + +# CPU temp +sensorsdata=$(sensors) +temp=$(awk '/Package id 0/ {print $4}' <<< "$sensorsdata" | awk -F '[+.]' '{print $2}') +if [ -z "$temp" ]; then + temp=$(awk '/Tctl/ {print $2}' <<< "$sensorsdata" | tr -d '+°C') +fi +if [ -z "$temp" ]; then + temp="N/A" +else + temp=`printf "%.0f\n" $temp` +fi + +# map icons +set_ico="{\"thermo\":{\"0\":\"\",\"45\":\"\",\"65\":\"\",\"85\":\"\"},\"emoji\":{\"0\":\"❄️\",\"45\":\"☁️\",\"65\":\"🔥\",\"85\":\"🌋\"},\"util\":{\"0\":\"󰾆\",\"30\":\"󰾅\",\"60\":\"󰓅\",\"90\":\"\"}}" +eval_ico() { + map_ico=$(echo "${set_ico}" | jq -r --arg aky "$1" --argjson avl "$2" '.[$aky] | keys_unsorted | map(tonumber) | map(select(. <= $avl)) | max') + echo "${set_ico}" | jq -r --arg aky "$1" --arg avl "$map_ico" '.[$aky] | .[$avl]' +} + +thermo=$(eval_ico thermo $temp) +emoji=$(eval_ico emoji $temp) +speedo=$(eval_ico util $utilization) + +# Print cpu info (json) +echo "{\"text\":\"${thermo} ${temp}°C\", \"tooltip\":\"${model}\n${thermo} Temperature: ${temp}°C ${emoji}\n${speedo} Utilization: ${utilization}%\n Clock Speed: ${frequency}\"}" diff --git a/Configs/.local/share/bin/dontkillsteam.sh b/Configs/.local/share/bin/dontkillsteam.sh new file mode 100755 index 0000000..d162ddc --- /dev/null +++ b/Configs/.local/share/bin/dontkillsteam.sh @@ -0,0 +1,5 @@ +if [[ $(hyprctl activewindow -j | jq -r ".class") == "Steam" ]]; then + xdotool windowunmap $(xdotool getactivewindow) +else + hyprctl dispatch killactive "" +fi diff --git a/Configs/.local/share/bin/gamelauncher.sh b/Configs/.local/share/bin/gamelauncher.sh new file mode 100755 index 0000000..d08f413 --- /dev/null +++ b/Configs/.local/share/bin/gamelauncher.sh @@ -0,0 +1,96 @@ +#!/usr/bin/env sh + +# set variables +MODE=${1:-5} +scrDir=`dirname "$(realpath "$0")"` +source $scrDir/globalcontrol.sh +ThemeSet="${confDir}/hypr/themes/theme.conf" +RofiConf="${confDir}/rofi/steam/gamelauncher_${MODE}.rasi" + +# set rofi override +elem_border=$(( hypr_border * 2 )) +icon_border=$(( elem_border - 3 )) +r_override="element{border-radius:${elem_border}px;} element-icon{border-radius:${icon_border}px;}" + +fn_steam() { +# check steam mount paths +SteamPaths=`grep '"path"' $SteamLib | awk -F '"' '{print $4}'` +ManifestList=`find $SteamPaths/steamapps/ -type f -name "appmanifest_*.acf" 2>/dev/null` + +# read installed games +GameList=$(echo "$ManifestList" | while read acf +do + appid=`grep '"appid"' $acf | cut -d '"' -f 4` + if [ -f ${SteamThumb}/${appid}_library_600x900.jpg ] ; then + game=`grep '"name"' $acf | cut -d '"' -f 4` + echo "$game|$appid" + else + continue + fi +done | sort) + +# launch rofi menu +RofiSel=$( echo "$GameList" | while read acf +do + appid=`echo $acf | cut -d '|' -f 2` + game=`echo $acf | cut -d '|' -f 1` + echo -en "$game\x00icon\x1f${SteamThumb}/${appid}_library_600x900.jpg\n" +done | rofi -dmenu -theme-str "${r_override}" -config $RofiConf) + +# launch game +if [ ! -z "$RofiSel" ] ; then + launchid=`echo "$GameList" | grep "$RofiSel" | cut -d '|' -f 2` + ${steamlaunch} -applaunch "${launchid} [gamemoderun %command%]" & + # dunstify "t1" -a "Launching ${RofiSel}..." -i ${SteamThumb}/${launchid}_header.jpg -r 91190 -t 2200 + notify-send -a "t1" -i "${SteamThumb}/${launchid}_header.jpg" "Launching ${RofiSel}..." + +fi +} + +fn_lutris() { +[ ! -e "${icon_path}" ] && icon_path="${HOME}/.local/share/lutris/coverart" +[ ! -e "${icon_path}" ] && icon_path="${HOME}/.cache/lutris/coverart" +meta_data="/tmp/hyprdots-$(id -u)-lutrisgames.json" + +# Retrieve the list of games from Lutris in JSON format +#TODO Only call this if new apps are installed... + # [ ! -s "${meta_data}" ] && +notify-send -a "t1" "Please wait... " -t 4000 + +eval "${run_lutris}" -j -l 2> /dev/null| jq --arg icons "$icon_path/" --arg prefix ".jpg" '.[] |= . + {"select": (.name + "\u0000icon\u001f" + $icons + .slug + $prefix)}' > "${meta_data}" + +[ ! -s "${meta_data}" ] && notify-send -a "t1" "Cannot Fetch Lutris Games!" && exit 1 + + +CHOICE=$(jq -r '.[].select' "${meta_data}" | rofi -dmenu -p Lutris -theme-str "${r_override}" -config "${RofiConf}" ) +[ -z "$CHOICE" ] && exit 0 + SLUG=$(jq -r --arg choice "$CHOICE" '.[] | select(.name == $choice).slug' "${meta_data}" ) + notify-send -a "t1" -i "${icon_path}/${SLUG}.jpg" "Launching ${CHOICE}..." + exec xdg-open "lutris:rungame/${SLUG}" +} + +# Handle if flatpak or pkgmgr +run_lutris="" +( flatpak list --columns=application | grep -q "net.lutris.Lutris" ) && run_lutris="flatpak run net.lutris.Lutris" ; icon_path="${HOME}/.var/app/net.lutris.Lutris/data/lutris/coverart/" +[ -z "${run_lutris}" ] && ( pkg_installed 'lutris' ) && run_lutris="lutris" + +if [ -z "${run_lutris}" ] || echo "$*" | grep -q "steam" ; then + # set steam library + if pkg_installed steam ; then + SteamLib="${XDG_DATA_HOME:-$HOME/.local/share}/Steam/config/libraryfolders.vdf" + SteamThumb="${XDG_DATA_HOME:-$HOME/.local/share}/Steam/appcache/librarycache" + steamlaunch="steam" + else + SteamLib="$HOME/.var/app/com.valvesoftware.Steam/.local/share/Steam/config/libraryfolders.vdf" + SteamThumb="$HOME/.var/app/com.valvesoftware.Steam/.local/share/Steam/appcache/librarycache" + steamlaunch="flatpak run com.valvesoftware.Steam" + fi + + if [ ! -f $SteamLib ] || [ ! -d $SteamThumb ] ; then + notify-send -a "t1" "Steam library not found!" + exit 1 + fi + fn_steam +else + fn_lutris +fi diff --git a/Configs/.local/share/bin/gamemode.sh b/Configs/.local/share/bin/gamemode.sh new file mode 100755 index 0000000..eb15b4c --- /dev/null +++ b/Configs/.local/share/bin/gamemode.sh @@ -0,0 +1,29 @@ +#!/usr/bin/env sh +HYPRGAMEMODE=$(hyprctl getoption animations:enabled | sed -n '1p' | awk '{print $2}') + +# Waybar performance +FILE="$HOME/.config/waybar/style.css" + +sed -i 's/\/\* \(.*animation:.*\) \*\//\1/g' $FILE +sed -i 's/\/\* \(.*transition:.*\) \*\//\1/g' $FILE +if [ $HYPRGAMEMODE = 1 ]; then + sed -i 's/^\(.*animation:.*\)$/\/\* \1 \*\//g' $FILE + sed -i 's/^\(.*transition:.*\)$/\/\* \1 \*\//g' $FILE +fi +killall waybar +waybar >/dev/null 2>&1 & + +# Hyprland performance +if [ $HYPRGAMEMODE = 1 ]; then + hyprctl --batch "\ + keyword animations:enabled 0;\ + keyword decoration:drop_shadow 0;\ + keyword decoration:blur:enabled 0;\ + keyword general:gaps_in 0;\ + keyword general:gaps_out 0;\ + keyword general:border_size 1;\ + keyword decoration:rounding 0" + exit +else + hyprctl reload +fi diff --git a/Configs/.local/share/bin/globalcontrol.sh b/Configs/.local/share/bin/globalcontrol.sh new file mode 100755 index 0000000..585481f --- /dev/null +++ b/Configs/.local/share/bin/globalcontrol.sh @@ -0,0 +1,159 @@ +#!/usr/bin/env sh + + +#// hyde envs + +export confDir="${XDG_CONFIG_HOME:-$HOME/.config}" +export hydeConfDir="${confDir}/hyde" +export cacheDir="$HOME/.cache/hyde" +export thmbDir="${cacheDir}/thumbs" +export dcolDir="${cacheDir}/dcols" +export hashMech="sha1sum" + +get_hashmap() +{ + unset wallHash + unset wallList + unset skipStrays + unset verboseMap + + for wallSource in "$@"; do + [ -z "${wallSource}" ] && continue + [ "${wallSource}" == "--skipstrays" ] && skipStrays=1 && continue + [ "${wallSource}" == "--verbose" ] && verboseMap=1 && continue + + hashMap=$(find "${wallSource}" -type f \( -iname "*.gif" -o -iname "*.jpg" -o -iname "*.jpeg" -o -iname "*.png" \) -exec "${hashMech}" {} + | sort -k2) + if [ -z "${hashMap}" ] ; then + echo "WARNING: No image found in \"${wallSource}\"" + continue + fi + + while read -r hash image ; do + wallHash+=("${hash}") + wallList+=("${image}") + done <<< "${hashMap}" + done + + if [ -z "${#wallList[@]}" ] || [[ "${#wallList[@]}" -eq 0 ]] ; then + if [[ "${skipStrays}" -eq 1 ]] ; then + return 1 + else + echo "ERROR: No image found in any source" + exit 1 + fi + fi + + if [[ "${verboseMap}" -eq 1 ]] ; then + echo "// Hash Map //" + for indx in "${!wallHash[@]}" ; do + echo ":: \${wallHash[${indx}]}=\"${wallHash[indx]}\" :: \${wallList[${indx}]}=\"${wallList[indx]}\"" + done + fi +} + +get_themes() +{ + unset thmSortS + unset thmListS + unset thmWallS + unset thmSort + unset thmList + unset thmWall + + while read thmDir ; do + if [ ! -e "$(readlink "${thmDir}/wall.set")" ] ; then + get_hashmap "${thmDir}" --skipstrays || continue + echo "fixig link :: ${thmDir}/wall.set" + ln -fs "${wallList[0]}" "${thmDir}/wall.set" + fi + [ -f "${thmDir}/.sort" ] && thmSortS+=("$(head -1 "${thmDir}/.sort")") || thmSortS+=("0") + thmListS+=("$(basename "${thmDir}")") + thmWallS+=("$(readlink "${thmDir}/wall.set")") + done < <(find "${hydeConfDir}/themes" -mindepth 1 -maxdepth 1 -type d) + + while IFS='|' read -r sort theme wall ; do + thmSort+=("${sort}") + thmList+=("${theme}") + thmWall+=("${wall}") + done < <(parallel --link echo "{1}\|{2}\|{3}" ::: "${thmSortS[@]}" ::: "${thmListS[@]}" ::: "${thmWallS[@]}" | sort -n -k 1 -k 2) + + if [ "${1}" == "--verbose" ] ; then + echo "// Theme Control //" + for indx in "${!thmList[@]}" ; do + echo -e ":: \${thmSort[${indx}]}=\"${thmSort[indx]}\" :: \${thmList[${indx}]}=\"${thmList[indx]}\" :: \${thmWall[${indx}]}=\"${thmWall[indx]}\"" + done + fi +} + +[ -f "${hydeConfDir}/hyde.conf" ] && source "${hydeConfDir}/hyde.conf" + +case "${enableWallDcol}" in + 0|1|2|3) ;; + *) enableWallDcol=0 ;; +esac + +if [ -z "${hydeTheme}" ] || [ ! -d "${hydeConfDir}/themes/${hydeTheme}" ] ; then + get_themes + hydeTheme="${thmList[0]}" +fi + +export hydeTheme +export hydeThemeDir="${hydeConfDir}/themes/${hydeTheme}" +export wallbashDir="${hydeConfDir}/wallbash" +export enableWallDcol + + +#// hypr vars + +if printenv HYPRLAND_INSTANCE_SIGNATURE &> /dev/null; then + export hypr_border="$(hyprctl -j getoption decoration:rounding | jq '.int')" + export hypr_width="$(hyprctl -j getoption general:border_size | jq '.int')" +fi + + +#// extra fns + +pkg_installed() +{ + local pkgIn=$1 + if pacman -Qi "${pkgIn}" &> /dev/null ; then + return 0 + elif pacman -Qi "flatpak" &> /dev/null && flatpak info "${pkgIn}" &> /dev/null ; then + return 0 + elif command -v "${pkgIn}" &> /dev/null ; then + return 0 + else + return 1 + fi +} + +get_aurhlpr() +{ + if pkg_installed yay + then + aurhlpr="yay" + elif pkg_installed paru + then + aurhlpr="paru" + fi +} + +set_conf() +{ + local varName="${1}" + local varData="${2}" + touch "${hydeConfDir}/hyde.conf" + + if [ $(grep -c "^${varName}=" "${hydeConfDir}/hyde.conf") -eq 1 ] ; then + sed -i "/^${varName}=/c${varName}=\"${varData}\"" "${hydeConfDir}/hyde.conf" + else + echo "${varName}=\"${varData}\"" >> "${hydeConfDir}/hyde.conf" + fi +} + +set_hash() +{ + local hashImage="${1}" + "${hashMech}" "${hashImage}" | awk '{print $1}' +} + diff --git a/Configs/.local/share/bin/gpuinfo.sh b/Configs/.local/share/bin/gpuinfo.sh new file mode 100755 index 0000000..d34d0ed --- /dev/null +++ b/Configs/.local/share/bin/gpuinfo.sh @@ -0,0 +1,295 @@ +#!/usr/bin/env bash +# shellcheck disable=SC2312 +# shellcheck disable=SC1090 +scrDir=`dirname "$(realpath "$0")"` +gpuQ="/tmp/hyprdots-${UID}-gpuinfo-query" + +tired=false +[[ " $* " =~ " tired " ]] && ! grep -q "tired" "${gpuQ}" && echo "tired=true" >>"${gpuQ}" +if [[ ! " $* " =~ " startup " ]]; then + gpuQ="${gpuQ}$2" +fi +detect() { # Auto detect Gpu used by Hyprland(declared using env = WLR_DRM_DEVICES) Sophisticated? +card=$(echo "${WLR_DRM_DEVICES}" | cut -d':' -f1 | cut -d'/' -f4) +# shellcheck disable=SC2010 +slot_number=$(ls -l /dev/dri/by-path/ | grep "${card}" | awk -F'pci-0000:|-card' '{print $2}') +vendor_id=$(lspci -nn -s "${slot_number}" ) +declare -A vendors=(["10de"]="nvidia" ["8086"]="intel" ["1002"]="amd") +for vendor in "${!vendors[@]}"; do + if [[ ${vendor_id} == *"${vendor}"* ]]; then + initGPU="${vendors[${vendor}]}" + break + fi +done +if [[ -n ${initGPU} ]]; then + $0 --use "${initGPU}" startup +fi +} + +query() { + nvidia_flag=0 amd_flag=0 intel_flag=0 +touch "${gpuQ}" + +if lsmod | grep -q 'nouveau'; then + echo "nvidia_gpu=\"Linux\"" >>"${gpuQ}" #? Incase If nouveau is installed + echo "nvidia_flag=1 # Using nouveau an open-source nvidia driver" >>"${gpuQ}" +elif command -v nvidia-smi &> /dev/null; then +nvidia_gpu=$(nvidia-smi --query-gpu=gpu_name --format=csv,noheader,nounits | head -n 1) + if [[ -n "${nvidia_gpu}" ]] ; then # Check for NVIDIA GPU + if [[ "${nvidia_gpu}" == *"NVIDIA-SMI has failed"* ]]; then #? Second Layer for dGPU + echo "nvidia_flag=0 # NVIDIA-SMI has failed" >> "${gpuQ}" + else + nvidia_address=$(lspci | grep -Ei "VGA|3D" | grep -i "${nvidia_gpu/NVIDIA /}" | cut -d' ' -f1) + { echo "nvidia_address=\"${nvidia_address}\"" + echo "nvidia_gpu=\"${nvidia_gpu/NVIDIA /}\"" + echo "nvidia_flag=1" + } >> "${gpuQ}" + fi + fi +fi + +if lspci -nn | grep -E "(VGA|3D)" | grep -iq "1002"; then +amd_gpu="$(lspci -nn | grep -Ei "VGA|3D" | grep -m 1 "1002" | awk -F'Advanced Micro Devices, Inc. ' '{gsub(/ *\[[^\]]*\]/,""); gsub(/ *\([^)]*\)/,""); print $2}')" +amd_address=$(lspci | grep -Ei "VGA|3D" | grep -i "${amd_gpu}" | cut -d' ' -f1) +{ echo "amd_address=\"${amd_address}\"" + echo "amd_flag=1" # Check for Amd GPU + echo "amd_gpu=\"${amd_gpu}\"" +} >> "${gpuQ}";fi + +if lspci -nn | grep -E "(VGA|3D)" | grep -iq "8086"; then +intel_gpu="$(lspci -nn | grep -Ei "VGA|3D" | grep -m 1 "8086" | awk -F'Intel Corporation ' '{gsub(/ *\[[^\]]*\]/,""); gsub(/ *\([^)]*\)/,""); print $2}')" +intel_address=$(lspci | grep -Ei "VGA|3D" | grep -i "${intel_gpu}" | cut -d' ' -f1) +{ echo "intel_address=\"${intel_address}\"" + echo "intel_flag=1" # Check for Intel GPU + echo "intel_gpu=\"${intel_gpu}\"" +} >>"${gpuQ}"; fi + +if ! grep -q "prioGPU=" "${gpuQ}" && [[ -n "${WLR_DRM_DEVICES}" ]]; then + trap detect EXIT +fi + +} + +toggle() { + if [[ -n "$1" ]]; then + next_prioGPU="$1_flag" + else + # Initialize gpu_flags and prioGPU if they don't exist + if ! grep -q "gpu_flags=" "${gpuQ}"; then + gpu_flags=$(grep "flag=1" "${gpuQ}" | cut -d '=' -f 1 | tr '\n' ' ' | tr -d '#') + echo "" >> "${gpuQ}" + echo "gpu_flags=\"${gpu_flags[*]}\"" >> "${gpuQ}" + fi + + if ! grep -q "prioGPU=" "${gpuQ}"; then + gpu_flags=$(grep "gpu_flags=" "${gpuQ}" | cut -d'=' -f 2) + initGPU=$(echo "${gpu_flags}" | cut -d ' ' -f 1) + echo "prioGPU=${initGPU}" >> "${gpuQ}" + fi + mapfile -t anchor < <(grep "flag=1" "${gpuQ}" | cut -d '=' -f 1) + prioGPU=$(grep "prioGPU=" "${gpuQ}" | cut -d'=' -f 2) # Get the current prioGPU from the file + # Find the index of the current prioGPU in the anchor array + for index in "${!anchor[@]}"; do + if [[ "${anchor[${index}]}" = "${prioGPU}" ]]; then + current_index=${index} + fi + done + next_index=$(( (current_index + 1) % ${#anchor[@]} )) + next_prioGPU=${anchor[${next_index}]#\#} +fi + +# Set the next prioGPU and remove the '#' character +sed -i 's/^\(nvidia_flag=1\|amd_flag=1\|intel_flag=1\)/#\1/' "${gpuQ}" # Comment out all the gpu flags in the file +sed -i "s/^#${next_prioGPU}/${next_prioGPU}/" "${gpuQ}" # Uncomment the next prioGPU in the file +sed -i "s/prioGPU=${prioGPU}/prioGPU=${next_prioGPU}/" "${gpuQ}" # Update the prioGPU in the file +} + +# Thee shalt find the greatest one, +# He who not more than the chosen one +map_floor() { + + # From the depths of the string, words arise, + # Keys in pairs, a treasure in disguise. + IFS=', ' read -r -a pairs <<< "$1" + + # If the final token stands alone and bold, + # Declare it the default, its worth untold. + if [[ ${pairs[-1]} != *":"* ]]; then + def_val="${pairs[-1]}" + unset 'pairs[${#pairs[@]}-1]' + fi + + # Scans the map, a peak it seeks, + # The highest passed, the value speaks. + for pair in "${pairs[@]}"; do + IFS=':' read -r key value <<< "$pair" + + # Behold! Thou holds the secrets they seek, + # Declare it and silence the whispers unique. + if awk -v num="$2" -v k="$key" 'BEGIN { exit !(num > k) }'; then + echo "$value" + return + fi + done + + # On this lonely shore, where silence dwells + # Even the waves, echoes words unheard + [ -n "$def_val" ] && echo $def_val || echo " " +} + +# generate emoji and icon based on temperature and utilization +get_icons() { + # key-value pairs of temperature and utilization levels + temp_lv="85:&🌋, 65:&🔥, 45:&☁️, &❄️" + util_lv="90:, 60:󰓅, 30:󰾅, 󰾆" + + # return comma separated emojis/icons + icons=$(map_floor "$temp_lv" $1 | sed "s/&/,/") + icons="$icons,$(map_floor "$util_lv" $2)" + echo $icons +} + +generate_json() { + # get emoji and icon based on temperature and utilization + icons=$(get_icons "$temperature" "$utilization") + thermo=$(echo $icons | awk -F, '{print $1}') + emoji=$(echo $icons | awk -F, '{print $2}') + speedo=$(echo $icons | awk -F, '{print $3}') + + # emoji=$(get_temperature_emoji "${temperature}") + local json="{\"text\":\"${thermo} ${temperature}°C\", \"tooltip\":\"${primary_gpu}\n${thermo} Temperature: ${temperature}°C ${emoji}" +#? Soon Add Something incase needed. + declare -A tooltip_parts + if [[ -n "${utilization}" ]]; then tooltip_parts["\n$speedo Utilization: "]="${utilization}%" ; fi + if [[ -n "${current_clock_speed}" ]] && [[ -n "${max_clock_speed}" ]]; then tooltip_parts["\n Clock Speed: "]="${current_clock_speed}/${max_clock_speed} MHz" ; fi + if [[ -n "${gpu_load}" ]]; then tooltip_parts["\n$speedo Utilization: "]="${gpu_load}%" ; fi + if [[ -n "${core_clock}" ]]; then tooltip_parts["\n Clock Speed: "]="${core_clock} MHz" ;fi + if [[ -n "${power_usage}" ]]; then if [[ -n "${power_limit}" ]]; then + tooltip_parts["\n󱪉 Power Usage: "]="${power_usage}/${power_limit} W" + else + tooltip_parts["\n󱪉 Power Usage: "]="${power_usage} W" + fi + fi + if [[ -n "${power_discharge}" ]] && [[ "${power_discharge}" != "0" ]]; then tooltip_parts["\n Power Discharge: "]="${power_discharge} W" ;fi + + for key in "${!tooltip_parts[@]}"; do + local value="${tooltip_parts[${key}]}" + if [[ -n "${value}" && "${value}" =~ [a-zA-Z0-9] ]]; then + json+="${key}${value}" + fi + done + json="${json}\"}" + echo "${json}" +} + +general_query() { # Function to get temperature from 'sensors' + filter='' +temperature=$(sensors | ${filter} grep -m 1 -E "(edge|Package id.*|another keyword)" | awk -F ':' '{print int($2)}') #! We can get json data from sensors too + # gpu_load=$() + # core_clock=$() +for file in /sys/class/power_supply/BAT*/power_now; do + [[ -f "${file}" ]] && power_discharge=$(awk '{print $1*10^-6 ""}' "${file}") && break +done +[[ -z "${power_discharge}" ]] && for file in /sys/class/power_supply/BAT*/current_now; do + [[ -e "${file}" ]] && power_discharge=$(awk -v current="$(cat "${file}")" -v voltage="$(cat "${file/current_now/voltage_now}")" 'BEGIN {print (current * voltage) / 10^12 ""}') && break +done +# power_limit=$() +utilization=$(top -bn1 | grep "Cpu(s)" | sed "s/.*, *\([0-9.]*\)%* id.*/\1/" | awk '{print 100 - $1" "}') +current_clock_speed=$(awk '{sum += $1; n++} END {if (n > 0) print sum / n / 1000 ""}' /sys/devices/system/cpu/cpufreq/policy*/scaling_cur_freq) +max_clock_speed=$(awk '{print $1/1000}' /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq) +} + +intel_GPU() { #? Function to query basic intel GPU + primary_gpu="Intel ${intel_gpu}" + general_query +} + +nvidia_GPU() { #? Function to query Nvidia GPU + primary_gpu="NVIDIA ${nvidia_gpu}" + if [[ "${nvidia_gpu}" == "Linux" ]]; then general_query ; return ; fi #? Open source driver +#? Tired Flag for not using nvidia-smi if GPU is in suspend mode. +if ${tired}; then is_suspend="$(cat /sys/bus/pci/devices/0000:"${nvidia_address}"/power/runtime_status)" + if [[ ${is_suspend} == *"suspend"* ]]; then + printf '{"text":"󰤂", "tooltip":"%s ⏾ Suspended mode"}' "${primary_gpu}"; exit ;fi +fi + gpu_info=$(nvidia-smi --query-gpu=temperature.gpu,utilization.gpu,clocks.current.graphics,clocks.max.graphics,power.draw,power.limit --format=csv,noheader,nounits) + # Split the comma-separated values into an array + IFS=',' read -ra gpu_data <<< "${gpu_info}" + # Extract individual values + temperature="${gpu_data[0]// /}" + utilization="${gpu_data[1]// /}" + current_clock_speed="${gpu_data[2]// /}" + max_clock_speed="${gpu_data[3]// /}" + power_usage="${gpu_data[4]// /}" + power_limit="${gpu_data[5]// /}" +} + +amd_GPU() { #? Function to query amd GPU + primary_gpu="AMD ${amd_gpu}" + # Execute the AMD GPU Python script and use its output + amd_output=$(python3 ${scrDir}/amdgpu.py) +if [[ ! ${amd_output} == *"No AMD GPUs detected."* ]] && [[ ! ${amd_output} == *"Unknown query failure"* ]]; then + # Extract GPU Temperature, GPU Load, GPU Core Clock, and GPU Power Usage from amd_output + temperature=$(echo "${amd_output}" | jq -r '.["GPU Temperature"]' | sed 's/°C//') + gpu_load=$(echo "${amd_output}" | jq -r '.["GPU Load"]' | sed 's/%//') + core_clock=$(echo "${amd_output}" | jq -r '.["GPU Core Clock"]' | sed 's/ GHz//;s/ MHz//') + power_usage=$(echo "${amd_output}" | jq -r '.["GPU Power Usage"]' | sed 's/ Watts//') + + +else +general_query +fi +} + +if [[ ! -f "${gpuQ}" ]]; then +query ; echo -e "Initialized Variable:\n$(cat "${gpuQ}")\n\nReboot or '$0 --reset' to RESET Variables" +fi +source "${gpuQ}" +case "$1" in + "--toggle"|"-t") + toggle +echo -e "Sensor: ${next_prioGPU} GPU" | sed 's/_flag//g' + exit + ;; + "--use"|"-u") + toggle "$2" + ;; + "--reset"|"-rf") + rm -fr "${gpuQ}"* + query + echo -e "Initialized Variable:\n$(cat "${gpuQ}" || true)\n\nReboot or '$0 --reset' to RESET Variables" + exit + ;; + *"-"*) +gpu_flags=$(grep "flag=1" "${gpuQ}" | cut -d '=' -f 1 | tr '\n' ' ' | tr -d '#') +cat << EOF + +Available GPU: ${gpu_flags//_flag/} +[options] +--toggle * Toggle available GPU +--use [GPU] * Only call the specified GPU (Useful for adding specific GPU on waybar) +--reset * Remove & restart all query + +[flags] +tired * Adding this option will not query nvidia-smi if gpu is in suspend mode +startup * Useful if you want a certain GPU to be set at startup + +* If ${USER} declared env = WLR_DRM_DEVICES on hyprland then use this as the primary GPU +EOF +exit + ;; +esac + +nvidia_flag=${nvidia_flag:-0} intel_flag=${intel_flag:-0} amd_flag=${amd_flag:-0} +#? Based on the flags, call the corresponding function multi flags means multi GPU. +if [[ "${nvidia_flag}" -eq 1 ]]; then + nvidia_GPU +elif [[ "${amd_flag}" -eq 1 ]]; then + amd_GPU +elif [[ "${intel_flag}" -eq 1 ]]; then + intel_GPU +else primary_gpu="Not found" + general_query +fi + +generate_json #? AutoGen the Json txt for Waybar diff --git a/Configs/.local/share/bin/keybinds_hint.sh b/Configs/.local/share/bin/keybinds_hint.sh new file mode 100755 index 0000000..056843b --- /dev/null +++ b/Configs/.local/share/bin/keybinds_hint.sh @@ -0,0 +1,418 @@ +#!/usr/bin/env sh + +#* jq to parse and create a metadata. +#* Users are advised to use bindd to explicitly add the description +#* Please inform us if there are new Categories upstream will try to add comments to this script +#* Khing 🦆 + +pkill -x rofi && exit +scrDir=$(dirname "$(realpath "$0")") +source "$scrDir/globalcontrol.sh" + +confDir="${XDG_CONFIG_HOME:-$HOME/.config}" +keyconfDir="$confDir/hypr" +kb_hint_conf=("$keyconfDir/hyprland.conf" "$keyconfDir/keybindings.conf" "$keyconfDir/userprefs.conf" ) +tmpMapDir="/tmp" +tmpMap="$tmpMapDir/hyde-keybinds.jq" +keycodeFile="${hydeConfDir}/keycode.kb" +modmaskFile="${hydeConfDir}/modmask.kb" +keyFile="${hydeConfDir}/key.kb" +categoryFile="${hydeConfDir}/category.kb" +dispatcherFile="${hydeConfDir}/dispatcher.kb" + +roDir="$confDir/rofi" +roconf="$roDir/clipboard.rasi" + +HELP() { + cat <') + -f Add custom file + -w Custom width + -h Custom height + --help Display this help message +Example: + $(basename "$0") -j -p -d '>' -f custom_file.txt -w 80 -h 90" +Users can also add a global overrides inside ${hydeConfDir}/hyde.conf + Available overrides: + + kb_hint_delim=">" ﯦ add a custom custom delimiter + kb_hint_conf=("file1.conf" "file2.conf") ﯦ add a custom keybinds.conf path (add it like an array) + kb_hint_width="30em" ﯦ custom width supports [ 'em' '%' 'px' ] + kb_hint_height="35em" ﯦ custom height supports [ 'em' '%' 'px' ] + kb_hint_line=13 ﯦ adjust how many lines are listed + +Users can also add a key overrides inside ${hydeConfDir} +List of file override: +${keycodeFile} => keycode +${modmaskFile} => modmask +${keyFile} => keys +${categoryFile} => category +${dispatcherFile} => dispatcher + +Example for keycode override +create a file named $keycodeFile and use the following format: + + "number": "display name/symbol", + "61": "/", + +HELP +} + +while [ "$#" -gt 0 ]; do + case "$1" in + -j) # show the json format + kb_hint_json=true + ;; + -p) # show the pretty format + kb_hint_pretty=true + ;; + -d) # Add custom delimiter symbol default '>' + shift + kb_hint_delim="$1" + ;; + -f) # Add custom file + shift + kb_hint_conf+=("${@}") + ;; + -w) # Custom kb_hint_width + shift + kb_hint_width="$1" + ;; + -h) # Custom height + shift + kb_hint_height="$1" + ;; + -l) # Custom number of line + shift + kb_hint_line="$1" + ;; + -*) # Add Help message + HELP + exit + ;; + esac + shift +done + +#? Read all the variables in the configuration file +#! Intentional globbing on the $keyconf variable +# shellcheck disable=SC2086 +keyVars="$(awk -F '=' '/^ *\$/ && !/^ *#[^#]/ || /^ *##/ {gsub(/^ *\$| *$/, "", $1); gsub(/#.*/, "", $2); gsub(/^ *| *$/, "", $2); print $1 "='\''"$2"'\''"}' ${kb_hint_conf[@]})" +keyVars+=" +" +keyVars+="HOME=$HOME" +# echo "$keyVars" + +#? This part substitutes the variables into the actual value. +#TODO It will be easier if hyprland will expose the variables. +substitute_vars() { + local s="$1" + local IFS=$'\n' + for var in $keyVars; do + varName="${var%%=*}" + varValue="${var#*=}" + varValue="${varValue#\'}" + varValue="${varValue%\'}" + s="${s//\$$varName/$varValue}" + done + IFS=$' \t\n' + echo "$s" +} +#? Other accurate but risky option +# eval "$keyVars" +# substitute_vars() { +# local s="$1" +# local IFS=$'\n' +# for var in $keyVars; do +# varName="${var%%=*}" +# s="${s//\$$varName/${!varName}}" +# done +# IFS=$' \t\n' +# echo "$s" +# } + +initialized_comments=$(awk -F ',' '!/^#/ && /bind*/ && $3 ~ /exec/ && NF && $4 !~ /^ *$/ { print $4}' ${kb_hint_conf[@]} | sed "s#\"#'#g") +comments=$(substitute_vars "$initialized_comments" | awk -F'#' \ + '{gsub(/^ */, "", $1);\ + gsub(/ *$/, "", $1);\ + split($2, a, " ");\ + a[1] = toupper(substr(a[1], 1, 1)) substr(a[1], 2);\ + $2 = a[1]; for(i=2;\ + i<=length(a); i++) $2 = $2" "a[i];\ + gsub(/^ */, "", $2);\ + gsub(/ *$/, "", $2);\ + if (length($1) > 0) print "\""$1"\" : \""(length($2) > 0 ? $2 : $1)"\","}' | + awk '!seen[$0]++') +# echo "$comments" + +cat <$tmpMap +# hyde-keybinds.jq +#! This is Our Translator for some binds #🦆 +def executables_mapping: { #? Derived from .args to parse scripts to be Readable +#? Auto Generated Comment Conversion +$comments +#? Defaults +" empty " : "Empty", +"r+1" : "Relative Right", +"r-1" : "Relative Left", +"e+1" : "Next", +"e-1" : "Previous", +"movewindow" : "Move window", +"resizewindow" : "Resize window", +"d" : "Down", +"l" : "Left", +"r" : "Right", +"u" : "Up", +"f" : "Forward", +"b" : "Backward", + +}; + +def keycode_mapping: { #? Fetches keycode from a file + "0": "", + $([ -f "${keycodeFile}" ] && cat "${keycodeFile}") +}; + + def modmask_mapping: { #? Define mapping for modmask numbers represents bitmask + "64": " ", #? SUPER  󰻀 Also added 2 En space ' ' <<< + "8": "ALT", + "4": "CTRL", + "1": "SHIFT", + "0": " ", + $([ -f "${modmaskFile}" ] && cat "${modmaskFile}") + }; + + def key_mapping: { #?Define mappings for .keys to be readable symbols + "mouse_up" : "󱕑", + "mouse_down" : "󱕐", + "mouse:272" : "󰍽", + "mouse:273" : "󰍽", + "UP" : "", + "DOWN" : "", + "LEFT" : "", + "RIGHT" : "", + "XF86AudioLowerVolume" : "󰝞", + "XF86AudioMicMute" : "󰍭", + "XF86AudioMute" : "󰓄", + "XF86AudioNext" : "󰒭", + "XF86AudioPause" : "󰏤", + "XF86AudioPlay" : "󰐊", + "XF86AudioPrev" : "󰒮", + "XF86AudioRaiseVolume" : "󰝝", + "XF86MonBrightnessDown" : "󰃜", + "XF86MonBrightnessUp" : "󰃠", + "switch:on:Lid Switch" : "󰛧", + "backspace" : "󰁮 ", + $([ -f "${keyFile}" ] && cat "${keyFile}") + }; + def category_mapping: { #? Define Category Names, derive from Dispatcher #? This will serve as the Group header + "exec" : "Execute a Command:", + "global": "Global:", + "exit" : "Exit Hyprland Session", + "fullscreen" : "Toggle Functions", + "fakefullscreen" : "Toggle Functions", + "mouse" : "Mouse functions", + "movefocus" : "Window functions", + "movewindow" : "Window functions", + "resizeactive" : "Window functions", + "togglefloating" : "Toggle Functions", + "togglegroup" : "Toggle Functions", + "togglespecialworkspace" : "Toggle Functions", + "togglesplit" : "Toggle Functions", + "workspace" : "Navigate Workspace", + "movetoworkspace" : "Navigate Workspace", + "movetoworkspacesilent" : "Navigate Workspace", + "changegroupactive" : "Change Active Group", + $([ -f "${categoryFile}" ] && cat "${categoryFile}") + }; +def arg_mapping: { #! Do not Change this used for Demo only... As this will change .args! will be fatal + "arg2": "mapped_arg2", + }; + + def description_mapping: { #? Derived from dispatcher and Gives Description for Dispatchers; Basically translates dispatcher. + "movefocus": "Move Focus", + "resizeactive": "Resize Active Floating Window", + "exit" : "End Hyprland Session", + "movetoworkspacesilent" : "Silently Move to Workspace", + "movewindow" : "Move Window", + "exec" : "" , #? Remove exec as executable will give the Description from separate function + "movetoworkspace" : "Move To Workspace:", + "workspace" : "Navigate to Workspace:", + "togglefloating" : "Toggle Floating", + "fullscreen" : "Toggle Fullscreen", + "togglegroup" : "Toggle Group", + "togglesplit" : "Toggle Split", + "togglespecialworkspace" : "Toggle Special Workspace", + "mouse" : "Use Mouse", + "changegroupactive" : "Switch Active group", + $([ -f "${dispatcherFile}" ] && cat "${dispatcherFile}") + }; + +OVERRIDES + +#? Script to re Modify hyprctl json output +#? Basically we are using jq to handle json data and outputs a pretty and friendly output +jsonData="$( + hyprctl binds -j | jq -L "$tmpMapDir" -c ' +include "hyde-keybinds"; + + #? Functions to Convert modmask into Keys, There should be a better math for this but Im lazy + #? Also we can just map it manually too + def get_keys: + if . == 0 then + "" + elif . >= 64 then + . -= 64 | modmask_mapping["64"] + " " + get_keys + elif . >= 32 then + . -= 32 | modmask_mapping["32"] + " " + get_keys + elif . >= 16 then + . -= 16 | modmask_mapping["16"] + " " + get_keys + elif . >= 8 then + . -= 8 | modmask_mapping["8"] + " " + get_keys + elif . >= 4 then + . -= 4 | modmask_mapping["4"] + " " + get_keys + elif . >= 2 then + . -= 2 | modmask_mapping["2"] + " " + get_keys + elif . >= 1 then + . -= 1 | modmask_mapping["1"] + " " + get_keys + else + . + end; +def get_keycode: + (keycode_mapping[(. | tostring)] // .); #? use the keycode conversion... and turn to string + +.[] | #? Filter 1 +.dispatcher as $dispatcher | .desc_dispatcher = $dispatcher | #? Value conversions for the description +.dispatcher as $dispatcher | .category = $dispatcher | #? Value conversions for the category +.arg as $arg | .desc_executable = $arg | #? creates new key .desc_executable to be use later +.modmask |= (get_keys | ltrimstr(" ")) | #? Execute Momask conversions, b +.keycode |= (get_keycode // .) | #? Apply the get_keycode transformation +.key |= (key_mapping[.] // .) | #? Apply the get_key +# .keybind = (.modmask | tostring // "") + (.key // "") | #! Same as below but without the keycode +.keybind = (.modmask | tostring // "") + (.key // "") + ((.keycode // 0) | tostring) | #? Show the keybindings +.flags = " locked=" + (.locked | tostring) + " mouse=" + (.mouse | tostring) + " release=" + (.release | tostring) + " repeat=" + (.repeat | tostring) + " non_consuming=" + (.non_consuming | tostring) | #? This are the flags repeat,lock etc +.category |= (category_mapping[.] // .) | #? Group by Categories will be use for headers +#!if .modmask and .modmask != " " and .modmask != "" then .modmask |= (split(" ") | map(select(length > 0)) | if length > 1 then join(" + ") else .[0] end) else .modmask = "" end | +if .keybind and .keybind != " " and .keybind != "" then .keybind |= (split(" ") | map(select(length > 0)) | if length > 1 then join(" + ") else .[0] end) else .keybind = "" end | #? Clean up + .arg |= (arg_mapping[.] // .) | #? See above for how arg is converted + #! .desc_executable |= gsub(".sh"; "") | #? Maybe Useful soon removes ".sh" to file + #? Creates a key desc... for fallback if "has description" is false + .desc_executable |= (executables_mapping[.] // .) | #? exclusive for "exec" dispatchers + .desc_dispatcher |= (description_mapping[.] // .) | #? for all other dispatchers + .description = if .has_description == false then "\(.desc_dispatcher) \(.desc_executable)" else.description end +' #* <---- There is a ' do not delete this' +)" + +#? Now we have the metadata we can Group it accordingly +GROUP() { +awk -v cols="$cols" -F '!=!' ' +{ + category = $1 + binds[category] = binds[category]? binds[category] "\n" $0 : $0 +} + +END { + n = asorti(binds, b) + for (i = 1; i <= n; i++) { + print b[i] # Print the header name + gsub(/\[.*\] =/, "", b[i]) + split(binds[b[i]], lines, "\n") + for (j in lines) { + line = substr(lines[j], index(lines[j], "=") + 2) + print line + } + for (j = 1; j <= cols; j++) printf "━" + printf "\n" + } +}' +} + +#? Display the JSON format +[ "$kb_hint_json" = true ] && jq <<< "$jsonData" && exit 0 + +#? Format this is how the keybinds are displayed. +DISPLAY() { awk -v kb_hint_delim="${kb_hint_delim:->}" -F '!=!' '{if ($0 ~ /=/ && $6 != "") printf "%-25s %-2s %-30s\n", $5, kb_hint_delim, $6; else if ($0 ~ /=/) printf "%-25s\n", $5; else print $0}'; } + +#? Extra design use for distinction +header="$(printf "%-35s %-1s %-20s\n" "󰌌 Keybinds" "󱧣" "Description")" +cols=$(tput cols) +cols=${cols:-999} +linebreak="$(printf '%.0s━' $(seq 1 "${cols}") "")" + +#! this Part Gives extra loading time as I don't have efforts to make single space for each class +metaData="$(jq -r '"\(.category) !=! \(.modmask) !=! \(.key) !=! \(.dispatcher) !=! \(.arg) !=! \(.keybind) !=! \(.description) !=! \(.flags)"' <<< "${jsonData}" | tr -s ' ' | sort -k 1)" + +#? This formats the pretty output +display="$(GROUP <<< "$metaData" | DISPLAY)" + +# output=$(echo -e "${header}\n${linebreak}\n${primMenu}\n${linebreak}\n${display}") +output=$(echo -e "${header}\n${linebreak}\n${display}") + +[ "$kb_hint_pretty" = true ] && echo -e "$output" && exit 0 + +#? will display on the terminal if rofi is not found or have -j flag +if ! command -v rofi &>/dev/null; then + echo "$output" + echo "rofi not detected. Displaying on terminal instead" + exit 0 +fi + +#? Put rofi configuration here +# Read hypr theme border +wind_border=$((hypr_border * 3 / 2)) +elem_border=$([ "$hypr_border" -eq 0 ] && echo "5" || echo "$hypr_border") + +# TODO Dynamic scaling for text and the window >>> I do not know if rofi is capable of this +r_width="width: ${kb_hint_width:-35em};" +r_height="height: ${kb_hint_height:-35em};" +r_listview="listview { lines: ${kb_hint_line:-13}; }" +r_override="window {$r_height $r_width border: ${hypr_width}px; border-radius: ${wind_border}px;} entry {border-radius: ${elem_border}px;} element {border-radius: ${elem_border}px;} ${r_listview} " + +# Read hypr font size +fnt_override=$(gsettings get org.gnome.desktop.interface font-name | awk '{gsub(/'\''/,""); print $NF}') +fnt_override="configuration {font: \"JetBrainsMono Nerd Font ${fnt_override}\";}" + +# Read hypr theme icon +icon_override=$(gsettings get org.gnome.desktop.interface icon-theme | sed "s/'//g") +icon_override="configuration {icon-theme: \"${icon_override}\";}" + +#? Actions to do when selected +selected=$(echo "$output" | rofi -dmenu -p -i -theme-str "${fnt_override}" -theme-str "${r_override}" -theme-str "${icon_override}" -config "${roconf}" | sed 's/.*\s*//') +if [ -z "$selected" ]; then exit 0; fi + +sel_1=$(awk -F "${kb_hint_delim:->}" '{print $1}' <<< "$selected" | awk '{$1=$1};1') +sel_2=$(awk -F "${kb_hint_delim:->}" '{print $2}' <<< "$selected" | awk '{$1=$1};1') +run="$(grep "$sel_1" <<< "$metaData" | grep "$sel_2")" + +run_flg="$(echo "$run" | awk -F '!=!' '{print $8}')" +run_sel="$(echo "$run" | awk -F '!=!' '{gsub(/^ *| *$/, "", $5); if ($5 ~ /[[:space:]]/ && $5 !~ /^[0-9]+$/ && substr($5, 1, 1) != "-") print $4, "\""$5"\""; else print $4, $5}')" +# echo "$run_sel" ; echo "$run_flg" + +#? +RUN() { case "$(eval "hyprctl dispatch $run_sel")" in *"Not enough arguments"*) exec $0 ;; esac } + +#? If flag is repeat then repeat rofi if not then just execute once +if [ -n "$run_sel" ] && [ "$(echo "$run_sel" | wc -l)" -eq 1 ]; then + eval "$run_flg" + if [ "$repeat" = true ]; then + + while true; do + repeat_command=$(echo -e "Repeat" | rofi -dmenu -no-custom -p "[Enter] repeat; [ESC] exit") #? Needed a separate Rasi ? Dunno how to make; Maybe Something like confirmation rasi for buttons Yes and No then the -p will be the Question like Proceed? Repeat? + + if [ "$repeat_command" = "Repeat" ]; then + # Repeat the command here + RUN + else + exit 0 + fi + done + else + RUN + fi +else + exec $0 +fi diff --git a/Configs/.local/share/bin/keyboardswitch.sh b/Configs/.local/share/bin/keyboardswitch.sh new file mode 100755 index 0000000..9a4fcdd --- /dev/null +++ b/Configs/.local/share/bin/keyboardswitch.sh @@ -0,0 +1,10 @@ +#!/usr/bin/env sh + +scrDir=`dirname "$(realpath "$0")"` +source $scrDir/globalcontrol.sh + +hyprctl switchxkblayout all next + +layMain=$(hyprctl -j devices | jq '.keyboards' | jq '.[] | select (.main == true)' | awk -F '"' '{if ($2=="active_keymap") print $4}') +notify-send -a "t1" -r 91190 -t 800 -i "~/.config/dunst/icons/keyboard.svg" "${layMain}" + diff --git a/Configs/.local/share/bin/logoutlaunch.sh b/Configs/.local/share/bin/logoutlaunch.sh new file mode 100755 index 0000000..c1f7495 --- /dev/null +++ b/Configs/.local/share/bin/logoutlaunch.sh @@ -0,0 +1,85 @@ +#!/usr/bin/env sh + + +#// Check if wlogout is already running + +if pgrep -x "wlogout" > /dev/null +then + pkill -x "wlogout" + exit 0 +fi + + +#// set file variables + +scrDir=`dirname "$(realpath "$0")"` +source $scrDir/globalcontrol.sh +[ -z "${1}" ] || wlogoutStyle="${1}" +wLayout="${confDir}/wlogout/layout_${wlogoutStyle}" +wlTmplt="${confDir}/wlogout/style_${wlogoutStyle}.css" + +if [ ! -f "${wLayout}" ] || [ ! -f "${wlTmplt}" ] ; then + echo "ERROR: Config ${wlogoutStyle} not found..." + wlogoutStyle=1 + wLayout="${confDir}/wlogout/layout_${wlogoutStyle}" + wlTmplt="${confDir}/wlogout/style_${wlogoutStyle}.css" +fi + + +#// detect monitor res + +x_mon=$(hyprctl -j monitors | jq '.[] | select(.focused==true) | .width') +y_mon=$(hyprctl -j monitors | jq '.[] | select(.focused==true) | .height') +hypr_scale=$(hyprctl -j monitors | jq '.[] | select (.focused == true) | .scale' | sed 's/\.//') + + +#// scale config layout and style + +case "${wlogoutStyle}" in + 1) wlColms=6 + export mgn=$(( y_mon * 28 / hypr_scale )) + export hvr=$(( y_mon * 23 / hypr_scale )) ;; + 2) wlColms=2 + export x_mgn=$(( x_mon * 35 / hypr_scale )) + export y_mgn=$(( y_mon * 25 / hypr_scale )) + export x_hvr=$(( x_mon * 32 / hypr_scale )) + export y_hvr=$(( y_mon * 20 / hypr_scale )) ;; +esac + + +#// scale font size + +export fntSize=$(( y_mon * 2 / 100 )) + + +#// detect wallpaper brightness + +[ -f "${cacheDir}/wall.dcol" ] && source "${cacheDir}/wall.dcol" +# Theme mode: detects the color-scheme set in hypr.theme and falls back if nothing is parsed. +if [ "${enableWallDcol}" -eq 0 ]; then + colorScheme="$({ grep -q "^[[:space:]]*\$COLOR[-_]SCHEME\s*=" "${hydeThemeDir}/hypr.theme" && grep "^[[:space:]]*\$COLOR[-_]SCHEME\s*=" "${hydeThemeDir}/hypr.theme" | cut -d '=' -f2 | sed 's/^[[:space:]]*//;s/[[:space:]]*$//' ;} || + grep 'gsettings set org.gnome.desktop.interface color-scheme' "${hydeThemeDir}/hypr.theme" | awk -F "'" '{print $((NF - 1))}')" + colorScheme=${colorScheme:-$(gsettings get org.gnome.desktop.interface color-scheme)} + # should be declared explicitly so we can easily debug + grep -q "dark" <<< "${colorScheme}" && dcol_mode="dark" + grep -q "light" <<< "${colorScheme}" && dcol_mode="light" +[ -f "${hydeThemeDir}/theme.dcol" ] && source "${hydeThemeDir}/theme.dcol" +fi +[ "${dcol_mode}" == "dark" ] && export BtnCol="white" || export BtnCol="black" + + +#// eval hypr border radius + +export active_rad=$(( hypr_border * 5 )) +export button_rad=$(( hypr_border * 8 )) + + +#// eval config files + +wlStyle="$(envsubst < $wlTmplt)" + + +#// launch wlogout + +wlogout -b "${wlColms}" -c 0 -r 0 -m 0 --layout "${wLayout}" --css <(echo "${wlStyle}") --protocol layer-shell + diff --git a/Configs/.local/share/bin/mediaplayer.py b/Configs/.local/share/bin/mediaplayer.py new file mode 100755 index 0000000..eee55b6 --- /dev/null +++ b/Configs/.local/share/bin/mediaplayer.py @@ -0,0 +1,183 @@ +#!/usr/bin/env python3 +import gi +gi.require_version("Playerctl", "2.0") +from gi.repository import Playerctl, GLib +from gi.repository.Playerctl import Player +import argparse +import logging +import sys +import signal +import gi +import json +import os +from typing import List + +logger = logging.getLogger(__name__) + +def signal_handler(sig, frame): + logger.info("Received signal to stop, exiting") + sys.stdout.write("\n") + sys.stdout.flush() + # loop.quit() + sys.exit(0) + + +class PlayerManager: + def __init__(self, selected_player=None): + self.manager = Playerctl.PlayerManager() + self.loop = GLib.MainLoop() + self.manager.connect( + "name-appeared", lambda *args: self.on_player_appeared(*args)) + self.manager.connect( + "player-vanished", lambda *args: self.on_player_vanished(*args)) + + signal.signal(signal.SIGINT, signal_handler) + signal.signal(signal.SIGTERM, signal_handler) + signal.signal(signal.SIGPIPE, signal.SIG_DFL) + self.selected_player = selected_player + + self.init_players() + + def init_players(self): + for player in self.manager.props.player_names: + if self.selected_player is not None and self.selected_player != player.name: + logger.debug(f"{player.name} is not the filtered player, skipping it") + continue + self.init_player(player) + + def run(self): + logger.info("Starting main loop") + self.loop.run() + + def init_player(self, player): + logger.info(f"Initialize new player: {player.name}") + player = Playerctl.Player.new_from_name(player) + player.connect("playback-status", + self.on_playback_status_changed, None) + player.connect("metadata", self.on_metadata_changed, None) + self.manager.manage_player(player) + self.on_metadata_changed(player, player.props.metadata) + + def get_players(self) -> List[Player]: + return self.manager.props.players + + def write_output(self, text, player, tooltip): + logger.debug(f"Writing output: {text}") + + output = {"text": text, + "class": "custom-" + player.props.player_name, + "alt": player.props.player_name, + "tooltip": tooltip} + + sys.stdout.write(json.dumps(output) + "\n") + sys.stdout.flush() + + def clear_output(self): + sys.stdout.write("\n") + sys.stdout.flush() + + def on_playback_status_changed(self, player, status, _=None): + logger.debug(f"Playback status changed for player {player.props.player_name}: {status}") + self.on_metadata_changed(player, player.props.metadata) + + def get_first_playing_player(self): + players = self.get_players() + logger.debug(f"Getting first playing player from {len(players)} players") + if len(players) > 0: + # if any are playing, show the first one that is playing + # reverse order, so that the most recently added ones are preferred + for player in players[::-1]: + if player.props.status == "Playing": + return player + # if none are playing, show the first one + return players[0] + else: + logger.debug("No players found") + return None + + def show_most_important_player(self): + logger.debug("Showing most important player") + # show the currently playing player + # or else show the first paused player + # or else show nothing + current_player = self.get_first_playing_player() + if current_player is not None: + self.on_metadata_changed(current_player, current_player.props.metadata) + else: + self.clear_output() + + def on_metadata_changed(self, player, metadata, _=None): + logger.debug(f"Metadata changed for player {player.props.player_name}") + player_name = player.props.player_name + artist = player.get_artist() + title = player.get_title() + + track_info = "" + if player_name == "spotify" and "mpris:trackid" in metadata.keys() and ":ad:" in player.props.metadata["mpris:trackid"]: + track_info = "Advertisement" + elif artist is not None and title is not None: + track_info = f"{artist} - {title}" + else: + track_info = title + tooltip = track_info + if track_info: + if player.props.status == "Playing": + track_info = " " + track_info + else: + track_info = " " + track_info + # only print output if no other player is playing + current_playing = self.get_first_playing_player() + if current_playing is None or current_playing.props.player_name == player.props.player_name: + self.write_output(track_info, player, tooltip) + else: + logger.debug(f"Other player {current_playing.props.player_name} is playing, skipping") + + def on_player_appeared(self, _, player): + logger.info(f"Player has appeared: {player.name}") + if player is not None and (self.selected_player is None or player.name == self.selected_player): + self.init_player(player) + else: + logger.debug( + "New player appeared, but it's not the selected player, skipping") + + def on_player_vanished(self, _, player): + logger.info(f"Player {player.props.player_name} has vanished") + self.show_most_important_player() + +def parse_arguments(): + parser = argparse.ArgumentParser() + + # Increase verbosity with every occurrence of -v + parser.add_argument("-v", "--verbose", action="count", default=0) + + # Define for which player we"re listening + parser.add_argument("--player") + + parser.add_argument("--enable-logging", action="store_true") + + return parser.parse_args() + + +def main(): + arguments = parse_arguments() + + # Initialize logging + if arguments.enable_logging: + logfile = os.path.join(os.path.dirname( + os.path.realpath(__file__)), "media-player.log") + logging.basicConfig(filename=logfile, level=logging.DEBUG, + format="%(asctime)s %(name)s %(levelname)s:%(lineno)d %(message)s") + + # Logging is set by default to WARN and higher. + # With every occurrence of -v it's lowered by one + logger.setLevel(max((3 - arguments.verbose) * 10, 0)) + + logger.info("Creating player manager") + if arguments.player: + logger.info(f"Filtering for player: {arguments.player}") + player = PlayerManager(arguments.player) + player.run() + + +if __name__ == "__main__": + main() diff --git a/Configs/.local/share/bin/notifications.py b/Configs/.local/share/bin/notifications.py new file mode 100755 index 0000000..99719f0 --- /dev/null +++ b/Configs/.local/share/bin/notifications.py @@ -0,0 +1,55 @@ +#!/usr/bin/python3 + +import subprocess +import json +import sys + +def get_dunst_history(): + result = subprocess.run(['dunstctl', 'history'], stdout=subprocess.PIPE) + history = json.loads(result.stdout.decode('utf-8')) + return history + +def format_history(history): + count = len(history['data'][0]) + alt = 'none' + tooltip_click = [] + tooltip_click.append("󰎟 Notifications") + tooltip_click.append("󰳽 scroll-down:  history pop") + tooltip_click.append("󰳽 click-left:  Enable & Disable DND") + tooltip_click.append("󰳽 click-middle: 󰛌 clear history") + tooltip_click.append("󰳽 click-right: 󱄊 close all") + + tooltip = [] + + if count > 0: + notifications = history['data'][0][:10] # Get the first 10 notifications + for notification in notifications: + body = notification.get('body', {}).get('data', '') + category = notification.get('category', {}).get('data', '') + if category: + alt = category + '-notification' + tooltip.append(f" {body} ({category})\n") + else: + alt = 'notification' + tooltip.append(f" {body}\n") + + isDND = subprocess.run(['dunstctl', 'get-pause-level'], stdout=subprocess.PIPE) + isDND = isDND.stdout.decode('utf-8').strip() + if isDND != '0': + alt = "dnd" + formatted_history = { + "text": str(count), + "alt": alt, + "tooltip": '\n '.join(tooltip_click) + '\n\n ' + '\n '.join(tooltip), + "class": alt + } + return formatted_history + +def main(): + history = get_dunst_history() + formatted_history = format_history(history) + sys.stdout.write(json.dumps(formatted_history) + '\n') + sys.stdout.flush() + +if __name__ == "__main__": + main() diff --git a/Configs/.local/share/bin/polkitkdeauth.sh b/Configs/.local/share/bin/polkitkdeauth.sh new file mode 100755 index 0000000..7e6e10c --- /dev/null +++ b/Configs/.local/share/bin/polkitkdeauth.sh @@ -0,0 +1,10 @@ +#!/usr/bin/env sh + +# Use different directory on NixOS +if [ -d /run/current-system/sw/libexec ]; then + libDir=/run/current-system/sw/libexec +else + libDir=/usr/lib +fi + +${libDir}/polkit-gnome/polkit-gnome-authentication-agent-1 & diff --git a/Configs/.local/share/bin/quickapps.sh b/Configs/.local/share/bin/quickapps.sh new file mode 100755 index 0000000..dd5e149 --- /dev/null +++ b/Configs/.local/share/bin/quickapps.sh @@ -0,0 +1,77 @@ +#!/usr/bin/env sh + +# set variables + +scrDir=`dirname "$(realpath "$0")"` +source $scrDir/globalcontrol.sh +roconf="~/.config/rofi/quickapps.rasi" + +if [ $# -eq 0 ] ; then + echo "usage: ./quickapps.sh ... " + exit 1 +else + appCount="$#" +fi + + +# set position + +x_mon=$( cat /sys/class/drm/*/modes | head -1 ) +y_mon=$( echo $x_mon | cut -d 'x' -f 2 ) +x_mon=$( echo $x_mon | cut -d 'x' -f 1 ) + +x_cur=$(hyprctl cursorpos | sed 's/ //g') +y_cur=$( echo $x_cur | cut -d ',' -f 2 ) +x_cur=$( echo $x_cur | cut -d ',' -f 1 ) + +if [ ${x_cur} -le $(( x_mon/3 )) ] ; then + x_rofi="west" + x_offset="x-offset: 20px;" +elif [ ${x_cur} -ge $(( x_mon/3*2 )) ] ; then + x_rofi="east" + x_offset="x-offset: -20px;" +else + unset x_rofi +fi + +if [ ${y_cur} -le $(( y_mon/3 )) ] ; then + y_rofi="north" + y_offset="y-offset: 20px;" +elif [ ${y_cur} -ge $(( y_mon/3*2 )) ] ; then + y_rofi="south" + y_offset="y-offset: -20px;" +else + unset y_rofi +fi + +if [ ! -z $x_rofi ] || [ ! -z $y_rofi ] ; then + pos="window {location: $y_rofi $x_rofi; $x_offset $y_offset}" +fi + + +# override rofi + +dockHeight=$(( x_mon * 3 / 100)) +dockWidth=$(( dockHeight * appCount )) +iconSize=$(( dockHeight - 4 )) +wind_border=$(( hypr_border * 3/2 )) +r_override="window{height:${dockHeight};width:${dockWidth};border-radius:${wind_border}px;} listview{columns:${appCount};} element{border-radius:${wind_border}px;} element-icon{size:${iconSize}px;}" + + +# launch rofi menu + +if [ -d /run/current-system/sw/share/applications ]; then + appDir=/run/current-system/sw/share/applications +else + appDir=/usr/share/applications +fi + +RofiSel=$( for qapp in "$@" +do + Lkp=`grep "$qapp" $appDir/* | grep 'Exec=' | awk -F ':' '{print $1}' | head -1` + Ico=`grep 'Icon=' $Lkp | awk -F '=' '{print $2}' | head -1` + echo -en "${qapp}\x00icon\x1f${Ico}\n" +done | rofi -no-fixed-num-lines -dmenu -theme-str "${r_override}" -theme-str "${pos}" -config $roconf) + +$RofiSel & + diff --git a/Configs/.local/share/bin/resetxdgportal.sh b/Configs/.local/share/bin/resetxdgportal.sh new file mode 100755 index 0000000..c1c26a0 --- /dev/null +++ b/Configs/.local/share/bin/resetxdgportal.sh @@ -0,0 +1,20 @@ +#!/usr/bin/env bash +sleep 1 +killall xdg-desktop-portal-hyprland +killall xdg-desktop-portal-gnome +killall xdg-desktop-portal-kde +killall xdg-desktop-portal-lxqt +killall xdg-desktop-portal-wlr +killall xdg-desktop-portal +sleep 1 + +# Use different directory on NixOS +if [ -d /run/current-system/sw/libexec ]; then + libDir=/run/current-system/sw/libexec +else + libDir=/usr/lib +fi + +$libDir/xdg-desktop-portal-hyprland & +sleep 2 +$libDir/xdg-desktop-portal & diff --git a/Configs/.local/share/bin/rofilaunch.sh b/Configs/.local/share/bin/rofilaunch.sh new file mode 100755 index 0000000..8e52297 --- /dev/null +++ b/Configs/.local/share/bin/rofilaunch.sh @@ -0,0 +1,45 @@ +#!/usr/bin/env sh + + +#// set variables + +scrDir="$(dirname "$(realpath "$0")")" +source "${scrDir}/globalcontrol.sh" +roconf="${confDir}/rofi/styles/style_${rofiStyle}.rasi" + +[[ "${rofiScale}" =~ ^[0-9]+$ ]] || rofiScale=10 + +if [ ! -f "${roconf}" ] ; then + roconf="$(find "${confDir}/rofi/styles" -type f -name "style_*.rasi" | sort -t '_' -k 2 -n | head -1)" +fi + + +#// rofi action + +case "${1}" in + d|--drun) r_mode="drun" ;; + w|--window) r_mode="window" ;; + f|--filebrowser) r_mode="filebrowser" ;; + h|--help) echo -e "$(basename "${0}") [action]" + echo "d : drun mode" + echo "w : window mode" + echo "f : filebrowser mode," + exit 0 ;; + *) r_mode="drun" ;; +esac + + +#// set overrides + +wind_border=$(( hypr_border * 3 )) +[ "${hypr_border}" -eq 0 ] && elem_border="10" || elem_border=$(( hypr_border * 2 )) +r_override="window {border: ${hypr_width}px; border-radius: ${wind_border}px;} element {border-radius: ${elem_border}px;}" +r_scale="configuration {font: \"JetBrainsMono Nerd Font ${rofiScale}\";}" +i_override="$(gsettings get org.gnome.desktop.interface icon-theme | sed "s/'//g")" +i_override="configuration {icon-theme: \"${i_override}\";}" + + +#// launch rofi + +rofi -show "${r_mode}" -theme-str "${r_scale}" -theme-str "${r_override}" -theme-str "${i_override}" -config "${roconf}" + diff --git a/Configs/.local/share/bin/rofiselect.sh b/Configs/.local/share/bin/rofiselect.sh new file mode 100755 index 0000000..56db821 --- /dev/null +++ b/Configs/.local/share/bin/rofiselect.sh @@ -0,0 +1,51 @@ +#!/usr/bin/env sh + + +#// set variables + +scrDir="$(dirname "$(realpath "$0")")" +source "${scrDir}/globalcontrol.sh" +rofiConf="${confDir}/rofi/selector.rasi" +rofiStyleDir="${confDir}/rofi/styles" +rofiAssetDir="${confDir}/rofi/assets" + + +#// set rofi scaling + +[[ "${rofiScale}" =~ ^[0-9]+$ ]] || rofiScale=10 +r_scale="configuration {font: \"JetBrainsMono Nerd Font ${rofiScale}\";}" +elem_border=$(( hypr_border * 5 )) +icon_border=$(( elem_border - 5 )) + + +#// scale for monitor + +mon_x_res=$(hyprctl -j monitors | jq '.[] | select(.focused==true) | .width') +mon_scale=$(hyprctl -j monitors | jq '.[] | select(.focused==true) | .scale' | sed "s/\.//") +mon_x_res=$(( mon_x_res * 100 / mon_scale )) + + +#// generate config + +elm_width=$(( (20 + 12 + 16 ) * rofiScale )) +max_avail=$(( mon_x_res - (4 * rofiScale) )) +col_count=$(( max_avail / elm_width )) +[[ "${col_count}" -gt 5 ]] && col_count=5 +r_override="window{width:100%;} listview{columns:${col_count};} element{orientation:vertical;border-radius:${elem_border}px;} element-icon{border-radius:${icon_border}px;size:20em;} element-text{enabled:false;}" + + +#// launch rofi menu + +RofiSel=$(ls ${rofiStyleDir}/style_*.rasi | awk -F '[_.]' '{print $((NF - 1))}' | while read styleNum +do + echo -en "${styleNum}\x00icon\x1f${rofiAssetDir}/style_${styleNum}.png\n" +done | sort -n | rofi -dmenu -theme-str "${r_override}" -config "${rofiConf}" -select "${rofiStyle}") + + +#// apply rofi style + +if [ ! -z "${RofiSel}" ] ; then + set_conf "rofiStyle" "${RofiSel}" + notify-send -a "t1" -r 91190 -t 2200 -i "${rofiAssetDir}/style_${RofiSel}.png" " style ${RofiSel} applied..." +fi + diff --git a/Configs/.local/share/bin/screenshot.sh b/Configs/.local/share/bin/screenshot.sh new file mode 100755 index 0000000..d9081d6 --- /dev/null +++ b/Configs/.local/share/bin/screenshot.sh @@ -0,0 +1,63 @@ +#!/usr/bin/env sh + +# Restores the shader after screenshot has been taken +restore_shader() { + if [ -n "$shader" ]; then + hyprshade on "$shader" + fi +} + +# Saves the current shader and turns it off +save_shader() { + shader=$(hyprshade current) + hyprshade off + trap restore_shader EXIT +} + +save_shader # Saving the current shader + +if [ -z "$XDG_PICTURES_DIR" ]; then + XDG_PICTURES_DIR="$HOME/Pictures" +fi + +scrDir=$(dirname "$(realpath "$0")") +source $scrDir/globalcontrol.sh +swpy_dir="${confDir}/swappy" +save_dir="${2:-$XDG_PICTURES_DIR/Screenshots}" +save_file=$(date +'%y%m%d_%Hh%Mm%Ss_screenshot.png') +temp_screenshot="/tmp/screenshot.png" + +mkdir -p $save_dir +mkdir -p $swpy_dir +echo -e "[Default]\nsave_dir=$save_dir\nsave_filename_format=$save_file" >$swpy_dir/config + +function print_error +{ + cat <<"EOF" + ./screenshot.sh + ...valid actions are... + p : print all screens + s : snip current screen + sf : snip current screen (frozen) + m : print focused monitor +EOF +} + +case $1 in +p) # print all outputs + grimblast copysave screen $temp_screenshot && restore_shader && swappy -f $temp_screenshot ;; +s) # drag to manually snip an area / click on a window to print it + grimblast copysave area $temp_screenshot && restore_shader && swappy -f $temp_screenshot ;; +sf) # frozen screen, drag to manually snip an area / click on a window to print it + grimblast --freeze copysave area $temp_screenshot && restore_shader && swappy -f $temp_screenshot ;; +m) # print focused monitor + grimblast copysave output $temp_screenshot && restore_shader && swappy -f $temp_screenshot ;; +*) # invalid option + print_error ;; +esac + +rm "$temp_screenshot" + +if [ -f "${save_dir}/${save_file}" ]; then + notify-send -a "t1" -i "${save_dir}/${save_file}" "saved in ${save_dir}" +fi diff --git a/Configs/.local/share/bin/swwwallbash.sh b/Configs/.local/share/bin/swwwallbash.sh new file mode 100755 index 0000000..de4f502 --- /dev/null +++ b/Configs/.local/share/bin/swwwallbash.sh @@ -0,0 +1,265 @@ +#!/usr/bin/env sh + +#// set variables + +export scrDir="$(dirname "$(realpath "$0")")" +source "${scrDir}/globalcontrol.sh" +wallbashImg="${1}" + + +#// validate input + +if [ -z "${wallbashImg}" ] || [ ! -f "${wallbashImg}" ] ; then + echo "Error: Input wallpaper not found!" + exit 1 +fi +wallbashOut="${dcolDir}/$(set_hash "${wallbashImg}").dcol" + +if [ ! -f "${wallbashOut}" ] ; then + "${scrDir}/swwwallcache.sh" -w "${wallbashImg}" &> /dev/null +fi + +set -a +source "${wallbashOut}" +if [ -f "${hydeThemeDir}/theme.dcol" ] && [ "${enableWallDcol}" -eq 0 ] ; then + source "${hydeThemeDir}/theme.dcol" + echo "[theme] Overriding dominant colors from \"${hydeTheme}\"" + echo "[note] Remove \"${hydeThemeDir}/theme.dcol\" to use wallpaper dominant colors" +fi +[ "${dcol_mode}" == "dark" ] && dcol_invt="light" || dcol_invt="dark" +set +a + + +#// deploy wallbash colors + +fn_wallbash () { + local tplt="${1}" + [ -f "${hydeConfDir}/hyde.conf" ] && source "${hydeConfDir}/hyde.conf" + # Skips the the template declared in ./hyde.conf + [[ " ${skip_wallbash[@]} " =~ " ${tplt} " ]] && echo "[skip: template] ${tplt}" && return 0 + eval target="$(head -1 "${tplt}" | awk -F '|' '{print $1}')" + [ ! -d "$(dirname "${target}")" ] && echo "[skip: no dir] \"${target}\"" && return 0 + appexe="$(head -1 "${tplt}" | awk -F '|' '{print $2}')" + sed '1d' "${tplt}" > "${target}" + + if [[ "${enableWallDcol}" -eq 2 && "${dcol_mode}" == "light" ]] || [[ "${enableWallDcol}" -eq 3 && "${dcol_mode}" == "dark" ]] ; then + sed -i 's//'"${dcol_invt}"'/g + s//'"${dcol_pry4}"'/g + s//'"${dcol_txt4}"'/g + s//'"${dcol_4xa9}"'/g + s//'"${dcol_4xa8}"'/g + s//'"${dcol_4xa7}"'/g + s//'"${dcol_4xa6}"'/g + s//'"${dcol_4xa5}"'/g + s//'"${dcol_4xa4}"'/g + s//'"${dcol_4xa3}"'/g + s//'"${dcol_4xa2}"'/g + s//'"${dcol_4xa1}"'/g + s//'"${dcol_pry3}"'/g + s//'"${dcol_txt3}"'/g + s//'"${dcol_3xa9}"'/g + s//'"${dcol_3xa8}"'/g + s//'"${dcol_3xa7}"'/g + s//'"${dcol_3xa6}"'/g + s//'"${dcol_3xa5}"'/g + s//'"${dcol_3xa4}"'/g + s//'"${dcol_3xa3}"'/g + s//'"${dcol_3xa2}"'/g + s//'"${dcol_3xa1}"'/g + s//'"${dcol_pry2}"'/g + s//'"${dcol_txt2}"'/g + s//'"${dcol_2xa9}"'/g + s//'"${dcol_2xa8}"'/g + s//'"${dcol_2xa7}"'/g + s//'"${dcol_2xa6}"'/g + s//'"${dcol_2xa5}"'/g + s//'"${dcol_2xa4}"'/g + s//'"${dcol_2xa3}"'/g + s//'"${dcol_2xa2}"'/g + s//'"${dcol_2xa1}"'/g + s//'"${dcol_pry1}"'/g + s//'"${dcol_txt1}"'/g + s//'"${dcol_1xa9}"'/g + s//'"${dcol_1xa8}"'/g + s//'"${dcol_1xa7}"'/g + s//'"${dcol_1xa6}"'/g + s//'"${dcol_1xa5}"'/g + s//'"${dcol_1xa4}"'/g + s//'"${dcol_1xa3}"'/g + s//'"${dcol_1xa2}"'/g + s//'"${dcol_1xa1}"'/g + s//'"${dcol_pry4_rgba}"'/g + s//'"${dcol_txt4_rgba}"'/g + s//'"${dcol_4xa9_rgba}"'/g + s//'"${dcol_4xa8_rgba}"'/g + s//'"${dcol_4xa7_rgba}"'/g + s//'"${dcol_4xa6_rgba}"'/g + s//'"${dcol_4xa5_rgba}"'/g + s//'"${dcol_4xa4_rgba}"'/g + s//'"${dcol_4xa3_rgba}"'/g + s//'"${dcol_4xa2_rgba}"'/g + s//'"${dcol_4xa1_rgba}"'/g + s//'"${dcol_pry3_rgba}"'/g + s//'"${dcol_txt3_rgba}"'/g + s//'"${dcol_3xa9_rgba}"'/g + s//'"${dcol_3xa8_rgba}"'/g + s//'"${dcol_3xa7_rgba}"'/g + s//'"${dcol_3xa6_rgba}"'/g + s//'"${dcol_3xa5_rgba}"'/g + s//'"${dcol_3xa4_rgba}"'/g + s//'"${dcol_3xa3_rgba}"'/g + s//'"${dcol_3xa2_rgba}"'/g + s//'"${dcol_3xa1_rgba}"'/g + s//'"${dcol_pry2_rgba}"'/g + s//'"${dcol_txt2_rgba}"'/g + s//'"${dcol_2xa9_rgba}"'/g + s//'"${dcol_2xa8_rgba}"'/g + s//'"${dcol_2xa7_rgba}"'/g + s//'"${dcol_2xa6_rgba}"'/g + s//'"${dcol_2xa5_rgba}"'/g + s//'"${dcol_2xa4_rgba}"'/g + s//'"${dcol_2xa3_rgba}"'/g + s//'"${dcol_2xa2_rgba}"'/g + s//'"${dcol_2xa1_rgba}"'/g + s//'"${dcol_pry1_rgba}"'/g + s//'"${dcol_txt1_rgba}"'/g + s//'"${dcol_1xa9_rgba}"'/g + s//'"${dcol_1xa8_rgba}"'/g + s//'"${dcol_1xa7_rgba}"'/g + s//'"${dcol_1xa6_rgba}"'/g + s//'"${dcol_1xa5_rgba}"'/g + s//'"${dcol_1xa4_rgba}"'/g + s//'"${dcol_1xa3_rgba}"'/g + s//'"${dcol_1xa2_rgba}"'/g + s//'"${dcol_1xa1_rgba}"'/g' "${target}" + else + sed -i 's//'"${dcol_mode}"'/g + s//'"${dcol_pry1}"'/g + s//'"${dcol_txt1}"'/g + s//'"${dcol_1xa1}"'/g + s//'"${dcol_1xa2}"'/g + s//'"${dcol_1xa3}"'/g + s//'"${dcol_1xa4}"'/g + s//'"${dcol_1xa5}"'/g + s//'"${dcol_1xa6}"'/g + s//'"${dcol_1xa7}"'/g + s//'"${dcol_1xa8}"'/g + s//'"${dcol_1xa9}"'/g + s//'"${dcol_pry2}"'/g + s//'"${dcol_txt2}"'/g + s//'"${dcol_2xa1}"'/g + s//'"${dcol_2xa2}"'/g + s//'"${dcol_2xa3}"'/g + s//'"${dcol_2xa4}"'/g + s//'"${dcol_2xa5}"'/g + s//'"${dcol_2xa6}"'/g + s//'"${dcol_2xa7}"'/g + s//'"${dcol_2xa8}"'/g + s//'"${dcol_2xa9}"'/g + s//'"${dcol_pry3}"'/g + s//'"${dcol_txt3}"'/g + s//'"${dcol_3xa1}"'/g + s//'"${dcol_3xa2}"'/g + s//'"${dcol_3xa3}"'/g + s//'"${dcol_3xa4}"'/g + s//'"${dcol_3xa5}"'/g + s//'"${dcol_3xa6}"'/g + s//'"${dcol_3xa7}"'/g + s//'"${dcol_3xa8}"'/g + s//'"${dcol_3xa9}"'/g + s//'"${dcol_pry4}"'/g + s//'"${dcol_txt4}"'/g + s//'"${dcol_4xa1}"'/g + s//'"${dcol_4xa2}"'/g + s//'"${dcol_4xa3}"'/g + s//'"${dcol_4xa4}"'/g + s//'"${dcol_4xa5}"'/g + s//'"${dcol_4xa6}"'/g + s//'"${dcol_4xa7}"'/g + s//'"${dcol_4xa8}"'/g + s//'"${dcol_4xa9}"'/g + s//'"${dcol_pry1_rgba}"'/g + s//'"${dcol_txt1_rgba}"'/g + s//'"${dcol_1xa1_rgba}"'/g + s//'"${dcol_1xa2_rgba}"'/g + s//'"${dcol_1xa3_rgba}"'/g + s//'"${dcol_1xa4_rgba}"'/g + s//'"${dcol_1xa5_rgba}"'/g + s//'"${dcol_1xa6_rgba}"'/g + s//'"${dcol_1xa7_rgba}"'/g + s//'"${dcol_1xa8_rgba}"'/g + s//'"${dcol_1xa9_rgba}"'/g + s//'"${dcol_pry2_rgba}"'/g + s//'"${dcol_txt2_rgba}"'/g + s//'"${dcol_2xa1_rgba}"'/g + s//'"${dcol_2xa2_rgba}"'/g + s//'"${dcol_2xa3_rgba}"'/g + s//'"${dcol_2xa4_rgba}"'/g + s//'"${dcol_2xa5_rgba}"'/g + s//'"${dcol_2xa6_rgba}"'/g + s//'"${dcol_2xa7_rgba}"'/g + s//'"${dcol_2xa8_rgba}"'/g + s//'"${dcol_2xa9_rgba}"'/g + s//'"${dcol_pry3_rgba}"'/g + s//'"${dcol_txt3_rgba}"'/g + s//'"${dcol_3xa1_rgba}"'/g + s//'"${dcol_3xa2_rgba}"'/g + s//'"${dcol_3xa3_rgba}"'/g + s//'"${dcol_3xa4_rgba}"'/g + s//'"${dcol_3xa5_rgba}"'/g + s//'"${dcol_3xa6_rgba}"'/g + s//'"${dcol_3xa7_rgba}"'/g + s//'"${dcol_3xa8_rgba}"'/g + s//'"${dcol_3xa9_rgba}"'/g + s//'"${dcol_pry4_rgba}"'/g + s//'"${dcol_txt4_rgba}"'/g + s//'"${dcol_4xa1_rgba}"'/g + s//'"${dcol_4xa2_rgba}"'/g + s//'"${dcol_4xa3_rgba}"'/g + s//'"${dcol_4xa4_rgba}"'/g + s//'"${dcol_4xa5_rgba}"'/g + s//'"${dcol_4xa6_rgba}"'/g + s//'"${dcol_4xa7_rgba}"'/g + s//'"${dcol_4xa8_rgba}"'/g + s//'"${dcol_4xa9_rgba}"'/g' "${target}" + fi + + [ -z "${appexe}" ] || bash -c "${appexe}" +} + +export -f fn_wallbash + +[ -n "$HYPRLAND_INSTANCE_SIGNATURE" ] && hyprctl keyword misc:disable_autoreload 1 -q && trap 'hyprctl reload -q && echo "[swwwallbash] reload :: Hyprland"' EXIT + +#// switch theme wall based colors + +if [ "${enableWallDcol}" -eq 0 ] && [[ "${reload_flag}" -eq 1 ]] ; then + + echo ":: deploying ${hydeTheme} colors :: ${dcol_mode} wallpaper detected" + mapfile -d '' -t deployList < <(find "${hydeThemeDir}" -type f -name "*.theme" -print0) + + while read -r pKey ; do + fKey="$(find "${hydeThemeDir}" -type f -name "$(basename "${pKey%.dcol}.theme")")" + [ -z "${fKey}" ] && deployList+=("${pKey}") + done < <(find "${wallbashDir}/Wall-Dcol" -type f -name "*.dcol") + + parallel fn_wallbash ::: "${deployList[@]}" + +elif [ "${enableWallDcol}" -gt 0 ] ; then + + echo ":: deploying wallbash colors :: ${dcol_mode} wallpaper detected" + find "${wallbashDir}/Wall-Dcol" -type f -name "*.dcol" | parallel fn_wallbash {} + +fi + +# Theme mode: detects the color-scheme set in hypr.theme and falls back if nothing is parsed. +if [ "${enableWallDcol}" -eq 0 ]; then + colorScheme="$({ grep -q "^[[:space:]]*\$COLOR-SCHEME\s*=" "${hydeThemeDir}/hypr.theme" && grep "^[[:space:]]*\$COLOR-SCHEME\s*=" "${hydeThemeDir}/hypr.theme" | cut -d '=' -f2 | sed 's/^[[:space:]]*//;s/[[:space:]]*$//' ;} || + grep 'gsettings set org.gnome.desktop.interface color-scheme' "${hydeThemeDir}/hypr.theme" | awk -F "'" '{print $((NF - 1))}')" + colorScheme=${colorScheme:-$(gsettings get org.gnome.desktop.interface color-scheme)} + # should be declared explicitly so we can easily debug + grep -q "dark" <<< "${colorScheme}" && enableWallDcol=2 + grep -q "light" <<< "${colorScheme}" && enableWallDcol=3 +fi + +find "${wallbashDir}/Wall-Ways" -type f -name "*.dcol" | parallel fn_wallbash {} diff --git a/Configs/.local/share/bin/swwwallcache.sh b/Configs/.local/share/bin/swwwallcache.sh new file mode 100755 index 0000000..52f6ce2 --- /dev/null +++ b/Configs/.local/share/bin/swwwallcache.sh @@ -0,0 +1,91 @@ +#!/usr/bin/env sh + + +#// set variables + +export scrDir="$(dirname "$(realpath "$0")")" +source "${scrDir}/globalcontrol.sh" +export thmbDir +export dcolDir + +[ -d "${hydeThemeDir}" ] && cacheIn="${hydeThemeDir}" || exit 1 +[ -d "${thmbDir}" ] || mkdir -p "${thmbDir}" +[ -d "${dcolDir}" ] || mkdir -p "${dcolDir}" +[ -d "${cacheDir}/landing" ] || mkdir -p "${cacheDir}/landing" + +if [ ! -z "${wallbashCustomCurve}" ] && [[ "${wallbashCustomCurve}" =~ ^([0-9]+[[:space:]][0-9]+\\n){8}[0-9]+[[:space:]][0-9]+$ ]] ; then + export wallbashCustomCurve + echo ":: wallbash --custom \"${wallbashCustomCurve}\"" +else + export wallbashCustomCurve="32 50\n42 46\n49 40\n56 39\n64 38\n76 37\n90 33\n94 29\n100 20" +fi + + +#// define functions + +fn_wallcache() +{ + local x_hash="${1}" + local x_wall="${2}" + [ ! -e "${thmbDir}/${x_hash}.thmb" ] && magick "${x_wall}"[0] -strip -resize 1000 -gravity center -extent 1000 -quality 90 "${thmbDir}/${x_hash}.thmb" + [ ! -e "${thmbDir}/${x_hash}.sqre" ] && magick "${x_wall}"[0] -strip -thumbnail 500x500^ -gravity center -extent 500x500 "${thmbDir}/${x_hash}.sqre" + [ ! -e "${thmbDir}/${x_hash}.blur" ] && magick "${x_wall}"[0] -strip -scale 10% -blur 0x3 -resize 100% "${thmbDir}/${x_hash}.blur" + [ ! -e "${thmbDir}/${x_hash}.quad" ] && magick "${thmbDir}/${x_hash}.sqre" \( -size 500x500 xc:white -fill "rgba(0,0,0,0.7)" -draw "polygon 400,500 500,500 500,0 450,0" -fill black -draw "polygon 500,500 500,0 450,500" \) -alpha Off -compose CopyOpacity -composite "${thmbDir}/${x_hash}.png" && mv "${thmbDir}/${x_hash}.png" "${thmbDir}/${x_hash}.quad" + { [ ! -e "${dcolDir}/${x_hash}.dcol" ] || [ "$(wc -l < "${dcolDir}/${x_hash}.dcol")" -ne 89 ] ;} && "${scrDir}/wallbash.sh" --custom "${wallbashCustomCurve}" "${thmbDir}/${x_hash}.thmb" "${dcolDir}/${x_hash}" &> /dev/null +} + +fn_wallcache_force() +{ + local x_hash="${1}" + local x_wall="${2}" + magick "${x_wall}"[0] -strip -resize 1000 -gravity center -extent 1000 -quality 90 "${thmbDir}/${x_hash}.thmb" + magick "${x_wall}"[0] -strip -thumbnail 500x500^ -gravity center -extent 500x500 "${thmbDir}/${x_hash}.sqre" + magick "${x_wall}"[0] -strip -scale 10% -blur 0x3 -resize 100% "${thmbDir}/${x_hash}.blur" + magick "${thmbDir}/${x_hash}.sqre" \( -size 500x500 xc:white -fill "rgba(0,0,0,0.7)" -draw "polygon 400,500 500,500 500,0 450,0" -fill black -draw "polygon 500,500 500,0 450,500" \) -alpha Off -compose CopyOpacity -composite "${thmbDir}/${x_hash}.png" && mv "${thmbDir}/${x_hash}.png" "${thmbDir}/${x_hash}.quad" + "${scrDir}/wallbash.sh" --custom "${wallbashCustomCurve}" "${thmbDir}/${x_hash}.thmb" "${dcolDir}/${x_hash}" &> /dev/null +} + +export -f fn_wallcache +export -f fn_wallcache_force + + +#// evaluate options + +while getopts "w:t:f" option ; do + case $option in + w ) # generate cache for input wallpaper + if [ -z "${OPTARG}" ] || [ ! -f "${OPTARG}" ] ; then + echo "Error: Input wallpaper \"${OPTARG}\" not found!" + exit 1 + fi + cacheIn="${OPTARG}" + ;; + t ) # generate cache for input theme + cacheIn="$(dirname "${hydeThemeDir}")/${OPTARG}" + if [ ! -d "${cacheIn}" ] ; then + echo "Error: Input theme \"${OPTARG}\" not found!" + exit 1 + fi + ;; + f ) # full cache rebuild + cacheIn="$(dirname "${hydeThemeDir}")" + mode="_force" + ;; + * ) # invalid option + echo "... invalid option ..." + echo "$(basename "${0}") -[option]" + echo "w : generate cache for input wallpaper" + echo "t : generate cache for input theme" + echo "f : full cache rebuild" + exit 1 ;; + esac +done + + +#// generate cache + +wallPathArray=("${cacheIn}") +wallPathArray+=("${wallAddCustomPath[@]}") +get_hashmap "${wallPathArray[@]}" +parallel --bar --link "fn_wallcache${mode}" ::: "${wallHash[@]}" ::: "${wallList[@]}" +exit 0 diff --git a/Configs/.local/share/bin/swwwallkon.sh b/Configs/.local/share/bin/swwwallkon.sh new file mode 100755 index 0000000..e742264 --- /dev/null +++ b/Configs/.local/share/bin/swwwallkon.sh @@ -0,0 +1,73 @@ +#!/usr/bin/env sh + + +#// Set variables + +scrDir=$(dirname "$(realpath "$0")") +source "${scrDir}/globalcontrol.sh" +scrName="$(basename "$0")" +kmenuPath="$HOME/.local/share/kio/servicemenus" +kmenuDesk="${kmenuPath}/hydewallpaper.desktop" +tgtPath="$(dirname "${hydeThemeDir}")" +get_themes + + +#// Evaluate options + +while getopts "t:w:" option ; do + case $option in + + t ) # Set theme + for x in "${!thmList[@]}" ; do + if [ "${thmList[x]}" == "$OPTARG" ] ; then + setTheme="${thmList[x]}" + break + fi + done + [ -z "${setTheme}" ] && echo "Error: '$OPTARG' theme not available..." && exit 1 + ;; + + w ) # Set wallpaper + if [ -f "$OPTARG" ] && file --mime-type "$OPTARG" | grep -q 'image/' ; then + setWall="$OPTARG" + else + echo "Error: '$OPTARG' is not an image file..." + exit 1 + fi + ;; + + * ) # Refresh menu + unset setTheme + unset setWall + ;; + + esac +done + + +#// Regenerate desktop + +if [ ! -z "${setTheme}" ] && [ ! -z "${setWall}" ] ; then + + inwallHash="$(set_hash "${setWall}")" + get_hashmap "${tgtPath}/${setTheme}" + if [[ "${wallHash[@]}" == *"${inwallHash}"* ]] ; then + notify-send -a "t2" -i "${thmbDir}/${inwallHash}.sqre" "Error" "Hash matched in ${setTheme}" + exit 0 + fi + + cp "${setWall}" "${tgtPath}/${setTheme}/wallpapers" + ln -fs "${tgtPath}/${setTheme}/wallpapers/$(basename "${setWall}")" "${tgtPath}/${setTheme}/wall.set" + + "${scrDir}/themeswitch.sh" -s "${setTheme}" + notify-send -a "t1" -i "${thmbDir}/${inwallHash}.sqre" "Wallpaper set in ${setTheme}" + +else + + echo -e "[Desktop Entry]\nType=Service\nMimeType=image/png;image/jpeg;image/jpg;image/gif\nActions=Menu-Refresh$(printf ";%s" "${thmList[@]}")\nX-KDE-Submenu=Set As Wallpaper...\n\n[Desktop Action Menu-Refresh]\nName=.: Refresh List :.\nExec=${scrName}" > "${kmenuDesk}" + for i in "${!thmList[@]}" ; do + echo -e "\n[Desktop Action ${thmList[i]}]\nName=${thmList[i]}\nExec=${scrName} -t \"${thmList[i]}\" -w %u" >> "${kmenuDesk}" + done + +fi + diff --git a/Configs/.local/share/bin/swwwallpaper.sh b/Configs/.local/share/bin/swwwallpaper.sh new file mode 100755 index 0000000..15a9fb2 --- /dev/null +++ b/Configs/.local/share/bin/swwwallpaper.sh @@ -0,0 +1,115 @@ +#!/usr/bin/env sh + + +#// lock instance + +lockFile="/tmp/hyde$(id -u)$(basename ${0}).lock" +[ -e "${lockFile}" ] && echo "An instance of the script is already running..." && exit 1 +touch "${lockFile}" +trap 'rm -f ${lockFile}' EXIT + + +#// define functions + +Wall_Cache() +{ + ln -fs "${wallList[setIndex]}" "${wallSet}" + ln -fs "${wallList[setIndex]}" "${wallCur}" + "${scrDir}/swwwallcache.sh" -w "${wallList[setIndex]}" &> /dev/null + "${scrDir}/swwwallbash.sh" "${wallList[setIndex]}" & + ln -fs "${thmbDir}/${wallHash[setIndex]}.sqre" "${wallSqr}" + ln -fs "${thmbDir}/${wallHash[setIndex]}.thmb" "${wallTmb}" + ln -fs "${thmbDir}/${wallHash[setIndex]}.blur" "${wallBlr}" + ln -fs "${thmbDir}/${wallHash[setIndex]}.quad" "${wallQad}" + ln -fs "${dcolDir}/${wallHash[setIndex]}.dcol" "${wallDcl}" +} + +Wall_Change() +{ + curWall="$(set_hash "${wallSet}")" + for i in "${!wallHash[@]}" ; do + if [ "${curWall}" == "${wallHash[i]}" ] ; then + if [ "${1}" == "n" ] ; then + setIndex=$(( (i + 1) % ${#wallList[@]} )) + elif [ "${1}" == "p" ] ; then + setIndex=$(( i - 1 )) + fi + break + fi + done + Wall_Cache +} + + +#// set variables + +scrDir="$(dirname "$(realpath "$0")")" +source "${scrDir}/globalcontrol.sh" +wallSet="${hydeThemeDir}/wall.set" +wallCur="${cacheDir}/wall.set" +wallSqr="${cacheDir}/wall.sqre" +wallTmb="${cacheDir}/wall.thmb" +wallBlr="${cacheDir}/wall.blur" +wallQad="${cacheDir}/wall.quad" +wallDcl="${cacheDir}/wall.dcol" + + +#// check wall + +setIndex=0 +[ ! -d "${hydeThemeDir}" ] && echo "ERROR: \"${hydeThemeDir}\" does not exist" && exit 0 +wallPathArray=("${hydeThemeDir}") +wallPathArray+=("${wallAddCustomPath[@]}") +get_hashmap "${wallPathArray[@]}" +[ ! -e "$(readlink -f "${wallSet}")" ] && echo "fixig link :: ${wallSet}" && ln -fs "${wallList[setIndex]}" "${wallSet}" + + +#// evaluate options + +while getopts "nps:" option ; do + case $option in + n ) # set next wallpaper + xtrans="grow" + Wall_Change n + ;; + p ) # set previous wallpaper + xtrans="outer" + Wall_Change p + ;; + s ) # set input wallpaper + if [ ! -z "${OPTARG}" ] && [ -f "${OPTARG}" ] ; then + get_hashmap "${OPTARG}" + fi + Wall_Cache + ;; + * ) # invalid option + echo "... invalid option ..." + echo "$(basename "${0}") -[option]" + echo "n : set next wall" + echo "p : set previous wall" + echo "s : set input wallpaper" + exit 1 ;; + esac +done + + +#// check swww daemon + +swww query &> /dev/null +if [ $? -ne 0 ] ; then + swww-daemon --format xrgb & + swww query && swww restore +fi + + +#// set defaults + +[ -z "${xtrans}" ] && xtrans="grow" +[ -z "${wallFramerate}" ] && wallFramerate=60 +[ -z "${wallTransDuration}" ] && wallTransDuration=0.4 + + +#// apply wallpaper + +echo ":: applying wall :: \"$(readlink -f "${wallSet}")\"" +swww img "$(readlink "${wallSet}")" --transition-bezier .43,1.19,1,.4 --transition-type "${xtrans}" --transition-duration "${wallTransDuration}" --transition-fps "${wallFramerate}" --invert-y --transition-pos "$(hyprctl cursorpos | grep -E '^[0-9]' || echo "0,0")" & diff --git a/Configs/.local/share/bin/swwwallselect.sh b/Configs/.local/share/bin/swwwallselect.sh new file mode 100755 index 0000000..46a06df --- /dev/null +++ b/Configs/.local/share/bin/swwwallselect.sh @@ -0,0 +1,52 @@ +#!/usr/bin/env sh + + +#// set variables + +scrDir="$(dirname "$(realpath "$0")")" +source "${scrDir}/globalcontrol.sh" +rofiConf="${confDir}/rofi/selector.rasi" + + +#// set rofi scaling + +[[ "${rofiScale}" =~ ^[0-9]+$ ]] || rofiScale=10 +r_scale="configuration {font: \"JetBrainsMono Nerd Font ${rofiScale}\";}" +elem_border=$(( hypr_border * 3 )) + + +#// scale for monitor + +mon_x_res=$(hyprctl -j monitors | jq '.[] | select(.focused==true) | .width') +mon_scale=$(hyprctl -j monitors | jq '.[] | select(.focused==true) | .scale' | sed "s/\.//") +mon_x_res=$(( mon_x_res * 100 / mon_scale )) + + +#// generate config + +elm_width=$(( (28 + 8 + 5) * rofiScale )) +max_avail=$(( mon_x_res - (4 * rofiScale) )) +col_count=$(( max_avail / elm_width )) +r_override="window{width:100%;} listview{columns:${col_count};spacing:5em;} element{border-radius:${elem_border}px;orientation:vertical;} element-icon{size:28em;border-radius:0em;} element-text{padding:1em;}" + + +#// launch rofi menu + +currentWall="$(basename "$(readlink "${hydeThemeDir}/wall.set")")" +wallPathArray=("${hydeThemeDir}") +wallPathArray+=("${wallAddCustomPath[@]}") +get_hashmap "${wallPathArray[@]}" +rofiSel=$(parallel --link echo -en "\$(basename "{1}")"'\\x00icon\\x1f'"${thmbDir}"'/'"{2}"'.sqre\\n' ::: "${wallList[@]}" ::: "${wallHash[@]}" | rofi -dmenu -theme-str "${r_scale}" -theme-str "${r_override}" -config "${rofiConf}" -select "${currentWall}") + + +#// apply wallpaper + +if [ ! -z "${rofiSel}" ] ; then + for i in "${!wallPathArray[@]}" ; do + setWall="$(find "${wallPathArray[i]}" -type f -name "${rofiSel}")" + [ -z "${setWall}" ] || break + done + "${scrDir}/swwwallpaper.sh" -s "${setWall}" + notify-send -a "t1" -i "${thmbDir}/$(set_hash "${setWall}").sqre" " ${rofiSel}" +fi + diff --git a/Configs/.local/share/bin/sysmonlaunch.sh b/Configs/.local/share/bin/sysmonlaunch.sh new file mode 100755 index 0000000..ee0fcc0 --- /dev/null +++ b/Configs/.local/share/bin/sysmonlaunch.sh @@ -0,0 +1,14 @@ +#!/usr/bin/env sh + +scrDir="$(dirname "$(realpath "$0")")" +source "${scrDir}/globalcontrol.sh" +pkgChk=("io.missioncenter.MissionCenter" "htop" "btop" "top") + +for sysMon in "${!pkgChk[@]}"; do + [ "${sysMon}" -gt 0 ] && term=$(cat $HOME/.config/hypr/keybindings.conf | grep ^'$term' | cut -d '=' -f2) + if pkg_installed "${pkgChk[sysMon]}" ; then + pkill -x "${pkgChk[sysMon]}" || ${term} "${pkgChk[sysMon]}" & + break + fi +done + diff --git a/Configs/.local/share/bin/systemupdate.sh b/Configs/.local/share/bin/systemupdate.sh new file mode 100755 index 0000000..ae72bd7 --- /dev/null +++ b/Configs/.local/share/bin/systemupdate.sh @@ -0,0 +1,53 @@ +#!/usr/bin/env bash + +# Check release +if [ ! -f /etc/arch-release ] ; then + exit 0 +fi + +# source variables +scrDir=$(dirname "$(realpath "$0")") +source "$scrDir/globalcontrol.sh" +get_aurhlpr +export -f pkg_installed +fpk_exup="pkg_installed flatpak && flatpak update" + +# Trigger upgrade +if [ "$1" == "up" ] ; then + trap 'pkill -RTMIN+20 waybar' EXIT + command=" + fastfetch + $0 upgrade + ${aurhlpr} -Syu + $fpk_exup + read -n 1 -p 'Press any key to continue...' + " + kitty --title systemupdate sh -c "${command}" +fi + +# Check for AUR updates +aur=$(${aurhlpr} -Qua | wc -l) +ofc=$( (while pgrep -x checkupdates > /dev/null ; do sleep 1; done) ; checkupdates | wc -l) + +# Check for flatpak updates +if pkg_installed flatpak ; then + fpk=$(flatpak remote-ls --updates | wc -l) + fpk_disp="\n󰏓 Flatpak $fpk" +else + fpk=0 + fpk_disp="" +fi + +# Calculate total available updates +upd=$(( ofc + aur + fpk )) + +[ "${1}" == upgrade ] && printf "[Official] %-10s\n[AUR] %-10s\n[Flatpak] %-10s\n" "$ofc" "$aur" "$fpk" && exit + +# Show tooltip +if [ $upd -eq 0 ] ; then + upd="" #Remove Icon completely + # upd="󰮯" #If zero Display Icon only + echo "{\"text\":\"$upd\", \"tooltip\":\" Packages are up to date\"}" +else + echo "{\"text\":\"󰮯 $upd\", \"tooltip\":\"󱓽 Official $ofc\n󱓾 AUR $aur$fpk_disp\"}" +fi diff --git a/Configs/.local/share/bin/testrunner.sh b/Configs/.local/share/bin/testrunner.sh new file mode 100755 index 0000000..1daf96a --- /dev/null +++ b/Configs/.local/share/bin/testrunner.sh @@ -0,0 +1,27 @@ +#!/usr/bin/env sh + +scrDir=`dirname "$(realpath "$0")"` +source $scrDir/globalcontrol.sh +rofDir="${confDir}/rofi" + +if [ "${1}" == "--verbose" ] || [ "${1}" == "-v" ] ; then + + case ${enableWallDcol} in + 0) wallbashStatus="disabled";; + 1) wallbashStatus="enabled // auto change based on wallpaper brightness";; + 2) wallbashStatus="enabled // dark mode --forced";; + 3) wallbashStatus="enabled // light mode --forced";; + esac + + echo -e "\n\ncurrent theme :: \"${hydeTheme}\" :: \"$(readlink "${hydeThemeDir}/wall.set")\"" + echo -e "wallbash status :: ${enableWallDcol} :: ${wallbashStatus}\n" + get_themes + + for x in "${!thmList[@]}" ; do + echo -e "\nTheme $((x + 1)) :: \${thmList[${x}]}=\"${thmList[x]}\" :: \${thmWall[${x}]}=\"${thmWall[x]}\"\n" + get_hashmap "$(dirname "${hydeThemeDir}")/${thmList[x]}" --verbose + echo -e "\n" + done + + exit 0 +fi diff --git a/Configs/.local/share/bin/themeselect.sh b/Configs/.local/share/bin/themeselect.sh new file mode 100755 index 0000000..8f40e2b --- /dev/null +++ b/Configs/.local/share/bin/themeselect.sh @@ -0,0 +1,59 @@ +#!/usr/bin/env sh + + +#// set variables + +scrDir="$(dirname "$(realpath "$0")")" +source "${scrDir}/globalcontrol.sh" +rofiConf="${confDir}/rofi/selector.rasi" + + +#// set rofi scaling + +[[ "${rofiScale}" =~ ^[0-9]+$ ]] || rofiScale=10 +r_scale="configuration {font: \"JetBrainsMono Nerd Font ${rofiScale}\";}" +elem_border=$(( hypr_border * 5 )) +icon_border=$(( elem_border - 5 )) + + +#// scale for monitor + +mon_x_res=$(hyprctl -j monitors | jq '.[] | select(.focused==true) | .width') +mon_scale=$(hyprctl -j monitors | jq '.[] | select(.focused==true) | .scale' | sed "s/\.//") +mon_x_res=$(( mon_x_res * 100 / mon_scale )) + + +#// generate config + +case "${themeSelect}" in +2) # adapt to style 2 + elm_width=$(( (20 + 12) * rofiScale * 2 )) + max_avail=$(( mon_x_res - (4 * rofiScale) )) + col_count=$(( max_avail / elm_width )) + r_override="window{width:100%;background-color:#00000003;} listview{columns:${col_count};} element{border-radius:${elem_border}px;background-color:@main-bg;} element-icon{size:20em;border-radius:${icon_border}px 0px 0px ${icon_border}px;}" + thmbExtn="quad" ;; +*) # default to style 1 + elm_width=$(( (23 + 12 + 1) * rofiScale * 2 )) + max_avail=$(( mon_x_res - (4 * rofiScale) )) + col_count=$(( max_avail / elm_width )) + r_override="window{width:100%;} listview{columns:${col_count};} element{border-radius:${elem_border}px;padding:0.5em;} element-icon{size:23em;border-radius:${icon_border}px;}" + thmbExtn="sqre" ;; +esac + + +#// launch rofi menu + +get_themes + +rofiSel=$(for i in ${!thmList[@]} ; do + echo -en "${thmList[i]}\x00icon\x1f${thmbDir}/$(set_hash "${thmWall[i]}").${thmbExtn}\n" +done | rofi -dmenu -theme-str "${r_scale}" -theme-str "${r_override}" -config "${rofiConf}" -select "${hydeTheme}") + + +#// apply theme + +if [ ! -z "${rofiSel}" ] ; then + "${scrDir}/themeswitch.sh" -s "${rofiSel}" + notify-send -a "t1" -i "$HOME/.config/dunst/icons/hyprdots.png" " ${rofiSel}" +fi + diff --git a/Configs/.local/share/bin/themestyle.sh b/Configs/.local/share/bin/themestyle.sh new file mode 100755 index 0000000..fdee592 --- /dev/null +++ b/Configs/.local/share/bin/themestyle.sh @@ -0,0 +1,42 @@ +#!/usr/bin/env sh + +#// set variables +scrDir="$(dirname "$(realpath "$0")")" +source "${scrDir}/globalcontrol.sh" +rofiConf="${confDir}/rofi/selector.rasi" +rofiAssetDir="${confDir}/rofi/assets" + +#// set rofi scaling +[[ "${rofiScale}" =~ ^[0-9]+$ ]] || rofiScale=15 +r_scale="configuration {font: \"JetBrainsMono Nerd Font ${rofiScale}\";}" +elem_border=$(( hypr_border * 5 )) +icon_border=$(( elem_border - 5 )) + +#// defining 2 png files to select from +options="Style 1\x00icon\x1f${rofiAssetDir}/theme_style_1.png\nStyle 2\x00icon\x1f${rofiAssetDir}/theme_style_2.png" + +#// generate config +mon_x_res=$(hyprctl -j monitors | jq '.[] | select(.focused==true) | .width') +mon_scale=$(hyprctl -j monitors | jq '.[] | select(.focused==true) | .scale' | sed "s/\.//") +mon_x_res=$(( mon_x_res * 100 / mon_scale )) + +elm_width=$(( (20 + 12 + 16 ) * rofiScale )) +max_avail=$(( mon_x_res - (4 * rofiScale) )) +col_count=$(( max_avail / elm_width )) +[[ "${col_count}" -gt 5 ]] && col_count=5 +r_override="window{width:100%;} listview{columns:${col_count};} element{orientation:vertical;border-radius:${elem_border}px;} element-icon{border-radius:${icon_border}px;size:20em;} element-text{enabled:false;}" + +#// launch rofi menu +RofiSel=$(echo -e "$options" | rofi -dmenu -theme-str "${r_override}" -config "${rofiConf}") + +#// apply selected theme +if [ ! -z "${RofiSel}" ]; then + #// extract selected style number ('Style 1' -> '1') + selectedStyle=$(echo "${RofiSel}" | awk -F '\x00' '{print $1}' | sed 's/Style //') + + #// notify the user + notify-send -a "t1" -r 91190 -t 2200 -i "${rofiAssetDir}/theme_style_${selectedStyle}.png" "Style ${selectedStyle} applied..." + + #// save selection in config file + set_conf "themeSelect" "${selectedStyle}" +fi diff --git a/Configs/.local/share/bin/themeswitch.sh b/Configs/.local/share/bin/themeswitch.sh new file mode 100755 index 0000000..52c203a --- /dev/null +++ b/Configs/.local/share/bin/themeswitch.sh @@ -0,0 +1,121 @@ +#!/usr/bin/env sh + + +#// set variables + +scrDir="$(dirname "$(realpath "$0")")" +source "${scrDir}/globalcontrol.sh" +[ -z "${hydeTheme}" ] && echo "ERROR: unable to detect theme" && exit 1 +get_themes + + +#// define functions + +Theme_Change() +{ + local x_switch=$1 + for i in ${!thmList[@]} ; do + if [ "${thmList[i]}" == "${hydeTheme}" ] ; then + if [ "${x_switch}" == 'n' ] ; then + setIndex=$(( (i + 1) % ${#thmList[@]} )) + elif [ "${x_switch}" == 'p' ] ; then + setIndex=$(( i - 1 )) + fi + themeSet="${thmList[setIndex]}" + break + fi + done +} + + +#// evaluate options + +while getopts "nps:" option ; do + case $option in + + n ) # set next theme + Theme_Change n + export xtrans="grow" ;; + + p ) # set previous theme + Theme_Change p + export xtrans="outer" ;; + + s ) # set selected theme + themeSet="$OPTARG" ;; + + * ) # invalid option + echo "... invalid option ..." + echo "$(basename "${0}") -[option]" + echo "n : set next theme" + echo "p : set previous theme" + echo "s : set input theme" + exit 1 ;; + esac +done + + +#// update control file + +if ! $(echo "${thmList[@]}" | grep -wq "${themeSet}") ; then + themeSet="${hydeTheme}" +fi + +set_conf "hydeTheme" "${themeSet}" +echo ":: applying theme :: \"${themeSet}\"" +export reload_flag=1 +source "${scrDir}/globalcontrol.sh" + + +#// hypr +[ -n "$HYPRLAND_INSTANCE_SIGNATURE" ] && hyprctl keyword misc:disable_autoreload 1 -q +sed '1d' "${hydeThemeDir}/hypr.theme" > "${confDir}/hypr/themes/theme.conf" # Useless and already handled by swwwallbash.sh but kept for robustness +gtkTheme="$( +{ grep -q "^[[:space:]]*\$GTK[-_]THEME\s*=" "${hydeThemeDir}/hypr.theme" && grep "^[[:space:]]*\$GTK[-_]THEME\s*=" "${hydeThemeDir}/hypr.theme" | cut -d '=' -f2 | sed 's/^[[:space:]]*//;s/[[:space:]]*$//' ;} || +grep 'gsettings set org.gnome.desktop.interface gtk-theme' "${hydeThemeDir}/hypr.theme" | awk -F "'" '{print $((NF - 1))}' +)" + +gtkIcon="$( +{ grep -q "^[[:space:]]*\$ICON[-_]THEME\s*=" "${hydeThemeDir}/hypr.theme" && grep "^[[:space:]]*\$ICON[-_]THEME\s*=" "${hydeThemeDir}/hypr.theme" | cut -d '=' -f2 | sed 's/^[[:space:]]*//;s/[[:space:]]*$//' ;} || +grep 'gsettings set org.gnome.desktop.interface icon-theme' "${hydeThemeDir}/hypr.theme" | awk -F "'" '{print $(NF - 1)}' +)" + +#// qtct + +sed -i "/^icon_theme=/c\icon_theme=${gtkIcon}" "${confDir}/qt5ct/qt5ct.conf" +sed -i "/^icon_theme=/c\icon_theme=${gtkIcon}" "${confDir}/qt6ct/qt6ct.conf" +sed -i "/^Theme=/c\Theme=${gtkIcon}" "${confDir}/kdeglobals" + +#// gtk3 + +sed -i "/^gtk-theme-name=/c\gtk-theme-name=${gtkTheme}" $confDir/gtk-3.0/settings.ini +sed -i "/^gtk-icon-theme-name=/c\gtk-icon-theme-name=${gtkIcon}" $confDir/gtk-3.0/settings.ini + + +#// gtk4 + +if [ -d /run/current-system/sw/share/themes ] ; then + themeDir=/run/current-system/sw/share/themes +else + themeDir=~/.themes +fi +rm -rf "${confDir}/gtk-4.0" +ln -s "${themeDir}/${gtkTheme}/gtk-4.0" "${confDir}/gtk-4.0" + + +#// flatpak GTK + +if pkg_installed flatpak ; then + if [ "${enableWallDcol}" -eq 0 ] ; then + flatpak --user override --env=GTK_THEME="${gtkTheme}" + flatpak --user override --env=ICON_THEME="${gtkIcon}" + else + flatpak --user override --env=GTK_THEME="Wallbash-Gtk" + flatpak --user override --env=ICON_THEME="${gtkIcon}" + fi +fi + +#// wallpaper + +"${scrDir}/swwwallpaper.sh" -s "$(readlink "${hydeThemeDir}/wall.set")" + diff --git a/Configs/.local/share/bin/volumecontrol.sh b/Configs/.local/share/bin/volumecontrol.sh new file mode 100755 index 0000000..b4f6697 --- /dev/null +++ b/Configs/.local/share/bin/volumecontrol.sh @@ -0,0 +1,163 @@ +#!/usr/bin/env sh + +# Source global control script +scrDir=$(dirname "$(realpath "$0")") +source "$scrDir/globalcontrol.sh" + +# Check if SwayOSD is installed +use_swayosd=false +if command -v swayosd-client >/dev/null 2>&1 && pgrep -x swayosd-server >/dev/null; then + use_swayosd=true +fi + +# Define functions + +print_usage() { + cat < [step] + +Devices/Actions: + -i Input device + -o Output device + -p Player application + -s Select output device + -t Toggle to next output device + +Actions: + i Increase volume + d Decrease volume + m Toggle mute + +Optional: + step Volume change step (default: 5) + +Examples: + $(basename "$0") -o i 5 # Increase output volume by 5 + $(basename "$0") -i m # Toggle input mute + $(basename "$0") -p spotify d 10 # Decrease Spotify volume by 10 + $(basename "$0") -p '' d 10 # Decrease volume by 10 for all players + +EOF + exit 1 +} + +notify_vol() { + angle=$(( (($vol + 2) / 5) * 5 )) + ico="${icodir}/vol-${angle}.svg" + bar=$(seq -s "." $(($vol / 15)) | sed 's/[0-9]//g') + notify-send -a "t2" -r 91190 -t 800 -i "${ico}" "${vol}${bar}" "${nsink}" +} + +notify_mute() { + mute=$(pamixer "${srce}" --get-mute | cat) + [ "${srce}" == "--default-source" ] && dvce="mic" || dvce="speaker" + if [ "${mute}" == "true" ]; then + notify-send -a "t2" -r 91190 -t 800 -i "${icodir}/muted-${dvce}.svg" "muted" "${nsink}" + else + notify-send -a "t2" -r 91190 -t 800 -i "${icodir}/unmuted-${dvce}.svg" "unmuted" "${nsink}" + fi +} + +change_volume() { + local action=$1 + local step=$2 + local device=$3 + local delta="-" + local mode="--output-volume" + + [ "${action}" = "i" ] && delta="+" + [ "${srce}" = "--default-source" ] && mode="--input-volume" + case $device in + "pamixer") + $use_swayosd && swayosd-client ${mode} "${delta}${step}" && exit 0 + pamixer $srce -"$action" "$step" + vol=$(pamixer $srce --get-volume) + ;; + "playerctl") + playerctl --player="$srce" volume "$(awk -v step="$step" 'BEGIN {print step/100}')${delta}" + vol=$(playerctl --player="$srce" volume | awk '{ printf "%.0f\n", $0 * 100 }') + ;; + esac + + notify_vol +} + +toggle_mute() { + local device=$1 + local mode="--output-volume" + [ "${srce}" = "--default-source" ] && mode="--input-volume" + case $device in + "pamixer") + $use_swayosd && swayosd-client "${mode}" mute-toggle && exit 0 + pamixer $srce -t + notify_mute + ;; + "playerctl") + local volume_file="/tmp/$(basename "$0")_last_volume_${srce:-all}" + if [ "$(playerctl --player="$srce" volume | awk '{ printf "%.2f", $0 }')" != "0.00" ]; then + playerctl --player="$srce" volume | awk '{ printf "%.2f", $0 }' > "$volume_file" + playerctl --player="$srce" volume 0 + else + if [ -f "$volume_file" ]; then + last_volume=$(cat "$volume_file") + playerctl --player="$srce" volume "$last_volume" + else + playerctl --player="$srce" volume 0.5 # Default to 50% if no saved volume + fi + fi + notify_mute + ;; + esac +} + +select_output() { + local selection=$1 + if [ -n "$selection" ]; then + device=$(pactl list sinks | grep -C2 -F "Description: $selection" | grep Name | cut -d: -f2 | xargs) + if pactl set-default-sink "$device"; then + notify-send -t 2000 -r 2 -u low "Activated: $selection" + else + notify-send -t 2000 -r 2 -u critical "Error activating $selection" + fi + else + pactl list sinks | grep -ie "Description:" | awk -F ': ' '{print $2}' | sort + fi +} + +toggle_output() { + local default_sink=$(pamixer --get-default-sink | awk -F '"' 'END{print $(NF - 1)}') + mapfile -t sink_array < <(select_output) + local current_index=$(printf '%s\n' "${sink_array[@]}" | grep -n "$default_sink" | cut -d: -f1) + local next_index=$(( (current_index % ${#sink_array[@]}) + 1 )) + local next_sink="${sink_array[next_index-1]}" + select_output "$next_sink" +} + +# Main script logic + +# Set default variables +icodir="${confDir}/dunst/icons/vol" +step=5 +# Parse options +while getopts "iop:st" opt; do + case $opt in + i) device="pamixer"; srce="--default-source"; nsink=$(pamixer --list-sources | awk -F '"' 'END {print $(NF - 1)}') ;; + o) device="pamixer"; srce=""; nsink=$(pamixer --get-default-sink | awk -F '"' 'END{print $(NF - 1)}') ;; + p) device="playerctl"; srce="${OPTARG}"; nsink=$(playerctl --list-all | grep -w "$srce") ;; + s) select_output "$(select_output | rofi -dmenu -config "${confDir}/rofi/notification.rasi")"; exit ;; + t) toggle_output; exit ;; + *) print_usage ;; + esac +done + +shift $((OPTIND-1)) + +# Check if device is set +[ -z "$device" ] && print_usage + +# Execute action +case $1 in + i|d) change_volume "$1" "${2:-$step}" "$device" ;; + m) toggle_mute "$device" ;; + *) print_usage ;; +esac diff --git a/Configs/.local/share/bin/wallbash.sh b/Configs/.local/share/bin/wallbash.sh new file mode 100755 index 0000000..787d318 --- /dev/null +++ b/Configs/.local/share/bin/wallbash.sh @@ -0,0 +1,220 @@ +#!/usr/bin/env bash +#|---/ /+---------------------------------------------+---/ /|# +#|--/ /-| Script to generate color palette from image |--/ /-|# +#|-/ /--| Prasanth Rangan |-/ /--|# +#|/ /---+---------------------------------------------+/ /---|# + + +#// accent color profile + +colorProfile="default" +wallbashCurve="32 50\n42 46\n49 40\n56 39\n64 38\n76 37\n90 33\n94 29\n100 20" +sortMode="auto" + +while [ $# -gt 0 ] ; do + case "$1" in + -v|--vibrant) colorProfile="vibrant" + wallbashCurve="18 99\n32 97\n48 95\n55 90\n70 80\n80 70\n88 60\n94 40\n99 24" + ;; + -p|--pastel) colorProfile="pastel" + wallbashCurve="10 99\n17 66\n24 49\n39 41\n51 37\n58 34\n72 30\n84 26\n99 22" + ;; + -m|--mono) colorProfile="mono" + wallbashCurve="10 0\n17 0\n24 0\n39 0\n51 0\n58 0\n72 0\n84 0\n99 0" + ;; + -c|--custom) + shift + if [ -n "${1}" ] && [[ "${1}" =~ ^([0-9]+[[:space:]][0-9]+\\n){8}[0-9]+[[:space:]][0-9]+$ ]] ; then + colorProfile="custom" + wallbashCurve="${1}" + else + echo "Error: Custom color curve format is incorrect ${1}" + exit 1 + fi + ;; + -d|--dark) sortMode="dark" + colSort="" + ;; + -l|--light) sortMode="light" + colSort="-r" + ;; + *) break + ;; + esac + shift +done + + +#// set variables + +wallbashImg="${1}" +wallbashColors=4 +wallbashFuzz=70 +wallbashRaw="${2:-"${wallbashImg}"}.mpc" +wallbashOut="${2:-"${wallbashImg}"}.dcol" +wallbashCache="${2:-"${wallbashImg}"}.cache" + + +#// color modulations + +pryDarkBri=116 +pryDarkSat=110 +pryDarkHue=88 +pryLightBri=100 +pryLightSat=100 +pryLightHue=114 +txtDarkBri=188 +txtLightBri=16 + + +#// input image validation + +if [ -z "${wallbashImg}" ] || [ ! -f "${wallbashImg}" ] ; then + echo "Error: Input file not found!" + exit 1 +fi + +magick -ping "${wallbashImg}" -format "%t" info: &> /dev/null +if [ $? -ne 0 ] ; then + echo "Error: Unsuppoted image format ${wallbashImg}" + exit 1 +fi + +echo -e "wallbash ${colorProfile} profile :: ${sortMode} :: Colors ${wallbashColors} :: Fuzzy ${wallbashFuzz} :: \"${wallbashOut}\"" +mkdir -p "${cacheDir}/${cacheThm}" +> "${wallbashOut}" + + +#// define functions + +rgb_negative() { + local inCol=$1 + local r=${inCol:0:2} + local g=${inCol:2:2} + local b=${inCol:4:2} + local r16=$((16#$r)) + local g16=$((16#$g)) + local b16=$((16#$b)) + r=$(printf "%02X" $((255 - $r16))) + g=$(printf "%02X" $((255 - $g16))) + b=$(printf "%02X" $((255 - $b16))) + echo "${r}${g}${b}" +} + +rgba_convert() { + local inCol=$1 + local r=${inCol:0:2} + local g=${inCol:2:2} + local b=${inCol:4:2} + local r16=$((16#$r)) + local g16=$((16#$g)) + local b16=$((16#$b)) + printf "rgba(%d,%d,%d,\1341)\n" "$r16" "$g16" "$b16" +} + +fx_brightness() { + local inCol="${1}" + local fxb=$(magick "${inCol}" -colorspace gray -format "%[fx:mean]" info:) + if awk -v fxb="${fxb}" 'BEGIN {exit !(fxb < 0.5)}' ; then + return 0 #// echo ":: ${fxb} :: dark :: ${inCol}" + else + return 1 #// echo ":: ${fxb} :: light :: ${inCol}" + fi +} + + +#// quantize raw primary colors + +magick -quiet -regard-warnings "${wallbashImg}"[0] -alpha off +repage "${wallbashRaw}" +readarray -t dcolRaw <<< $(magick "${wallbashRaw}" -depth 8 -fuzz ${wallbashFuzz}% +dither -kmeans ${wallbashColors} -depth 8 -format "%c" histogram:info: | sed -n 's/^[ ]*\(.*\):.*[#]\([0-9a-fA-F]*\) .*$/\1,\2/p' | sort -r -n -k 1 -t ",") + +if [ ${#dcolRaw[*]} -lt ${wallbashColors} ] ; then + echo -e "RETRYING :: distinct colors ${#dcolRaw[*]} is less than ${wallbashColors} palette color..." + readarray -t dcolRaw <<< $(magick "${wallbashRaw}" -depth 8 -fuzz ${wallbashFuzz}% +dither -kmeans $((wallbashColors + 2)) -depth 8 -format "%c" histogram:info: | sed -n 's/^[ ]*\(.*\):.*[#]\([0-9a-fA-F]*\) .*$/\1,\2/p' | sort -r -n -k 1 -t ",") +fi + + +#// sort colors based on image brightness + +if [ "${sortMode}" == "auto" ] ; then + if fx_brightness "${wallbashRaw}" ; then + sortMode="dark" + colSort="" + else + sortMode="light" + colSort="-r" + fi +fi + +echo "dcol_mode=\"${sortMode}\"" >> "${wallbashOut}" +dcolHex=($(echo -e "${dcolRaw[@]:0:$wallbashColors}" | tr ' ' '\n' | awk -F ',' '{print $2}' | sort ${colSort})) +greyCheck=$(magick "${wallbashRaw}" -colorspace HSL -channel g -separate +channel -format "%[fx:mean]" info:) + +if (( $(awk 'BEGIN {print ('"$greyCheck"' < 0.12)}') )); then + wallbashCurve="10 0\n17 0\n24 0\n39 0\n51 0\n58 0\n72 0\n84 0\n99 0" +fi + + +#// loop for derived colors + +for (( i=0; i<${wallbashColors}; i++ )) ; do + + + #// generate missing primary colors + + if [ -z "${dcolHex[i]}" ] ; then + + if fx_brightness "xc:#${dcolHex[i - 1]}" ; then + modBri=$pryDarkBri + modSat=$pryDarkSat + modHue=$pryDarkHue + else + modBri=$pryLightBri + modSat=$pryLightSat + modHue=$pryLightHue + fi + + echo -e "dcol_pry$((i + 1)) :: regen missing color" + dcol[i]=$(magick xc:"#${dcolHex[i - 1]}" -depth 8 -normalize -modulate ${modBri},${modSat},${modHue} -depth 8 -format "%c" histogram:info: | sed -n 's/^[ ]*\(.*\):.*[#]\([0-9a-fA-F]*\) .*$/\2/p') + + fi + + echo "dcol_pry$((i + 1))=\"${dcolHex[i]}\"" >> "${wallbashOut}" + echo "dcol_pry$((i + 1))_rgba=\"$( rgba_convert "${dcolHex[i]}" )\"" >> "${wallbashOut}" + + + #// generate primary text colors + + nTxt=$(rgb_negative ${dcolHex[i]}) + + if fx_brightness "xc:#${dcolHex[i]}" ; then + modBri=$txtDarkBri + else + modBri=$txtLightBri + fi + + tcol=$(magick xc:"#${nTxt}" -depth 8 -normalize -modulate ${modBri},10,100 -depth 8 -format "%c" histogram:info: | sed -n 's/^[ ]*\(.*\):.*[#]\([0-9a-fA-F]*\) .*$/\2/p') + echo "dcol_txt$((i + 1))=\"${tcol}\"" >> "${wallbashOut}" + echo "dcol_txt$((i + 1))_rgba=\"$( rgba_convert "${tcol}" )\"" >> "${wallbashOut}" + + + #// generate accent colors + + xHue=$(magick xc:"#${dcolHex[i]}" -colorspace HSB -format "%c" histogram:info: | awk -F '[hsb(,]' '{print $2}') + acnt=1 + + echo -e "${wallbashCurve}" | sort -n ${colSort} | while read -r xBri xSat + do + acol=$(magick xc:"hsb(${xHue},${xSat}%,${xBri}%)" -depth 8 -format "%c" histogram:info: | sed -n 's/^[ ]*\(.*\):.*[#]\([0-9a-fA-F]*\) .*$/\2/p') + echo "dcol_$((i + 1))xa${acnt}=\"${acol}\"" >> "${wallbashOut}" + echo "dcol_$((i + 1))xa${acnt}_rgba=\"$( rgba_convert "${acol}" )\"" >> "${wallbashOut}" + ((acnt++)) + done + +done + + +#// cleanup temp cache + +rm -f "${wallbashRaw}" "${wallbashCache}" + diff --git a/Configs/.local/share/bin/wallbashcava.sh b/Configs/.local/share/bin/wallbashcava.sh new file mode 100755 index 0000000..68d83b7 --- /dev/null +++ b/Configs/.local/share/bin/wallbashcava.sh @@ -0,0 +1,22 @@ +#!/usr/bin/env sh + +scrDir=`dirname "$(realpath "$0")"` +source $scrDir/globalcontrol.sh +cvaDir="${confDir}/cava" +CAVA_CONF="${cvaDir}/config" +WALL_DCOL="${cvaDir}/Wall-Dcol" +KEY_LINE='### HYPRDOTS CAVA: Autogenerated line below for wallbash###' + +if pkg_installed cava ; then + + sed -i "/${KEY_LINE}/,\$d" "${CAVA_CONF}" + if grep -q "${KEY_LINE}" "${CAVA_CONF}"; then + sed -i "/${KEY_LINE}/r ${WALL_DCOL}" "${CAVA_CONF}" + else + echo "${KEY_LINE}" >> "${CAVA_CONF}" + sed -i "/${KEY_LINE}/r ${WALL_DCOL}" "${CAVA_CONF}" + fi + + pkill -USR2 cava + +fi diff --git a/Configs/.local/share/bin/wallbashcode.sh b/Configs/.local/share/bin/wallbashcode.sh new file mode 100755 index 0000000..362a82c --- /dev/null +++ b/Configs/.local/share/bin/wallbashcode.sh @@ -0,0 +1,41 @@ +#!/usr/bin/env sh + +#// set variables +scrDir="$(dirname "$(realpath "$0")")" +source "${scrDir}/globalcontrol.sh" +readarray -t codeConf < <(find "${confDir}" -mindepth 1 -maxdepth 1 -type d -name "Code*" -o -name "VSCodium*" -o -name "Cursor*" | sort) +readarray -t codeVsix < <(find "$HOME" -mindepth 1 -maxdepth 1 -type d -name ".vscode*" -o -name ".cursor" | sort) +tmpFile="/tmp/$(id -u)$(basename ${0}).tmp" +tgtFile="extensions/undefined_publisher.wallbash-0.0.1/themes/wallbash-color-theme.json" + +#// install ext + +for i in "${!codeVsix[@]}" ;do + if [ ! -f "${codeVsix[i]}/${tgtFile}" ] ; then + [ -f "${cacheDir}/landing/Code_Wallbash.vsix" ] || curl -L -o "${cacheDir}/landing/Code_Wallbash.vsix" https://github.com/prasanthrangan/hyprdots/raw/main/Source/arcs/Code_Wallbash.vsix + case ${codeVsix[i]} in + *".cursor"*) + echo "[wallbashcode] Cursor IDE: Manual intervention required for extension installation." + echo "[wallbashcode] Read the instructions here: https://www.cursor.com/how-to-install-extension " + ;; + *) + pkg_installed code-insiders && code-insiders --install-extension "${cacheDir}/landing/Code_Wallbash.vsix" + pkg_installed code && code --install-extension "${cacheDir}/landing/Code_Wallbash.vsix" + pkg_installed vscodium && vscodium --install-extension "${cacheDir}/landing/Code_Wallbash.vsix" + ;; + esac + fi + [ -d "$(dirname "${codeVsix[i]}/${tgtFile}")" ] && cp "${cacheDir}/landing/wallbashcode.json" "${codeVsix[i]}/${tgtFile}" +done + +#// apply theme + +for i in "${!codeConf[@]}" ; do + [ -d "${codeConf[i]}/User" ] || continue + [ -f "${codeConf[i]}/User/settings.json" ] || echo -e "{\n \"workbench.colorTheme\":\"wallbash\" \n}" > "${codeConf[i]}/User/settings.json" + extTheme="$(jq -r '.["workbench.colorTheme"]' "${codeConf[i]}/User/settings.json")" + + if [ "${extTheme}" != "wallbash" ] ; then + jq '.["workbench.colorTheme"] = "wallbash"' "${codeConf[i]}/User/settings.json" > "${tmpFile}" && mv "${tmpFile}" "${codeConf[i]}/User/settings.json" + fi +done diff --git a/Configs/.local/share/bin/wallbashdiscord.sh b/Configs/.local/share/bin/wallbashdiscord.sh new file mode 100755 index 0000000..7dac5bf --- /dev/null +++ b/Configs/.local/share/bin/wallbashdiscord.sh @@ -0,0 +1,30 @@ +#!/usr/bin/env bash + + +#// source variables + +scrDir="$(dirname "$(realpath "$0")")" +source "${scrDir}/globalcontrol.sh" +discord_col="${cacheDir}/landing/discord.css" +declare -a client_list=() + + +#// List more clients + +client_list+=("$HOME/.config/Vencord/settings/quickCss.css") +client_list+=("$HOME/.config/vesktop/settings/quickCss.css") +client_list+=("$HOME/.var/app/dev.vencord.Vesktop/config/vesktop/settings/quickCss.css") +client_list+=("$HOME/.config/WebCord/Themes/theme.css") +client_list+=("$HOME/.var/app/io.github.spacingbat3.webcord/config/WebCord/Themes/theme.css") +client_list+=("$HOME/.var/app/xyz.armcord.ArmCord/config/ArmCord/themes/theme.css") + + +#// main loop + +for client_css in "${client_list[@]}" ; do + eval client_css="${client_css}" + if [[ -d $(dirname "${client_css}") ]] ; then + cp "${discord_col}" "${client_css}" + fi +done + diff --git a/Configs/.local/share/bin/wallbashdunst.sh b/Configs/.local/share/bin/wallbashdunst.sh new file mode 100755 index 0000000..a070614 --- /dev/null +++ b/Configs/.local/share/bin/wallbashdunst.sh @@ -0,0 +1,16 @@ +#!/usr/bin/env sh + +# set variables + +scrDir=`dirname "$(realpath "$0")"` +source $scrDir/globalcontrol.sh +dstDir="${confDir}/dunst" + +# regen conf + +export hypr_border +envsubst < "${dstDir}/dunst.conf" > "${dstDir}/dunstrc" +envsubst < "${dstDir}/wallbash.conf" >> "${dstDir}/dunstrc" +killall dunst +dunst & + diff --git a/Configs/.local/share/bin/wallbashqt.sh b/Configs/.local/share/bin/wallbashqt.sh new file mode 100755 index 0000000..dc27233 --- /dev/null +++ b/Configs/.local/share/bin/wallbashqt.sh @@ -0,0 +1,23 @@ +#!/usr/bin/env sh + + +# set variables + +scrDir=`dirname "$(realpath "$0")"` +source $scrDir/globalcontrol.sh + + +# sync qt5 and qt6 colors + +cp "${confDir}/qt5ct/colors.conf" "${confDir}/qt6ct/colors.conf" + + +# restart dolphin + +a_ws=$(hyprctl -j activeworkspace | jq '.id') +dpid=$(hyprctl -j clients | jq --arg wid "$a_ws" '.[] | select(.workspace.id == ($wid | tonumber)) | select(.class == "org.kde.dolphin") | .pid') +if [ ! -z ${dpid} ] ; then + hyprctl dispatch closewindow pid:${dpid} + hyprctl dispatch exec dolphin & +fi + diff --git a/Configs/.local/share/bin/wallbashspotify.sh b/Configs/.local/share/bin/wallbashspotify.sh new file mode 100755 index 0000000..c81fe6d --- /dev/null +++ b/Configs/.local/share/bin/wallbashspotify.sh @@ -0,0 +1,42 @@ +#!/usr/bin/env sh + + +# set variables + +scrDir="$(dirname "$(realpath "$0")")" +source "${scrDir}/globalcontrol.sh" + + +# regen conf + +if pkg_installed spotify && pkg_installed spicetify-cli ; then + + if [ ! -w /opt/spotify ] || [ ! -w /opt/spotify/Apps ]; then + notify-send -a "Hyprdots" "Permission needed for Wallbash Spotify theme" + pkexec chmod a+wr /opt/spotify + pkexec chmod a+wr /opt/spotify/Apps -R + fi + + if [ "$(spicetify config | awk '{if ($1=="color_scheme") print $2}')" != "Wallbash" ] || [[ "${*}" == *"--reset"* ]] ; then + spicetify &> /dev/null + mkdir -p ~/.config/spotify + touch ~/.config/spotify/prefs + sptfyConf=$(spicetify -c) + spotfy_flags='--ozone-platform=wayland' + sed -i -e "/^prefs_path/ s+=.*$+= $HOME/.config/spotify/prefs+g" \ + -e "/^spotify_launch_flags/ s+=.*$+= $spotfy_flags+g" "$sptfyConf" + curl -L -o ${cacheDir}/landing/Spotify_Sleek.tar.gz https://github.com/prasanthrangan/hyprdots/raw/main/Source/arcs/Spotify_Sleek.tar.gz + tar -xzf ${cacheDir}/landing/Spotify_Sleek.tar.gz -C ~/.config/spicetify/Themes/ + spicetify backup apply + spicetify config current_theme Sleek + spicetify config color_scheme Wallbash + spicetify apply + fi + + if pgrep -x spotify > /dev/null ; then + pkill -x spicetify + spicetify -q watch -s & + fi + +fi + diff --git a/Configs/.local/share/bin/wallbashtoggle.sh b/Configs/.local/share/bin/wallbashtoggle.sh new file mode 100755 index 0000000..9d8877c --- /dev/null +++ b/Configs/.local/share/bin/wallbashtoggle.sh @@ -0,0 +1,61 @@ +#!/usr/bin/env sh + + +#// set variables + +scrDir="$(dirname "$(realpath "$0")")" +source "${scrDir}/globalcontrol.sh" +TgtScr="$scrDir/globalcontrol.sh" +rofiConf="${confDir}/rofi/wallbash.rasi" +wallbashModes=("theme" "auto" "dark" "light") + + +#// rofi select mode + +rofi_wallbash() +{ + [[ "${rofiScale}" =~ ^[0-9]+$ ]] || rofiScale=10 + r_scale="configuration {font: \"JetBrainsMono Nerd Font ${rofiScale}\";}" + elem_border=$(( hypr_border * 4 )) + r_override="window{border-radius:${elem_border}px;} element{border-radius:${elem_border}px;}" + rofiSel=$(parallel echo {} ::: "${wallbashModes[@]}" | rofi -dmenu -theme-str "${r_scale}" -theme-str "${r_override}" -config "${rofiConf}" -select "${wallbashModes[${enableWallDcol}]}") + if [ ! -z "${rofiSel}" ] ; then + setMode="$(parallel --link echo {} ::: "${!wallbashModes[@]}" ::: "${wallbashModes[@]}" ::: "${rofiSel}" | awk '{if ($2 == $3) print $1}')" + else + exit 0 + fi +} + + +#// switch mode + +step_wallbash() +{ + for i in "${!wallbashModes[@]}" ; do + if [ "${enableWallDcol}" == "${i}" ] ; then + if [ "${1}" == "n" ] ; then + setMode=$(( (i + 1) % ${#wallbashModes[@]} )) + elif [ "${1}" == "p" ] ; then + setMode=$(( i - 1 )) + fi + break + fi + done +} + + +#// apply wallbash mode + +case "${1}" in + m|-m|--menu) rofi_wallbash ;; + n|-n|--next) step_wallbash n ;; + p|-p|--prev) step_wallbash p ;; + *) step_wallbash n ;; +esac + +export reload_flag=1 +[[ "${setMode}" -lt 0 ]] && setMode=$((${#wallbashModes[@]} - 1)) +set_conf "enableWallDcol" "${setMode}" +"${scrDir}/themeswitch.sh" +notify-send -a "t1" -i "$HOME/.config/dunst/icons/hyprdots.png" " ${wallbashModes[setMode]} mode" + diff --git a/Configs/.local/share/bin/waybar_cava.sh b/Configs/.local/share/bin/waybar_cava.sh new file mode 100755 index 0000000..a3fe16d --- /dev/null +++ b/Configs/.local/share/bin/waybar_cava.sh @@ -0,0 +1,130 @@ +#!/bin/env bash +#----- Optimized bars animation without much CPU usage increase -------- +#----- Optimized bars animation without much CPU usage increase pt2 -------- + +# Default values +scrDir="$(dirname "$(realpath "$0")")" +# shellcheck disable=SC1091 +source "${scrDir}/globalcontrol.sh" + +usage() { + cat < Specify the characters to use for the bar animation (default: ▁▂▃▄▅▆▇█). + --width Specify the width of the bar. + --range Specify the range of the bar. + --help Display this help message and exit. + --restart Restart the waybar_cava. + --stb Specify the standby mode for waybar cava (default: 0). + 0: clean - totally hides the module + 1: blank - makes module expand as spaces + 2: full - occupies the module with full bar + 3: low - makes the module display the lowest set bar + *: string - displays a string +HELP + exit 1 +} + +# Parse command line arguments using getopt +if ! ARGS=$(getopt -o "hr" -l "help,bar:,width:,range:,restart,stb:" -n "$0" -- "$@"); then + usage +fi + +eval set -- "$ARGS" +while true; do + case "$1" in + --help | -h) + usage + ;; + --bar) + waybar_cava_bar="$2" + shift 2 + ;; + --width) + waybar_cava_width="$2" + shift 2 + ;; + --range) + waybar_cava_range="$2" + shift 2 + ;; + --restart) # restart by killing all waybar_cava + pkill -f "cava -p /tmp/bar_cava_config" + exit 0 + ;; + --stb) + waybar_cava_stbmode="$2" + shift 2 + ;; + --) + shift + break + ;; + *) + usage + ;; + esac +done + +bar="${waybar_cava_bar:-▁▂▃▄▅▆▇█}" + +# // waybar_cava_stbmode - standby mode for waybar cava - default 0 +# 0: clean - totally hides the module +# 1: blank - makes module expand as spaces +# 2: full - occupies the module with full bar +# 3: low - makes the module display the lowest set bar +# : - displays a string +case ${waybar_cava_stbmode:-} in +0) + stbBar='' + ;; # Clean +1) + stbBar="‎ " + ;; # Invisible char +2) + stbBar="${bar: -1}" + ;; # Full bar +3) + stbBar="${bar:0:1}" + ;; # Lowest bar +*) + asciiBar="${waybar_cava_stbmode:-${bar}}" + ;; +esac + +# Calculate the length of the bar outside the loop +bar_length=${#bar} +bar_width=${waybar_cava_width:-${bar_length}} +bar_range=${waybar_cava_range:-$((bar_length - 1))} +# Create dictionary to replace char with bar +dict="s/;//g" +stbAscii=$(printf '0%.0s' $(seq 1 "${bar_width}")) # predicts the amount of ancii characters to be used +[ -n "${asciiBar}" ] || asciiBar="${stbAscii//0/${stbBar}}" + +dict="$dict;s/${stbAscii}/${asciiBar}/g" +i=0 +while [ $i -lt "${bar_length}" ] || [ $i -lt "${bar_width}" ]; do + if [ $i -lt "${bar_length}" ]; then + dict="$dict;s/$i/${bar:$i:1}/g" + fi + ((i++)) +done + +# Create cava config +config_file="/tmp/bar_cava_config" +cat >"$config_file" < $waybar_dir/tmp && mv $waybar_dir/tmp $conf_ctl +fi + + +# overwrite config from header module + +export set_sysname=`hostnamectl hostname` +export w_position=`grep '^1|' $conf_ctl | cut -d '|' -f 3` + +# setting explicit waybar output + +if [ ${#waybar_output[@]} -gt 0 ]; then +w_output=$(printf '"%s", ' "${waybar_output[@]}") +w_output=${w_output%, } # Remove the trailing comma and space +echo "[outputs] $w_output" +fi +export w_output="${w_output:-\"*\"}" + +# setting waybar position + +case ${w_position} in + left) export hv_pos="width" ; export r_deg=90 ;; + right) export hv_pos="width" ; export r_deg=270 ;; + *) export hv_pos="height" ; export r_deg=0 ;; +esac + +export w_height=`grep '^1|' $conf_ctl | cut -d '|' -f 2` +if [ -z $w_height ] ; then + y_monres=`cat /sys/class/drm/*/modes | head -1 | cut -d 'x' -f 2` + export w_height=$(( y_monres*2/100 )) +fi + +export i_size=$(( w_height*6/10 )) +if [ $i_size -lt 12 ] ; then + export i_size="12" +fi + +export i_theme="$( +{ grep -q "^[[:space:]]*\$ICON[-_]THEME\s*=" "${hydeThemeDir}/hypr.theme" && grep "^[[:space:]]*\$ICON[-_]THEME\s*=" "${hydeThemeDir}/hypr.theme" | cut -d '=' -f2 | sed 's/^[[:space:]]*//;s/[[:space:]]*$//' ;} || +grep 'gsettings set org.gnome.desktop.interface icon-theme' "${hydeThemeDir}/hypr.theme" | awk -F "'" '{print $((NF - 1))}' +)" +export i_task=$(( w_height*6/10 )) +if [ $i_task -lt 16 ] ; then + export i_task="16" +fi +export i_priv=$(( w_height*6/13 )) +if [ $i_priv -lt 12 ] ; then + export i_priv="12" +fi + +envsubst < $modules_dir/header.jsonc > $conf_file + + +# module generator function + +gen_mod() +{ + local pos=$1 + local col=$2 + local mod="" + + mod=`grep '^1|' $conf_ctl | cut -d '|' -f ${col}` + mod="${mod//(/"custom/l_end"}" + mod="${mod//)/"custom/r_end"}" + mod="${mod//[/"custom/sl_end"}" + mod="${mod//]/"custom/sr_end"}" + mod="${mod//\{/"custom/rl_end"}" + mod="${mod//\}/"custom/rr_end"}" + mod="${mod// /"\",\""}" + + echo -e "\t\"modules-${pos}\": [\"custom/padd\",\"${mod}\",\"custom/padd\"]," >> $conf_file + write_mod=`echo $write_mod $mod` +} + + +# write positions for modules + +echo -e "\n\n// positions generated based on config.ctl //\n" >> $conf_file +gen_mod left 4 +gen_mod center 5 +gen_mod right 6 + + +# copy modules/*.jsonc to the config + +echo -e "\n\n// sourced from modules based on config.ctl //\n" >> $conf_file +echo "$write_mod" | sed 's/","/\n/g ; s/ /\n/g' | awk -F '/' '{print $NF}' | awk -F '#' '{print}' | awk '!x[$0]++' | while read mod_cpy +do + if [ -f $modules_dir/$mod_cpy.jsonc ] ; then + envsubst < $modules_dir/$mod_cpy.jsonc >> $conf_file + fi +done + +cat $modules_dir/footer.jsonc >> $conf_file + + +# generate style + +$scrDir/wbarstylegen.sh + + +# restart waybar + +if [ "$reload_flag" == "1" ] ; then + killall waybar + waybar --config ${waybar_dir}/config.jsonc --style ${waybar_dir}/style.css > /dev/null 2>&1 & +fi diff --git a/Configs/.local/share/bin/wbarstylegen.sh b/Configs/.local/share/bin/wbarstylegen.sh new file mode 100755 index 0000000..9f92dba --- /dev/null +++ b/Configs/.local/share/bin/wbarstylegen.sh @@ -0,0 +1,118 @@ +#!/usr/bin/env sh + + +# detect hypr theme and initialize variables + +scrDir=`dirname "$(realpath "$0")"` +source $scrDir/globalcontrol.sh +waybar_dir="${confDir}/waybar" +modules_dir="$waybar_dir/modules" +conf_ctl="$waybar_dir/config.ctl" +in_file="$waybar_dir/modules/style.css" +out_file="$waybar_dir/style.css" +src_file="${confDir}/hypr/themes/theme.conf" + + +# calculate height from control file or monitor res + +b_height=`grep '^1|' $conf_ctl | cut -d '|' -f 2` + +if [ -z $b_height ] || [ "$b_height" == "0" ]; then + y_monres=`cat /sys/class/drm/*/modes | head -1 | cut -d 'x' -f 2` + b_height=$(( y_monres*3/100 )) +fi + + +# calculate values based on height + +export b_radius=$(( b_height*70/100 )) # block rad 70% of height (type1) +export c_radius=$(( b_height*25/100 )) # block rad 25% of height {type2} +export t_radius=$(( b_height*25/100 )) # tooltip rad 25% of height +export e_margin=$(( b_height*30/100 )) # block margin 30% of height +export e_paddin=$(( b_height*10/100 )) # block padding 10% of height +export g_margin=$(( b_height*14/100 )) # module margin 14% of height +export g_paddin=$(( b_height*15/100 )) # module padding 15% of height +export w_radius=$(( b_height*30/100 )) # workspace rad 30% of height +export w_margin=$(( b_height*10/100 )) # workspace margin 10% of height +export w_paddin=$(( b_height*10/100 )) # workspace padding 10% of height +export w_padact=$(( b_height*40/100 )) # workspace active padding 40% of height +export s_fontpx=$(( b_height*34/100 )) # font size 34% of height + +if [ $b_height -lt 30 ] ; then + export e_paddin=0 +fi +if [ $s_fontpx -lt 10 ] ; then + export s_fontpx=10 +fi + + +# adjust values for vert/horz + +export w_position=`grep '^1|' $conf_ctl | cut -d '|' -f 3` +case ${w_position} in + top|bottom) + export x1g_margin=${g_margin} + export x2g_margin=0 + export x3g_margin=${g_margin} + export x4g_margin=0 + export x1rb_radius=0 + export x2rb_radius=${b_radius} + export x3rb_radius=${b_radius} + export x4rb_radius=0 + export x1lb_radius=${b_radius} + export x2lb_radius=0 + export x3lb_radius=0 + export x4lb_radius=${b_radius} + export x1rc_radius=0 + export x2rc_radius=${c_radius} + export x3rc_radius=${c_radius} + export x4rc_radius=0 + export x1lc_radius=${c_radius} + export x2lc_radius=0 + export x3lc_radius=0 + export x4lc_radius=${c_radius} + export x1="top" + export x2="bottom" + export x3="left" + export x4="right" ;; + left|right) + export x1g_margin=0 + export x2g_margin=${g_margin} + export x3g_margin=0 + export x4g_margin=${g_margin} + export x1rb_radius=0 + export x2rb_radius=0 + export x3rb_radius=${b_radius} + export x4rb_radius=${b_radius} + export x1lb_radius=${b_radius} + export x2lb_radius=${b_radius} + export x3lb_radius=0 + export x4lb_radius=0 + export x1rc_radius=0 + export x2rc_radius=${c_radius} + export x3rc_radius=${c_radius} + export x4rc_radius=0 + export x1lc_radius=${c_radius} + export x2lc_radius=0 + export x3lc_radius=0 + export x4lc_radius=${c_radius} + export x1="left" + export x2="right" + export x3="top" + export x4="bottom" ;; +esac + + +# list modules and generate theme style + +export modules_ls=$(grep -m 1 '".*.": {' --exclude="$modules_dir/footer.jsonc" $modules_dir/*.jsonc | cut -d '"' -f 2 | awk -F '/' '{ if($1=="custom") print "#custom-"$NF"," ; else print "#"$NF","}') +envsubst < $in_file > $out_file + + +# override rounded couners + +hypr_border=`awk -F '=' '{if($1~" rounding ") print $2}' $src_file | sed 's/ //g'` +if [ "$hypr_border" == "0" ] ; then + sed -i "/border-radius: /c\ border-radius: 0px;" $out_file +fi + diff --git a/Configs/.local/share/bin/windowpin.sh b/Configs/.local/share/bin/windowpin.sh new file mode 100755 index 0000000..10c6138 --- /dev/null +++ b/Configs/.local/share/bin/windowpin.sh @@ -0,0 +1,21 @@ +#!/usr/bin/env sh + +# enable float +WinFloat=$(hyprctl -j clients | jq '.[] | select(.focusHistoryID == 0) | .floating') +WinPinned=$(hyprctl -j clients | jq '.[] | select(.focusHistoryID == 0) | .pinned') + +if [ "${WinFloat}" == "false" ] && [ "${WinPinned}" == "false" ] ; then + hyprctl dispatch togglefloating active +fi + +# toggle pin +hyprctl dispatch pin active + +# disable float +WinFloat=$(hyprctl -j clients | jq '.[] | select(.focusHistoryID == 0) | .floating') +WinPinned=$(hyprctl -j clients | jq '.[] | select(.focusHistoryID == 0) | .pinned') + +if [ "${WinFloat}" == "true" ] && [ "${WinPinned}" == "false" ] ; then + hyprctl dispatch togglefloating active +fi + diff --git a/Configs/.local/share/dolphin/dolphinstaterc b/Configs/.local/share/dolphin/dolphinstaterc new file mode 100644 index 0000000..d227622 --- /dev/null +++ b/Configs/.local/share/dolphin/dolphinstaterc @@ -0,0 +1,7 @@ +[SettingsDialog] +2560x1080 screen: Window-Maximized=true + +[State] +2560x1080 screen: Window-Maximized=true +RestorePositionForNextInstance=false +State=AAAA/wAAAAD9AAAAAwAAAAAAAACTAAAD4PwCAAAAAfsAAAAWAGYAbwBsAGQAZQByAHMARABvAGMAawAAAAAA/////wAAAAIA////AAAAAQAAAVQAAAQI/AIAAAAC+wAAABQAcABsAGEAYwBlAHMARABvAGMAawEAAAAAAAABTwAAAEMA////+wAAABAAaQBuAGYAbwBEAG8AYwBrAQAAAVYAAAKyAAAA2gD///8AAAADAAAAAAAAAAD8AQAAAAH7AAAAGAB0AGUAcgBtAGkAbgBhAGwARABvAGMAawAAAAAA/////wAAAAIA////AAAIZwAABAgAAAAEAAAABAAAAAgAAAAI/AAAAAEAAAABAAAAAQAAABYAbQBhAGkAbgBUAG8AbwBsAEIAYQByAwAAAAD/////AAAAAAAAAAA= diff --git a/Configs/.local/share/dolphin/view_properties/global/.directory b/Configs/.local/share/dolphin/view_properties/global/.directory new file mode 100644 index 0000000..c0c6477 --- /dev/null +++ b/Configs/.local/share/dolphin/view_properties/global/.directory @@ -0,0 +1,4 @@ +[Dolphin] +SortHiddenLast=true +Timestamp=2023,4,28,17,7,1.2349999999999999 +Version=4 diff --git a/Configs/.local/share/kio/servicemenus/hydewallpaper.desktop b/Configs/.local/share/kio/servicemenus/hydewallpaper.desktop new file mode 100755 index 0000000..d744559 --- /dev/null +++ b/Configs/.local/share/kio/servicemenus/hydewallpaper.desktop @@ -0,0 +1,9 @@ +[Desktop Entry] +Type=Service +MimeType=image/png;image/jpeg;image/jpg;image/gif +Actions=Menu-Refresh +X-KDE-Submenu=Set As Wallpaper... + +[Desktop Action Menu-Refresh] +Name=.: Refresh List :. +Exec=swwwallkon.sh diff --git a/Configs/.local/share/kxmlgui5/dolphin/dolphinui.rc b/Configs/.local/share/kxmlgui5/dolphin/dolphinui.rc new file mode 100644 index 0000000..129a93a --- /dev/null +++ b/Configs/.local/share/kxmlgui5/dolphin/dolphinui.rc @@ -0,0 +1,188 @@ + + + + + &File + + + + + + + + + + + + + + + + + + + + + + + + + &Edit + + + + + + + + + + + + + + + + + + + + + + + + + + + + &View + + + + + + + + + + + + + + + + + + + + + + + + Location Bar + + + + + + + + &Go + + + + + + + + + + + &Tools + + + + + + + + + &Settings + + + + + + + + + + + + + &Help + + + + + + + + + + + + + + + + + + Main Toolbar + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Configs/.p10k.zsh b/Configs/.p10k.zsh new file mode 100644 index 0000000..0ef50b4 --- /dev/null +++ b/Configs/.p10k.zsh @@ -0,0 +1,1826 @@ +# Generated by Powerlevel10k configuration wizard on 2024-03-08 at 14:49 IST. +# Based on romkatv/powerlevel10k/config/p10k-rainbow.zsh, checksum 04117. +# Wizard options: nerdfont-complete + powerline, small icons, rainbow, unicode, +# slanted separators, round heads, round tails, 1 line, sparse, many icons, concise, +# transient_prompt, instant_prompt=verbose. +# Type `p10k configure` to generate another config. +# +# Config for Powerlevel10k with powerline prompt style with colorful background. +# Type `p10k configure` to generate your own config based on it. +# +# Tip: Looking for a nice color? Here's a one-liner to print colormap. +# +# for i in {0..255}; do print -Pn "%K{$i} %k%F{$i}${(l:3::0:)i}%f " ${${(M)$((i%6)):#3}:+$'\n'}; done + +# Temporarily change options. +'builtin' 'local' '-a' 'p10k_config_opts' +[[ ! -o 'aliases' ]] || p10k_config_opts+=('aliases') +[[ ! -o 'sh_glob' ]] || p10k_config_opts+=('sh_glob') +[[ ! -o 'no_brace_expand' ]] || p10k_config_opts+=('no_brace_expand') +'builtin' 'setopt' 'no_aliases' 'no_sh_glob' 'brace_expand' + +() { + emulate -L zsh -o extended_glob + + # Unset all configuration options. This allows you to apply configuration changes without + # restarting zsh. Edit ~/.p10k.zsh and type `source ~/.p10k.zsh`. + unset -m '(POWERLEVEL9K_*|DEFAULT_USER)~POWERLEVEL9K_GITSTATUS_DIR' + + # Zsh >= 5.1 is required. + [[ $ZSH_VERSION == (5.<1->*|<6->.*) ]] || return + + # The list of segments shown on the left. Fill it with the most important segments. + typeset -g POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=( + os_icon # os identifier + dir # current directory + vcs # git status + # prompt_char # prompt symbol + ) + + # The list of segments shown on the right. Fill it with less important segments. + # Right prompt on the last prompt line (where you are typing your commands) gets + # automatically hidden when the input line reaches it. Right prompt above the + # last prompt line gets hidden if it would overlap with left prompt. + typeset -g POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=( + #status # exit code of the last command + #command_execution_time # duration of the last command + background_jobs # presence of background jobs + direnv # direnv status (https://direnv.net/) + asdf # asdf version manager (https://github.com/asdf-vm/asdf) + virtualenv # python virtual environment (https://docs.python.org/3/library/venv.html) + anaconda # conda environment (https://conda.io/) + pyenv # python environment (https://github.com/pyenv/pyenv) + goenv # go environment (https://github.com/syndbg/goenv) + nodenv # node.js version from nodenv (https://github.com/nodenv/nodenv) + nvm # node.js version from nvm (https://github.com/nvm-sh/nvm) + nodeenv # node.js environment (https://github.com/ekalinin/nodeenv) + # node_version # node.js version + # go_version # go version (https://golang.org) + # rust_version # rustc version (https://www.rust-lang.org) + # dotnet_version # .NET version (https://dotnet.microsoft.com) + # php_version # php version (https://www.php.net/) + # laravel_version # laravel php framework version (https://laravel.com/) + # java_version # java version (https://www.java.com/) + # package # name@version from package.json (https://docs.npmjs.com/files/package.json) + rbenv # ruby version from rbenv (https://github.com/rbenv/rbenv) + rvm # ruby version from rvm (https://rvm.io) + fvm # flutter version management (https://github.com/leoafarias/fvm) + luaenv # lua version from luaenv (https://github.com/cehoffman/luaenv) + jenv # java version from jenv (https://github.com/jenv/jenv) + plenv # perl version from plenv (https://github.com/tokuhirom/plenv) + perlbrew # perl version from perlbrew (https://github.com/gugod/App-perlbrew) + phpenv # php version from phpenv (https://github.com/phpenv/phpenv) + scalaenv # scala version from scalaenv (https://github.com/scalaenv/scalaenv) + haskell_stack # haskell version from stack (https://haskellstack.org/) + kubecontext # current kubernetes context (https://kubernetes.io/) + terraform # terraform workspace (https://www.terraform.io) + # terraform_version # terraform version (https://www.terraform.io) + aws # aws profile (https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-profiles.html) + aws_eb_env # aws elastic beanstalk environment (https://aws.amazon.com/elasticbeanstalk/) + azure # azure account name (https://docs.microsoft.com/en-us/cli/azure) + gcloud # google cloud cli account and project (https://cloud.google.com/) + google_app_cred # google application credentials (https://cloud.google.com/docs/authentication/production) + toolbox # toolbox name (https://github.com/containers/toolbox) + context # user@hostname + # nordvpn # nordvpn connection status, linux only (https://nordvpn.com/) + ranger # ranger shell (https://github.com/ranger/ranger) + nnn # nnn shell (https://github.com/jarun/nnn) + lf # lf shell (https://github.com/gokcehan/lf) + xplr # xplr shell (https://github.com/sayanarijit/xplr) + vim_shell # vim shell indicator (:sh) + midnight_commander # midnight commander shell (https://midnight-commander.org/) + nix_shell # nix shell (https://nixos.org/nixos/nix-pills/developing-with-nix-shell.html) + chezmoi_shell # chezmoi shell (https://www.chezmoi.io/) + vi_mode # vi mode (you don't need this if you've enabled prompt_char) + # vpn_ip # virtual private network indicator + # load # CPU load + # disk_usage # disk usage + # ram # free RAM + # swap # used swap + todo # todo items (https://github.com/todotxt/todo.txt-cli) + timewarrior # timewarrior tracking status (https://timewarrior.net/) + taskwarrior # taskwarrior task count (https://taskwarrior.org/) + per_directory_history # Oh My Zsh per-directory-history local/global indicator + # cpu_arch # CPU architecture + # time # current time + # ip # ip address and bandwidth usage for a specified network interface + # public_ip # public IP address + # proxy # system-wide http/https/ftp proxy + # battery # internal battery + # wifi # wifi speed + # example # example user-defined segment (see prompt_example function below) + ) + + # Defines character set used by powerlevel10k. It's best to let `p10k configure` set it for you. + typeset -g POWERLEVEL9K_MODE=nerdfont-complete + # When set to `moderate`, some icons will have an extra space after them. This is meant to avoid + # icon overlap when using non-monospace fonts. When set to `none`, spaces are not added. + typeset -g POWERLEVEL9K_ICON_PADDING=none + + # When set to true, icons appear before content on both sides of the prompt. When set + # to false, icons go after content. If empty or not set, icons go before content in the left + # prompt and after content in the right prompt. + # + # You can also override it for a specific segment: + # + # POWERLEVEL9K_STATUS_ICON_BEFORE_CONTENT=false + # + # Or for a specific segment in specific state: + # + # POWERLEVEL9K_DIR_NOT_WRITABLE_ICON_BEFORE_CONTENT=false + typeset -g POWERLEVEL9K_ICON_BEFORE_CONTENT= + + # Add an empty line before each prompt. + typeset -g POWERLEVEL9K_PROMPT_ADD_NEWLINE=true + + # Connect left prompt lines with these symbols. You'll probably want to use the same color + # as POWERLEVEL9K_MULTILINE_FIRST_PROMPT_GAP_FOREGROUND below. + typeset -g POWERLEVEL9K_MULTILINE_FIRST_PROMPT_PREFIX='%242F╭─' + typeset -g POWERLEVEL9K_MULTILINE_NEWLINE_PROMPT_PREFIX='%242F├─' + typeset -g POWERLEVEL9K_MULTILINE_LAST_PROMPT_PREFIX='%242F╰─' + # Connect right prompt lines with these symbols. + typeset -g POWERLEVEL9K_MULTILINE_FIRST_PROMPT_SUFFIX='%242F─╮' + typeset -g POWERLEVEL9K_MULTILINE_NEWLINE_PROMPT_SUFFIX='%242F─┤' + typeset -g POWERLEVEL9K_MULTILINE_LAST_PROMPT_SUFFIX='%242F─╯' + + # Filler between left and right prompt on the first prompt line. You can set it to ' ', '·' or + # '─'. The last two make it easier to see the alignment between left and right prompt and to + # separate prompt from command output. You might want to set POWERLEVEL9K_PROMPT_ADD_NEWLINE=false + # for more compact prompt if using this option. + typeset -g POWERLEVEL9K_MULTILINE_FIRST_PROMPT_GAP_CHAR=' ' + typeset -g POWERLEVEL9K_MULTILINE_FIRST_PROMPT_GAP_BACKGROUND= + typeset -g POWERLEVEL9K_MULTILINE_NEWLINE_PROMPT_GAP_BACKGROUND= + if [[ $POWERLEVEL9K_MULTILINE_FIRST_PROMPT_GAP_CHAR != ' ' ]]; then + # The color of the filler. You'll probably want to match the color of POWERLEVEL9K_MULTILINE + # ornaments defined above. + typeset -g POWERLEVEL9K_MULTILINE_FIRST_PROMPT_GAP_FOREGROUND=242 + # Start filler from the edge of the screen if there are no left segments on the first line. + typeset -g POWERLEVEL9K_EMPTY_LINE_LEFT_PROMPT_FIRST_SEGMENT_END_SYMBOL='%{%}' + # End filler on the edge of the screen if there are no right segments on the first line. + typeset -g POWERLEVEL9K_EMPTY_LINE_RIGHT_PROMPT_FIRST_SEGMENT_START_SYMBOL='%{%}' + fi + + # Separator between same-color segments on the left. + typeset -g POWERLEVEL9K_LEFT_SUBSEGMENT_SEPARATOR='\u2571' + # Separator between same-color segments on the right. + typeset -g POWERLEVEL9K_RIGHT_SUBSEGMENT_SEPARATOR='\u2571' + # Separator between different-color segments on the left. + typeset -g POWERLEVEL9K_LEFT_SEGMENT_SEPARATOR='\uE0BC' + # Separator between different-color segments on the right. + typeset -g POWERLEVEL9K_RIGHT_SEGMENT_SEPARATOR='\uE0BA' + # To remove a separator between two segments, add "_joined" to the second segment name. + # For example: POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(os_icon context_joined) + + # The right end of left prompt. + typeset -g POWERLEVEL9K_LEFT_PROMPT_LAST_SEGMENT_END_SYMBOL='\uE0B4' + # The left end of right prompt. + typeset -g POWERLEVEL9K_RIGHT_PROMPT_FIRST_SEGMENT_START_SYMBOL='\uE0B6' + # The left end of left prompt. + typeset -g POWERLEVEL9K_LEFT_PROMPT_FIRST_SEGMENT_START_SYMBOL='\uE0B6' + # The right end of right prompt. + typeset -g POWERLEVEL9K_RIGHT_PROMPT_LAST_SEGMENT_END_SYMBOL='\uE0B4' + # Left prompt terminator for lines without any segments. + typeset -g POWERLEVEL9K_EMPTY_LINE_LEFT_PROMPT_LAST_SEGMENT_END_SYMBOL= + + #################################[ os_icon: os identifier ]################################## + # OS identifier color. + typeset -g POWERLEVEL9K_OS_ICON_FOREGROUND=232 + typeset -g POWERLEVEL9K_OS_ICON_BACKGROUND=7 + # Custom icon. + typeset -g POWERLEVEL9K_OS_ICON_CONTENT_EXPANSION='' + + ################################[ prompt_char: prompt symbol ]################################ + # Transparent background. + typeset -g POWERLEVEL9K_PROMPT_CHAR_BACKGROUND= + # Green prompt symbol if the last command succeeded. + typeset -g POWERLEVEL9K_PROMPT_CHAR_OK_{VIINS,VICMD,VIVIS,VIOWR}_FOREGROUND=76 + # Red prompt symbol if the last command failed. + typeset -g POWERLEVEL9K_PROMPT_CHAR_ERROR_{VIINS,VICMD,VIVIS,VIOWR}_FOREGROUND=196 + # Default prompt symbol. + typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIINS_CONTENT_EXPANSION='❯' + # Prompt symbol in command vi mode. + typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VICMD_CONTENT_EXPANSION='❮' + # Prompt symbol in visual vi mode. + typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIVIS_CONTENT_EXPANSION='V' + # Prompt symbol in overwrite vi mode. + typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIOWR_CONTENT_EXPANSION='▶' + typeset -g POWERLEVEL9K_PROMPT_CHAR_OVERWRITE_STATE=true + # No line terminator if prompt_char is the last segment. + typeset -g POWERLEVEL9K_PROMPT_CHAR_LEFT_PROMPT_LAST_SEGMENT_END_SYMBOL= + # No line introducer if prompt_char is the first segment. + typeset -g POWERLEVEL9K_PROMPT_CHAR_LEFT_PROMPT_FIRST_SEGMENT_START_SYMBOL= + # No surrounding whitespace. + typeset -g POWERLEVEL9K_PROMPT_CHAR_LEFT_{LEFT,RIGHT}_WHITESPACE= + + ##################################[ dir: current directory ]################################## + # Current directory background color. + typeset -g POWERLEVEL9K_DIR_BACKGROUND=4 + # Default current directory foreground color. + typeset -g POWERLEVEL9K_DIR_FOREGROUND=254 + # If directory is too long, shorten some of its segments to the shortest possible unique + # prefix. The shortened directory can be tab-completed to the original. + typeset -g POWERLEVEL9K_SHORTEN_STRATEGY=truncate_to_unique + # Replace removed segment suffixes with this symbol. + typeset -g POWERLEVEL9K_SHORTEN_DELIMITER= + # Color of the shortened directory segments. + typeset -g POWERLEVEL9K_DIR_SHORTENED_FOREGROUND=250 + # Color of the anchor directory segments. Anchor segments are never shortened. The first + # segment is always an anchor. + typeset -g POWERLEVEL9K_DIR_ANCHOR_FOREGROUND=255 + # Display anchor directory segments in bold. + typeset -g POWERLEVEL9K_DIR_ANCHOR_BOLD=true + # Don't shorten directories that contain any of these files. They are anchors. + local anchor_files=( + .bzr + .citc + .git + .hg + .node-version + .python-version + .go-version + .ruby-version + .lua-version + .java-version + .perl-version + .php-version + .tool-versions + .shorten_folder_marker + .svn + .terraform + CVS + Cargo.toml + composer.json + go.mod + package.json + stack.yaml + ) + typeset -g POWERLEVEL9K_SHORTEN_FOLDER_MARKER="(${(j:|:)anchor_files})" + # If set to "first" ("last"), remove everything before the first (last) subdirectory that contains + # files matching $POWERLEVEL9K_SHORTEN_FOLDER_MARKER. For example, when the current directory is + # /foo/bar/git_repo/nested_git_repo/baz, prompt will display git_repo/nested_git_repo/baz (first) + # or nested_git_repo/baz (last). This assumes that git_repo and nested_git_repo contain markers + # and other directories don't. + # + # Optionally, "first" and "last" can be followed by ":" where is an integer. + # This moves the truncation point to the right (positive offset) or to the left (negative offset) + # relative to the marker. Plain "first" and "last" are equivalent to "first:0" and "last:0" + # respectively. + typeset -g POWERLEVEL9K_DIR_TRUNCATE_BEFORE_MARKER=false + # Don't shorten this many last directory segments. They are anchors. + typeset -g POWERLEVEL9K_SHORTEN_DIR_LENGTH=1 + # Shorten directory if it's longer than this even if there is space for it. The value can + # be either absolute (e.g., '80') or a percentage of terminal width (e.g, '50%'). If empty, + # directory will be shortened only when prompt doesn't fit or when other parameters demand it + # (see POWERLEVEL9K_DIR_MIN_COMMAND_COLUMNS and POWERLEVEL9K_DIR_MIN_COMMAND_COLUMNS_PCT below). + # If set to `0`, directory will always be shortened to its minimum length. + typeset -g POWERLEVEL9K_DIR_MAX_LENGTH=80 + # When `dir` segment is on the last prompt line, try to shorten it enough to leave at least this + # many columns for typing commands. + typeset -g POWERLEVEL9K_DIR_MIN_COMMAND_COLUMNS=40 + # When `dir` segment is on the last prompt line, try to shorten it enough to leave at least + # COLUMNS * POWERLEVEL9K_DIR_MIN_COMMAND_COLUMNS_PCT * 0.01 columns for typing commands. + typeset -g POWERLEVEL9K_DIR_MIN_COMMAND_COLUMNS_PCT=50 + # If set to true, embed a hyperlink into the directory. Useful for quickly + # opening a directory in the file manager simply by clicking the link. + # Can also be handy when the directory is shortened, as it allows you to see + # the full directory that was used in previous commands. + typeset -g POWERLEVEL9K_DIR_HYPERLINK=false + + # Enable special styling for non-writable and non-existent directories. See POWERLEVEL9K_LOCK_ICON + # and POWERLEVEL9K_DIR_CLASSES below. + typeset -g POWERLEVEL9K_DIR_SHOW_WRITABLE=v3 + + # The default icon shown next to non-writable and non-existent directories when + # POWERLEVEL9K_DIR_SHOW_WRITABLE is set to v3. + # typeset -g POWERLEVEL9K_LOCK_ICON='⭐' + + # POWERLEVEL9K_DIR_CLASSES allows you to specify custom icons and colors for different + # directories. It must be an array with 3 * N elements. Each triplet consists of: + # + # 1. A pattern against which the current directory ($PWD) is matched. Matching is done with + # extended_glob option enabled. + # 2. Directory class for the purpose of styling. + # 3. An empty string. + # + # Triplets are tried in order. The first triplet whose pattern matches $PWD wins. + # + # If POWERLEVEL9K_DIR_SHOW_WRITABLE is set to v3, non-writable and non-existent directories + # acquire class suffix _NOT_WRITABLE and NON_EXISTENT respectively. + # + # For example, given these settings: + # + # typeset -g POWERLEVEL9K_DIR_CLASSES=( + # '~/work(|/*)' WORK '' + # '~(|/*)' HOME '' + # '*' DEFAULT '') + # + # Whenever the current directory is ~/work or a subdirectory of ~/work, it gets styled with one + # of the following classes depending on its writability and existence: WORK, WORK_NOT_WRITABLE or + # WORK_NON_EXISTENT. + # + # Simply assigning classes to directories doesn't have any visible effects. It merely gives you an + # option to define custom colors and icons for different directory classes. + # + # # Styling for WORK. + # typeset -g POWERLEVEL9K_DIR_WORK_VISUAL_IDENTIFIER_EXPANSION='⭐' + # typeset -g POWERLEVEL9K_DIR_WORK_BACKGROUND=4 + # typeset -g POWERLEVEL9K_DIR_WORK_FOREGROUND=254 + # typeset -g POWERLEVEL9K_DIR_WORK_SHORTENED_FOREGROUND=250 + # typeset -g POWERLEVEL9K_DIR_WORK_ANCHOR_FOREGROUND=255 + # + # # Styling for WORK_NOT_WRITABLE. + # typeset -g POWERLEVEL9K_DIR_WORK_NOT_WRITABLE_VISUAL_IDENTIFIER_EXPANSION='⭐' + # typeset -g POWERLEVEL9K_DIR_WORK_NOT_WRITABLE_BACKGROUND=4 + # typeset -g POWERLEVEL9K_DIR_WORK_NOT_WRITABLE_FOREGROUND=254 + # typeset -g POWERLEVEL9K_DIR_WORK_NOT_WRITABLE_SHORTENED_FOREGROUND=250 + # typeset -g POWERLEVEL9K_DIR_WORK_NOT_WRITABLE_ANCHOR_FOREGROUND=255 + # + # # Styling for WORK_NON_EXISTENT. + # typeset -g POWERLEVEL9K_DIR_WORK_NON_EXISTENT_VISUAL_IDENTIFIER_EXPANSION='⭐' + # typeset -g POWERLEVEL9K_DIR_WORK_NON_EXISTENT_BACKGROUND=4 + # typeset -g POWERLEVEL9K_DIR_WORK_NON_EXISTENT_FOREGROUND=254 + # typeset -g POWERLEVEL9K_DIR_WORK_NON_EXISTENT_SHORTENED_FOREGROUND=250 + # typeset -g POWERLEVEL9K_DIR_WORK_NON_EXISTENT_ANCHOR_FOREGROUND=255 + # + # If a styling parameter isn't explicitly defined for some class, it falls back to the classless + # parameter. For example, if POWERLEVEL9K_DIR_WORK_NOT_WRITABLE_FOREGROUND is not set, it falls + # back to POWERLEVEL9K_DIR_FOREGROUND. + # + # typeset -g POWERLEVEL9K_DIR_CLASSES=() + + # Custom prefix. + # typeset -g POWERLEVEL9K_DIR_PREFIX='in ' + + #####################################[ vcs: git status ]###################################### + # Version control background colors. + typeset -g POWERLEVEL9K_VCS_CLEAN_BACKGROUND=2 + typeset -g POWERLEVEL9K_VCS_MODIFIED_BACKGROUND=3 + typeset -g POWERLEVEL9K_VCS_UNTRACKED_BACKGROUND=2 + typeset -g POWERLEVEL9K_VCS_CONFLICTED_BACKGROUND=3 + typeset -g POWERLEVEL9K_VCS_LOADING_BACKGROUND=8 + + # Branch icon. Set this parameter to '\UE0A0 ' for the popular Powerline branch icon. + typeset -g POWERLEVEL9K_VCS_BRANCH_ICON='\uF126 ' + + # Untracked files icon. It's really a question mark, your font isn't broken. + # Change the value of this parameter to show a different icon. + typeset -g POWERLEVEL9K_VCS_UNTRACKED_ICON='?' + + # Formatter for Git status. + # + # Example output: master wip ⇣42⇡42 *42 merge ~42 +42 !42 ?42. + # + # You can edit the function to customize how Git status looks. + # + # VCS_STATUS_* parameters are set by gitstatus plugin. See reference: + # https://github.com/romkatv/gitstatus/blob/master/gitstatus.plugin.zsh. + function my_git_formatter() { + emulate -L zsh + + if [[ -n $P9K_CONTENT ]]; then + # If P9K_CONTENT is not empty, use it. It's either "loading" or from vcs_info (not from + # gitstatus plugin). VCS_STATUS_* parameters are not available in this case. + typeset -g my_git_format=$P9K_CONTENT + return + fi + + # Styling for different parts of Git status. + local meta='%7F' # white foreground + local clean='%0F' # black foreground + local modified='%0F' # black foreground + local untracked='%0F' # black foreground + local conflicted='%1F' # red foreground + + local res + + if [[ -n $VCS_STATUS_LOCAL_BRANCH ]]; then + local branch=${(V)VCS_STATUS_LOCAL_BRANCH} + # If local branch name is at most 32 characters long, show it in full. + # Otherwise show the first 12 … the last 12. + # Tip: To always show local branch name in full without truncation, delete the next line. + (( $#branch > 32 )) && branch[13,-13]="…" # <-- this line + res+="${clean}${(g::)POWERLEVEL9K_VCS_BRANCH_ICON}${branch//\%/%%}" + fi + + if [[ -n $VCS_STATUS_TAG + # Show tag only if not on a branch. + # Tip: To always show tag, delete the next line. + && -z $VCS_STATUS_LOCAL_BRANCH # <-- this line + ]]; then + local tag=${(V)VCS_STATUS_TAG} + # If tag name is at most 32 characters long, show it in full. + # Otherwise show the first 12 … the last 12. + # Tip: To always show tag name in full without truncation, delete the next line. + (( $#tag > 32 )) && tag[13,-13]="…" # <-- this line + res+="${meta}#${clean}${tag//\%/%%}" + fi + + # Display the current Git commit if there is no branch and no tag. + # Tip: To always display the current Git commit, delete the next line. + [[ -z $VCS_STATUS_LOCAL_BRANCH && -z $VCS_STATUS_TAG ]] && # <-- this line + res+="${meta}@${clean}${VCS_STATUS_COMMIT[1,8]}" + + # Show tracking branch name if it differs from local branch. + if [[ -n ${VCS_STATUS_REMOTE_BRANCH:#$VCS_STATUS_LOCAL_BRANCH} ]]; then + res+="${meta}:${clean}${(V)VCS_STATUS_REMOTE_BRANCH//\%/%%}" + fi + + # Display "wip" if the latest commit's summary contains "wip" or "WIP". + if [[ $VCS_STATUS_COMMIT_SUMMARY == (|*[^[:alnum:]])(wip|WIP)(|[^[:alnum:]]*) ]]; then + res+=" ${modified}wip" + fi + + if (( VCS_STATUS_COMMITS_AHEAD || VCS_STATUS_COMMITS_BEHIND )); then + # ⇣42 if behind the remote. + (( VCS_STATUS_COMMITS_BEHIND )) && res+=" ${clean}⇣${VCS_STATUS_COMMITS_BEHIND}" + # ⇡42 if ahead of the remote; no leading space if also behind the remote: ⇣42⇡42. + (( VCS_STATUS_COMMITS_AHEAD && !VCS_STATUS_COMMITS_BEHIND )) && res+=" " + (( VCS_STATUS_COMMITS_AHEAD )) && res+="${clean}⇡${VCS_STATUS_COMMITS_AHEAD}" + elif [[ -n $VCS_STATUS_REMOTE_BRANCH ]]; then + # Tip: Uncomment the next line to display '=' if up to date with the remote. + # res+=" ${clean}=" + fi + + # ⇠42 if behind the push remote. + (( VCS_STATUS_PUSH_COMMITS_BEHIND )) && res+=" ${clean}⇠${VCS_STATUS_PUSH_COMMITS_BEHIND}" + (( VCS_STATUS_PUSH_COMMITS_AHEAD && !VCS_STATUS_PUSH_COMMITS_BEHIND )) && res+=" " + # ⇢42 if ahead of the push remote; no leading space if also behind: ⇠42⇢42. + (( VCS_STATUS_PUSH_COMMITS_AHEAD )) && res+="${clean}⇢${VCS_STATUS_PUSH_COMMITS_AHEAD}" + # *42 if have stashes. + (( VCS_STATUS_STASHES )) && res+=" ${clean}*${VCS_STATUS_STASHES}" + # 'merge' if the repo is in an unusual state. + [[ -n $VCS_STATUS_ACTION ]] && res+=" ${conflicted}${VCS_STATUS_ACTION}" + # ~42 if have merge conflicts. + (( VCS_STATUS_NUM_CONFLICTED )) && res+=" ${conflicted}~${VCS_STATUS_NUM_CONFLICTED}" + # +42 if have staged changes. + (( VCS_STATUS_NUM_STAGED )) && res+=" ${modified}+${VCS_STATUS_NUM_STAGED}" + # !42 if have unstaged changes. + (( VCS_STATUS_NUM_UNSTAGED )) && res+=" ${modified}!${VCS_STATUS_NUM_UNSTAGED}" + # ?42 if have untracked files. It's really a question mark, your font isn't broken. + # See POWERLEVEL9K_VCS_UNTRACKED_ICON above if you want to use a different icon. + # Remove the next line if you don't want to see untracked files at all. + (( VCS_STATUS_NUM_UNTRACKED )) && res+=" ${untracked}${(g::)POWERLEVEL9K_VCS_UNTRACKED_ICON}${VCS_STATUS_NUM_UNTRACKED}" + # "─" if the number of unstaged files is unknown. This can happen due to + # POWERLEVEL9K_VCS_MAX_INDEX_SIZE_DIRTY (see below) being set to a non-negative number lower + # than the number of files in the Git index, or due to bash.showDirtyState being set to false + # in the repository config. The number of staged and untracked files may also be unknown + # in this case. + (( VCS_STATUS_HAS_UNSTAGED == -1 )) && res+=" ${modified}─" + + typeset -g my_git_format=$res + } + functions -M my_git_formatter 2>/dev/null + + # Don't count the number of unstaged, untracked and conflicted files in Git repositories with + # more than this many files in the index. Negative value means infinity. + # + # If you are working in Git repositories with tens of millions of files and seeing performance + # sagging, try setting POWERLEVEL9K_VCS_MAX_INDEX_SIZE_DIRTY to a number lower than the output + # of `git ls-files | wc -l`. Alternatively, add `bash.showDirtyState = false` to the repository's + # config: `git config bash.showDirtyState false`. + typeset -g POWERLEVEL9K_VCS_MAX_INDEX_SIZE_DIRTY=-1 + + # Don't show Git status in prompt for repositories whose workdir matches this pattern. + # For example, if set to '~', the Git repository at $HOME/.git will be ignored. + # Multiple patterns can be combined with '|': '~(|/foo)|/bar/baz/*'. + typeset -g POWERLEVEL9K_VCS_DISABLED_WORKDIR_PATTERN='~' + + # Disable the default Git status formatting. + typeset -g POWERLEVEL9K_VCS_DISABLE_GITSTATUS_FORMATTING=true + # Install our own Git status formatter. + typeset -g POWERLEVEL9K_VCS_CONTENT_EXPANSION='${$((my_git_formatter()))+${my_git_format}}' + # Enable counters for staged, unstaged, etc. + typeset -g POWERLEVEL9K_VCS_{STAGED,UNSTAGED,UNTRACKED,CONFLICTED,COMMITS_AHEAD,COMMITS_BEHIND}_MAX_NUM=-1 + + # Custom icon. + # typeset -g POWERLEVEL9K_VCS_VISUAL_IDENTIFIER_EXPANSION='⭐' + # Custom prefix. + # typeset -g POWERLEVEL9K_VCS_PREFIX='on ' + + # Show status of repositories of these types. You can add svn and/or hg if you are + # using them. If you do, your prompt may become slow even when your current directory + # isn't in an svn or hg repository. + typeset -g POWERLEVEL9K_VCS_BACKENDS=(git) + + ##########################[ status: exit code of the last command ]########################### + # Enable OK_PIPE, ERROR_PIPE and ERROR_SIGNAL status states to allow us to enable, disable and + # style them independently from the regular OK and ERROR state. + typeset -g POWERLEVEL9K_STATUS_EXTENDED_STATES=true + + # Status on success. No content, just an icon. No need to show it if prompt_char is enabled as + # it will signify success by turning green. + typeset -g POWERLEVEL9K_STATUS_OK=true + typeset -g POWERLEVEL9K_STATUS_OK_VISUAL_IDENTIFIER_EXPANSION='✔' + typeset -g POWERLEVEL9K_STATUS_OK_FOREGROUND=2 + typeset -g POWERLEVEL9K_STATUS_OK_BACKGROUND=0 + + # Status when some part of a pipe command fails but the overall exit status is zero. It may look + # like this: 1|0. + typeset -g POWERLEVEL9K_STATUS_OK_PIPE=true + typeset -g POWERLEVEL9K_STATUS_OK_PIPE_VISUAL_IDENTIFIER_EXPANSION='✔' + typeset -g POWERLEVEL9K_STATUS_OK_PIPE_FOREGROUND=2 + typeset -g POWERLEVEL9K_STATUS_OK_PIPE_BACKGROUND=0 + + # Status when it's just an error code (e.g., '1'). No need to show it if prompt_char is enabled as + # it will signify error by turning red. + typeset -g POWERLEVEL9K_STATUS_ERROR=true + typeset -g POWERLEVEL9K_STATUS_ERROR_VISUAL_IDENTIFIER_EXPANSION='✘' + typeset -g POWERLEVEL9K_STATUS_ERROR_FOREGROUND=3 + typeset -g POWERLEVEL9K_STATUS_ERROR_BACKGROUND=1 + + # Status when the last command was terminated by a signal. + typeset -g POWERLEVEL9K_STATUS_ERROR_SIGNAL=true + # Use terse signal names: "INT" instead of "SIGINT(2)". + typeset -g POWERLEVEL9K_STATUS_VERBOSE_SIGNAME=false + typeset -g POWERLEVEL9K_STATUS_ERROR_SIGNAL_VISUAL_IDENTIFIER_EXPANSION='✘' + typeset -g POWERLEVEL9K_STATUS_ERROR_SIGNAL_FOREGROUND=3 + typeset -g POWERLEVEL9K_STATUS_ERROR_SIGNAL_BACKGROUND=1 + + # Status when some part of a pipe command fails and the overall exit status is also non-zero. + # It may look like this: 1|0. + typeset -g POWERLEVEL9K_STATUS_ERROR_PIPE=true + typeset -g POWERLEVEL9K_STATUS_ERROR_PIPE_VISUAL_IDENTIFIER_EXPANSION='✘' + typeset -g POWERLEVEL9K_STATUS_ERROR_PIPE_FOREGROUND=3 + typeset -g POWERLEVEL9K_STATUS_ERROR_PIPE_BACKGROUND=1 + + ###################[ command_execution_time: duration of the last command ]################### + # Execution time color. + typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_FOREGROUND=0 + typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_BACKGROUND=3 + # Show duration of the last command if takes at least this many seconds. + typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_THRESHOLD=3 + # Show this many fractional digits. Zero means round to seconds. + typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_PRECISION=0 + # Duration format: 1d 2h 3m 4s. + typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_FORMAT='d h m s' + # Custom icon. + # typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_VISUAL_IDENTIFIER_EXPANSION='⭐' + # Custom prefix. + # typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_PREFIX='took ' + + #######################[ background_jobs: presence of background jobs ]####################### + # Background jobs color. + typeset -g POWERLEVEL9K_BACKGROUND_JOBS_FOREGROUND=6 + typeset -g POWERLEVEL9K_BACKGROUND_JOBS_BACKGROUND=0 + # Don't show the number of background jobs. + typeset -g POWERLEVEL9K_BACKGROUND_JOBS_VERBOSE=false + # Custom icon. + # typeset -g POWERLEVEL9K_BACKGROUND_JOBS_VISUAL_IDENTIFIER_EXPANSION='⭐' + + #######################[ direnv: direnv status (https://direnv.net/) ]######################## + # Direnv color. + typeset -g POWERLEVEL9K_DIRENV_FOREGROUND=3 + typeset -g POWERLEVEL9K_DIRENV_BACKGROUND=0 + # Custom icon. + # typeset -g POWERLEVEL9K_DIRENV_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ###############[ asdf: asdf version manager (https://github.com/asdf-vm/asdf) ]############### + # Default asdf color. Only used to display tools for which there is no color override (see below). + # Tip: Override these parameters for ${TOOL} with POWERLEVEL9K_ASDF_${TOOL}_FOREGROUND and + # POWERLEVEL9K_ASDF_${TOOL}_BACKGROUND. + typeset -g POWERLEVEL9K_ASDF_FOREGROUND=0 + typeset -g POWERLEVEL9K_ASDF_BACKGROUND=7 + + # There are four parameters that can be used to hide asdf tools. Each parameter describes + # conditions under which a tool gets hidden. Parameters can hide tools but not unhide them. If at + # least one parameter decides to hide a tool, that tool gets hidden. If no parameter decides to + # hide a tool, it gets shown. + # + # Special note on the difference between POWERLEVEL9K_ASDF_SOURCES and + # POWERLEVEL9K_ASDF_PROMPT_ALWAYS_SHOW. Consider the effect of the following commands: + # + # asdf local python 3.8.1 + # asdf global python 3.8.1 + # + # After running both commands the current python version is 3.8.1 and its source is "local" as + # it takes precedence over "global". If POWERLEVEL9K_ASDF_PROMPT_ALWAYS_SHOW is set to false, + # it'll hide python version in this case because 3.8.1 is the same as the global version. + # POWERLEVEL9K_ASDF_SOURCES will hide python version only if the value of this parameter doesn't + # contain "local". + + # Hide tool versions that don't come from one of these sources. + # + # Available sources: + # + # - shell `asdf current` says "set by ASDF_${TOOL}_VERSION environment variable" + # - local `asdf current` says "set by /some/not/home/directory/file" + # - global `asdf current` says "set by /home/username/file" + # + # Note: If this parameter is set to (shell local global), it won't hide tools. + # Tip: Override this parameter for ${TOOL} with POWERLEVEL9K_ASDF_${TOOL}_SOURCES. + typeset -g POWERLEVEL9K_ASDF_SOURCES=(shell local global) + + # If set to false, hide tool versions that are the same as global. + # + # Note: The name of this parameter doesn't reflect its meaning at all. + # Note: If this parameter is set to true, it won't hide tools. + # Tip: Override this parameter for ${TOOL} with POWERLEVEL9K_ASDF_${TOOL}_PROMPT_ALWAYS_SHOW. + typeset -g POWERLEVEL9K_ASDF_PROMPT_ALWAYS_SHOW=false + + # If set to false, hide tool versions that are equal to "system". + # + # Note: If this parameter is set to true, it won't hide tools. + # Tip: Override this parameter for ${TOOL} with POWERLEVEL9K_ASDF_${TOOL}_SHOW_SYSTEM. + typeset -g POWERLEVEL9K_ASDF_SHOW_SYSTEM=true + + # If set to non-empty value, hide tools unless there is a file matching the specified file pattern + # in the current directory, or its parent directory, or its grandparent directory, and so on. + # + # Note: If this parameter is set to empty value, it won't hide tools. + # Note: SHOW_ON_UPGLOB isn't specific to asdf. It works with all prompt segments. + # Tip: Override this parameter for ${TOOL} with POWERLEVEL9K_ASDF_${TOOL}_SHOW_ON_UPGLOB. + # + # Example: Hide nodejs version when there is no package.json and no *.js files in the current + # directory, in `..`, in `../..` and so on. + # + # typeset -g POWERLEVEL9K_ASDF_NODEJS_SHOW_ON_UPGLOB='*.js|package.json' + typeset -g POWERLEVEL9K_ASDF_SHOW_ON_UPGLOB= + + # Ruby version from asdf. + typeset -g POWERLEVEL9K_ASDF_RUBY_FOREGROUND=0 + typeset -g POWERLEVEL9K_ASDF_RUBY_BACKGROUND=1 + # typeset -g POWERLEVEL9K_ASDF_RUBY_VISUAL_IDENTIFIER_EXPANSION='⭐' + # typeset -g POWERLEVEL9K_ASDF_RUBY_SHOW_ON_UPGLOB='*.foo|*.bar' + + # Python version from asdf. + typeset -g POWERLEVEL9K_ASDF_PYTHON_FOREGROUND=0 + typeset -g POWERLEVEL9K_ASDF_PYTHON_BACKGROUND=4 + # typeset -g POWERLEVEL9K_ASDF_PYTHON_VISUAL_IDENTIFIER_EXPANSION='⭐' + # typeset -g POWERLEVEL9K_ASDF_PYTHON_SHOW_ON_UPGLOB='*.foo|*.bar' + + # Go version from asdf. + typeset -g POWERLEVEL9K_ASDF_GOLANG_FOREGROUND=0 + typeset -g POWERLEVEL9K_ASDF_GOLANG_BACKGROUND=4 + # typeset -g POWERLEVEL9K_ASDF_GOLANG_VISUAL_IDENTIFIER_EXPANSION='⭐' + # typeset -g POWERLEVEL9K_ASDF_GOLANG_SHOW_ON_UPGLOB='*.foo|*.bar' + + # Node.js version from asdf. + typeset -g POWERLEVEL9K_ASDF_NODEJS_FOREGROUND=0 + typeset -g POWERLEVEL9K_ASDF_NODEJS_BACKGROUND=2 + # typeset -g POWERLEVEL9K_ASDF_NODEJS_VISUAL_IDENTIFIER_EXPANSION='⭐' + # typeset -g POWERLEVEL9K_ASDF_NODEJS_SHOW_ON_UPGLOB='*.foo|*.bar' + + # Rust version from asdf. + typeset -g POWERLEVEL9K_ASDF_RUST_FOREGROUND=0 + typeset -g POWERLEVEL9K_ASDF_RUST_BACKGROUND=208 + # typeset -g POWERLEVEL9K_ASDF_RUST_VISUAL_IDENTIFIER_EXPANSION='⭐' + # typeset -g POWERLEVEL9K_ASDF_RUST_SHOW_ON_UPGLOB='*.foo|*.bar' + + # .NET Core version from asdf. + typeset -g POWERLEVEL9K_ASDF_DOTNET_CORE_FOREGROUND=0 + typeset -g POWERLEVEL9K_ASDF_DOTNET_CORE_BACKGROUND=5 + # typeset -g POWERLEVEL9K_ASDF_DOTNET_CORE_VISUAL_IDENTIFIER_EXPANSION='⭐' + # typeset -g POWERLEVEL9K_ASDF_DOTNET_CORE_SHOW_ON_UPGLOB='*.foo|*.bar' + + # Flutter version from asdf. + typeset -g POWERLEVEL9K_ASDF_FLUTTER_FOREGROUND=0 + typeset -g POWERLEVEL9K_ASDF_FLUTTER_BACKGROUND=4 + # typeset -g POWERLEVEL9K_ASDF_FLUTTER_VISUAL_IDENTIFIER_EXPANSION='⭐' + # typeset -g POWERLEVEL9K_ASDF_FLUTTER_SHOW_ON_UPGLOB='*.foo|*.bar' + + # Lua version from asdf. + typeset -g POWERLEVEL9K_ASDF_LUA_FOREGROUND=0 + typeset -g POWERLEVEL9K_ASDF_LUA_BACKGROUND=4 + # typeset -g POWERLEVEL9K_ASDF_LUA_VISUAL_IDENTIFIER_EXPANSION='⭐' + # typeset -g POWERLEVEL9K_ASDF_LUA_SHOW_ON_UPGLOB='*.foo|*.bar' + + # Java version from asdf. + typeset -g POWERLEVEL9K_ASDF_JAVA_FOREGROUND=1 + typeset -g POWERLEVEL9K_ASDF_JAVA_BACKGROUND=7 + # typeset -g POWERLEVEL9K_ASDF_JAVA_VISUAL_IDENTIFIER_EXPANSION='⭐' + # typeset -g POWERLEVEL9K_ASDF_JAVA_SHOW_ON_UPGLOB='*.foo|*.bar' + + # Perl version from asdf. + typeset -g POWERLEVEL9K_ASDF_PERL_FOREGROUND=0 + typeset -g POWERLEVEL9K_ASDF_PERL_BACKGROUND=4 + # typeset -g POWERLEVEL9K_ASDF_PERL_VISUAL_IDENTIFIER_EXPANSION='⭐' + # typeset -g POWERLEVEL9K_ASDF_PERL_SHOW_ON_UPGLOB='*.foo|*.bar' + + # Erlang version from asdf. + typeset -g POWERLEVEL9K_ASDF_ERLANG_FOREGROUND=0 + typeset -g POWERLEVEL9K_ASDF_ERLANG_BACKGROUND=1 + # typeset -g POWERLEVEL9K_ASDF_ERLANG_VISUAL_IDENTIFIER_EXPANSION='⭐' + # typeset -g POWERLEVEL9K_ASDF_ERLANG_SHOW_ON_UPGLOB='*.foo|*.bar' + + # Elixir version from asdf. + typeset -g POWERLEVEL9K_ASDF_ELIXIR_FOREGROUND=0 + typeset -g POWERLEVEL9K_ASDF_ELIXIR_BACKGROUND=5 + # typeset -g POWERLEVEL9K_ASDF_ELIXIR_VISUAL_IDENTIFIER_EXPANSION='⭐' + # typeset -g POWERLEVEL9K_ASDF_ELIXIR_SHOW_ON_UPGLOB='*.foo|*.bar' + + # Postgres version from asdf. + typeset -g POWERLEVEL9K_ASDF_POSTGRES_FOREGROUND=0 + typeset -g POWERLEVEL9K_ASDF_POSTGRES_BACKGROUND=6 + # typeset -g POWERLEVEL9K_ASDF_POSTGRES_VISUAL_IDENTIFIER_EXPANSION='⭐' + # typeset -g POWERLEVEL9K_ASDF_POSTGRES_SHOW_ON_UPGLOB='*.foo|*.bar' + + # PHP version from asdf. + typeset -g POWERLEVEL9K_ASDF_PHP_FOREGROUND=0 + typeset -g POWERLEVEL9K_ASDF_PHP_BACKGROUND=5 + # typeset -g POWERLEVEL9K_ASDF_PHP_VISUAL_IDENTIFIER_EXPANSION='⭐' + # typeset -g POWERLEVEL9K_ASDF_PHP_SHOW_ON_UPGLOB='*.foo|*.bar' + + # Haskell version from asdf. + typeset -g POWERLEVEL9K_ASDF_HASKELL_FOREGROUND=0 + typeset -g POWERLEVEL9K_ASDF_HASKELL_BACKGROUND=3 + # typeset -g POWERLEVEL9K_ASDF_HASKELL_VISUAL_IDENTIFIER_EXPANSION='⭐' + # typeset -g POWERLEVEL9K_ASDF_HASKELL_SHOW_ON_UPGLOB='*.foo|*.bar' + + # Julia version from asdf. + typeset -g POWERLEVEL9K_ASDF_JULIA_FOREGROUND=0 + typeset -g POWERLEVEL9K_ASDF_JULIA_BACKGROUND=2 + # typeset -g POWERLEVEL9K_ASDF_JULIA_VISUAL_IDENTIFIER_EXPANSION='⭐' + # typeset -g POWERLEVEL9K_ASDF_JULIA_SHOW_ON_UPGLOB='*.foo|*.bar' + + ##########[ nordvpn: nordvpn connection status, linux only (https://nordvpn.com/) ]########### + # NordVPN connection indicator color. + typeset -g POWERLEVEL9K_NORDVPN_FOREGROUND=7 + typeset -g POWERLEVEL9K_NORDVPN_BACKGROUND=4 + # Hide NordVPN connection indicator when not connected. + typeset -g POWERLEVEL9K_NORDVPN_{DISCONNECTED,CONNECTING,DISCONNECTING}_CONTENT_EXPANSION= + typeset -g POWERLEVEL9K_NORDVPN_{DISCONNECTED,CONNECTING,DISCONNECTING}_VISUAL_IDENTIFIER_EXPANSION= + # Custom icon. + # typeset -g POWERLEVEL9K_NORDVPN_VISUAL_IDENTIFIER_EXPANSION='⭐' + + #################[ ranger: ranger shell (https://github.com/ranger/ranger) ]################## + # Ranger shell color. + typeset -g POWERLEVEL9K_RANGER_FOREGROUND=3 + typeset -g POWERLEVEL9K_RANGER_BACKGROUND=0 + # Custom icon. + # typeset -g POWERLEVEL9K_RANGER_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ######################[ nnn: nnn shell (https://github.com/jarun/nnn) ]####################### + # Nnn shell color. + typeset -g POWERLEVEL9K_NNN_FOREGROUND=0 + typeset -g POWERLEVEL9K_NNN_BACKGROUND=6 + # Custom icon. + # typeset -g POWERLEVEL9K_NNN_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ######################[ lf: lf shell (https://github.com/gokcehan/lf) ]####################### + # lf shell color. + typeset -g POWERLEVEL9K_LF_FOREGROUND=0 + typeset -g POWERLEVEL9K_LF_BACKGROUND=6 + # Custom icon. + # typeset -g POWERLEVEL9K_LF_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ##################[ xplr: xplr shell (https://github.com/sayanarijit/xplr) ]################## + # xplr shell color. + typeset -g POWERLEVEL9K_XPLR_FOREGROUND=0 + typeset -g POWERLEVEL9K_XPLR_BACKGROUND=6 + # Custom icon. + # typeset -g POWERLEVEL9K_XPLR_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ###########################[ vim_shell: vim shell indicator (:sh) ]########################### + # Vim shell indicator color. + typeset -g POWERLEVEL9K_VIM_SHELL_FOREGROUND=0 + typeset -g POWERLEVEL9K_VIM_SHELL_BACKGROUND=2 + # Custom icon. + # typeset -g POWERLEVEL9K_VIM_SHELL_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ######[ midnight_commander: midnight commander shell (https://midnight-commander.org/) ]###### + # Midnight Commander shell color. + typeset -g POWERLEVEL9K_MIDNIGHT_COMMANDER_FOREGROUND=3 + typeset -g POWERLEVEL9K_MIDNIGHT_COMMANDER_BACKGROUND=0 + # Custom icon. + # typeset -g POWERLEVEL9K_MIDNIGHT_COMMANDER_VISUAL_IDENTIFIER_EXPANSION='⭐' + + #[ nix_shell: nix shell (https://nixos.org/nixos/nix-pills/developing-with-nix-shell.html) ]## + # Nix shell color. + typeset -g POWERLEVEL9K_NIX_SHELL_FOREGROUND=0 + typeset -g POWERLEVEL9K_NIX_SHELL_BACKGROUND=4 + + # Display the icon of nix_shell if PATH contains a subdirectory of /nix/store. + # typeset -g POWERLEVEL9K_NIX_SHELL_INFER_FROM_PATH=false + + # Tip: If you want to see just the icon without "pure" and "impure", uncomment the next line. + # typeset -g POWERLEVEL9K_NIX_SHELL_CONTENT_EXPANSION= + + # Custom icon. + # typeset -g POWERLEVEL9K_NIX_SHELL_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ##################[ chezmoi_shell: chezmoi shell (https://www.chezmoi.io/) ]################## + # chezmoi shell color. + typeset -g POWERLEVEL9K_CHEZMOI_SHELL_FOREGROUND=0 + typeset -g POWERLEVEL9K_CHEZMOI_SHELL_BACKGROUND=4 + # Custom icon. + # typeset -g POWERLEVEL9K_CHEZMOI_SHELL_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ##################################[ disk_usage: disk usage ]################################## + # Colors for different levels of disk usage. + typeset -g POWERLEVEL9K_DISK_USAGE_NORMAL_FOREGROUND=3 + typeset -g POWERLEVEL9K_DISK_USAGE_NORMAL_BACKGROUND=0 + typeset -g POWERLEVEL9K_DISK_USAGE_WARNING_FOREGROUND=0 + typeset -g POWERLEVEL9K_DISK_USAGE_WARNING_BACKGROUND=3 + typeset -g POWERLEVEL9K_DISK_USAGE_CRITICAL_FOREGROUND=7 + typeset -g POWERLEVEL9K_DISK_USAGE_CRITICAL_BACKGROUND=1 + # Thresholds for different levels of disk usage (percentage points). + typeset -g POWERLEVEL9K_DISK_USAGE_WARNING_LEVEL=90 + typeset -g POWERLEVEL9K_DISK_USAGE_CRITICAL_LEVEL=95 + # If set to true, hide disk usage when below $POWERLEVEL9K_DISK_USAGE_WARNING_LEVEL percent. + typeset -g POWERLEVEL9K_DISK_USAGE_ONLY_WARNING=false + # Custom icon. + # typeset -g POWERLEVEL9K_DISK_USAGE_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ###########[ vi_mode: vi mode (you don't need this if you've enabled prompt_char) ]########### + # Foreground color. + typeset -g POWERLEVEL9K_VI_MODE_FOREGROUND=0 + # Text and color for normal (a.k.a. command) vi mode. + typeset -g POWERLEVEL9K_VI_COMMAND_MODE_STRING=NORMAL + typeset -g POWERLEVEL9K_VI_MODE_NORMAL_BACKGROUND=2 + # Text and color for visual vi mode. + typeset -g POWERLEVEL9K_VI_VISUAL_MODE_STRING=VISUAL + typeset -g POWERLEVEL9K_VI_MODE_VISUAL_BACKGROUND=4 + # Text and color for overtype (a.k.a. overwrite and replace) vi mode. + typeset -g POWERLEVEL9K_VI_OVERWRITE_MODE_STRING=OVERTYPE + typeset -g POWERLEVEL9K_VI_MODE_OVERWRITE_BACKGROUND=3 + # Text and color for insert vi mode. + typeset -g POWERLEVEL9K_VI_INSERT_MODE_STRING= + typeset -g POWERLEVEL9K_VI_MODE_INSERT_FOREGROUND=8 + + ######################################[ ram: free RAM ]####################################### + # RAM color. + typeset -g POWERLEVEL9K_RAM_FOREGROUND=0 + typeset -g POWERLEVEL9K_RAM_BACKGROUND=3 + # Custom icon. + # typeset -g POWERLEVEL9K_RAM_VISUAL_IDENTIFIER_EXPANSION='⭐' + + #####################################[ swap: used swap ]###################################### + # Swap color. + typeset -g POWERLEVEL9K_SWAP_FOREGROUND=0 + typeset -g POWERLEVEL9K_SWAP_BACKGROUND=3 + # Custom icon. + # typeset -g POWERLEVEL9K_SWAP_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ######################################[ load: CPU load ]###################################### + # Show average CPU load over this many last minutes. Valid values are 1, 5 and 15. + typeset -g POWERLEVEL9K_LOAD_WHICH=5 + # Load color when load is under 50%. + typeset -g POWERLEVEL9K_LOAD_NORMAL_FOREGROUND=0 + typeset -g POWERLEVEL9K_LOAD_NORMAL_BACKGROUND=2 + # Load color when load is between 50% and 70%. + typeset -g POWERLEVEL9K_LOAD_WARNING_FOREGROUND=0 + typeset -g POWERLEVEL9K_LOAD_WARNING_BACKGROUND=3 + # Load color when load is over 70%. + typeset -g POWERLEVEL9K_LOAD_CRITICAL_FOREGROUND=0 + typeset -g POWERLEVEL9K_LOAD_CRITICAL_BACKGROUND=1 + # Custom icon. + # typeset -g POWERLEVEL9K_LOAD_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ################[ todo: todo items (https://github.com/todotxt/todo.txt-cli) ]################ + # Todo color. + typeset -g POWERLEVEL9K_TODO_FOREGROUND=0 + typeset -g POWERLEVEL9K_TODO_BACKGROUND=8 + # Hide todo when the total number of tasks is zero. + typeset -g POWERLEVEL9K_TODO_HIDE_ZERO_TOTAL=true + # Hide todo when the number of tasks after filtering is zero. + typeset -g POWERLEVEL9K_TODO_HIDE_ZERO_FILTERED=false + + # Todo format. The following parameters are available within the expansion. + # + # - P9K_TODO_TOTAL_TASK_COUNT The total number of tasks. + # - P9K_TODO_FILTERED_TASK_COUNT The number of tasks after filtering. + # + # These variables correspond to the last line of the output of `todo.sh -p ls`: + # + # TODO: 24 of 42 tasks shown + # + # Here 24 is P9K_TODO_FILTERED_TASK_COUNT and 42 is P9K_TODO_TOTAL_TASK_COUNT. + # + # typeset -g POWERLEVEL9K_TODO_CONTENT_EXPANSION='$P9K_TODO_FILTERED_TASK_COUNT' + + # Custom icon. + # typeset -g POWERLEVEL9K_TODO_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ###########[ timewarrior: timewarrior tracking status (https://timewarrior.net/) ]############ + # Timewarrior color. + typeset -g POWERLEVEL9K_TIMEWARRIOR_FOREGROUND=255 + typeset -g POWERLEVEL9K_TIMEWARRIOR_BACKGROUND=8 + + # If the tracked task is longer than 24 characters, truncate and append "…". + # Tip: To always display tasks without truncation, delete the following parameter. + # Tip: To hide task names and display just the icon when time tracking is enabled, set the + # value of the following parameter to "". + typeset -g POWERLEVEL9K_TIMEWARRIOR_CONTENT_EXPANSION='${P9K_CONTENT:0:24}${${P9K_CONTENT:24}:+…}' + + # Custom icon. + # typeset -g POWERLEVEL9K_TIMEWARRIOR_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ##############[ taskwarrior: taskwarrior task count (https://taskwarrior.org/) ]############## + # Taskwarrior color. + typeset -g POWERLEVEL9K_TASKWARRIOR_FOREGROUND=0 + typeset -g POWERLEVEL9K_TASKWARRIOR_BACKGROUND=6 + + # Taskwarrior segment format. The following parameters are available within the expansion. + # + # - P9K_TASKWARRIOR_PENDING_COUNT The number of pending tasks: `task +PENDING count`. + # - P9K_TASKWARRIOR_OVERDUE_COUNT The number of overdue tasks: `task +OVERDUE count`. + # + # Zero values are represented as empty parameters. + # + # The default format: + # + # '${P9K_TASKWARRIOR_OVERDUE_COUNT:+"!$P9K_TASKWARRIOR_OVERDUE_COUNT/"}$P9K_TASKWARRIOR_PENDING_COUNT' + # + # typeset -g POWERLEVEL9K_TASKWARRIOR_CONTENT_EXPANSION='$P9K_TASKWARRIOR_PENDING_COUNT' + + # Custom icon. + # typeset -g POWERLEVEL9K_TASKWARRIOR_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ######[ per_directory_history: Oh My Zsh per-directory-history local/global indicator ]####### + # Color when using local/global history. + typeset -g POWERLEVEL9K_PER_DIRECTORY_HISTORY_LOCAL_FOREGROUND=0 + typeset -g POWERLEVEL9K_PER_DIRECTORY_HISTORY_LOCAL_BACKGROUND=5 + typeset -g POWERLEVEL9K_PER_DIRECTORY_HISTORY_GLOBAL_FOREGROUND=0 + typeset -g POWERLEVEL9K_PER_DIRECTORY_HISTORY_GLOBAL_BACKGROUND=3 + + # Tip: Uncomment the next two lines to hide "local"/"global" text and leave just the icon. + # typeset -g POWERLEVEL9K_PER_DIRECTORY_HISTORY_LOCAL_CONTENT_EXPANSION='' + # typeset -g POWERLEVEL9K_PER_DIRECTORY_HISTORY_GLOBAL_CONTENT_EXPANSION='' + + # Custom icon. + # typeset -g POWERLEVEL9K_PER_DIRECTORY_HISTORY_LOCAL_VISUAL_IDENTIFIER_EXPANSION='⭐' + # typeset -g POWERLEVEL9K_PER_DIRECTORY_HISTORY_GLOBAL_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ################################[ cpu_arch: CPU architecture ]################################ + # CPU architecture color. + typeset -g POWERLEVEL9K_CPU_ARCH_FOREGROUND=0 + typeset -g POWERLEVEL9K_CPU_ARCH_BACKGROUND=3 + + # Hide the segment when on a specific CPU architecture. + # typeset -g POWERLEVEL9K_CPU_ARCH_X86_64_CONTENT_EXPANSION= + # typeset -g POWERLEVEL9K_CPU_ARCH_X86_64_VISUAL_IDENTIFIER_EXPANSION= + + # Custom icon. + # typeset -g POWERLEVEL9K_CPU_ARCH_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ##################################[ context: user@hostname ]################################## + # Context color when running with privileges. + typeset -g POWERLEVEL9K_CONTEXT_ROOT_FOREGROUND=1 + typeset -g POWERLEVEL9K_CONTEXT_ROOT_BACKGROUND=0 + # Context color in SSH without privileges. + typeset -g POWERLEVEL9K_CONTEXT_{REMOTE,REMOTE_SUDO}_FOREGROUND=3 + typeset -g POWERLEVEL9K_CONTEXT_{REMOTE,REMOTE_SUDO}_BACKGROUND=0 + # Default context color (no privileges, no SSH). + typeset -g POWERLEVEL9K_CONTEXT_FOREGROUND=3 + typeset -g POWERLEVEL9K_CONTEXT_BACKGROUND=0 + + # Context format when running with privileges: user@hostname. + typeset -g POWERLEVEL9K_CONTEXT_ROOT_TEMPLATE='%n@%m' + # Context format when in SSH without privileges: user@hostname. + typeset -g POWERLEVEL9K_CONTEXT_{REMOTE,REMOTE_SUDO}_TEMPLATE='%n@%m' + # Default context format (no privileges, no SSH): user@hostname. + typeset -g POWERLEVEL9K_CONTEXT_TEMPLATE='%n@%m' + + # Don't show context unless running with privileges or in SSH. + # Tip: Remove the next line to always show context. + typeset -g POWERLEVEL9K_CONTEXT_{DEFAULT,SUDO}_{CONTENT,VISUAL_IDENTIFIER}_EXPANSION= + + # Custom icon. + # typeset -g POWERLEVEL9K_CONTEXT_VISUAL_IDENTIFIER_EXPANSION='⭐' + # Custom prefix. + # typeset -g POWERLEVEL9K_CONTEXT_PREFIX='with ' + + ###[ virtualenv: python virtual environment (https://docs.python.org/3/library/venv.html) ]### + # Python virtual environment color. + typeset -g POWERLEVEL9K_VIRTUALENV_FOREGROUND=0 + typeset -g POWERLEVEL9K_VIRTUALENV_BACKGROUND=4 + # Don't show Python version next to the virtual environment name. + typeset -g POWERLEVEL9K_VIRTUALENV_SHOW_PYTHON_VERSION=false + # If set to "false", won't show virtualenv if pyenv is already shown. + # If set to "if-different", won't show virtualenv if it's the same as pyenv. + typeset -g POWERLEVEL9K_VIRTUALENV_SHOW_WITH_PYENV=false + # Separate environment name from Python version only with a space. + typeset -g POWERLEVEL9K_VIRTUALENV_{LEFT,RIGHT}_DELIMITER= + # Custom icon. + # typeset -g POWERLEVEL9K_VIRTUALENV_VISUAL_IDENTIFIER_EXPANSION='⭐' + + #####################[ anaconda: conda environment (https://conda.io/) ]###################### + # Anaconda environment color. + typeset -g POWERLEVEL9K_ANACONDA_FOREGROUND=0 + typeset -g POWERLEVEL9K_ANACONDA_BACKGROUND=4 + + # Anaconda segment format. The following parameters are available within the expansion. + # + # - CONDA_PREFIX Absolute path to the active Anaconda/Miniconda environment. + # - CONDA_DEFAULT_ENV Name of the active Anaconda/Miniconda environment. + # - CONDA_PROMPT_MODIFIER Configurable prompt modifier (see below). + # - P9K_ANACONDA_PYTHON_VERSION Current python version (python --version). + # + # CONDA_PROMPT_MODIFIER can be configured with the following command: + # + # conda config --set env_prompt '({default_env}) ' + # + # The last argument is a Python format string that can use the following variables: + # + # - prefix The same as CONDA_PREFIX. + # - default_env The same as CONDA_DEFAULT_ENV. + # - name The last segment of CONDA_PREFIX. + # - stacked_env Comma-separated list of names in the environment stack. The first element is + # always the same as default_env. + # + # Note: '({default_env}) ' is the default value of env_prompt. + # + # The default value of POWERLEVEL9K_ANACONDA_CONTENT_EXPANSION expands to $CONDA_PROMPT_MODIFIER + # without the surrounding parentheses, or to the last path component of CONDA_PREFIX if the former + # is empty. + typeset -g POWERLEVEL9K_ANACONDA_CONTENT_EXPANSION='${${${${CONDA_PROMPT_MODIFIER#\(}% }%\)}:-${CONDA_PREFIX:t}}' + + # Custom icon. + # typeset -g POWERLEVEL9K_ANACONDA_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ################[ pyenv: python environment (https://github.com/pyenv/pyenv) ]################ + # Pyenv color. + typeset -g POWERLEVEL9K_PYENV_FOREGROUND=0 + typeset -g POWERLEVEL9K_PYENV_BACKGROUND=4 + # Hide python version if it doesn't come from one of these sources. + typeset -g POWERLEVEL9K_PYENV_SOURCES=(shell local global) + # If set to false, hide python version if it's the same as global: + # $(pyenv version-name) == $(pyenv global). + typeset -g POWERLEVEL9K_PYENV_PROMPT_ALWAYS_SHOW=false + # If set to false, hide python version if it's equal to "system". + typeset -g POWERLEVEL9K_PYENV_SHOW_SYSTEM=true + + # Pyenv segment format. The following parameters are available within the expansion. + # + # - P9K_CONTENT Current pyenv environment (pyenv version-name). + # - P9K_PYENV_PYTHON_VERSION Current python version (python --version). + # + # The default format has the following logic: + # + # 1. Display just "$P9K_CONTENT" if it's equal to "$P9K_PYENV_PYTHON_VERSION" or + # starts with "$P9K_PYENV_PYTHON_VERSION/". + # 2. Otherwise display "$P9K_CONTENT $P9K_PYENV_PYTHON_VERSION". + typeset -g POWERLEVEL9K_PYENV_CONTENT_EXPANSION='${P9K_CONTENT}${${P9K_CONTENT:#$P9K_PYENV_PYTHON_VERSION(|/*)}:+ $P9K_PYENV_PYTHON_VERSION}' + + # Custom icon. + # typeset -g POWERLEVEL9K_PYENV_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ################[ goenv: go environment (https://github.com/syndbg/goenv) ]################ + # Goenv color. + typeset -g POWERLEVEL9K_GOENV_FOREGROUND=0 + typeset -g POWERLEVEL9K_GOENV_BACKGROUND=4 + # Hide go version if it doesn't come from one of these sources. + typeset -g POWERLEVEL9K_GOENV_SOURCES=(shell local global) + # If set to false, hide go version if it's the same as global: + # $(goenv version-name) == $(goenv global). + typeset -g POWERLEVEL9K_GOENV_PROMPT_ALWAYS_SHOW=false + # If set to false, hide go version if it's equal to "system". + typeset -g POWERLEVEL9K_GOENV_SHOW_SYSTEM=true + # Custom icon. + # typeset -g POWERLEVEL9K_GOENV_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ##########[ nodenv: node.js version from nodenv (https://github.com/nodenv/nodenv) ]########## + # Nodenv color. + typeset -g POWERLEVEL9K_NODENV_FOREGROUND=2 + typeset -g POWERLEVEL9K_NODENV_BACKGROUND=0 + # Hide node version if it doesn't come from one of these sources. + typeset -g POWERLEVEL9K_NODENV_SOURCES=(shell local global) + # If set to false, hide node version if it's the same as global: + # $(nodenv version-name) == $(nodenv global). + typeset -g POWERLEVEL9K_NODENV_PROMPT_ALWAYS_SHOW=false + # If set to false, hide node version if it's equal to "system". + typeset -g POWERLEVEL9K_NODENV_SHOW_SYSTEM=true + # Custom icon. + # typeset -g POWERLEVEL9K_NODENV_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ##############[ nvm: node.js version from nvm (https://github.com/nvm-sh/nvm) ]############### + # Nvm color. + typeset -g POWERLEVEL9K_NVM_FOREGROUND=0 + typeset -g POWERLEVEL9K_NVM_BACKGROUND=5 + # If set to false, hide node version if it's the same as default: + # $(nvm version current) == $(nvm version default). + typeset -g POWERLEVEL9K_NVM_PROMPT_ALWAYS_SHOW=false + # If set to false, hide node version if it's equal to "system". + typeset -g POWERLEVEL9K_NVM_SHOW_SYSTEM=true + # Custom icon. + # typeset -g POWERLEVEL9K_NVM_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ############[ nodeenv: node.js environment (https://github.com/ekalinin/nodeenv) ]############ + # Nodeenv color. + typeset -g POWERLEVEL9K_NODEENV_FOREGROUND=2 + typeset -g POWERLEVEL9K_NODEENV_BACKGROUND=0 + # Don't show Node version next to the environment name. + typeset -g POWERLEVEL9K_NODEENV_SHOW_NODE_VERSION=false + # Separate environment name from Node version only with a space. + typeset -g POWERLEVEL9K_NODEENV_{LEFT,RIGHT}_DELIMITER= + # Custom icon. + # typeset -g POWERLEVEL9K_NODEENV_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ##############################[ node_version: node.js version ]############################### + # Node version color. + typeset -g POWERLEVEL9K_NODE_VERSION_FOREGROUND=7 + typeset -g POWERLEVEL9K_NODE_VERSION_BACKGROUND=2 + # Show node version only when in a directory tree containing package.json. + typeset -g POWERLEVEL9K_NODE_VERSION_PROJECT_ONLY=true + # Custom icon. + # typeset -g POWERLEVEL9K_NODE_VERSION_VISUAL_IDENTIFIER_EXPANSION='⭐' + + #######################[ go_version: go version (https://golang.org) ]######################## + # Go version color. + typeset -g POWERLEVEL9K_GO_VERSION_FOREGROUND=255 + typeset -g POWERLEVEL9K_GO_VERSION_BACKGROUND=2 + # Show go version only when in a go project subdirectory. + typeset -g POWERLEVEL9K_GO_VERSION_PROJECT_ONLY=true + # Custom icon. + # typeset -g POWERLEVEL9K_GO_VERSION_VISUAL_IDENTIFIER_EXPANSION='⭐' + + #################[ rust_version: rustc version (https://www.rust-lang.org) ]################## + # Rust version color. + typeset -g POWERLEVEL9K_RUST_VERSION_FOREGROUND=0 + typeset -g POWERLEVEL9K_RUST_VERSION_BACKGROUND=208 + # Show rust version only when in a rust project subdirectory. + typeset -g POWERLEVEL9K_RUST_VERSION_PROJECT_ONLY=true + # Custom icon. + # typeset -g POWERLEVEL9K_RUST_VERSION_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ###############[ dotnet_version: .NET version (https://dotnet.microsoft.com) ]################ + # .NET version color. + typeset -g POWERLEVEL9K_DOTNET_VERSION_FOREGROUND=7 + typeset -g POWERLEVEL9K_DOTNET_VERSION_BACKGROUND=5 + # Show .NET version only when in a .NET project subdirectory. + typeset -g POWERLEVEL9K_DOTNET_VERSION_PROJECT_ONLY=true + # Custom icon. + # typeset -g POWERLEVEL9K_DOTNET_VERSION_VISUAL_IDENTIFIER_EXPANSION='⭐' + + #####################[ php_version: php version (https://www.php.net/) ]###################### + # PHP version color. + typeset -g POWERLEVEL9K_PHP_VERSION_FOREGROUND=0 + typeset -g POWERLEVEL9K_PHP_VERSION_BACKGROUND=5 + # Show PHP version only when in a PHP project subdirectory. + typeset -g POWERLEVEL9K_PHP_VERSION_PROJECT_ONLY=true + # Custom icon. + # typeset -g POWERLEVEL9K_PHP_VERSION_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ##########[ laravel_version: laravel php framework version (https://laravel.com/) ]########### + # Laravel version color. + typeset -g POWERLEVEL9K_LARAVEL_VERSION_FOREGROUND=1 + typeset -g POWERLEVEL9K_LARAVEL_VERSION_BACKGROUND=7 + # Custom icon. + # typeset -g POWERLEVEL9K_LARAVEL_VERSION_VISUAL_IDENTIFIER_EXPANSION='⭐' + + #############[ rbenv: ruby version from rbenv (https://github.com/rbenv/rbenv) ]############## + # Rbenv color. + typeset -g POWERLEVEL9K_RBENV_FOREGROUND=0 + typeset -g POWERLEVEL9K_RBENV_BACKGROUND=1 + # Hide ruby version if it doesn't come from one of these sources. + typeset -g POWERLEVEL9K_RBENV_SOURCES=(shell local global) + # If set to false, hide ruby version if it's the same as global: + # $(rbenv version-name) == $(rbenv global). + typeset -g POWERLEVEL9K_RBENV_PROMPT_ALWAYS_SHOW=false + # If set to false, hide ruby version if it's equal to "system". + typeset -g POWERLEVEL9K_RBENV_SHOW_SYSTEM=true + # Custom icon. + # typeset -g POWERLEVEL9K_RBENV_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ####################[ java_version: java version (https://www.java.com/) ]#################### + # Java version color. + typeset -g POWERLEVEL9K_JAVA_VERSION_FOREGROUND=1 + typeset -g POWERLEVEL9K_JAVA_VERSION_BACKGROUND=7 + # Show java version only when in a java project subdirectory. + typeset -g POWERLEVEL9K_JAVA_VERSION_PROJECT_ONLY=true + # Show brief version. + typeset -g POWERLEVEL9K_JAVA_VERSION_FULL=false + # Custom icon. + # typeset -g POWERLEVEL9K_JAVA_VERSION_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ###[ package: name@version from package.json (https://docs.npmjs.com/files/package.json) ]#### + # Package color. + typeset -g POWERLEVEL9K_PACKAGE_FOREGROUND=0 + typeset -g POWERLEVEL9K_PACKAGE_BACKGROUND=6 + + # Package format. The following parameters are available within the expansion. + # + # - P9K_PACKAGE_NAME The value of `name` field in package.json. + # - P9K_PACKAGE_VERSION The value of `version` field in package.json. + # + # typeset -g POWERLEVEL9K_PACKAGE_CONTENT_EXPANSION='${P9K_PACKAGE_NAME//\%/%%}@${P9K_PACKAGE_VERSION//\%/%%}' + + # Custom icon. + # typeset -g POWERLEVEL9K_PACKAGE_VISUAL_IDENTIFIER_EXPANSION='⭐' + + #######################[ rvm: ruby version from rvm (https://rvm.io) ]######################## + # Rvm color. + typeset -g POWERLEVEL9K_RVM_FOREGROUND=0 + typeset -g POWERLEVEL9K_RVM_BACKGROUND=240 + # Don't show @gemset at the end. + typeset -g POWERLEVEL9K_RVM_SHOW_GEMSET=false + # Don't show ruby- at the front. + typeset -g POWERLEVEL9K_RVM_SHOW_PREFIX=false + # Custom icon. + # typeset -g POWERLEVEL9K_RVM_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ###########[ fvm: flutter version management (https://github.com/leoafarias/fvm) ]############ + # Fvm color. + typeset -g POWERLEVEL9K_FVM_FOREGROUND=0 + typeset -g POWERLEVEL9K_FVM_BACKGROUND=4 + # Custom icon. + # typeset -g POWERLEVEL9K_FVM_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ##########[ luaenv: lua version from luaenv (https://github.com/cehoffman/luaenv) ]########### + # Lua color. + typeset -g POWERLEVEL9K_LUAENV_FOREGROUND=0 + typeset -g POWERLEVEL9K_LUAENV_BACKGROUND=4 + # Hide lua version if it doesn't come from one of these sources. + typeset -g POWERLEVEL9K_LUAENV_SOURCES=(shell local global) + # If set to false, hide lua version if it's the same as global: + # $(luaenv version-name) == $(luaenv global). + typeset -g POWERLEVEL9K_LUAENV_PROMPT_ALWAYS_SHOW=false + # If set to false, hide lua version if it's equal to "system". + typeset -g POWERLEVEL9K_LUAENV_SHOW_SYSTEM=true + # Custom icon. + # typeset -g POWERLEVEL9K_LUAENV_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ###############[ jenv: java version from jenv (https://github.com/jenv/jenv) ]################ + # Java color. + typeset -g POWERLEVEL9K_JENV_FOREGROUND=1 + typeset -g POWERLEVEL9K_JENV_BACKGROUND=7 + # Hide java version if it doesn't come from one of these sources. + typeset -g POWERLEVEL9K_JENV_SOURCES=(shell local global) + # If set to false, hide java version if it's the same as global: + # $(jenv version-name) == $(jenv global). + typeset -g POWERLEVEL9K_JENV_PROMPT_ALWAYS_SHOW=false + # If set to false, hide java version if it's equal to "system". + typeset -g POWERLEVEL9K_JENV_SHOW_SYSTEM=true + # Custom icon. + # typeset -g POWERLEVEL9K_JENV_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ###########[ plenv: perl version from plenv (https://github.com/tokuhirom/plenv) ]############ + # Perl color. + typeset -g POWERLEVEL9K_PLENV_FOREGROUND=0 + typeset -g POWERLEVEL9K_PLENV_BACKGROUND=4 + # Hide perl version if it doesn't come from one of these sources. + typeset -g POWERLEVEL9K_PLENV_SOURCES=(shell local global) + # If set to false, hide perl version if it's the same as global: + # $(plenv version-name) == $(plenv global). + typeset -g POWERLEVEL9K_PLENV_PROMPT_ALWAYS_SHOW=false + # If set to false, hide perl version if it's equal to "system". + typeset -g POWERLEVEL9K_PLENV_SHOW_SYSTEM=true + # Custom icon. + # typeset -g POWERLEVEL9K_PLENV_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ###########[ perlbrew: perl version from perlbrew (https://github.com/gugod/App-perlbrew) ]############ + # Perlbrew color. + typeset -g POWERLEVEL9K_PERLBREW_FOREGROUND=67 + # Show perlbrew version only when in a perl project subdirectory. + typeset -g POWERLEVEL9K_PERLBREW_PROJECT_ONLY=true + # Don't show "perl-" at the front. + typeset -g POWERLEVEL9K_PERLBREW_SHOW_PREFIX=false + # Custom icon. + # typeset -g POWERLEVEL9K_PERLBREW_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ############[ phpenv: php version from phpenv (https://github.com/phpenv/phpenv) ]############ + # PHP color. + typeset -g POWERLEVEL9K_PHPENV_FOREGROUND=0 + typeset -g POWERLEVEL9K_PHPENV_BACKGROUND=5 + # Hide php version if it doesn't come from one of these sources. + typeset -g POWERLEVEL9K_PHPENV_SOURCES=(shell local global) + # If set to false, hide php version if it's the same as global: + # $(phpenv version-name) == $(phpenv global). + typeset -g POWERLEVEL9K_PHPENV_PROMPT_ALWAYS_SHOW=false + # If set to false, hide PHP version if it's equal to "system". + typeset -g POWERLEVEL9K_PHPENV_SHOW_SYSTEM=true + # Custom icon. + # typeset -g POWERLEVEL9K_PHPENV_VISUAL_IDENTIFIER_EXPANSION='⭐' + + #######[ scalaenv: scala version from scalaenv (https://github.com/scalaenv/scalaenv) ]####### + # Scala color. + typeset -g POWERLEVEL9K_SCALAENV_FOREGROUND=0 + typeset -g POWERLEVEL9K_SCALAENV_BACKGROUND=1 + # Hide scala version if it doesn't come from one of these sources. + typeset -g POWERLEVEL9K_SCALAENV_SOURCES=(shell local global) + # If set to false, hide scala version if it's the same as global: + # $(scalaenv version-name) == $(scalaenv global). + typeset -g POWERLEVEL9K_SCALAENV_PROMPT_ALWAYS_SHOW=false + # If set to false, hide scala version if it's equal to "system". + typeset -g POWERLEVEL9K_SCALAENV_SHOW_SYSTEM=true + # Custom icon. + # typeset -g POWERLEVEL9K_SCALAENV_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ##########[ haskell_stack: haskell version from stack (https://haskellstack.org/) ]########### + # Haskell color. + typeset -g POWERLEVEL9K_HASKELL_STACK_FOREGROUND=0 + typeset -g POWERLEVEL9K_HASKELL_STACK_BACKGROUND=3 + + # Hide haskell version if it doesn't come from one of these sources. + # + # shell: version is set by STACK_YAML + # local: version is set by stack.yaml up the directory tree + # global: version is set by the implicit global project (~/.stack/global-project/stack.yaml) + typeset -g POWERLEVEL9K_HASKELL_STACK_SOURCES=(shell local) + # If set to false, hide haskell version if it's the same as in the implicit global project. + typeset -g POWERLEVEL9K_HASKELL_STACK_ALWAYS_SHOW=true + # Custom icon. + # typeset -g POWERLEVEL9K_HASKELL_STACK_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ################[ terraform: terraform workspace (https://www.terraform.io) ]################# + # Don't show terraform workspace if it's literally "default". + typeset -g POWERLEVEL9K_TERRAFORM_SHOW_DEFAULT=false + # POWERLEVEL9K_TERRAFORM_CLASSES is an array with even number of elements. The first element + # in each pair defines a pattern against which the current terraform workspace gets matched. + # More specifically, it's P9K_CONTENT prior to the application of context expansion (see below) + # that gets matched. If you unset all POWERLEVEL9K_TERRAFORM_*CONTENT_EXPANSION parameters, + # you'll see this value in your prompt. The second element of each pair in + # POWERLEVEL9K_TERRAFORM_CLASSES defines the workspace class. Patterns are tried in order. The + # first match wins. + # + # For example, given these settings: + # + # typeset -g POWERLEVEL9K_TERRAFORM_CLASSES=( + # '*prod*' PROD + # '*test*' TEST + # '*' OTHER) + # + # If your current terraform workspace is "project_test", its class is TEST because "project_test" + # doesn't match the pattern '*prod*' but does match '*test*'. + # + # You can define different colors, icons and content expansions for different classes: + # + # typeset -g POWERLEVEL9K_TERRAFORM_TEST_FOREGROUND=2 + # typeset -g POWERLEVEL9K_TERRAFORM_TEST_BACKGROUND=0 + # typeset -g POWERLEVEL9K_TERRAFORM_TEST_VISUAL_IDENTIFIER_EXPANSION='⭐' + # typeset -g POWERLEVEL9K_TERRAFORM_TEST_CONTENT_EXPANSION='> ${P9K_CONTENT} <' + typeset -g POWERLEVEL9K_TERRAFORM_CLASSES=( + # '*prod*' PROD # These values are examples that are unlikely + # '*test*' TEST # to match your needs. Customize them as needed. + '*' OTHER) + typeset -g POWERLEVEL9K_TERRAFORM_OTHER_FOREGROUND=4 + typeset -g POWERLEVEL9K_TERRAFORM_OTHER_BACKGROUND=0 + # typeset -g POWERLEVEL9K_TERRAFORM_OTHER_VISUAL_IDENTIFIER_EXPANSION='⭐' + + #############[ terraform_version: terraform version (https://www.terraform.io) ]############## + # Terraform version color. + typeset -g POWERLEVEL9K_TERRAFORM_VERSION_FOREGROUND=4 + typeset -g POWERLEVEL9K_TERRAFORM_VERSION_BACKGROUND=0 + # Custom icon. + # typeset -g POWERLEVEL9K_TERRAFORM_VERSION_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ################[ terraform_version: It shows active terraform version (https://www.terraform.io) ]################# + typeset -g POWERLEVEL9K_TERRAFORM_VERSION_SHOW_ON_COMMAND='terraform|tf' + + #############[ kubecontext: current kubernetes context (https://kubernetes.io/) ]############# + # Show kubecontext only when the command you are typing invokes one of these tools. + # Tip: Remove the next line to always show kubecontext. + typeset -g POWERLEVEL9K_KUBECONTEXT_SHOW_ON_COMMAND='kubectl|helm|kubens|kubectx|oc|istioctl|kogito|k9s|helmfile|flux|fluxctl|stern|kubeseal|skaffold|kubent|kubecolor|cmctl|sparkctl' + + # Kubernetes context classes for the purpose of using different colors, icons and expansions with + # different contexts. + # + # POWERLEVEL9K_KUBECONTEXT_CLASSES is an array with even number of elements. The first element + # in each pair defines a pattern against which the current kubernetes context gets matched. + # More specifically, it's P9K_CONTENT prior to the application of context expansion (see below) + # that gets matched. If you unset all POWERLEVEL9K_KUBECONTEXT_*CONTENT_EXPANSION parameters, + # you'll see this value in your prompt. The second element of each pair in + # POWERLEVEL9K_KUBECONTEXT_CLASSES defines the context class. Patterns are tried in order. The + # first match wins. + # + # For example, given these settings: + # + # typeset -g POWERLEVEL9K_KUBECONTEXT_CLASSES=( + # '*prod*' PROD + # '*test*' TEST + # '*' DEFAULT) + # + # If your current kubernetes context is "deathray-testing/default", its class is TEST + # because "deathray-testing/default" doesn't match the pattern '*prod*' but does match '*test*'. + # + # You can define different colors, icons and content expansions for different classes: + # + # typeset -g POWERLEVEL9K_KUBECONTEXT_TEST_FOREGROUND=0 + # typeset -g POWERLEVEL9K_KUBECONTEXT_TEST_BACKGROUND=2 + # typeset -g POWERLEVEL9K_KUBECONTEXT_TEST_VISUAL_IDENTIFIER_EXPANSION='⭐' + # typeset -g POWERLEVEL9K_KUBECONTEXT_TEST_CONTENT_EXPANSION='> ${P9K_CONTENT} <' + typeset -g POWERLEVEL9K_KUBECONTEXT_CLASSES=( + # '*prod*' PROD # These values are examples that are unlikely + # '*test*' TEST # to match your needs. Customize them as needed. + '*' DEFAULT) + typeset -g POWERLEVEL9K_KUBECONTEXT_DEFAULT_FOREGROUND=7 + typeset -g POWERLEVEL9K_KUBECONTEXT_DEFAULT_BACKGROUND=5 + # typeset -g POWERLEVEL9K_KUBECONTEXT_DEFAULT_VISUAL_IDENTIFIER_EXPANSION='⭐' + + # Use POWERLEVEL9K_KUBECONTEXT_CONTENT_EXPANSION to specify the content displayed by kubecontext + # segment. Parameter expansions are very flexible and fast, too. See reference: + # http://zsh.sourceforge.net/Doc/Release/Expansion.html#Parameter-Expansion. + # + # Within the expansion the following parameters are always available: + # + # - P9K_CONTENT The content that would've been displayed if there was no content + # expansion defined. + # - P9K_KUBECONTEXT_NAME The current context's name. Corresponds to column NAME in the + # output of `kubectl config get-contexts`. + # - P9K_KUBECONTEXT_CLUSTER The current context's cluster. Corresponds to column CLUSTER in the + # output of `kubectl config get-contexts`. + # - P9K_KUBECONTEXT_NAMESPACE The current context's namespace. Corresponds to column NAMESPACE + # in the output of `kubectl config get-contexts`. If there is no + # namespace, the parameter is set to "default". + # - P9K_KUBECONTEXT_USER The current context's user. Corresponds to column AUTHINFO in the + # output of `kubectl config get-contexts`. + # + # If the context points to Google Kubernetes Engine (GKE) or Elastic Kubernetes Service (EKS), + # the following extra parameters are available: + # + # - P9K_KUBECONTEXT_CLOUD_NAME Either "gke" or "eks". + # - P9K_KUBECONTEXT_CLOUD_ACCOUNT Account/project ID. + # - P9K_KUBECONTEXT_CLOUD_ZONE Availability zone. + # - P9K_KUBECONTEXT_CLOUD_CLUSTER Cluster. + # + # P9K_KUBECONTEXT_CLOUD_* parameters are derived from P9K_KUBECONTEXT_CLUSTER. For example, + # if P9K_KUBECONTEXT_CLUSTER is "gke_my-account_us-east1-a_my-cluster-01": + # + # - P9K_KUBECONTEXT_CLOUD_NAME=gke + # - P9K_KUBECONTEXT_CLOUD_ACCOUNT=my-account + # - P9K_KUBECONTEXT_CLOUD_ZONE=us-east1-a + # - P9K_KUBECONTEXT_CLOUD_CLUSTER=my-cluster-01 + # + # If P9K_KUBECONTEXT_CLUSTER is "arn:aws:eks:us-east-1:123456789012:cluster/my-cluster-01": + # + # - P9K_KUBECONTEXT_CLOUD_NAME=eks + # - P9K_KUBECONTEXT_CLOUD_ACCOUNT=123456789012 + # - P9K_KUBECONTEXT_CLOUD_ZONE=us-east-1 + # - P9K_KUBECONTEXT_CLOUD_CLUSTER=my-cluster-01 + typeset -g POWERLEVEL9K_KUBECONTEXT_DEFAULT_CONTENT_EXPANSION= + # Show P9K_KUBECONTEXT_CLOUD_CLUSTER if it's not empty and fall back to P9K_KUBECONTEXT_NAME. + POWERLEVEL9K_KUBECONTEXT_DEFAULT_CONTENT_EXPANSION+='${P9K_KUBECONTEXT_CLOUD_CLUSTER:-${P9K_KUBECONTEXT_NAME}}' + # Append the current context's namespace if it's not "default". + POWERLEVEL9K_KUBECONTEXT_DEFAULT_CONTENT_EXPANSION+='${${:-/$P9K_KUBECONTEXT_NAMESPACE}:#/default}' + + # Custom prefix. + # typeset -g POWERLEVEL9K_KUBECONTEXT_PREFIX='at ' + + #[ aws: aws profile (https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-profiles.html) ]# + # Show aws only when the command you are typing invokes one of these tools. + # Tip: Remove the next line to always show aws. + typeset -g POWERLEVEL9K_AWS_SHOW_ON_COMMAND='aws|awless|cdk|terraform|pulumi|terragrunt' + + # POWERLEVEL9K_AWS_CLASSES is an array with even number of elements. The first element + # in each pair defines a pattern against which the current AWS profile gets matched. + # More specifically, it's P9K_CONTENT prior to the application of context expansion (see below) + # that gets matched. If you unset all POWERLEVEL9K_AWS_*CONTENT_EXPANSION parameters, + # you'll see this value in your prompt. The second element of each pair in + # POWERLEVEL9K_AWS_CLASSES defines the profile class. Patterns are tried in order. The + # first match wins. + # + # For example, given these settings: + # + # typeset -g POWERLEVEL9K_AWS_CLASSES=( + # '*prod*' PROD + # '*test*' TEST + # '*' DEFAULT) + # + # If your current AWS profile is "company_test", its class is TEST + # because "company_test" doesn't match the pattern '*prod*' but does match '*test*'. + # + # You can define different colors, icons and content expansions for different classes: + # + # typeset -g POWERLEVEL9K_AWS_TEST_FOREGROUND=28 + # typeset -g POWERLEVEL9K_AWS_TEST_VISUAL_IDENTIFIER_EXPANSION='⭐' + # typeset -g POWERLEVEL9K_AWS_TEST_CONTENT_EXPANSION='> ${P9K_CONTENT} <' + typeset -g POWERLEVEL9K_AWS_CLASSES=( + # '*prod*' PROD # These values are examples that are unlikely + # '*test*' TEST # to match your needs. Customize them as needed. + '*' DEFAULT) + typeset -g POWERLEVEL9K_AWS_DEFAULT_FOREGROUND=7 + typeset -g POWERLEVEL9K_AWS_DEFAULT_BACKGROUND=1 + # typeset -g POWERLEVEL9K_AWS_DEFAULT_VISUAL_IDENTIFIER_EXPANSION='⭐' + + # AWS segment format. The following parameters are available within the expansion. + # + # - P9K_AWS_PROFILE The name of the current AWS profile. + # - P9K_AWS_REGION The region associated with the current AWS profile. + typeset -g POWERLEVEL9K_AWS_CONTENT_EXPANSION='${P9K_AWS_PROFILE//\%/%%}${P9K_AWS_REGION:+ ${P9K_AWS_REGION//\%/%%}}' + + #[ aws_eb_env: aws elastic beanstalk environment (https://aws.amazon.com/elasticbeanstalk/) ]# + # AWS Elastic Beanstalk environment color. + typeset -g POWERLEVEL9K_AWS_EB_ENV_FOREGROUND=2 + typeset -g POWERLEVEL9K_AWS_EB_ENV_BACKGROUND=0 + # Custom icon. + # typeset -g POWERLEVEL9K_AWS_EB_ENV_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ##########[ azure: azure account name (https://docs.microsoft.com/en-us/cli/azure) ]########## + # Show azure only when the command you are typing invokes one of these tools. + # Tip: Remove the next line to always show azure. + typeset -g POWERLEVEL9K_AZURE_SHOW_ON_COMMAND='az|terraform|pulumi|terragrunt' + + # POWERLEVEL9K_AZURE_CLASSES is an array with even number of elements. The first element + # in each pair defines a pattern against which the current azure account name gets matched. + # More specifically, it's P9K_CONTENT prior to the application of context expansion (see below) + # that gets matched. If you unset all POWERLEVEL9K_AZURE_*CONTENT_EXPANSION parameters, + # you'll see this value in your prompt. The second element of each pair in + # POWERLEVEL9K_AZURE_CLASSES defines the account class. Patterns are tried in order. The + # first match wins. + # + # For example, given these settings: + # + # typeset -g POWERLEVEL9K_AZURE_CLASSES=( + # '*prod*' PROD + # '*test*' TEST + # '*' OTHER) + # + # If your current azure account is "company_test", its class is TEST because "company_test" + # doesn't match the pattern '*prod*' but does match '*test*'. + # + # You can define different colors, icons and content expansions for different classes: + # + # typeset -g POWERLEVEL9K_AZURE_TEST_FOREGROUND=2 + # typeset -g POWERLEVEL9K_AZURE_TEST_BACKGROUND=0 + # typeset -g POWERLEVEL9K_AZURE_TEST_VISUAL_IDENTIFIER_EXPANSION='⭐' + # typeset -g POWERLEVEL9K_AZURE_TEST_CONTENT_EXPANSION='> ${P9K_CONTENT} <' + typeset -g POWERLEVEL9K_AZURE_CLASSES=( + # '*prod*' PROD # These values are examples that are unlikely + # '*test*' TEST # to match your needs. Customize them as needed. + '*' OTHER) + + # Azure account name color. + typeset -g POWERLEVEL9K_AZURE_OTHER_FOREGROUND=7 + typeset -g POWERLEVEL9K_AZURE_OTHER_BACKGROUND=4 + # Custom icon. + # typeset -g POWERLEVEL9K_AZURE_OTHER_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ##########[ gcloud: google cloud account and project (https://cloud.google.com/) ]########### + # Show gcloud only when the command you are typing invokes one of these tools. + # Tip: Remove the next line to always show gcloud. + typeset -g POWERLEVEL9K_GCLOUD_SHOW_ON_COMMAND='gcloud|gcs|gsutil' + # Google cloud color. + typeset -g POWERLEVEL9K_GCLOUD_FOREGROUND=7 + typeset -g POWERLEVEL9K_GCLOUD_BACKGROUND=4 + + # Google cloud format. Change the value of POWERLEVEL9K_GCLOUD_PARTIAL_CONTENT_EXPANSION and/or + # POWERLEVEL9K_GCLOUD_COMPLETE_CONTENT_EXPANSION if the default is too verbose or not informative + # enough. You can use the following parameters in the expansions. Each of them corresponds to the + # output of `gcloud` tool. + # + # Parameter | Source + # -------------------------|-------------------------------------------------------------------- + # P9K_GCLOUD_CONFIGURATION | gcloud config configurations list --format='value(name)' + # P9K_GCLOUD_ACCOUNT | gcloud config get-value account + # P9K_GCLOUD_PROJECT_ID | gcloud config get-value project + # P9K_GCLOUD_PROJECT_NAME | gcloud projects describe $P9K_GCLOUD_PROJECT_ID --format='value(name)' + # + # Note: ${VARIABLE//\%/%%} expands to ${VARIABLE} with all occurrences of '%' replaced with '%%'. + # + # Obtaining project name requires sending a request to Google servers. This can take a long time + # and even fail. When project name is unknown, P9K_GCLOUD_PROJECT_NAME is not set and gcloud + # prompt segment is in state PARTIAL. When project name gets known, P9K_GCLOUD_PROJECT_NAME gets + # set and gcloud prompt segment transitions to state COMPLETE. + # + # You can customize the format, icon and colors of gcloud segment separately for states PARTIAL + # and COMPLETE. You can also hide gcloud in state PARTIAL by setting + # POWERLEVEL9K_GCLOUD_PARTIAL_VISUAL_IDENTIFIER_EXPANSION and + # POWERLEVEL9K_GCLOUD_PARTIAL_CONTENT_EXPANSION to empty. + typeset -g POWERLEVEL9K_GCLOUD_PARTIAL_CONTENT_EXPANSION='${P9K_GCLOUD_PROJECT_ID//\%/%%}' + typeset -g POWERLEVEL9K_GCLOUD_COMPLETE_CONTENT_EXPANSION='${P9K_GCLOUD_PROJECT_NAME//\%/%%}' + + # Send a request to Google (by means of `gcloud projects describe ...`) to obtain project name + # this often. Negative value disables periodic polling. In this mode project name is retrieved + # only when the current configuration, account or project id changes. + typeset -g POWERLEVEL9K_GCLOUD_REFRESH_PROJECT_NAME_SECONDS=60 + + # Custom icon. + # typeset -g POWERLEVEL9K_GCLOUD_VISUAL_IDENTIFIER_EXPANSION='⭐' + + #[ google_app_cred: google application credentials (https://cloud.google.com/docs/authentication/production) ]# + # Show google_app_cred only when the command you are typing invokes one of these tools. + # Tip: Remove the next line to always show google_app_cred. + typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_SHOW_ON_COMMAND='terraform|pulumi|terragrunt' + + # Google application credentials classes for the purpose of using different colors, icons and + # expansions with different credentials. + # + # POWERLEVEL9K_GOOGLE_APP_CRED_CLASSES is an array with even number of elements. The first + # element in each pair defines a pattern against which the current kubernetes context gets + # matched. More specifically, it's P9K_CONTENT prior to the application of context expansion + # (see below) that gets matched. If you unset all POWERLEVEL9K_GOOGLE_APP_CRED_*CONTENT_EXPANSION + # parameters, you'll see this value in your prompt. The second element of each pair in + # POWERLEVEL9K_GOOGLE_APP_CRED_CLASSES defines the context class. Patterns are tried in order. + # The first match wins. + # + # For example, given these settings: + # + # typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_CLASSES=( + # '*:*prod*:*' PROD + # '*:*test*:*' TEST + # '*' DEFAULT) + # + # If your current Google application credentials is "service_account deathray-testing x@y.com", + # its class is TEST because it doesn't match the pattern '* *prod* *' but does match '* *test* *'. + # + # You can define different colors, icons and content expansions for different classes: + # + # typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_TEST_FOREGROUND=28 + # typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_TEST_VISUAL_IDENTIFIER_EXPANSION='⭐' + # typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_TEST_CONTENT_EXPANSION='$P9K_GOOGLE_APP_CRED_PROJECT_ID' + typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_CLASSES=( + # '*:*prod*:*' PROD # These values are examples that are unlikely + # '*:*test*:*' TEST # to match your needs. Customize them as needed. + '*' DEFAULT) + typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_DEFAULT_FOREGROUND=7 + typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_DEFAULT_BACKGROUND=4 + # typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_DEFAULT_VISUAL_IDENTIFIER_EXPANSION='⭐' + + # Use POWERLEVEL9K_GOOGLE_APP_CRED_CONTENT_EXPANSION to specify the content displayed by + # google_app_cred segment. Parameter expansions are very flexible and fast, too. See reference: + # http://zsh.sourceforge.net/Doc/Release/Expansion.html#Parameter-Expansion. + # + # You can use the following parameters in the expansion. Each of them corresponds to one of the + # fields in the JSON file pointed to by GOOGLE_APPLICATION_CREDENTIALS. + # + # Parameter | JSON key file field + # ---------------------------------+--------------- + # P9K_GOOGLE_APP_CRED_TYPE | type + # P9K_GOOGLE_APP_CRED_PROJECT_ID | project_id + # P9K_GOOGLE_APP_CRED_CLIENT_EMAIL | client_email + # + # Note: ${VARIABLE//\%/%%} expands to ${VARIABLE} with all occurrences of '%' replaced by '%%'. + typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_DEFAULT_CONTENT_EXPANSION='${P9K_GOOGLE_APP_CRED_PROJECT_ID//\%/%%}' + + ##############[ toolbox: toolbox name (https://github.com/containers/toolbox) ]############### + # Toolbox color. + typeset -g POWERLEVEL9K_TOOLBOX_FOREGROUND=0 + typeset -g POWERLEVEL9K_TOOLBOX_BACKGROUND=3 + # Don't display the name of the toolbox if it matches fedora-toolbox-*. + typeset -g POWERLEVEL9K_TOOLBOX_CONTENT_EXPANSION='${P9K_TOOLBOX_NAME:#fedora-toolbox-*}' + # Custom icon. + # typeset -g POWERLEVEL9K_TOOLBOX_VISUAL_IDENTIFIER_EXPANSION='⭐' + # Custom prefix. + # typeset -g POWERLEVEL9K_TOOLBOX_PREFIX='in ' + + ###############################[ public_ip: public IP address ]############################### + # Public IP color. + typeset -g POWERLEVEL9K_PUBLIC_IP_FOREGROUND=7 + typeset -g POWERLEVEL9K_PUBLIC_IP_BACKGROUND=0 + # Custom icon. + # typeset -g POWERLEVEL9K_PUBLIC_IP_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ########################[ vpn_ip: virtual private network indicator ]######################### + # VPN IP color. + typeset -g POWERLEVEL9K_VPN_IP_FOREGROUND=0 + typeset -g POWERLEVEL9K_VPN_IP_BACKGROUND=6 + # When on VPN, show just an icon without the IP address. + # Tip: To display the private IP address when on VPN, remove the next line. + typeset -g POWERLEVEL9K_VPN_IP_CONTENT_EXPANSION= + # Regular expression for the VPN network interface. Run `ifconfig` or `ip -4 a show` while on VPN + # to see the name of the interface. + typeset -g POWERLEVEL9K_VPN_IP_INTERFACE='(gpd|wg|(.*tun)|tailscale)[0-9]*|(zt.*)' + # If set to true, show one segment per matching network interface. If set to false, show only + # one segment corresponding to the first matching network interface. + # Tip: If you set it to true, you'll probably want to unset POWERLEVEL9K_VPN_IP_CONTENT_EXPANSION. + typeset -g POWERLEVEL9K_VPN_IP_SHOW_ALL=false + # Custom icon. + # typeset -g POWERLEVEL9K_VPN_IP_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ###########[ ip: ip address and bandwidth usage for a specified network interface ]########### + # IP color. + typeset -g POWERLEVEL9K_IP_BACKGROUND=4 + typeset -g POWERLEVEL9K_IP_FOREGROUND=0 + # The following parameters are accessible within the expansion: + # + # Parameter | Meaning + # ----------------------+------------------------------------------- + # P9K_IP_IP | IP address + # P9K_IP_INTERFACE | network interface + # P9K_IP_RX_BYTES | total number of bytes received + # P9K_IP_TX_BYTES | total number of bytes sent + # P9K_IP_RX_BYTES_DELTA | number of bytes received since last prompt + # P9K_IP_TX_BYTES_DELTA | number of bytes sent since last prompt + # P9K_IP_RX_RATE | receive rate (since last prompt) + # P9K_IP_TX_RATE | send rate (since last prompt) + typeset -g POWERLEVEL9K_IP_CONTENT_EXPANSION='${P9K_IP_RX_RATE:+⇣$P9K_IP_RX_RATE }${P9K_IP_TX_RATE:+⇡$P9K_IP_TX_RATE }$P9K_IP_IP' + # Show information for the first network interface whose name matches this regular expression. + # Run `ifconfig` or `ip -4 a show` to see the names of all network interfaces. + typeset -g POWERLEVEL9K_IP_INTERFACE='[ew].*' + # Custom icon. + # typeset -g POWERLEVEL9K_IP_VISUAL_IDENTIFIER_EXPANSION='⭐' + + #########################[ proxy: system-wide http/https/ftp proxy ]########################## + # Proxy color. + typeset -g POWERLEVEL9K_PROXY_FOREGROUND=4 + typeset -g POWERLEVEL9K_PROXY_BACKGROUND=0 + # Custom icon. + # typeset -g POWERLEVEL9K_PROXY_VISUAL_IDENTIFIER_EXPANSION='⭐' + + ################################[ battery: internal battery ]################################# + # Show battery in red when it's below this level and not connected to power supply. + typeset -g POWERLEVEL9K_BATTERY_LOW_THRESHOLD=20 + typeset -g POWERLEVEL9K_BATTERY_LOW_FOREGROUND=1 + # Show battery in green when it's charging or fully charged. + typeset -g POWERLEVEL9K_BATTERY_{CHARGING,CHARGED}_FOREGROUND=2 + # Show battery in yellow when it's discharging. + typeset -g POWERLEVEL9K_BATTERY_DISCONNECTED_FOREGROUND=3 + # Battery pictograms going from low to high level of charge. + typeset -g POWERLEVEL9K_BATTERY_STAGES='\uf58d\uf579\uf57a\uf57b\uf57c\uf57d\uf57e\uf57f\uf580\uf581\uf578' + # Don't show the remaining time to charge/discharge. + typeset -g POWERLEVEL9K_BATTERY_VERBOSE=false + typeset -g POWERLEVEL9K_BATTERY_BACKGROUND=0 + + #####################################[ wifi: wifi speed ]##################################### + # WiFi color. + typeset -g POWERLEVEL9K_WIFI_FOREGROUND=0 + typeset -g POWERLEVEL9K_WIFI_BACKGROUND=4 + # Custom icon. + # typeset -g POWERLEVEL9K_WIFI_VISUAL_IDENTIFIER_EXPANSION='⭐' + + # Use different colors and icons depending on signal strength ($P9K_WIFI_BARS). + # + # # Wifi colors and icons for different signal strength levels (low to high). + # typeset -g my_wifi_fg=(0 0 0 0 0) # <-- change these values + # typeset -g my_wifi_icon=('WiFi' 'WiFi' 'WiFi' 'WiFi' 'WiFi') # <-- change these values + # + # typeset -g POWERLEVEL9K_WIFI_CONTENT_EXPANSION='%F{${my_wifi_fg[P9K_WIFI_BARS+1]}}$P9K_WIFI_LAST_TX_RATE Mbps' + # typeset -g POWERLEVEL9K_WIFI_VISUAL_IDENTIFIER_EXPANSION='%F{${my_wifi_fg[P9K_WIFI_BARS+1]}}${my_wifi_icon[P9K_WIFI_BARS+1]}' + # + # The following parameters are accessible within the expansions: + # + # Parameter | Meaning + # ----------------------+--------------- + # P9K_WIFI_SSID | service set identifier, a.k.a. network name + # P9K_WIFI_LINK_AUTH | authentication protocol such as "wpa2-psk" or "none"; empty if unknown + # P9K_WIFI_LAST_TX_RATE | wireless transmit rate in megabits per second + # P9K_WIFI_RSSI | signal strength in dBm, from -120 to 0 + # P9K_WIFI_NOISE | noise in dBm, from -120 to 0 + # P9K_WIFI_BARS | signal strength in bars, from 0 to 4 (derived from P9K_WIFI_RSSI and P9K_WIFI_NOISE) + + ####################################[ time: current time ]#################################### + # Current time color. + typeset -g POWERLEVEL9K_TIME_FOREGROUND=0 + typeset -g POWERLEVEL9K_TIME_BACKGROUND=7 + # Format for the current time: 09:51:02. See `man 3 strftime`. + typeset -g POWERLEVEL9K_TIME_FORMAT='%D{%H:%M:%S}' + # If set to true, time will update when you hit enter. This way prompts for the past + # commands will contain the start times of their commands as opposed to the default + # behavior where they contain the end times of their preceding commands. + typeset -g POWERLEVEL9K_TIME_UPDATE_ON_COMMAND=false + # Custom icon. + # typeset -g POWERLEVEL9K_TIME_VISUAL_IDENTIFIER_EXPANSION='⭐' + # Custom prefix. + # typeset -g POWERLEVEL9K_TIME_PREFIX='at ' + + # Example of a user-defined prompt segment. Function prompt_example will be called on every + # prompt if `example` prompt segment is added to POWERLEVEL9K_LEFT_PROMPT_ELEMENTS or + # POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS. It displays an icon and yellow text on red background + # greeting the user. + # + # Type `p10k help segment` for documentation and a more sophisticated example. + function prompt_example() { + p10k segment -b 1 -f 3 -i '⭐' -t 'hello, %n' + } + + # User-defined prompt segments may optionally provide an instant_prompt_* function. Its job + # is to generate the prompt segment for display in instant prompt. See + # https://github.com/romkatv/powerlevel10k/blob/master/README.md#instant-prompt. + # + # Powerlevel10k will call instant_prompt_* at the same time as the regular prompt_* function + # and will record all `p10k segment` calls it makes. When displaying instant prompt, Powerlevel10k + # will replay these calls without actually calling instant_prompt_*. It is imperative that + # instant_prompt_* always makes the same `p10k segment` calls regardless of environment. If this + # rule is not observed, the content of instant prompt will be incorrect. + # + # Usually, you should either not define instant_prompt_* or simply call prompt_* from it. If + # instant_prompt_* is not defined for a segment, the segment won't be shown in instant prompt. + function instant_prompt_example() { + # Since prompt_example always makes the same `p10k segment` calls, we can call it from + # instant_prompt_example. This will give us the same `example` prompt segment in the instant + # and regular prompts. + prompt_example + } + + # User-defined prompt segments can be customized the same way as built-in segments. + typeset -g POWERLEVEL9K_EXAMPLE_FOREGROUND=3 + typeset -g POWERLEVEL9K_EXAMPLE_BACKGROUND=1 + # typeset -g POWERLEVEL9K_EXAMPLE_VISUAL_IDENTIFIER_EXPANSION='⭐' + + # Transient prompt works similarly to the builtin transient_rprompt option. It trims down prompt + # when accepting a command line. Supported values: + # + # - off: Don't change prompt when accepting a command line. + # - always: Trim down prompt when accepting a command line. + # - same-dir: Trim down prompt when accepting a command line unless this is the first command + # typed after changing current working directory. + typeset -g POWERLEVEL9K_TRANSIENT_PROMPT=always + + # Instant prompt mode. + # + # - off: Disable instant prompt. Choose this if you've tried instant prompt and found + # it incompatible with your zsh configuration files. + # - quiet: Enable instant prompt and don't print warnings when detecting console output + # during zsh initialization. Choose this if you've read and understood + # https://github.com/romkatv/powerlevel10k/blob/master/README.md#instant-prompt. + # - verbose: Enable instant prompt and print a warning when detecting console output during + # zsh initialization. Choose this if you've never tried instant prompt, haven't + # seen the warning, or if you are unsure what this all means. + typeset -g POWERLEVEL9K_INSTANT_PROMPT=quiet + + # Hot reload allows you to change POWERLEVEL9K options after Powerlevel10k has been initialized. + # For example, you can type POWERLEVEL9K_BACKGROUND=red and see your prompt turn red. Hot reload + # can slow down prompt by 1-2 milliseconds, so it's better to keep it turned off unless you + # really need it. + typeset -g POWERLEVEL9K_DISABLE_HOT_RELOAD=true + + # If p10k is already loaded, reload configuration. + # This works even with POWERLEVEL9K_DISABLE_HOT_RELOAD=true. + (( ! $+functions[p10k] )) || p10k reload +} + +# Tell `p10k configure` which file it should overwrite. +typeset -g POWERLEVEL9K_CONFIG_FILE=${${(%):-%x}:a} + +(( ${#p10k_config_opts} )) && setopt ${p10k_config_opts[@]} +'builtin' 'unset' 'p10k_config_opts' diff --git a/Configs/.zshrc b/Configs/.zshrc new file mode 100644 index 0000000..2a59269 --- /dev/null +++ b/Configs/.zshrc @@ -0,0 +1,89 @@ +# Oh-my-zsh installation path +ZSH=/usr/share/oh-my-zsh/ + +# Powerlevel10k theme path +source /usr/share/zsh-theme-powerlevel10k/powerlevel10k.zsh-theme + +# List of plugins used +plugins=() +source $ZSH/oh-my-zsh.sh + +# In case a command is not found, try to find the package that has it +function command_not_found_handler { + local purple='\e[1;35m' bright='\e[0;1m' green='\e[1;32m' reset='\e[0m' + printf 'zsh: command not found: %s\n' "$1" + local entries=( ${(f)"$(/usr/bin/pacman -F --machinereadable -- "/usr/bin/$1")"} ) + if (( ${#entries[@]} )) ; then + printf "${bright}$1${reset} may be found in the following packages:\n" + local pkg + for entry in "${entries[@]}" ; do + local fields=( ${(0)entry} ) + if [[ "$pkg" != "${fields[2]}" ]]; then + printf "${purple}%s/${bright}%s ${green}%s${reset}\n" "${fields[1]}" "${fields[2]}" "${fields[3]}" + fi + printf ' /%s\n' "${fields[4]}" + pkg="${fields[2]}" + done + fi + return 127 +} + +# Detect AUR wrapper +if pacman -Qi yay &>/dev/null; then + aurhelper="yay" +elif pacman -Qi paru &>/dev/null; then + aurhelper="paru" +fi + +function in { + local -a inPkg=("$@") + local -a arch=() + local -a aur=() + + for pkg in "${inPkg[@]}"; do + if pacman -Si "${pkg}" &>/dev/null; then + arch+=("${pkg}") + else + aur+=("${pkg}") + fi + done + + if [[ ${#arch[@]} -gt 0 ]]; then + sudo pacman -S "${arch[@]}" + fi + + if [[ ${#aur[@]} -gt 0 ]]; then + ${aurhelper} -S "${aur[@]}" + fi +} + +# Helpful aliases +alias c='clear' # clear terminal +alias l='eza -lh --icons=auto' # long list +alias ls='eza -1 --icons=auto' # short list +alias ll='eza -lha --icons=auto --sort=name --group-directories-first' # long list all +alias ld='eza -lhD --icons=auto' # long list dirs +alias lt='eza --icons=auto --tree' # list folder as tree +alias un='$aurhelper -Rns' # uninstall package +alias up='$aurhelper -Syu' # update system/package/aur +alias pl='$aurhelper -Qs' # list installed package +alias pa='$aurhelper -Ss' # list available package +alias pc='$aurhelper -Sc' # remove unused cache +alias po='$aurhelper -Qtdq | $aurhelper -Rns -' # remove unused packages, also try > $aurhelper -Qqd | $aurhelper -Rsu --print - +alias vc='code' # gui code editor + +# Directory navigation shortcuts +alias ..='cd ..' +alias ...='cd ../..' +alias .3='cd ../../..' +alias .4='cd ../../../..' +alias .5='cd ../../../../..' + +# Always mkdir a path (this doesn't inhibit functionality to make a single dir) +alias mkdir='mkdir -p' + +# To customize prompt, run `p10k configure` or edit ~/.p10k.zsh +[[ ! -f ~/.p10k.zsh ]] || source ~/.p10k.zsh + +# Display Pokemon +pokemon-colorscripts --no-title -r 1,3,6 diff --git a/Scripts/.extra/custom_flat.lst b/Scripts/.extra/custom_flat.lst new file mode 100644 index 0000000..514f149 --- /dev/null +++ b/Scripts/.extra/custom_flat.lst @@ -0,0 +1,48 @@ +# ------------------------------------------- // System +com.github.tchx84.Flatseal # Flatseal +io.github.flattool.Warehouse # Warehouse +org.gnome.Boxes # Boxes +io.missioncenter.MissionCenter # MissionCenter +io.gitlab.adhami3310.Impression # Impression +# com.usebottles.bottles # Bottles +# io.github.dimtpap.coppwr # Coppwr + +# ------------------------------------------- // Browser +com.brave.Browser # Brave +# org.torproject.torbrowser-launcher # Tor + +# ------------------------------------------- // Social +# org.signal.Signal # Signal +# com.discordapp.Discord # Discord +# dev.vencord.Vesktop # Vesktop +io.github.spacingbat3.webcord # Webcord + +# ------------------------------------------- // Productivity +# md.obsidian.Obsidian # Obsidian +# org.mozilla.Thunderbird # Thunderbird +# io.github.alainm23.planify # Planify + +# ------------------------------------------- // Image/Graphics +org.inkscape.Inkscape # Inkscape +org.kde.krita # Krita +org.gimp.GIMP # Gimp +org.blender.Blender # Blender +io.gitlab.theevilskeleton.Upscaler # ImageUpscaler + +# ------------------------------------------- // Photography +# org.gnome.Shotwell # Shotwell +# org.darktable.Darktable # Darktable +# org.kde.digikam # Digikam +org.gnome.eog # ImageViewer + +# ------------------------------------------- // Audio/Video +# com.spotify.Client # Spotify +# org.kde.kdenlive # Kdenlive +com.obsproject.Studio # Obs +com.github.rafostar.Clapper # Clapper +com.github.unrud.VideoDownloader # VideoDownloader + +# ------------------------------------------- // Gaming +# hu.kramo.Cartridges # Cartridges +# com.github.Matoking.protontricks # ProtonTricks +# net.davidotek.pupgui2 # ProtonUp diff --git a/Scripts/.extra/drivext_mnt.sh b/Scripts/.extra/drivext_mnt.sh new file mode 100755 index 0000000..eb5db8d --- /dev/null +++ b/Scripts/.extra/drivext_mnt.sh @@ -0,0 +1,32 @@ +#!/usr/bin/env bash +#|---/ /+---------------------------+---/ /|# +#|--/ /-| Script to mount my drives |--/ /-|# +#|-/ /--| Prasanth Rangan |-/ /--|# +#|/ /---+---------------------------+/ /---|# + +while read -r fst uuid name; do + + label=$(lsblk --noheadings --raw -o LABEL "${name}") + mount=$(lsblk --noheadings --raw -o MOUNTPOINT "${name}") + + if [ "${mount}" == "/" ] && [ -z "${label}" ]; then + sudo e2label "${name}" "YoRHa" + + elif [ "${mount}" == "/home" ] && [ -z "${label}" ]; then + sudo e2label "${name}" "9S" + + elif [ -z "${mount}" ] && [ ! -z "${label}" ] && [ $(grep "${uuid}" /etc/fstab | wc -l) -eq 0 ]; then + [ ! -d "/mnt/${label}" ] && sudo mkdir -p "/mnt/${label}" + fstEntry=$(echo -e "${fstEntry}\n#/${name}\nUUID=${uuid} /mnt/${label} ${fst} nosuid,nodev,nofail,x-gvfs-show 0 0\n ") + sudo mount "${name}" "/mnt/${label}" + + else + continue + fi + +done < <(lsblk --noheadings --raw -o TYPE,FSTYPE,UUID,NAME | awk '{if ($1=="part" && $2=="ext4") print $2, $3, "/dev/" $4}') + +if [ ! -z "${fstEntry}" ]; then + echo -e "${fstEntry}\n" | sudo tee -a /etc/fstab + sudo systemctl daemon-reload +fi diff --git a/Scripts/.extra/install_fpk.sh b/Scripts/.extra/install_fpk.sh new file mode 100755 index 0000000..be62146 --- /dev/null +++ b/Scripts/.extra/install_fpk.sh @@ -0,0 +1,33 @@ +#!/usr/bin/env bash +#|---/ /+-----------------------------------+---/ /|# +#|--/ /-| Script to install flatpaks (user) |--/ /-|# +#|-/ /--| Prasanth Rangan |-/ /--|# +#|/ /---+-----------------------------------+/ /---|# + +baseDir=$(dirname "$(realpath "$0")") +scrDir=$(dirname "$(dirname "$(realpath "$0")")") + +source "${scrDir}/global_fn.sh" +if [ $? -ne 0 ]; then + echo "Error: unable to source global_fn.sh..." + exit 1 +fi + +if ! pkg_installed flatpak; then + sudo pacman -S flatpak +fi + +flatpak remote-add --user --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo +flats=$(awk -F '#' '{print $1}' "${baseDir}/custom_flat.lst" | sed 's/ //g' | xargs) + +flatpak install --user -y flathub ${flats} +flatpak remove --unused + +gtkTheme=$(gsettings get org.gnome.desktop.interface gtk-theme | sed "s/'//g") +gtkIcon=$(gsettings get org.gnome.desktop.interface icon-theme | sed "s/'//g") + +flatpak --user override --filesystem=~/.themes +flatpak --user override --filesystem=~/.icons + +flatpak --user override --env=GTK_THEME=${gtkTheme} +flatpak --user override --env=ICON_THEME=${gtkIcon} diff --git a/Scripts/.extra/install_mod.sh b/Scripts/.extra/install_mod.sh new file mode 100755 index 0000000..8f899a7 --- /dev/null +++ b/Scripts/.extra/install_mod.sh @@ -0,0 +1,15 @@ +#!/usr/bin/env bash +#|---/ /+-----------------------------------------------+---/ /|# +#|--/ /-| Script to enable early loading for nvidia drm |--/ /-|# +#|-/ /--| Prasanth Rangan |-/ /--|# +#|/ /---+-----------------------------------------------+/ /---|# + +if [ $(lspci -k | grep -A 2 -E "(VGA|3D)" | grep -i nvidia | wc -l) -gt 0 ]; then + if [ $(grep 'MODULES=' /etc/mkinitcpio.conf | grep nvidia | wc -l) -eq 0 ]; then + sudo sed -i "/MODULES=/ s/)$/ nvidia nvidia_modeset nvidia_uvm nvidia_drm)/" /etc/mkinitcpio.conf + sudo mkinitcpio -P + if [ $(grep 'options nvidia-drm modeset=1' /etc/modprobe.d/nvidia.conf | wc -l) -eq 0 ]; then + echo 'options nvidia-drm modeset=1' | sudo tee -a /etc/modprobe.d/nvidia.conf + fi + fi +fi diff --git a/Scripts/.extra/restore_app.sh b/Scripts/.extra/restore_app.sh new file mode 100755 index 0000000..10fa501 --- /dev/null +++ b/Scripts/.extra/restore_app.sh @@ -0,0 +1,50 @@ +#!/usr/bin/env bash +#|---/ /+-----------------------------+---/ /|# +#|--/ /-| Script to configure my apps |--/ /-|# +#|-/ /--| Prasanth Rangan |-/ /--|# +#|/ /---+-----------------------------+/ /---|# + +scrDir=$(dirname "$(dirname "$(realpath "$0")")") +source "${scrDir}/global_fn.sh" +if [ $? -ne 0 ]; then + echo "Error: unable to source global_fn.sh..." + exit 1 +fi + +cloneDir=$(dirname "$(realpath "$cloneDir")") + + +#// icons + +if [ -f /usr/share/applications/rofi-theme-selector.desktop ] && [ -f /usr/share/applications/rofi.desktop ]; then + sudo rm /usr/share/applications/rofi-theme-selector.desktop + sudo rm /usr/share/applications/rofi.desktop +fi +sudo sed -i "/^Icon=/c\Icon=adjust-colors" /usr/share/applications/nwg-look.desktop +sudo sed -i "/^Icon=/c\Icon=spectacle" /usr/share/applications/swappy.desktop + + +#// firefox + +if pkg_installed firefox; then + FoxRel=$(find ~/.mozilla/firefox -maxdepth 1 -type d -name "*.default-release" | head -1) + + if [ -z "${FoxRel}" ]; then + firefox &> /dev/null & + sleep 1 + FoxRel=$(find ~/.mozilla/firefox -maxdepth 1 -type d -name "*.default-release" | head -1) + else + BkpDir="${HOME}/.config/cfg_backups/$(date +'%y%m%d_%Hh%Mm%Ss')_apps" + mkdir -p "${BkpDir}" + cp -r ~/.mozilla/firefox "${BkpDir}" + fi + + tar -xzf ${cloneDir}/Source/arcs/Firefox_UserConfig.tar.gz -C "${FoxRel}" + tar -xzf ${cloneDir}/Source/arcs/Firefox_Extensions.tar.gz -C ~/.mozilla/ + + find ~/.mozilla/extensions -maxdepth 1 -type f -name "*.xpi" | while read fext + do + firefox -profile "${FoxRel}" "${fext}" &> /dev/null & + done +fi + diff --git a/Scripts/.extra/restore_lnk.sh b/Scripts/.extra/restore_lnk.sh new file mode 100755 index 0000000..17c0e34 --- /dev/null +++ b/Scripts/.extra/restore_lnk.sh @@ -0,0 +1,24 @@ +#!/usr/bin/env bash +#|---/ /+---------------------------------+---/ /|# +#|--/ /-| Script to fix slinks in .config |--/ /-|# +#|-/ /--| Prasanth Rangan |-/ /--|# +#|/ /---+---------------------------------+/ /---|# + +export scrDir=$(dirname "$(realpath "$0")") +source "${scrDir}/global_fn.sh" +if [ $? -ne 0 ]; then + echo "Error: unable to source global_fn.sh..." + exit 1 +fi + +find "${cloneDir}" -type l | while read slink; do + fixd_slink=$(readlink "$slink" | cut -d '/' -f 4-) + linkd_file=$(echo "$slink" | awk -F "${cloneDir}/Configs/" '{print $NF}') + echo -e "\033[0;32m[link]\033[0m $HOME/$linkd_file --> $HOME/$fixd_slink..." + ln -fs "$HOME/${fixd_slink}" "$HOME/${linkd_file}" +done + +if printenv HYPRLAND_INSTANCE_SIGNATURE &> /dev/null; then + echo "reloading hyprland..." + hyprctl reload +fi diff --git a/Scripts/.nvidia/nvidia-340xx-dkms b/Scripts/.nvidia/nvidia-340xx-dkms new file mode 100644 index 0000000..154c1ac --- /dev/null +++ b/Scripts/.nvidia/nvidia-340xx-dkms @@ -0,0 +1,16 @@ +NV50|NV50|G80|GeForce 8800 (GTS, GTX, Ultra), Quadro FX (4600 (SDI), 5600) +NV50|NV84|G84|GeForce 8600 (GT, GTS, M GT, M GS), 8700M GT, GeForce 9500M GS, 9650M GS, Quadro FX (370, 570, 570M, 1600M, 1700), NVS 320M +NV50|NV86|G86|GeForce 8300 GS, 8400 (GS, M G, M GS, M GT), 8500 GT, GeForce 9300M G, Quadro FX 360M, NVS (130M, 135M, 140M, 290) +NV50|NV92|G92|GeForce 8800 (GT, GS, GTS 512, M GTS, M GTX), GeForce 9600 GSO, 9800 (GT, GTX, GTX+, GX2, M GT, M GTX), GeForce GTS 150(M), GTS 160M, GTS 240, GTS 250, GTX (260M, 280M, 285M), GT (330, 340), Quadro FX (2800M, 3600M, 3700, 3700M, 3800M, 4700 X2), VX 200 +NV50|NV94|G94|GeForce 9600 (GSO 512, GT, S), 9700M GTS, 9800M GTS, GeForce G 110M, GT 130(M), GT 140, Quadro FX (1800, 2700M) +NV50|NV96|G96|GeForce 9400 GT, 9500 (GT, M G), 9600 (M GS, M GT), 9650M GT, 9700M GT, GeForce G 102M, GT 120, Quadro FX (380, 580, 770M, 1700M) +NV50|NV98|G98|GeForce 8400 GS, GeForce 9200M GS, 9300 (GE, GS, M GS), GeForce G 100, G 105M, Quadro FX (370 LP, 370M), NVS (150M, 160M, 295, 420, 450) +NV50|NVA0|GT200|GeForce GTX (260, 275, 280, 285, 295), Quadro CX, FX (3800, 4800, 5800) +NV50|NVA3|GT215|GeForce GT (240, 320, 335M), GTS (250M, 260M, 350M, 360M), Quadro FX 1800M +NV50|NVA5|GT216|GeForce GT (220, 230M, 240M, 325M, 330M), 315, Quadro 400, FX 880M, NVS 5100M +NV50|NVA8|GT218|GeForce 8400 GS, ION 2, GeForce 205, 210, G 210M, 305M, 310(M), 405, Quadro FX (380 LP, 380M), NVS (300, 2100M, 3100M) +NV50|NVAA|MCP77|GeForce 8100, 8200, 8300 mGPU +NV50|NVAA|MCP78|nForce 700a series, 8200M G +NV50|NVAC|MCP79|ION, GeForce 9300, 9400 mGPU +NV50|NVAC|MCP7A|nForce 700i series, 8200M G, 9100M, 9400M (G) +NV50|NVAF|MCP89|GeForce 320M diff --git a/Scripts/.nvidia/nvidia-390xx-dkms b/Scripts/.nvidia/nvidia-390xx-dkms new file mode 100644 index 0000000..977f1bd --- /dev/null +++ b/Scripts/.nvidia/nvidia-390xx-dkms @@ -0,0 +1,9 @@ +NVC0|NVC0|GF100|GeForce GTX (465, 470, 480, 480M), Quadro 4000, 5000[M] (??), 6000 +NVC0|NVC1|GF108|GeForce GT (415M, 420, 420M, 425M, 430, 435M, 520M, 525M, 530, 540M, 550M, 555M, 620, 630M, 635M, 640M LE), Quadro 600, 1000M +NVC0|NVC3|GF106|GeForce GT (440, 445M, 545, 555M, 630M, 635M), GTS 450, GTX 460M, Quadro 2000 (D), 2000M +NVC0|NVC4|GF104|GeForce GTX (460, 460 SE, 470M, 485M), Quadro 5000M (??) +NVC0|NVC8|GF110|GeForce GTX (560 Ti OEM, 570, 580, 590), Quadro 3000M, 4000M, 5010M +NVC0|NVCE|GF114|GeForce GTX (460 v2, 560, 560 Ti, 570M, 580M, 670M, 675M) +NVC0|NVCF|GF116|GeForce GTS 450 v2, GTX (550 Ti, 560M) +NVC0|NVD7|GF117|Geforce GT 620M, 625M, (some) 630M, 710M, 720M +NVC0|NVD9|GF119|GeForce 410M, 510 (?), GT (520, 520M, 520MX, 610), 610M, Quadro NVS 4200M diff --git a/Scripts/.nvidia/nvidia-470xx-dkms b/Scripts/.nvidia/nvidia-470xx-dkms new file mode 100644 index 0000000..558158b --- /dev/null +++ b/Scripts/.nvidia/nvidia-470xx-dkms @@ -0,0 +1,9 @@ +NVE0|NVE4|GK104|GeForce GTX (660 Ti, 670[M], 680[M], 690, 760, 760 Ti, 770, 775M, 780M, 860M), Quadro K3000[M], K3100M, K4000[M], K4100[M], K5000[M], K5100M, Tesla K10 +NVE0|NVE7|GK107|GeForce GT (640[M], 645M, 650M, 710M, 720M, 730M, 740[M], 745M, 750M, 755M), GTX (650, 660M), Quadro 410, K500[M], K600, K1000[M], K1100M, K2000[M], NVS 510, 1000 +NVE0|NVE6|GK106|GeForce GTX (645, 650 Ti, 660, 760M, 765M, 770M), Quadro K2100M, K4000 +NVE0|NVF0|GK110|GeForce GTX 780, Titan, Tesla K20, Quadro K6000 +NVE0|NVF1|GK110B|GeForce GTX 780 Ti, Titan Z, Tesla K40 +NVE0|NV106|GK208B|GeForce GT 720 +NVE0|NV108|GK208|GeForce GT 630, 635, 640, 710M, 720M, 730M, 735M, 740M, 920M, Quadro K510M, K610M +NVE0|NVEA|GK20A|Tegra K1 +NVE0|NV???|GK210|Tesla K80 diff --git a/Scripts/.nvidia/nvidia-dkms b/Scripts/.nvidia/nvidia-dkms new file mode 100644 index 0000000..b93d60f --- /dev/null +++ b/Scripts/.nvidia/nvidia-dkms @@ -0,0 +1,26 @@ +NV110|NV117|GM107|GeForce GTX (745, 750, 750 Ti, 840M, 845M, 850M, 860M, 950M, 960M) Quadro K620, K1200, K2200, M1000M, M1200M; GRID M30, M40 +NV110|NV118|GM108|GeForce 830M, 840M, 930M, 940M[X] +NV110|NV120|GM200|GeForce GTX Titan X +NV110|NV124|GM204|GeForce GTX (970, 980) +NV110|NV126|GM206|GeForce GTX (950, 960) +NV110|NV12B|GM20B|Tegra X1 +NV130|NV132|GP102|NVIDIA Titan (X, Xp), GeForce GTX 1080 Ti +NV130|NV134|GP104|GeForce GTX (1070, 1080) +NV130|NV136|GP106|GeForce GTX 1060 +NV130|NV137|GP107|GeForce GTX (1050, 1050 Ti) +NV130|NV138|GP108|GeForce GT 1030 +NV140|NV140|GV100|NVIDIA Titan V, NVIDIA Quadro GV100 +NV160|NV162|TU102|NVIDIA Titan RTX, GeForce RTX 2080 Ti +NV160|NV164|TU104|GeForce RTX (2070 Super, 2080, 2080 Super) +NV160|NV166|TU106|GeForce RTX (2060, 2060 Super, 2070) +NV160|NV168|TU116|GeForce GTX (1650 Super, 1660, 1660 Ti, 1660 Super) +NV160|NV167|TU117|GeForce GTX 1650 +NV170|NV172|GA102|GeForce RTX (3080, 3090) +NV170|NV174|GA104|GeForce RTX (3060 Ti, 3070, 3080 Mobile) +NV170|NV176|GA106|GeForce RTX (3050, 3060) +NV170|NV177|GA107|GeForce RTX 3050 +NV190|NV192|AD102|GeForce RTX 4090 +NV190|NV193|AD103|GeForce RTX 4080 +NV190|NV194|AD104|GeForce RTX (4070, 4070 Ti) +NV190|NV196|AD106|GeForce RTX 4060 Ti +NV190|NV197|AD107|GeForce RTX 4060 diff --git a/Scripts/custom_apps.lst b/Scripts/custom_apps.lst new file mode 100644 index 0000000..00fad79 --- /dev/null +++ b/Scripts/custom_apps.lst @@ -0,0 +1,23 @@ +# --------------------------------------------------- // System +# downgrade # downgrade packages +# trash-cli-git # cli to manage trash files +# libinput-gestures # actions touchpad gestures using libinput +# gestures # gui for libinput-gestures + +# --------------------------------------------------- // Dependencies +xdg-desktop-portal-gtk # xdg desktop portal using gtk +# emote # emoji picker gtk3 + +# --------------------------------------------------- // Gaming +steam # gaming platform +gamemode # daemon and library for game optimisations +mangohud # system performance overlay +# gamescope # micro-compositor for gaming + +# --------------------------------------------------- // Music +cava # audio visualizer +spotify # proprietary music streaming service +spicetify-cli # cli to customize spotify client + +# --------------------------------------------------- // Apps +# neovim # vim based text editor diff --git a/Scripts/custom_hypr.lst b/Scripts/custom_hypr.lst new file mode 100644 index 0000000..869682c --- /dev/null +++ b/Scripts/custom_hypr.lst @@ -0,0 +1,79 @@ +# --------------------------------------------------- // System +pipewire # audio/video server +pipewire-alsa # pipewire alsa client +pipewire-audio # pipewire audio client +pipewire-jack # pipewire jack client +pipewire-pulse # pipewire pulseaudio client +gst-plugin-pipewire # pipewire gstreamer client +wireplumber # pipewire session manager +pavucontrol # pulseaudio volume control +pamixer # pulseaudio cli mixer +networkmanager # network manager +network-manager-applet # network manager system tray utility +bluez # bluetooth protocol stack +bluez-utils # bluetooth utility cli +blueman # bluetooth manager gui +brightnessctl # screen brightness control +udiskie # manage removable media + +# --------------------------------------------------- // Display Manager +sddm # display manager for KDE plasma +qt5-quickcontrols # for sddm theme ui elements +qt5-quickcontrols2 # for sddm theme ui elements +qt5-graphicaleffects # for sddm theme effects + +# --------------------------------------------------- // Window Manager +hyprland # wlroots-based wayland compositor +dunst # notification daemon +rofi-wayland # application launcher +waybar # system bar +swww # wallpaper +swaylock-effects-git # lock screen +wlogout # logout menu +grimblast-git # screenshot tool +hyprpicker # color picker +slurp # region select for screenshot/screenshare +swappy # screenshot editor +cliphist # clipboard manager + +# --------------------------------------------------- // Dependencies +polkit-gnome # authentication agent +xdg-desktop-portal-hyprland # xdg desktop portal for hyprland +pacman-contrib # for system update check +python-pyamdgpuinfo # for amd gpu info +parallel # for parallel processing +jq # for json processing +imagemagick # for image processing +qt5-imageformats # for dolphin image thumbnails +ffmpegthumbs # for dolphin video thumbnails +kde-cli-tools # for dolphin file type defaults +libnotify # for notifications + +# --------------------------------------------------- // Theming +nwg-look # gtk configuration tool +qt5ct # qt5 configuration tool +qt6ct # qt6 configuration tool +kvantum # svg based qt6 theme engine +kvantum-qt5 # svg based qt5 theme engine +qt5-wayland # wayland support in qt5 +qt6-wayland # wayland support in qt6 + +# --------------------------------------------------- // Applications +firefox # browser +kitty # terminal +dolphin # kde file manager +ark # kde file archiver +vim # terminal text editor +code # ide text editor + +# --------------------------------------------------- // Shell +eza|zsh # file lister for zsh +oh-my-zsh-git|zsh # plugin manager for zsh +zsh-theme-powerlevel10k-git|zsh oh-my-zsh-git # theme for zsh +eza|fish # file lister for fish +starship|fish # customizable shell prompt +fastfetch # system information fetch tool +pokemon-colorscripts-git|zsh # display pokemon sprites + +# --------------------------------------------------- // HyDE +hyde-cli-git # cli tool to manage hyde diff --git a/Scripts/global_fn.sh b/Scripts/global_fn.sh new file mode 100755 index 0000000..199136e --- /dev/null +++ b/Scripts/global_fn.sh @@ -0,0 +1,94 @@ +#!/usr/bin/env bash +#|---/ /+------------------+---/ /|# +#|--/ /-| Global functions |--/ /-|# +#|-/ /--| Prasanth Rangan |-/ /--|# +#|/ /---+------------------+/ /---|# + +set -e + +scrDir="$(dirname "$(realpath "$0")")" +cloneDir="$(dirname "${scrDir}")" +confDir="${XDG_CONFIG_HOME:-$HOME/.config}" +cacheDir="$HOME/.cache/hyde" +aurList=(yay paru) +shlList=(zsh fish) + +pkg_installed() { + local PkgIn=$1 + + if pacman -Qi "${PkgIn}" &> /dev/null; then + return 0 + else + return 1 + fi +} + +chk_list() { + vrType="$1" + local inList=("${@:2}") + for pkg in "${inList[@]}"; do + if pkg_installed "${pkg}"; then + printf -v "${vrType}" "%s" "${pkg}" + export "${vrType}" + return 0 + fi + done + return 1 +} + +pkg_available() { + local PkgIn=$1 + + if pacman -Si "${PkgIn}" &> /dev/null; then + return 0 + else + return 1 + fi +} + +aur_available() { + local PkgIn=$1 + + if ${aurhlpr} -Si "${PkgIn}" &> /dev/null; then + return 0 + else + return 1 + fi +} + +nvidia_detect() { + readarray -t dGPU < <(lspci -k | grep -E "(VGA|3D)" | awk -F ': ' '{print $NF}') + if [ "${1}" == "--verbose" ]; then + for indx in "${!dGPU[@]}"; do + echo -e "\033[0;32m[gpu$indx]\033[0m detected // ${dGPU[indx]}" + done + return 0 + fi + if [ "${1}" == "--drivers" ]; then + while read -r -d ' ' nvcode ; do + awk -F '|' -v nvc="${nvcode}" 'substr(nvc,1,length($3)) == $3 {split(FILENAME,driver,"/"); print driver[length(driver)],"\nnvidia-utils"}' "${scrDir}"/.nvidia/nvidia*dkms + done <<< "${dGPU[@]}" + return 0 + fi + if grep -iq nvidia <<< "${dGPU[@]}"; then + return 0 + else + return 1 + fi +} + +prompt_timer() { + set +e + unset promptIn + local timsec=$1 + local msg=$2 + while [[ ${timsec} -ge 0 ]]; do + echo -ne "\r :: ${msg} (${timsec}s) : " + read -t 1 -n 1 promptIn + [ $? -eq 0 ] && break + ((timsec--)) + done + export promptIn + echo "" + set -e +} diff --git a/Scripts/install.sh b/Scripts/install.sh new file mode 100755 index 0000000..6c81954 --- /dev/null +++ b/Scripts/install.sh @@ -0,0 +1,221 @@ +#!/usr/bin/env bash +#|---/ /+--------------------------+---/ /|# +#|--/ /-| Main installation script |--/ /-|# +#|-/ /--| Prasanth Rangan |-/ /--|# +#|/ /---+--------------------------+/ /---|# + +cat << "EOF" + +------------------------------------------------- + . + / \ _ _ _ ___ ___ + /^ \ _| |_ | || |_ _| \| __| + / _ \ |_ _| | __ | || | |) | _| + / | | ~\ |_| |_||_|\_, |___/|___| + /.-' '-.\ |__/ + +------------------------------------------------- + +EOF + +#--------------------------------# +# import variables and functions # +#--------------------------------# +scrDir=$(dirname "$(realpath "$0")") +source "${scrDir}/global_fn.sh" +if [ $? -ne 0 ]; then + echo "Error: unable to source global_fn.sh..." + exit 1 +fi + +#------------------# +# evaluate options # +#------------------# +flg_Install=0 +flg_Restore=0 +flg_Service=0 + +while getopts idrs RunStep; do + case $RunStep in + i) flg_Install=1 ;; + d) flg_Install=1 ; export use_default="--noconfirm" ;; + r) flg_Restore=1 ;; + s) flg_Service=1 ;; + *) echo "...valid options are..." + echo "i : [i]nstall hyprland without configs" + echo "d : install hyprland [d]efaults without configs --noconfirm" + echo "r : [r]estore config files" + echo "s : enable system [s]ervices" + exit 1 ;; + esac +done + +if [ $OPTIND -eq 1 ]; then + flg_Install=1 + flg_Restore=1 + flg_Service=1 +fi + +#--------------------# +# pre-install script # +#--------------------# +if [ ${flg_Install} -eq 1 ] && [ ${flg_Restore} -eq 1 ]; then + cat << "EOF" + _ _ _ _ + ___ ___ ___ |_|___ ___| |_ ___| | | +| . | _| -_| | | |_ -| _| .'| | | +| _|_| |___| |_|_|_|___|_| |__,|_|_| +|_| + +EOF + + "${scrDir}/install_pre.sh" +fi + +#------------# +# installing # +#------------# +if [ ${flg_Install} -eq 1 ]; then + cat << "EOF" + + _ _ _ _ _ +|_|___ ___| |_ ___| | |_|___ ___ +| | |_ -| _| .'| | | | | . | +|_|_|_|___|_| |__,|_|_|_|_|_|_ | + |___| + +EOF + + #----------------------# + # prepare package list # + #----------------------# + shift $((OPTIND - 1)) + cust_pkg=$1 + cp "${scrDir}/custom_hypr.lst" "${scrDir}/install_pkg.lst" + + if [ -f "${cust_pkg}" ] && [ ! -z "${cust_pkg}" ]; then + cat "${cust_pkg}" >> "${scrDir}/install_pkg.lst" + fi + + #--------------------------------# + # add nvidia drivers to the list # + #--------------------------------# + if nvidia_detect; then + cat /usr/lib/modules/*/pkgbase | while read krnl; do + echo "${krnl}-headers" >> "${scrDir}/install_pkg.lst" + done + nvidia_detect --drivers >> "${scrDir}/install_pkg.lst" + fi + + nvidia_detect --verbose + + #----------------# + # get user prefs # + #----------------# + if ! chk_list "aurhlpr" "${aurList[@]}"; then + echo -e "Available aur helpers:\n[1] yay\n[2] yay (bin)\n[3] paru\n[4] paru (bin)" + prompt_timer 120 "Enter option number [default: yay] " + + case "${promptIn}" in + 1) export getAur="yay" ;; + 2) export getAur="yay-bin" ;; + 3) export getAur="paru" ;; + 4) export getAur="paru-bin" ;; + *) echo -e "...Invalid option selected..." ; exit 1 ;; + esac + fi + + if ! chk_list "myShell" "${shlList[@]}"; then + echo -e "Select shell:\n[1] zsh\n[2] fish" + prompt_timer 120 "Enter option number" + + case "${promptIn}" in + 1) export myShell="zsh" ;; + 2) export myShell="fish" ;; + *) echo -e "...Invalid option selected..." ; exit 1 ;; + esac + echo "${myShell}" >> "${scrDir}/install_pkg.lst" + fi + + #--------------------------------# + # install packages from the list # + #--------------------------------# + "${scrDir}/install_pkg.sh" "${scrDir}/install_pkg.lst" + rm "${scrDir}/install_pkg.lst" +fi + +#---------------------------# +# restore my custom configs # +#---------------------------# +if [ ${flg_Restore} -eq 1 ]; then + cat << "EOF" + + _ _ + ___ ___ ___| |_ ___ ___|_|___ ___ +| _| -_|_ -| _| . | _| | | . | +|_| |___|___|_| |___|_| |_|_|_|_ | + |___| + +EOF + + "${scrDir}/restore_fnt.sh" + "${scrDir}/restore_cfg.sh" + echo -e "\n\033[0;32m[themepatcher]\033[0m Patching themes..." + while IFS='"' read -r null1 themeName null2 themeRepo + do + themeNameQ+=("${themeName//\"/}") + themeRepoQ+=("${themeRepo//\"/}") + themePath="${confDir}/hyde/themes/${themeName}" + [ -d "${themePath}" ] || mkdir -p "${themePath}" + [ -f "${themePath}/.sort" ] || echo "${#themeNameQ[@]}" > "${themePath}/.sort" + done < "${scrDir}/themepatcher.lst" + parallel --bar --link "${scrDir}/themepatcher.sh" "{1}" "{2}" "{3}" "{4}" ::: "${themeNameQ[@]}" ::: "${themeRepoQ[@]}" ::: "--skipcaching" ::: "false" + echo -e "\n\033[0;32m[cache]\033[0m generating cache files..." + "$HOME/.local/share/bin/swwwallcache.sh" -t "" + if printenv HYPRLAND_INSTANCE_SIGNATURE &> /dev/null; then + "$HOME/.local/share/bin/themeswitch.sh" &> /dev/null + fi +fi + +#---------------------# +# post-install script # +#---------------------# +if [ ${flg_Install} -eq 1 ] && [ ${flg_Restore} -eq 1 ]; then + cat << "EOF" + + _ _ _ _ _ + ___ ___ ___| |_ |_|___ ___| |_ ___| | | +| . | . |_ -| _| | | |_ -| _| .'| | | +| _|___|___|_| |_|_|_|___|_| |__,|_|_| +|_| + +EOF + + "${scrDir}/install_pst.sh" +fi + +#------------------------# +# enable system services # +#------------------------# +if [ ${flg_Service} -eq 1 ]; then + cat << "EOF" + + _ + ___ ___ ___ _ _|_|___ ___ ___ +|_ -| -_| _| | | | _| -_|_ -| +|___|___|_| \_/|_|___|___|___| + +EOF + + while read servChk; do + + if [[ $(systemctl list-units --all -t service --full --no-legend "${servChk}.service" | sed 's/^\s*//g' | cut -f1 -d' ') == "${servChk}.service" ]]; then + echo -e "\033[0;33m[SKIP]\033[0m ${servChk} service is active..." + else + echo -e "\033[0;32m[systemctl]\033[0m starting ${servChk} system service..." + sudo systemctl enable "${servChk}.service" + sudo systemctl start "${servChk}.service" + fi + + done < "${scrDir}/system_ctl.lst" +fi diff --git a/Scripts/install_aur.sh b/Scripts/install_aur.sh new file mode 100755 index 0000000..723ef4a --- /dev/null +++ b/Scripts/install_aur.sh @@ -0,0 +1,46 @@ +#!/usr/bin/env bash +#|---/ /+-------------------------------------------+---/ /|# +#|--/ /-| Script to install aur helper, yay or paru |--/ /-|# +#|-/ /--| Prasanth Rangan |-/ /--|# +#|/ /---+-------------------------------------------+/ /---|# + +scrDir=$(dirname "$(realpath "$0")") +source "${scrDir}/global_fn.sh" +if [ $? -ne 0 ]; then + echo "Error: unable to source global_fn.sh..." + exit 1 +fi + +if chk_list "aurhlpr" "${aurList[@]}"; then + echo -e "\033[0;32m[AUR]\033[0m detected // ${aurhlpr}" + exit 0 +fi + +aurhlpr="${1:-yay}" + +if [ -d "$HOME/Clone" ]; then + echo "~/Clone directory exists..." + rm -rf "$HOME/Clone/${aurhlpr}" +else + mkdir "$HOME/Clone" + echo -e "[Desktop Entry]\nIcon=default-folder-git" > "$HOME/Clone/.directory" + echo "~/Clone directory created..." +fi + +if pkg_installed git; then + git clone "https://aur.archlinux.org/${aurhlpr}.git" "$HOME/Clone/${aurhlpr}" +else + echo "git dependency is not installed..." + exit 1 +fi + +cd "$HOME/Clone/${aurhlpr}" +makepkg ${use_default} -si + +if [ $? -eq 0 ]; then + echo "${aurhlpr} aur helper installed..." + exit 0 +else + echo "${aurhlpr} installation failed..." + exit 1 +fi diff --git a/Scripts/install_pkg.sh b/Scripts/install_pkg.sh new file mode 100755 index 0000000..fd83c7d --- /dev/null +++ b/Scripts/install_pkg.sh @@ -0,0 +1,69 @@ +#!/usr/bin/env bash +#|---/ /+----------------------------------------+---/ /|# +#|--/ /-| Script to install pkgs from input list |--/ /-|# +#|-/ /--| Prasanth Rangan |-/ /--|# +#|/ /---+----------------------------------------+/ /---|# + +scrDir=$(dirname "$(realpath "$0")") +source "${scrDir}/global_fn.sh" +if [ $? -ne 0 ]; then + echo "Error: unable to source global_fn.sh..." + exit 1 +fi + +"${scrDir}/install_aur.sh" "${getAur}" 2>&1 +chk_list "aurhlpr" "${aurList[@]}" +listPkg="${1:-"${scrDir}/custom_hypr.lst"}" +archPkg=() +aurhPkg=() +ofs=$IFS +IFS='|' + +while read -r pkg deps; do + pkg="${pkg// /}" + if [ -z "${pkg}" ]; then + continue + fi + + if [ ! -z "${deps}" ]; then + deps="${deps%"${deps##*[![:space:]]}"}" + while read -r cdep; do + pass=$(cut -d '#' -f 1 "${listPkg}" | awk -F '|' -v chk="${cdep}" '{if($1 == chk) {print 1;exit}}') + if [ -z "${pass}" ]; then + if pkg_installed "${cdep}"; then + pass=1 + else + break + fi + fi + done < <(echo "${deps}" | xargs -n1) + + if [[ ${pass} -ne 1 ]]; then + echo -e "\033[0;33m[skip]\033[0m ${pkg} is missing (${deps}) dependency..." + continue + fi + fi + + if pkg_installed "${pkg}"; then + echo -e "\033[0;33m[skip]\033[0m ${pkg} is already installed..." + elif pkg_available "${pkg}"; then + repo=$(pacman -Si "${pkg}" | awk -F ': ' '/Repository / {print $2}') + echo -e "\033[0;32m[${repo}]\033[0m queueing ${pkg} from official arch repo..." + archPkg+=("${pkg}") + elif aur_available "${pkg}"; then + echo -e "\033[0;34m[aur]\033[0m queueing ${pkg} from arch user repo..." + aurhPkg+=("${pkg}") + else + echo "Error: unknown package ${pkg}..." + fi +done < <(cut -d '#' -f 1 "${listPkg}") + +IFS=${ofs} + +if [[ ${#archPkg[@]} -gt 0 ]]; then + sudo pacman ${use_default} -S "${archPkg[@]}" +fi + +if [[ ${#aurhPkg[@]} -gt 0 ]]; then + "${aurhlpr}" ${use_default} -S "${aurhPkg[@]}" +fi diff --git a/Scripts/install_pre.sh b/Scripts/install_pre.sh new file mode 100755 index 0000000..76af3e3 --- /dev/null +++ b/Scripts/install_pre.sh @@ -0,0 +1,87 @@ +#!/usr/bin/env bash +#|---/ /+-------------------------------------+---/ /|# +#|--/ /-| Script to apply pre install configs |--/ /-|# +#|-/ /--| Prasanth Rangan |-/ /--|# +#|/ /---+-------------------------------------+/ /---|# + +scrDir=$(dirname "$(realpath "$0")") +source "${scrDir}/global_fn.sh" +if [ $? -ne 0 ]; then + echo "Error: unable to source global_fn.sh..." + exit 1 +fi + +# grub +if pkg_installed grub && [ -f /boot/grub/grub.cfg ]; then + echo -e "\033[0;32m[BOOTLOADER]\033[0m detected // grub" + + if [ ! -f /etc/default/grub.t2.bkp ] && [ ! -f /boot/grub/grub.t2.bkp ]; then + echo -e "\033[0;32m[BOOTLOADER]\033[0m configuring grub..." + sudo cp /etc/default/grub /etc/default/grub.t2.bkp + sudo cp /boot/grub/grub.cfg /boot/grub/grub.t2.bkp + + if nvidia_detect; then + echo -e "\033[0;32m[BOOTLOADER]\033[0m nvidia detected, adding nvidia_drm.modeset=1 to boot option..." + gcld=$(grep "^GRUB_CMDLINE_LINUX_DEFAULT=" "/etc/default/grub" | cut -d'"' -f2 | sed 's/\b nvidia_drm.modeset=.\b//g') + sudo sed -i "/^GRUB_CMDLINE_LINUX_DEFAULT=/c\GRUB_CMDLINE_LINUX_DEFAULT=\"${gcld} nvidia_drm.modeset=1\"" /etc/default/grub + fi + + echo -e "Select grub theme:\n[1] Retroboot (dark)\n[2] Pochita (light)" + read -p " :: Press enter to skip grub theme Enter option number : " grubopt + case ${grubopt} in + 1) grubtheme="Retroboot" ;; + 2) grubtheme="Pochita" ;; + *) grubtheme="None" ;; + esac + + if [ "${grubtheme}" == "None" ]; then + echo -e "\033[0;32m[BOOTLOADER]\033[0m Skippinng grub theme..." + sudo sed -i "s/^GRUB_THEME=/#GRUB_THEME=/g" /etc/default/grub + else + echo -e "\033[0;32m[BOOTLOADER]\033[0m Setting grub theme // ${grubtheme}" + sudo tar -xzf ${cloneDir}/Source/arcs/Grub_${grubtheme}.tar.gz -C /usr/share/grub/themes/ + sudo sed -i "/^GRUB_DEFAULT=/c\GRUB_DEFAULT=saved + /^GRUB_GFXMODE=/c\GRUB_GFXMODE=1280x1024x32,auto + /^GRUB_THEME=/c\GRUB_THEME=\"/usr/share/grub/themes/${grubtheme}/theme.txt\" + /^#GRUB_THEME=/c\GRUB_THEME=\"/usr/share/grub/themes/${grubtheme}/theme.txt\" + /^#GRUB_SAVEDEFAULT=true/c\GRUB_SAVEDEFAULT=true" /etc/default/grub + fi + + sudo grub-mkconfig -o /boot/grub/grub.cfg + else + echo -e "\033[0;33m[SKIP]\033[0m grub is already configured..." + fi +fi + +# systemd-boot +if pkg_installed systemd && nvidia_detect && [ $(bootctl status 2> /dev/null | awk '{if ($1 == "Product:") print $2}') == "systemd-boot" ]; then + echo -e "\033[0;32m[BOOTLOADER]\033[0m detected // systemd-boot" + + if [ $(ls -l /boot/loader/entries/*.conf.t2.bkp 2> /dev/null | wc -l) -ne $(ls -l /boot/loader/entries/*.conf 2> /dev/null | wc -l) ]; then + echo "nvidia detected, adding nvidia_drm.modeset=1 to boot option..." + find /boot/loader/entries/ -type f -name "*.conf" | while read imgconf; do + sudo cp ${imgconf} ${imgconf}.t2.bkp + sdopt=$(grep -w "^options" ${imgconf} | sed 's/\b quiet\b//g' | sed 's/\b splash\b//g' | sed 's/\b nvidia_drm.modeset=.\b//g') + sudo sed -i "/^options/c${sdopt} quiet splash nvidia_drm.modeset=1" ${imgconf} + done + else + echo -e "\033[0;33m[SKIP]\033[0m systemd-boot is already configured..." + fi +fi + +# pacman +if [ -f /etc/pacman.conf ] && [ ! -f /etc/pacman.conf.t2.bkp ]; then + echo -e "\033[0;32m[PACMAN]\033[0m adding extra spice to pacman..." + + sudo cp /etc/pacman.conf /etc/pacman.conf.t2.bkp + sudo sed -i "/^#Color/c\Color\nILoveCandy + /^#VerbosePkgLists/c\VerbosePkgLists + /^#ParallelDownloads/c\ParallelDownloads = 5" /etc/pacman.conf + sudo sed -i '/^#\[multilib\]/,+1 s/^#//' /etc/pacman.conf + + sudo pacman -Syyu + sudo pacman -Fy + +else + echo -e "\033[0;33m[SKIP]\033[0m pacman is already configured..." +fi diff --git a/Scripts/install_pst.sh b/Scripts/install_pst.sh new file mode 100755 index 0000000..1eacea8 --- /dev/null +++ b/Scripts/install_pst.sh @@ -0,0 +1,80 @@ +#!/usr/bin/env bash +#|---/ /+--------------------------------------+---/ /|# +#|--/ /-| Script to apply post install configs |--/ /-|# +#|-/ /--| Prasanth Rangan |-/ /--|# +#|/ /---+--------------------------------------+/ /---|# + +scrDir=$(dirname "$(realpath "$0")") +source "${scrDir}/global_fn.sh" +if [ $? -ne 0 ]; then + echo "Error: unable to source global_fn.sh..." + exit 1 +fi + +# sddm +if pkg_installed sddm; then + + echo -e "\033[0;32m[DISPLAYMANAGER]\033[0m detected // sddm" + if [ ! -d /etc/sddm.conf.d ]; then + sudo mkdir -p /etc/sddm.conf.d + fi + + if [ ! -f /etc/sddm.conf.d/kde_settings.t2.bkp ]; then + echo -e "\033[0;32m[DISPLAYMANAGER]\033[0m configuring sddm..." + echo -e "Select sddm theme:\n[1] Candy\n[2] Corners" + read -p " :: Enter option number : " sddmopt + + case $sddmopt in + 1) sddmtheme="Candy" ;; + *) sddmtheme="Corners" ;; + esac + + sudo tar -xzf ${cloneDir}/Source/arcs/Sddm_${sddmtheme}.tar.gz -C /usr/share/sddm/themes/ + sudo touch /etc/sddm.conf.d/kde_settings.conf + sudo cp /etc/sddm.conf.d/kde_settings.conf /etc/sddm.conf.d/kde_settings.t2.bkp + sudo cp /usr/share/sddm/themes/${sddmtheme}/kde_settings.conf /etc/sddm.conf.d/ + else + echo -e "\033[0;33m[SKIP]\033[0m sddm is already configured..." + fi + + if [ ! -f /usr/share/sddm/faces/${USER}.face.icon ] && [ -f ${cloneDir}/Source/misc/${USER}.face.icon ]; then + sudo cp ${cloneDir}/Source/misc/${USER}.face.icon /usr/share/sddm/faces/ + echo -e "\033[0;32m[DISPLAYMANAGER]\033[0m avatar set for ${USER}..." + fi + +else + echo -e "\033[0;33m[WARNING]\033[0m sddm is not installed..." +fi + +# dolphin +if pkg_installed dolphin && pkg_installed xdg-utils; then + + echo -e "\033[0;32m[FILEMANAGER]\033[0m detected // dolphin" + xdg-mime default org.kde.dolphin.desktop inode/directory + echo -e "\033[0;32m[FILEMANAGER]\033[0m setting" `xdg-mime query default "inode/directory"` "as default file explorer..." + +else + echo -e "\033[0;33m[WARNING]\033[0m dolphin is not installed..." +fi + +# shell +"${scrDir}/restore_shl.sh" + +# flatpak +if ! pkg_installed flatpak; then + + echo -e "\033[0;32m[FLATPAK]\033[0m flatpak application list..." + awk -F '#' '$1 != "" {print "["++count"]", $1}' "${scrDir}/.extra/custom_flat.lst" + prompt_timer 60 "Install these flatpaks? [Y/n]" + fpkopt=${promptIn,,} + + if [ "${fpkopt}" = "y" ]; then + echo -e "\033[0;32m[FLATPAK]\033[0m installing flatpaks..." + "${scrDir}/.extra/install_fpk.sh" + else + echo -e "\033[0;33m[SKIP]\033[0m installing flatpaks..." + fi + +else + echo -e "\033[0;33m[SKIP]\033[0m flatpak is already installed..." +fi diff --git a/Scripts/restore_cfg.lst b/Scripts/restore_cfg.lst new file mode 100644 index 0000000..ab4fd24 --- /dev/null +++ b/Scripts/restore_cfg.lst @@ -0,0 +1,35 @@ +N|Y|${HOME}|.zshrc .p10k.zsh|zsh oh-my-zsh-git zsh-theme-powerlevel10k pokemon-colorscripts-git +N|Y|${HOME}/.config/Code/User|settings.json|visual-studio-code-bin +N|Y|${HOME}/.config/Code - OSS/User|settings.json|code +N|Y|${HOME}/.config|code-flags.conf|visual-studio-code-bin +N|Y|${HOME}/.config|code-flags.conf|code +N|Y|${HOME}/.config|spotify-flags.conf|spotify +Y|Y|${HOME}/.config|dunst|dunst +N|Y|${HOME}/.config|fish|fish +N|Y|${HOME}/.config|lsd|lsd +Y|Y|${HOME}/.config/hyde|wallbash|hyprland +Y|Y|${HOME}/.config/hypr|animations.conf hyprland.conf windowrules.conf themes|hyprland +N|Y|${HOME}/.config/hypr|keybindings.conf monitors.conf userprefs.conf|hyprland +N|Y|${HOME}/.config/hypr|nvidia.conf|hyprland nvidia-utils +Y|Y|${HOME}/.local/share|bin|hyprland +Y|Y|${HOME}/.config|kitty|kitty +Y|Y|${HOME}/.config|Kvantum|kvantum +Y|Y|${HOME}/.config|MangoHud|mangohud +Y|Y|${HOME}/.config|fastfetch|fastfetch +Y|Y|${HOME}/.config|qt5ct|qt5ct +Y|Y|${HOME}/.config|qt6ct|qt6ct +Y|Y|${HOME}/.config|rofi|rofi +Y|Y|${HOME}/.config|swaylock|swaylock-effects +Y|Y|${HOME}/.config/waybar|modules config.jsonc style.css theme.css|waybar +Y|Y|${HOME}/.config/waybar|config.ctl|waybar +Y|Y|${HOME}/.config|wlogout|wlogout +Y|Y|${HOME}/.config|xsettingsd nwg-look gtk-3.0|nwg-look +Y|Y|${HOME}/.icons|default|nwg-look +Y|Y|${HOME}|.gtkrc-2.0|nwg-look +Y|Y|${HOME}/.config|dolphinrc kdeglobals|dolphin +N|Y|${HOME}/.config|baloofilerc|dolphin +Y|Y|${HOME}/.config/menus|applications.menu|dolphin +Y|Y|${HOME}/.local/share|dolphin|dolphin +Y|Y|${HOME}/.local/share/kxmlgui5|dolphin|dolphin +Y|Y|${HOME}/.local/share/kio/servicemenus|hydewallpaper.desktop|dolphin +N|Y|${HOME}/.config|libinput-gestures.conf|libinput-gestures diff --git a/Scripts/restore_cfg.sh b/Scripts/restore_cfg.sh new file mode 100755 index 0000000..49b4ba5 --- /dev/null +++ b/Scripts/restore_cfg.sh @@ -0,0 +1,83 @@ +#!/usr/bin/env bash +#|---/ /+--------------------------------+---/ /|# +#|--/ /-| Script to restore hyde configs |--/ /-|# +#|-/ /--| Prasanth Rangan |-/ /--|# +#|/ /---+--------------------------------+/ /---|# + +scrDir=$(dirname "$(realpath "$0")") +source "${scrDir}/global_fn.sh" +if [ $? -ne 0 ]; then + echo "Error: unable to source global_fn.sh..." + exit 1 +fi + +CfgLst="${1:-"${scrDir}/restore_cfg.lst"}" +CfgDir="${2:-${cloneDir}/Configs}" +ThemeOverride="${3:-}" + +if [ ! -f "${CfgLst}" ] || [ ! -d "${CfgDir}" ]; then + echo "ERROR: '${CfgLst}' or '${CfgDir}' does not exist..." + exit 1 +fi + +BkpDir="${HOME}/.config/cfg_backups/$(date +'%y%m%d_%Hh%Mm%Ss')${ThemeOverride}" + +if [ -d "${BkpDir}" ]; then + echo "ERROR: ${BkpDir} exists!" + exit 1 +else + mkdir -p "${BkpDir}" +fi + +cat "${CfgLst}" | while read lst; do + + ovrWrte=$(echo "${lst}" | awk -F '|' '{print $1}') + bkpFlag=$(echo "${lst}" | awk -F '|' '{print $2}') + pth=$(echo "${lst}" | awk -F '|' '{print $3}') + pth=$(eval echo "${pth}") + cfg=$(echo "${lst}" | awk -F '|' '{print $4}') + pkg=$(echo "${lst}" | awk -F '|' '{print $5}') + + while read -r pkg_chk; do + if ! pkg_installed "${pkg_chk}"; then + echo -e "\033[0;33m[skip]\033[0m ${pth}/${cfg} as dependency ${pkg_chk} is not installed..." + continue 2 + fi + done < <(echo "${pkg}" | xargs -n 1) + + echo "${cfg}" | xargs -n 1 | while read -r cfg_chk; do + if [[ -z "${pth}" ]]; then continue; fi + tgt=$(echo "${pth}" | sed "s+^${HOME}++g") + + if ( [ -d "${pth}/${cfg_chk}" ] || [ -f "${pth}/${cfg_chk}" ] ) && [ "${bkpFlag}" == "Y" ]; then + + if [ ! -d "${BkpDir}${tgt}" ]; then + mkdir -p "${BkpDir}${tgt}" + fi + + [ "${ovrWrte}" == "Y" ] && mv "${pth}/${cfg_chk}" "${BkpDir}${tgt}" || cp -r "${pth}/${cfg_chk}" "${BkpDir}${tgt}" + echo -e "\033[0;34m[backup]\033[0m ${pth}/${cfg_chk} --> ${BkpDir}${tgt}..." + fi + + if [ ! -d "${pth}" ]; then + mkdir -p "${pth}" + fi + + if [ ! -f "${pth}/${cfg_chk}" ]; then + cp -r "${CfgDir}${tgt}/${cfg_chk}" "${pth}" + echo -e "\033[0;32m[restore]\033[0m ${pth} <-- ${CfgDir}${tgt}/${cfg_chk}..." + elif [ "${ovrWrte}" == "Y" ]; then + cp -r "${CfgDir}$tgt/${cfg_chk}" "${pth}" + echo -e "\033[0;33m[overwrite]\033[0m ${pth} <-- ${CfgDir}${tgt}/${cfg_chk}..." + else + echo -e "\033[0;33m[preserve]\033[0m Skipping ${pth}/${cfg_chk} to preserve user setting..." + fi + done + +done + +if [ -z "${ThemeOverride}" ]; then + if nvidia_detect && [ $(grep '^source = ~/.config/hypr/nvidia.conf' "${HOME}/.config/hypr/hyprland.conf" | wc -l) -eq 0 ]; then + echo -e 'source = ~/.config/hypr/nvidia.conf # auto sourced vars for nvidia\n' >> "${HOME}/.config/hypr/hyprland.conf" + fi +fi diff --git a/Scripts/restore_fnt.lst b/Scripts/restore_fnt.lst new file mode 100644 index 0000000..a02f884 --- /dev/null +++ b/Scripts/restore_fnt.lst @@ -0,0 +1,9 @@ +Font_CascadiaCove|$HOME/.local/share/fonts +Font_MaterialDesign|$HOME/.local/share/fonts +Font_JetBrainsMono|$HOME/.local/share/fonts +Font_MapleNerd|$HOME/.local/share/fonts +Font_MononokiNerd|$HOME/.local/share/fonts +Font_NotoSansCJK|/usr/share/fonts +Cursor_BibataIce|/usr/share/icons +Cursor_BibataIce|$HOME/.icons +Gtk_Wallbash|$HOME/.themes diff --git a/Scripts/restore_fnt.sh b/Scripts/restore_fnt.sh new file mode 100755 index 0000000..eca0d3c --- /dev/null +++ b/Scripts/restore_fnt.sh @@ -0,0 +1,36 @@ +#!/usr/bin/env bash +#|---/ /+------------------------------------+---/ /|# +#|--/ /-| Script to extract fonts and themes |--/ /-|# +#|-/ /--| Prasanth Rangan |-/ /--|# +#|/ /---+------------------------------------+/ /---|# + +scrDir=$(dirname "$(realpath "$0")") +source "${scrDir}/global_fn.sh" +if [ $? -ne 0 ]; then + echo "Error: unable to source global_fn.sh..." + exit 1 +fi + +cat "${scrDir}/restore_fnt.lst" | while read lst; do + + fnt=$(echo "$lst" | awk -F '|' '{print $1}') + tgt=$(echo "$lst" | awk -F '|' '{print $2}') + tgt=$(eval "echo $tgt") + + if [[ "${tgt}" =~ /usr/share/ && -d /run/current-system/sw/share/ ]]; then + echo -e "\e[38;5;4m[skipping]\e[0m ${tgt} on NixOS" + continue + fi + + if [ ! -d "${tgt}" ]; then + mkdir -p "${tgt}" || echo "creating the directory as root instead..." && sudo mkdir -p "${tgt}" + echo -e "\033[0;32m[extract]\033[0m ${tgt} directory created..." + fi + + sudo tar -xzf "${cloneDir}/Source/arcs/${fnt}.tar.gz" -C "${tgt}/" + echo -e "\033[0;32m[extract]\033[0m ${fnt}.tar.gz --> ${tgt}..." + +done + +echo -e "\033[0;32m[fonts]\033[0m rebuilding font cache..." +fc-cache -f diff --git a/Scripts/restore_shl.sh b/Scripts/restore_shl.sh new file mode 100755 index 0000000..bb705fc --- /dev/null +++ b/Scripts/restore_shl.sh @@ -0,0 +1,54 @@ +#!/usr/bin/env bash +#|---/ /+---------------------------+---/ /|# +#|--/ /-| Script to configure shell |--/ /-|# +#|-/ /--| Prasanth Rangan |-/ /--|# +#|/ /---+---------------------------+/ /---|# + +scrDir=$(dirname "$(realpath "$0")") +source "${scrDir}/global_fn.sh" +if [ $? -ne 0 ]; then + echo "Error: unable to source global_fn.sh..." + exit 1 +fi + +if chk_list "myShell" "${shlList[@]}"; then + echo -e "\033[0;32m[SHELL]\033[0m detected // ${myShell}" +else + echo "Error: user shell not found" + exit 1 +fi + +# add zsh plugins +if pkg_installed zsh && pkg_installed oh-my-zsh-git; then + + # set variables + Zsh_rc="${ZDOTDIR:-$HOME}/.zshrc" + Zsh_Path="/usr/share/oh-my-zsh" + Zsh_Plugins="$Zsh_Path/custom/plugins" + Fix_Completion="" + + # generate plugins from list + while read r_plugin; do + z_plugin=$(echo "${r_plugin}" | awk -F '/' '{print $NF}') + if [ "${r_plugin:0:4}" == "http" ] && [ ! -d "${Zsh_Plugins}/${z_plugin}" ]; then + sudo git clone "${r_plugin}" "${Zsh_Plugins}/${z_plugin}" + fi + if [ "${z_plugin}" == "zsh-completions" ] && [ "$(grep 'fpath+=.*plugins/zsh-completions/src' "${Zsh_rc}" | wc -l)" -eq 0 ]; then + Fix_Completion='\nfpath+=${ZSH_CUSTOM:-${ZSH:-/usr/share/oh-my-zsh}/custom}/plugins/zsh-completions/src' + else + [ -z "${z_plugin}" ] || w_plugin+=" ${z_plugin}" + fi + done < <(cut -d '#' -f 1 "${scrDir}/restore_zsh.lst" | sed 's/ //g') + + # update plugin array in zshrc + echo -e "\033[0;32m[SHELL]\033[0m installing plugins (${w_plugin} )" + sed -i "/^plugins=/c\plugins=(${w_plugin} )${Fix_Completion}" "${Zsh_rc}" +fi + +# set shell +if [[ "$(grep "/${USER}:" /etc/passwd | awk -F '/' '{print $NF}')" != "${myShell}" ]]; then + echo -e "\033[0;32m[SHELL]\033[0m changing shell to ${myShell}..." + chsh -s "$(which "${myShell}")" +else + echo -e "\033[0;33m[SKIP]\033[0m ${myShell} is already set as shell..." +fi diff --git a/Scripts/restore_zsh.lst b/Scripts/restore_zsh.lst new file mode 100644 index 0000000..d564320 --- /dev/null +++ b/Scripts/restore_zsh.lst @@ -0,0 +1,8 @@ +git # alias and functions for git commands +sudo # press ESC key twice to execute command with sudo prefix +#python # alias for python +#zsh-interactive-cd # press tab to change dir with fzf +https://github.com/chrissicool/zsh-256color # enhance terminal environment with 256 colors +#https://github.com/zsh-users/zsh-completions # press tab to complete command +https://github.com/zsh-users/zsh-autosuggestions # suggests commands as you type based on history +https://github.com/zsh-users/zsh-syntax-highlighting # highlights commands as you type diff --git a/Scripts/system_ctl.lst b/Scripts/system_ctl.lst new file mode 100644 index 0000000..3e3671a --- /dev/null +++ b/Scripts/system_ctl.lst @@ -0,0 +1,3 @@ +NetworkManager +bluetooth +sddm diff --git a/Scripts/themepatcher.lst b/Scripts/themepatcher.lst new file mode 100644 index 0000000..b3639b4 --- /dev/null +++ b/Scripts/themepatcher.lst @@ -0,0 +1,12 @@ +"Catppuccin Mocha" "https://github.com/HyDE-Project/hyde-themes/tree/Catppuccin-Mocha" +"Catppuccin Latte" "https://github.com/HyDE-Project/hyde-themes/tree/Catppuccin-Latte" +"Rosé Pine" "https://github.com/HyDE-Project/hyde-themes/tree/Rose-Pine" +"Tokyo Night" "https://github.com/HyDE-Project/hyde-themes/tree/Tokyo-Night" +"Material Sakura" "https://github.com/HyDE-Project/hyde-themes/tree/Material-Sakura" +"Graphite Mono" "https://github.com/HyDE-Project/hyde-themes/tree/Graphite-Mono" +"Decay Green" "https://github.com/HyDE-Project/hyde-themes/tree/Decay-Green" +"Edge Runner" "https://github.com/HyDE-Project/hyde-themes/tree/Edge-Runner" +"Frosted Glass" "https://github.com/HyDE-Project/hyde-themes/tree/Frosted-Glass" +"Gruvbox Retro" "https://github.com/HyDE-Project/hyde-themes/tree/Gruvbox-Retro" +"Synth Wave" "https://github.com/HyDE-Project/hyde-themes/tree/Synth-Wave" +"Nordic Blue" "https://github.com/HyDE-Project/hyde-themes/tree/Nordic-Blue" diff --git a/Scripts/themepatcher.sh b/Scripts/themepatcher.sh new file mode 100755 index 0000000..80640a0 --- /dev/null +++ b/Scripts/themepatcher.sh @@ -0,0 +1,217 @@ +#!/usr/bin/env bash +#|---/ /+------------------------------+---/ /|# +#|--/ /-| Script to patch custom theme |--/ /-|# +#|-/ /--| kRHYME7 |-/ /--|# +#|/ /---+------------------------------+/ /---|# + +print_prompt() { + [[ "${verbose}" == "false" ]] && return 0 + while (( "$#" )); do + case "$1" in + -r) echo -ne "\e[31m$2\e[0m"; shift 2 ;; # Red + -g) echo -ne "\e[32m$2\e[0m"; shift 2 ;; # Green + -y) echo -ne "\e[33m$2\e[0m"; shift 2 ;; # Yellow + -b) echo -ne "\e[34m$2\e[0m"; shift 2 ;; # Blue + -m) echo -ne "\e[35m$2\e[0m"; shift 2 ;; # Magenta + -c) echo -ne "\e[36m$2\e[0m"; shift 2 ;; # Cyan + -w) echo -ne "\e[37m$2\e[0m"; shift 2 ;; # White + -n) echo -ne "\e[96m$2\e[0m"; shift 2 ;; # Neon + *) echo -ne "$1"; shift ;; + esac + done + echo "" +} + +scrDir=$(dirname "$(realpath "$0")") +source "${scrDir}/global_fn.sh" +if [ $? -ne 0 ]; then + echo "Error: unable to source global_fn.sh..." + exit 1 +fi + +verbose="${4}" +set +e + +# error function +ask_help() { +cat << HELP +...Usage... +$(print_prompt "$0 " -y "Theme-Name " -c "/Path/to/Configs") +$(print_prompt "$0 " -y "Theme-Name " -c "https://github.com/User/Repository") +$(print_prompt "$0 " -y "Theme-Name " -c "https://github.com/User/Repository/tree/branch") +HELP +} + +if [[ -z $1 || -z $2 ]]; then + ask_help + exit 1 +fi + +dcolDir="${confDir}/hyde/wallbash/Wall-Dcol" +[ ! -d "${dcolDir}" ] && print_prompt "[ERROR]" "${dcolDir} do not exist!" && exit 1 + +# set parameters +Fav_Theme="$1" + +if [ -d "$2" ]; then + Theme_Dir="$2" +else + Git_Repo=${2%/} + if echo "$Git_Repo" | grep -q "/tree/"; then + branch=${Git_Repo#*tree/} + Git_Repo=${Git_Repo%/tree/*} + else + branches=$(curl -s "https://api.github.com/repos/${Git_Repo#*://*/}/branches" | jq -r '.[].name') + branches=($branches) + if [[ ${#branches[@]} -le 1 ]]; then + branch=${branches[0]} + else + echo "Select a Branch" + select branch in "${branches[@]}"; do + [[ -n $branch ]] && break || echo "Invalid selection. Please try again." + done + fi + fi + + Git_Path=${Git_Repo#*://*/} + Git_Owner=${Git_Path%/*} + branch_dir=${branch//\//_} + Theme_Dir="${cacheDir}/themepatcher/${branch_dir}-${Git_Owner}" + + if [ -d "$Theme_Dir" ]; then + print_prompt "Directory $Theme_Dir already exists. Using existing directory." + if cd "$Theme_Dir"; then + git fetch --all &> /dev/null + git reset --hard @{upstream} &> /dev/null + cd - &> /dev/null + else + print_prompt -y "Could not navigate to $Theme_Dir. Skipping git pull." + fi + else + print_prompt "Directory $Theme_Dir does not exist. Cloning repository into new directory." + git clone -b "$branch" --depth 1 "$Git_Repo" "$Theme_Dir" &> /dev/null + if [ $? -ne 0 ]; then + print_prompt "Git clone failed" + exit 1 + fi + fi +fi + +print_prompt "Patching" -g " --// ${Fav_Theme} //-- " "from " -b "${Theme_Dir}\n" + +Fav_Theme_Dir="${Theme_Dir}/Configs/.config/hyde/themes/${Fav_Theme}" +[ ! -d "${Fav_Theme_Dir}" ] && print_prompt -r "[ERROR] " "'${Fav_Theme_Dir}'" -y " Do not Exist" && exit 1 + +config=$(find "${dcolDir}" -type f -name "*.dcol" | awk -v favTheme="${Fav_Theme}" -F 'Wall-Dcol/' '{gsub(/\.dcol$/, ".theme"); print ".config/hyde/themes/" favTheme "/" $2}') +restore_list="" + +while IFS= read -r fchk; do + if [[ -e "${Theme_Dir}/Configs/${fchk}" ]]; then + print_prompt -g "[OK] " "${fchk}" + fbase=$(basename "${fchk}") + fdir=$(dirname "${fchk}") + restore_list+="Y|Y|\${HOME}/${fdir}|${fbase}|hyprland\n" + else + print_prompt -y "[!!] " "${fchk} --> do not exist in ${Theme_Dir}/Configs/" + fi +done <<< "$config" +if [ -f "${Fav_Theme_Dir}/theme.dcol" ];then +print_prompt -n "[ok] " "found theme.dcol to override wallpaper dominant colors" +restore_list+="Y|Y|\${HOME}/.config/hyde/themes/${Fav_Theme}|theme.dcol|hyprland\n" +fi +readonly restore_list + +# Get Wallpapers +wallpapers=$(find "${Fav_Theme_Dir}" -type f \( -iname "*.gif" -o -iname "*.jpg" -o -iname "*.jpeg" -o -iname "*.png" \)) +wallcount="$(echo "${wallpapers}" | wc -l)" +{ [ -z "${wallpapers}" ] && print_prompt -r "[ERROR] " "No wallpapers found" && exit_flag=true ;} || { readonly wallpapers && print_prompt -g "\n[OK] " "wallpapers :: [count] ${wallcount} (.gif+.jpg+.jpeg+.png)" ;} + +# overparsing 😁 +check_tars() { + local trVal + local inVal="${1}" + local gsLow=$(echo "${inVal}" | tr '[:upper:]' '[:lower:]') + # Use hyprland variables that are set in the hypr.theme file + # Using case we can have a predictable output + local gsVal="$( + case "${gsLow}" in + sddm) + grep "^[[:space:]]*\$SDDM[-_]THEME\s*=" "${Fav_Theme_Dir}/hypr.theme" | cut -d '=' -f2 | sed 's/^[[:space:]]*//;s/[[:space:]]*$//' + ;; + gtk) + grep "^[[:space:]]*\$GTK[-_]THEME\s*=" "${Fav_Theme_Dir}/hypr.theme" | cut -d '=' -f2 | sed 's/^[[:space:]]*//;s/[[:space:]]*$//' + ;; + icon) + grep "^[[:space:]]*\$ICON[-_]THEME\s*=" "${Fav_Theme_Dir}/hypr.theme" | cut -d '=' -f2 | sed 's/^[[:space:]]*//;s/[[:space:]]*$//' + ;; + cursor) + grep "^[[:space:]]*\$CURSOR[-_]THEME\s*=" "${Fav_Theme_Dir}/hypr.theme" | cut -d '=' -f2 | sed 's/^[[:space:]]*//;s/[[:space:]]*$//' + ;; + font) + grep "^[[:space:]]*\$FONT\s*=" "${Fav_Theme_Dir}/hypr.theme" | cut -d '=' -f2 | sed 's/^[[:space:]]*//;s/[[:space:]]*$//' + ;; + document-font) + grep "^[[:space:]]*\$DOCUMENT[-_]FONT\s*=" "${Fav_Theme_Dir}/hypr.theme" | cut -d '=' -f2 | sed 's/^[[:space:]]*//;s/[[:space:]]*$//' + ;; + monospace-font) + grep "^[[:space:]]*\$MONOSPACE[-_]FONT\s*=" "${Fav_Theme_Dir}/hypr.theme" | cut -d '=' -f2 | sed 's/^[[:space:]]*//;s/[[:space:]]*$//' + ;; + + *) # fallback to older imple + awk -F"[\"']" '/^[[:space:]]*exec[[:space:]]*=[[:space:]]*gsettings[[:space:]]*set[[:space:]]*org.gnome.desktop.interface[[:space:]]*'${gsLow}'-theme[[:space:]]*/ {last=$2} END {print last}' "${Fav_Theme_Dir}/hypr.theme" + ;; + esac + )" + + # fallback to older imple + gsVal=${gsVal:-$(awk -F"[\"']" '/^[[:space:]]*exec[[:space:]]*=[[:space:]]*gsettings[[:space:]]*set[[:space:]]*org.gnome.desktop.interface[[:space:]]*'${gsLow}'-theme[[:space:]]*/ {last=$2} END {print last}' "${Fav_Theme_Dir}/hypr.theme")} + + if [ ! -z "${gsVal}" ]; then + print_prompt -g "[OK] " "hypr.theme :: [${gsLow}]" -b " ${gsVal}" + trArc="$(find "${Theme_Dir}" -type f -name "${inVal}_*.tar.*")" + [ -f "${trArc}" ] && [ $(echo "${trArc}" | wc -l) -eq 1 ] && trVal="$(basename "$(tar -tf "${trArc}" | cut -d '/' -f1 | sort -u)")" && trVal="$(echo "${trVal}" | grep -w "${gsVal}")" + print_prompt -g "[OK] " "../*.tar.* :: [${gsLow}]" -b " ${trVal}" + [ "${trVal}" != "${gsVal}" ] && print_prompt -r "[ERROR] " "${gsLow}-theme set in hypr.theme does not exist in ${inVal}_*.tar.*" && exit_flag=true + else + [ "${2}" == "--mandatory" ] && print_prompt -r "[ERROR] " "hypr.theme :: [${gsLow}] Not Found" && exit_flag=true && return 0 + print_prompt -y "[!!] " "hypr.theme :: [${gsLow}] Not Found" + fi +} + +check_tars Gtk --mandatory +check_tars Icon +check_tars Cursor +check_tars Sddm +check_tars Font +check_tars Document-Font +check_tars Monospace-Font +print_prompt "" && [[ "${exit_flag}" = true ]] && exit 1 + +# extract arcs +prefix=("Gtk" "Icon" "Cursor") +tgtDir=("$HOME/.themes" "$HOME/.icons" "$HOME/.icons") + +for indx in ${!prefix[@]}; do + tarFile="$(find "${Theme_Dir}" -type f -name "${prefix[indx]}_*.tar.*")" + [ -f "${tarFile}" ] || continue + [ -d "${tgtDir[indx]}" ] || mkdir -p "${tgtDir[indx]}" + tgtChk="$(basename "$(tar -tf "${tarFile}" | cut -d '/' -f1 | sort -u)")" + [ -d "${tgtDir[indx]}/${tgtChk}" ] && print_prompt -y "[skip] " "\"${tgtDir[indx]}/${tgtChk}\" already exists" && continue + print_prompt -g "[extracting] " "${tarFile} --> ${tgtDir[indx]}" + tar -xf "${tarFile}" -C "${tgtDir[indx]}" +done + +# populate wallpaper +Fav_Theme_Walls="${confDir}/hyde/themes/${Fav_Theme}/wallpapers" +[ ! -d "${Fav_Theme_Walls}" ] && mkdir -p "${Fav_Theme_Walls}" +while IFS= read -r walls; do + cp -f "${walls}" "${Fav_Theme_Walls}" +done <<< "${wallpapers}" + +# restore configs with theme override +echo -en "${restore_list}" > "${Theme_Dir}/restore_cfg.lst" +print_prompt -g "\n[exec] " "restore_cfg.sh \"${Theme_Dir}/restore_cfg.lst\" \"${Theme_Dir}/Configs\" \"${Fav_Theme}\"\n" +"${scrDir}/restore_cfg.sh" "${Theme_Dir}/restore_cfg.lst" "${Theme_Dir}/Configs" "${Fav_Theme}" &> /dev/null +[ "${3}" == "--skipcaching" ] || "$HOME/.local/share/bin/swwwallcache.sh" -t "${Fav_Theme}" + +exit 0 diff --git a/Scripts/uninstall.sh b/Scripts/uninstall.sh new file mode 100755 index 0000000..73e3de4 --- /dev/null +++ b/Scripts/uninstall.sh @@ -0,0 +1,98 @@ +#!/usr/bin/env bash +#|---/ /+-------------------------------+---/ /|# +#|--/ /-| Script to remove HyDE configs |--/ /-|# +#|-/ /--| Prasanth Rangan |-/ /--|# +#|/ /---+-------------------------------+/ /---|# + +cat << "EOF" + +------------------------------------------------- + . + / \ _ _ ___ ___ + /^ \ _____ | || |_ _| \| __| + / _ \ |_____| | __ | || | |) | _| + / | | ~\ |_||_|\_, |___/|___| + /.-' '-.\ |__/ + +------------------------------------------------- + + +.: WARNING :: This will remove all config files related to HyDE :. + +please type "DONT HYDE" to continue... +EOF + +read promptIn +[ "${promptIn}" == "DONT HYDE" ] || exit 0 + +cat << "EOF" + + _ _ _ _ + _ _ ___|_|___ ___| |_ ___| | | +| | | | | |_ -| _| .'| | | +|___|_|_|_|_|_|___|_| |__,|_|_| + + +EOF + +scrDir=$(dirname "$(realpath "$0")") +source "${scrDir}/global_fn.sh" +if [ $? -ne 0 ]; then + echo "Error: unable to source global_fn.sh..." + exit 1 +fi + +CfgLst="${scrDir}/restore_cfg.lst" +if [ ! -f "${CfgLst}" ] ; then + echo "ERROR: '${CfgLst}' does not exist..." + exit 1 +fi + +BkpDir="${HOME}/.config/cfg_backups/$(date +'%y%m%d_%Hh%Mm%Ss')_remove" +mkdir -p "${BkpDir}" + +cat "${CfgLst}" | while read lst ; do + pth=$(echo "${lst}" | awk -F '|' '{print $3}') + pth=$(eval echo "${pth}") + cfg=$(echo "${lst}" | awk -F '|' '{print $4}') + + echo "${cfg}" | xargs -n 1 | while read -r cfg_chk; do + [[ -z "${pth}" ]] && continue + if [ -d "${pth}/${cfg_chk}" ] || [ -f "${pth}/${cfg_chk}" ] ; then + tgt=$(echo "${pth}" | sed "s+^${HOME}++g") + if [ ! -d "${BkpDir}${tgt}" ]; then + mkdir -p "${BkpDir}${tgt}" + fi + mv "${pth}/${cfg_chk}" "${BkpDir}${tgt}" + echo -e "\033[0;34m[removed]\033[0m ${pth}/${cfg_chk}" + fi + done +done + +[ -d "$HOME/.config/hyde" ] && rm -rf "$HOME/.config/hyde" +[ -d "$HOME/.cache/hyde" ] && rm -rf "$HOME/.cache/hyde" + +echo -e "\n +------------------------------------------------------- +.: Manual action required to complete uninstallation :. +------------------------------------------------------- + +Remove HyDE related backups/icons/fonts/themes manually from these paths +$HOME/.config/cfg_backups # remove all previous backups +$HOME/.local/share/fonts # remove fonts from here +$HOME/.icons # remove icons from here +$HOME/.themes # remove themes from here + +Revert back bootloader/pacman/sddm settings manually from these backups +/boot/loader/entries/*.conf.t2.bkp # restore systemd-boot from this backup +/etc/default/grub.t2.bkp # restore grub from this backup +/boot/grub/grub.t2.bkp # restore grub from this backup +/usr/share/grub/themes # remove grub themes from here +/etc/pacman.conf.t2.bkp # restore pacman from this backup +/etc/sddm.conf.d/kde_settings.t2.bkp # restore sddm from this backup +/usr/share/sddm/themes # remove sddm themes from here + +Uninstall the packages manually that are no longer required based on these list +${scrDir}/custom_hypr.lst +${scrDir}/custom_apps.lst +" diff --git a/Source/arcs/Code_Wallbash.vsix b/Source/arcs/Code_Wallbash.vsix new file mode 100644 index 0000000..24dea07 Binary files /dev/null and b/Source/arcs/Code_Wallbash.vsix differ diff --git a/Source/arcs/Cursor_BibataIce.tar.gz b/Source/arcs/Cursor_BibataIce.tar.gz new file mode 100644 index 0000000..7ed2b37 Binary files /dev/null and b/Source/arcs/Cursor_BibataIce.tar.gz differ diff --git a/Source/arcs/Firefox_Extensions.tar.gz b/Source/arcs/Firefox_Extensions.tar.gz new file mode 100644 index 0000000..14133b5 Binary files /dev/null and b/Source/arcs/Firefox_Extensions.tar.gz differ diff --git a/Source/arcs/Firefox_UserConfig.tar.gz b/Source/arcs/Firefox_UserConfig.tar.gz new file mode 100644 index 0000000..2ca9f5f Binary files /dev/null and b/Source/arcs/Firefox_UserConfig.tar.gz differ diff --git a/Source/arcs/Font_CascadiaCove.tar.gz b/Source/arcs/Font_CascadiaCove.tar.gz new file mode 100644 index 0000000..858d737 Binary files /dev/null and b/Source/arcs/Font_CascadiaCove.tar.gz differ diff --git a/Source/arcs/Font_JetBrainsMono.tar.gz b/Source/arcs/Font_JetBrainsMono.tar.gz new file mode 100644 index 0000000..8ee58fb Binary files /dev/null and b/Source/arcs/Font_JetBrainsMono.tar.gz differ diff --git a/Source/arcs/Font_MapleNerd.tar.gz b/Source/arcs/Font_MapleNerd.tar.gz new file mode 100644 index 0000000..1681ab0 Binary files /dev/null and b/Source/arcs/Font_MapleNerd.tar.gz differ diff --git a/Source/arcs/Font_MaterialDesign.tar.gz b/Source/arcs/Font_MaterialDesign.tar.gz new file mode 100644 index 0000000..20d1b65 Binary files /dev/null and b/Source/arcs/Font_MaterialDesign.tar.gz differ diff --git a/Source/arcs/Font_MononokiNerd.tar.gz b/Source/arcs/Font_MononokiNerd.tar.gz new file mode 100644 index 0000000..d3890fd Binary files /dev/null and b/Source/arcs/Font_MononokiNerd.tar.gz differ diff --git a/Source/arcs/Font_NotoSansCJK.tar.gz b/Source/arcs/Font_NotoSansCJK.tar.gz new file mode 100644 index 0000000..cf5c0cb Binary files /dev/null and b/Source/arcs/Font_NotoSansCJK.tar.gz differ diff --git a/Source/arcs/Grub_Pochita.tar.gz b/Source/arcs/Grub_Pochita.tar.gz new file mode 100644 index 0000000..fb3de77 Binary files /dev/null and b/Source/arcs/Grub_Pochita.tar.gz differ diff --git a/Source/arcs/Grub_Retroboot.tar.gz b/Source/arcs/Grub_Retroboot.tar.gz new file mode 100644 index 0000000..ca0f7bf Binary files /dev/null and b/Source/arcs/Grub_Retroboot.tar.gz differ diff --git a/Source/arcs/Gtk_Wallbash.tar.gz b/Source/arcs/Gtk_Wallbash.tar.gz new file mode 100644 index 0000000..0aa9c39 Binary files /dev/null and b/Source/arcs/Gtk_Wallbash.tar.gz differ diff --git a/Source/arcs/Sddm_Candy.tar.gz b/Source/arcs/Sddm_Candy.tar.gz new file mode 100644 index 0000000..00eeaf3 Binary files /dev/null and b/Source/arcs/Sddm_Candy.tar.gz differ diff --git a/Source/arcs/Sddm_Corners.tar.gz b/Source/arcs/Sddm_Corners.tar.gz new file mode 100644 index 0000000..2a486de Binary files /dev/null and b/Source/arcs/Sddm_Corners.tar.gz differ diff --git a/Source/arcs/Spotify_Sleek.tar.gz b/Source/arcs/Spotify_Sleek.tar.gz new file mode 100644 index 0000000..c04aa8a Binary files /dev/null and b/Source/arcs/Spotify_Sleek.tar.gz differ diff --git a/Source/arcs/Steam_Metro.tar.gz b/Source/arcs/Steam_Metro.tar.gz new file mode 100644 index 0000000..69c30d0 Binary files /dev/null and b/Source/arcs/Steam_Metro.tar.gz differ diff --git a/Source/assets/Arch.svg b/Source/assets/Arch.svg new file mode 100644 index 0000000..ea1befc --- /dev/null +++ b/Source/assets/Arch.svg @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + diff --git a/Source/assets/Installation.gif b/Source/assets/Installation.gif new file mode 100644 index 0000000..c14cee0 Binary files /dev/null and b/Source/assets/Installation.gif differ diff --git a/Source/assets/Keybindings.gif b/Source/assets/Keybindings.gif new file mode 100644 index 0000000..c3b43c3 Binary files /dev/null and b/Source/assets/Keybindings.gif differ diff --git a/Source/assets/Styles.gif b/Source/assets/Styles.gif new file mode 100644 index 0000000..b108b64 Binary files /dev/null and b/Source/assets/Styles.gif differ diff --git a/Source/assets/Themes.gif b/Source/assets/Themes.gif new file mode 100644 index 0000000..9efd1e5 Binary files /dev/null and b/Source/assets/Themes.gif differ diff --git a/Source/assets/Updating.gif b/Source/assets/Updating.gif new file mode 100644 index 0000000..17957a0 Binary files /dev/null and b/Source/assets/Updating.gif differ diff --git a/Source/assets/arch.png b/Source/assets/arch.png new file mode 100644 index 0000000..db5a7e8 Binary files /dev/null and b/Source/assets/arch.png differ diff --git a/Source/assets/game_launch_1.png b/Source/assets/game_launch_1.png new file mode 100644 index 0000000..99b35ab Binary files /dev/null and b/Source/assets/game_launch_1.png differ diff --git a/Source/assets/game_launch_2.png b/Source/assets/game_launch_2.png new file mode 100644 index 0000000..e82bacb Binary files /dev/null and b/Source/assets/game_launch_2.png differ diff --git a/Source/assets/game_launch_3.png b/Source/assets/game_launch_3.png new file mode 100644 index 0000000..b6425cd Binary files /dev/null and b/Source/assets/game_launch_3.png differ diff --git a/Source/assets/game_launch_4.png b/Source/assets/game_launch_4.png new file mode 100644 index 0000000..d618709 Binary files /dev/null and b/Source/assets/game_launch_4.png differ diff --git a/Source/assets/game_launch_5.png b/Source/assets/game_launch_5.png new file mode 100644 index 0000000..f61fbcb Binary files /dev/null and b/Source/assets/game_launch_5.png differ diff --git a/Source/assets/hyde.png b/Source/assets/hyde.png new file mode 100644 index 0000000..77b57ae Binary files /dev/null and b/Source/assets/hyde.png differ diff --git a/Source/assets/hyde_banner.png b/Source/assets/hyde_banner.png new file mode 100644 index 0000000..481cfa1 Binary files /dev/null and b/Source/assets/hyde_banner.png differ diff --git a/Source/assets/hyprdots_arch.png b/Source/assets/hyprdots_arch.png new file mode 100644 index 0000000..ff5fd22 Binary files /dev/null and b/Source/assets/hyprdots_arch.png differ diff --git a/Source/assets/hyprdots_banner.png b/Source/assets/hyprdots_banner.png new file mode 100644 index 0000000..cbcb103 Binary files /dev/null and b/Source/assets/hyprdots_banner.png differ diff --git a/Source/assets/hyprdots_logo.png b/Source/assets/hyprdots_logo.png new file mode 100644 index 0000000..b008e7a Binary files /dev/null and b/Source/assets/hyprdots_logo.png differ diff --git a/Source/assets/notif_action_sel.png b/Source/assets/notif_action_sel.png new file mode 100644 index 0000000..fd0edb7 Binary files /dev/null and b/Source/assets/notif_action_sel.png differ diff --git a/Source/assets/rofi_style_1.png b/Source/assets/rofi_style_1.png new file mode 100644 index 0000000..6950892 Binary files /dev/null and b/Source/assets/rofi_style_1.png differ diff --git a/Source/assets/rofi_style_10.png b/Source/assets/rofi_style_10.png new file mode 100644 index 0000000..2051339 Binary files /dev/null and b/Source/assets/rofi_style_10.png differ diff --git a/Source/assets/rofi_style_11.png b/Source/assets/rofi_style_11.png new file mode 100644 index 0000000..906c748 Binary files /dev/null and b/Source/assets/rofi_style_11.png differ diff --git a/Source/assets/rofi_style_12.png b/Source/assets/rofi_style_12.png new file mode 100644 index 0000000..991a59a Binary files /dev/null and b/Source/assets/rofi_style_12.png differ diff --git a/Source/assets/rofi_style_2.png b/Source/assets/rofi_style_2.png new file mode 100644 index 0000000..2dd41e0 Binary files /dev/null and b/Source/assets/rofi_style_2.png differ diff --git a/Source/assets/rofi_style_3.png b/Source/assets/rofi_style_3.png new file mode 100644 index 0000000..c994e3c Binary files /dev/null and b/Source/assets/rofi_style_3.png differ diff --git a/Source/assets/rofi_style_4.png b/Source/assets/rofi_style_4.png new file mode 100644 index 0000000..121d4fa Binary files /dev/null and b/Source/assets/rofi_style_4.png differ diff --git a/Source/assets/rofi_style_5.png b/Source/assets/rofi_style_5.png new file mode 100644 index 0000000..781fda7 Binary files /dev/null and b/Source/assets/rofi_style_5.png differ diff --git a/Source/assets/rofi_style_6.png b/Source/assets/rofi_style_6.png new file mode 100644 index 0000000..6c921ad Binary files /dev/null and b/Source/assets/rofi_style_6.png differ diff --git a/Source/assets/rofi_style_7.png b/Source/assets/rofi_style_7.png new file mode 100644 index 0000000..032d8b6 Binary files /dev/null and b/Source/assets/rofi_style_7.png differ diff --git a/Source/assets/rofi_style_8.png b/Source/assets/rofi_style_8.png new file mode 100644 index 0000000..bdc90fb Binary files /dev/null and b/Source/assets/rofi_style_8.png differ diff --git a/Source/assets/rofi_style_9.png b/Source/assets/rofi_style_9.png new file mode 100644 index 0000000..1fd7151 Binary files /dev/null and b/Source/assets/rofi_style_9.png differ diff --git a/Source/assets/rofi_style_sel.png b/Source/assets/rofi_style_sel.png new file mode 100644 index 0000000..307a1d4 Binary files /dev/null and b/Source/assets/rofi_style_sel.png differ diff --git a/Source/assets/showcase_1.png b/Source/assets/showcase_1.png new file mode 100644 index 0000000..a2c1f56 Binary files /dev/null and b/Source/assets/showcase_1.png differ diff --git a/Source/assets/showcase_2.png b/Source/assets/showcase_2.png new file mode 100644 index 0000000..8b41118 Binary files /dev/null and b/Source/assets/showcase_2.png differ diff --git a/Source/assets/showcase_3.png b/Source/assets/showcase_3.png new file mode 100644 index 0000000..5908c92 Binary files /dev/null and b/Source/assets/showcase_3.png differ diff --git a/Source/assets/showcase_4.png b/Source/assets/showcase_4.png new file mode 100644 index 0000000..94ae0a6 Binary files /dev/null and b/Source/assets/showcase_4.png differ diff --git a/Source/assets/theme_cedge_1.png b/Source/assets/theme_cedge_1.png new file mode 100644 index 0000000..5767b09 Binary files /dev/null and b/Source/assets/theme_cedge_1.png differ diff --git a/Source/assets/theme_cedge_2.png b/Source/assets/theme_cedge_2.png new file mode 100644 index 0000000..c53c749 Binary files /dev/null and b/Source/assets/theme_cedge_2.png differ diff --git a/Source/assets/theme_decay_1.png b/Source/assets/theme_decay_1.png new file mode 100644 index 0000000..3c72218 Binary files /dev/null and b/Source/assets/theme_decay_1.png differ diff --git a/Source/assets/theme_decay_2.png b/Source/assets/theme_decay_2.png new file mode 100644 index 0000000..12e0454 Binary files /dev/null and b/Source/assets/theme_decay_2.png differ diff --git a/Source/assets/theme_frosted_1.png b/Source/assets/theme_frosted_1.png new file mode 100644 index 0000000..3f74633 Binary files /dev/null and b/Source/assets/theme_frosted_1.png differ diff --git a/Source/assets/theme_frosted_2.png b/Source/assets/theme_frosted_2.png new file mode 100644 index 0000000..a1e2b12 Binary files /dev/null and b/Source/assets/theme_frosted_2.png differ diff --git a/Source/assets/theme_graph_1.png b/Source/assets/theme_graph_1.png new file mode 100644 index 0000000..300411c Binary files /dev/null and b/Source/assets/theme_graph_1.png differ diff --git a/Source/assets/theme_graph_2.png b/Source/assets/theme_graph_2.png new file mode 100644 index 0000000..f8668b6 Binary files /dev/null and b/Source/assets/theme_graph_2.png differ diff --git a/Source/assets/theme_gruvbox_1.png b/Source/assets/theme_gruvbox_1.png new file mode 100644 index 0000000..15ebf48 Binary files /dev/null and b/Source/assets/theme_gruvbox_1.png differ diff --git a/Source/assets/theme_gruvbox_2.png b/Source/assets/theme_gruvbox_2.png new file mode 100644 index 0000000..f838f1e Binary files /dev/null and b/Source/assets/theme_gruvbox_2.png differ diff --git a/Source/assets/theme_latte_1.png b/Source/assets/theme_latte_1.png new file mode 100644 index 0000000..bc0640d Binary files /dev/null and b/Source/assets/theme_latte_1.png differ diff --git a/Source/assets/theme_latte_2.png b/Source/assets/theme_latte_2.png new file mode 100644 index 0000000..a402aa0 Binary files /dev/null and b/Source/assets/theme_latte_2.png differ diff --git a/Source/assets/theme_maura_1.png b/Source/assets/theme_maura_1.png new file mode 100644 index 0000000..278550f Binary files /dev/null and b/Source/assets/theme_maura_1.png differ diff --git a/Source/assets/theme_maura_2.png b/Source/assets/theme_maura_2.png new file mode 100644 index 0000000..27863f2 Binary files /dev/null and b/Source/assets/theme_maura_2.png differ diff --git a/Source/assets/theme_mocha_1.png b/Source/assets/theme_mocha_1.png new file mode 100644 index 0000000..bf14afd Binary files /dev/null and b/Source/assets/theme_mocha_1.png differ diff --git a/Source/assets/theme_mocha_2.png b/Source/assets/theme_mocha_2.png new file mode 100644 index 0000000..a1e1e3a Binary files /dev/null and b/Source/assets/theme_mocha_2.png differ diff --git a/Source/assets/theme_rosine_1.png b/Source/assets/theme_rosine_1.png new file mode 100644 index 0000000..2477bc5 Binary files /dev/null and b/Source/assets/theme_rosine_1.png differ diff --git a/Source/assets/theme_rosine_2.png b/Source/assets/theme_rosine_2.png new file mode 100644 index 0000000..64a9bbc Binary files /dev/null and b/Source/assets/theme_rosine_2.png differ diff --git a/Source/assets/theme_select_1.png b/Source/assets/theme_select_1.png new file mode 100644 index 0000000..9c48596 Binary files /dev/null and b/Source/assets/theme_select_1.png differ diff --git a/Source/assets/theme_select_2.png b/Source/assets/theme_select_2.png new file mode 100644 index 0000000..c8171a9 Binary files /dev/null and b/Source/assets/theme_select_2.png differ diff --git a/Source/assets/theme_tokyo_1.png b/Source/assets/theme_tokyo_1.png new file mode 100644 index 0000000..997bb82 Binary files /dev/null and b/Source/assets/theme_tokyo_1.png differ diff --git a/Source/assets/theme_tokyo_2.png b/Source/assets/theme_tokyo_2.png new file mode 100644 index 0000000..ad30413 Binary files /dev/null and b/Source/assets/theme_tokyo_2.png differ diff --git a/Source/assets/walls_select.png b/Source/assets/walls_select.png new file mode 100644 index 0000000..90a2267 Binary files /dev/null and b/Source/assets/walls_select.png differ diff --git a/Source/assets/wb_mode_sel.png b/Source/assets/wb_mode_sel.png new file mode 100644 index 0000000..c40a6b2 Binary files /dev/null and b/Source/assets/wb_mode_sel.png differ diff --git a/Source/assets/wlog_style_1.png b/Source/assets/wlog_style_1.png new file mode 100644 index 0000000..4ea4514 Binary files /dev/null and b/Source/assets/wlog_style_1.png differ diff --git a/Source/assets/wlog_style_2.png b/Source/assets/wlog_style_2.png new file mode 100644 index 0000000..b5fd2f2 Binary files /dev/null and b/Source/assets/wlog_style_2.png differ diff --git a/Source/assets/yt_playlist.png b/Source/assets/yt_playlist.png new file mode 100644 index 0000000..72c64ef Binary files /dev/null and b/Source/assets/yt_playlist.png differ diff --git a/Source/misc/nightTab_backdrop.jpg b/Source/misc/nightTab_backdrop.jpg new file mode 100644 index 0000000..7b61f8d Binary files /dev/null and b/Source/misc/nightTab_backdrop.jpg differ diff --git a/Source/misc/nightTab_config.json b/Source/misc/nightTab_config.json new file mode 100644 index 0000000..c739d88 --- /dev/null +++ b/Source/misc/nightTab_config.json @@ -0,0 +1 @@ +{"nightTab":true,"version":"7.3.0","state":{"layout":{"area":{"header":{"width":100,"justify":"left"},"bookmark":{"width":100,"justify":"center"}},"alignment":"center-center","order":"header-bookmark","direction":"vertical","size":85,"width":50,"padding":80,"gutter":20,"breakpoint":"xl","scrollbar":"auto","title":"","favicon":"","overscroll":false},"header":{"item":{"justify":"left"},"greeting":{"show":true,"type":"custom","custom":"ウエルカム ティトゥ","name":"","size":100,"newLine":true},"transitional":{"show":true,"type":"its","size":100,"newLine":false},"clock":{"hour":{"show":true,"display":"number"},"minute":{"show":true,"display":"number"},"second":{"show":false,"display":"number"},"separator":{"show":true,"text":""},"meridiem":{"show":true},"hour24":{"show":false},"size":100,"newLine":false},"date":{"day":{"show":false,"display":"word","weekStart":"monday","length":"long"},"date":{"show":true,"display":"number","ordinal":true},"month":{"show":true,"display":"word","length":"short","ordinal":true},"year":{"show":true,"display":"number"},"separator":{"show":false,"text":""},"format":"date-month","size":100,"newLine":false},"search":{"show":false,"width":{"by":"auto","size":30},"engine":{"selected":"google","custom":{"name":"","url":"","queryName":""}},"text":{"justify":"center"},"size":100,"newLine":false,"newTab":false},"order":["greeting","transitional","clock","date"],"edit":false},"bookmark":{"size":82,"url":{"show":false},"line":{"show":false},"shadow":{"show":true},"hoverScale":{"show":true},"orientation":"bottom","style":"block","newTab":false,"edit":false,"add":false,"show":true,"item":{}},"group":{"area":{"justify":"left"},"order":"header-body","name":{"size":100},"toolbar":{"size":100},"edit":false,"add":false},"toolbar":{"location":"corner","position":"bottom-right","size":50,"accent":{"show":true},"add":{"show":true},"edit":{"show":true},"newLine":false},"theme":{"color":{"range":{"primary":{"h":270,"s":10}},"contrast":{"start":0,"end":80},"shades":14},"accent":{"hsl":{"h":0,"s":0,"l":100},"rgb":{"r":255,"g":255,"b":255},"random":{"active":false,"style":"any"},"cycle":{"active":false,"speed":300,"step":10}},"font":{"display":{"name":"Dosis","weight":300,"style":"normal"},"ui":{"name":"Inria Sans","weight":300,"style":"normal"}},"background":{"type":"image","color":{"rgb":{"r":0,"g":0,"b":0},"hsl":{"h":0,"s":0,"l":0}},"gradient":{"angle":160,"start":{"hsl":{"h":206,"s":16,"l":40},"rgb":{"r":86,"g":104,"b":118}},"end":{"hsl":{"h":219,"s":28,"l":12},"rgb":{"r":22,"g":28,"b":39}}},"image":{"url":"https://raw.githubusercontent.com/prasanthrangan/hyprdots/main/Source/misc/nightTab_backdrop.jpg","blur":0,"opacity":30,"scale":100,"grayscale":50,"accent":0,"vignette":{"opacity":0,"start":90,"end":70}},"video":{"url":"","blur":0,"opacity":100,"scale":100,"grayscale":0,"accent":0,"vignette":{"opacity":0,"start":90,"end":70}}},"opacity":{"general":0},"layout":{"color":{"by":"custom","blur":80,"opacity":30,"hsl":{"h":0,"s":0,"l":0},"rgb":{"r":0,"g":0,"b":0}},"divider":{"size":0}},"header":{"color":{"by":"theme","opacity":10,"hsl":{"h":0,"s":0,"l":0},"rgb":{"r":0,"g":0,"b":0}},"search":{"opacity":0}},"bookmark":{"color":{"by":"theme","opacity":10,"hsl":{"h":0,"s":0,"l":0},"rgb":{"r":0,"g":0,"b":0}},"item":{"border":0,"opacity":80}},"group":{"toolbar":{"opacity":0}},"toolbar":{"opacity":0},"style":"system","radius":180,"shadow":75,"shade":{"opacity":5,"blur":0},"custom":{"all":[{"name":"Zeni","color":{"range":{"primary":{"h":270,"s":10,"l":8}},"contrast":{"start":0,"end":80}},"accent":{"hsl":{"h":0,"s":0,"l":100},"rgb":{"r":255,"g":255,"b":255}},"font":{"display":{"name":"Dosis","weight":300,"style":"normal"},"ui":{"name":"Inria Sans","weight":300,"style":"normal"}},"background":{"type":"image","color":{"rgb":{"r":0,"g":0,"b":0},"hsl":{"h":0,"s":0,"l":0}},"gradient":{"angle":160,"start":{"hsl":{"h":206,"s":16,"l":40},"rgb":{"r":86,"g":104,"b":118}},"end":{"hsl":{"h":219,"s":28,"l":12},"rgb":{"r":22,"g":28,"b":39}}},"image":{"url":"https://raw.githubusercontent.com/prasanthrangan/hyprdots/main/Source/misc/rainworld.jpg","blur":0,"opacity":30,"scale":100,"grayscale":50,"accent":0,"vignette":{"opacity":0,"start":90,"end":70}},"video":{"url":"","blur":0,"opacity":100,"scale":100,"grayscale":0,"accent":0,"vignette":{"opacity":0,"start":90,"end":70}}},"radius":180,"shadow":75,"style":"system","shade":{"opacity":5,"blur":0},"opacity":{"general":0},"layout":{"color":{"by":"custom","blur":80,"opacity":30,"hsl":{"h":0,"s":0,"l":0},"rgb":{"r":0,"g":0,"b":0}},"divider":{"size":0}},"header":{"color":{"by":"theme","opacity":10,"hsl":{"h":0,"s":0,"l":0},"rgb":{"r":0,"g":0,"b":0}},"search":{"opacity":0}},"bookmark":{"color":{"by":"theme","opacity":10,"hsl":{"h":0,"s":0,"l":0},"rgb":{"r":0,"g":0,"b":0}},"item":{"border":0,"opacity":80}},"group":{"toolbar":{"opacity":0}},"toolbar":{"opacity":0}}],"edit":false}},"search":false,"modal":false,"menu":true},"bookmark":[{"name":{"text":"Fav","show":false},"collapse":false,"toolbar":{"openAll":{"show":false},"collapse":{"show":false}},"items":[{"url":"https://www.google.com/","display":{"alignment":"center-center","direction":"vertical","order":"visual-name","rotate":0,"translate":{"x":0,"y":0},"gutter":25,"name":{"show":false,"text":"","size":7},"visual":{"show":true,"type":"icon","size":25,"letter":{"text":""},"icon":{"name":"google","prefix":"fab","label":"Google Logo"},"image":{"url":""},"shadow":{"size":0}}},"accent":{"by":"theme","hsl":{"h":0,"s":0,"l":0},"rgb":{"r":0,"g":0,"b":0}},"color":{"by":"theme","hsl":{"h":0,"s":0,"l":0},"rgb":{"r":0,"g":0,"b":0},"opacity":80},"background":{"show":false,"type":"image","opacity":100,"image":{"url":""},"video":{"url":""}},"border":0,"shape":{"wide":false,"tall":false},"timestamp":1653109570692},{"url":"https://www.youtube.com/feed/subscriptions","display":{"alignment":"center-center","direction":"vertical","order":"visual-name","rotate":0,"translate":{"x":0,"y":0},"gutter":25,"name":{"show":false,"text":"","size":7},"visual":{"show":true,"type":"icon","size":25,"letter":{"text":""},"icon":{"name":"youtube","prefix":"fab","label":"YouTube"},"image":{"url":""},"shadow":{"size":0}}},"accent":{"by":"theme","hsl":{"h":0,"s":0,"l":0},"rgb":{"r":0,"g":0,"b":0}},"color":{"by":"theme","hsl":{"h":0,"s":0,"l":0},"rgb":{"r":0,"g":0,"b":0},"opacity":80},"background":{"show":false,"type":"image","opacity":100,"image":{"url":""},"video":{"url":""}},"border":0,"shape":{"wide":false,"tall":false},"timestamp":1653110699948},{"url":"https://store.steampowered.com/","display":{"alignment":"center-center","direction":"vertical","order":"visual-name","rotate":0,"translate":{"x":0,"y":0},"gutter":25,"name":{"show":false,"text":"","size":7},"visual":{"show":true,"type":"icon","size":25,"letter":{"text":""},"icon":{"name":"steam","prefix":"fab","label":"Steam"},"image":{"url":""},"shadow":{"size":0}}},"accent":{"by":"theme","hsl":{"h":0,"s":0,"l":0},"rgb":{"r":0,"g":0,"b":0}},"color":{"by":"theme","hsl":{"h":0,"s":0,"l":0},"rgb":{"r":0,"g":0,"b":0},"opacity":80},"background":{"show":false,"type":"image","opacity":100,"image":{"url":""},"video":{"url":""}},"border":0,"shape":{"wide":false,"tall":false},"timestamp":1653111274720},{"url":"https://www.protondb.com/","display":{"alignment":"center-center","direction":"vertical","order":"visual-name","rotate":0,"translate":{"x":0,"y":0},"gutter":25,"name":{"show":false,"text":"Netflix","size":7},"visual":{"show":true,"type":"icon","size":25,"letter":{"text":"Netflix"},"icon":{"name":"atom","prefix":"fas","label":"Atom"},"image":{"url":"https://pngshare.com/wp-content/uploads/2021/06/Netflix-Logo-Icon-Black-8.png"},"shadow":{"size":0}}},"accent":{"by":"theme","hsl":{"h":0,"s":0,"l":0},"rgb":{"r":0,"g":0,"b":0}},"color":{"by":"theme","hsl":{"h":0,"s":0,"l":0},"rgb":{"r":0,"g":0,"b":0},"opacity":80},"background":{"show":false,"type":"image","opacity":100,"image":{"url":""},"video":{"url":""}},"border":0,"shape":{"wide":false,"tall":false},"timestamp":1626298022303},{"url":"https://github.com/","display":{"alignment":"center-center","direction":"vertical","order":"visual-name","rotate":0,"translate":{"x":0,"y":0},"gutter":25,"name":{"show":true,"text":"","size":7},"visual":{"show":true,"type":"icon","size":25,"letter":{"text":""},"icon":{"name":"github-alt","prefix":"fab","label":"Alternate GitHub"},"image":{"url":""},"shadow":{"size":0}}},"accent":{"by":"theme","hsl":{"h":0,"s":0,"l":0},"rgb":{"r":0,"g":0,"b":0}},"color":{"by":"theme","hsl":{"h":0,"s":0,"l":0},"rgb":{"r":0,"g":0,"b":0},"opacity":80},"background":{"show":false,"type":"image","opacity":100,"image":{"url":""},"video":{"url":""}},"border":0,"shape":{"wide":false,"tall":false},"timestamp":1653111473095},{"url":"https://www.reddit.com/","display":{"alignment":"center-center","direction":"vertical","order":"visual-name","rotate":0,"translate":{"x":0,"y":0},"gutter":25,"name":{"show":false,"text":"Reddit","size":7},"visual":{"show":true,"type":"icon","size":25,"letter":{"text":"R"},"icon":{"name":"reddit-alien","prefix":"fab","label":"reddit Alien"},"image":{"url":""},"shadow":{"size":0}}},"accent":{"by":"theme","hsl":{"h":0,"s":0,"l":0},"rgb":{"r":0,"g":0,"b":0}},"color":{"by":"theme","hsl":{"h":0,"s":0,"l":0},"rgb":{"r":0,"g":0,"b":0},"opacity":80},"background":{"show":false,"type":"image","opacity":100,"image":{"url":""},"video":{"url":""}},"border":0,"shape":{"wide":false,"tall":false},"timestamp":1626298017175},{"url":"https://discord.com/channels/@me","display":{"alignment":"center-center","direction":"vertical","order":"visual-name","rotate":0,"translate":{"x":0,"y":0},"gutter":25,"name":{"show":false,"text":"","size":7},"visual":{"show":true,"type":"icon","size":25,"letter":{"text":""},"icon":{"name":"discord","prefix":"fab","label":"Discord"},"image":{"url":""},"shadow":{"size":0}}},"accent":{"by":"theme","hsl":{"h":0,"s":0,"l":0},"rgb":{"r":0,"g":0,"b":0}},"color":{"by":"theme","hsl":{"h":0,"s":0,"l":0},"rgb":{"r":0,"g":0,"b":0},"opacity":80},"background":{"show":false,"type":"image","opacity":100,"image":{"url":""},"video":{"url":""}},"border":0,"shape":{"wide":false,"tall":false},"timestamp":1653111014835},{"url":"https://www.amazon.in/","display":{"alignment":"center-center","direction":"vertical","order":"visual-name","rotate":0,"translate":{"x":0,"y":0},"gutter":25,"name":{"show":false,"text":"Amazon","size":7},"visual":{"show":true,"type":"icon","size":25,"letter":{"text":"AZ"},"icon":{"name":"amazon","prefix":"fab","label":"Amazon"},"image":{"url":""},"shadow":{"size":0}}},"accent":{"by":"theme","hsl":{"h":0,"s":0,"l":0},"rgb":{"r":0,"g":0,"b":0}},"color":{"by":"theme","hsl":{"h":0,"s":0,"l":0},"rgb":{"r":0,"g":0,"b":0},"opacity":80},"background":{"show":false,"type":"image","opacity":100,"image":{"url":""},"video":{"url":""}},"border":0,"shape":{"wide":false,"tall":false},"timestamp":1626297999213}]}]} \ No newline at end of file diff --git a/Source/misc/tittu.face.icon b/Source/misc/tittu.face.icon new file mode 100644 index 0000000..4c350fe Binary files /dev/null and b/Source/misc/tittu.face.icon differ