diff --git a/.config/Kvantum/Colloid/Colloid.kvconfig b/.config/Kvantum/Colloid/Colloid.kvconfig
new file mode 100644
index 000000000..1294ba409
--- /dev/null
+++ b/.config/Kvantum/Colloid/Colloid.kvconfig
@@ -0,0 +1,576 @@
+[%General]
+author=Vince Liuice, based on KvAdapta by Tsu Jan
+comment=An uncomplicated theme inspired by the Materia GTK theme
+x11drag=none
+alt_mnemonic=true
+left_tabs=false
+attach_active_tab=false
+mirror_doc_tabs=true
+group_toolbar_buttons=false
+toolbar_item_spacing=0
+toolbar_interior_spacing=2
+spread_progressbar=true
+composite=false
+menu_shadow_depth=6
+spread_menuitems=false
+tooltip_shadow_depth=7
+splitter_width=1
+scroll_width=9
+scroll_arrows=false
+scroll_min_extent=60
+slider_width=2
+slider_handle_width=23
+slider_handle_length=22
+tickless_slider_handle_size=22
+center_toolbar_handle=true
+check_size=24
+textless_progressbar=false
+progressbar_thickness=2
+menubar_mouse_tracking=true
+toolbutton_style=1
+double_click=false
+translucent_windows=false
+blurring=false
+popup_blurring=false
+vertical_spin_indicators=false
+spin_button_width=24
+fill_rubberband=false
+merge_menubar_with_toolbar=true
+small_icon_size=16
+large_icon_size=32
+button_icon_size=16
+toolbar_icon_size=16
+combo_as_lineedit=true
+animate_states=true
+button_contents_shift=false
+combo_menu=true
+hide_combo_checkboxes=true
+combo_focus_rect=false
+groupbox_top_label=true
+inline_spin_indicators=true
+joined_inactive_tabs=false
+layout_spacing=3
+layout_margin=3
+scrollbar_in_view=true
+transient_scrollbar=true
+transient_groove=false
+submenu_overlap=0
+tooltip_delay=0
+tree_branch_line=false
+no_window_pattern=false
+opaque=kaffeine,kmplayer,subtitlecomposer,kdenlive,vlc,smplayer,smplayer2,avidemux,avidemux2_qt4,avidemux3_qt4,avidemux3_qt5,kamoso,QtCreator,VirtualBox,trojita,dragon,digikam
+reduce_window_opacity=0
+respect_DE=true
+scrollable_menu=false
+submenu_delay=150
+no_inactiveness=false
+reduce_menu_opacity=0
+click_behavior=2
+contrast=1.00
+dialog_button_layout=0
+intensity=1.00
+saturation=1.00
+shadowless_popup=false
+drag_from_buttons=false
+menu_blur_radius=0
+tooltip_blur_radius=0
+
+[GeneralColors]
+window.color=#F5F5F5
+base.color=#ffffff
+alt.base.color=#f8f8f8
+button.color=#f2f2f2
+light.color=#ffffff
+mid.light.color=#f0f0f0
+dark.color=#c8c8c8
+mid.color=#e1e1e1
+highlight.color=#3c84f7
+inactive.highlight.color=#3c84f7
+text.color=#444444
+window.text.color=#444444
+button.text.color=#444444
+disabled.text.color=#44444474
+tooltip.text.color=#444444
+highlight.text.color=#333333
+link.color=#0057AE
+link.visited.color=#E040FB
+progress.indicator.text.color=#444444
+
+[Hacks]
+transparent_ktitle_label=true
+transparent_dolphin_view=true
+transparent_pcmanfm_sidepane=true
+blur_translucent=false
+transparent_menutitle=true
+respect_darkness=true
+kcapacitybar_as_progressbar=true
+force_size_grip=true
+iconless_pushbutton=false
+iconless_menu=false
+disabled_icon_opacity=100
+lxqtmainmenu_iconsize=16
+normal_default_pushbutton=true
+single_top_toolbar=true
+tint_on_mouseover=0
+transparent_pcmanfm_view=true
+no_selection_tint=true
+transparent_arrow_button=true
+middle_click_scroll=false
+opaque_colors=false
+kinetic_scrolling=false
+scroll_jump_workaround=true
+centered_forms=false
+noninteger_translucency=false
+style_vertical_toolbars=false
+blur_only_active_window=true
+
+[PanelButtonCommand]
+frame=true
+frame.element=button
+frame.top=6
+frame.bottom=6
+frame.left=6
+frame.right=6
+interior=true
+interior.element=button
+indicator.size=8
+text.normal.color=#444444
+text.focus.color=#444444
+text.press.color=#333333
+text.toggle.color=white
+highlight.text.color=white
+text.shadow=0
+text.margin=4
+text.iconspacing=4
+indicator.element=arrow
+frame.expansion=0
+
+[PanelButtonTool]
+inherits=PanelButtonCommand
+text.normal.color=#444444
+text.focus.color=#444444
+text.press.color=#333333
+text.toggle.color=white
+text.disabled.color=#44444474
+text.bold=false
+indicator.element=arrow
+indicator.size=8
+frame.expansion=0
+
+[ToolbarButton]
+frame=true
+frame.element=tbutton
+interior.element=tbutton
+frame.top=14
+frame.bottom=14
+frame.left=14
+frame.right=14
+indicator.element=tarrow
+text.normal.color=#444444
+text.focus.color=#444444
+text.press.color=#333333
+text.toggle.color=#333333
+text.disabled.color=#44444474
+text.bold=false
+frame.expansion=28
+
+[Dock]
+inherits=PanelButtonCommand
+interior.element=dock
+frame.element=dock
+frame.top=1
+frame.bottom=1
+frame.left=1
+frame.right=1
+text.normal.color=#444444
+
+[DockTitle]
+inherits=PanelButtonCommand
+frame=false
+interior=false
+text.normal.color=#444444
+text.focus.color=#444444
+text.bold=false
+
+[IndicatorSpinBox]
+inherits=PanelButtonCommand
+frame=true
+interior=true
+frame.top=2
+frame.bottom=2
+frame.left=2
+frame.right=2
+indicator.element=spin
+indicator.size=8
+text.normal.color=#444444
+text.margin.top=2
+text.margin.bottom=2
+text.margin.left=2
+text.margin.right=2
+
+[RadioButton]
+inherits=PanelButtonCommand
+frame=false
+interior.element=radio
+text.normal.color=#444444
+text.focus.color=#444444
+text.press.color=#333333
+text.toggle.color=#333333
+min_width=+0.3font
+min_height=+0.3font
+
+[CheckBox]
+inherits=PanelButtonCommand
+frame=false
+interior.element=checkbox
+text.normal.color=#444444
+text.focus.color=#444444
+text.press.color=#333333
+text.toggle.color=#333333
+min_width=+0.3font
+min_height=+0.3font
+
+[Focus]
+inherits=PanelButtonCommand
+frame=true
+frame.element=focus
+frame.top=2
+frame.bottom=2
+frame.left=2
+frame.right=2
+frame.patternsize=14
+
+[GenericFrame]
+inherits=PanelButtonCommand
+frame=true
+interior=false
+frame.element=common
+interior.element=common
+frame.top=1
+frame.bottom=1
+frame.left=1
+frame.right=1
+
+[LineEdit]
+inherits=PanelButtonCommand
+frame.element=lineedit
+interior.element=lineedit
+frame.top=6
+frame.bottom=6
+frame.left=6
+frame.right=6
+text.margin.top=2
+text.margin.bottom=2
+text.margin.left=2
+text.margin.right=2
+
+[ToolbarLineEdit]
+frame.element=lineedit
+interior.element=lineedit
+
+[DropDownButton]
+inherits=PanelButtonCommand
+indicator.element=arrow-down
+
+[IndicatorArrow]
+indicator.element=arrow
+indicator.size=8
+
+[ToolboxTab]
+inherits=PanelButtonCommand
+text.normal.color=#444444
+text.press.color=#333333
+text.focus.color=#444444
+
+[Tab]
+inherits=PanelButtonCommand
+interior.element=tab
+text.margin.left=8
+text.margin.right=8
+text.margin.top=0
+text.margin.bottom=0
+frame.element=tab
+indicator.element=tab
+indicator.size=22
+frame.top=8
+frame.bottom=8
+frame.left=8
+frame.right=8
+text.normal.color=#444444
+text.focus.color=#444444
+text.press.color=#333333
+text.toggle.color=#333333
+frame.expansion=0
+text.bold=false
+
+[TabFrame]
+inherits=PanelButtonCommand
+frame.element=tabframe
+interior.element=tabframe
+frame.top=6
+frame.bottom=6
+frame.left=6
+frame.right=6
+
+[TreeExpander]
+inherits=PanelButtonCommand
+indicator.size=8
+indicator.element=tree
+
+[HeaderSection]
+inherits=PanelButtonCommand
+interior.element=header
+frame.element=header
+frame.top=0
+frame.bottom=1
+frame.left=1
+frame.right=1
+text.normal.color=#444444
+text.focus.color=#444444
+text.press.color=#333333
+text.toggle.color=#333333
+frame.expansion=0
+
+[SizeGrip]
+indicator.element=resize-grip
+
+[Toolbar]
+inherits=PanelButtonCommand
+indicator.element=toolbar
+indicator.size=5
+text.margin=0
+interior.element=menubar
+frame.element=menubar
+text.normal.color=#444444
+text.focus.color=#444444
+text.press.color=#333333
+text.toggle.color=#333333
+frame.left=6
+frame.right=6
+frame.top=0
+frame.bottom=1
+frame.expansion=0
+
+[Slider]
+inherits=PanelButtonCommand
+frame.element=slider
+focusFrame=true
+interior.element=slider
+frame.top=3
+frame.bottom=3
+frame.left=3
+frame.right=3
+
+[SliderCursor]
+inherits=PanelButtonCommand
+frame=false
+interior.element=slidercursor
+
+[Progressbar]
+inherits=PanelButtonCommand
+frame.element=progress
+interior.element=progress
+text.margin=0
+text.normal.color=#444444
+text.focus.color=#444444
+text.press.color=#333333
+text.toggle.color=#333333
+text.bold=false
+frame.expansion=8
+
+[ProgressbarContents]
+inherits=PanelButtonCommand
+frame=true
+frame.element=progress-pattern
+interior.element=progress-pattern
+
+[ItemView]
+inherits=PanelButtonCommand
+text.margin=0
+frame.element=itemview
+interior.element=itemview
+frame.top=4
+frame.bottom=4
+frame.left=4
+frame.right=4
+text.margin.top=0
+text.margin.bottom=0
+text.margin.left=8
+text.margin.right=8
+text.normal.color=#444444
+text.focus.color=#444444
+text.press.color=#333333
+text.toggle.color=#333333
+min_width=+0.3font
+min_height=+0.3font
+frame.expansion=0
+
+[Splitter]
+interior.element=splitter
+frame=false
+indicator.size=0
+
+[Scrollbar]
+inherits=PanelButtonCommand
+indicator.element=arrow
+indicator.size=12
+
+[ScrollbarSlider]
+inherits=PanelButtonCommand
+frame.element=scrollbarslider
+interior=false
+frame.left=5
+frame.right=5
+frame.top=5
+frame.bottom=5
+indicator.element=grip
+indicator.size=12
+
+[ScrollbarGroove]
+inherits=PanelButtonCommand
+interior=false
+frame=false
+
+[Menu]
+inherits=PanelButtonCommand
+frame.top=10
+frame.bottom=10
+frame.left=10
+frame.right=10
+frame.element=menu
+interior.element=menu
+text.normal.color=#444444
+text.shadow=false
+frame.expansion=0
+text.bold=false
+
+[MenuItem]
+inherits=PanelButtonCommand
+frame=true
+frame.element=menuitem
+interior.element=menuitem
+indicator.element=menuitem
+text.normal.color=#444444
+text.focus.color=#333333
+text.margin.top=0
+text.margin.bottom=0
+text.margin.left=6
+text.margin.right=6
+frame.top=4
+frame.bottom=4
+frame.left=4
+frame.right=4
+text.bold=false
+frame.expansion=0
+
+[MenuBar]
+inherits=PanelButtonCommand
+frame.element=menubar
+interior.element=menubar
+frame.bottom=0
+text.normal.color=#444444
+text.focus.color=#444444
+text.press.color=#333333
+text.toggle.color=#333333
+frame.expansion=0
+text.bold=false
+
+[MenuBarItem]
+inherits=PanelButtonCommand
+interior=true
+interior.element=menubaritem
+frame.element=menubaritem
+frame.top=2
+frame.bottom=2
+frame.left=2
+frame.right=2
+text.margin.left=4
+text.margin.right=4
+text.margin.top=0
+text.margin.bottom=0
+text.normal.color=#444444
+text.focus.color=#444444
+text.press.color=#333333
+text.toggle.color=#333333
+text.bold=false
+min_width=+0.3font
+min_height=+0.3font
+frame.expansion=0
+
+[TitleBar]
+inherits=PanelButtonCommand
+frame=false
+text.margin.top=2
+text.margin.bottom=2
+text.margin.left=2
+text.margin.right=2
+interior.element=titlebar
+indicator.size=16
+indicator.element=mdi
+text.normal.color=#444444
+text.focus.color=#444444
+text.bold=false
+text.italic=true
+frame.expansion=0
+
+[ComboBox]
+inherits=PanelButtonCommand
+frame.element=combo
+interior.element=combo
+frame.top=6
+frame.bottom=6
+frame.left=6
+frame.right=6
+text.margin.top=2
+text.margin.bottom=2
+text.margin.left=2
+text.margin.right=2
+text.normal.color=#444444
+text.focus.color=#424242
+text.press.color=#424242
+text.toggle.color=#424242
+
+[GroupBox]
+inherits=GenericFrame
+frame=false
+text.shadow=0
+text.margin=0
+text.normal.color=#444444
+text.focus.color=#333333
+text.bold=false
+frame.expansion=0
+
+[TabBarFrame]
+inherits=GenericFrame
+frame=false
+interior=false
+
+[ToolTip]
+inherits=GenericFrame
+frame.top=6
+frame.bottom=6
+frame.left=6
+frame.right=6
+interior=true
+text.shadow=0
+text.margin=6
+interior.element=tooltip
+frame.element=tooltip
+text.normal.color=#444444
+text.focus.color=#333333
+text.press.color=#333333
+text.toggle.color=#333333
+frame.expansion=6
+
+[StatusBar]
+inherits=GenericFrame
+frame=false
+interior=false
+
+[Window]
+interior=true
+interior.element=window
+frame=true
+frame.element=window
+frame.bottom=10
+frame.top=10
diff --git a/.config/Kvantum/Colloid/Colloid.svg b/.config/Kvantum/Colloid/Colloid.svg
new file mode 100644
index 000000000..98572ccb7
--- /dev/null
+++ b/.config/Kvantum/Colloid/Colloid.svg
@@ -0,0 +1,6276 @@
+
+
diff --git a/.config/Kvantum/Colloid/ColloidDark.kvconfig b/.config/Kvantum/Colloid/ColloidDark.kvconfig
new file mode 100644
index 000000000..61493df5a
--- /dev/null
+++ b/.config/Kvantum/Colloid/ColloidDark.kvconfig
@@ -0,0 +1,569 @@
+[%General]
+author=Vince Liuice, based on KvAdapta by Tsu Jan
+comment=An uncomplicated theme inspired by the Materia GTK theme
+x11drag=none
+alt_mnemonic=true
+left_tabs=false
+attach_active_tab=false
+mirror_doc_tabs=true
+group_toolbar_buttons=false
+toolbar_item_spacing=0
+toolbar_interior_spacing=2
+spread_progressbar=true
+composite=false
+menu_shadow_depth=6
+spread_menuitems=false
+tooltip_shadow_depth=7
+splitter_width=1
+scroll_width=9
+scroll_arrows=false
+scroll_min_extent=60
+slider_width=2
+slider_handle_width=23
+slider_handle_length=22
+tickless_slider_handle_size=22
+center_toolbar_handle=true
+check_size=24
+textless_progressbar=false
+progressbar_thickness=2
+menubar_mouse_tracking=true
+toolbutton_style=1
+double_click=false
+translucent_windows=false
+blurring=false
+popup_blurring=false
+vertical_spin_indicators=false
+spin_button_width=24
+fill_rubberband=false
+merge_menubar_with_toolbar=true
+small_icon_size=16
+large_icon_size=32
+button_icon_size=16
+toolbar_icon_size=16
+combo_as_lineedit=true
+animate_states=true
+button_contents_shift=false
+combo_menu=true
+hide_combo_checkboxes=true
+combo_focus_rect=false
+groupbox_top_label=true
+inline_spin_indicators=true
+joined_inactive_tabs=false
+layout_spacing=3
+layout_margin=3
+scrollbar_in_view=true
+transient_scrollbar=true
+transient_groove=false
+submenu_overlap=0
+tooltip_delay=0
+tree_branch_line=false
+no_window_pattern=false
+opaque=kaffeine,kmplayer,subtitlecomposer,kdenlive,vlc,smplayer,smplayer2,avidemux,avidemux2_qt4,avidemux3_qt4,avidemux3_qt5,kamoso,QtCreator,VirtualBox,trojita,dragon,digikam
+reduce_window_opacity=0
+respect_DE=true
+scrollable_menu=false
+submenu_delay=150
+no_inactiveness=false
+reduce_menu_opacity=0
+click_behavior=2
+contrast=1.00
+dialog_button_layout=0
+intensity=1.00
+saturation=1.00
+shadowless_popup=false
+drag_from_buttons=false
+menu_blur_radius=0
+tooltip_blur_radius=0
+
+[GeneralColors]
+window.color=#2c2c2c
+base.color=#2c2c2c
+alt.base.color=#2e2e2e
+button.color=#4d4d4d
+light.color=#535353
+mid.light.color=#474747
+dark.color=#282828
+mid.color=#323232
+highlight.color=#5b9bf8
+inactive.highlight.color=#5b9bf8
+text.color=#dfdfdf
+window.text.color=#dfdfdf
+button.text.color=#dfdfdf
+disabled.text.color=#696969
+tooltip.text.color=#efefef
+highlight.text.color=#ffffff
+link.color=#0057AE
+link.visited.color=#E040FB
+progress.indicator.text.color=#dfdfdf
+
+[Hacks]
+transparent_ktitle_label=true
+transparent_dolphin_view=true
+transparent_pcmanfm_sidepane=true
+blur_translucent=false
+transparent_menutitle=true
+respect_darkness=true
+kcapacitybar_as_progressbar=true
+force_size_grip=true
+iconless_pushbutton=false
+iconless_menu=false
+disabled_icon_opacity=100
+lxqtmainmenu_iconsize=16
+normal_default_pushbutton=true
+single_top_toolbar=true
+tint_on_mouseover=0
+transparent_pcmanfm_view=true
+no_selection_tint=true
+transparent_arrow_button=true
+middle_click_scroll=false
+opaque_colors=false
+kinetic_scrolling=false
+scroll_jump_workaround=true
+centered_forms=false
+noninteger_translucency=false
+style_vertical_toolbars=false
+blur_only_active_window=true
+
+[PanelButtonCommand]
+frame=true
+frame.element=button
+frame.top=6
+frame.bottom=6
+frame.left=6
+frame.right=6
+interior=true
+interior.element=button
+indicator.size=8
+text.normal.color=#dfdfdf
+text.focus.color=white
+text.press.color=white
+text.toggle.color=#ffffff
+text.shadow=0
+text.margin=4
+text.iconspacing=4
+indicator.element=arrow
+frame.expansion=0
+
+[PanelButtonTool]
+inherits=PanelButtonCommand
+text.normal.color=#dfdfdf
+text.focus.color=white
+text.press.color=white
+text.toggle.color=#ffffff
+text.bold=false
+indicator.element=arrow
+indicator.size=8
+frame.expansion=0
+
+[ToolbarButton]
+frame=true
+frame.element=tbutton
+interior.element=tbutton
+frame.top=16
+frame.bottom=16
+frame.left=16
+frame.right=16
+indicator.element=tarrow
+text.normal.color=#dfdfdf
+text.focus.color=white
+text.press.color=white
+text.toggle.color=white
+text.bold=false
+frame.expansion=32
+
+[Dock]
+inherits=PanelButtonCommand
+interior.element=dock
+frame.element=dock
+frame.top=1
+frame.bottom=1
+frame.left=1
+frame.right=1
+text.normal.color=#dfdfdf
+
+[DockTitle]
+inherits=PanelButtonCommand
+frame=false
+interior=false
+text.normal.color=#dfdfdf
+text.focus.color=white
+text.bold=false
+
+[IndicatorSpinBox]
+inherits=PanelButtonCommand
+frame=true
+interior=true
+frame.top=2
+frame.bottom=2
+frame.left=2
+frame.right=2
+indicator.element=spin
+indicator.size=8
+text.normal.color=#dfdfdf
+text.margin.top=2
+text.margin.bottom=2
+text.margin.left=2
+text.margin.right=2
+
+[RadioButton]
+inherits=PanelButtonCommand
+frame=false
+interior.element=radio
+text.normal.color=#dfdfdf
+text.focus.color=white
+min_width=+0.3font
+min_height=+0.3font
+
+[CheckBox]
+inherits=PanelButtonCommand
+frame=false
+interior.element=checkbox
+text.normal.color=#dfdfdf
+text.focus.color=white
+min_width=+0.3font
+min_height=+0.3font
+
+[Focus]
+inherits=PanelButtonCommand
+frame=true
+frame.element=focus
+frame.top=2
+frame.bottom=2
+frame.left=2
+frame.right=2
+frame.patternsize=14
+
+[GenericFrame]
+inherits=PanelButtonCommand
+frame=true
+interior=false
+frame.element=common
+interior.element=common
+frame.top=1
+frame.bottom=1
+frame.left=1
+frame.right=1
+
+[LineEdit]
+inherits=PanelButtonCommand
+frame.element=lineedit
+interior.element=lineedit
+frame.top=6
+frame.bottom=6
+frame.left=6
+frame.right=6
+text.margin.top=2
+text.margin.bottom=2
+text.margin.left=2
+text.margin.right=2
+
+[ToolbarLineEdit]
+frame.element=lineedit
+interior.element=lineedit
+
+[DropDownButton]
+inherits=PanelButtonCommand
+indicator.element=arrow-down
+
+[IndicatorArrow]
+indicator.element=arrow
+indicator.size=8
+
+[ToolboxTab]
+inherits=PanelButtonCommand
+text.normal.color=#dfdfdf
+text.press.color=#dfdfdf
+text.focus.color=white
+
+[Tab]
+inherits=PanelButtonCommand
+interior.element=tab
+text.margin.left=8
+text.margin.right=8
+text.margin.top=0
+text.margin.bottom=0
+frame.element=tab
+indicator.element=tab
+indicator.size=22
+frame.top=8
+frame.bottom=8
+frame.left=8
+frame.right=8
+text.normal.color=#dfdfdf
+text.focus.color=#dfdfdf
+text.press.color=white
+text.toggle.color=white
+frame.expansion=0
+text.bold=false
+
+[TabFrame]
+inherits=PanelButtonCommand
+frame.element=tabframe
+interior.element=tabframe
+frame.top=6
+frame.bottom=6
+frame.left=6
+frame.right=6
+
+[TreeExpander]
+inherits=PanelButtonCommand
+indicator.size=8
+indicator.element=tree
+
+[HeaderSection]
+inherits=PanelButtonCommand
+interior.element=header
+frame.element=header
+frame.top=0
+frame.bottom=1
+frame.left=1
+frame.right=1
+text.normal.color=#dfdfdf
+text.focus.color=white
+text.press.color=white
+text.toggle.color=white
+frame.expansion=0
+
+[SizeGrip]
+indicator.element=resize-grip
+
+[Toolbar]
+inherits=PanelButtonCommand
+indicator.element=toolbar
+indicator.size=5
+text.margin=0
+interior.element=menubar
+frame.element=menubar
+text.normal.color=#dfdfdf
+text.focus.color=white
+text.press.color=#dfdfdf
+text.toggle.color=white
+frame.left=6
+frame.right=6
+frame.top=0
+frame.bottom=1
+frame.expansion=0
+
+[Slider]
+inherits=PanelButtonCommand
+frame.element=slider
+focusFrame=true
+interior.element=slider
+frame.top=3
+frame.bottom=3
+frame.left=3
+frame.right=3
+
+[SliderCursor]
+inherits=PanelButtonCommand
+frame=false
+interior.element=slidercursor
+
+[Progressbar]
+inherits=PanelButtonCommand
+frame.element=progress
+interior.element=progress
+text.margin=0
+text.normal.color=#dfdfdf
+text.focus.color=#dfdfdf
+text.press.color=#dfdfdf
+text.toggle.color=#dfdfdf
+text.bold=false
+frame.expansion=8
+
+[ProgressbarContents]
+inherits=PanelButtonCommand
+frame=true
+frame.element=progress-pattern
+interior.element=progress-pattern
+
+[ItemView]
+inherits=PanelButtonCommand
+text.margin=0
+frame.element=itemview
+interior.element=itemview
+frame.top=4
+frame.bottom=4
+frame.left=4
+frame.right=4
+text.margin.top=0
+text.margin.bottom=0
+text.margin.left=8
+text.margin.right=8
+text.normal.color=#dfdfdf
+text.focus.color=#dfdfdf
+text.press.color=#ffffff
+text.toggle.color=#ffffff
+min_width=+0.3font
+min_height=+0.3font
+frame.expansion=0
+
+[Splitter]
+interior.element=splitter
+frame=false
+indicator.size=0
+
+[Scrollbar]
+inherits=PanelButtonCommand
+indicator.element=arrow
+indicator.size=12
+
+[ScrollbarSlider]
+inherits=PanelButtonCommand
+frame.element=scrollbarslider
+interior=false
+frame.left=5
+frame.right=5
+frame.top=5
+frame.bottom=5
+indicator.element=grip
+indicator.size=12
+
+[ScrollbarGroove]
+inherits=PanelButtonCommand
+interior=false
+frame=false
+
+[Menu]
+inherits=PanelButtonCommand
+frame.top=10
+frame.bottom=10
+frame.left=10
+frame.right=10
+frame.element=menu
+interior.element=menu
+text.normal.color=#dfdfdf
+text.shadow=false
+frame.expansion=0
+text.bold=false
+
+[MenuItem]
+inherits=PanelButtonCommand
+frame=true
+frame.element=menuitem
+interior.element=menuitem
+indicator.element=menuitem
+text.normal.color=#dfdfdf
+text.focus.color=#ffffff
+text.margin.top=0
+text.margin.bottom=0
+text.margin.left=6
+text.margin.right=6
+frame.top=4
+frame.bottom=4
+frame.left=4
+frame.right=4
+text.bold=false
+frame.expansion=0
+
+[MenuBar]
+inherits=PanelButtonCommand
+frame.element=menubar
+interior.element=menubar
+frame.bottom=0
+text.normal.color=#dfdfdf
+text.focus.color=#ffffff
+text.press.color=#ffffff
+text.toggle.color=#ffffff
+frame.expansion=0
+text.bold=false
+
+[MenuBarItem]
+inherits=PanelButtonCommand
+interior=true
+interior.element=menubaritem
+frame.element=menubaritem
+frame.top=2
+frame.bottom=2
+frame.left=2
+frame.right=2
+text.margin.left=4
+text.margin.right=4
+text.margin.top=0
+text.margin.bottom=0
+text.normal.color=#dfdfdf
+text.focus.color=#ffffff
+text.press.color=#ffffff
+text.toggle.color=#ffffff
+text.bold=false
+min_width=+0.3font
+min_height=+0.3font
+frame.expansion=0
+
+[TitleBar]
+inherits=PanelButtonCommand
+frame=false
+text.margin.top=2
+text.margin.bottom=2
+text.margin.left=2
+text.margin.right=2
+interior.element=titlebar
+indicator.size=16
+indicator.element=mdi
+text.normal.color=#787878
+text.focus.color=#dfdfdf
+text.bold=false
+text.italic=true
+frame.expansion=0
+
+[ComboBox]
+inherits=PanelButtonCommand
+frame.element=combo
+interior.element=combo
+frame.top=6
+frame.bottom=6
+frame.left=6
+frame.right=6
+text.margin.top=2
+text.margin.bottom=2
+text.margin.left=2
+text.margin.right=2
+text.focus.color=white
+text.press.color=#dfdfdf
+text.toggle.color=white
+
+[GroupBox]
+inherits=GenericFrame
+frame=false
+text.shadow=0
+text.margin=0
+text.normal.color=#dfdfdf
+text.focus.color=white
+text.bold=false
+frame.expansion=0
+
+[TabBarFrame]
+inherits=GenericFrame
+frame=false
+frame.element=tabBarFrame
+interior=false
+frame.top=0
+frame.bottom=0
+frame.left=0
+frame.right=0
+
+[ToolTip]
+inherits=GenericFrame
+frame.top=6
+frame.bottom=6
+frame.left=6
+frame.right=6
+interior=true
+text.shadow=0
+text.margin=6
+interior.element=tooltip
+frame.element=tooltip
+frame.expansion=6
+
+[StatusBar]
+inherits=GenericFrame
+frame=false
+interior=false
+
+[Window]
+interior=true
+interior.element=window
+frame=true
+frame.element=window
+frame.bottom=10
+frame.top=10
diff --git a/.config/Kvantum/Colloid/ColloidDark.svg b/.config/Kvantum/Colloid/ColloidDark.svg
new file mode 100644
index 000000000..7f1a7b9b2
--- /dev/null
+++ b/.config/Kvantum/Colloid/ColloidDark.svg
@@ -0,0 +1,6359 @@
+
+
diff --git a/.config/Kvantum/MaterialAdw/MaterialAdw.kvconfig b/.config/Kvantum/MaterialAdw/MaterialAdw.kvconfig
new file mode 100644
index 000000000..85264e0d2
--- /dev/null
+++ b/.config/Kvantum/MaterialAdw/MaterialAdw.kvconfig
@@ -0,0 +1,571 @@
+[%General]
+author=Vince Liuice, based on KvAdapta by Tsu Jan
+comment=An uncomplicated theme inspired by the Materia GTK theme
+x11drag=none
+alt_mnemonic=true
+left_tabs=false
+attach_active_tab=false
+mirror_doc_tabs=true
+group_toolbar_buttons=false
+toolbar_item_spacing=0
+toolbar_interior_spacing=2
+spread_progressbar=true
+composite=false
+menu_shadow_depth=6
+spread_menuitems=false
+tooltip_shadow_depth=7
+splitter_width=1
+scroll_width=9
+scroll_arrows=false
+scroll_min_extent=60
+slider_width=2
+slider_handle_width=23
+slider_handle_length=22
+tickless_slider_handle_size=22
+center_toolbar_handle=true
+check_size=24
+textless_progressbar=false
+progressbar_thickness=2
+menubar_mouse_tracking=true
+toolbutton_style=1
+double_click=false
+translucent_windows=false
+blurring=false
+popup_blurring=false
+vertical_spin_indicators=false
+spin_button_width=24
+fill_rubberband=false
+merge_menubar_with_toolbar=true
+small_icon_size=16
+large_icon_size=32
+button_icon_size=16
+toolbar_icon_size=16
+combo_as_lineedit=true
+animate_states=true
+button_contents_shift=false
+combo_menu=true
+hide_combo_checkboxes=true
+combo_focus_rect=false
+groupbox_top_label=true
+inline_spin_indicators=true
+joined_inactive_tabs=false
+layout_spacing=3
+layout_margin=3
+scrollbar_in_view=true
+transient_scrollbar=true
+transient_groove=false
+submenu_overlap=0
+tooltip_delay=0
+tree_branch_line=false
+no_window_pattern=false
+opaque=kaffeine,kmplayer,subtitlecomposer,kdenlive,vlc,smplayer,smplayer2,avidemux,avidemux2_qt4,avidemux3_qt4,avidemux3_qt5,kamoso,QtCreator,VirtualBox,VirtualBoxVM,trojita,dragon,digikam,lyx
+reduce_window_opacity=0
+respect_DE=true
+scrollable_menu=false
+submenu_delay=150
+no_inactiveness=false
+reduce_menu_opacity=0
+click_behavior=2
+contrast=1.00
+dialog_button_layout=0
+intensity=1.00
+saturation=1.00
+shadowless_popup=false
+drag_from_buttons=false
+menu_blur_radius=0
+tooltip_blur_radius=0
+
+[GeneralColors]
+window.color=#0F1416
+base.color=#0F1416
+alt.base.color=#0F1416
+button.color=#1B2022
+light.color=#171C1E
+mid.light.color=#1B2022
+dark.color=#303638
+mid.color=#252B2D
+highlight.color=#84D2E7
+inactive.highlight.color=#84D2E7
+text.color=#DEE3E5
+window.text.color=#DEE3E5
+button.text.color=#DEE3E5
+disabled.text.color=#DEE3E5
+tooltip.text.color=#DEE3E5
+highlight.text.color=#DEE3E5
+link.color=#BFC4EB
+link.visited.color=#DDE1FF
+progress.indicator.text.color=#DEE3E5
+
+[Hacks]
+transparent_ktitle_label=true
+transparent_dolphin_view=true
+transparent_pcmanfm_sidepane=true
+blur_translucent=false
+transparent_menutitle=true
+respect_darkness=true
+kcapacitybar_as_progressbar=true
+force_size_grip=true
+iconless_pushbutton=false
+iconless_menu=false
+disabled_icon_opacity=100
+lxqtmainmenu_iconsize=16
+normal_default_pushbutton=true
+single_top_toolbar=true
+tint_on_mouseover=0
+transparent_pcmanfm_view=true
+no_selection_tint=true
+transparent_arrow_button=true
+middle_click_scroll=false
+opaque_colors=false
+kinetic_scrolling=false
+scroll_jump_workaround=true
+centered_forms=false
+noninteger_translucency=false
+style_vertical_toolbars=false
+blur_only_active_window=true
+
+[PanelButtonCommand]
+frame=true
+frame.element=button
+frame.top=6
+frame.bottom=6
+frame.left=6
+frame.right=6
+interior=true
+interior.element=button
+indicator.size=8
+text.normal.color=#DEE3E5
+text.focus.color=#DEE3E5
+text.press.color=white
+text.toggle.color=#ffffff
+text.shadow=0
+text.margin=4
+text.iconspacing=4
+indicator.element=arrow
+frame.expansion=0
+
+[PanelButtonTool]
+inherits=PanelButtonCommand
+text.normal.color=#DEE3E5
+text.focus.color=#DEE3E5
+text.press.color=white
+text.toggle.color=#ffffff
+text.bold=false
+indicator.element=arrow
+indicator.size=8
+frame.expansion=0
+
+[ToolbarButton]
+frame=true
+frame.element=tbutton
+interior.element=tbutton
+frame.top=16
+frame.bottom=16
+frame.left=16
+frame.right=16
+indicator.element=tarrow
+text.normal.color=#DEE3E5
+text.focus.color=#DEE3E5
+text.press.color=white
+text.toggle.color=white
+text.bold=false
+frame.expansion=32
+
+[Dock]
+inherits=PanelButtonCommand
+interior.element=dock
+frame.element=dock
+frame.top=1
+frame.bottom=1
+frame.left=1
+frame.right=1
+text.normal.color=#DEE3E5
+
+[DockTitle]
+inherits=PanelButtonCommand
+frame=false
+interior=false
+text.normal.color=#DEE3E5
+text.focus.color=#DEE3E5
+text.bold=false
+
+[IndicatorSpinBox]
+inherits=PanelButtonCommand
+frame=true
+interior=true
+frame.top=2
+frame.bottom=2
+frame.left=2
+frame.right=2
+indicator.element=spin
+indicator.size=8
+text.normal.color=#DEE3E5
+text.margin.top=2
+text.margin.bottom=2
+text.margin.left=2
+text.margin.right=2
+
+[RadioButton]
+inherits=PanelButtonCommand
+frame=false
+interior.element=radio
+text.normal.color=#DEE3E5
+text.focus.color=#DEE3E5
+min_width=+0.3font
+min_height=+0.3font
+
+[CheckBox]
+inherits=PanelButtonCommand
+frame=false
+interior.element=checkbox
+text.normal.color=#DEE3E5
+text.focus.color=#DEE3E5
+min_width=+0.3font
+min_height=+0.3font
+
+[Focus]
+inherits=PanelButtonCommand
+frame=true
+frame.element=focus
+frame.top=2
+frame.bottom=2
+frame.left=2
+frame.right=2
+frame.patternsize=14
+
+[GenericFrame]
+inherits=PanelButtonCommand
+frame=true
+interior=false
+frame.element=common
+interior.element=common
+frame.top=1
+frame.bottom=1
+frame.left=1
+frame.right=1
+
+[LineEdit]
+inherits=PanelButtonCommand
+frame.element=lineedit
+interior.element=lineedit
+frame.top=6
+frame.bottom=6
+frame.left=6
+frame.right=6
+text.margin.top=2
+text.margin.bottom=2
+text.margin.left=2
+text.margin.right=2
+
+[ToolbarLineEdit]
+frame.element=lineedit
+interior.element=lineedit
+
+[DropDownButton]
+inherits=PanelButtonCommand
+indicator.element=arrow-down
+
+[IndicatorArrow]
+indicator.element=arrow
+indicator.size=8
+
+[ToolboxTab]
+inherits=PanelButtonCommand
+text.normal.color=#DEE3E5
+text.press.color=#dfdfdf
+text.focus.color=#DEE3E5
+
+[Tab]
+inherits=PanelButtonCommand
+interior.element=tab
+text.margin.left=8
+text.margin.right=8
+text.margin.top=0
+text.margin.bottom=0
+frame.element=tab
+indicator.element=tab
+indicator.size=22
+frame.top=8
+frame.bottom=8
+frame.left=8
+frame.right=8
+text.normal.color=#DEE3E5
+text.focus.color=#DEE3E5
+text.press.color=white
+text.toggle.color=white
+frame.expansion=0
+text.bold=false
+
+[TabFrame]
+inherits=PanelButtonCommand
+frame.element=tabframe
+interior.element=tabframe
+frame.top=6
+frame.bottom=6
+frame.left=6
+frame.right=6
+
+[TreeExpander]
+inherits=PanelButtonCommand
+indicator.size=8
+indicator.element=tree
+
+[HeaderSection]
+inherits=PanelButtonCommand
+interior.element=header
+frame.element=header
+frame.top=0
+frame.bottom=1
+frame.left=1
+frame.right=1
+text.normal.color=#DEE3E5
+text.focus.color=#DEE3E5
+text.press.color=white
+text.toggle.color=white
+frame.expansion=0
+
+[SizeGrip]
+indicator.element=resize-grip
+
+[Toolbar]
+inherits=PanelButtonCommand
+indicator.element=toolbar
+indicator.size=5
+text.margin=0
+interior.element=menubar
+frame.element=menubar
+text.normal.color=#DEE3E5
+text.focus.color=#DEE3E5
+text.press.color=#dfdfdf
+text.toggle.color=white
+frame.left=6
+frame.right=6
+frame.top=0
+frame.bottom=1
+frame.expansion=0
+
+[Slider]
+inherits=PanelButtonCommand
+frame.element=slider
+focusFrame=true
+interior.element=slider
+frame.top=3
+frame.bottom=3
+frame.left=3
+frame.right=3
+
+[SliderCursor]
+inherits=PanelButtonCommand
+frame=false
+interior.element=slidercursor
+
+[Progressbar]
+inherits=PanelButtonCommand
+frame.element=progress
+interior.element=progress
+text.margin=0
+text.normal.color=#DEE3E5
+text.focus.color=#DEE3E5
+text.press.color=#dfdfdf
+text.toggle.color=#dfdfdf
+text.bold=false
+frame.expansion=8
+
+[ProgressbarContents]
+inherits=PanelButtonCommand
+frame=true
+frame.element=progress-pattern
+interior.element=progress-pattern
+
+[ItemView]
+inherits=PanelButtonCommand
+text.margin=0
+frame.element=itemview
+interior.element=itemview
+frame.top=4
+frame.bottom=4
+frame.left=4
+frame.right=4
+text.margin.top=0
+text.margin.bottom=0
+text.margin.left=8
+text.margin.right=8
+text.normal.color=#DEE3E5
+text.focus.color=#DEE3E5
+text.press.color=#ffffff
+text.toggle.color=#ffffff
+min_width=+0.3font
+min_height=+0.3font
+frame.expansion=0
+
+[Splitter]
+interior.element=splitter
+frame=false
+indicator.size=0
+
+[Scrollbar]
+inherits=PanelButtonCommand
+indicator.element=arrow
+indicator.size=12
+
+[ScrollbarSlider]
+inherits=PanelButtonCommand
+frame.element=scrollbarslider
+interior=false
+frame.left=5
+frame.right=5
+frame.top=5
+frame.bottom=5
+indicator.element=grip
+indicator.size=12
+
+[ScrollbarGroove]
+inherits=PanelButtonCommand
+interior=false
+frame=false
+
+[Menu]
+inherits=PanelButtonCommand
+frame.top=10
+frame.bottom=10
+frame.left=10
+frame.right=10
+frame.element=menu
+interior.element=menu
+text.normal.color=#DEE3E5
+text.shadow=false
+frame.expansion=0
+text.bold=false
+
+[MenuItem]
+inherits=PanelButtonCommand
+frame=true
+frame.element=menuitem
+interior.element=menuitem
+indicator.element=menuitem
+text.normal.color=#DEE3E5
+text.focus.color=#DEE3E5
+text.margin.top=0
+text.margin.bottom=0
+text.margin.left=6
+text.margin.right=6
+frame.top=4
+frame.bottom=4
+frame.left=4
+frame.right=4
+text.bold=false
+frame.expansion=0
+
+[MenuBar]
+inherits=PanelButtonCommand
+frame.element=menubar
+interior.element=menubar
+frame.bottom=0
+text.normal.color=#DEE3E5
+text.focus.color=#DEE3E5
+text.press.color=#ffffff
+text.toggle.color=#ffffff
+frame.expansion=0
+text.bold=false
+
+[MenuBarItem]
+inherits=PanelButtonCommand
+interior=true
+interior.element=menubaritem
+frame.element=menubaritem
+frame.top=2
+frame.bottom=2
+frame.left=2
+frame.right=2
+text.margin.left=4
+text.margin.right=4
+text.margin.top=0
+text.margin.bottom=0
+text.normal.color=#DEE3E5
+text.focus.color=#DEE3E5
+text.press.color=#ffffff
+text.toggle.color=#ffffff
+text.bold=false
+min_width=+0.3font
+min_height=+0.3font
+frame.expansion=0
+
+[TitleBar]
+inherits=PanelButtonCommand
+frame=false
+text.margin.top=2
+text.margin.bottom=2
+text.margin.left=2
+text.margin.right=2
+interior.element=titlebar
+indicator.size=16
+indicator.element=mdi
+text.normal.color=#DEE3E5
+text.focus.color=#DEE3E5
+text.bold=false
+text.italic=true
+frame.expansion=0
+
+[ComboBox]
+inherits=PanelButtonCommand
+frame.element=combo
+interior.element=combo
+frame.top=6
+frame.bottom=6
+frame.left=6
+frame.right=6
+text.margin.top=2
+text.margin.bottom=2
+text.margin.left=2
+text.margin.right=2
+text.focus.color=#DEE3E5
+text.press.color=#dfdfdf
+text.toggle.color=white
+
+[GroupBox]
+inherits=GenericFrame
+frame=false
+text.shadow=0
+text.margin=0
+text.normal.color=#DEE3E5
+text.focus.color=#DEE3E5
+text.bold=false
+frame.expansion=0
+
+[TabBarFrame]
+inherits=GenericFrame
+frame=false
+frame.element=tabBarFrame
+interior=false
+frame.top=0
+frame.bottom=0
+frame.left=0
+frame.right=0
+
+[ToolTip]
+inherits=GenericFrame
+frame.top=6
+frame.bottom=6
+frame.left=6
+frame.right=6
+interior=true
+text.shadow=0
+text.margin=6
+interior.element=tooltip
+frame.element=tooltip
+frame.expansion=6
+
+[StatusBar]
+inherits=GenericFrame
+frame=false
+interior=false
+
+[Window]
+interior=true
+interior.element=window
+frame=true
+frame.element=window
+frame.bottom=10
+frame.top=10
+
+text.disabled.color=#0F1416
diff --git a/.config/Kvantum/MaterialAdw/MaterialAdw.svg b/.config/Kvantum/MaterialAdw/MaterialAdw.svg
new file mode 100644
index 000000000..11c94b4bf
--- /dev/null
+++ b/.config/Kvantum/MaterialAdw/MaterialAdw.svg
@@ -0,0 +1,6359 @@
+
+
diff --git a/.config/Kvantum/kvantum.kvconfig b/.config/Kvantum/kvantum.kvconfig
new file mode 100644
index 000000000..893dc5fe9
--- /dev/null
+++ b/.config/Kvantum/kvantum.kvconfig
@@ -0,0 +1,2 @@
+[General]
+theme=MaterialAdw
diff --git a/.config/ags/README.md b/.config/ags/README.md
new file mode 100644
index 000000000..71563ed7a
--- /dev/null
+++ b/.config/ags/README.md
@@ -0,0 +1,15 @@
+
+# Starter Config
+
+if suggestions don't work, first make sure
+you have TypeScript LSP working in your editor
+
+if you do not want typechecking only suggestions
+
+```json
+// tsconfig.json
+"checkJs": false
+```
+
+types are symlinked to:
+/usr/share/com.github.Aylur.ags/types
diff --git a/.config/ags/modules/.commonwidgets/statusicons.js b/.config/ags/modules/.commonwidgets/statusicons.js
index eacc444fd..11b4e1769 100644
--- a/.config/ags/modules/.commonwidgets/statusicons.js
+++ b/.config/ags/modules/.commonwidgets/statusicons.js
@@ -86,14 +86,20 @@ export const BluetoothIndicator = () => Widget.Stack({
transition: 'slide_up_down',
transitionDuration: userOptions.animations.durationSmall,
children: {
- 'false': Widget.Label({ className: 'txt-norm icon-material', label: 'bluetooth_disabled' }),
- 'true': Widget.Label({ className: 'txt-norm icon-material', label: 'bluetooth' }),
+ 'disabled': Widget.Label({ className: 'txt-norm icon-material', label: 'bluetooth_disabled' }),
+ 'enabled': Widget.Label({ className: 'txt-norm icon-material', label: 'bluetooth' }),
+ 'connected': Widget.Label({ className: 'txt-norm icon-material', label: 'bluetooth_connected' }),
},
- setup: (self) => self
- .hook(Bluetooth, stack => {
- stack.shown = String(Bluetooth.enabled);
- })
- ,
+ setup: (self) =>
+ self.hook(Bluetooth, (stack) => {
+ if (!Bluetooth.enabled) {
+ stack.shown = 'disabled';
+ } else if (Bluetooth.connected_devices.length === 0) {
+ stack.shown = 'enabled';
+ } else if (Bluetooth.connected_devices.length > 0) {
+ stack.shown = 'connected';
+ }
+ }),
});
const BluetoothDevices = () => Widget.Box({
@@ -158,8 +164,11 @@ const NetworkWifiIndicator = () => Widget.Stack({
transition: 'slide_up_down',
transitionDuration: userOptions.animations.durationSmall,
children: {
- 'disabled': Widget.Label({ className: 'txt-norm icon-material', label: 'wifi_off' }),
- 'disconnected': Widget.Label({ className: 'txt-norm icon-material', label: 'signal_wifi_off' }),
+ 'disabled': Widget.Label({ className: 'txt-norm icon-material', label: 'signal_wifi_off' }),
+ 'disconnected': Widget.Label({
+ className: 'txt-norm icon-material',
+ label: 'signal_wifi_statusbar_not_connected',
+ }),
'connecting': Widget.Label({ className: 'txt-norm icon-material', label: 'settings_ethernet' }),
'0': Widget.Label({ className: 'txt-norm icon-material', label: 'signal_wifi_0_bar' }),
'1': Widget.Label({ className: 'txt-norm icon-material', label: 'network_wifi_1_bar' }),
@@ -171,10 +180,11 @@ const NetworkWifiIndicator = () => Widget.Stack({
if (!Network.wifi) {
return;
}
- if (Network.wifi.internet == 'connected') {
+ if (!Network.wifi.enabled) {
+ stack.shown = 'disabled';
+ } else if (Network.wifi.internet == 'connected') {
stack.shown = String(Math.ceil(Network.wifi.strength / 25));
- }
- else if (["disconnected", "connecting"].includes(Network.wifi.internet)) {
+ } else if (['disconnected', 'connecting'].includes(Network.wifi.internet)) {
stack.shown = Network.wifi.internet;
}
}),
diff --git a/.config/ags/modules/overview/overview_hyprland.js b/.config/ags/modules/overview/overview_hyprland.js
index ebbe07f4e..253d188da 100644
--- a/.config/ags/modules/overview/overview_hyprland.js
+++ b/.config/ags/modules/overview/overview_hyprland.js
@@ -60,7 +60,10 @@ export default (overviewMonitor = 0) => {
else if (x < 0) { w = x + w; x = 0; }
if (y + h <= 0) x += (Math.floor(y / monitors[monitor].height) * monitors[monitor].height);
else if (y < 0) { h = y + h; y = 0; }
+<<<<<<< HEAD
// Prevents throwing an error when multiple monitors are plugged in but only one is enabled (#1047)
+=======
+>>>>>>> 1996008 (heda fix)
if (monitors.length - 1 < monitor) {
monitor = monitors.length - 1;
}
diff --git a/.config/ags/modules/sideright/centermodules/configure.js b/.config/ags/modules/sideright/centermodules/configure.js
index f78608aa2..be71706c7 100644
--- a/.config/ags/modules/sideright/centermodules/configure.js
+++ b/.config/ags/modules/sideright/centermodules/configure.js
@@ -1,130 +1,307 @@
const { GLib } = imports.gi;
-import Hyprland from 'resource:///com/github/Aylur/ags/service/hyprland.js';
-import Widget from 'resource:///com/github/Aylur/ags/widget.js';
-import * as Utils from 'resource:///com/github/Aylur/ags/utils.js';
+import Hyprland from "resource:///com/github/Aylur/ags/service/hyprland.js";
+import Widget from "resource:///com/github/Aylur/ags/widget.js";
+import * as Utils from "resource:///com/github/Aylur/ags/utils.js";
const { Box, Button, Icon, Label, Scrollable, Slider, Stack } = Widget;
const { execAsync, exec } = Utils;
-import { MaterialIcon } from '../../.commonwidgets/materialicon.js';
-import { setupCursorHover } from '../../.widgetutils/cursorhover.js';
-import { ConfigGap, ConfigSpinButton, ConfigToggle } from '../../.commonwidgets/configwidgets.js';
+import { MaterialIcon } from "../../.commonwidgets/materialicon.js";
+import { setupCursorHover } from "../../.widgetutils/cursorhover.js";
+import {
+ ConfigGap,
+ ConfigSpinButton,
+ ConfigToggle,
+} from "../../.commonwidgets/configwidgets.js";
-const HyprlandToggle = ({ icon, name, desc = null, option, enableValue = 1, disableValue = 0, extraOnChange = () => { } }) => ConfigToggle({
+// Hyprland config file path
+const configFile = GLib.get_home_dir() + "/.config/hypr/hyprland/HyprAGS.conf";
+
+// Ensure the config file exists
+function ensureConfigFileExists() {
+ if (!GLib.file_test(configFile, GLib.FileTest.EXISTS)) {
+ execAsync(["touch", configFile]).catch((err) =>
+ logError("Error creating config file", err),
+ );
+ }
+}
+
+// Helper to update the config file
+function updateConfig(option, value) {
+ execAsync([
+ "bash",
+ "-c",
+ `
+ if grep -q "^${option} =" ${configFile}; then
+ sed -i "s/^${option} = .*/${option} = ${value}/" ${configFile}
+ else
+ echo "${option} = ${value}" >> ${configFile}
+ fi
+ `,
+ ]).catch((err) => logError("Failed to update config", err));
+}
+
+// Toggles for Hyprland settings
+const HyprlandToggle = ({
+ icon,
+ name,
+ desc = null,
+ option,
+ enableValue = 1,
+ disableValue = 0,
+ extraOnChange = () => {},
+}) =>
+ ConfigToggle({
icon: icon,
name: name,
desc: desc,
initValue: JSON.parse(exec(`hyprctl getoption -j ${option}`))["int"] != 0,
onChange: (self, newValue) => {
- execAsync(['hyprctl', 'keyword', option, `${newValue ? enableValue : disableValue}`]).catch(print);
- extraOnChange(self, newValue);
- }
-});
+ execAsync([
+ "hyprctl",
+ "keyword",
+ option,
+ `${newValue ? enableValue : disableValue}`,
+ ])
+ .then(() => {
+ updateConfig(option, newValue ? enableValue : disableValue);
+ extraOnChange(self, newValue);
+ })
+ .catch((err) => logError("Error applying change", err));
+ },
+ });
-const HyprlandSpinButton = ({ icon, name, desc = null, option, ...rest }) => ConfigSpinButton({
+// SpinButton for numeric settings
+const HyprlandSpinButton = ({ icon, name, desc = null, option, ...rest }) =>
+ ConfigSpinButton({
icon: icon,
name: name,
desc: desc,
- initValue: Number(JSON.parse(exec(`hyprctl getoption -j ${option}`))["int"]),
+ initValue: Number(
+ JSON.parse(exec(`hyprctl getoption -j ${option}`))["int"],
+ ),
onChange: (self, newValue) => {
- execAsync(['hyprctl', 'keyword', option, `${newValue}`]).catch(print);
+ execAsync(["hyprctl", "keyword", option, `${newValue}`])
+ .then(() => {
+ updateConfig(option, newValue);
+ })
+ .catch((err) => logError("Error applying change", err));
},
...rest,
-});
+ });
-const Subcategory = (children) => Box({
- className: 'margin-left-20',
+const Subcategory = (children) =>
+ Box({
+ className: "margin-left-20",
vertical: true,
children: children,
-})
+ });
export default (props) => {
- const ConfigSection = ({ name, children }) => Box({
- vertical: true,
- className: 'spacing-v-5',
- children: [
- Label({
- hpack: 'center',
- className: 'txt txt-large margin-left-10',
- label: name,
+ const ConfigSection = ({ name, children }) =>
+ Box({
+ vertical: true,
+ className: "spacing-v-5",
+ children: [
+ Label({
+ hpack: "center",
+ className: "txt txt-large margin-left-10",
+ label: name,
+ }),
+ Box({
+ className: "margin-left-10 margin-right-10",
+ vertical: true,
+ children: children,
+ }),
+ ],
+ });
+
+ const mainContent = Scrollable({
+ vexpand: true,
+ child: Box({
+ vertical: true,
+ className: "spacing-v-10",
+ children: [
+ // Roundings Section
+ ConfigSection({
+ name: getString("Window"),
+ children: [
+ HyprlandSpinButton({
+ icon: "crop_square",
+ name: getString("Window Roundings"),
+ desc: getString(
+ "[Hyprland]\nAdjust the window corner roundings.",
+ ),
+ option: "decoration:rounding",
+ minValue: 0,
+ maxValue: 50,
+ step: 1,
+ onChange: (self, newValue) => {
+ updateConfig("decoration:rounding", newValue);
+ },
}),
- Box({
- className: 'margin-left-10 margin-right-10',
- vertical: true,
- children: children,
- })
- ]
- })
- const mainContent = Scrollable({
- vexpand: true,
- child: Box({
- vertical: true,
- className: 'spacing-v-10',
- children: [
- ConfigSection({
- name: getString('Effects'), children: [
- ConfigToggle({
- icon: 'border_clear',
- name: getString('Transparency'),
- desc: getString('[AGS]\nMake shell elements transparent\nBlur is also recommended if you enable this'),
- initValue: exec(`bash -c "sed -n \'2p\' ${GLib.get_user_state_dir()}/ags/user/colormode.txt"`) == "transparent",
- onChange: (self, newValue) => {
- const transparency = newValue == 0 ? "opaque" : "transparent";
- console.log(transparency);
- execAsync([`bash`, `-c`, `mkdir -p ${GLib.get_user_state_dir()}/ags/user && sed -i "2s/.*/${transparency}/" ${GLib.get_user_state_dir()}/ags/user/colormode.txt`])
- .then(execAsync(['bash', '-c', `${App.configDir}/scripts/color_generation/switchcolor.sh`]))
- .catch(print);
- },
- }),
- HyprlandToggle({ icon: 'blur_on', name: getString('Blur'), desc: getString("[Hyprland]\nEnable blur on transparent elements\nDoesn't affect performance/power consumption unless you have transparent windows."), option: "decoration:blur:enabled" }),
- Subcategory([
- HyprlandToggle({ icon: 'stack_off', name: getString('X-ray'), desc: getString("[Hyprland]\nMake everything behind a window/layer except the wallpaper not rendered on its blurred surface\nRecommended to improve performance (if you don't abuse transparency/blur) "), option: "decoration:blur:xray" }),
- HyprlandSpinButton({ icon: 'target', name: getString('Size'), desc: getString('[Hyprland]\nAdjust the blur radius. Generally doesn\'t affect performance\nHigher = more color spread'), option: 'decoration:blur:size', minValue: 1, maxValue: 1000 }),
- HyprlandSpinButton({ icon: 'repeat', name: getString('Passes'), desc: getString('[Hyprland] Adjust the number of runs of the blur algorithm\nMore passes = more spread and power consumption\n4 is recommended\n2- would look weird and 6+ would look lame.'), option: 'decoration:blur:passes', minValue: 1, maxValue: 10 }),
- ]),
- ConfigGap({}),
- HyprlandToggle({
- icon: 'animation', name: getString('Animations'), desc: getString('[Hyprland] [GTK]\nEnable animations'), option: 'animations:enabled',
- extraOnChange: (self, newValue) => execAsync(['gsettings', 'set', 'org.gnome.desktop.interface', 'enable-animations', `${newValue}`])
- }),
- Subcategory([
- ConfigSpinButton({
- icon: 'clear_all',
- name: getString('Choreography delay'),
- desc: getString('In milliseconds, the delay between animations of a series'),
- initValue: userOptions.animations.choreographyDelay,
- step: 10, minValue: 0, maxValue: 1000,
- onChange: (self, newValue) => {
- userOptions.animations.choreographyDelay = newValue
- },
- })
- ]),
- ]
- }),
- ConfigSection({
- name: getString('Developer'), children: [
- HyprlandToggle({ icon: 'speed', name: getString('Show FPS'), desc: getString("[Hyprland]\nShow FPS overlay on top-left corner"), option: "debug:overlay" }),
- HyprlandToggle({ icon: 'sort', name: getString('Log to stdout'), desc: getString("[Hyprland]\nPrint LOG, ERR, WARN, etc. messages to the console"), option: "debug:enable_stdout_logs" }),
- HyprlandToggle({ icon: 'motion_sensor_active', name: getString('Damage tracking'), desc: getString("[Hyprland]\nEnable damage tracking\nGenerally, leave it on.\nTurn off only when a shader doesn't work"), option: "debug:damage_tracking", enableValue: 2 }),
- HyprlandToggle({ icon: 'destruction', name: getString('Damage blink'), desc: getString("[Hyprland] [Epilepsy warning!]\nShow screen damage flashes"), option: "debug:damage_blink" }),
- ]
- }),
- ]
- })
- });
- const footNote = Box({
- homogeneous: true,
- children: [Label({
- hpack: 'center',
- className: 'txt txt-italic txt-subtext margin-5',
- label: getString('Not all changes are saved'),
- })]
- })
- return Box({
- ...props,
- className: 'spacing-v-5',
- vertical: true,
- children: [
- mainContent,
- footNote,
- ]
- });
-}
+ ],
+ }),
+ // Effects Section
+ ConfigSection({
+ name: getString("Effects"),
+ children: [
+ ConfigToggle({
+ icon: "border_clear",
+ name: getString("Transparency"),
+ desc: getString(
+ "[AGS]\nMake shell elements transparent\nBlur is also recommended if you enable this",
+ ),
+ initValue:
+ exec(
+ `bash -c "sed -n '2p' ${GLib.get_user_state_dir()}/ags/user/colormode.txt"`,
+ ) == "transparent",
+ onChange: (self, newValue) => {
+ const transparency = newValue == 0 ? "opaque" : "transparent";
+ execAsync([
+ `bash`,
+ `-c`,
+ `mkdir -p ${GLib.get_user_state_dir()}/ags/user && sed -i "2s/.*/${transparency}/" ${GLib.get_user_state_dir()}/ags/user/colormode.txt`,
+ ])
+ .then(
+ execAsync([
+ "bash",
+ "-c",
+ `${App.configDir}/scripts/color_generation/switchcolor.sh`,
+ ]),
+ )
+ .then(() => {
+ if (newValue) {
+ updateConfig("decoration:active_opacity", 0.85);
+ updateConfig("decoration:inactive_opacity", 0.85);
+ } else {
+ updateConfig("decoration:active_opacity", 1);
+ updateConfig("decoration:inactive_opacity", 1);
+ }
+ })
+ .catch(print);
+ },
+ }),
+ HyprlandToggle({
+ icon: "blur_on",
+ name: getString("Blur"),
+ desc: getString(
+ "[Hyprland]\nEnable blur on transparent elements.",
+ ),
+ option: "decoration:blur:enabled",
+ }),
+ Subcategory([
+ HyprlandSpinButton({
+ icon: "target",
+ name: getString("Blur Size"),
+ desc: getString("[Hyprland]\nAdjust the blur radius."),
+ option: "decoration:blur:size",
+ minValue: 1,
+ maxValue: 1000,
+ }),
+ HyprlandSpinButton({
+ icon: "repeat",
+ name: getString("Blur Passes"),
+ desc: getString(
+ "[Hyprland]\nAdjust the number of passes for blur.",
+ ),
+ option: "decoration:blur:passes",
+ minValue: 1,
+ maxValue: 10,
+ }),
+ ]),
+ HyprlandToggle({
+ icon: "auto_fix_high",
+ name: getString("Blur Special"),
+ desc: getString("[Hyprland]\nEnable special blur effects."),
+ option: "decoration:blur:special",
+ }),
+ ConfigGap({}),
+ HyprlandToggle({
+ icon: "animation",
+ name: getString("Animations"),
+ desc: getString("[Hyprland] [GTK]\nEnable animations"),
+ option: "animations:enabled",
+ extraOnChange: (self, newValue) =>
+ execAsync([
+ "gsettings",
+ "set",
+ "org.gnome.desktop.interface",
+ "enable-animations",
+ `${newValue}`,
+ ]),
+ }),
+ Subcategory([
+ ConfigSpinButton({
+ icon: "clear_all",
+ name: getString("Choreography delay"),
+ desc: getString(
+ "In milliseconds, the delay between animations of a series",
+ ),
+ initValue: userOptions.animations.choreographyDelay,
+ step: 10,
+ minValue: 0,
+ maxValue: 1000,
+ onChange: (self, newValue) => {
+ userOptions.animations.choreographyDelay = newValue;
+ },
+ }),
+ ]),
+ ],
+ }),
+ // Developer Section
+ ConfigSection({
+ name: getString("Developer"),
+ children: [
+ HyprlandToggle({
+ icon: "speed",
+ name: getString("Show FPS"),
+ desc: getString(
+ "[Hyprland]\nShow FPS overlay on top-left corner.",
+ ),
+ option: "debug:overlay",
+ }),
+ HyprlandToggle({
+ icon: "sort",
+ name: getString("Log to stdout"),
+ desc: getString("[Hyprland]\nPrint log messages to console."),
+ option: "debug:enable_stdout_logs",
+ }),
+ HyprlandToggle({
+ icon: "motion_sensor_active",
+ name: getString("Damage Tracking"),
+ desc: getString("[Hyprland]\nEnable damage tracking."),
+ option: "debug:damage_tracking",
+ enableValue: 2,
+ }),
+ HyprlandToggle({
+ icon: "destruction",
+ name: getString("Damage Blink"),
+ desc: getString("[Hyprland]\nShow screen damage flashes."),
+ option: "debug:damage_blink",
+ }),
+ ],
+ }),
+ ],
+ }),
+ });
+
+ const footNote = Box({
+ homogeneous: true,
+ children: [
+ Label({
+ hpack: "center",
+ className: "txt txt-italic txt-subtext margin-5",
+ label: getString("Not all changes are saved"),
+ }),
+ ],
+ });
+
+ return Box({
+ ...props,
+ className: "spacing-v-5",
+ vertical: true,
+ children: [mainContent, footNote],
+ });
+};
+
+// Ensure the config file exists before applying changes
+ensureConfigFileExists();
diff --git a/.config/ags/scripts/color_generation/applycolor.sh b/.config/ags/scripts/color_generation/applycolor.sh
index db056d436..b5fcebbf0 100755
--- a/.config/ags/scripts/color_generation/applycolor.sh
+++ b/.config/ags/scripts/color_generation/applycolor.sh
@@ -10,7 +10,7 @@ STATE_DIR="$XDG_STATE_HOME/ags"
term_alpha=100 #Set this to < 100 make all your terminals transparent
# sleep 0 # idk i wanted some delay or colors dont get applied properly
if [ ! -d "$CACHE_DIR"/user/generated ]; then
- mkdir -p "$CACHE_DIR"/user/generated
+ mkdir -p "$CACHE_DIR"/user/generated
fi
cd "$CONFIG_DIR" || exit
@@ -19,9 +19,9 @@ colorstrings=''
colorlist=()
colorvalues=()
-# wallpath=$(swww query | head -1 | awk -F 'image: ' '{print $2}')
-# wallpath_png="$CACHE_DIR/user/generated/hypr/lockscreen.png"
-# convert "$wallpath" "$wallpath_png"
+wallpath=$(swww query | head -1 | awk -F 'image: ' '{print $2}')
+wallpath_png="$CACHE_DIR/user/generated/hypr/lockscreen.png"
+convert "$wallpath" "$wallpath_png"
# wallpath_png=$(echo "$wallpath_png" | sed 's/\//\\\//g')
# wallpath_png=$(sed 's/\//\\\\\//g' <<< "$wallpath_png")
@@ -38,145 +38,161 @@ transparentize() {
}
get_light_dark() {
- lightdark=""
- if [ ! -f "$STATE_DIR/user/colormode.txt" ]; then
- echo "" > "$STATE_DIR/user/colormode.txt"
- else
- lightdark=$(sed -n '1p' "$STATE_DIR/user/colormode.txt")
- fi
- echo "$lightdark"
+ lightdark=""
+ if [ ! -f "$STATE_DIR/user/colormode.txt" ]; then
+ echo "" >"$STATE_DIR/user/colormode.txt"
+ else
+ lightdark=$(sed -n '1p' "$STATE_DIR/user/colormode.txt")
+ fi
+ echo "$lightdark"
}
apply_fuzzel() {
- # Check if scripts/templates/fuzzel/fuzzel.ini exists
- if [ ! -f "scripts/templates/fuzzel/fuzzel.ini" ]; then
- echo "Template file not found for Fuzzel. Skipping that."
- return
- fi
- # Copy template
- mkdir -p "$CACHE_DIR"/user/generated/fuzzel
- cp "scripts/templates/fuzzel/fuzzel.ini" "$CACHE_DIR"/user/generated/fuzzel/fuzzel.ini
- # Apply colors
- for i in "${!colorlist[@]}"; do
- sed -i "s/{{ ${colorlist[$i]} }}/${colorvalues[$i]#\#}/g" "$CACHE_DIR"/user/generated/fuzzel/fuzzel.ini
- done
+ # Check if scripts/templates/fuzzel/fuzzel.ini exists
+ if [ ! -f "scripts/templates/fuzzel/fuzzel.ini" ]; then
+ echo "Template file not found for Fuzzel. Skipping that."
+ return
+ fi
+ # Copy template
+ mkdir -p "$CACHE_DIR"/user/generated/fuzzel
+ cp "scripts/templates/fuzzel/fuzzel.ini" "$CACHE_DIR"/user/generated/fuzzel/fuzzel.ini
+ # Apply colors
+ for i in "${!colorlist[@]}"; do
+ sed -i "s/{{ ${colorlist[$i]} }}/${colorvalues[$i]#\#}/g" "$CACHE_DIR"/user/generated/fuzzel/fuzzel.ini
+ done
- cp "$CACHE_DIR"/user/generated/fuzzel/fuzzel.ini "$XDG_CONFIG_HOME"/fuzzel/fuzzel.ini
+ cp "$CACHE_DIR"/user/generated/fuzzel/fuzzel.ini "$XDG_CONFIG_HOME"/fuzzel/fuzzel.ini
}
apply_term() {
- # Check if terminal escape sequence template exists
- if [ ! -f "scripts/templates/terminal/sequences.txt" ]; then
- echo "Template file not found for Terminal. Skipping that."
- return
+ # Check if terminal escape sequence template exists
+ if [ ! -f "scripts/templates/terminal/sequences.txt" ]; then
+ echo "Template file not found for Terminal. Skipping that."
+ return
+ fi
+ # Copy template
+ mkdir -p "$CACHE_DIR"/user/generated/terminal
+ cp "scripts/templates/terminal/sequences.txt" "$CACHE_DIR"/user/generated/terminal/sequences.txt
+ # Apply colors
+ for i in "${!colorlist[@]}"; do
+ sed -i "s/${colorlist[$i]} #/${colorvalues[$i]#\#}/g" "$CACHE_DIR"/user/generated/terminal/sequences.txt
+ done
+
+ sed -i "s/\$alpha/$term_alpha/g" "$CACHE_DIR/user/generated/terminal/sequences.txt"
+
+ for file in /dev/pts/*; do
+ if [[ $file =~ ^/dev/pts/[0-9]+$ ]]; then
+ cat "$CACHE_DIR"/user/generated/terminal/sequences.txt >"$file"
fi
- # Copy template
- mkdir -p "$CACHE_DIR"/user/generated/terminal
- cp "scripts/templates/terminal/sequences.txt" "$CACHE_DIR"/user/generated/terminal/sequences.txt
- # Apply colors
- for i in "${!colorlist[@]}"; do
- sed -i "s/${colorlist[$i]} #/${colorvalues[$i]#\#}/g" "$CACHE_DIR"/user/generated/terminal/sequences.txt
- done
-
- sed -i "s/\$alpha/$term_alpha/g" "$CACHE_DIR/user/generated/terminal/sequences.txt"
-
- for file in /dev/pts/*; do
- if [[ $file =~ ^/dev/pts/[0-9]+$ ]]; then
- cat "$CACHE_DIR"/user/generated/terminal/sequences.txt > "$file"
- fi
- done
+ done
}
apply_hyprland() {
- # Check if scripts/templates/hypr/hyprland/colors.conf exists
- if [ ! -f "scripts/templates/hypr/hyprland/colors.conf" ]; then
- echo "Template file not found for Hyprland colors. Skipping that."
- return
- fi
- # Copy template
- mkdir -p "$CACHE_DIR"/user/generated/hypr/hyprland
- cp "scripts/templates/hypr/hyprland/colors.conf" "$CACHE_DIR"/user/generated/hypr/hyprland/colors.conf
- # Apply colors
- for i in "${!colorlist[@]}"; do
- sed -i "s/{{ ${colorlist[$i]} }}/${colorvalues[$i]#\#}/g" "$CACHE_DIR"/user/generated/hypr/hyprland/colors.conf
- done
+ # Check if scripts/templates/hypr/hyprland/colors.conf exists
+ if [ ! -f "scripts/templates/hypr/hyprland/colors.conf" ]; then
+ echo "Template file not found for Hyprland colors. Skipping that."
+ return
+ fi
+ # Copy template
+ mkdir -p "$CACHE_DIR"/user/generated/hypr/hyprland
+ cp "scripts/templates/hypr/hyprland/colors.conf" "$CACHE_DIR"/user/generated/hypr/hyprland/colors.conf
+ # Apply colors
+ for i in "${!colorlist[@]}"; do
+ sed -i "s/{{ ${colorlist[$i]} }}/${colorvalues[$i]#\#}/g" "$CACHE_DIR"/user/generated/hypr/hyprland/colors.conf
+ done
- cp "$CACHE_DIR"/user/generated/hypr/hyprland/colors.conf "$XDG_CONFIG_HOME"/hypr/hyprland/colors.conf
+ cp "$CACHE_DIR"/user/generated/hypr/hyprland/colors.conf "$XDG_CONFIG_HOME"/hypr/hyprland/colors.conf
}
apply_hyprlock() {
- # Check if scripts/templates/hypr/hyprlock.conf exists
- if [ ! -f "scripts/templates/hypr/hyprlock.conf" ]; then
- echo "Template file not found for hyprlock. Skipping that."
- return
- fi
- # Copy template
- mkdir -p "$CACHE_DIR"/user/generated/hypr/
- cp "scripts/templates/hypr/hyprlock.conf" "$CACHE_DIR"/user/generated/hypr/hyprlock.conf
- # Apply colors
- # sed -i "s/{{ SWWW_WALL }}/${wallpath_png}/g" "$CACHE_DIR"/user/generated/hypr/hyprlock.conf
- for i in "${!colorlist[@]}"; do
- sed -i "s/{{ ${colorlist[$i]} }}/${colorvalues[$i]#\#}/g" "$CACHE_DIR"/user/generated/hypr/hyprlock.conf
- done
+ # Check if scripts/templates/hypr/hyprlock.conf exists
+ if [ ! -f "scripts/templates/hypr/hyprlock.conf" ]; then
+ echo "Template file not found for hyprlock. Skipping that."
+ return
+ fi
+ # Copy template
+ mkdir -p "$CACHE_DIR"/user/generated/hypr/
+ cp "scripts/templates/hypr/hyprlock.conf" "$CACHE_DIR"/user/generated/hypr/hyprlock.conf
+ # Apply colors
+ sed -i "s|path = \$path|path = $wallpath_png|" "$CACHE_DIR"/user/generated/hypr/hyprlock.conf
- cp "$CACHE_DIR"/user/generated/hypr/hyprlock.conf "$XDG_CONFIG_HOME"/hypr/hyprlock.conf
+ for i in "${!colorlist[@]}"; do
+ sed -i "s/{{ ${colorlist[$i]} }}/${colorvalues[$i]#\#}/g" "$CACHE_DIR"/user/generated/hypr/hyprlock.conf
+ done
+
+ cp "$CACHE_DIR"/user/generated/hypr/hyprlock.conf "$XDG_CONFIG_HOME"/hypr/hyprlock.conf
}
apply_lightdark() {
- lightdark=$(get_light_dark)
- if [ "$lightdark" = "light" ]; then
- gsettings set org.gnome.desktop.interface color-scheme 'prefer-light'
- else
- gsettings set org.gnome.desktop.interface color-scheme 'prefer-dark'
- fi
+ lightdark=$(get_light_dark)
+ if [ "$lightdark" = "light" ]; then
+ gsettings set org.gnome.desktop.interface color-scheme 'prefer-light'
+ else
+ gsettings set org.gnome.desktop.interface color-scheme 'prefer-dark'
+ fi
}
apply_gtk() { # Using gradience-cli
- usegradience=$(sed -n '4p' "$STATE_DIR/user/colormode.txt")
- if [[ "$usegradience" = "nogradience" ]]; then
- rm "$XDG_CONFIG_HOME/gtk-3.0/gtk.css"
- rm "$XDG_CONFIG_HOME/gtk-4.0/gtk.css"
- return
- fi
+ usegradience=$(sed -n '4p' "$STATE_DIR/user/colormode.txt")
+ if [[ "$usegradience" = "nogradience" ]]; then
+ rm "$XDG_CONFIG_HOME/gtk-3.0/gtk.css"
+ rm "$XDG_CONFIG_HOME/gtk-4.0/gtk.css"
+ return
+ fi
- # Copy template
- mkdir -p "$CACHE_DIR"/user/generated/gradience
- cp "scripts/templates/gradience/preset.json" "$CACHE_DIR"/user/generated/gradience/preset.json
+ # Copy template
+ mkdir -p "$CACHE_DIR"/user/generated/gradience
+ cp "scripts/templates/gradience/preset.json" "$CACHE_DIR"/user/generated/gradience/preset.json
- # Apply colors
- for i in "${!colorlist[@]}"; do
- sed -i "s/{{ ${colorlist[$i]} }}/${colorvalues[$i]}/g" "$CACHE_DIR"/user/generated/gradience/preset.json
- done
+ # Apply colors
+ for i in "${!colorlist[@]}"; do
+ sed -i "s/{{ ${colorlist[$i]} }}/${colorvalues[$i]}/g" "$CACHE_DIR"/user/generated/gradience/preset.json
+ done
- mkdir -p "$XDG_CONFIG_HOME/presets" # create gradience presets folder
- gradience-cli apply -p "$CACHE_DIR"/user/generated/gradience/preset.json --gtk both
+ mkdir -p "$XDG_CONFIG_HOME/presets" # create gradience presets folder
+ gradience-cli apply -p "$CACHE_DIR"/user/generated/gradience/preset.json --gtk both
- # And set GTK theme manually as Gradience defaults to light adw-gtk3
- # (which is unreadable when broken when you use dark mode)
- lightdark=$(get_light_dark)
- if [ "$lightdark" = "light" ]; then
- gsettings set org.gnome.desktop.interface gtk-theme 'adw-gtk3'
- else
- gsettings set org.gnome.desktop.interface gtk-theme adw-gtk3-dark
- fi
+ # And set GTK theme manually as Gradience defaults to light adw-gtk3
+ # (which is unreadable when broken when you use dark mode)
+ lightdark=$(get_light_dark)
+ if [ "$lightdark" = "light" ]; then
+ gsettings set org.gnome.desktop.interface gtk-theme 'adw-gtk3'
+ else
+ gsettings set org.gnome.desktop.interface gtk-theme adw-gtk3-dark
+ fi
}
apply_ags() {
- ags run-js "handleStyles(false);"
- ags run-js 'openColorScheme.value = true; Utils.timeout(2000, () => openColorScheme.value = false);'
+ ags run-js "handleStyles(false);"
+ ags run-js 'openColorScheme.value = true; Utils.timeout(2000, () => openColorScheme.value = false);'
}
+apply_pywal() {
+ # generate pywal colors
+ mkdir -p "$CACHE_DIR"/user/generated/pywal
+ python "$CONFIG_DIR/scripts/color_generation/gen_materialwal.py" # generate wal colors
+ wal -n -f "$CACHE_DIR/user/generated/pywal/pywal.json" --cols16 # apply pywal
+ # apply other scripts
+ sh "$XDG_CONFIG_HOME/pywal/gen-pywal"
+}
-colornames=$(cat $STATE_DIR/scss/_material.scss | cut -d: -f1)
-colorstrings=$(cat $STATE_DIR/scss/_material.scss | cut -d: -f2 | cut -d ' ' -f2 | cut -d ";" -f1)
+apply_qt() {
+ sh "$CONFIG_DIR/scripts/kvantum/materialQT.sh" # generate kvantum theme
+ python "$CONFIG_DIR/scripts/kvantum/changeAwdColors.py" # apply config colors
+}
+
+colornames=$(cat "$STATE_DIR"/scss/_material.scss | cut -d: -f1)
+colorstrings=$(cat "$STATE_DIR"/scss/_material.scss | cut -d: -f2 | cut -d ' ' -f2 | cut -d ";" -f1)
IFS=$'\n'
-colorlist=( $colornames ) # Array of color names
-colorvalues=( $colorstrings ) # Array of color values
+colorlist=($colornames) # Array of color names
+colorvalues=($colorstrings) # Array of color values
apply_ags &
apply_hyprland &
apply_hyprlock &
apply_lightdark &
apply_gtk &
+apply_qt &
+apply_pywal &
apply_fuzzel &
apply_term &
diff --git a/.config/ags/scripts/color_generation/gen_materialwal.py b/.config/ags/scripts/color_generation/gen_materialwal.py
new file mode 100644
index 000000000..69d7fdfc6
--- /dev/null
+++ b/.config/ags/scripts/color_generation/gen_materialwal.py
@@ -0,0 +1,56 @@
+import json
+import re
+import os
+import argparse
+
+def parse_scss_file(file_path):
+ scss_colors = {}
+ with open(file_path, 'r') as file:
+ for line in file:
+ match = re.match(r'\$(\w+):\s*(#[0-9A-Fa-f]{6});', line)
+ if match:
+ scss_colors[match.group(1)] = match.group(2)
+ return scss_colors
+
+def scss_to_pywal(scss_file, output_file='pywal_colors.json'):
+ scss_colors = parse_scss_file(scss_file)
+
+ pywal_colors = {
+ "special": {
+ "background": scss_colors["background"],
+ "foreground": scss_colors["onBackground"],
+ "cursor": scss_colors["onBackground"]
+ },
+ "colors": {
+ "color0": scss_colors["term0"],
+ "color1": scss_colors["term1"],
+ "color2": scss_colors["term2"],
+ "color3": scss_colors["term3"],
+ "color4": scss_colors["term4"],
+ "color5": scss_colors["term5"],
+ "color6": scss_colors["term6"],
+ "color7": scss_colors["term7"],
+ "color8": scss_colors["term8"],
+ "color9": scss_colors["term9"],
+ "color10": scss_colors["term10"],
+ "color11": scss_colors["term11"],
+ "color12": scss_colors["term12"],
+ "color13": scss_colors["term13"],
+ "color14": scss_colors["term14"],
+ "color15": scss_colors["term15"]
+ }
+ }
+
+ # Write the Pywal colors to a JSON file
+ with open(output_file, 'w') as file:
+ json.dump(pywal_colors, file, indent=4)
+
+ print(f"Pywal colors have been saved to {output_file}")
+
+if __name__ == "__main__":
+ # Hardcode the file paths
+ scss_file = os.path.expanduser('~/.local/state/ags/scss/_material.scss')
+ output_file = os.path.expanduser('~/.cache/ags/user/generated/pywal/pywal.json')
+
+ scss_to_pywal(scss_file, output_file)
+
diff --git a/.config/ags/scripts/color_generation/switchwall.sh b/.config/ags/scripts/color_generation/switchwall.sh
index e2d68cab0..3c3101e25 100755
--- a/.config/ags/scripts/color_generation/switchwall.sh
+++ b/.config/ags/scripts/color_generation/switchwall.sh
@@ -4,36 +4,36 @@ XDG_CONFIG_HOME="${XDG_CONFIG_HOME:-$HOME/.config}"
CONFIG_DIR="$XDG_CONFIG_HOME/ags"
switch() {
- imgpath=$1
- read scale screenx screeny screensizey < <(hyprctl monitors -j | jq '.[] | select(.focused) | .scale, .x, .y, .height' | xargs)
- cursorposx=$(hyprctl cursorpos -j | jq '.x' 2>/dev/null) || cursorposx=960
- cursorposx=$(bc <<< "scale=0; ($cursorposx - $screenx) * $scale / 1")
- cursorposy=$(hyprctl cursorpos -j | jq '.y' 2>/dev/null) || cursorposy=540
- cursorposy=$(bc <<< "scale=0; ($cursorposy - $screeny) * $scale / 1")
- cursorposy_inverted=$((screensizey - cursorposy))
+ imgpath=$1
+ read scale screenx screeny screensizey < <(hyprctl monitors -j | jq '.[] | select(.focused) | .scale, .x, .y, .height' | xargs)
+ cursorposx=$(hyprctl cursorpos -j | jq '.x' 2>/dev/null) || cursorposx=960
+ cursorposx=$(bc <<<"scale=0; ($cursorposx - $screenx) * $scale / 1")
+ cursorposy=$(hyprctl cursorpos -j | jq '.y' 2>/dev/null) || cursorposy=540
+ cursorposy=$(bc <<<"scale=0; ($cursorposy - $screeny) * $scale / 1")
+ cursorposy_inverted=$((screensizey - cursorposy))
- if [ "$imgpath" == '' ]; then
- echo 'Aborted'
- exit 0
- fi
+ if [ "$imgpath" == '' ]; then
+ echo 'Aborted'
+ exit 0
+ fi
- # ags run-js "wallpaper.set('')"
- # sleep 0.1 && ags run-js "wallpaper.set('${imgpath}')" &
- swww img "$imgpath" --transition-step 100 --transition-fps 120 \
- --transition-type grow --transition-angle 30 --transition-duration 1 \
- --transition-pos "$cursorposx, $cursorposy_inverted"
+ # ags run-js "wallpaper.set('')"
+ # sleep 0.1 && ags run-js "wallpaper.set('${imgpath}')" &
+ swww img "$imgpath" --transition-step 100 --transition-fps 120 \
+ --transition-type grow --transition-angle 30 --transition-duration 1 \
+ --transition-pos "$cursorposx, $cursorposy_inverted"
}
if [ "$1" == "--noswitch" ]; then
- imgpath=$(swww query | awk -F 'image: ' '{print $2}')
- # imgpath=$(ags run-js 'wallpaper.get(0)')
+ imgpath=$(swww query | awk -F 'image: ' '{print $2}')
+ # imgpath=$(ags run-js 'wallpaper.get(0)')
elif [[ "$1" ]]; then
- switch "$1"
+ switch "$1"
else
- # Select and set image (hyprland)
+ # Select and set image (hyprland)
- cd "$(xdg-user-dir PICTURES)" || return 1
- switch "$(yad --width 1200 --height 800 --file --add-preview --large-preview --title='Choose wallpaper')"
+ cd "$(xdg-user-dir PICTURES)" || return 1
+ switch "$(yad --width 1200 --height 800 --file --add-preview --large-preview --title='Choose wallpaper')"
fi
# Generate colors for ags n stuff
diff --git a/.config/ags/scripts/grimblast.sh b/.config/ags/scripts/grimblast.sh
index a5602f24d..6cbab2ec2 100755
--- a/.config/ags/scripts/grimblast.sh
+++ b/.config/ags/scripts/grimblast.sh
@@ -38,9 +38,9 @@ env_editor_confirm() {
fi
}
-NOTIFY=no
-CURSOR=
-FREEZE=
+NOTIFY=yes
+CURSOR=no
+FREEZE=yes
WAIT=no
SCALE=
HYPRPICKER_PID=-1
diff --git a/.config/ags/scripts/kvantum/adwsvg.py b/.config/ags/scripts/kvantum/adwsvg.py
new file mode 100644
index 000000000..df40a92fe
--- /dev/null
+++ b/.config/ags/scripts/kvantum/adwsvg.py
@@ -0,0 +1,76 @@
+import re
+import os
+
+def read_scss(file_path):
+ """Reads an SCSS file and returns a dictionary of color variables."""
+ colors = {}
+ with open(file_path, 'r') as file:
+ for line in file:
+ match = re.match(r'\$(\w+):\s*(#[0-9A-Fa-f]{6});', line.strip())
+ if match:
+ variable_name, color = match.groups()
+ colors[variable_name] = color
+ return colors
+
+def update_svg_colors(svg_path, old_to_new_colors, output_path):
+ """
+ Updates the colors in an SVG file based on the provided color map.
+
+ :param svg_path: Path to the SVG file.
+ :param old_to_new_colors: Dictionary mapping old colors to new colors.
+ :param output_path: Path to save the updated SVG file.
+ """
+ # Read the SVG content
+ with open(svg_path, 'r') as file:
+ svg_content = file.read()
+
+ # Replace old colors with new colors
+ for old_color, new_color in old_to_new_colors.items():
+ svg_content = re.sub(old_color, new_color, svg_content, flags=re.IGNORECASE)
+
+ # Write the updated SVG content to the output file
+ with open(output_path, 'w') as file:
+ file.write(svg_content)
+
+ print(f"SVG colors have been updated and saved to {output_path}!")
+
+def main():
+ scss_file = os.path.expanduser('~/.local/state/ags/scss/_material.scss') # Hardcoded path to the SCSS file
+ svg_path = os.path.expanduser('~/.config/Kvantum/Colloid/Colloid.svg') # Hardcoded path to the input SVG file
+ output_path = os.path.expanduser('~/.config/Kvantum/MaterialAdw/MaterialAdw.svg') # Hardcoded path to the output SVG file
+
+ # Read colors from the SCSS file
+ color_data = read_scss(scss_file)
+
+ # Specify the old colors and map them to new colors from the SCSS file
+ old_to_new_colors = {
+ #'#cccccc': color_data['surfaceDim'], # Map old SVG color to new SCSS color
+ #'#666666': color_data['surfaceDim'],
+ '#3c84f7': color_data['primary'],
+ #'#5a5a5a': color_data['neutral_paletteKeyColor'],
+ '#000000': color_data['shadow'],
+ '#f04a50': color_data['error'],
+ '#4285f4': color_data['primaryFixedDim'],
+ '#f2f2f2': color_data['background'],
+ #'#dfdfdf': color_data['surfaceContainerLow'],
+ '#ffffff': color_data['background'],
+ '#1e1e1e': color_data['onPrimaryFixed'],
+ #'#b6b6b6': color_data['surfaceContainer'],
+ '#333': color_data['inverseSurface'],
+ '#212121': color_data['onSecondaryFixed'],
+ '#5b9bf8': color_data['secondaryContainer'],
+ '#26272a': color_data['term7'],
+ #'#b3b3b3': color_data['surfaceBright'],
+ #'#b74aff': color_data['tertiary'],
+ #'#989898': color_data['surfaceContainerHighest'],
+ #'#c1c1c1': color_data['surfaceContainerHigh'],
+ '#444444': color_data['onBackground'],
+ '#333333': color_data['onPrimaryFixed'],
+ }
+
+ # Update the SVG colors
+ update_svg_colors(svg_path, old_to_new_colors, output_path)
+
+if __name__ == "__main__":
+ main()
+
diff --git a/.config/ags/scripts/kvantum/adwsvgDark.py b/.config/ags/scripts/kvantum/adwsvgDark.py
new file mode 100644
index 000000000..7eccf7ea6
--- /dev/null
+++ b/.config/ags/scripts/kvantum/adwsvgDark.py
@@ -0,0 +1,84 @@
+import re
+import os
+
+def read_scss(file_path):
+ """Reads an SCSS file and returns a dictionary of color variables."""
+ colors = {}
+ with open(file_path, 'r') as file:
+ for line in file:
+ match = re.match(r'\$(\w+):\s*(#[0-9A-Fa-f]{6});', line.strip())
+ if match:
+ variable_name, color = match.groups()
+ colors[variable_name] = color
+ return colors
+
+def update_svg_colors(svg_path, old_to_new_colors, output_path):
+ """
+ Updates the colors in an SVG file based on the provided color map.
+
+ :param svg_path: Path to the SVG file.
+ :param old_to_new_colors: Dictionary mapping old colors to new colors.
+ :param output_path: Path to save the updated SVG file.
+ """
+ # Read the SVG content
+ with open(svg_path, 'r') as file:
+ svg_content = file.read()
+
+ # Replace old colors with new colors
+ for old_color, new_color in old_to_new_colors.items():
+ svg_content = re.sub(old_color, new_color, svg_content, flags=re.IGNORECASE)
+
+ # Write the updated SVG content to the output file
+ with open(output_path, 'w') as file:
+ file.write(svg_content)
+
+ print(f"SVG colors have been updated and saved to {output_path}!")
+
+def main():
+ scss_file = os.path.expanduser('~/.local/state/ags/scss/_material.scss') # Hardcoded path to the SCSS file
+ svg_path = os.path.expanduser('~/.config/Kvantum/Colloid/ColloidDark.svg') # Hardcoded path to the input SVG file
+ output_path = os.path.expanduser('~/.config/Kvantum/MaterialAdw/MaterialAdw.svg') # Hardcoded path to the output SVG file
+
+ # Read colors from the SCSS file
+ color_data = read_scss(scss_file)
+
+ # Specify the old colors and map them to new colors from the SCSS file
+ old_to_new_colors = {
+ #'#525252': color_data['surfaceDim'], # Map old SVG color to new SCSS color
+ #'#666666': color_data['surfaceDim'],
+ '#31363b': color_data['background'],
+ #'#eff0f1': color_data['neutral_paletteKeyColor'],
+ '#000000': color_data['shadow'],
+ '#5b9bf8': color_data['primary'],
+ '#93cee9': color_data['onSecondaryContainer'],
+ '#3daee9': color_data['secondary'],
+ #'#fff': color_data['term10'],
+ #'#5a5a5a': color_data['surfaceVariant'],
+ #'#acb1bc': color_data['onPrimaryFixed'],
+ '#ffffff': color_data['term11'],
+ '#5a616e': color_data['surfaceVariant'],
+ '#f04a50': color_data['error'],
+ '#4285f4': color_data['secondary'],
+ '#242424': color_data['background'],
+ '#2c2c2c': color_data['background'],
+ #'#dfdfdf': color_data['onSurfaceVariant'],
+ #'#646464': color_data['surfaceContainerHighest'],
+ #'#989898': color_data['surfaceContainerHigh'],
+ #'#c1c1c1': color_data['primaryFixedDim'],
+ '#1e1e1e': color_data['background'],
+ '#3c3c3c': color_data['background'],
+ '#26272a': color_data['surfaceBright'],
+ '#000000': color_data['shadow'],
+ '#b74aff': color_data['tertiary'],
+ #'#b6b6b6': color_data['onSurfaceVariant'],
+ '#1a1a1a': color_data['background'],
+ '#333': color_data['term0'],
+ '#212121': color_data['background'],
+ }
+
+ # Update the SVG colors
+ update_svg_colors(svg_path, old_to_new_colors, output_path)
+
+if __name__ == "__main__":
+ main()
+
diff --git a/.config/ags/scripts/kvantum/changeAwdColors.py b/.config/ags/scripts/kvantum/changeAwdColors.py
new file mode 100644
index 000000000..812a36526
--- /dev/null
+++ b/.config/ags/scripts/kvantum/changeAwdColors.py
@@ -0,0 +1,68 @@
+import re
+import os
+
+def get_colors_from_scss(scss_file):
+ colors = {}
+ with open(scss_file, 'r') as file:
+ for line in file:
+ match = re.match(r'\$(\w+):\s*(#[0-9A-Fa-f]{6});', line)
+ if match:
+ colors[match.group(1)] = match.group(2)
+ return colors
+
+def update_config_colors(config_file, colors, mappings):
+ with open(config_file, 'r') as file:
+ config_content = file.read()
+
+ for key, variable in mappings.items():
+ if variable in colors:
+ color = colors[variable]
+ pattern = rf'({key}=)#?\w+\b'
+ new_line = f'\\1{color}'
+ if re.search(pattern, config_content):
+ config_content = re.sub(pattern, new_line, config_content)
+ else:
+ config_content += f"\n{key}={color}"
+
+ with open(config_file, 'w') as file:
+ file.write(config_content)
+
+if __name__ == "__main__":
+ scss_file = os.path.expanduser('~/.local/state/ags/scss/_material.scss')
+ config_file = os.path.expanduser('~/.config/Kvantum/MaterialAdw/MaterialAdw.kvconfig') # Replace with the actual path to your config file
+
+ # Define your mappings here
+ mappings = {
+ 'window.color': 'background',
+ 'base.color': 'background',
+ 'alt.base.color': 'background',
+ 'button.color': 'surfaceContainer',
+ 'light.color': 'surfaceContainerLow',
+ 'mid.light.color': 'surfaceContainer',
+ 'dark.color': 'surfaceContainerHighest',
+ 'mid.color': 'surfaceContainerHigh',
+ 'highlight.color': 'primary',
+ 'inactive.highlight.color': 'primary',
+ 'text.color': 'onBackground',
+ 'window.text.color': 'onBackground',
+ 'button.text.color': 'onBackground',
+ 'disabled.text.color': 'onBackground',
+ 'tooltip.text.color': 'onBackground',
+ 'highlight.text.color': 'onSurface',
+ 'link.color': 'tertiary',
+ 'link.visited.color': 'tertiaryFixed',
+ 'progress.indicator.text.color': 'onBackground',
+ 'text.normal.color': 'onBackground',
+ 'text.focus.color': 'onBackground',
+ 'text.press.color': 'onsecondarycontainer',
+ 'text.toggle.color': 'onsecondarycontainer',
+ 'text.disabled.color': 'surfaceDim',
+
+
+ # Add more mappings as needed
+ }
+
+ colors = get_colors_from_scss(scss_file)
+ update_config_colors(config_file, colors, mappings)
+ print("Config colors updated successfully!")
+
diff --git a/.config/ags/scripts/kvantum/materialQT.sh b/.config/ags/scripts/kvantum/materialQT.sh
new file mode 100755
index 000000000..7495fad37
--- /dev/null
+++ b/.config/ags/scripts/kvantum/materialQT.sh
@@ -0,0 +1,43 @@
+#!/usr/bin/env bash
+
+XDG_CONFIG_HOME="${XDG_CONFIG_HOME:-$HOME/.config}"
+XDG_CACHE_HOME="${XDG_CACHE_HOME:-$HOME/.cache}"
+XDG_STATE_HOME="${XDG_STATE_HOME:-$HOME/.local/state}"
+CONFIG_DIR="$XDG_CONFIG_HOME/ags"
+CACHE_DIR="$XDG_CACHE_HOME/ags"
+STATE_DIR="$XDG_STATE_HOME/ags"
+
+get_light_dark() {
+ lightdark=""
+ if [ ! -f "$STATE_DIR/user/colormode.txt" ]; then
+ echo "" >"$STATE_DIR/user/colormode.txt"
+ else
+ lightdark=$(sed -n '1p' "$STATE_DIR/user/colormode.txt")
+ fi
+ echo "$lightdark"
+}
+
+apply_qt() {
+ # Check if the theme exists
+ FOLDER_PATH="$XDG_CONFIG_HOME/Kvantum/Colloid/"
+
+ if [ ! -d "$FOLDER_PATH" ]; then
+ # Send a notification
+ notify-send "Colloid-kde theme required" " The folder '$FOLDER_PATH' does not exist."
+ exit 1 # Exit the function if the folder does not exist
+ fi
+
+ lightdark=$(get_light_dark)
+ if [ "$lightdark" = "light" ]; then
+ # apply ligght colors
+ cp "$XDG_CONFIG_HOME/Kvantum/Colloid/Colloid.kvconfig" "$XDG_CONFIG_HOME/Kvantum/MaterialAdw/MaterialAdw.kvconfig"
+ python "$CONFIG_DIR/scripts/kvantum/adwsvg.py"
+
+ else
+ #apply dark colors
+ cp "$XDG_CONFIG_HOME/Kvantum/Colloid/ColloidDark.kvconfig" "$XDG_CONFIG_HOME/Kvantum/MaterialAdw/MaterialAdw.kvconfig"
+ python "$CONFIG_DIR/scripts/kvantum/adwsvgDark.py"
+ fi
+}
+
+apply_qt
diff --git a/.config/ags/scripts/templates/hypr/hyprland/colors.conf b/.config/ags/scripts/templates/hypr/hyprland/colors.conf
index 8c0689f31..63df3a53e 100644
--- a/.config/ags/scripts/templates/hypr/hyprland/colors.conf
+++ b/.config/ags/scripts/templates/hypr/hyprland/colors.conf
@@ -4,6 +4,18 @@ general {
col.active_border = rgba({{ $onSurface }}39)
col.inactive_border = rgba({{ $outline }}30)
}
+group {
+ col.border_active = rgba({{ $onSurface }}39)
+ col.border_inactive = rgba({{ $outline }}30)
+
+ groupbar {
+ col.active = rgba({{ $background }}FF)
+ col.inactive = rgba({{ $outline }}50)
+ scrolling = true
+ font_size = 11
+ text_color = rgba({{ $onBackground }}FF)
+ }
+}
misc {
background_color = rgba({{ $surface }}FF)
@@ -31,4 +43,4 @@ plugin {
}
}
-windowrulev2 = bordercolor rgba({{ $primary }}AA) rgba({{ $primary }}77),pinned:1
\ No newline at end of file
+windowrulev2 = bordercolor rgba({{ $primary }}AA) rgba({{ $primary }}77),pinned:1
diff --git a/.config/ags/scripts/templates/hypr/hyprlock.conf b/.config/ags/scripts/templates/hypr/hyprlock.conf
index d3de5d80c..ea8092cab 100644
--- a/.config/ags/scripts/templates/hypr/hyprlock.conf
+++ b/.config/ags/scripts/templates/hypr/hyprlock.conf
@@ -1,90 +1,97 @@
-# $text_color = rgba({{ $onBackground }}FF)
-# $entry_background_color = rgba({{ $background }}11)
-# $entry_border_color = rgba({{ $outline }}55)
-# $entry_color = rgba({{ $onSurfaceVariant }}FF)
-$text_color = rgba(FFFFFFFF)
-$entry_background_color = rgba(33333311)
-$entry_border_color = rgba(3B3B3B55)
-$entry_color = rgba(FFFFFFFF)
+#hyprlock config
+
+$text_color = rgba({{ $term3 }}FF)
+$text_key_color = rgba({{ $term1 }}FF)
+$text_status_color = rgba({{ $tertiary }}FF)
+$base_color = rgba({{ $term0 }}FF)
+
$font_family = Rubik Light
-$font_family_clock = Rubik Light
+$font_family_clock = Geist Mono 10
+$font_family_date = JetBrainsMono Nerd Font 10
$font_material_symbols = Material Symbols Rounded
+general {
+ #hide cursor
+ hide_cursor = true
+}
+
background {
- # color = rgba({{ $surfaceContainerLowest }}FF)
- color = rgba(000000FF)
- # path = {{ SWWW_WALL }}
- # path = screenshot
- # blur_size = 5
- # blur_passes = 4
-}
-input-field {
monitor =
- size = 250, 50
- outline_thickness = 2
- dots_size = 0.1
- dots_spacing = 0.3
- outer_color = $entry_border_color
- inner_color = $entry_background_color
- font_color = $entry_color
- # fade_on_empty = true
+ path = $path # only png supported for now
+ # color = $color1
- position = 0, 20
- halign = center
- valign = center
+ # all these options are taken from hyprland, see https://wiki.hyprland.org/Configuring/Variables/#blur for explanations
+ blur_size = 4
+ blur_passes = 3 # 0 disables blurring
+ noise = 0.0117
+ contrast = 1.3000 # Vibrant!!!
+ brightness = 0.8000
+ vibrancy = 0.2100
+ vibrancy_darkness = 0.0
}
-label { # Clock
+# Hours
+label {
monitor =
- text = $TIME
- shadow_passes = 1
- shadow_boost = 0.5
+ text = cmd[update:1000] echo " $(date +"%H") "
color = $text_color
- font_size = 65
+ font_size = 112
font_family = $font_family_clock
+ shadow_passes = 3
+ shadow_size = 4
- position = 0, 300
+ position = 0, 220
halign = center
valign = center
}
-label { # Greeting
- monitor =
- text = hi $USER !!!
- shadow_passes = 1
- shadow_boost = 0.5
- color = $text_color
- font_size = 20
- font_family = $font_family
- position = 0, 240
+# Minutes
+label {
+ monitor =
+ text = cmd[update:1000] echo " $(date +"%M") "
+ color = $text_key_color
+ font_size = 112
+ font_family = $font_family_clock
+ shadow_passes = 3
+ shadow_size = 4
+
+ position = 0, 80
halign = center
valign = center
}
-label { # lock icon
- monitor =
- text = lock
- shadow_passes = 1
- shadow_boost = 0.5
- color = $text_color
- font_size = 21
- font_family = $font_material_symbols
- position = 0, 65
+# Today
+label {
+ monitor =
+ text = cmd[update:18000000] echo " "$(date +'%A')" "
+<<<<<<< HEAD
+ color = rgba(FFFFFF80)
+=======
+ color = rgba({{ $primaryContainer }}FF)
+>>>>>>> parent of 1a3fa77... heda hau fixed
+ font_size = 22
+ font_family = $font_family_date
+
+ position = 0, -20
halign = center
- valign = bottom
+ valign = center
}
-label { # "locked" text
- monitor =
- text = locked
- shadow_passes = 1
- shadow_boost = 0.5
- color = $text_color
- font_size = 14
- font_family = $font_family
- position = 0, 45
+# Week
+label {
+ monitor =
+ text = cmd[update:18000000] echo " "$(date +'%d %b')" "
+<<<<<<< HEAD
+ color = rgba(FFFFFF80)
+=======
+ color = rgba({{ $primaryContainer }}FF)
+>>>>>>> parent of 1a3fa77... heda hau fixed
+ font_size = 18
+ font_family = $font_family_date
+
+ position = 0, -50
halign = center
- valign = bottom
+ valign = center
}
label { # Status
@@ -92,11 +99,33 @@ label { # Status
text = cmd[update:5000] ${XDG_CONFIG_HOME:-$HOME/.config}/hypr/hyprlock/status.sh
shadow_passes = 1
shadow_boost = 0.5
- color = $text_color
+ color = $text_status_color
font_size = 14
font_family = $font_family
- position = 30, -30
- halign = left
- valign = top
-}
\ No newline at end of file
+ position = -30, 30
+ halign = right
+ valign = bottom
+}
+
+input-field {
+ monitor =
+ size = 230, 50
+ outline_thickness = 1
+
+ dots_size = 0.24 # Scale of input-field height, 0.2 - 0.8
+ dots_spacing = 0.64 # Scale of dots' absolute size, 0.0 - 1.0
+ dots_center = true
+ # dots_rouding = 1
+
+ rounding = 28
+ outer_color = $text_key_color
+ inner_color = $base_color
+ font_color = $text_color
+ fade_on_empty = true
+ placeholder_text = Password... # Text rendered in the input box when it's empty.
+
+ position = 0, 120
+ halign = center
+ valign = bottom
+}
diff --git a/.config/ags/tsconfig.json b/.config/ags/tsconfig.json
new file mode 100644
index 000000000..f03f2d126
--- /dev/null
+++ b/.config/ags/tsconfig.json
@@ -0,0 +1,18 @@
+{
+ "compilerOptions": {
+ "target": "ES2022",
+ "module": "ES2022",
+ "lib": [
+ "ES2022"
+ ],
+ "allowJs": true,
+ "checkJs": true,
+ "strict": true,
+ "noImplicitAny": false,
+ "baseUrl": ".",
+ "typeRoots": [
+ "./types"
+ ],
+ "skipLibCheck": true
+ }
+}
\ No newline at end of file
diff --git a/.config/ags/types b/.config/ags/types
new file mode 120000
index 000000000..a8e3f0415
--- /dev/null
+++ b/.config/ags/types
@@ -0,0 +1 @@
+/usr/share/com.github.Aylur.ags/types
\ No newline at end of file
diff --git a/.config/hypr/custom/env.conf b/.config/hypr/custom/env.conf
index fcd59ec86..a1578d249 100644
--- a/.config/hypr/custom/env.conf
+++ b/.config/hypr/custom/env.conf
@@ -1,2 +1,4 @@
# You can put extra environment variables here
# https://wiki.hyprland.org/Configuring/Environment-variables/
+# env = QT_QPA_PLATFORMTHEME, KDE
+
diff --git a/.config/hypr/custom/execs.conf b/.config/hypr/custom/execs.conf
index cae4ef6c5..d00791718 100644
--- a/.config/hypr/custom/execs.conf
+++ b/.config/hypr/custom/execs.conf
@@ -1,2 +1,5 @@
# You can make apps auto-start here
# Relevant Hyprland wiki section: https://wiki.hyprland.org/Configuring/Keywords/#executing
+#
+
+
diff --git a/.config/hypr/custom/general.conf b/.config/hypr/custom/general.conf
index ded706ae7..a72e78e13 100644
--- a/.config/hypr/custom/general.conf
+++ b/.config/hypr/custom/general.conf
@@ -1,2 +1,6 @@
# Put general config stuff here
-# Here's a list of every variable: https://wiki.hyprland.org/Configuring/Variables/
\ No newline at end of file
+# Here's a list of every variable: https://wiki.hyprland.org/Configuring/Variables/
+# Generated by nwg-displays on 2024-10-19 at 17:38:39. Do not edit manually.
+
+# Put soruces here
+
diff --git a/.config/hypr/custom/keybinds.conf b/.config/hypr/custom/keybinds.conf
index f34545cef..3906428db 100644
--- a/.config/hypr/custom/keybinds.conf
+++ b/.config/hypr/custom/keybinds.conf
@@ -1,2 +1,4 @@
# You can put your preferred keybinds here
-# https://wiki.hyprland.org/Configuring/Binds/
\ No newline at end of file
+# https://wiki.hyprland.org/Configuring/Binds/
+
+
diff --git a/.config/hypr/hyprland.conf b/.config/hypr/hyprland.conf
index aa7c076c8..f61a907b6 100644
--- a/.config/hypr/hyprland.conf
+++ b/.config/hypr/hyprland.conf
@@ -8,6 +8,7 @@ source=~/.config/hypr/hyprland/general.conf
source=~/.config/hypr/hyprland/rules.conf
source=~/.config/hypr/hyprland/colors.conf
source=~/.config/hypr/hyprland/keybinds.conf
+source=~/.config/hypr/hyprland/HyprAGS.conf
# Custom
source=~/.config/hypr/custom/env.conf
diff --git a/.config/hypr/hyprland/HyprAGS.conf b/.config/hypr/hyprland/HyprAGS.conf
new file mode 100644
index 000000000..e69de29bb
diff --git a/.config/hypr/hyprland/env.conf b/.config/hypr/hyprland/env.conf
index ec654432e..6374e0131 100644
--- a/.config/hypr/hyprland/env.conf
+++ b/.config/hypr/hyprland/env.conf
@@ -11,6 +11,7 @@ env = INPUT_METHOD, fcitx
# ############ Themes #############
env = QT_QPA_PLATFORM, wayland
env = QT_QPA_PLATFORMTHEME, qt5ct
+env = QT_QPA_PLATFORMTHEME, qt6ct
# env = QT_STYLE_OVERRIDE,kvantum
# env = WLR_NO_HARDWARE_CURSORS, 1
diff --git a/.config/hypr/hyprland/execs.conf b/.config/hypr/hyprland/execs.conf
index 8a9b4c011..5a583df05 100644
--- a/.config/hypr/hyprland/execs.conf
+++ b/.config/hypr/hyprland/execs.conf
@@ -1,6 +1,6 @@
# Bar, wallpaper
exec-once = swww-daemon --format xrgb
-exec-once = /usr/lib/geoclue-2.0/demos/agent & gammastep
+exec-once = /usr/lib/geoclue-2.0/demos/agent & # gammastep
exec-once = ags &
# Input method
diff --git a/.config/hypr/hyprland/general.conf b/.config/hypr/hyprland/general.conf
index 15aa9a6ba..ad5a83c95 100644
--- a/.config/hypr/hyprland/general.conf
+++ b/.config/hypr/hyprland/general.conf
@@ -69,12 +69,7 @@ decoration {
rounding = 20
blur {
- enabled = true
- xray = true
- special = false
new_optimizations = true
- size = 14
- passes = 4
brightness = 1
noise = 0.01
contrast = 1
diff --git a/.config/hypr/hyprland/keybinds.conf b/.config/hypr/hyprland/keybinds.conf
index c6b3c286d..567d3511b 100644
--- a/.config/hypr/hyprland/keybinds.conf
+++ b/.config/hypr/hyprland/keybinds.conf
@@ -76,7 +76,8 @@ bind = Super+Alt, Space, togglefloating,
bind = Super+Alt, F, fullscreenstate, 0 3 # Toggle fake fullscreen
bind = Super, F, fullscreen, 0
bind = Super, D, fullscreen, 1
-
+bind = Super, J, togglesplit, # dwindle
+bind = Super, G, togglegroup, # togglegroup
#!
##! Workspace navigation
# Switching
@@ -206,6 +207,7 @@ bind = Ctrl+Super+Shift, V, exec, easyeffects # Launch EasyEffects (equalizer &
bind = Ctrl+Shift, Escape, exec, gnome-system-monitor # Launch GNOME System monitor
bind = Ctrl+Super, Slash, exec, pkill anyrun || anyrun # Toggle fallback launcher: anyrun
bind = Super+Alt, Slash, exec, pkill anyrun || fuzzel # Toggle fallback launcher: fuzzel
+bind = Super+Shift, A, exec, pkill rofi || rofi -show drun # toggle rofi
# Cursed stuff
## Make window not amogus large
diff --git a/.config/hypr/hyprland/rules.conf b/.config/hypr/hyprland/rules.conf
index 0fc000894..c71721142 100644
--- a/.config/hypr/hyprland/rules.conf
+++ b/.config/hypr/hyprland/rules.conf
@@ -1,38 +1,35 @@
+# You can put custom rules here
+# Window/layer rules: https://wiki.hyprland.org/Configuring/Window-Rules/
+# Workspace rules: https://wiki.hyprland.org/Configuring/Workspace-Rules/
+#
# ######## Window rules ########
-windowrule = noblur,.*
+# windowrule = noblur,.*
# windowrule = opacity 0.89 override 0.89 override, .* # Applies transparency to EVERY WINDOW
-windowrule = float, ^(blueberry.py)$
-windowrule = float, ^(steam)$
-windowrule = float, ^(guifetch)$ # FlafyDev/guifetch
-windowrulev2 = tile, class:(dev.warp.Warp)
-windowrulev2 = float, title:^([Pp]icture[-\s]?[Ii]n[-\s]?[Pp]icture)(.*)$
-windowrule = center, title:^(Open File)(.*)$
-windowrule = center, title:^(Select a File)(.*)$
-windowrule = center, title:^(Choose wallpaper)(.*)$
-windowrule = center, title:^(Open Folder)(.*)$
-windowrule = center, title:^(Save As)(.*)$
-windowrule = center, title:^(Library)(.*)$
-windowrule = center, title:^(File Upload)(.*)$
+windowrulev2 = float, class:^(blueberry.py)$
+windowrulev2 = float, title:^(steam)$
+windowrulev2 = float, title:^(guifetch)$ # FlafyDev/guifetch
+windowrulev2 = tile, class:^(dev.warp.Warp)$
+
# Picture-in-Picture
windowrulev2 = keepaspectratio, title:^(Picture(-| )in(-| )[Pp]icture)$
-windowrulev2 = move 73% 72%,title:^(Picture(-| )in(-| )[Pp]icture)$
+windowrulev2 = move 73% 72%,title:^(Picture(-| )in(-| )[Pp]icture)$
windowrulev2 = size 25%, title:^(Picture(-| )in(-| )[Pp]icture)$
windowrulev2 = float, title:^(Picture(-| )in(-| )[Pp]icture)$
windowrulev2 = pin, title:^(Picture(-| )in(-| )[Pp]icture)$
# Dialogs
-windowrule=float,title:^(Open File)(.*)$
-windowrule=float,title:^(Select a File)(.*)$
-windowrule=float,title:^(Choose wallpaper)(.*)$
-windowrule=float,title:^(Open Folder)(.*)$
-windowrule=float,title:^(Save As)(.*)$
-windowrule=float,title:^(Library)(.*)$
-windowrule=float,title:^(File Upload)(.*)$
+windowrulev2 = float,title:^(Open File)(.*)$
+windowrulev2 = float,title:^(Select a File)(.*)$
+windowrulev2 = float,title:^(Choose wallpaper)(.*)$
+windowrulev2 = float,title:^(Open Folder)(.*)$
+windowrulev2 = float,title:^(Save As)(.*)$
+windowrulev2 = float,title:^(Library)(.*)$
+windowrulev2 = float,title:^(File Upload)(.*)$
# Tearing
-windowrule=immediate,.*\.exe
-windowrulev2=immediate,class:(steam_app)
+windowrulev2 = immediate,title:^(.*\.exe)$
+windowrulev2 = immediate,class:^(steam_app)
# No shadow for tiled windows
windowrulev2 = noshadow,floating:0
@@ -61,26 +58,25 @@ layerrule = ignorealpha 0.69, notifications
# ags
layerrule = animation slide left, sideleft.*
layerrule = animation slide right, sideright.*
-layerrule = blur, session
+layerrule = blur, session.*
-layerrule = blur, bar
-layerrule = ignorealpha 0.6, bar
+layerrule = blur, bar.*
+layerrule = ignorealpha 0.6, bar.*
layerrule = blur, corner.*
layerrule = ignorealpha 0.6, corner.*
-layerrule = blur, dock
-layerrule = ignorealpha 0.6, dock
+layerrule = blur, dock.*
+layerrule = ignorealpha 0.6, dock.*
layerrule = blur, indicator.*
layerrule = ignorealpha 0.6, indicator.*
-layerrule = blur, overview
-layerrule = ignorealpha 0.6, overview
-layerrule = blur, cheatsheet
-layerrule = ignorealpha 0.6, cheatsheet
+layerrule = blur, overview.*
+layerrule = ignorealpha 0.6, overview.*
+layerrule = blur, cheatsheet.*
+layerrule = ignorealpha 0.6, cheatsheet.*
layerrule = blur, sideright
layerrule = ignorealpha 0.6, sideright
layerrule = blur, sideleft
layerrule = ignorealpha 0.6, sideleft
-layerrule = blur, indicator*
-layerrule = ignorealpha 0.6, indicator*
-layerrule = blur, osk
-layerrule = ignorealpha 0.6, osk
-
+layerrule = blur, indicator.*
+layerrule = ignorealpha 0.6, indicator.*
+layerrule = blur, osk.*
+layerrule = ignorealpha 0.6, osk.*
diff --git a/.config/pywal/colors-folders.py b/.config/pywal/colors-folders.py
new file mode 100644
index 000000000..f588d134e
--- /dev/null
+++ b/.config/pywal/colors-folders.py
@@ -0,0 +1,70 @@
+import webcolors
+import subprocess
+import os
+
+color_path = os.path.expanduser("~/.cache/wal/colors")
+
+
+# Define the mapping of your desired colors
+color_map = {
+ "black": "#4F4F4F",
+ "blue": "#5294E2",
+ "bluegrey": "#607D8B",
+ "breeze": "#57B8EC",
+ "brown": "#AE8E6C",
+ "carmine": "#A30002",
+ "cyan": "#00BCD4",
+ "darkcyan": "#36858E",
+ "deeporange": "#EB6637",
+ "green": "#87B158",
+ "grey": "#8E8E8E",
+ "indigo": "#5C6BC0",
+ "magenta": "#CA71E0",
+ "nordic": "#81A1C1",
+ "orange": "#EE923A",
+ "palebrown": "#D1BFAE",
+ "paleorange": "#EECA8F",
+ "pink": "#F16293",
+ "red": "#E25252",
+ "teal": "#16A085",
+ "violet": "#7E57C2",
+ "white": "#E5E5E5",
+ "adwaita": "#93C0EA",
+ "yellow": "#F9BD30",
+}
+
+# Convert color_map to RGB tuples
+color_map_rgb = {
+ name: webcolors.hex_to_rgb(hex_code) for name, hex_code in color_map.items()
+}
+
+
+def closest_color(requested_color):
+ min_colors = {}
+ for name, rgb in color_map_rgb.items():
+ rd = (rgb[0] - requested_color[0]) ** 2
+ gd = (rgb[1] - requested_color[1]) ** 2
+ bd = (rgb[2] - requested_color[2]) ** 2
+ min_colors[(rd + gd + bd)] = name
+ return min_colors[min(min_colors.keys())]
+
+
+def get_color_name(hex_color):
+ requested_color = webcolors.hex_to_rgb(hex_color)
+ closest_name = closest_color(requested_color)
+ return closest_name
+
+
+# Read hex codes from .cache/wal/colors file
+with open(color_path, "r") as file:
+ hex_codes = [line.strip() for line in file]
+
+# Get the nearest color name for each hex code
+color_names = [get_color_name(hex_code) for hex_code in hex_codes]
+
+# Get the name of the 4th color
+color_name = color_names[2]
+print(f"The 4th color is closest to: {color_name}")
+
+# Execute the papirus-folders command with the closest color name
+subprocess.run(["papirus-folders", "-C", color_name, "--theme", "Papirus-Dark"])
diff --git a/.config/pywal/gen-pywal b/.config/pywal/gen-pywal
new file mode 100755
index 000000000..a2f8a7dc0
--- /dev/null
+++ b/.config/pywal/gen-pywal
@@ -0,0 +1,35 @@
+#!/bin/bash
+
+# Define formatting variables
+GREEN='\033[1;32m'
+NC='\033[0m' # No Color
+GLYPH=''
+
+# Execute other commands
+
+# echo -e "\n${GREEN}${GLYPH} Running colors-foot.py ${NC}"
+# python ~/.config/hypr/scripts/colors-foot.py
+
+echo -e "\n${GREEN}${GLYPH} Running colors-folders.py (for papirus colored folders).${NC}"
+python ~/.config/pywal/colors-folders.py
+
+echo -e "\n${GREEN}${GLYPH} Generating rofi colors ${NC}"
+python ~/.config/pywal/rofi-colors.py
+
+# echo -e "\n${GREEN}${GLYPH} Generating sddm colors ${NC}"
+# ~/.config/pywal/sddm-pywal
+
+# echo -e "\n${GREEN}${GLYPH} Generating Ghostty terminal colors ${NC}"
+# python ~/.config/pywal/ghosttyPywal.py
+
+echo -e "\n${GREEN}${GLYPH} changing spotiify theme (text) ${NC}"
+pywal-spicetify text
+# spicetify apply
+
+echo -e "\n${GREEN}${GLYPH} Running walogram (for telegram) ${NC}"
+walogram -s
+
+echo -e "\n${GREEN}${GLYPH} Running pywal-discord (for discord) ${NC}"
+pywal-discord
+
+echo -e "\n${GREEN}${GLYPH} Script execution completed.${NC}"
diff --git a/.config/pywal/ghosttyPywal.py b/.config/pywal/ghosttyPywal.py
new file mode 100644
index 000000000..8dcc1b9e9
--- /dev/null
+++ b/.config/pywal/ghosttyPywal.py
@@ -0,0 +1,49 @@
+import yaml
+import os
+
+def read_yaml(file_path):
+ """Reads a YAML file and returns its content."""
+ with open(file_path, 'r') as file:
+ data = yaml.safe_load(file)
+ return data
+
+def format_colors(colors):
+ """Formats the colors into the required output style."""
+ output = []
+
+ # Format palette colors
+ for index, (color_key, color_value) in enumerate(colors['colors'].items()):
+ output.append(f"palette = {index}={color_value}")
+
+ # Format special colors
+ output.append(f"background = {colors['special']['background'][1:]}")
+ output.append(f"foreground = {colors['special']['foreground'][1:]}")
+ output.append(f"cursor-color = {colors['special']['cursor'][1:]}")
+ output.append(f"selection-background = {colors['special']['background'][1:]}")
+ output.append(f"selection-foreground = {colors['special']['foreground'][1:]}")
+
+ return output
+
+def write_config(config_path, formatted_colors):
+ """Writes the formatted colors to the configuration file."""
+ with open(config_path, 'w') as config_file:
+ for line in formatted_colors:
+ config_file.write(line + '\n')
+ print("Colors have been generated and saved to the configuration file!")
+
+def main():
+ yaml_file = os.path.expanduser('~/.cache/wal/colors.yml') # Replace with the path to your YAML file
+ config_file = os.path.expanduser('~/.config/ghostty/colors') # Replace with the path to your terminal configuration file
+
+ # Read colors from the YAML file
+ colors = read_yaml(yaml_file)
+
+ # Format colors
+ formatted_colors = format_colors(colors)
+
+ # Write the formatted colors to the terminal configuration file
+ write_config(config_file, formatted_colors)
+
+if __name__ == "__main__":
+ main()
+
diff --git a/.config/pywal/rofi-colors.py b/.config/pywal/rofi-colors.py
new file mode 100644
index 000000000..d7a603dee
--- /dev/null
+++ b/.config/pywal/rofi-colors.py
@@ -0,0 +1,40 @@
+import re
+import os
+
+# Define the input SCSS file and output Rasi file
+input_file = os.path.expanduser('~/.local/state/ags/scss/_material.scss')
+output_file = os.path.expanduser('~/.config/rofi/colors.rasi')
+
+def convert_scss_to_rasi(input_file, output_file):
+ # Read the SCSS file
+ with open(input_file, 'r') as file:
+ scss_content = file.read()
+
+ # Remove specific SCSS variables
+ variables_to_remove = [
+ r'\$darkmode:.*;\n',
+ r'\$transparent:.*;\n',
+ r'\$primary_paletteKeyColor:.*;\n',
+ r'\$secondary_paletteKeyColor:.*;\n',
+ r'\$tertiary_paletteKeyColor:.*;\n',
+ r'\$neutral_paletteKeyColor:.*;\n',
+ r'\$neutral_variant_paletteKeyColor:.*;\n'
+ ]
+ for var in variables_to_remove:
+ scss_content = re.sub(var, '', scss_content)
+
+ # Convert remaining SCSS variables to Rasi format
+ rasi_content = re.sub(r'\$(\w+):\s*(.*);', r' \1: \2;', scss_content)
+
+ # Add the Rasi header and footer with spaces around content
+ rasi_content = '* {\n\n' + rasi_content + '\n\n}'
+
+ # Write the Rasi content to a file
+ with open(output_file, 'w') as file:
+ file.write(rasi_content)
+
+ print(f"Conversion complete! Check the '{output_file}' file.")
+
+if __name__ == "__main__":
+ convert_scss_to_rasi(input_file, output_file)
+
diff --git a/.config/qt6ct/qt6ct.conf b/.config/qt6ct/qt6ct.conf
new file mode 100644
index 000000000..2a63fb6c7
--- /dev/null
+++ b/.config/qt6ct/qt6ct.conf
@@ -0,0 +1,32 @@
+[Appearance]
+color_scheme_path=/usr/share/qt6ct/colors/ia_ora.conf
+custom_palette=false
+icon_theme=Papirus
+standard_dialogs=default
+style=kvantum
+
+[Fonts]
+fixed="JetBrainsMono Nerd Font,12,-1,5,400,0,0,0,0,0,0,0,0,0,0,1"
+general="Rubik,12,-1,5,400,0,0,0,0,0,0,0,0,0,0,1"
+
+[Interface]
+activate_item_on_single_click=1
+buttonbox_layout=0
+cursor_flash_time=1000
+dialog_buttons_have_icons=1
+double_click_interval=400
+gui_effects=General, AnimateMenu, AnimateCombo, AnimateTooltip, AnimateToolBox
+keyboard_scheme=2
+menus_have_icons=true
+show_shortcuts_in_context_menus=true
+stylesheets=@Invalid()
+toolbutton_style=4
+underline_shortcut=1
+wheel_scroll_lines=3
+
+[SettingsWindow]
+geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\0\0\0\0\0\0\0\0\x3\xb2\0\0\x3\xfd\0\0\0\0\0\0\0\0\0\0\x3\xbf\0\0\x4\v\0\0\0\0\x2\0\0\0\a\x80\0\0\0\0\0\0\0\0\0\0\x3\xb2\0\0\x3\xfd)
+
+[Troubleshooting]
+force_raster_widgets=1
+ignored_applications=@Invalid()
diff --git a/.config/rofi/colors.rasi b/.config/rofi/colors.rasi
new file mode 100644
index 000000000..94f5040e4
--- /dev/null
+++ b/.config/rofi/colors.rasi
@@ -0,0 +1,74 @@
+* {
+
+ background: #0F1416;
+ onBackground: #DEE3E5;
+ surface: #0F1416;
+ surfaceDim: #0F1416;
+ surfaceBright: #343A3C;
+ surfaceContainerLowest: #090F11;
+ surfaceContainerLow: #171C1E;
+ surfaceContainer: #1B2022;
+ surfaceContainerHigh: #252B2D;
+ surfaceContainerHighest: #303638;
+ onSurface: #DEE3E5;
+ surfaceVariant: #3F484B;
+ onSurfaceVariant: #BFC8CB;
+ inverseSurface: #DEE3E5;
+ inverseOnSurface: #2C3133;
+ outline: #899295;
+ outlineVariant: #3F484B;
+ shadow: #000000;
+ scrim: #000000;
+ surfaceTint: #84D2E7;
+ primary: #84D2E7;
+ onPrimary: #003640;
+ primaryContainer: #004E5C;
+ onPrimaryContainer: #ACEDFF;
+ inversePrimary: #00687A;
+ secondary: #B2CBD2;
+ onSecondary: #1D343A;
+ secondaryContainer: #334A51;
+ onSecondaryContainer: #CEE7EF;
+ tertiary: #BFC4EB;
+ onTertiary: #282F4D;
+ tertiaryContainer: #898FB3;
+ onTertiaryContainer: #000000;
+ error: #FFB4AB;
+ onError: #690005;
+ errorContainer: #93000A;
+ onErrorContainer: #FFDAD6;
+ primaryFixed: #ACEDFF;
+ primaryFixedDim: #84D2E7;
+ onPrimaryFixed: #001F26;
+ onPrimaryFixedVariant: #004E5C;
+ secondaryFixed: #CEE7EF;
+ secondaryFixedDim: #B2CBD2;
+ onSecondaryFixed: #061F24;
+ onSecondaryFixedVariant: #334A51;
+ tertiaryFixed: #DDE1FF;
+ tertiaryFixedDim: #BFC4EB;
+ onTertiaryFixed: #131937;
+ onTertiaryFixedVariant: #3F4565;
+ success: #B5CCBA;
+ onSuccess: #213528;
+ successContainer: #374B3E;
+ onSuccessContainer: #D1E9D6;
+ term0: #151B1E;
+ term1: #8383FF;
+ term2: #63DEDC;
+ term3: #75FCDD;
+ term4: #78B4C2;
+ term5: #7AAEEA;
+ term6: #81D7DE;
+ term7: #CCDBD5;
+ term8: #B1BCB5;
+ term9: #BCB9FF;
+ term10: #F5FFFE;
+ term11: #FFFFFF;
+ term12: #BEE3E8;
+ term13: #C8DAFF;
+ term14: #ECFEFF;
+ term15: #CBE7F0;
+
+
+}
\ No newline at end of file
diff --git a/.config/rofi/config.rasi b/.config/rofi/config.rasi
new file mode 100644
index 000000000..2258dd26d
--- /dev/null
+++ b/.config/rofi/config.rasi
@@ -0,0 +1 @@
+@theme "~/.config/rofi/style.rasi"
diff --git a/.config/rofi/style.rasi b/.config/rofi/style.rasi
new file mode 100644
index 000000000..b187c9d3a
--- /dev/null
+++ b/.config/rofi/style.rasi
@@ -0,0 +1,180 @@
+/**
+ *
+ * Author : Aditya Shakya (adi1090x)
+ * Github : @adi1090x
+ *
+ * Rofi Theme File
+ * Rofi Version: 1.7.3
+ **/
+
+/* Import Pywal colors */
+@import "~/.config/rofi/colors.rasi"
+
+
+* {
+ font: "Iosevka 15";
+ width: 800;
+ height: 500;
+ actve: @active-background;
+ urgent: @urgent-background;
+}
+/*****----- Configuration -----*****/
+configuration {
+ modi: "drun,window";
+ show-icons: true;
+ icon-theme: "Papirus";
+ display-drun: " ";
+ drun-display-format: "{name}";
+}
+
+/*****----- Main Window -----*****/
+window {
+ transparency: "real";
+ location: center;
+ anchor: center;
+ fullscreen: false;
+ x-offset: 0px;
+ y-offset: 0px;
+
+ enabled: true;
+ margin: 0px;
+ padding: 0px;
+ border: 0px solid;
+ border-radius: 12px;
+ border-color: @secondary;
+ background-color: @background;
+ cursor: "default";
+ border: 2px;
+ border-color: @onSecondary;
+}
+
+/*****----- Main Box -----*****/
+mainbox {
+ enabled: true;
+ spacing: 10px;
+ margin: 0px;
+ padding: 20px;
+ border: 0px solid;
+ border-radius: 0px 0px 0px 0px;
+ border-color: @onSecondary;
+ background-color: transparent;
+ children: [ "inputbar", "listview" ];
+}
+
+/*****----- Inputbar -----*****/
+inputbar {
+ enabled: true;
+ spacing: 10px;
+ margin: 0px;
+ padding: 15px;
+ border: 2px solid;
+ border-radius: 12px;
+ border-color: @onSecondary;
+ background-color: @secondaryContainer;
+ text-color: @secondary;
+ children: [ "prompt", "entry" ];
+}
+
+prompt {
+ enabled: true;
+ background-color: inherit;
+ text-color: inherit;
+}
+textbox-prompt-colon {
+ enabled: true;
+ expand: false;
+ str: "::";
+ background-color: inherit;
+ text-color: inherit;
+}
+entry {
+ enabled: true;
+ background-color: inherit;
+ text-color: inherit;
+ cursor: text;
+ placeholder: "Search apps ...";
+ placeholder-color: inherit;
+}
+
+/*****----- Listview -----*****/
+listview {
+ enabled: true;
+ columns: 2;
+ lines: 8;
+ cycle: true;
+ dynamic: true;
+ scrollbar: false;
+ layout: vertical;
+ reverse: false;
+ fixed-height: true;
+ fixed-columns: true;
+
+ spacing: 5px;
+ margin: 0px;
+ padding: 0px;
+ border: 0px solid;
+ border-radius: 0px;
+ border-color: @primary;
+ background-color: transparent;
+ text-color: @onBackground;
+ cursor: "default";
+}
+scrollbar {
+ handle-width: 5px ;
+ handle-color: @secondary;
+ border-radius: 0px;
+ background-color: @primary;
+}
+
+/*****----- Elements -----*****/
+element {
+ enabled: true;
+ spacing: 10px;
+ margin: 0px;
+ padding: 5px;
+ border: 0px solid;
+ border-radius: 12px;
+ border-color: @onSecondaryContainer;
+ background-color: transparent;
+ text-color: @onBackground;
+ cursor: pointer;
+}
+element normal.normal {
+ background-color: transparent;
+ text-color: @onBackground;
+}
+element selected.normal {
+ background-color: @primary;
+ text-color: @onPrimary;
+}
+element-icon {
+ background-color: transparent;
+ text-color: inherit;
+ size: 40px;
+ cursor: inherit;
+}
+element-text {
+ background-color: transparent;
+ text-color: inherit;
+ highlight: inherit;
+ cursor: inherit;
+ vertical-align: 0.5;
+ horizontal-align: 0.0;
+}
+
+/*****----- Message -----*****/
+error-message {
+ padding: 15px;
+ border: 2px solid;
+ border-radius: 12px;
+ border-color: @onErrorContainer;
+ background-color: @onError;
+ text-color: @error;
+}
+textbox {
+ background-color: @onPrimary;
+ text-color: @onBackground;
+ vertical-align: 0.5;
+ horizontal-align: 0.0;
+ highlight: none;
+}
diff --git a/arch-packages/illogical-impulse-fonts-themes/PKGBUILD b/arch-packages/illogical-impulse-fonts-themes/PKGBUILD
index fa60526ab..c1a460b03 100644
--- a/arch-packages/illogical-impulse-fonts-themes/PKGBUILD
+++ b/arch-packages/illogical-impulse-fonts-themes/PKGBUILD
@@ -5,18 +5,21 @@ pkgdesc='Illogical Impulse Fonts and Theming Dependencies'
arch=(any)
license=(None)
depends=(
- adw-gtk-theme-git
- qt5ct
- qt5-wayland
- fontconfig
- ttf-readex-pro
- ttf-jetbrains-mono-nerd
- ttf-material-symbols-variable-git
- ttf-space-mono-nerd
- ttf-rubik-vf
- ttf-gabarito-git
- fish
- foot
- starship
+ adw-gtk-theme-git
+ qt5ct
+ qt5-wayland
+ qt6ct
+ kvantum
+ kvantum-qt5
+ papirus-folders
+ fontconfig
+ ttf-readex-pro
+ ttf-jetbrains-mono-nerd
+ ttf-material-symbols-variable-git
+ ttf-space-mono-nerd
+ ttf-rubik-vf
+ ttf-gabarito-git
+ fish
+ foot
+ starship
)
-
diff --git a/arch-packages/illogical-impulse-microtex-git/PKGBUILD b/arch-packages/illogical-impulse-microtex-git/PKGBUILD
index ecb0894cb..811b6c8e5 100644
--- a/arch-packages/illogical-impulse-microtex-git/PKGBUILD
+++ b/arch-packages/illogical-impulse-microtex-git/PKGBUILD
@@ -1,6 +1,6 @@
pkgname=illogical-impulse-microtex-git
_pkgname=MicroTeX
-pkgver=r492.d87ebec
+pkgver=r494.0e3707f
pkgrel=1
pkgdesc='MicroTeX for illogical-impulse dotfiles.'
#pkgdesc="A dynamic, cross-platform, and embeddable LaTeX rendering library"
diff --git a/arch-packages/illogical-impulse-python/PKGBUILD b/arch-packages/illogical-impulse-python/PKGBUILD
index 801e2829b..5cfd736a8 100644
--- a/arch-packages/illogical-impulse-python/PKGBUILD
+++ b/arch-packages/illogical-impulse-python/PKGBUILD
@@ -5,10 +5,10 @@ pkgdesc='Illogical Impulse Python Dependencies'
arch=(any)
license=(None)
depends=(
- python-build
- python-pillow
- python-pywal
- python-setuptools-scm
- python-wheel
+ python-build
+ python-pillow
+ python-pywal16
+ python-setuptools-scm
+ python-wheel
+ python-webcolors
)
-
diff --git a/arch-packages/illogical-impulse-screencapture/PKGBUILD b/arch-packages/illogical-impulse-screencapture/PKGBUILD
index ab5911fb9..2298dfa3b 100644
--- a/arch-packages/illogical-impulse-screencapture/PKGBUILD
+++ b/arch-packages/illogical-impulse-screencapture/PKGBUILD
@@ -5,11 +5,10 @@ pkgdesc='Illogical Impulse Screenshot and Recording Dependencies'
arch=(any)
license=(None)
depends=(
- swappy
- wf-recorder
- grim
- tesseract
- tesseract-data-eng
- slurp
+ swappy
+ wf-recorder
+ grim
+ tesseract
+ tesseract-data-eng
+ slurp
)
-
diff --git a/arch-packages/illogical-impulse-widgets/PKGBUILD b/arch-packages/illogical-impulse-widgets/PKGBUILD
index 3265e74d0..adfca6b54 100644
--- a/arch-packages/illogical-impulse-widgets/PKGBUILD
+++ b/arch-packages/illogical-impulse-widgets/PKGBUILD
@@ -5,15 +5,14 @@ pkgdesc='Illogical Impulse Widget Dependencies'
arch=(any)
license=(None)
depends=(
- dart-sass
- python-pywayland
- python-psutil
- hypridle-git
- hyprutils-git
- hyprlock-git
- wlogout
- wl-clipboard
- hyprpicker-git
- anyrun-git
+ dart-sass
+ python-pywayland
+ python-psutil
+ hypridle-git
+ hyprutils-git
+ hyprlock-git
+ wlogout
+ wl-clipboard
+ hyprpicker-git
+ anyrun-git
)
-