This commit is contained in:
Raj 2024-07-11 00:01:49 +05:30
commit e99c859340
1042 changed files with 430849 additions and 0 deletions

View File

@ -0,0 +1,464 @@
[%General]
author=elkrien based on Arc Dark style
comment=Catppuccin-Mocha-Pink
spread_menuitems=true
left_tabs=true
mirror_doc_tabs=true
scroll_width=8
attach_active_tab=true
composite=true
menu_shadow_depth=7
tooltip_shadow_depth=0
splitter_width=7
check_size=16
slider_width=4
slider_handle_width=18
slider_handle_length=18
textless_progressbar=false
menubar_mouse_tracking=true
slim_toolbars=false
toolbutton_style=1
x11drag=menubar_and_primary_toolbar
double_click=false
translucent_windows=false
blurring=false
popup_blurring=true
opaque=kaffeine,kmplayer,subtitlecomposer,kdenlive,vlc,smplayer,smplayer2,avidemux,avidemux2_qt4,avidemux3_qt4,avidemux3_qt5,kamoso,QtCreator,VirtualBox,trojita,dragon,digikam,qmplay2
group_toolbar_buttons=false
vertical_spin_indicators=false
fill_rubberband=false
spread_progressbar=true
merge_menubar_with_toolbar=true
small_icon_size=16
large_icon_size=32
button_icon_size=16
scroll_arrows=false
iconless_pushbutton=true
toolbar_icon_size=16
combo_as_lineedit=true
button_contents_shift=false
groupbox_top_label=true
inline_spin_indicators=true
joined_inactive_tabs=false
layout_spacing=2
submenu_overlap=0
tooltip_delay=-1
animate_states=false
transient_scrollbar=true
alt_mnemonic=true
combo_menu=true
layout_margin=4
no_window_pattern=false
respect_DE=true
scroll_min_extent=36
scrollable_menu=false
scrollbar_in_view=false
spin_button_width=16
submenu_delay=250
tree_branch_line=true
progressbar_thickness=8
click_behavior=0
contrast=1.00
dialog_button_layout=0
drag_from_buttons=false
hide_combo_checkboxes=false
intensity=1.00
no_inactiveness=false
reduce_menu_opacity=0
reduce_window_opacity=10
saturation=1.00
shadowless_popup=false
transient_groove=false
[GeneralColors]
window.color=#1E1E2E
base.color=#181825
alt.base.color=#181825
button.color=#313244
light.color=#45475A
mid.light.color=#45475A
dark.color=#181825
mid.color=#181825
highlight.color=#F5C2E7
inactive.highlight.color=#F5C2E7
text.color=#CDD6F4
window.text.color=#CDD6F4
button.text.color=#CDD6F4
disabled.text.color=#585B70
tooltip.text.color=#CDD6F4
highlight.text.color=#181825
link.color=#F5E0DC
link.visited.color=#89B4FA
[ItemView]
inherits=PanelButtonCommand
frame.element=itemview
interior.element=itemview
frame=true
interior=true
text.iconspacing=3
text.toggle.color=#181825
[RadioButton]
inherits=PanelButtonCommand
frame=false
interior.element=radio
[CheckBox]
inherits=PanelButtonCommand
frame=false
interior.element=checkbox
[TreeExpander]
indicator.element=tree
indicator.size=8
[ToolTip]
frame.top=4
frame.right=4
frame.bottom=4
frame.left=4
frame=true
[PanelButtonCommand]
inherits=PanelButtonCommand
interior.element=button
frame.element=button
text.normal.color=#CDD6F4
text.focus.color=#CDD6F4
text.press.color=#181825
text.toggle.color=#181825
[PanelButtonTool]
inherits=PanelButtonCommand
[DockTitle]
inherits=PanelButtonCommand
interior=false
frame=false
text.margin.top=5
text.margin.bottom=5
text.margin.left=5
text.margin.right=5
indicator.size=0
[Dock]
interior.element=toolbar
frame.element=toolbar
frame=true
interior=true
[GroupBox]
inherits=PanelButtonCommand
interior.element=tabframe
interior=true
frame=false
[Focus]
inherits=PanelButtonCommand
frame=true
frame.element=focus
frame.top=1
frame.bottom=1
frame.left=1
frame.right=1
frame.patternsize=20
[GenericFrame]
inherits=PanelButtonCommand
frame.element=common
frame.top=1
frame.bottom=1
frame.left=1
frame.right=1
[Slider]
inherits=PanelButtonCommand
interior=true
frame.element=slider
interior.element=slider
frame.top=3
frame.bottom=3
frame.left=3
frame.right=3
focusFrame=true
[SliderCursor]
inherits=PanelButtonCommand
interior=true
interior.element=slidercursor
frame=false
[LineEdit]
inherits=PanelButtonCommand
frame.element=lineedit
interior.element=lineedit
[IndicatorSpinBox]
inherits=LineEdit
frame.element=lineedit
interior.element=lineedit
frame.top=0
frame.bottom=2
frame.left=2
frame.right=2
indicator.size=8
[DropDownButton]
inherits=PanelButtonCommand
frame.top=2
frame.bottom=2
frame.left=0
frame.right=1
indicator.size=8
[ToolboxTab]
inherits=PanelButtonCommand
frame.element=tabframe
frame.top=1
frame.bottom=1
frame.left=1
frame.right=1
[Tab]
inherits=PanelButtonCommand
interior.element=tab
frame.element=tab
frame.top=2
frame.bottom=3
frame.left=3
frame.right=3
indicator.size=10
text.normal.color=#585B70
text.focus.color=#CDD6F4
text.press.color=#CDD6F4
text.toggle.color=#CDD6F4
focusFrame=true
[TabBarFrame]
inherits=GenericFrame
frame=true
frame.element=tabBarFrame
interior=false
frame.top=4
frame.bottom=4
frame.left=4
frame.right=4
[TabFrame]
inherits=PanelButtonCommand
frame.element=tabframe
interior.element=tabframe
[Dialog]
inherits=TabBarFrame
frame.element=tabframe
interior=false
frame=false
frame.top=1
frame.bottom=1
frame.left=1
frame.right=1
[HeaderSection]
inherits=PanelButtonCommand
interior.element=header
frame.element=header
frame.top=0
frame.bottom=1
frame.left=1
frame.right=1
frame.expansion=0
text.normal.color=#CDD6F4
text.focus.color=#F5C2E7
text.press.color=#CDD6F4
text.toggle.color=#CDD6F4
indicator.element=harrow
[SizeGrip]
inherits=PanelButtonCommand
frame=false
interior=false
indicator.element=resize-grip
indicator.size=0
[Toolbar]
inherits=PanelButtonCommand
interior.element=menubar
frame.element=menubar
frame=true
frame.bottom=4
frame.left=4
frame.right=4
text.normal.color=#CDD6F4
text.focus.color=#CDD6F4
text.press.color=#F5C2E7
text.toggle.color=#F5C2E7
text.bold=false
[MenuBar]
inherits=PanelButtonCommand
frame.element=menubar
interior.element=menubar
frame.bottom=0
text.normal.color=#CDD6F4
frame.expansion=0
text.bold=false
[ToolbarButton]
frame.element=tbutton
interior.element=tbutton
indicator.element=arrow
text.normal.color=#CDD6F4
text.focus.color=#CDD6F4
text.press.color=#181825
text.toggle.color=#181825
text.bold=false
[Scrollbar]
inherits=PanelButtonCommand
indicator.size=0
interior=false
frame=false
[ScrollbarGroove]
inherits=PanelButtonCommand
interior=false
frame=false
[ScrollbarSlider]
inherits=PanelButtonCommand
interior=false
frame.element=scrollbarslider
frame.top=4
frame.bottom=4
frame.left=4
frame.right=4
[ProgressbarContents]
inherits=PanelButtonCommand
frame=true
frame.element=progress-pattern
interior.element=progress-pattern
frame.top=2
frame.bottom=2
frame.left=2
frame.right=2
[Progressbar]
inherits=PanelButtonCommand
frame.element=progress
interior.element=progress
frame.top=2
frame.bottom=2
frame.left=2
frame.right=2
text.margin=0
text.normal.color=#CDD6F4
text.focus.color=#CDD6F4
text.press.color=#181825
text.toggle.color=#181825
text.bold=false
frame.expansion=18
[RadioButton]
inherits=PanelButtonCommand
[Menu]
frame.element=menu
interior.element=menu
inherits=PanelButtonCommand
text.press.color=#181825
text.toggle.color=#181825
text.bold=false
frame.top=3
frame.bottom=3
frame.left=3
frame.right=3
[MenuItem]
inherits=PanelButtonCommand
interior.element=menuitem
indicator.size=8
text.focus.color=#CDD6F4
text.press.color=#CDD6F4
[MenuBarItem]
inherits=PanelButtonCommand
interior.element=menubaritem
frame=false
text.margin.top=3
text.margin.bottom=3
text.margin.left=5
text.margin.right=5
[StatusBar]
inherits=Toolbar
frame.element=toolbar
font.bold=true
text.normal.color=#CDD6F4
frame=true
frame.top=0
frame.bottom=0
[TitleBar]
inherits=PanelButtonCommand
frame=false
interior=false
text.margin.top=2
text.margin.bottom=2
text.margin.left=3
text.margin.right=3
[ComboBox]
inherits=PanelButtonCommand
indicator.size=8
frame.top=3
frame.bottom=3
frame.left=3
frame.right=3
text.margin.top=1
text.margin.bottom=1
text.margin.left=3
text.margin.right=3
text.toggle.color=#CDD6F4
[ToolboxTab]
inherits=PanelButtonCommand
text.normal.color=#CDD6F4
text.press.color=#CDD6F4
text.focus.color=#CDD6F4
[Hacks]
transparent_dolphin_view=false
blur_konsole=true
transparent_ktitle_label=true
transparent_menutitle=true
respect_darkness=true
kcapacitybar_as_progressbar=true
force_size_grip=false
iconless_pushbutton=true
iconless_menu=false
disabled_icon_opacity=100
lxqtmainmenu_iconsize=0
normal_default_pushbutton=true
single_top_toolbar=false
tint_on_mouseover=0
transparent_pcmanfm_sidepane=true
transparent_pcmanfm_view=false
blur_translucent=true
centered_forms=false
kinetic_scrolling=false
middle_click_scroll=false
no_selection_tint=false
noninteger_translucency=false
style_vertical_toolbars=false
blur_only_active_window=false
[Window]
interior=true
interior.element=window
frame.top=0
frame.bottom=0
frame.left=0
frame.right=0

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 146 KiB

View File

@ -0,0 +1,494 @@
[%General]
author=Eliver Lara
comment=A dark theme created using the awesome Dracula color palette.
x11drag=menubar_and_primary_toolbar
alt_mnemonic=true
left_tabs=true
attach_active_tab=true
mirror_doc_tabs=true
group_toolbar_buttons=false
toolbar_item_spacing=1
toolbar_interior_spacing=3
spread_progressbar=true
composite=true
menu_shadow_depth=5
menu_separator_height=6
tooltip_shadow_depth=6
splitter_width=4
scroll_width=6
scroll_arrows=false
scroll_min_extent=60
slider_width=2
slider_handle_width=18
slider_handle_length=18
center_toolbar_handle=true
check_size=14
textless_progressbar=false
progressbar_thickness=2
menubar_mouse_tracking=true
toolbutton_style=1
double_click=false
translucent_windows=true
blurring=true
popup_blurring=true
vertical_spin_indicators=false
spin_button_width=32
fill_rubberband=false
merge_menubar_with_toolbar=true
small_icon_size=16
large_icon_size=32
button_icon_size=16
toolbar_icon_size=22
combo_as_lineedit=true
animate_states=false
button_contents_shift=false
combo_menu=true
hide_combo_checkboxes=true
combo_focus_rect=true
groupbox_top_label=true
inline_spin_indicators=false
joined_inactive_tabs=false
layout_spacing=6
layout_margin=9
scrollbar_in_view=true
transient_scrollbar=true
transient_groove=false
submenu_overlap=0
tooltip_delay=-1
tree_branch_line=true
dark_titlebar=true
opaque=QMPlay2,kaffeine,kmplayer,subtitlecomposer,kdenlive,vlc,avidemux,avidemux2_qt4,avidemux3_qt4,avidemux3_qt5,kamoso,QtCreator,VirtualBox,trojita,dragon,digikam
reduce_window_opacity=18
scrollable_menu=false
submenu_delay=250
no_inactiveness=false
no_window_pattern=false
reduce_menu_opacity=0
respect_DE=true
click_behavior=0
contrast=1.00
dialog_button_layout=0
intensity=1.00
saturation=1.00
shadowless_popup=false
[GeneralColors]
window.color=#1e1f29
base.color=#282a36
alt.base.color=#252a3f78
button.color=#1e1e20
light.color=#0C0E15
mid.light.color=#0C0E15
dark.color=#0C0E15
mid.color=#0C0E15
highlight.color=#7c60a3
inactive.highlight.color=#654ea3
text.color=#aaaaac
window.text.color=#aaaaac
button.text.color=#aaaaac
disabled.text.color=#aaaaac78
tooltip.text.color=#aaaaac
highlight.text.color=#dadadc
link.color=#646464
link.visited.color=#7f8c8d
progress.indicator.text.color=#aaaaac
[Hacks]
transparent_ktitle_label=true
transparent_dolphin_view=true
transparent_pcmanfm_sidepane=true
blur_translucent=true
transparent_menutitle=true
respect_darkness=true
kcapacitybar_as_progressbar=true
force_size_grip=true
iconless_pushbutton=false
iconless_menu=false
disabled_icon_opacity=70
lxqtmainmenu_iconsize=22
normal_default_pushbutton=true
single_top_toolbar=true
tint_on_mouseover=0
transparent_pcmanfm_view=false
middle_click_scroll=false
no_selection_tint=false
opaque_colors=false
kinetic_scrolling=false
scroll_jump_workaround=false
[PanelButtonCommand]
frame=true
frame.element=button
frame.top=3
frame.bottom=3
frame.left=3
frame.right=3
interior=true
interior.element=button
indicator.size=8
text.normal.color=#aaaaac
text.focus.color=#c8c8ca
text.press.color=#d2d2d4
text.toggle.color=#aaaaac
text.shadow=0
text.margin=1
text.iconspacing=4
indicator.element=arrow
text.margin.top=2
text.margin.bottom=2
text.margin.left=2
text.margin.right=2
min_width=+0.3font
min_height=+0.3font
frame.expansion=6
[PanelButtonTool]
inherits=PanelButtonCommand
[Dock]
inherits=PanelButtonCommand
interior.element=dock
frame.element=dock
frame.top=1
frame.bottom=1
frame.left=1
frame.right=1
text.normal.color=#aaaaac
[DockTitle]
inherits=PanelButtonCommand
frame=false
interior=false
text.normal.color=#aaaaac
text.focus.color=#c8c8ca
text.bold=false
[IndicatorSpinBox]
inherits=PanelButtonCommand
frame=true
interior=true
frame.left=1
indicator.element=spin
indicator.size=10
text.normal.color=#aaaaac
[RadioButton]
inherits=PanelButtonCommand
frame=false
interior.element=radio
text.normal.color=#aaaaac
text.focus.color=#c8c8ca
[CheckBox]
inherits=PanelButtonCommand
frame=false
interior.element=checkbox
text.normal.color=#aaaaac
text.focus.color=#c8c8ca
[Focus]
inherits=PanelButtonCommand
frame=true
frame.element=focus
frame.top=1
frame.bottom=1
frame.left=1
frame.right=1
frame.patternsize=20
[GenericFrame]
inherits=PanelButtonCommand
frame=true
interior=false
frame.element=common
interior.element=common
frame.top=1
frame.bottom=1
frame.left=1
frame.right=1
[LineEdit]
inherits=PanelButtonCommand
frame.element=lineedit
interior.element=lineedit
text.margin.left=0
text.margin.right=0
[DropDownButton]
inherits=PanelButtonCommand
indicator.element=arrow-down
[IndicatorArrow]
indicator.element=arrow
indicator.size=8
[ToolboxTab]
inherits=PanelButtonCommand
text.normal.color=#aaaaac
text.focus.color=#c8c8ca
text.press.color=#d2d2d4
[Tab]
inherits=PanelButtonCommand
interior.element=tab
text.margin.left=8
text.margin.right=8
text.margin.top=2
text.margin.bottom=2
frame.element=tab
indicator.element=tab
frame.top=4
frame.bottom=4
frame.left=4
frame.right=4
text.normal.color=#aaaaac
text.focus.color=#aaaaac
text.toggle.color=#aaaaac
frame.expansion=0
[TabFrame]
inherits=PanelButtonCommand
frame.element=tabframe
interior.element=tabframe
frame.top=4
frame.bottom=4
frame.left=4
frame.right=4
[TreeExpander]
inherits=PanelButtonCommand
indicator.size=12
indicator.element=tree
[HeaderSection]
inherits=PanelButtonCommand
interior.element=header
frame.element=header
frame.top=1
frame.bottom=1
frame.left=1
frame.right=1
text.bold=false
text.normal.color=#aaaaac
text.focus.color=#c8c8ca
text.press.color=#d2d2d4
text.toggle.color=#d2d2d4
frame.expansion=0
[SizeGrip]
indicator.element=resize-grip
[Toolbar]
inherits=PanelButtonCommand
indicator.element=toolbar
indicator.size=5
text.margin=0
frame=true
interior.element=_menubar
frame.element=_menubar
text.normal.color=#aaaaac
text.focus.color=#c8c8ca
frame.left=0
frame.right=0
frame.top=0
frame.bottom=1
frame.expansion=0
[Slider]
inherits=PanelButtonCommand
frame.element=slider
interior.element=slider
frame.top=3
frame.bottom=3
frame.left=3
frame.right=3
[SliderCursor]
inherits=PanelButtonCommand
frame=false
interior.element=slidercursor
[Progressbar]
inherits=PanelButtonCommand
frame.element=progress
interior.element=progress
text.margin=0
text.normal.color=#aaaaac
text.focus.color=#c8c8ca
text.press.color=#d2d2d4
text.toggle.color=#aaaaac
text.bold=false
frame.expansion=8
[ProgressbarContents]
inherits=PanelButtonCommand
frame=true
frame.element=progress-pattern
interior.element=progress-pattern
[ItemView]
inherits=PanelButtonCommand
text.margin=0
frame.element=itemview
interior.element=itemview
frame.top=2
frame.bottom=2
frame.left=2
frame.right=2
text.margin.top=2
text.margin.bottom=2
text.margin.left=4
text.margin.right=4
text.normal.color=#aaaaac
text.focus.color=#c8c8ca
text.press.color=#d2d2d4
text.toggle.color=#d2d2d4
min_width=+0.3font
min_height=+0.3font
frame.expansion=0
[Splitter]
indicator.size=48
[Scrollbar]
inherits=PanelButtonCommand
indicator.element=arrow
indicator.size=8
[ScrollbarSlider]
inherits=PanelButtonCommand
interior.element=scrollbarslider
interior=true
frame=false
frame.expansion=48
[ScrollbarGroove]
inherits=PanelButtonCommand
interior.element=scrollbargroove
interior=true
frame=false
frame.expansion=48
[MenuItem]
inherits=PanelButtonCommand
frame=true
frame.element=menuitem
interior.element=menuitem
indicator.element=menuitem
text.normal.color=#aaaaac
text.focus.color=#c8c8ca
text.margin.top=1
text.margin.bottom=1
text.margin.left=4
text.margin.right=4
frame.top=3
frame.bottom=3
frame.left=3
frame.right=3
text.bold=false
min_width=+0.3font
min_height=+0.3font
frame.expansion=0
[MenuBar]
inherits=PanelButtonCommand
frame.element=menubar
interior.element=menubar
text.normal.color=#aaaaac
frame.bottom=0
frame.expansion=0
[MenuBarItem]
inherits=PanelButtonCommand
interior=true
interior.element=menubaritem
frame.element=menubaritem
frame.top=2
frame.bottom=2
frame.left=2
frame.right=2
text.margin.left=4
text.margin.right=4
text.margin.top=0
text.margin.bottom=0
text.normal.color=#aaaaac
text.focus.color=#c8c8ca
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=#aaaaac
text.focus.color=#c8c8ca
text.bold=true
text.italic=false
frame.expansion=0
[ComboBox]
inherits=PanelButtonCommand
interior.element=combo
frame.element=combo
text.press.color=#d2d2d4
indicator.element=carrow
[Menu]
inherits=PanelButtonCommand
frame.top=1
frame.bottom=1
frame.left=1
frame.right=1
frame.element=menu
interior.element=menu
text.normal.color=#aaaaac
text.shadow=false
frame.expansion=0
[GroupBox]
inherits=GenericFrame
frame=false
text.shadow=0
text.margin=0
text.normal.color=#aaaaac
text.focus.color=#c8c8ca
text.bold=true
frame.expansion=0
[TabBarFrame]
inherits=GenericFrame
frame=true
frame.element=tabBarFrame
interior=false
frame.top=4
frame.bottom=4
frame.left=4
frame.right=4
[ToolTip]
inherits=GenericFrame
frame.top=3
frame.bottom=3
frame.left=3
frame.right=3
interior=true
text.shadow=0
text.margin=0
interior.element=tooltip
frame.element=tooltip
frame.expansion=0
[StatusBar]
inherits=GenericFrame
frame=false
interior=false
interior=false
[Window]
interior=true
interior.element=window

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 220 KiB

View File

@ -0,0 +1,2 @@
[General]
theme=Catppuccin-Mocha-Pink

8
.config/QtProject.conf Normal file
View File

@ -0,0 +1,8 @@
[FileDialog]
history=file:///home/raj/Downloads
lastVisited=file:///home/raj/Downloads
qtVersion=6.7.2
shortcuts=file:, file:///home/raj
sidebarWidth=114
treeViewHeader=@ByteArray(\0\0\0\xff\0\0\0\0\0\0\0\x1\0\0\0\0\0\0\0\0\x1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x2l\0\0\0\x4\x1\x1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x64\xff\xff\xff\xff\0\0\0\x81\0\0\0\0\0\0\0\x4\0\0\x1G\0\0\0\x1\0\0\0\0\0\0\0L\0\0\0\x1\0\0\0\0\0\0\0Q\0\0\0\x1\0\0\0\0\0\0\0\x88\0\0\0\x1\0\0\0\0\0\0\x3\xe8\0\xff\xff\xff\xff\0\0\0\0)
viewMode=Detail

15
.config/Thunar/uca.xml Normal file
View File

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<actions>
<action>
<icon>utilities-terminal</icon>
<name>Open Terminal Here</name>
<submenu></submenu>
<unique-id>1720601290633065-1</unique-id>
<command>exo-open --working-directory %f --launch TerminalEmulator</command>
<description>Example for a custom action</description>
<range></range>
<patterns>*</patterns>
<startup-notify/>
<directories/>
</action>
</actions>

View File

@ -0,0 +1,61 @@
import = [
# uncomment the flavour you want below:
#"~/.config/alacritty/catppuccin-latte.toml"
# "~/.config/alacritty/catppuccin-frappe.toml"
# "~/.config/alacritty/catppuccin-macchiato.toml"
"~/.config/alacritty/catppuccin-mocha.toml"
# "~/.config/alacritty/tokyo-night.toml"
]
[bell]
animation = "EaseOutExpo"
duration = 0
[colors]
draw_bold_text_with_bright_colors = true
[env]
TERM = "xterm-256color"
[font]
size = 12
[font.bold]
family = "JetBrainsMono Nerd Font"
style = "Bold"
[font.glyph_offset]
x = 0
y = 0
[font.italic]
family = "JetBrainsMono Nerd Font"
style = "Italic"
[font.normal]
family = "JetBrainsMono Nerd Font"
style = "Regular"
[font.offset]
x = 0
y = 0
[[mouse.bindings]]
action = "PasteSelection"
mouse = "Middle"
[selection]
semantic_escape_chars = ",│`|:\"' ()[]{}<>"
[shell]
program = "/bin/fish"
[window]
dynamic_title = true
option_as_alt = "Both"
opacity = 1.0
blur = true
[window.padding]
x = 0
y = 0

View File

@ -0,0 +1,75 @@
[colors.primary]
background = "#24273a"
foreground = "#cad3f5"
dim_foreground = "#8087a2"
bright_foreground = "#cad3f5"
[colors.cursor]
text = "#24273a"
cursor = "#f4dbd6"
[colors.vi_mode_cursor]
text = "#24273a"
cursor = "#b7bdf8"
[colors.search.matches]
foreground = "#24273a"
background = "#a5adcb"
[colors.search.focused_match]
foreground = "#24273a"
background = "#a6da95"
[colors.footer_bar]
foreground = "#24273a"
background = "#a5adcb"
[colors.hints.start]
foreground = "#24273a"
background = "#eed49f"
[colors.hints.end]
foreground = "#24273a"
background = "#a5adcb"
[colors.selection]
text = "#24273a"
background = "#f4dbd6"
[colors.normal]
black = "#494d64"
red = "#ed8796"
green = "#a6da95"
yellow = "#eed49f"
blue = "#8aadf4"
magenta = "#f5bde6"
cyan = "#8bd5ca"
white = "#b8c0e0"
[colors.bright]
black = "#5b6078"
red = "#ed8796"
green = "#a6da95"
yellow = "#eed49f"
blue = "#8aadf4"
magenta = "#f5bde6"
cyan = "#8bd5ca"
white = "#a5adcb"
[colors.dim]
black = "#494d64"
red = "#ed8796"
green = "#a6da95"
yellow = "#eed49f"
blue = "#8aadf4"
magenta = "#f5bde6"
cyan = "#8bd5ca"
white = "#b8c0e0"
[[colors.indexed_colors]]
index = 16
color = "#f5a97f"
[[colors.indexed_colors]]
index = 17
color = "#f4dbd6"

View File

@ -0,0 +1,75 @@
[colors.primary]
background = "#1e1e2e"
foreground = "#cdd6f4"
dim_foreground = "#7f849c"
bright_foreground = "#cdd6f4"
[colors.cursor]
text = "#1e1e2e"
cursor = "#f5e0dc"
[colors.vi_mode_cursor]
text = "#1e1e2e"
cursor = "#b4befe"
[colors.search.matches]
foreground = "#1e1e2e"
background = "#a6adc8"
[colors.search.focused_match]
foreground = "#1e1e2e"
background = "#a6e3a1"
[colors.footer_bar]
foreground = "#1e1e2e"
background = "#a6adc8"
[colors.hints.start]
foreground = "#1e1e2e"
background = "#f9e2af"
[colors.hints.end]
foreground = "#1e1e2e"
background = "#a6adc8"
[colors.selection]
text = "#1e1e2e"
background = "#f5e0dc"
[colors.normal]
black = "#45475a"
red = "#f38ba8"
green = "#a6e3a1"
yellow = "#f9e2af"
blue = "#89b4fa"
magenta = "#f5c2e7"
cyan = "#94e2d5"
white = "#bac2de"
[colors.bright]
black = "#585b70"
red = "#f38ba8"
green = "#a6e3a1"
yellow = "#f9e2af"
blue = "#89b4fa"
magenta = "#f5c2e7"
cyan = "#94e2d5"
white = "#a6adc8"
[colors.dim]
black = "#45475a"
red = "#f38ba8"
green = "#a6e3a1"
yellow = "#f9e2af"
blue = "#89b4fa"
magenta = "#f5c2e7"
cyan = "#94e2d5"
white = "#bac2de"
[[colors.indexed_colors]]
index = 16
color = "#fab387"
[[colors.indexed_colors]]
index = 17
color = "#f5e0dc"

View File

@ -0,0 +1,29 @@
# Colors (Tokyo Night)
# Source https//github.com/zatchheems/tokyo-night-alacritty-theme
# Default colors
[colors.primary]
background = '#1a1b26'
foreground = '#a9b1d6'
# Normal colors
[colors.normal]
black = '#32344a'
red = '#f7768e'
green = '#9ece6a'
yellow = '#e0af68'
blue = '#7aa2f7'
magenta = '#ad8ee6'
cyan = '#449dab'
white = '#787c99'
# Bright colors
[colors.bright]
black = '#444b6a'
red = '#ff7a93'
green = '#b9f27c'
yellow = '#ff9e64'
blue = '#7da6ff'
magenta = '#bb9af7'
cyan = '#0db9d7'
white = '#acb0d0'

212
.config/btop/btop.conf Normal file
View File

@ -0,0 +1,212 @@
#? Config file for btop v. 1.2.13
#* Name of a btop++/bpytop/bashtop formatted ".theme" file, "Default" and "TTY" for builtin themes.
#* Themes should be placed in "../share/btop/themes" relative to binary or "$HOME/.config/btop/themes"
color_theme = "/home/linuxmobile/.config/btop/themes/catppuccin_mocha.theme"
#* If the theme set background should be shown, set to False if you want terminal background transparency.
theme_background = False
#* Sets if 24-bit truecolor should be used, will convert 24-bit colors to 256 color (6x6x6 color cube) if false.
truecolor = True
#* Set to true to force tty mode regardless if a real tty has been detected or not.
#* Will force 16-color mode and TTY theme, set all graph symbols to "tty" and swap out other non tty friendly symbols.
force_tty = False
#* Define presets for the layout of the boxes. Preset 0 is always all boxes shown with default settings. Max 9 presets.
#* Format: "box_name:P:G,box_name:P:G" P=(0 or 1) for alternate positions, G=graph symbol to use for box.
#* Use whitespace " " as separator between different presets.
#* Example: "cpu:0:default,mem:0:tty,proc:1:default cpu:0:braille,proc:0:tty"
presets = "cpu:1:default,proc:0:default cpu:0:default,mem:0:default,net:0:default cpu:0:block,net:0:tty"
#* Set to True to enable "h,j,k,l,g,G" keys for directional control in lists.
#* Conflicting keys for h:"help" and k:"kill" is accessible while holding shift.
vim_keys = False
#* Rounded corners on boxes, is ignored if TTY mode is ON.
rounded_corners = False
#* Default symbols to use for graph creation, "braille", "block" or "tty".
#* "braille" offers the highest resolution but might not be included in all fonts.
#* "block" has half the resolution of braille but uses more common characters.
#* "tty" uses only 3 different symbols but will work with most fonts and should work in a real TTY.
#* Note that "tty" only has half the horizontal resolution of the other two, so will show a shorter historical view.
graph_symbol = "braille"
# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty".
graph_symbol_cpu = "default"
# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty".
graph_symbol_mem = "default"
# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty".
graph_symbol_net = "default"
# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty".
graph_symbol_proc = "default"
#* Manually set which boxes to show. Available values are "cpu mem net proc", separate values with whitespace.
shown_boxes = "proc cpu mem net"
#* Update time in milliseconds, recommended 2000 ms or above for better sample times for graphs.
update_ms = 2000
#* Processes sorting, "pid" "program" "arguments" "threads" "user" "memory" "cpu lazy" "cpu direct",
#* "cpu lazy" sorts top process over time (easier to follow), "cpu direct" updates top process directly.
proc_sorting = "cpu lazy"
#* Reverse sorting order, True or False.
proc_reversed = False
#* Show processes as a tree.
proc_tree = False
#* Use the cpu graph colors in the process list.
proc_colors = True
#* Use a darkening gradient in the process list.
proc_gradient = True
#* If process cpu usage should be of the core it's running on or usage of the total available cpu power.
proc_per_core = False
#* Show process memory as bytes instead of percent.
proc_mem_bytes = True
#* Show cpu graph for each process.
proc_cpu_graphs = True
#* Use /proc/[pid]/smaps for memory information in the process info box (very slow but more accurate)
proc_info_smaps = False
#* Show proc box on left side of screen instead of right.
proc_left = False
#* (Linux) Filter processes tied to the Linux kernel(similar behavior to htop).
proc_filter_kernel = False
#* Sets the CPU stat shown in upper half of the CPU graph, "total" is always available.
#* Select from a list of detected attributes from the options menu.
cpu_graph_upper = "total"
#* Sets the CPU stat shown in lower half of the CPU graph, "total" is always available.
#* Select from a list of detected attributes from the options menu.
cpu_graph_lower = "total"
#* Toggles if the lower CPU graph should be inverted.
cpu_invert_lower = True
#* Set to True to completely disable the lower CPU graph.
cpu_single_graph = False
#* Show cpu box at bottom of screen instead of top.
cpu_bottom = False
#* Shows the system uptime in the CPU box.
show_uptime = True
#* Show cpu temperature.
check_temp = True
#* Which sensor to use for cpu temperature, use options menu to select from list of available sensors.
cpu_sensor = "Auto"
#* Show temperatures for cpu cores also if check_temp is True and sensors has been found.
show_coretemp = True
#* Set a custom mapping between core and coretemp, can be needed on certain cpus to get correct temperature for correct core.
#* Use lm-sensors or similar to see which cores are reporting temperatures on your machine.
#* Format "x:y" x=core with wrong temp, y=core with correct temp, use space as separator between multiple entries.
#* Example: "4:0 5:1 6:3"
cpu_core_map = ""
#* Which temperature scale to use, available values: "celsius", "fahrenheit", "kelvin" and "rankine".
temp_scale = "celsius"
#* Use base 10 for bits/bytes sizes, KB = 1000 instead of KiB = 1024.
base_10_sizes = True
#* Show CPU frequency.
show_cpu_freq = True
#* Draw a clock at top of screen, formatting according to strftime, empty string to disable.
#* Special formatting: /host = hostname | /user = username | /uptime = system uptime
clock_format = "%X"
#* Update main ui in background when menus are showing, set this to false if the menus is flickering too much for comfort.
background_update = True
#* Custom cpu model name, empty string to disable.
custom_cpu_name = ""
#* Optional filter for shown disks, should be full path of a mountpoint, separate multiple values with whitespace " ".
#* Begin line with "exclude=" to change to exclude filter, otherwise defaults to "most include" filter. Example: disks_filter="exclude=/boot /home/user".
disks_filter = ""
#* Show graphs instead of meters for memory values.
mem_graphs = True
#* Show mem box below net box instead of above.
mem_below_net = False
#* Count ZFS ARC in cached and available memory.
zfs_arc_cached = True
#* If swap memory should be shown in memory box.
show_swap = True
#* Show swap as a disk, ignores show_swap value above, inserts itself after first disk.
swap_disk = True
#* If mem box should be split to also show disks info.
show_disks = False
#* Filter out non physical disks. Set this to False to include network disks, RAM disks and similar.
only_physical = True
#* Read disks list from /etc/fstab. This also disables only_physical.
use_fstab = True
#* Setting this to True will hide all datasets, and only show ZFS pools. (IO stats will be calculated per-pool)
zfs_hide_datasets = False
#* Set to true to show available disk space for privileged users.
disk_free_priv = False
#* Toggles if io activity % (disk busy time) should be shown in regular disk usage view.
show_io_stat = True
#* Toggles io mode for disks, showing big graphs for disk read/write speeds.
io_mode = False
#* Set to True to show combined read/write io graphs in io mode.
io_graph_combined = False
#* Set the top speed for the io graphs in MiB/s (100 by default), use format "mountpoint:speed" separate disks with whitespace " ".
#* Example: "/mnt/media:100 /:20 /boot:1".
io_graph_speeds = ""
#* Set fixed values for network graphs in Mebibits. Is only used if net_auto is also set to False.
net_download = 100
net_upload = 100
#* Use network graphs auto rescaling mode, ignores any values set above and rescales down to 10 Kibibytes at the lowest.
net_auto = True
#* Sync the auto scaling for download and upload to whichever currently has the highest scale.
net_sync = True
#* Starts with the Network Interface specified here.
net_iface = ""
#* Show battery stats in top right if battery is present.
show_battery = False
#* Which battery to use if multiple are present. "Auto" for auto detection.
selected_battery = "Auto"
#* Set loglevel for "~/.config/btop/btop.log" levels are: "ERROR" "WARNING" "INFO" "DEBUG".
#* The level set includes all lower levels, i.e. "DEBUG" will show all logging info.
log_level = "WARNING"

View File

@ -0,0 +1,42 @@
theme[main_bg]="#303446"
theme[main_fg]="#C6D0F5"
theme[title]="#C6D0F5"
theme[hi_fg]="#8CAAEE"
theme[selected_bg]="#51576D"
theme[selected_fg]="#8CAAEE"
theme[inactive_fg]="#838BA7"
theme[graph_text]="#F2D5CF"
theme[meter_bg]="#51576D"
theme[proc_misc]="#F2D5CF"
theme[cpu_box]="#85C1DC"
theme[mem_box]="#A6D189"
theme[net_box]="#CA9EE6"
theme[proc_box]="#EEBEBE"
theme[div_line]="#737994"
theme[temp_start]="#E5C890"
theme[temp_mid]="#EF9F76"
theme[temp_end]="#E78284"
theme[cpu_start]="#85C1DC"
theme[cpu_mid]="#99D1DB"
theme[cpu_end]="#81C8BE"
theme[free_start]="#81C8BE"
theme[free_mid]="#81C8BE"
theme[free_end]="#A6D189"
theme[cached_start]="#F4B8E4"
theme[cached_mid]="#F4B8E4"
theme[cached_end]="#CA9EE6"
theme[available_start]="#F2D5CF"
theme[available_mid]="#EEBEBE"
theme[available_end]="#EEBEBE"
theme[used_start]="#EF9F76"
theme[used_mid]="#EF9F76"
theme[used_end]="#E78284"
theme[download_start]="#BABBF1"
theme[download_mid]="#BABBF1"
theme[download_end]="#CA9EE6"
theme[upload_start]="#BABBF1"
theme[upload_mid]="#BABBF1"
theme[upload_end]="#CA9EE6"
theme[process_start]="#85C1DC"
theme[process_mid]="#99D1DB"
theme[process_end]="#81C8BE"

View File

@ -0,0 +1,42 @@
theme[main_bg]="#EFF1F5"
theme[main_fg]="#4C4F69"
theme[title]="#4C4F69"
theme[hi_fg]="#1E66F5"
theme[selected_bg]="#BCC0CC"
theme[selected_fg]="#1E66F5"
theme[inactive_fg]="#8C8FA1"
theme[graph_text]="#DC8A78"
theme[meter_bg]="#BCC0CC"
theme[proc_misc]="#DC8A78"
theme[cpu_box]="#209FB5"
theme[mem_box]="#40A02B"
theme[net_box]="#8839EF"
theme[proc_box]="#DD7878"
theme[div_line]="#9CA0B0"
theme[temp_start]="#DF8E1D"
theme[temp_mid]="#FE640B"
theme[temp_end]="#D20F39"
theme[cpu_start]="#209FB5"
theme[cpu_mid]="#04A5E5"
theme[cpu_end]="#179299"
theme[free_start]="#179299"
theme[free_mid]="#179299"
theme[free_end]="#40A02B"
theme[cached_start]="#EA76CB"
theme[cached_mid]="#EA76CB"
theme[cached_end]="#8839EF"
theme[available_start]="#DC8A78"
theme[available_mid]="#DD7878"
theme[available_end]="#DD7878"
theme[used_start]="#FE640B"
theme[used_mid]="#FE640B"
theme[used_end]="#D20F39"
theme[download_start]="#7287FD"
theme[download_mid]="#7287FD"
theme[download_end]="#8839EF"
theme[upload_start]="#7287FD"
theme[upload_mid]="#7287FD"
theme[upload_end]="#8839EF"
theme[process_start]="#209FB5"
theme[process_mid]="#04A5E5"
theme[process_end]="#179299"

View File

@ -0,0 +1,42 @@
theme[main_bg]="#24273A"
theme[main_fg]="#CAD3F5"
theme[title]="#CAD3F5"
theme[hi_fg]="#8AADF4"
theme[selected_bg]="#494D64"
theme[selected_fg]="#8AADF4"
theme[inactive_fg]="#8087A2"
theme[graph_text]="#F4DBD6"
theme[meter_bg]="#494D64"
theme[proc_misc]="#F4DBD6"
theme[cpu_box]="#7DC4E4"
theme[mem_box]="#A6DA95"
theme[net_box]="#C6A0F6"
theme[proc_box]="#F0C6C6"
theme[div_line]="#6E738D"
theme[temp_start]="#EED49F"
theme[temp_mid]="#F5A97F"
theme[temp_end]="#ED8796"
theme[cpu_start]="#7DC4E4"
theme[cpu_mid]="#91D7E3"
theme[cpu_end]="#8BD5CA"
theme[free_start]="#8BD5CA"
theme[free_mid]="#8BD5CA"
theme[free_end]="#A6DA95"
theme[cached_start]="#F5BDE6"
theme[cached_mid]="#F5BDE6"
theme[cached_end]="#C6A0F6"
theme[available_start]="#F4DBD6"
theme[available_mid]="#F0C6C6"
theme[available_end]="#F0C6C6"
theme[used_start]="#F5A97F"
theme[used_mid]="#F5A97F"
theme[used_end]="#ED8796"
theme[download_start]="#B7BDF8"
theme[download_mid]="#B7BDF8"
theme[download_end]="#C6A0F6"
theme[upload_start]="#B7BDF8"
theme[upload_mid]="#B7BDF8"
theme[upload_end]="#C6A0F6"
theme[process_start]="#7DC4E4"
theme[process_mid]="#91D7E3"
theme[process_end]="#8BD5CA"

View File

@ -0,0 +1,42 @@
theme[main_bg]="#1E1E2E"
theme[main_fg]="#CDD6F4"
theme[title]="#CDD6F4"
theme[hi_fg]="#89B4FA"
theme[selected_bg]="#45475A"
theme[selected_fg]="#89B4FA"
theme[inactive_fg]="#7F849C"
theme[graph_text]="#F5E0DC"
theme[meter_bg]="#45475A"
theme[proc_misc]="#F5E0DC"
theme[cpu_box]="#74C7EC"
theme[mem_box]="#A6E3A1"
theme[net_box]="#CBA6F7"
theme[proc_box]="#F2CDCD"
theme[div_line]="#6C7086"
theme[temp_start]="#F9E2AF"
theme[temp_mid]="#FAB387"
theme[temp_end]="#F38BA8"
theme[cpu_start]="#74C7EC"
theme[cpu_mid]="#89DCEB"
theme[cpu_end]="#94E2D5"
theme[free_start]="#94E2D5"
theme[free_mid]="#94E2D5"
theme[free_end]="#A6E3A1"
theme[cached_start]="#F5C2E7"
theme[cached_mid]="#F5C2E7"
theme[cached_end]="#CBA6F7"
theme[available_start]="#F5E0DC"
theme[available_mid]="#F2CDCD"
theme[available_end]="#F2CDCD"
theme[used_start]="#FAB387"
theme[used_mid]="#FAB387"
theme[used_end]="#F38BA8"
theme[download_start]="#B4BEFE"
theme[download_mid]="#B4BEFE"
theme[download_end]="#CBA6F7"
theme[upload_start]="#B4BEFE"
theme[upload_mid]="#B4BEFE"
theme[upload_end]="#CBA6F7"
theme[process_start]="#74C7EC"
theme[process_mid]="#89DCEB"
theme[process_end]="#94E2D5"

200
.config/cava/config Normal file
View File

@ -0,0 +1,200 @@
## Configuration file for CAVA. Default values are commented out. Use either ';' or '#' for commenting.
[general]
# Smoothing mode. Can be 'normal', 'scientific' or 'waves'. DEPRECATED as of 0.6.0
; mode = normal
# Accepts only non-negative values.
; framerate = 60
# 'autosens' will attempt to decrease sensitivity if the bars peak. 1 = on, 0 = off
# new as of 0.6.0 autosens of low values (dynamic range)
# 'overshoot' allows bars to overshoot (in % of terminal height) without initiating autosens. DEPRECATED as of 0.6.0
; autosens = 1
; overshoot = 20
# Manual sensitivity in %. If autosens is enabled, this will only be the initial value.
# 200 means double height. Accepts only non-negative values.
; sensitivity = 100
# The number of bars (0-200). 0 sets it to auto (fill up console).
# Bars' width and space between bars in number of characters.
; bars = 0
; bar_width = 2
; bar_spacing = 1
# bar_height is only used for output in "noritake" format
; bar_height = 32
# For SDL width and space between bars is in pixels, defaults are:
; bar_width = 20
; bar_spacing = 5
# Lower and higher cutoff frequencies for lowest and highest bars
# the bandwidth of the visualizer.
# Note: there is a minimum total bandwidth of 43Mhz x number of bars.
# Cava will automatically increase the higher cutoff if a too low band is specified.
; lower_cutoff_freq = 50
; higher_cutoff_freq = 10000
# Seconds with no input before cava goes to sleep mode. Cava will not perform FFT or drawing and
# only check for input once per second. Cava will wake up once input is detected. 0 = disable.
; sleep_timer = 0
[input]
# Audio capturing method. Possible methods are: 'pulse', 'alsa', 'fifo', 'sndio' or 'shmem'
# Defaults to 'pulse', 'alsa' or 'fifo', in that order, dependent on what support cava was built with.
#
# All input methods uses the same config variable 'source'
# to define where it should get the audio.
#
# For pulseaudio 'source' will be the source. Default: 'auto', which uses the monitor source of the default sink
# (all pulseaudio sinks(outputs) have 'monitor' sources(inputs) associated with them).
#
# For alsa 'source' will be the capture device.
# For fifo 'source' will be the path to fifo-file.
# For shmem 'source' will be /squeezelite-AA:BB:CC:DD:EE:FF where 'AA:BB:CC:DD:EE:FF' will be squeezelite's MAC address
; method = pulse
; source = auto
; method = alsa
; source = hw:Loopback,1
; method = fifo
; source = /tmp/mpd.fifo
; sample_rate = 44100
; sample_bits = 16
; method = shmem
; source = /squeezelite-AA:BB:CC:DD:EE:FF
; method = portaudio
; source = auto
[output]
# Output method. Can be 'ncurses', 'noncurses', 'raw', 'noritake' or 'sdl'.
# 'noncurses' uses a custom framebuffer technique and prints only changes
# from frame to frame in the terminal. 'ncurses' is default if supported.
#
# 'raw' is an 8 or 16 bit (configurable via the 'bit_format' option) data
# stream of the bar heights that can be used to send to other applications.
# 'raw' defaults to 200 bars, which can be adjusted in the 'bars' option above.
#
# 'noritake' outputs a bitmap in the format expected by a Noritake VFD display
# in graphic mode. It only support the 3000 series graphical VFDs for now.
#
# 'sdl' uses the Simple DirectMedia Layer to render in a graphical context.
; method = ncurses
# Visual channels. Can be 'stereo' or 'mono'.
# 'stereo' mirrors both channels with low frequencies in center.
# 'mono' outputs left to right lowest to highest frequencies.
# 'mono_option' set mono to either take input from 'left', 'right' or 'average'.
# set 'reverse' to 1 to display frequencies the other way around.
; channels = stereo
; mono_option = average
; reverse = 0
# Raw output target. A fifo will be created if target does not exist.
; raw_target = /dev/stdout
# Raw data format. Can be 'binary' or 'ascii'.
; data_format = binary
# Binary bit format, can be '8bit' (0-255) or '16bit' (0-65530).
; bit_format = 16bit
# Ascii max value. In 'ascii' mode range will run from 0 to value specified here
; ascii_max_range = 1000
# Ascii delimiters. In ascii format each bar and frame is separated by a delimiters.
# Use decimal value in ascii table (i.e. 59 = ';' and 10 = '\n' (line feed)).
; bar_delimiter = 59
; frame_delimiter = 10
# sdl window size and position. -1,-1 is centered.
; sdl_width = 1000
; sdl_height = 500
; sdl_x = -1
; sdl_y= -1
[color]
# Colors can be one of seven predefined: black, blue, cyan, green, magenta, red, white, yellow.
# Or defined by hex code '#xxxxxx' (hex code must be within ''). User defined colors requires
# ncurses output method and a terminal that can change color definitions such as Gnome-terminal or rxvt.
# if supported, ncurses mode will be forced on if user defined colors are used.
# default is to keep current terminal color
; background = default
; foreground = default
# SDL only support hex code colors, these are the default:
; background = '#111111'
; foreground = '#33cccc'
# Gradient mode, only hex defined colors (and thereby ncurses mode) are supported,
# background must also be defined in hex or remain commented out. 1 = on, 0 = off.
# You can define as many as 8 different colors. They range from bottom to top of screen
gradient = 1
gradient_count = 6
gradient_color_6 = '#DD868C'
gradient_color_5 = '#E4A2A8'
gradient_color_4 = '#E7B0B6'
gradient_color_3 = '#EABEC3'
gradient_color_2 = '#F0CED2'
gradient_color_1 = '#F5DDE0'
; gradient_color_1 = '#D5CADE'
; gradient_color_2 = '#DCC7CC'
; gradient_color_3 = '#E8C4AE'
; gradient_color_4 = '#F1C096'
; gradient_color_5 = '#F6BE89'
; gradient_color_6 = '#FDBC78'
[smoothing]
# Percentage value for integral smoothing. Takes values from 0 - 100.
# Higher values means smoother, but less precise. 0 to disable.
# DEPRECATED as of 0.8.0, use noise_reduction instead
; integral = 77
# Disables or enables the so-called "Monstercat smoothing" with or without "waves". Set to 0 to disable.
; monstercat = 0
; waves = 0
# Set gravity percentage for "drop off". Higher values means bars will drop faster.
# Accepts only non-negative values. 50 means half gravity, 200 means double. Set to 0 to disable "drop off".
# DEPRECATED as of 0.8.0, use noise_reduction instead
; gravity = 100
# In bar height, bars that would have been lower that this will not be drawn.
# DEPRECATED as of 0.8.0
; ignore = 0
# Noise reduction, float 0 - 1. default 0.77
# the raw visualization is very noisy, this factor adjusts the integral and gravity filters to keep the signal smooth
# 1 will be very slow and smooth, 0 will be fast but noisy.
noise_reduction = 0.77
[eq]
# This one is tricky. You can have as much keys as you want.
# Remember to uncomment more then one key! More keys = more precision.
# Look at readme.md on github for further explanations and examples.
# DEPRECATED as of 0.8.0 can be brought back by popular request, open issue at:
# https://github.com/karlstav/cava
; 1 = 1 # bass
; 2 = 1
; 3 = 1 # midtone
; 4 = 1
; 5 = 1 # treble

BIN
.config/dconf/user Normal file

Binary file not shown.

View File

@ -0,0 +1,12 @@
{
"IS_MAXIMIZED": false,
"IS_MINIMIZED": false,
"SKIP_HOST_UPDATE": true,
"WINDOW_BOUNDS": {
"x": 7,
"y": 47,
"width": 1352,
"height": 714
},
"DANGEROUS_ENABLE_DEVTOOLS_ONLY_ENABLE_IF_YOU_KNOW_WHAT_YOURE_DOING": true
}

11
.config/dolphinrc Normal file
View File

@ -0,0 +1,11 @@
[General]
Version=202
ViewPropsTimestamp=2024,7,9,22,35,24.66
[KFileDialog Settings]
Places Icons Auto-resize=false
Places Icons Static Size=22
[MainWindow]
MenuBar=Disabled
ToolBarsMovable=Disabled

10
.config/dunst/dunst_espeak.sh Executable file
View File

@ -0,0 +1,10 @@
#!/bin/bash
summary="$2"
body="$3"
if [[ "$1" == 'Spotify' ]]; then
echo | python scripts/spotify
else
echo "$summary $body" | espeak
fi

56
.config/dunst/dunstrc Executable file
View File

@ -0,0 +1,56 @@
[global]
follow = mouse
indicate_hidden = yes
offset = 10x10
notification_height = 0
separator_height = 2
padding = 8
horizontal_padding = 8
text_icon_padding = 0
frame_width = 2
frame_color = "#f5c2e7"
separator_color = frame
sort = yes
idle_threshold = 120
font = monospace 10
line_height = 0
markup = full
alignment = left
vertical_alignment = center
show_age_threshold = 60
word_wrap = yes
stack_duplicates = true
hide_duplicate_count = false
show_indicators = yes
min_icon_size = 0
max_icon_size = 64
icon_path = /usr/share/icons/Papirus-Dark/16x16/status/:/usr/share/icons/Papirus-Dark/16x16/devices/:/usr/share/icons/Papirus-Dark/16x16/actions/:/usr/share/icons/Papirus-Dark/16x16/animations/:/usr/share/icons/Papirus-Dark/16x16/apps/:/usr/share/icons/Papirus-Dark/16x16/categories/:/usr/share/icons/Papirus-Dark/16x16/emblems/:/usr/share/icons/Papirus-Dark/16x16/emotes/:/usr/share/icons/Papirus-Dark/16x16/devices/mimetypes:/usr/share/icons/Papirus-Dark/16x16/panel/:/usr/share/icons/Papirus-Dark/16x16/places/
dmenu = /usr/bin/wofi -p dunst:
browser = /usr/bin/firefox --new-tab
title = Dunst
class = Dunst
corner_radius = 10
timeout = 5
[urgency_low]
background = "#1E1E2E"
foreground = "#CDD6F4"
[urgency_normal]
background = "#1E1E2E"
foreground = "#CDD6F4"
[urgency_critical]
background = "#1E1E2E"
foreground = "#CDD6F4"
frame_color = "#FAB387"

13
.config/dunst/reload Executable file
View File

@ -0,0 +1,13 @@
#!/bin/bash
pkill dunst
dunst -config ~/.config/dunst/dunstrc &
notify-send -u critical "Test message: critical test 1"
notify-send -u normal "Test message: normal test 2"
notify-send -u low "Test message: low test 3"
notify-send -u critical "Test message: critical test 4"
notify-send -u normal "Test message: normal test 5"
notify-send -u low "Test message: low test 6"
notify-send -u critical "Test message: critical test 7"
notify-send -u normal "Test message: normal test 8"
notify-send -u low "Test message: low test 9"

4
.config/fish/config.fish Normal file
View File

@ -0,0 +1,4 @@
if status is-interactive
# Commands to run in interactive sessions can go here
zoxide init fish | source
end

View File

@ -0,0 +1,31 @@
# This file contains fish universal variable definitions.
# VERSION: 3.0
SETUVAR __fish_initialized:3800
SETUVAR fish_color_autosuggestion:brblack
SETUVAR fish_color_cancel:\x2dr
SETUVAR fish_color_command:blue
SETUVAR fish_color_comment:red
SETUVAR fish_color_cwd:green
SETUVAR fish_color_cwd_root:red
SETUVAR fish_color_end:green
SETUVAR fish_color_error:brred
SETUVAR fish_color_escape:brcyan
SETUVAR fish_color_history_current:\x2d\x2dbold
SETUVAR fish_color_host:normal
SETUVAR fish_color_host_remote:yellow
SETUVAR fish_color_normal:normal
SETUVAR fish_color_operator:brcyan
SETUVAR fish_color_param:cyan
SETUVAR fish_color_quote:yellow
SETUVAR fish_color_redirection:cyan\x1e\x2d\x2dbold
SETUVAR fish_color_search_match:white\x1e\x2d\x2dbackground\x3dbrblack
SETUVAR fish_color_selection:white\x1e\x2d\x2dbold\x1e\x2d\x2dbackground\x3dbrblack
SETUVAR fish_color_status:red
SETUVAR fish_color_user:brgreen
SETUVAR fish_color_valid_path:\x2d\x2dunderline
SETUVAR fish_key_bindings:fish_default_key_bindings
SETUVAR fish_pager_color_completion:normal
SETUVAR fish_pager_color_description:yellow\x1e\x2di
SETUVAR fish_pager_color_prefix:normal\x1e\x2d\x2dbold\x1e\x2d\x2dunderline
SETUVAR fish_pager_color_progress:brwhite\x1e\x2d\x2dbackground\x3dcyan
SETUVAR fish_pager_color_selected_background:\x2dr

View File

@ -0,0 +1,17 @@
[Settings]
gtk-theme-name=catppuccin-mocha-teal-standard+default
gtk-icon-theme-name=Adwaita
gtk-font-name=Cantarell 11
gtk-cursor-theme-name=Adwaita
gtk-cursor-theme-size=24
gtk-toolbar-style=GTK_TOOLBAR_ICONS
gtk-toolbar-icon-size=GTK_ICON_SIZE_LARGE_TOOLBAR
gtk-button-images=0
gtk-menu-images=0
gtk-enable-event-sounds=1
gtk-enable-input-feedback-sounds=0
gtk-xft-antialias=1
gtk-xft-hinting=1
gtk-xft-hintstyle=hintslight
gtk-xft-rgba=rgb
gtk-application-prefer-dark-theme=0

63
.config/htop/htoprc Normal file
View File

@ -0,0 +1,63 @@
# Beware! This file is rewritten by htop when settings are changed in the interface.
# The parser is also very primitive, and not human-friendly.
htop_version=3.3.0
config_reader_min_version=3
fields=0 48 17 18 38 39 40 2 46 47 49 1
hide_kernel_threads=1
hide_userland_threads=0
hide_running_in_container=0
shadow_other_users=0
show_thread_names=0
show_program_path=1
highlight_base_name=0
highlight_deleted_exe=1
shadow_distribution_path_prefix=0
highlight_megabytes=1
highlight_threads=1
highlight_changes=0
highlight_changes_delay_secs=5
find_comm_in_cmdline=1
strip_exe_from_cmdline=1
show_merged_command=0
header_margin=1
screen_tabs=1
detailed_cpu_time=0
cpu_count_from_one=0
show_cpu_usage=1
show_cpu_frequency=0
show_cpu_temperature=0
degree_fahrenheit=0
update_process_names=0
account_guest_in_cpu_meter=0
color_scheme=0
enable_mouse=1
delay=15
hide_function_bar=0
header_layout=two_50_50
column_meters_0=LeftCPUs2 Memory Swap
column_meter_modes_0=1 1 1
column_meters_1=RightCPUs2 Tasks LoadAverage Uptime
column_meter_modes_1=1 2 2 2
tree_view=0
sort_key=46
tree_sort_key=0
sort_direction=-1
tree_sort_direction=1
tree_view_always_by_pid=0
all_branches_collapsed=0
screen:Main=PID USER PRIORITY NICE M_VIRT M_RESIDENT M_SHARE STATE PERCENT_CPU PERCENT_MEM TIME Command
.sort_key=PERCENT_CPU
.tree_sort_key=PID
.tree_view_always_by_pid=0
.tree_view=0
.sort_direction=-1
.tree_sort_direction=1
.all_branches_collapsed=0
screen:I/O=PID USER IO_PRIORITY IO_RATE IO_READ_RATE IO_WRITE_RATE PERCENT_SWAP_DELAY PERCENT_IO_DELAY Command
.sort_key=IO_RATE
.tree_sort_key=PID
.tree_view_always_by_pid=0
.tree_view=0
.sort_direction=-1
.tree_sort_direction=1
.all_branches_collapsed=0

22
.config/hypr/env.conf Normal file
View File

@ -0,0 +1,22 @@
# Default env vars.
env = XDG_CURRENT_DESKTOP,Hyprland
env = XDG_SESSION_TYPE,wayland
env = XDG_SESSION_DESKTOP,Hyprland
env = GDK_BACKEND,wayland
env = QT_QPA_PLATFORM,wayland
env = QT_QPA_PLATFORMTHEME,qt6ct #env = QT_STYLE_OVERRIDE,kvantum
env = QT_WAYLAND_DISABLE_WINDOWDECORATION,1
env = QT_AUTO_SCREEN_SCALE_FACTOR,1
env = QT_WAYLAND_DISABLE_WINDOWDECORATION,1
env = SDL_VIDEODRIVER,wayland
env = _JAVA_AWT_WM_NONREPARENTING,1
env = WLR_NO_HARDWARE_CURSORS,1
env = MOZ_DISABLE_RDD_SANDBOX,1
env = MOZ_ENABLE_WAYLAND,1
env = OZONE_PLATFORM,wayland
env = wallpaper_path,$HOME/.wallpapers #set wallpaper path

144
.config/hypr/hyprland.conf Normal file
View File

@ -0,0 +1,144 @@
# █▀▀ █▄░█ █░█   █░█ ▄▀█ █▀█
# ██▄ █░▀█ ▀▄▀   ▀▄▀ █▀█ █▀▄
source = ~/.config/hypr/startup.conf
source = ~/.config/hypr/env.conf
source = ~/.config/hypr/windowrule.conf
source = ~/.config/hypr/keybinds.conf
# █▀▄▀█ █▀█ █▄░█ █ ▀█▀ █▀█ █▀█
# █░▀░█ █▄█ █░▀█ █ ░█░ █▄█ █▀▄
# monitor = DP-1,1366x768@60,0x0,1
monitor = ,highrr,auto,auto
# █ █▄░█ █▀█ █░█ ▀█▀
# █ █░▀█ █▀▀ █▄█ ░█░
input {
follow_mouse = 1
sensitivity = 0 # -1.0 - 1.0, 0 means no modification.
force_no_accel = 1
# repeat_rate = 25
# repeat_delay = 600
# accel_profile = flat # flat, adaptive
# natural_scroll = true
}
# █▀▀ █▀▀ █▄░█ █▀▀ █▀█ ▄▀█ █░░
# █▄█ ██▄ █░▀█ ██▄ █▀▄ █▀█ █▄▄
general {
gaps_in = 3
gaps_out = 6
border_size = 2
col.active_border = rgba(e5b9c6ff) rgba(c293a3ff) 45deg
col.inactive_border = 0xff382D2E
no_border_on_floating = false # enable border on float window
layout = dwindle
resize_on_border = true
}
# █▀▄▀█ █ █▀ █▀▀
# █░▀░█ █ ▄█ █▄▄
misc {
disable_hyprland_logo = true
disable_splash_rendering = true
mouse_move_enables_dpms = true
animate_manual_resizes = true
mouse_move_focuses_monitor = true
enable_swallow = true
swallow_regex = ^(alacritty)$
}
# █▀▄ █▀▀ █▀▀ █▀█ █▀█ ▄▀█ ▀█▀ █ █▀█ █▄░█
# █▄▀ ██▄ █▄▄ █▄█ █▀▄ █▀█ ░█░ █ █▄█ █░▀█
decoration {
# █▀█ █▀█ █░█ █▄░█ █▀▄   █▀▀ █▀█ █▀█ █▄░█ █▀▀ █▀█
# █▀▄ █▄█ █▄█ █░▀█ █▄▀   █▄▄ █▄█ █▀▄ █░▀█ ██▄ █▀▄
rounding = 4
# multisample_edges = true
# █▀█ █▀█ ▄▀█ █▀▀ █ ▀█▀ █▄█
# █▄█ █▀▀ █▀█ █▄▄ █ ░█░ ░█░
active_opacity = 1.0
inactive_opacity = 1.0
# █▄▄ █░░ █░█ █▀█
# █▄█ █▄▄ █▄█ █▀▄
blur {
enabled = true
size = 6
passes = 3
new_optimizations = true
xray = true
ignore_opacity = true
}
# █▀ █░█ ▄▀█ █▀▄ █▀█ █░█░█
# ▄█ █▀█ █▀█ █▄▀ █▄█ ▀▄▀▄▀
drop_shadow = false
shadow_ignore_window = true
shadow_offset = 1 2
shadow_range = 10
shadow_render_power = 5
col.shadow = 0x66404040
#blurls = gtk-layer-shell
blurls = waybar
blurls = lockscreen
}
# ▄▀█ █▄░█ █ █▀▄▀█ ▄▀█ ▀█▀ █ █▀█ █▄░█
# █▀█ █░▀█ █ █░▀░█ █▀█ ░█░ █ █▄█ █░▀█
animations {
enabled = true
# █▄▄ █▀▀ ▀█ █ █▀▀ █▀█   █▀▀ █░█ █▀█ █░█ █▀▀
# █▄█ ██▄ █▄ █ ██▄ █▀▄   █▄▄ █▄█ █▀▄ ▀▄▀ ██▄
bezier = wind, 0.05, 0.9, 0.1, 1.05
bezier = winIn, 0.1, 1.1, 0.1, 1.1
bezier = winOut, 0.3, -0.3, 0, 1
bezier = liner, 1, 1, 1, 1
#▄▀█ █▄░█ █ █▀▄▀█ ▄▀█ ▀█▀ █ █▀█ █▄░█
#█▀█ █░▀█ █ █░▀░█ █▀█ ░█░ █ █▄█ █░▀█
animation = windows, 1, 2, wind, slide
animation = windowsIn, 1, 2, winIn, slide
animation = windowsOut, 1, 2, winOut, slide
animation = windowsMove, 1, 2, wind, slide
animation = border, 1, 1, liner
animation = borderangle, 1, 30, liner, loop
animation = fade, 1, 3, default
animation = workspaces, 1, 2, wind
}
# █░░ ▄▀█ █▄█ █▀█ █░█ ▀█▀ █▀
# █▄▄ █▀█ ░█░ █▄█ █▄█ ░█░ ▄█
dwindle {
no_gaps_when_only = false
pseudotile = true # master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
preserve_split = true # you probably want this
}
master {
# See https://wiki.hyprland.org/Configuring/Master-Layout/ for more
# new_is_master = true
}

120
.config/hypr/keybinds.conf Normal file
View File

@ -0,0 +1,120 @@
# █▄▀ █▀▀ █▄█ █▄▄ █ █▄░█ █▀▄
# █░█ ██▄ ░█░ █▄█ █ █░▀█ █▄▀
$scriptsDir = $HOME/.config/hypr/scripts
$bg-dir = $HOME/.wallpapers
$notifycmd = notify-send -h string:x-canonical-private-synchronous:hypr-cfg -u low
# IDK
$term = alacritty
$volume = $scriptsDir/volume
$screenshot = $scriptsDir/screensht
$colorpicker = $scriptsDir/colorpicker
$files = thunar
$browser = brave
# █▀ █▀▀ █▀█ █▀▀ █▀▀ █▄░█ █▀ █░█ █▀█ ▀█▀
# ▄█ █▄▄ █▀▄ ██▄ ██▄ █░▀█ ▄█ █▀█ █▄█ ░█░
bind = SUPER, v, exec, wf-recorder -f $(xdg-user-dir VIDEOS)/$(date +'%H:%M:%S_%d-%m-%Y.mp4')
bind = SUPER SHIFT, v, exec, killall -s SIGINT wf-recorder
bind = , Print, exec, $screenshot full
bind = SUPERSHIFT, S, exec, $screenshot area
# █▀▄▀█ █ █▀ █▀▀
# █░▀░█ █ ▄█ █▄▄
bind = SUPER SHIFT, X, exec, $colorpicker
bind = CTRL ALT, L, exec, swaylock
bind = SUPER, T, exec, $term
bind = SUPER, E, exec, $files
bind = SUPER, Space, exec, killall rofi || rofi -show drun -theme ~/.config/rofi/config.rasi
bind = SUPER, period, exec, killall rofi || rofi -show emoji -emoji-format "{emoji}" -modi emoji -theme ~/.config/rofi/global/emoji
bind = SUPER SHIFT, B, exec, killall -SIGUSR2 waybar # Reload waybar
bind = SUPER, B, exec, killall -SIGUSR1 waybar # Hide waybar
# █░█░█ █ █▄░█ █▀▄ █▀█ █░█░█   █▀▄▀█ ▄▀█ █▄░█ ▄▀█ █▀▀ █▀▄▀█ █▀▀ █▄░█ ▀█▀
# ▀▄▀▄▀ █ █░▀█ █▄▀ █▄█ ▀▄▀▄▀   █░▀░█ █▀█ █░▀█ █▀█ █▄█ █░▀░█ ██▄ █░▀█ ░█░
bind = SUPER, Q, killactive,
bind = SUPER SHIFT, Q, exit,
bind = SUPER, F, fullscreen,
bind = SUPER, W, togglefloating,
bind = SUPER, P, pseudo, # dwindle
bind = SUPER, S, togglesplit, # dwindle
# Change Workspace Mode
bind = SUPER SHIFT, Space, workspaceopt, allfloat
bind = SUPER SHIFT, Space, exec, $notifycmd 'Toggled All Float Mode'
bind = SUPER SHIFT, P, workspaceopt, allpseudo
bind = SUPER SHIFT, P, exec, $notifycmd 'Toggled All Pseudo Mode'
bind = SUPER, Tab, cyclenext,
bind = SUPER, Tab, bringactivetotop,
# █▀▀ █▀█ █▀▀ █░█ █▀
# █▀░ █▄█ █▄▄ █▄█ ▄█
bind = SUPER, h, movefocus, l
bind = SUPER, l, movefocus, r
bind = SUPER, k, movefocus, u
bind = SUPER, j, movefocus, d
# █▀▄▀█ █▀█ █░█ █▀▀
# █░▀░█ █▄█ ▀▄▀ ██▄
bind = SUPER SHIFT, left, movewindow, l
bind = SUPER SHIFT, right, movewindow, r
bind = SUPER SHIFT, up, movewindow, u
bind = SUPER SHIFT, down, movewindow, d
# █▀█ █▀▀ █▀ █ ▀█ █▀▀
# █▀▄ ██▄ ▄█ █ █▄ ██▄
bind = SUPER CTRL, left, resizeactive, -20 0
bind = SUPER CTRL, right, resizeactive, 20 0
bind = SUPER CTRL, up, resizeactive, 0 -20
bind = SUPER CTRL, down, resizeactive, 0 20
# ▀█▀ ▄▀█ █▄▄ █▄▄ █▀▀ █▀▄
# ░█░ █▀█ █▄█ █▄█ ██▄ █▄▀
bind = SUPER, g, togglegroup
bind = SUPER, tab, changegroupactive
bind = SUPER, G, exec, $notifycmd 'Toggled Group Mode'
# █▀ █▀█ █▀▀ █▀▀ █ ▄▀█ █░░
# ▄█ █▀▀ ██▄ █▄▄ █ █▀█ █▄▄
bind = SUPER, a, togglespecialworkspace
bind = SUPERSHIFT, a, movetoworkspace, special
bind = SUPER, a, exec, $notifycmd 'Toggled Special Workspace'
bind = SUPER, c, exec, hyprctl dispatch centerwindow
# █▀ █░█░█ █ ▀█▀ █▀▀ █░█
# ▄█ ▀▄▀▄▀ █ ░█░ █▄▄ █▀█
bind = SUPER, 1, workspace, 1
bind = SUPER, 2, workspace, 2
bind = SUPER, 3, workspace, 3
bind = SUPER, 4, workspace, 4
bind = SUPER, 5, workspace, 5
bind = SUPER, 6, workspace, 6
bind = SUPER, 7, workspace, 7
bind = SUPER, 8, workspace, 8
bind = SUPER, 9, workspace, 9
bind = SUPER, 0, workspace, 10
bind = SUPER ALT, up, workspace, e+1
bind = SUPER ALT, down, workspace, e-1
# █▀▄▀█ █▀█ █░█ █▀▀
# █░▀░█ █▄█ ▀▄▀ ██▄
bind = SUPER SHIFT, 1, movetoworkspace, 1
bind = SUPER SHIFT, 2, movetoworkspace, 2
bind = SUPER SHIFT, 3, movetoworkspace, 3
bind = SUPER SHIFT, 4, movetoworkspace, 4
bind = SUPER SHIFT, 5, movetoworkspace, 5
bind = SUPER SHIFT, 6, movetoworkspace, 6
bind = SUPER SHIFT, 7, movetoworkspace, 7
bind = SUPER SHIFT, 8, movetoworkspace, 8
bind = SUPER SHIFT, 9, movetoworkspace, 9
bind = SUPER SHIFT, 0, movetoworkspace, 10
# █▀▄▀█ █▀█ █░█ █▀ █▀▀   █▄▄ █ █▄░█ █▀▄ █ █▄░█ █▀▀
# █░▀░█ █▄█ █▄█ ▄█ ██▄   █▄█ █ █░▀█ █▄▀ █ █░▀█ █▄█
bindm = SUPER, mouse:272, movewindow
bindm = SUPER, mouse:273, resizewindow
bind = SUPER, mouse_down, workspace, e+1
bind = SUPER, mouse_up, workspace, e-1

2
.config/hypr/randwall.sh Executable file
View File

@ -0,0 +1,2 @@
#/bin/bash
swww img `find $wallpaper_path -type f | shuf -n 1` --transition-type any --transition-fps 60

View File

@ -0,0 +1,23 @@
#!/usr/bin/env sh
roconf="~/.config/rofi/clipboard.rasi"
case $1 in
c) cliphist list | rofi -dmenu -theme-str 'entry { placeholder: "Copy...";}' -config $roconf | cliphist decode | wl-copy
;;
d) cliphist list | rofi -dmenu -theme-str 'entry { placeholder: "Delete...";}' -config $roconf | cliphist delete
;;
w) if [ `echo -e "Yes\nNo" | rofi -dmenu -theme-str 'entry { placeholder: "Clear Clipboard History?";}' -config $roconf` == "Yes" ] ; then
cliphist wipe
fi
;;
t) echo ""
echo "󰅇 clipboard history"
;;
*) echo "cliphist.sh [action]"
echo "c : cliphist list and copy selected"
echo "d : cliphist list and delete selected"
echo "w : cliphist wipe database"
echo "t : display tooltip"
;;
esac

View File

@ -0,0 +1,29 @@
#!/bin/bash
TMPPCK=$(hyprpicker -a -n)
TMPPST=$(wl-paste)
CMD=$(echo "$TMPPST")
TMP=/tmp/xcolor_$CMD.png
hyprpick() {
$TMPPCK
}
check_dependencies() {
! command -v hyprpicker &>/dev/null &&
notify-send -u critical -a "Color Picker" xcolor-pick "gpick needs to be installed" && exit 1
! command -v magick &>/dev/null &&
notify-send -u critical -a "Color Picker" xcolor-pick "imagemagick needs to be installed" && exit 1
}
main() {
convert -size 120x120 xc:"$CMD" "$TMP"
printf %s "$CMD" | wl-paste
notify-send -a "Color Picker" -i "$TMP" xcolor-pick "$CMD"
}
check_dependencies
hyprpick
main

View File

@ -0,0 +1,5 @@
if [[ $(hyprctl activewindow -j | jq -r ".class") == "Steam" ]]; then
xdotool windowunmap $(xdotool getactivewindow)
else
hyprctl dispatch killactive ""
fi

View File

@ -0,0 +1,14 @@
#!/usr/bin/env sh
HYPRGAMEMODE=$(hyprctl getoption animations:enabled | sed -n '2p' | awk '{print $2}')
if [ $HYPRGAMEMODE = 1 ] ; then
hyprctl --batch "\
keyword animations:enabled 0;\
keyword decoration:drop_shadow 0;\
keyword decoration:blur 0;\
keyword general:gaps_in 0;\
keyword general:gaps_out 0;\
keyword general:border_size 1;\
keyword decoration:rounding 0"
exit
fi
hyprctl reload

View File

@ -0,0 +1,52 @@
#!/usr/bin/env sh
## main script ##
CFGDIR="$HOME/.config"
X_MODE=$1
## check mode ##
if [ "$X_MODE" == "dark" ] || [ "$X_MODE" == "light" ] ; then
S_MODE="$X_MODE"
elif [ "$X_MODE" == "switch" ] ; then
X_MODE=`readlink $CFGDIR/swww/wall.set | awk -F "." '{print $NF}'`
if [ "$X_MODE" == "dark" ] ; then
S_MODE="light"
flatpak --user override --env=GTK_THEME=Catppuccin-Latte
elif [ "$X_MODE" == "light" ] ; then
S_MODE="dark"
flatpak --user override --env=GTK_THEME=Catppuccin-Mocha
else
echo "ERROR: unable to fetch wallpaper mode."
fi
else
echo "ERROR: unknown mode, use 'dark', 'light' or 'switch'."
exit 1
fi
### hyprland ###
ln -fs $CFGDIR/hypr/${S_MODE}.conf $CFGDIR/hypr/theme.conf
hyprctl reload
### swwwallpaper ###
x=`echo $S_MODE | cut -c 1`
$CFGDIR/swww/swwwallpaper.sh -$x
### qt5ct ###
ln -fs $CFGDIR/qt5ct/colors/${S_MODE}.conf $CFGDIR/qt5ct/colors/theme.conf
### rofi ###
ln -fs $CFGDIR/rofi/${S_MODE}.rasi $CFGDIR/rofi/theme.rasi
### kitty ###
ln -fs $CFGDIR/kitty/${S_MODE}.conf $CFGDIR/kitty/theme.conf
killall -SIGUSR1 kitty
### waybar ###
ln -fs $CFGDIR/waybar/${S_MODE}.css $CFGDIR/waybar/style.css
sleep 1
killall -SIGUSR2 waybar

View File

@ -0,0 +1,12 @@
#!/bin/bash
sleep 1
killall xdg-desktop-portal-hyprland
killall xdg-desktop-portal-gnome
killall xdg-desktop-portal-kde
killall xdg-desktop-portal-lxqt
killall xdg-desktop-portal-wlr
killall xdg-desktop-portal
sleep 1
/usr/lib/xdg-desktop-portal-hyprland &
sleep 2
/usr/lib/xdg-desktop-portal &

152
.config/hypr/scripts/screensht Executable file
View File

@ -0,0 +1,152 @@
#!/bin/bash
set -o pipefail
# Directory
_SCREENSHOT_DIR_=$HOME/Pictures/Screenshots
_ORIGINAL_DIR_=$_SCREENSHOT_DIR_/Original
_LOG_FILE_="$_SCREENSHOT_DIR_/.screensht.log"
# Color
_FG_COLOR_='#cdd6f4'
_BG_COLOR_='#f5c2e7'
_BG_SIZE_=10
# Border Size Applied when value greater than or equal 3
_BORDER_SIZE_=0
_SHADOW_SIZE_='100x40+0+16' # [ weight ] x [ radius ] + [ horizontal ] x [ vertical ]
_ROUNDED_CORNER_=8
# Author Config
_AUTHOR_POST_=( 'South' '+0+15' )
_AUTHOR_NAME_=" $USER"
_AUTHOR_COLOR_='#1e1e2e'
# Get Lists Font With "convert -list font | grep -iE 'font:.*' | nl"
_FONT_SIZE_=12
_FONT_='JetBrainsMonoNL-NFM-Bold'
function check() {
if [[ $? -eq 1 && ${PIPESTATUS[0]} -eq 1 ]]; then
_end_job_=$(date +%s)
summary $_start_job_ $_end_job_ 'failed' && dunstify -u critical -t 3000 -a "Screenshot Tool" "Screensht" >> $_LOG_FILE_ 2>&1
exit 1
fi
}
# Check save directory
# Create it if it doesn't exist
function check_dir() {
if [[ ! -d "$_SCREENSHOT_DIR_" || ! -d "$_ORIGINAL_DIR_" ]]; then
mkdir -p "$_SCREENSHOT_DIR_"
mkdir -p "$_ORIGINAL_DIR_"
fi
}
function get_latest_img() {
_LATEST_IMAGE_=$(/bin/ls -th $_SCREENSHOT_DIR_ | grep -vE '.screensht.png$' | grep -E '.png$' | head -n 1)
if [[ $( echo "$_LATEST_IMAGE_" | wc -w ) -eq 0 ]]; then
exit 1
else
_LATEST_IMAGE_="$_SCREENSHOT_DIR_/$_LATEST_IMAGE_"
fi
}
function convert() {
_target_file_=$( echo "$_LATEST_IMAGE_" | sed 's/.png/.screensht.png/g' )
if [[ $_BORDER_SIZE_ -ge 3 ]]; then
magick convert "$_LATEST_IMAGE_" \
-format 'roundrectangle 1,1 %[fx:w+4],%[fx:h+4] '"$_ROUNDED_CORNER_"','"$_ROUNDED_CORNER_"''\
info: > $_SCREENSHOT_DIR_/_rounded_.mvg
check
magick convert "$_LATEST_IMAGE_" -border $_BORDER_SIZE_ -alpha transparent \
-background none -fill white -stroke none -strokewidth 0 \
-draw "@"$_SCREENSHOT_DIR_"/_rounded_.mvg" $_SCREENSHOT_DIR_/_rounded_mask_.png >> $_LOG_FILE_ 2>&1
check
magick convert "$_LATEST_IMAGE_" -border $_BORDER_SIZE_ -alpha transparent \
-background none -fill none -stroke $_FG_COLOR_ -strokewidth $_BORDER_SIZE_ \
-draw "@"$_SCREENSHOT_DIR_"/_rounded_.mvg" $_SCREENSHOT_DIR_/_rounded_overlay_.png >> $_LOG_FILE_ 2>&1
check
magick convert "$_LATEST_IMAGE_" -alpha set -bordercolor none -border $_BORDER_SIZE_ \
$_SCREENSHOT_DIR_/_rounded_mask_.png -compose DstIn -composite \
$_SCREENSHOT_DIR_/_rounded_overlay_.png -compose Over -composite \
"$_target_file_" >> $_LOG_FILE_ 2>&1 && \
rm -f $_SCREENSHOT_DIR_/_rounded_*
check
else
magick convert "$_LATEST_IMAGE_" \( +clone -alpha extract -draw 'fill black polygon 0,0 0,'"$_ROUNDED_CORNER_"' '"$_ROUNDED_CORNER_"',0 fill white circle '"$_ROUNDED_CORNER_"','"$_ROUNDED_CORNER_"' '"$_ROUNDED_CORNER_"',0' \
\( +clone -flip \) -compose Multiply -composite \
\( +clone -flop \) -compose Multiply -composite \
\) -alpha off -compose CopyOpacity -composite -compose over "$_target_file_" >> $_LOG_FILE_ 2>&1
check
fi
magick convert "$_target_file_" \( +clone -background black -shadow $_SHADOW_SIZE_ \) +swap -background none -layers merge +repage "$_target_file_" >> $_LOG_FILE_ 2>&1 \
&& magick convert "$_target_file_" -bordercolor $_BG_COLOR_ -border $_BG_SIZE_ "$_target_file_" >> $_LOG_FILE_ 2>&1
check
echo -en " $_AUTHOR_NAME_ " | magick convert "$_target_file_" -gravity ${_AUTHOR_POST_[0]} -pointsize $_FONT_SIZE_ -fill $_AUTHOR_COLOR_ -undercolor none -font $_FONT_ -annotate ${_AUTHOR_POST_[1]} @- "$_target_file_" \
>> $_LOG_FILE_ 2>&1 && magick convert "$_target_file_" -gravity South -chop 0x$(( $_BG_SIZE_ / 2 )) "$_target_file_" >> $_LOG_FILE_ 2>&1
check
magick convert "$_target_file_" -gravity North -background $_BG_COLOR_ -splice 0x$(( $_BG_SIZE_ / 2 )) "$_target_file_" >> $_LOG_FILE_ 2>&1
check
magick convert "$_target_file_" -profile /usr/share/color/icc/colord/sRGB.icc "$_target_file_" >> $_LOG_FILE_ 2>&1
check
}
function summary() {
_runtime_job_=$(($2-$1))
hours=$((_runtime_job_ / 3600)); minutes=$(( (_runtime_job_ % 3600) / 60 )); seconds=$(( (_runtime_job_ % 3600) % 60 ))
if [[ $3 != "failed" ]]; then
wl-copy < "$_target_file_" >> $_LOG_FILE_ 2>&1
message="${_notif_message_} Runtime: $hours hours, $minutes minutes, $seconds seconds"
dunstify -i "$_target_file_" -t 10000 "Screenshot Tool" "$message" -a "Screenshot Tool"
fi
}
function main() {
check_dir
rm -f $_LOG_FILE_
_start_job_=$(date +%s)
_screenshot_command_="$1"
_notif_message_="$2"
$_screenshot_command_ $_SCREENSHOT_DIR_\/$_start_job_.png> /dev/null 2>&1
check
get_latest_img
convert
mv $_LATEST_IMAGE_ $_ORIGINAL_DIR_
_end_job_=$(date +%s)
summary $_start_job_ $_end_job_
}
# Check the args passed
if [ -z "$1" ] || ([ "$1" != 'full' ] && [ "$1" != 'area' ]);
then
echo "
Requires an argument:
area - Area screenshot
full - Fullscreen screenshot
Example:
./screensht area
./screensht full
"
elif [ "$1" = 'full' ];
then
msg="Full screenshot saved and copied to clipboard!"
main 'grimblast copysave output' "${msg}"
elif [ "$1" = 'area' ];
then
msg='Area screenshot saved and copied to clipboard!'
main 'grimblast copysave area' "${msg}"
fi

View File

@ -0,0 +1,27 @@
#!/usr/bin/env bash
# Check release
if [ ! -f /etc/arch-release ] ; then
exit 0
fi
# Check for updates
aur=$(paru -Qua | wc -l)
ofc=$(pacman -Qu | wc -l)
# Calculate total available updates
upd=$(( ofc + aur ))
echo "$upd"
# Show tooltip
if [ $upd -eq 0 ] ; then
echo " Packages are up to date"
else
echo "󱓽 Official $ofc 󱓾 AUR $aur"
fi
# Trigger upgrade
if [ "$1" == "up" ] ; then
kitty --title systemupdate sh -c 'yay -Syu'
fi

View File

@ -0,0 +1,44 @@
#!/usr/bin/env sh
## set variables ##
BaseDir=`dirname $(realpath $0)`
ConfDir="$HOME/.config"
ThemeCtl="$ConfDir/swww/wall.ctl"
ThumbDir="$ConfDir/swww/Themes-Ctl"
RofiConf="$ConfDir/rofi/themeselect.rasi"
## show and apply theme ##
if [ -z "$1" ] ; then
ThemeSel=$(cat $ThemeCtl | while read line
do
thm=`echo $line | cut -d '|' -f 2`
wal=`echo $line | cut -d '|' -f 3`
echo -en "$thm\x00icon\x1f$ThumbDir/${thm}.png\n"
done | rofi -dmenu -config $RofiConf)
if [ ! -z $ThemeSel ] ; then
${BaseDir}/themeswitch.sh -s $ThemeSel
fi
## regenerate thumbnails ##
elif [ "$1" == "T" ] ; then
echo "refreshing thumbnails..."
cat $ThemeCtl | while read line
do
thm=`echo $line | cut -d '|' -f 2`
wal=`echo $line | cut -d '|' -f 3`
wal=`eval echo $wal`
echo "croping image from wallpaper $ThumbDir/${thm}_tmp.png..."
convert $wal -gravity Center -crop 1080x1080+0+0 $ThumbDir/${thm}_tmp.png
echo "applying rounded corner mask and generating $ThumbDir/${thm}.png..."
#convert -size 1080x1080 xc:none -draw "roundrectangle 0,0,1080,1080,80,80" $ThumbDir/roundedmask.png
convert $ThumbDir/${thm}_tmp.png -matte $ThumbDir/roundedmask.png -compose DstIn -composite $ThumbDir/${thm}.png
rm $ThumbDir/${thm}_tmp.png
done
fi

View File

@ -0,0 +1,114 @@
#!/usr/bin/env sh
## set variables ##
BaseDir=`dirname $(realpath $0)`
ConfDir="$HOME/.config"
ThemeCtl="$ConfDir/swww/wall.ctl"
## evaluate options ##
while getopts "npst" option ; do
case $option in
n ) # set next theme
ThemeSet=`head -1 $ThemeCtl | cut -d '|' -f 2` #default value
flg=0
while read line
do
if [ $flg -eq 1 ] ; then
ThemeSet=`echo $line | cut -d '|' -f 2`
break
elif [ `echo $line | cut -d '|' -f 1` -eq 1 ] ; then
flg=1
fi
done < $ThemeCtl
;;
p ) # set previous theme
ThemeSet=`tail -1 $ThemeCtl | cut -d '|' -f 2` #default value
flg=0
while read line
do
if [ $flg -eq 1 ] ; then
ThemeSet=`echo $line | cut -d '|' -f 2`
break
elif [ `echo $line | cut -d '|' -f 1` -eq 1 ] ; then
flg=1
fi
done < <( tac $ThemeCtl )
export xtrans="outer"
;;
s ) # set selected theme
shift $((OPTIND -1))
ThemeSet=$1
;;
t ) # display tooltip
echo ""
echo "󰆊 Next/Previous Theme"
exit 0 ;;
* ) # invalid option
echo "n : set next theme"
echo "p : set previous theme"
echo "s : set theme from parameter"
echo "t : display tooltip"
exit 1 ;;
esac
done
## update theme control ##
if [ `cat $ThemeCtl | awk -F '|' -v thm=$ThemeSet '{if($2==thm) print$2}' | wc -w` -ne 1 ] ; then
echo "Unknown theme selected: $ThemeSet"
echo "Available themes are:"
cat $ThemeCtl | cut -d '|' -f 2
exit 1
else
echo "Selected theme: $ThemeSet"
sed -i "s/^1/0/g" $ThemeCtl
awk -F '|' -v thm=$ThemeSet '{OFS=FS} {if($2==thm) $1=1; print$0}' $ThemeCtl > $BaseDir/tmp && mv $BaseDir/tmp $ThemeCtl
fi
### swwwallpaper ###
getWall=`grep '^1|' $ThemeCtl | cut -d '|' -f 3`
getWall=`eval echo $getWall`
ln -fs $getWall $ConfDir/swww/wall.set
$ConfDir/swww/swwwallpaper.sh
if [ $? -ne 0 ] ; then
echo "ERROR: Unable to set wallpaper"
exit 1
fi
### kitty ###
ln -fs $ConfDir/kitty/themes/${ThemeSet}.conf $ConfDir/kitty/themes/theme.conf
killall -SIGUSR1 kitty
### qt5ct ###
sed -i "/^color_scheme_path=/c\color_scheme_path=$ConfDir/qt5ct/colors/${ThemeSet}.conf" $ConfDir/qt5ct/qt5ct.conf
IconSet=`awk -F "'" '$0 ~ /gsettings set org.gnome.desktop.interface icon-theme/{print $2}' $ConfDir/hypr/themes/${ThemeSet}.conf`
sed -i "/^icon_theme=/c\icon_theme=${IconSet}" $ConfDir/qt5ct/qt5ct.conf
### flatpak GTK ###
flatpak --user override --env=GTK_THEME="${ThemeSet}"
flatpak --user override --env=ICON_THEME="${IconSet}"
### rofi ###
ln -fs $ConfDir/rofi/themes/${ThemeSet}.rasi $ConfDir/rofi/themes/theme.rasi
### hyprland ###
ln -fs $ConfDir/hypr/themes/${ThemeSet}.conf $ConfDir/hypr/themes/theme.conf
hyprctl reload
### waybar ###
ln -fs $ConfDir/waybar/themes/${ThemeSet}.css $ConfDir/waybar/style.css
sleep 1
killall -SIGUSR2 waybar

View File

@ -0,0 +1,44 @@
#!/usr/bin/env sh
tagVol="notifyvol"
function notify_vol
{
vol=`pamixer --get-volume | cat`
#bar=$(seq -s "─" $(($vol / 5)) | sed 's/[0-9]//g')
#dunstify "${vol}%" "$bar" -a "Volume" -r 91190
sink=`pamixer --get-default-sink | tail -1 | rev | cut -d '"' -f -2 | rev | sed 's/"//'`
mute=`pamixer --get-mute | cat`
angle="$(( (($vol+2)/5) * 5 ))"
ico="~/.config/dunst/iconvol/vol-${angle}.svg"
if [ "$mute" == true ] ; then
dunstify "Muted" -i $ico -a "$sink" -u low -r 91190 -t 800
elif [ $vol -ne 0 ] ; then
dunstify -i $ico -a "$sink" -u low -h string:x-dunst-stack-tag:$tagVol \
-h int:value:"$vol" "Volume: ${vol}%" -r 91190 -t 800
else
dunstify -i $ico "Volume: ${vol}%" -a "$sink" -u low -r 91190 -t 800
fi
}
case $1 in
i) pamixer -i 5
notify_vol
;;
d) pamixer -d 5
notify_vol
;;
m) pamixer -t
notify_vol
;;
*) echo "volumecontrol.sh [action]"
echo "i -- increase volume [+5]"
echo "d -- decrease volume [-5]"
echo "m -- mute [x]"
;;
esac

13
.config/hypr/startup.conf Normal file
View File

@ -0,0 +1,13 @@
# █▀▀ ▀▄▀ █▀▀ █▀▀
# ██▄ █░█ ██▄ █▄▄
exec-once = ~/.config/hypr/scripts/resetxdgportal.sh # reset XDPH for screenshare
exec-once = dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP # for XDPH
exec-once = systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP # for XDPH
exec-once = /usr/lib/polkit-kde-authentication-agent-1 # authentication dialogue for GUI apps
exec-once = wlsunset -t 5200 -S 9:00 -s 19:30 # NightLight from 7.30pm to 9am
exec-once = systemctl --user restart pipewire # Restart pipewire to avoid bugs
exec-once = waybar # launch the system panel
exec-once = dunst # start notification demon
exec-once = wl-paste --type text --watch cliphist store # clipboard store text data
exec-once = wl-paste --type image --watch cliphist store # clipboard store image data
exec-once = swww init || swww img `find $wallpaper_path -type f | shuf -n 1` # Set wallpaper

View File

@ -0,0 +1,64 @@
# █░█░█ █ █▄░█ █▀▄ █▀█ █░█░█   █▀█ █░█ █░░ █▀▀ █▀
# ▀▄▀▄▀ █ █░▀█ █▄▀ █▄█ ▀▄▀▄▀   █▀▄ █▄█ █▄▄ ██▄ ▄█
# Opacity
windowrulev2 = opacity 0.90 0.90,class:^(Brave-browser)$
windowrulev2 = opacity 0.80 0.80,class:^(Steam)$
windowrulev2 = opacity 0.80 0.80,class:^(steam)$
windowrulev2 = opacity 0.80 0.80,class:^(steamwebhelper)$
# windowrulev2 = opacity 0.80 0.80,class:^(Spotify)$
windowrulev2 = opacity 0.80 0.80,class:^(Code)$
windowrulev2 = opacity 0.80 0.80,class:^(thunar)$
windowrulev2 = opacity 0.80 0.80,class:^(file-roller)$
windowrulev2 = opacity 0.80 0.80,class:^(nwg-look)$
windowrulev2 = opacity 0.80 0.80,class:^(qt5ct)$
windowrulev2 = opacity 0.80 0.80,class:^(discord)$ #Discord-Electron
windowrulev2 = opacity 0.80 0.80,class:^(WebCord)$ #WebCord-Electron
windowrulev2 = opacity 0.80 0.70,class:^(pavucontrol)$
windowrulev2 = opacity 0.80 0.70,class:^(org.kde.polkit-kde-authentication-agent-1)$
windowrulev2 = opacity 0.80 0.80,class:^(org.telegram.desktop)$
# Position
windowrulev2 = float,class:^(org.kde.polkit-kde-authentication-agent-1)$
windowrulev2 = float,class:^(pavucontrol)$
windowrulev2 = float,title:^(Media viewer)$
windowrulev2 = float,title:^(Volume Control)$
windowrulev2 = float,title:^(Picture-in-Picture)$
windowrulev2 = float,class:^(Viewnior)$
windowrulev2 = float,title:^(DevTools)$
windowrulev2 = float,class:^(file_progress)$
windowrulev2 = float,class:^(confirm)$
windowrulev2 = float,class:^(dialog)$
windowrulev2 = float,class:^(download)$
windowrulev2 = float,class:^(notification)$
windowrulev2 = float,class:^(error)$
windowrulev2 = float,class:^(confirmreset)$
windowrulev2 = float,title:^(Open File)$
windowrulev2 = float,title:^(branchdialog)$
windowrulev2 = float,title:^(Confirm to replace files)
windowrulev2 = float,title:^(File Operation Progress)
windowrulev2 = move 75 44%,title:^(Volume Control)$
# Workspace
windowrulev2 = workspace 1, class:^(Brave-browser)$
windowrulev2 = workspace 2, class:^(discord)$
windowrulev2 = workspace 3, class:^(org.telegram.desktop)$
windowrulev2 = workspace 4, class:^(Code)$
windowrulev2 = workspace 4, class:^(code-url-handler)$
# windowrulev2 = workspace 5, class:^(Spotify)$
# Size
windowrulev2 = size 800 600,class:^(download)$
windowrulev2 = size 800 600,title:^(Open File)$
windowrulev2 = size 800 600,title:^(Save File)$
windowrulev2 = size 800 600,title:^(Volume Control)$
windowrulev2 = idleinhibit focus,class:^(mpv)$
windowrulev2 = idleinhibit fullscreen,class:^(Brave-browser)$
# xwaylandvideobridge
windowrulev2 = opacity 0.0 override 0.0 override,class:^(xwaylandvideobridge)$
windowrulev2 = noanim,class:^(xwaylandvideobridge)$
windowrulev2 = nofocus,class:^(xwaylandvideobridge)$
windowrulev2 = noinitialfocus,class:^(xwaylandvideobridge)$

View File

@ -0,0 +1,5 @@
[activities]
9f7f092f-4b65-4258-a2f5-987f72134672=Default
[main]
currentActivity=9f7f092f-4b65-4258-a2f5-987f72134672

36
.config/kconf_updaterc Normal file
View File

@ -0,0 +1,36 @@
updateInfoAdded=true
[gtkconfig.upd]
ctime=1720543261
done=gtk_theme,dont_use_gtk_css_for_window_decorations,remove_deprecated_gtk4_option
mtime=1720114484
[kwin.upd]
ctime=1720543262
done=remove_deprecated_gtk4_option,kwin-6.0-reset-active-mouse-screen,kwin-6.0-delete-desktop-switching-shortcuts,kwin-6.0-remove-breeze-tabbox-default,kwin-6.1-remove-gridview-expose-shortcuts
mtime=1720113077
[migrate-calendar-to-plugin-id.upd]
ctime=1720543262
done=kwin-6.1-remove-gridview-expose-shortcuts,migrate-calendar-plugins
mtime=1720113669
[plasma6.0-remove-dpi-settings.upd]
ctime=1720543262
done=migrate-calendar-plugins,plasma6.0-remove-dpi-settings
mtime=1720113669
[plasma6.0-remove-old-shortcuts.upd]
ctime=1720543262
done=plasma6.0-remove-dpi-settings,plasma6.0-remove-old-shortcuts
mtime=1720113669
[plasmashell-6.0-keep-custom-position-of-panels.upd]
ctime=1720543262
done=plasma6.0-remove-old-shortcuts,plasmashell-6.0-keep-custom-position-of-panels
mtime=1720113669
[plasmashell-6.0-keep-default-floating-setting-for-plasma-5-panels.upd]
ctime=1720543262
done=plasmashell-6.0-keep-custom-position-of-panels,plasmashell-6.0-keep-default-floating-setting-for-plasma-5-panels
mtime=1720113669

View File

@ -0,0 +1,30 @@
[Source-applicationVersion]
dataSourceCommonSettings\activeState=true
[Source-locale]
dataSourceCommonSettings\activeState=true
[Source-places]
dataSourceCommonSettings\activeState=true
[Source-platform]
dataSourceCommonSettings\activeState=true
[Source-qtVersion]
dataSourceCommonSettings\activeState=true
[Source-screens]
dataSourceCommonSettings\activeState=true
[Source-settings]
dataSourceCommonSettings\activeState=true
[Source-startCount]
dataSourceCommonSettings\activeState=true
[Source-usageTime]
dataSourceCommonSettings\activeState=true
[UserFeedback]
ApplicationStartCount=2
ApplicationTime=792

8
.config/konsolerc Normal file
View File

@ -0,0 +1,8 @@
[General]
ConfigVersion=1
[MainWindow]
ToolBarsMovable=Disabled
[UiSettings]
ColorScheme=

2
.config/konsolesshconfig Normal file
View File

@ -0,0 +1,2 @@
[Global plugin config]
manageProfile=false

View File

@ -0,0 +1,881 @@
# See this wiki page for more info:
# https://github.com/dylanaraps/neofetch/wiki/Customizing-Info
print_info() {
# info title
# info underline
prin ""
prin "$(color 1)L I N U X | M O B I L E"
prin _____________________
info "" distro
info "" model
# info "" cpu
# info "" gpu
info "" memory
# info "" kernel
info "" packages
# info "" resolution
info "" term
# info "" shell
info "" de
# prin "" "Hyprland"
# info "" locale
# info "" uptime
prin "" "github.com/linuxmobile"
# info "GPU Driver" gpu_driver # Linux/macOS only
# info "CPU Usage" cpu_usage
# info "Disk" disk
# info "Battery" battery
# info "Font" font
# info "Song" song
# [[ "$player" ]] && prin "Music Player" "$player"
# info "Local IP" local_ip
# info "Public IP" public_ip
# info "Users" users
# info "Locale" locale # This only works on glibc systems.
# info cols
prin "$(mypad) $(color 1)▂▂ $(color 2)▂▂ $(color 3)▂▂ $(color 4)▂▂ $(color 5)▂▂ $(color 6)▂▂ $(color 7)▂▂ "
prin _____________________
}
# Title
# Hide/Show Fully qualified domain name.
#
# Default: 'off'
# Values: 'on', 'off'
# Flag: --title_fqdn
title_fqdn="off"
# Kernel
# Shorten the output of the kernel function.
#
# Default: 'on'
# Values: 'on', 'off'
# Flag: --kernel_shorthand
# Supports: Everything except *BSDs (except PacBSD and PC-BSD)
#
# Example:
# on: '4.8.9-1-ARCH'
# off: 'Linux 4.8.9-1-ARCH'
kernel_shorthand="on"
# Distro
# Shorten the output of the distro function
#
# Default: 'off'
# Values: 'on', 'tiny', 'off'
# Flag: --distro_shorthand
# Supports: Everything except Windows and Haiku
distro_shorthand="off"
# Show/Hide OS Architecture.
# Show 'x86_64', 'x86' and etc in 'Distro:' output.
#
# Default: 'on'
# Values: 'on', 'off'
# Flag: --os_arch
#
# Example:
# on: 'Arch Linux x86_64'
# off: 'Arch Linux'
os_arch="off"
# Uptime
# Shorten the output of the uptime function
#
# Default: 'on'
# Values: 'on', 'tiny', 'off'
# Flag: --uptime_shorthand
#
# Example:
# on: '2 days, 10 hours, 3 mins'
# tiny: '2d 10h 3m'
# off: '2 days, 10 hours, 3 minutes'
uptime_shorthand="on"
# Memory
# Show memory pecentage in output.
#
# Default: 'off'
# Values: 'on', 'off'
# Flag: --memory_percent
#
# Example:
# on: '1801MiB / 7881MiB (22%)'
# off: '1801MiB / 7881MiB'
memory_percent="off"
# Change memory output unit.
#
# Default: 'mib'
# Values: 'kib', 'mib', 'gib'
# Flag: --memory_unit
#
# Example:
# kib '1020928KiB / 7117824KiB'
# mib '1042MiB / 6951MiB'
# gib: ' 0.98GiB / 6.79GiB'
memory_unit="mib"
# Packages
# Show/Hide Package Manager names.
#
# Default: 'tiny'
# Values: 'on', 'tiny' 'off'
# Flag: --package_managers
#
# Example:
# on: '998 (pacman), 8 (flatpak), 4 (snap)'
# tiny: '908 (pacman, flatpak, snap)'
# off: '908'
package_managers="on"
# Shell
# Show the path to $SHELL
#
# Default: 'off'
# Values: 'on', 'off'
# Flag: --shell_path
#
# Example:
# on: '/bin/bash'
# off: 'bash'
shell_path="off"
# Show $SHELL version
#
# Default: 'on'
# Values: 'on', 'off'
# Flag: --shell_version
#
# Example:
# on: 'bash 4.4.5'
# off: 'bash'
shell_version="on"
# CPU
# CPU speed type
#
# Default: 'bios_limit'
# Values: 'scaling_cur_freq', 'scaling_min_freq', 'scaling_max_freq', 'bios_limit'.
# Flag: --speed_type
# Supports: Linux with 'cpufreq'
# NOTE: Any file in '/sys/devices/system/cpu/cpu0/cpufreq' can be used as a value.
speed_type="bios_limit"
# CPU speed shorthand
#
# Default: 'off'
# Values: 'on', 'off'.
# Flag: --speed_shorthand
# NOTE: This flag is not supported in systems with CPU speed less than 1 GHz
#
# Example:
# on: 'i7-6500U (4) @ 3.1GHz'
# off: 'i7-6500U (4) @ 3.100GHz'
speed_shorthand="off"
# Enable/Disable CPU brand in output.
#
# Default: 'on'
# Values: 'on', 'off'
# Flag: --cpu_brand
#
# Example:
# on: 'Intel i7-6500U'
# off: 'i7-6500U (4)'
cpu_brand="on"
# CPU Speed
# Hide/Show CPU speed.
#
# Default: 'on'
# Values: 'on', 'off'
# Flag: --cpu_speed
#
# Example:
# on: 'Intel i7-6500U (4) @ 3.1GHz'
# off: 'Intel i7-6500U (4)'
cpu_speed="on"
# CPU Cores
# Display CPU cores in output
#
# Default: 'logical'
# Values: 'logical', 'physical', 'off'
# Flag: --cpu_cores
# Support: 'physical' doesn't work on BSD.
#
# Example:
# logical: 'Intel i7-6500U (4) @ 3.1GHz' (All virtual cores)
# physical: 'Intel i7-6500U (2) @ 3.1GHz' (All physical cores)
# off: 'Intel i7-6500U @ 3.1GHz'
cpu_cores="logical"
# CPU Temperature
# Hide/Show CPU temperature.
# Note the temperature is added to the regular CPU function.
#
# Default: 'off'
# Values: 'C', 'F', 'off'
# Flag: --cpu_temp
# Supports: Linux, BSD
# NOTE: For FreeBSD and NetBSD-based systems, you'll need to enable
# coretemp kernel module. This only supports newer Intel processors.
#
# Example:
# C: 'Intel i7-6500U (4) @ 3.1GHz [27.2°C]'
# F: 'Intel i7-6500U (4) @ 3.1GHz [82.0°F]'
# off: 'Intel i7-6500U (4) @ 3.1GHz'
cpu_temp="off"
# GPU
# Enable/Disable GPU Brand
#
# Default: 'on'
# Values: 'on', 'off'
# Flag: --gpu_brand
#
# Example:
# on: 'AMD HD 7950'
# off: 'HD 7950'
gpu_brand="on"
# Which GPU to display
#
# Default: 'all'
# Values: 'all', 'dedicated', 'integrated'
# Flag: --gpu_type
# Supports: Linux
#
# Example:
# all:
# GPU1: AMD HD 7950
# GPU2: Intel Integrated Graphics
#
# dedicated:
# GPU1: AMD HD 7950
#
# integrated:
# GPU1: Intel Integrated Graphics
gpu_type="all"
# Resolution
# Display refresh rate next to each monitor
# Default: 'off'
# Values: 'on', 'off'
# Flag: --refresh_rate
# Supports: Doesn't work on Windows.
#
# Example:
# on: '1920x1080 @ 60Hz'
# off: '1920x1080'
refresh_rate="off"
# Gtk Theme / Icons / Font
# Shorten output of GTK Theme / Icons / Font
#
# Default: 'off'
# Values: 'on', 'off'
# Flag: --gtk_shorthand
#
# Example:
# on: 'Numix, Adwaita'
# off: 'Numix [GTK2], Adwaita [GTK3]'
gtk_shorthand="off"
# Enable/Disable gtk2 Theme / Icons / Font
#
# Default: 'on'
# Values: 'on', 'off'
# Flag: --gtk2
#
# Example:
# on: 'Numix [GTK2], Adwaita [GTK3]'
# off: 'Adwaita [GTK3]'
gtk2="on"
# Enable/Disable gtk3 Theme / Icons / Font
#
# Default: 'on'
# Values: 'on', 'off'
# Flag: --gtk3
#
# Example:
# on: 'Numix [GTK2], Adwaita [GTK3]'
# off: 'Numix [GTK2]'
gtk3="on"
# IP Address
# Website to ping for the public IP
#
# Default: 'http://ident.me'
# Values: 'url'
# Flag: --ip_host
public_ip_host="http://ident.me"
# Public IP timeout.
#
# Default: '2'
# Values: 'int'
# Flag: --ip_timeout
public_ip_timeout=2
# Desktop Environment
# Show Desktop Environment version
#
# Default: 'on'
# Values: 'on', 'off'
# Flag: --de_version
de_version="on"
# Disk
# Which disks to display.
# The values can be any /dev/sdXX, mount point or directory.
# NOTE: By default we only show the disk info for '/'.
#
# Default: '/'
# Values: '/', '/dev/sdXX', '/path/to/drive'.
# Flag: --disk_show
#
# Example:
# disk_show=('/' '/dev/sdb1'):
# 'Disk (/): 74G / 118G (66%)'
# 'Disk (/mnt/Videos): 823G / 893G (93%)'
#
# disk_show=('/'):
# 'Disk (/): 74G / 118G (66%)'
#
disk_show=('/')
# Disk subtitle.
# What to append to the Disk subtitle.
#
# Default: 'mount'
# Values: 'mount', 'name', 'dir', 'none'
# Flag: --disk_subtitle
#
# Example:
# name: 'Disk (/dev/sda1): 74G / 118G (66%)'
# 'Disk (/dev/sdb2): 74G / 118G (66%)'
#
# mount: 'Disk (/): 74G / 118G (66%)'
# 'Disk (/mnt/Local Disk): 74G / 118G (66%)'
# 'Disk (/mnt/Videos): 74G / 118G (66%)'
#
# dir: 'Disk (/): 74G / 118G (66%)'
# 'Disk (Local Disk): 74G / 118G (66%)'
# 'Disk (Videos): 74G / 118G (66%)'
#
# none: 'Disk: 74G / 118G (66%)'
# 'Disk: 74G / 118G (66%)'
# 'Disk: 74G / 118G (66%)'
disk_subtitle="mount"
# Disk percent.
# Show/Hide disk percent.
#
# Default: 'on'
# Values: 'on', 'off'
# Flag: --disk_percent
#
# Example:
# on: 'Disk (/): 74G / 118G (66%)'
# off: 'Disk (/): 74G / 118G'
disk_percent="on"
# Song
# Manually specify a music player.
#
# Default: 'auto'
# Values: 'auto', 'player-name'
# Flag: --music_player
#
# Available values for 'player-name':
#
# amarok
# audacious
# banshee
# bluemindo
# clementine
# cmus
# deadbeef
# deepin-music
# dragon
# elisa
# exaile
# gnome-music
# gmusicbrowser
# gogglesmm
# guayadeque
# io.elementary.music
# iTunes
# juk
# lollypop
# mocp
# mopidy
# mpd
# muine
# netease-cloud-music
# olivia
# playerctl
# pogo
# pragha
# qmmp
# quodlibet
# rhythmbox
# sayonara
# smplayer
# spotify
# strawberry
# tauonmb
# tomahawk
# vlc
# xmms2d
# xnoise
# yarock
music_player="auto"
# Format to display song information.
#
# Default: '%artist% - %album% - %title%'
# Values: '%artist%', '%album%', '%title%'
# Flag: --song_format
#
# Example:
# default: 'Song: Jet - Get Born - Sgt Major'
song_format="%artist% - %album% - %title%"
# Print the Artist, Album and Title on separate lines
#
# Default: 'off'
# Values: 'on', 'off'
# Flag: --song_shorthand
#
# Example:
# on: 'Artist: The Fratellis'
# 'Album: Costello Music'
# 'Song: Chelsea Dagger'
#
# off: 'Song: The Fratellis - Costello Music - Chelsea Dagger'
song_shorthand="off"
# 'mpc' arguments (specify a host, password etc).
#
# Default: ''
# Example: mpc_args=(-h HOST -P PASSWORD)
mpc_args=()
# Text Colors
# Text Colors
#
# Default: 'distro'
# Values: 'distro', 'num' 'num' 'num' 'num' 'num' 'num'
# Flag: --colors
#
# Each number represents a different part of the text in
# this order: 'title', '@', 'underline', 'subtitle', 'colon', 'info'
#
# Example:
# colors=(distro) - Text is colored based on Distro colors.
# colors=(4 6 1 8 8 6) - Text is colored in the order above.
colors=(distro)
# Text Options
# Toggle bold text
#
# Default: 'on'
# Values: 'on', 'off'
# Flag: --bold
bold="on"
# Enable/Disable Underline
#
# Default: 'on'
# Values: 'on', 'off'
# Flag: --underline
underline_enabled="on"
# Underline character
#
# Default: '-'
# Values: 'string'
# Flag: --underline_char
underline_char="-"
# Info Separator
# Replace the default separator with the specified string.
#
# Default: ':'
# Flag: --separator
#
# Example:
# separator="->": 'Shell-> bash'
# separator=" =": 'WM = dwm'
separator=""
# Color Blocks
# Color block range
# The range of colors to print.
#
# Default: '0', '15'
# Values: 'num'
# Flag: --block_range
#
# Example:
#
# Display colors 0-7 in the blocks. (8 colors)
# neofetch --block_range 0 7
#
# Display colors 0-15 in the blocks. (16 colors)
# neofetch --block_range 0 15
block_range=(0 15)
# Toggle color blocks
#
# Default: 'on'
# Values: 'on', 'off'
# Flag: --color_blocks
color_blocks="on"
# Color block width in spaces
#
# Default: '3'
# Values: 'num'
# Flag: --block_width
block_width=3
# Color block height in lines
#
# Default: '1'
# Values: 'num'
# Flag: --block_height
block_height=1
# Color Alignment
#
# Default: 'auto'
# Values: 'auto', 'num'
# Flag: --col_offset
#
# Number specifies how far from the left side of the terminal (in spaces) to
# begin printing the columns, in case you want to e.g. center them under your
# text.
# Example:
# col_offset="auto" - Default behavior of neofetch
# col_offset=7 - Leave 7 spaces then print the colors
col_offset="auto"
# Progress Bars
# Bar characters
#
# Default: '-', '='
# Values: 'string', 'string'
# Flag: --bar_char
#
# Example:
# neofetch --bar_char 'elapsed' 'total'
# neofetch --bar_char '-' '='
bar_char_elapsed="-"
bar_char_total="="
# Toggle Bar border
#
# Default: 'on'
# Values: 'on', 'off'
# Flag: --bar_border
bar_border="on"
# Progress bar length in spaces
# Number of chars long to make the progress bars.
#
# Default: '15'
# Values: 'num'
# Flag: --bar_length
bar_length=15
# Progress bar colors
# When set to distro, uses your distro's logo colors.
#
# Default: 'distro', 'distro'
# Values: 'distro', 'num'
# Flag: --bar_colors
#
# Example:
# neofetch --bar_colors 3 4
# neofetch --bar_colors distro 5
bar_color_elapsed="distro"
bar_color_total="distro"
# Info display
# Display a bar with the info.
#
# Default: 'off'
# Values: 'bar', 'infobar', 'barinfo', 'off'
# Flags: --cpu_display
# --memory_display
# --battery_display
# --disk_display
#
# Example:
# bar: '[---=======]'
# infobar: 'info [---=======]'
# barinfo: '[---=======] info'
# off: 'info'
cpu_display="off"
memory_display="off"
battery_display="off"
disk_display="off"
# Backend Settings
# Image backend.
#
# Default: 'ascii'
# Values: 'ascii', 'caca', 'chafa', 'jp2a', 'iterm2', 'off',
# 'pot', 'termpix', 'pixterm', 'tycat', 'w3m', 'kitty'
# Flag: --backend
image_backend="iterm2"
# Image Source
#
# Which image or ascii file to display.
#
# Default: 'auto'
# Values: 'auto', 'ascii', 'wallpaper', '/path/to/img', '/path/to/ascii', '/path/to/dir/'
# 'command output (neofetch --ascii "$(fortune | cowsay -W 30)")'
# Flag: --source
#
# NOTE: 'auto' will pick the best image source for whatever image backend is used.
# In ascii mode, distro ascii art will be used and in an image mode, your
# wallpaper will be used.
#image_source="auto"
image_source="${HOME}/.config/neofetch/images/pink.jpg"
#image_source="${HOME}/.config/neofetch/images/arch.png"
#image_source="${HOME}/.config/neofetch/images/arch_dark.png"
#image_source="${HOME}/.config/neofetch/images/artix.png"
#image_source="${HOME}/.config/neofetch/images/bedrock.png"
#image_source="${HOME}/.config/neofetch/images/gentoo.png"
#image_source="${HOME}/.config/neofetch/images/gentoo_dark.png"
#image_source="${HOME}/.config/neofetch/images/lofi.png"
#image_source="${HOME}/.config/neofetch/images/loli.png"
#image_source="${HOME}/.config/neofetch/images/lolix.png"
#image_source="${HOME}/.config/neofetch/images/sakura.png"
#image_source="${HOME}/.config/neofetch/images/ubuntu.png"
#image_source="${HOME}/.config/neofetch/images/ubuntu_dark.png"
#image_source="${HOME}/.config/neofetch/images/void.png"
#image_source="${HOME}/.config/neofetch/images/void_dark.png"
# Ascii Options
# Ascii distro
# Which distro's ascii art to display.
#
# Default: 'auto'
# Values: 'auto', 'distro_name'
# Flag: --ascii_distro
# NOTE: AIX, Alpine, Anarchy, Android, Antergos, antiX, "AOSC OS",
# "AOSC OS/Retro", Apricity, ArcoLinux, ArchBox, ARCHlabs,
# ArchStrike, XFerience, ArchMerge, Arch, Artix, Arya, Bedrock,
# Bitrig, BlackArch, BLAG, BlankOn, BlueLight, bonsai, BSD,
# BunsenLabs, Calculate, Carbs, CentOS, Chakra, ChaletOS,
# Chapeau, Chrom*, Cleanjaro, ClearOS, Clear_Linux, Clover,
# Condres, Container_Linux, CRUX, Cucumber, Debian, Deepin,
# DesaOS, Devuan, DracOS, DarkOs, DragonFly, Drauger, Elementary,
# EndeavourOS, Endless, EuroLinux, Exherbo, Fedora, Feren, FreeBSD,
# FreeMiNT, Frugalware, Funtoo, GalliumOS, Garuda, Gentoo, Pentoo,
# gNewSense, GNOME, GNU, GoboLinux, Grombyang, Guix, Haiku, Huayra,
# Hyperbola, janus, Kali, KaOS, KDE_neon, Kibojoe, Kogaion,
# Korora, KSLinux, Kubuntu, LEDE, LFS, Linux_Lite,
# LMDE, Lubuntu, Lunar, macos, Mageia, MagpieOS, Mandriva,
# Manjaro, Maui, Mer, Minix, LinuxMint, MX_Linux, Namib,
# Neptune, NetBSD, Netrunner, Nitrux, NixOS, Nurunner,
# NuTyX, OBRevenge, OpenBSD, openEuler, OpenIndiana, openmamba,
# OpenMandriva, OpenStage, OpenWrt, osmc, Oracle, OS Elbrus, PacBSD,
# Parabola, Pardus, Parrot, Parsix, TrueOS, PCLinuxOS, Peppermint,
# popos, Porteus, PostMarketOS, Proxmox, Puppy, PureOS, Qubes, Radix,
# Raspbian, Reborn_OS, Redstar, Redcore, Redhat, Refracted_Devuan,
# Regata, Rosa, sabotage, Sabayon, Sailfish, SalentOS, Scientific,
# Septor, SereneLinux, SharkLinux, Siduction, Slackware, SliTaz,
# SmartOS, Solus, Source_Mage, Sparky, Star, SteamOS, SunOS,
# openSUSE_Leap, openSUSE_Tumbleweed, openSUSE, SwagArch, Tails,
# Trisquel, Ubuntu-Budgie, Ubuntu-GNOME, Ubuntu-MATE, Ubuntu-Studio,
# Ubuntu, Venom, Void, Obarun, windows10, Windows7, Xubuntu, Zorin,
# and IRIX have ascii logos
# NOTE: Arch, Ubuntu, Redhat, and Dragonfly have 'old' logo variants.
# Use '{distro name}_old' to use the old logos.
# NOTE: Ubuntu has flavor variants.
# Change this to Lubuntu, Kubuntu, Xubuntu, Ubuntu-GNOME,
# Ubuntu-Studio, Ubuntu-Mate or Ubuntu-Budgie to use the flavors.
# NOTE: Arcolinux, Dragonfly, Fedora, Alpine, Arch, Ubuntu,
# CRUX, Debian, Gentoo, FreeBSD, Mac, NixOS, OpenBSD, android,
# Antrix, CentOS, Cleanjaro, ElementaryOS, GUIX, Hyperbola,
# Manjaro, MXLinux, NetBSD, Parabola, POP_OS, PureOS,
# Slackware, SunOS, LinuxLite, OpenSUSE, Raspbian,
# postmarketOS, and Void have a smaller logo variant.
# Use '{distro name}_small' to use the small variants.
ascii_distro="auto"
# Ascii Colors
#
# Default: 'distro'
# Values: 'distro', 'num' 'num' 'num' 'num' 'num' 'num'
# Flag: --ascii_colors
#
# Example:
# ascii_colors=(distro) - Ascii is colored based on Distro colors.
# ascii_colors=(4 6 1 8 8 6) - Ascii is colored using these colors.
ascii_colors=(distro)
# Bold ascii logo
# Whether or not to bold the ascii logo.
#
# Default: 'on'
# Values: 'on', 'off'
# Flag: --ascii_bold
ascii_bold="on"
# Image Options
# Image loop
# Setting this to on will make neofetch redraw the image constantly until
# Ctrl+C is pressed. This fixes display issues in some terminal emulators.
#
# Default: 'off'
# Values: 'on', 'off'
# Flag: --loop
image_loop="on"
# Thumbnail directory
#
# Default: '~/.cache/thumbnails/neofetch'
# Values: 'dir'
thumbnail_dir="${XDG_CACHE_HOME:-${HOME}/.cache}/thumbnails/neofetch"
# Crop mode
#
# Default: 'normal'
# Values: 'normal', 'fit', 'fill'
# Flag: --crop_mode
#
# See this wiki page to learn about the fit and fill options.
# https://github.com/dylanaraps/neofetch/wiki/What-is-Waifu-Crop%3F
crop_mode="normal"
# Crop offset
# Note: Only affects 'normal' crop mode.
#
# Default: 'center'
# Values: 'northwest', 'north', 'northeast', 'west', 'center'
# 'east', 'southwest', 'south', 'southeast'
# Flag: --crop_offset
crop_offset="center"
# Image size
# The image is half the terminal width by default.
#
# Default: 'auto'
# Values: 'auto', '00px', '00%', 'none'
# Flags: --image_size
# --size
image_size="220px"
# Gap between image and text
#
# Default: '3'
# Values: 'num', '-num'
# Flag: --gap
gap=4
# Image offsets
# Only works with the w3m backend.
#
# Default: '0'
# Values: 'px'
# Flags: --xoffset
# --yoffset
yoffset=0
xoffset=0
# Image background color
# Only works with the w3m backend.
#
# Default: ''
# Values: 'color', 'blue'
# Flag: --bg_color
background_color=
# Misc Options
# Stdout mode
# Turn off all colors and disables image backend (ASCII/Image).
# Useful for piping into another command.
# Default: 'off'
# Values: 'on', 'off'
stdout="off"

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 434 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 642 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 757 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 219 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

1
.config/nvim Submodule

@ -0,0 +1 @@
Subproject commit 76464a29389571e1c31b5a6516357c06c0b5de4f

6
.config/nwg-look/config Normal file
View File

@ -0,0 +1,6 @@
{
"export-settings-ini": true,
"export-gtkrc-20": true,
"export-index-theme": true,
"export-xsettingsd": true
}

8
.config/pavucontrol.ini Normal file
View File

@ -0,0 +1,8 @@
[window]
width=500
height=400
sinkInputType=1
sourceOutputType=1
sinkType=0
sourceType=1
showVolumeMeters=1

View File

@ -0,0 +1,33 @@
context.modules = [
{ name = libpipewire-module-filter-chain
args = {
node.description = "Noise Canceling source"
media.name = "Noise Canceling source"
filter.graph = {
nodes = [
{
type = ladspa
name = rnnoise
plugin = /lib/ladspa/librnnoise_ladspa.so
label = noise_suppressor_mono
control = {
"VAD Threshold (%)" = 90.0
"VAD Grace Period (ms)" = 150
"Retroactive VAD Grace (ms)" = 0
}
}
]
}
capture.props = {
node.name = "capture.rnnoise_source"
node.passive = true
audio.rate = 48000
}
playback.props = {
node.name = "rnnoise_source"
media.class = Audio/Source
audio.rate = 48000
}
}
}
]

BIN
.config/pulse/cookie Normal file

Binary file not shown.

View File

@ -0,0 +1,4 @@
[ColorScheme]
active_colors=#ffcdd6f4, #ff1e1e2e, #ffa6adc8, #ff9399b2, #ff45475a, #ff6c7086, #ffcdd6f4, #ffcdd6f4, #ffcdd6f4, #ff1e1e2e, #ff181825, #ff7f849c, #ff89b4fa, #ff1e1e2e, #ff89b4fa, #fff38ba8, #ff1e1e2e, #ffcdd6f4, #ff11111b, #ffcdd6f4, #807f849c
disabled_colors=#ffa6adc8, #ff1e1e2e, #ffa6adc8, #ff9399b2, #ff45475a, #ff6c7086, #ffa6adc8, #ffa6adc8, #ffa6adc8, #ff1e1e2e, #ff11111b, #ff7f849c, #ff89b4fa, #ff45475a, #ff89b4fa, #fff38ba8, #ff1e1e2e, #ffcdd6f4, #ff11111b, #ffcdd6f4, #807f849c
inactive_colors=#ffcdd6f4, #ff1e1e2e, #ffa6adc8, #ff9399b2, #ff45475a, #ff6c7086, #ffcdd6f4, #ffcdd6f4, #ffcdd6f4, #ff1e1e2e, #ff181825, #ff7f849c, #ff89b4fa, #ffa6adc8, #ff89b4fa, #fff38ba8, #ff1e1e2e, #ffcdd6f4, #ff11111b, #ffcdd6f4, #807f849c

31
.config/qt5ct/qt5ct.conf Normal file
View File

@ -0,0 +1,31 @@
[Appearance]
color_scheme_path=/home/linuxmobile/.config/qt5ct/colors/Catppuccin-Mocha.conf
custom_palette=true
standard_dialogs=default
style=kvantum-dark
[Fonts]
fixed="Noto Sans,12,-1,5,50,0,0,0,0,0"
general="Noto Sans,12,-1,5,50,0,0,0,0,0"
[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=@Invalid()
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\x4\v\0\0\0\0\0\0\0\0\0\0\x3\xbf\0\0\x4\x1b\0\0\0\0\x2\0\0\0\a\x80\0\0\0\0\0\0\0\0\0\0\x3\xb2\0\0\x4\v)
[Troubleshooting]
force_raster_widgets=1
ignored_applications=@Invalid()

31
.config/qt6ct/qt6ct.conf Normal file
View File

@ -0,0 +1,31 @@
[Appearance]
color_scheme_path=/usr/share/qt6ct/colors/airy.conf
custom_palette=false
standard_dialogs=default
style=kvantum-dark
[Fonts]
fixed="Noto Sans,12,-1,5,400,0,0,0,0,0,0,0,0,0,0,1"
general="Noto Sans,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=@Invalid()
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\ao\0\0\x4\v\0\0\0\0\0\0\0\0\0\0\a\x7f\0\0\x4\x37\0\0\0\0\x2\0\0\0\a\x80\0\0\0\0\0\0\0\0\0\0\ao\0\0\x4\v)
[Troubleshooting]
force_raster_widgets=1
ignored_applications=@Invalid()

1993
.config/ranger/commands.py Normal file

File diff suppressed because it is too large Load Diff

View File

View File

@ -0,0 +1,15 @@
import os
import ranger.api
from ranger.core.linemode import LinemodeBase
from .devicons import *
SEPARATOR = os.getenv('RANGER_DEVICONS_SEPARATOR', ' ')
@ranger.api.register_linemode
class DevIconsLinemode(LinemodeBase):
name = "devicons"
uses_metadata = False
def filetitle(self, file, metadata):
return devicon(file) + SEPARATOR + file.relative_path

View File

@ -0,0 +1,379 @@
#!/usr/bin/python
# coding=UTF-8
# These glyphs, and the mapping of file extensions to glyphs
# has been copied from the vimscript code that is present in
# https://github.com/ryanoasis/vim-devicons
import re;
import os;
# Get the XDG_USER_DIRS directory names from enviromental variables
xdgs_dirs = {path.split('/')[-2]: icon for key, icon in [
('XDG_DOCUMENTS_DIR' , ''),
('XDG_DOWNLOAD_DIR' , ''),
('XDG_CONFIG_DIR' , ''),
('XDG_MUSIC_DIR' , ''),
('XDG_PICTURES_DIR' , ''),
('XDG_PUBLICSHARE_DIR', ''),
('XDG_TEMPLATES_DIR' , ''),
('XDG_VIDEOS_DIR' , ''),
] if (path := os.getenv(key))}
# all those glyphs will show as weird squares if you don't have the correct patched font
# My advice is to use NerdFonts which can be found here:
# https://github.com/ryanoasis/nerd-fonts
file_node_extensions = {
'7z' : '',
'a' : '',
'ai' : '',
'apk' : '',
'asm' : '',
'asp' : '',
'aup' : '',
'avi' : '',
'awk' : '',
'bash' : '',
'bat' : '',
'bmp' : '',
'bz2' : '',
'c' : '',
'c++' : '',
'cab' : '',
'cbr' : '',
'cbz' : '',
'cc' : '',
'class' : '',
'clj' : '',
'cljc' : '',
'cljs' : '',
'cmake' : '',
'coffee' : '',
'conf' : '',
'cp' : '',
'cpio' : '',
'cpp' : '',
'cs' : '',
'csh' : '',
'css' : '',
'cue' : '',
'cvs' : '',
'cxx' : '',
'd' : '',
'dart' : '',
'db' : '',
'deb' : '',
'diff' : '',
'dll' : '',
'doc' : '',
'docx' : '',
'dump' : '',
'edn' : '',
'eex' : '',
'efi' : '',
'ejs' : '',
'elf' : '',
'elm' : '',
'epub' : '',
'erl' : '',
'ex' : '',
'exe' : '',
'exs' : '',
'f#' : '',
'fifo' : '',
'fish' : '',
'flac' : '',
'flv' : '',
'fs' : '',
'fsi' : '',
'fsscript' : '',
'fsx' : '',
'gem' : '',
'gemspec' : '',
'gif' : '',
'go' : '',
'gz' : '',
'gzip' : '',
'h' : '',
'haml' : '',
'hbs' : '',
'hh' : '',
'hpp' : '',
'hrl' : '',
'hs' : '',
'htaccess' : '',
'htm' : '',
'html' : '',
'htpasswd' : '',
'hxx' : '',
'ico' : '',
'img' : '',
'ini' : '',
'iso' : '',
'jar' : '',
'java' : '',
'jl' : '',
'jpeg' : '',
'jpg' : '',
'js' : '',
'json' : '',
'jsx' : '',
'key' : '',
'ksh' : '',
'leex' : '',
'less' : '',
'lha' : '',
'lhs' : '',
'log' : '',
'lua' : '',
'lzh' : '',
'lzma' : '',
'm4a' : '',
'm4v' : '',
'markdown' : '',
'md' : '',
'mdx' : '',
'mjs' : '',
'mkv' : '',
'ml' : 'λ',
'mli' : 'λ',
'mov' : '',
'mp3' : '',
'mp4' : '',
'mpeg' : '',
'mpg' : '',
'msi' : '',
'mustache' : '',
'nix' : '',
'o' : '',
'ogg' : '',
'pdf' : '',
'php' : '',
'pl' : '',
'pm' : '',
'png' : '',
'pp' : '',
'ppt' : '',
'pptx' : '',
'ps1' : '',
'psb' : '',
'psd' : '',
'pub' : '',
'py' : '',
'pyc' : '',
'pyd' : '',
'pyo' : '',
'r' : '',
'rake' : '',
'rar' : '',
'rb' : '',
'rc' : '',
'rlib' : '',
'rmd' : '',
'rom' : '',
'rpm' : '',
'rproj' : '',
'rs' : '',
'rss' : '',
'rtf' : '',
's' : '',
'sass' : '',
'scala' : '',
'scss' : '',
'sh' : '',
'slim' : '',
'sln' : '',
'so' : '',
'sql' : '',
'styl' : '',
'suo' : '',
'swift' : '',
't' : '',
'tar' : '',
'tex' : '',
'tgz' : '',
'toml' : '',
'ts' : '',
'tsx' : '',
'twig' : '',
'vim' : '',
'vimrc' : '',
'vue' : '',
'wav' : '',
'webm' : '',
'webmanifest' : '',
'webp' : '',
'xbps' : '',
'xcplayground' : '',
'xhtml' : '',
'xls' : '',
'xlsx' : '',
'xml' : '',
'xul' : '',
'xz' : '',
'yaml' : '',
'yml' : '',
'zip' : '',
'zsh' : '',
}
dir_node_exact_matches = {
# English
'.git' : '',
'Desktop' : '',
'Documents' : '',
'Downloads' : '',
'Dotfiles' : '',
'Dropbox' : '',
'Music' : '',
'Pictures' : '',
'Public' : '',
'Templates' : '',
'Videos' : '',
# Spanish
'Escritorio' : '',
'Documentos' : '',
'Descargas' : '',
'Música' : '',
'Imágenes' : '',
'Público' : '',
'Plantillas' : '',
'Vídeos' : '',
# French
'Bureau' : '',
'Documents' : '',
'Images' : '',
'Musique' : '',
'Publique' : '',
'Téléchargements' : '',
'Vidéos' : '',
# Portuguese
'Documentos' : '',
'Imagens' : '',
'Modelos' : '',
'Música' : '',
'Público' : '',
'Vídeos' : '',
'Área de trabalho' : '',
# Italian
'Documenti' : '',
'Immagini' : '',
'Modelli' : '',
'Musica' : '',
'Pubblici' : '',
'Scaricati' : '',
'Scrivania' : '',
'Video' : '',
# German
'Bilder' : '',
'Dokumente' : '',
'Musik' : '',
'Schreibtisch' : '',
'Vorlagen' : '',
'Öffentlich' : '',
# Hungarian
'Dokumentumok' : '',
'Képek' : '',
'Modelli' : '',
'Zene' : '',
'Letöltések' : '',
'Számítógép' : '',
'Videók' : '',
# XDG_USER_DIRS
**xdgs_dirs
}
file_node_exact_matches = {
'.bash_aliases' : '',
'.bash_history' : '',
'.bash_logout' : '',
'.bash_profile' : '',
'.bashprofile' : '',
'.bashrc' : '',
'.dmrc' : '',
'.DS_Store' : '',
'.fasd' : '',
'.fehbg' : '',
'.gitattributes' : '',
'.gitconfig' : '',
'.gitignore' : '',
'.gitlab-ci.yml' : '',
'.gvimrc' : '',
'.inputrc' : '',
'.jack-settings' : '',
'.mime.types' : '',
'.ncmpcpp' : '',
'.nvidia-settings-rc' : '',
'.pam_environment' : '',
'.profile' : '',
'.recently-used' : '',
'.selected_editor' : '',
'.vim' : '',
'.viminfo' : '',
'.vimrc' : '',
'.Xauthority' : '',
'.Xdefaults' : '',
'.xinitrc' : '',
'.xinputrc' : '',
'.Xresources' : '',
'.zshrc' : '',
'_gvimrc' : '',
'_vimrc' : '',
'a.out' : '',
'authorized_keys' : '',
'bspwmrc' : '',
'cmakelists.txt' : '',
'config' : '',
'config.ac' : '',
'config.m4' : '',
'config.mk' : '',
'config.ru' : '',
'configure' : '',
'docker-compose.yml' : '',
'dockerfile' : '',
'Dockerfile' : '',
'dropbox' : '',
'exact-match-case-sensitive-1.txt' : 'X1',
'exact-match-case-sensitive-2' : 'X2',
'favicon.ico' : '',
'gemfile' : '',
'gruntfile.coffee' : '',
'gruntfile.js' : '',
'gruntfile.ls' : '',
'gulpfile.coffee' : '',
'gulpfile.js' : '',
'gulpfile.ls' : '',
'ini' : '',
'known_hosts' : '',
'ledger' : '',
'license' : '',
'LICENSE' : '',
'LICENSE.md' : '',
'LICENSE.txt' : '',
'Makefile' : '',
'makefile' : '',
'Makefile.ac' : '',
'Makefile.in' : '',
'mimeapps.list' : '',
'mix.lock' : '',
'node_modules' : '',
'package-lock.json' : '',
'package.json' : '',
'playlists' : '',
'procfile' : '',
'Rakefile' : '',
'rakefile' : '',
'react.jsx' : '',
'README' : '',
'README.markdown' : '',
'README.md' : '',
'README.rst' : '',
'README.txt' : '',
'sxhkdrc' : '',
'user-dirs.dirs' : '',
'webpack.config.js' : '',
}
def devicon(file):
if file.is_directory: return dir_node_exact_matches.get(file.relative_path, '')
return file_node_exact_matches.get(os.path.basename(file.relative_path), file_node_extensions.get(file.extension, ''))

781
.config/ranger/rc.conf Normal file
View File

@ -0,0 +1,781 @@
# ===================================================================
# This file contains the default startup commands for ranger.
# To change them, it is recommended to create either /etc/ranger/rc.conf
# (system-wide) or ~/.config/ranger/rc.conf (per user) and add your custom
# commands there.
#
# If you copy this whole file there, you may want to set the environment
# variable RANGER_LOAD_DEFAULT_RC to FALSE to avoid loading it twice.
#
# The purpose of this file is mainly to define keybindings and settings.
# For running more complex python code, please create a plugin in "plugins/" or
# a command in "commands.py".
#
# Each line is a command that will be run before the user interface
# is initialized. As a result, you can not use commands which rely
# on the UI such as :delete or :mark.
# ===================================================================
# ===================================================================
# == Options
# ===================================================================
# Which viewmode should be used? Possible values are:
# miller: Use miller columns which show multiple levels of the hierarchy
# multipane: Midnight-commander like multipane view showing all tabs next
# to each other
set viewmode miller
#set viewmode multipane
# How many columns are there, and what are their relative widths?
set column_ratios 1,3,4
# Which files should be hidden? (regular expression)
set hidden_filter ^\.|\.(?:pyc|pyo|bak|swp)$|^lost\+found$|^__(py)?cache__$
# Show hidden files? You can toggle this by typing 'zh'
set show_hidden false
# Ask for a confirmation when running the "delete" command?
# Valid values are "always", "never", "multiple" (default)
# With "multiple", ranger will ask only if you delete multiple files at once.
set confirm_on_delete multiple
# Use non-default path for file preview script?
# ranger ships with scope.sh, a script that calls external programs (see
# README.md for dependencies) to preview images, archives, etc.
#set preview_script ~/.config/ranger/scope.sh
# Use the external preview script or display simple plain text or image previews?
set use_preview_script true
# Automatically count files in the directory, even before entering them?
set automatically_count_files true
# Open all images in this directory when running certain image viewers
# like feh or sxiv? You can still open selected files by marking them.
set open_all_images true
# Be aware of version control systems and display information.
set vcs_aware false
# State of the four backends git, hg, bzr, svn. The possible states are
# disabled, local (only show local info), enabled (show local and remote
# information).
set vcs_backend_git enabled
set vcs_backend_hg disabled
set vcs_backend_bzr disabled
set vcs_backend_svn disabled
# Truncate the long commit messages to this length when shown in the statusbar.
set vcs_msg_length 50
# Use one of the supported image preview protocols
set preview_images true
# Set the preview image method. Supported methods:
#
# * w3m (default):
# Preview images in full color with the external command "w3mimgpreview"?
# This requires the console web browser "w3m" and a supported terminal.
# It has been successfully tested with "xterm" and "urxvt" without tmux.
#
# * iterm2:
# Preview images in full color using iTerm2 image previews
# (http://iterm2.com/images.html). This requires using iTerm2 compiled
# with image preview support.
#
# This feature relies on the dimensions of the terminal's font. By default, a
# width of 8 and height of 11 are used. To use other values, set the options
# iterm2_font_width and iterm2_font_height to the desired values.
#
# * terminology:
# Previews images in full color in the terminology terminal emulator.
# Supports a wide variety of formats, even vector graphics like svg.
#
# * urxvt:
# Preview images in full color using urxvt image backgrounds. This
# requires using urxvt compiled with pixbuf support.
#
# * urxvt-full:
# The same as urxvt but utilizing not only the preview pane but the
# whole terminal window.
#
# * kitty:
# Preview images in full color using kitty image protocol.
# Requires python PIL or pillow library.
# If ranger does not share the local filesystem with kitty
# the transfer method is changed to encode the whole image;
# while slower, this allows remote previews,
# for example during an ssh session.
# Tmux is unsupported.
#
# * ueberzug:
# Preview images in full color with the external command "ueberzug".
# Images are shown by using a child window.
# Only for users who run X11 in GNU/Linux.
#
# set preview_images_method w3m
set preview_images_method iterm2
# Delay in seconds before displaying an image with the w3m method.
# Increase it in case of experiencing display corruption.
set w3m_delay 0.02
# Manually adjust the w3mimg offset when using a terminal which needs this
set w3m_offset 0
# Default iTerm2 font size (see: preview_images_method: iterm2)
set iterm2_font_width 8
set iterm2_font_height 11
# Use a unicode "..." character to mark cut-off filenames?
set unicode_ellipsis false
# BIDI support - try to properly display file names in RTL languages (Hebrew, Arabic).
# Requires the python-bidi pip package
set bidi_support false
# Show dotfiles in the bookmark preview box?
set show_hidden_bookmarks true
# Which colorscheme to use? These colorschemes are available by default:
# default, jungle, snow, solarized
set colorscheme default
# Preview files on the rightmost column?
# And collapse (shrink) the last column if there is nothing to preview?
set preview_files true
set preview_directories true
set collapse_preview true
# Wrap long lines in plain text previews?
set wrap_plaintext_previews false
# Save the console history on exit?
set save_console_history true
# Draw the status bar on top of the browser window (default: bottom)
set status_bar_on_top false
# Draw a progress bar in the status bar which displays the average state of all
# currently running tasks which support progress bars?
set draw_progress_bar_in_status_bar true
# Draw borders around columns? (separators, outline, both, or none)
# Separators are vertical lines between columns.
# Outline draws a box around all the columns.
# Both combines the two.
set draw_borders true
# Display the directory name in tabs?
set dirname_in_tabs false
# Enable the mouse support?
set mouse_enabled true
# Display the file size in the main column or status bar?
set display_size_in_main_column true
set display_size_in_status_bar true
# Display the free disk space in the status bar?
set display_free_space_in_status_bar true
# Display files tags in all columns or only in main column?
set display_tags_in_all_columns true
# Set a title for the window? Updates both `WM_NAME` and `WM_ICON_NAME`
set update_title false
# Set the tmux/screen window-name to "ranger"?
set update_tmux_title true
# Shorten the title if it gets long? The number defines how many
# directories are displayed at once, 0 turns off this feature.
set shorten_title 3
# Show hostname in titlebar?
set hostname_in_titlebar true
# Abbreviate $HOME with ~ in the titlebar (first line) of ranger?
set tilde_in_titlebar false
# How many directory-changes or console-commands should be kept in history?
set max_history_size 20
set max_console_history_size 50
# Try to keep so much space between the top/bottom border when scrolling:
set scroll_offset 8
# Flush the input after each key hit? (Noticeable when ranger lags)
set flushinput true
# Padding on the right when there's no preview?
# This allows you to click into the space to run the file.
set padding_right true
# Save bookmarks (used with mX and `X) instantly?
# This helps to synchronize bookmarks between multiple ranger
# instances but leads to *slight* performance loss.
# When false, bookmarks are saved when ranger is exited.
set autosave_bookmarks true
# Save the "`" bookmark to disk. This can be used to switch to the last
# directory by typing "``".
set save_backtick_bookmark true
# You can display the "real" cumulative size of directories by using the
# command :get_cumulative_size or typing "dc". The size is expensive to
# calculate and will not be updated automatically. You can choose
# to update it automatically though by turning on this option:
set autoupdate_cumulative_size false
# Turning this on makes sense for screen readers:
set show_cursor false
# One of: size, natural, basename, atime, ctime, mtime, type, random
set sort natural
# Additional sorting options
set sort_reverse false
set sort_case_insensitive true
set sort_directories_first true
set sort_unicode false
# Enable this if key combinations with the Alt Key don't work for you.
# (Especially on xterm)
set xterm_alt_key false
# Whether to include bookmarks in cd command
set cd_bookmarks true
# Changes case sensitivity for the cd command tab completion
set cd_tab_case sensitive
# Use fuzzy tab completion with the "cd" command. For example,
# ":cd /u/lo/b<tab>" expands to ":cd /usr/local/bin".
set cd_tab_fuzzy false
# Avoid previewing files larger than this size, in bytes. Use a value of 0 to
# disable this feature.
set preview_max_size 0
# The key hint lists up to this size have their sublists expanded.
# Otherwise the submaps are replaced with "...".
set hint_collapse_threshold 10
# Add the highlighted file to the path in the titlebar
set show_selection_in_titlebar true
# The delay that ranger idly waits for user input, in milliseconds, with a
# resolution of 100ms. Lower delay reduces lag between directory updates but
# increases CPU load.
set idle_delay 2000
# When the metadata manager module looks for metadata, should it only look for
# a ".metadata.json" file in the current directory, or do a deep search and
# check all directories above the current one as well?
set metadata_deep_search false
# Clear all existing filters when leaving a directory
set clear_filters_on_dir_change false
# Disable displaying line numbers in main column.
# Possible values: false, absolute, relative.
set line_numbers false
# When line_numbers=relative show the absolute line number in the
# current line.
set relative_current_zero false
# Start line numbers from 1 instead of 0
set one_indexed false
# Save tabs on exit
set save_tabs_on_exit false
# Enable scroll wrapping - moving down while on the last item will wrap around to
# the top and vice versa.
set wrap_scroll false
# Set the global_inode_type_filter to nothing. Possible options: d, f and l for
# directories, files and symlinks respectively.
set global_inode_type_filter
# This setting allows to freeze the list of files to save I/O bandwidth. It
# should be 'false' during start-up, but you can toggle it by pressing F.
set freeze_files false
# Print file sizes in bytes instead of the default human-readable format.
set size_in_bytes false
# Warn at startup if RANGER_LEVEL env var is greater than 0, in other words
# give a warning when you nest ranger in a subshell started by ranger.
# Special value "error" makes the warning more visible.
set nested_ranger_warning true
# ===================================================================
# == Local Options
# ===================================================================
# You can set local options that only affect a single directory.
# Examples:
# setlocal path=~/downloads sort mtime
# ===================================================================
# == Command Aliases in the Console
# ===================================================================
alias e edit
alias q quit
alias q! quit!
alias qa quitall
alias qa! quitall!
alias qall quitall
alias qall! quitall!
alias setl setlocal
alias filter scout -prts
alias find scout -aets
alias mark scout -mr
alias unmark scout -Mr
alias search scout -rs
alias search_inc scout -rts
alias travel scout -aefklst
# ===================================================================
# == Define keys for the browser
# ===================================================================
# Basic
map Q quitall
map q quit
copymap q ZZ ZQ
map R reload_cwd
map F set freeze_files!
map <C-r> reset
map <C-l> redraw_window
map <C-c> abort
map <esc> change_mode normal
map ~ set viewmode!
map i display_file
map <A-j> scroll_preview 1
map <A-k> scroll_preview -1
map ? help
map W display_log
map w taskview_open
map S shell $SHELL
map : console
map ; console
map ! console shell%space
map @ console -p6 shell %%s
map # console shell -p%space
map s console shell%space
map r chain draw_possible_programs; console open_with%space
#map f console find%space
map cd console cd%space
map <C-p> chain console; eval fm.ui.console.history_move(-1)
# Change the line mode
map Mf linemode filename
map Mi linemode fileinfo
map Mm linemode mtime
map Mh linemode humanreadablemtime
map Mp linemode permissions
map Ms linemode sizemtime
map MH linemode sizehumanreadablemtime
map Mt linemode metatitle
# Tagging / Marking
map t tag_toggle
map ut tag_remove
map "<any> tag_toggle tag=%any
map <Space> mark_files toggle=True
map v mark_files all=True toggle=True
map uv mark_files all=True val=False
map V toggle_visual_mode
map uV toggle_visual_mode reverse=True
# For the nostalgics: Midnight Commander bindings
map <F1> help
map <F2> rename_append
map <F3> display_file
map <F4> edit
map <F5> copy
map <F6> cut
map <F7> console mkdir%space
map <F8> console delete
#map <F8> console trash
map <F10> exit
# In case you work on a keyboard with dvorak layout
map <UP> move up=1
map <DOWN> move down=1
map <LEFT> move left=1
map <RIGHT> move right=1
map <HOME> move to=0
map <END> move to=-1
map <PAGEDOWN> move down=1 pages=True
map <PAGEUP> move up=1 pages=True
map <CR> move right=1
#map <DELETE> console delete
map <INSERT> console touch%space
# VIM-like
copymap <UP> k
copymap <DOWN> j
copymap <LEFT> h
copymap <RIGHT> l
copymap <HOME> gg
copymap <END> G
copymap <PAGEDOWN> <C-F>
copymap <PAGEUP> <C-B>
map J move down=0.5 pages=True
map K move up=0.5 pages=True
copymap J <C-D>
copymap K <C-U>
# Jumping around
map H history_go -1
map L history_go 1
map ] move_parent 1
map [ move_parent -1
map } traverse
map { traverse_backwards
map ) jump_non
map gh cd ~
map ge cd /etc
map gu cd /usr
map gd cd /dev
map gl cd -r .
map gL cd -r %f
map go cd /opt
map gv cd /var
map gm cd /media
map gi eval fm.cd('/run/media/' + os.getenv('USER'))
map gM cd /mnt
map gs cd /srv
map gp cd /tmp
map gr cd /
map gR eval fm.cd(ranger.RANGERDIR)
map g/ cd /
map g? cd /usr/share/doc/ranger
# External Programs
map E edit
map du shell -p du --max-depth=1 -h --apparent-size
map dU shell -p du --max-depth=1 -h --apparent-size | sort -rh
map yp yank path
map yd yank dir
map yn yank name
map y. yank name_without_extension
map cw console rename%space
map a rename_append
map A eval fm.open_console('rename ' + fm.thisfile.relative_path.replace("%", "%%"))
map I eval fm.open_console('rename ' + fm.thisfile.relative_path.replace("%", "%%"), position=7)
map pp paste
map po paste overwrite=True
map pP paste append=True
map pO paste overwrite=True append=True
map pl paste_symlink relative=False
map pL paste_symlink relative=True
map phl paste_hardlink
map pht paste_hardlinked_subtree
map pd console paste dest=
map p`<any> paste dest=%any_path
map p'<any> paste dest=%any_path
# map dD console delete
map dT console trash
map dd cut
map ud uncut
map da cut mode=add
map dr cut mode=remove
map dt cut mode=toggle
map yy copy
# map uy uncut
map ya copy mode=add
map yr copy mode=remove
map yt copy mode=toggle
# Temporary workarounds
map dgg eval fm.cut(dirarg=dict(to=0), narg=quantifier)
map dG eval fm.cut(dirarg=dict(to=-1), narg=quantifier)
map dj eval fm.cut(dirarg=dict(down=1), narg=quantifier)
map dk eval fm.cut(dirarg=dict(up=1), narg=quantifier)
map ygg eval fm.copy(dirarg=dict(to=0), narg=quantifier)
map yG eval fm.copy(dirarg=dict(to=-1), narg=quantifier)
map yj eval fm.copy(dirarg=dict(down=1), narg=quantifier)
map yk eval fm.copy(dirarg=dict(up=1), narg=quantifier)
# Searching
# map / console search%space
map n search_next
map N search_next forward=False
map ct search_next order=tag
map cs search_next order=size
map ci search_next order=mimetype
map cc search_next order=ctime
map cm search_next order=mtime
map ca search_next order=atime
# Tabs
map <C-n> tab_new
map <C-w> tab_close
map <TAB> tab_move 1
map <S-TAB> tab_move -1
map <A-Right> tab_move 1
map <A-Left> tab_move -1
map gt tab_move 1
map gT tab_move -1
map gn tab_new
map gc tab_close
map uq tab_restore
map <a-1> tab_open 1
map <a-2> tab_open 2
map <a-3> tab_open 3
map <a-4> tab_open 4
map <a-5> tab_open 5
map <a-6> tab_open 6
map <a-7> tab_open 7
map <a-8> tab_open 8
map <a-9> tab_open 9
map <a-r> tab_shift 1
map <a-l> tab_shift -1
# Sorting
map or set sort_reverse!
map oz set sort=random
map os chain set sort=size; set sort_reverse=False
map ob chain set sort=basename; set sort_reverse=False
map on chain set sort=natural; set sort_reverse=False
map om chain set sort=mtime; set sort_reverse=False
map oc chain set sort=ctime; set sort_reverse=False
map oa chain set sort=atime; set sort_reverse=False
map ot chain set sort=type; set sort_reverse=False
map oe chain set sort=extension; set sort_reverse=False
map oS chain set sort=size; set sort_reverse=True
map oB chain set sort=basename; set sort_reverse=True
map oN chain set sort=natural; set sort_reverse=True
map oM chain set sort=mtime; set sort_reverse=True
map oC chain set sort=ctime; set sort_reverse=True
map oA chain set sort=atime; set sort_reverse=True
map oT chain set sort=type; set sort_reverse=True
map oE chain set sort=extension; set sort_reverse=True
map dc get_cumulative_size
# Settings
map zc set collapse_preview!
map zd set sort_directories_first!
map zh set show_hidden!
map <C-h> set show_hidden!
copymap <C-h> <backspace>
copymap <backspace> <backspace2>
map zI set flushinput!
map zi set preview_images!
map zm set mouse_enabled!
map zp set preview_files!
map zP set preview_directories!
map zs set sort_case_insensitive!
map zu set autoupdate_cumulative_size!
map zv set use_preview_script!
map zf console filter%space
copymap zf zz
# Filter stack
#map .d filter_stack add type d
#map .f filter_stack add type f
#map .l filter_stack add type l
#map .m console filter_stack add mime%space
#map .n console filter_stack add name%space
#map .# console filter_stack add hash%space
#map ." filter_stack add duplicate
#map .' filter_stack add unique
#map .| filter_stack add or
#map .& filter_stack add and
#map .! filter_stack add not
#map .r filter_stack rotate
#map .c filter_stack clear
#map .* filter_stack decompose
#map .p filter_stack pop
#map .. filter_stack show
# Bookmarks
map `<any> enter_bookmark %any
map '<any> enter_bookmark %any
map m<any> set_bookmark %any
map um<any> unset_bookmark %any
map m<bg> draw_bookmarks
copymap m<bg> um<bg> `<bg> '<bg>
# Generate all the chmod bindings with some python help:
eval for arg in "rwxXst": cmd("map +u{0} shell -f chmod u+{0} %s".format(arg))
eval for arg in "rwxXst": cmd("map +g{0} shell -f chmod g+{0} %s".format(arg))
eval for arg in "rwxXst": cmd("map +o{0} shell -f chmod o+{0} %s".format(arg))
eval for arg in "rwxXst": cmd("map +a{0} shell -f chmod a+{0} %s".format(arg))
eval for arg in "rwxXst": cmd("map +{0} shell -f chmod u+{0} %s".format(arg))
eval for arg in "rwxXst": cmd("map -u{0} shell -f chmod u-{0} %s".format(arg))
eval for arg in "rwxXst": cmd("map -g{0} shell -f chmod g-{0} %s".format(arg))
eval for arg in "rwxXst": cmd("map -o{0} shell -f chmod o-{0} %s".format(arg))
eval for arg in "rwxXst": cmd("map -a{0} shell -f chmod a-{0} %s".format(arg))
eval for arg in "rwxXst": cmd("map -{0} shell -f chmod u-{0} %s".format(arg))
# ===================================================================
# == Define keys for the console
# ===================================================================
# Note: Unmapped keys are passed directly to the console.
# Basic
cmap <tab> eval fm.ui.console.tab()
cmap <s-tab> eval fm.ui.console.tab(-1)
cmap <ESC> eval fm.ui.console.close()
cmap <CR> eval fm.ui.console.execute()
# cmap <C-l> redraw_window
copycmap <ESC> <C-c>
copycmap <CR> <C-j>
# Move around
cmap <up> eval fm.ui.console.history_move(-1)
cmap <down> eval fm.ui.console.history_move(1)
cmap <left> eval fm.ui.console.move(left=1)
cmap <right> eval fm.ui.console.move(right=1)
cmap <home> eval fm.ui.console.move(right=0, absolute=True)
cmap <end> eval fm.ui.console.move(right=-1, absolute=True)
cmap <a-b> eval fm.ui.console.move_word(left=1)
cmap <a-f> eval fm.ui.console.move_word(right=1)
copycmap <a-b> <a-left>
copycmap <a-f> <a-right>
# Line Editing
cmap <backspace> eval fm.ui.console.delete(-1)
cmap <delete> eval fm.ui.console.delete(0)
cmap <C-w> eval fm.ui.console.delete_word()
cmap <A-d> eval fm.ui.console.delete_word(backward=False)
cmap <C-k> eval fm.ui.console.delete_rest(1)
cmap <C-u> eval fm.ui.console.delete_rest(-1)
cmap <C-y> eval fm.ui.console.paste()
# And of course the emacs way
copycmap <ESC> <C-g>
copycmap <up> <C-p>
copycmap <down> <C-n>
copycmap <left> <C-b>
copycmap <right> <C-f>
copycmap <home> <C-a>
copycmap <end> <C-e>
copycmap <delete> <C-d>
copycmap <backspace> <C-h>
# Note: There are multiple ways to express backspaces. <backspace> (code 263)
# and <backspace2> (code 127). To be sure, use both.
copycmap <backspace> <backspace2>
# This special expression allows typing in numerals:
cmap <allow_quantifiers> false
# ===================================================================
# == Pager Keybindings
# ===================================================================
# Movement
pmap <down> pager_move down=1
pmap <up> pager_move up=1
pmap <left> pager_move left=4
pmap <right> pager_move right=4
pmap <home> pager_move to=0
pmap <end> pager_move to=-1
pmap <pagedown> pager_move down=1.0 pages=True
pmap <pageup> pager_move up=1.0 pages=True
pmap <C-d> pager_move down=0.5 pages=True
pmap <C-u> pager_move up=0.5 pages=True
copypmap <UP> k <C-p>
copypmap <DOWN> j <C-n> <CR>
copypmap <LEFT> h
copypmap <RIGHT> l
copypmap <HOME> g
copypmap <END> G
copypmap <C-d> d
copypmap <C-u> u
copypmap <PAGEDOWN> n f <C-F> <Space>
copypmap <PAGEUP> p b <C-B>
# Basic
pmap <C-l> redraw_window
pmap <ESC> pager_close
copypmap <ESC> q Q i <F3>
pmap E edit_file
# ===================================================================
# == Taskview Keybindings
# ===================================================================
# Movement
tmap <up> taskview_move up=1
tmap <down> taskview_move down=1
tmap <home> taskview_move to=0
tmap <end> taskview_move to=-1
tmap <pagedown> taskview_move down=1.0 pages=True
tmap <pageup> taskview_move up=1.0 pages=True
tmap <C-d> taskview_move down=0.5 pages=True
tmap <C-u> taskview_move up=0.5 pages=True
copytmap <UP> k <C-p>
copytmap <DOWN> j <C-n> <CR>
copytmap <HOME> g
copytmap <END> G
copytmap <C-u> u
copytmap <PAGEDOWN> n f <C-F> <Space>
copytmap <PAGEUP> p b <C-B>
# Changing priority and deleting tasks
tmap J eval -q fm.ui.taskview.task_move(-1)
tmap K eval -q fm.ui.taskview.task_move(0)
tmap dd eval -q fm.ui.taskview.task_remove()
tmap <pagedown> eval -q fm.ui.taskview.task_move(-1)
tmap <pageup> eval -q fm.ui.taskview.task_move(0)
tmap <delete> eval -q fm.ui.taskview.task_remove()
# Basic
tmap <C-l> redraw_window
tmap <ESC> taskview_close
copytmap <ESC> q Q w <C-c>
# Personal custom configs
map md console mkdir%space
map ch console chmod%space
map cW bulkrename %s
map au shell ~/.config/bin/extract %f
map mf console touch%space
map ee shell nvim %f
map gp cd ~/Pictures
map gs cd ~/.config/.dotfiles
map gw cd /usr/share/backgrounds
map gd cd ~/Downloads
map gD cd ~/Documents
map ge cd ~/Desktop
map gc cd ~/.config
map gm cd ~/Music
map gv cd ~/Videos
map U uncut
map D console delete
map f console search%space
cmap <C-r> redraw_window
default_linemode devicons

289
.config/ranger/rifle.conf Normal file
View File

@ -0,0 +1,289 @@
# vim: ft=cfg
#
# This is the configuration file of "rifle", ranger's file executor/opener.
# Each line consists of conditions and a command. For each line the conditions
# are checked and if they are met, the respective command is run.
#
# Syntax:
# <condition1> , <condition2> , ... = command
#
# The command can contain these environment variables:
# $1-$9 | The n-th selected file
# $@ | All selected files
#
# If you use the special command "ask", rifle will ask you what program to run.
#
# Prefixing a condition with "!" will negate its result.
# These conditions are currently supported:
# match <regexp> | The regexp matches $1
# ext <regexp> | The regexp matches the extension of $1
# mime <regexp> | The regexp matches the mime type of $1
# name <regexp> | The regexp matches the basename of $1
# path <regexp> | The regexp matches the absolute path of $1
# has <program> | The program is installed (i.e. located in $PATH)
# env <variable> | The environment variable "variable" is non-empty
# file | $1 is a file
# directory | $1 is a directory
# number <n> | change the number of this command to n
# terminal | stdin, stderr and stdout are connected to a terminal
# X | A graphical environment is available (darwin, Xorg, or Wayland)
#
# There are also pseudo-conditions which have a "side effect":
# flag <flags> | Change how the program is run. See below.
# label <label> | Assign a label or name to the command so it can
# | be started with :open_with <label> in ranger
# | or `rifle -p <label>` in the standalone executable.
# else | Always true.
#
# Flags are single characters which slightly transform the command:
# f | Fork the program, make it run in the background.
# | New command = setsid $command >& /dev/null &
# r | Execute the command with root permissions
# | New command = sudo $command
# t | Run the program in a new terminal. If $TERMCMD is not defined,
# | rifle will attempt to extract it from $TERM.
# | New command = $TERMCMD -e $command
# Note: The "New command" serves only as an illustration, the exact
# implementation may differ.
# Note: When using rifle in ranger, there is an additional flag "c" for
# only running the current file even if you have marked multiple files.
#-------------------------------------------
# Websites
#-------------------------------------------
# Rarely installed browsers get higher priority; It is assumed that if you
# install a rare browser, you probably use it. Firefox/konqueror/w3m on the
# other hand are often only installed as fallback browsers.
ext x?html?, has surf, X, flag f = surf -- file://"$1"
ext x?html?, has brave, X, flag f = brave -- "$@"
ext x?html?, has vimprobable, X, flag f = vimprobable -- "$@"
ext x?html?, has vimprobable2, X, flag f = vimprobable2 -- "$@"
ext x?html?, has qutebrowser, X, flag f = qutebrowser -- "$@"
ext x?html?, has dwb, X, flag f = dwb -- "$@"
ext x?html?, has jumanji, X, flag f = jumanji -- "$@"
ext x?html?, has luakit, X, flag f = luakit -- "$@"
ext x?html?, has uzbl, X, flag f = uzbl -- "$@"
ext x?html?, has uzbl-tabbed, X, flag f = uzbl-tabbed -- "$@"
ext x?html?, has uzbl-browser, X, flag f = uzbl-browser -- "$@"
ext x?html?, has uzbl-core, X, flag f = uzbl-core -- "$@"
ext x?html?, has midori, X, flag f = midori -- "$@"
ext x?html?, has opera, X, flag f = opera -- "$@"
ext x?html?, has firefox, X, flag f = firefox -- "$@"
ext x?html?, has seamonkey, X, flag f = seamonkey -- "$@"
ext x?html?, has iceweasel, X, flag f = iceweasel -- "$@"
ext x?html?, has chromium-browser, X, flag f = chromium-browser -- "$@"
ext x?html?, has chromium, X, flag f = chromium -- "$@"
ext x?html?, has google-chrome, X, flag f = google-chrome -- "$@"
ext x?html?, has epiphany, X, flag f = epiphany -- "$@"
ext x?html?, has konqueror, X, flag f = konqueror -- "$@"
ext x?html?, has elinks, terminal = elinks "$@"
ext x?html?, has links2, terminal = links2 "$@"
ext x?html?, has links, terminal = links "$@"
ext x?html?, has lynx, terminal = lynx -- "$@"
ext x?html?, has w3m, terminal = w3m "$@"
#-------------------------------------------
# Misc
#-------------------------------------------
# Define the "editor" for text files as first action
mime ^text, label editor = ${VISUAL:-$EDITOR} -- "$@"
mime ^text, label pager = "$PAGER" -- "$@"
!mime ^text, label editor, ext xml|json|csv|tex|py|pl|rb|js|sh|php = ${VISUAL:-$EDITOR} -- "$@"
!mime ^text, label pager, ext xml|json|csv|tex|py|pl|rb|js|sh|php = "$PAGER" -- "$@"
ext 1 = man "$1"
ext s[wmf]c, has zsnes, X = zsnes "$1"
ext s[wmf]c, has snes9x-gtk,X = snes9x-gtk "$1"
ext nes, has fceux, X = fceux "$1"
ext exe = wine "$1"
name ^[mM]akefile$ = make
#--------------------------------------------
# Scripts
#-------------------------------------------
ext py = python -- "$1"
ext pl = perl -- "$1"
ext rb = ruby -- "$1"
ext js = node -- "$1"
ext sh = sh -- "$1"
ext php = php -- "$1"
#--------------------------------------------
# Audio without X
#-------------------------------------------
#mime ^audio|ogg$, terminal, has mpv = mpv -- "$@"
#mime ^audio|ogg$, terminal, has mplayer2 = mplayer2 -- "$@"
mime ^audio|ogg$, terminal, has mplayer = mplayer -- "$@"
#ext midi?, terminal, has wildmidi = wildmidi -- "$@"
#--------------------------------------------
# Video/Audio with a GUI
#-------------------------------------------
#mime ^video|audio, has gmplayer, X, flag f = gmplayer -- "$@"
#mime ^video|audio, has smplayer, X, flag f = smplayer "$@"
#mime ^video, has mpv, X, flag f = mpv -- "$@"
#mime ^video, has mpv, X, flag f = mpv --fs -- "$@"
#mime ^video, has mplayer2, X, flag f = mplayer2 -- "$@"
#mime ^video, has mplayer2, X, flag f = mplayer2 -fs -- "$@"
#mime ^video, has mplayer, X, flag f = mplayer -- "$@"
#mime ^video, has mplayer, X, flag f = mplayer -fs -- "$@"
mime ^video|audio, has mpv, X, flag f = mpv -- "$@"
mime ^video|audio, has vlc, X, flag f = vlc -- "$@"
#mime ^video|audio, has totem, X, flag f = totem -- "$@"
#mime ^video|audio, has totem, X, flag f = totem --fullscreen -- "$@"
#--------------------------------------------
# Video without X
#-------------------------------------------
mime ^video, terminal, !X, has mpv = mpv -- "$@"
mime ^video, terminal, !X, has mplayer2 = mplayer2 -- "$@"
mime ^video, terminal, !X, has mplayer = mplayer -- "$@"
#-------------------------------------------
# Documents
#-------------------------------------------
ext pdf, has llpp, X, flag f = llpp "$@"
ext pdf, has zathura, X, flag f = zathura -- "$@"
ext pdf, has mupdf, X, flag f = mupdf "$@"
ext pdf, has mupdf-x11,X, flag f = mupdf-x11 "$@"
ext pdf, has apvlv, X, flag f = apvlv -- "$@"
ext pdf, has xpdf, X, flag f = xpdf -- "$@"
ext pdf, has evince, X, flag f = evince -- "$@"
ext pdf, has atril, X, flag f = atril -- "$@"
ext pdf, has okular, X, flag f = okular -- "$@"
ext pdf, has epdfview, X, flag f = epdfview -- "$@"
ext pdf, has qpdfview, X, flag f = qpdfview "$@"
ext pdf, has open, X, flag f = open "$@"
ext docx?, has catdoc, terminal = catdoc -- "$@" | "$PAGER"
ext sxc|xlsx?|xlt|xlw|gnm|gnumeric, has gnumeric, X, flag f = gnumeric -- "$@"
ext sxc|xlsx?|xlt|xlw|gnm|gnumeric, has kspread, X, flag f = kspread -- "$@"
ext pptx?|od[dfgpst]|docx?|sxc|xlsx?|xlt|xlw|gnm|gnumeric, has libreoffice, X, flag f = libreoffice "$@"
ext pptx?|od[dfgpst]|docx?|sxc|xlsx?|xlt|xlw|gnm|gnumeric, has soffice, X, flag f = soffice "$@"
ext pptx?|od[dfgpst]|docx?|sxc|xlsx?|xlt|xlw|gnm|gnumeric, has ooffice, X, flag f = ooffice "$@"
ext djvu, has zathura,X, flag f = zathura -- "$@"
ext djvu, has evince, X, flag f = evince -- "$@"
ext djvu, has atril, X, flag f = atril -- "$@"
ext djvu, has djview, X, flag f = djview -- "$@"
ext epub, has ebook-viewer, X, flag f = ebook-viewer -- "$@"
ext epub, has zathura, X, flag f = zathura -- "$@"
ext epub, has mupdf, X, flag f = mupdf -- "$@"
ext mobi, has ebook-viewer, X, flag f = ebook-viewer -- "$@"
ext cbr, has zathura, X, flag f = zathura -- "$@"
ext cbz, has zathura, X, flag f = zathura -- "$@"
#-------------------------------------------
# Images
#-------------------------------------------
mime ^image/svg, has inkscape, X, flag f = inkscape -- "$@"
mime ^image/svg, has display, X, flag f = display -- "$@"
mime ^image, has viewnior, X, flag f = viewnior -- "$@"
mime ^image, has imv, X, flag f = imv -- "$@"
mime ^image, has pqiv, X, flag f = pqiv -- "$@"
mime ^image, has nsxiv, X, flag f = nsxiv -- "$@"
mime ^image, has sxiv, X, flag f = sxiv -- "$@"
mime ^image, has feh, X, flag f = feh -- "$@"
mime ^image, has mirage, X, flag f = mirage -- "$@"
mime ^image, has ristretto, X, flag f = ristretto "$@"
mime ^image, has eog, X, flag f = eog -- "$@"
mime ^image, has eom, X, flag f = eom -- "$@"
mime ^image, has nomacs, X, flag f = nomacs -- "$@"
mime ^image, has geeqie, X, flag f = geeqie -- "$@"
mime ^image, has gpicview, X, flag f = gpicview -- "$@"
mime ^image, has gwenview, X, flag f = gwenview -- "$@"
mime ^image, has gimp, X, flag f = gimp -- "$@"
ext xcf, X, flag f = gimp -- "$@"
#-------------------------------------------
# Archives
#-------------------------------------------
# avoid password prompt by providing empty password
ext 7z, has 7z = 7z -p l "$@" | "$PAGER"
# This requires atool
ext ace|ar|arc|bz2?|cab|cpio|cpt|deb|dgc|dmg|gz, has atool = atool --list --each -- "$@" | "$PAGER"
ext iso|jar|msi|pkg|rar|shar|tar|tgz|xar|xpi|xz|zip, has atool = atool --list --each -- "$@" | "$PAGER"
ext 7z|ace|ar|arc|bz2?|cab|cpio|cpt|deb|dgc|dmg|gz, has atool = atool --extract --each -- "$@"
ext iso|jar|msi|pkg|rar|shar|tar|tgz|xar|xpi|xz|zip, has atool = atool --extract --each -- "$@"
# Listing and extracting archives without atool:
ext tar|gz|bz2|xz, has tar = tar vvtf "$1" | "$PAGER"
ext tar|gz|bz2|xz, has tar = for file in "$@"; do tar vvxf "$file"; done
ext bz2, has bzip2 = for file in "$@"; do bzip2 -dk "$file"; done
ext zip, has unzip = unzip -l "$1" | less
ext zip, has unzip = for file in "$@"; do unzip -d "${file%.*}" "$file"; done
ext ace, has unace = unace l "$1" | less
ext ace, has unace = for file in "$@"; do unace e "$file"; done
ext rar, has unrar = unrar l "$1" | less
ext rar, has unrar = for file in "$@"; do unrar x "$file"; done
#-------------------------------------------
# Fonts
#-------------------------------------------
mime ^font, has fontforge, X, flag f = fontforge "$@"
#-------------------------------------------
# Flag t fallback terminals
#-------------------------------------------
# Rarely installed terminal emulators get higher priority; It is assumed that
# if you install a rare terminal emulator, you probably use it.
# gnome-terminal/konsole/xterm on the other hand are often installed as part of
# a desktop environment or as fallback terminal emulators.
mime ^ranger/x-terminal-emulator, has foot = foot -e "$@"
mime ^ranger/x-terminal-emulator, has terminology = terminology -e "$@"
mime ^ranger/x-terminal-emulator, has kitty = kitty -- "$@"
mime ^ranger/x-terminal-emulator, has alacritty = alacritty -e "$@"
mime ^ranger/x-terminal-emulator, has sakura = sakura -e "$@"
mime ^ranger/x-terminal-emulator, has lilyterm = lilyterm -e "$@"
#mime ^ranger/x-terminal-emulator, has cool-retro-term = cool-retro-term -e "$@"
mime ^ranger/x-terminal-emulator, has termite = termite -x '"$@"'
#mime ^ranger/x-terminal-emulator, has yakuake = yakuake -e "$@"
mime ^ranger/x-terminal-emulator, has guake = guake -ne "$@"
mime ^ranger/x-terminal-emulator, has tilda = tilda -c "$@"
mime ^ranger/x-terminal-emulator, has st = st -e "$@"
mime ^ranger/x-terminal-emulator, has terminator = terminator -x "$@"
mime ^ranger/x-terminal-emulator, has urxvt = urxvt -e "$@"
mime ^ranger/x-terminal-emulator, has pantheon-terminal = pantheon-terminal -e "$@"
mime ^ranger/x-terminal-emulator, has lxterminal = lxterminal -e "$@"
mime ^ranger/x-terminal-emulator, has mate-terminal = mate-terminal -x "$@"
mime ^ranger/x-terminal-emulator, has xfce4-terminal = xfce4-terminal -x "$@"
mime ^ranger/x-terminal-emulator, has konsole = konsole -e "$@"
mime ^ranger/x-terminal-emulator, has gnome-terminal = gnome-terminal -- "$@"
mime ^ranger/x-terminal-emulator, has xterm = xterm -e "$@"
#-------------------------------------------
# Misc
#-------------------------------------------
label wallpaper, number 11, mime ^image, has feh, X = feh --bg-scale "$1"
label wallpaper, number 12, mime ^image, has feh, X = feh --bg-tile "$1"
label wallpaper, number 13, mime ^image, has feh, X = feh --bg-center "$1"
label wallpaper, number 14, mime ^image, has feh, X = feh --bg-fill "$1"
#-------------------------------------------
# Generic file openers
#-------------------------------------------
label open, has xdg-open = xdg-open -- "$@"
label open, has open = open -- "$@"
# Define the editor for non-text files + pager as last action
!mime ^text, !ext xml|json|csv|tex|py|pl|rb|js|sh|php = ask
label editor, !mime ^text, !ext xml|json|csv|tex|py|pl|rb|js|sh|php = ${VISUAL:-$EDITOR} -- "$@"
label pager, !mime ^text, !ext xml|json|csv|tex|py|pl|rb|js|sh|php = "$PAGER" -- "$@"
######################################################################
# The actions below are left so low down in this file on purpose, so #
# they are never triggered accidentally. #
######################################################################
# Execute a file as program/script.
mime application/x-executable = "$1"
# Move the file to trash using trash-cli.
label trash, has trash-put = trash-put -- "$@"
label trash = mkdir -p -- ${XDG_DATA_DIR:-$HOME/.ranger}/ranger-trash; mv -- "$@" ${XDG_DATA_DIR:-$HOME/.ranger}/ranger-trash

350
.config/ranger/scope.sh Executable file
View File

@ -0,0 +1,350 @@
#!/usr/bin/env bash
set -o noclobber -o noglob -o nounset -o pipefail
IFS=$'\n'
## If the option `use_preview_script` is set to `true`,
## then this script will be called and its output will be displayed in ranger.
## ANSI color codes are supported.
## STDIN is disabled, so interactive scripts won't work properly
## This script is considered a configuration file and must be updated manually.
## It will be left untouched if you upgrade ranger.
## Because of some automated testing we do on the script #'s for comments need
## to be doubled up. Code that is commented out, because it's an alternative for
## example, gets only one #.
## Meanings of exit codes:
## code | meaning | action of ranger
## -----+------------+-------------------------------------------
## 0 | success | Display stdout as preview
## 1 | no preview | Display no preview at all
## 2 | plain text | Display the plain content of the file
## 3 | fix width | Don't reload when width changes
## 4 | fix height | Don't reload when height changes
## 5 | fix both | Don't ever reload
## 6 | image | Display the image `$IMAGE_CACHE_PATH` points to as an image preview
## 7 | image | Display the file directly as an image
## Script arguments
FILE_PATH="${1}" # Full path of the highlighted file
PV_WIDTH="${2}" # Width of the preview pane (number of fitting characters)
## shellcheck disable=SC2034 # PV_HEIGHT is provided for convenience and unused
PV_HEIGHT="${3}" # Height of the preview pane (number of fitting characters)
IMAGE_CACHE_PATH="${4}" # Full path that should be used to cache image preview
PV_IMAGE_ENABLED="${5}" # 'True' if image previews are enabled, 'False' otherwise.
FILE_EXTENSION="${FILE_PATH##*.}"
FILE_EXTENSION_LOWER="$(printf "%s" "${FILE_EXTENSION}" | tr '[:upper:]' '[:lower:]')"
## Settings
HIGHLIGHT_SIZE_MAX=262143 # 256KiB
HIGHLIGHT_TABWIDTH=${HIGHLIGHT_TABWIDTH:-8}
HIGHLIGHT_STYLE=${HIGHLIGHT_STYLE:-pablo}
HIGHLIGHT_OPTIONS="--replace-tabs=${HIGHLIGHT_TABWIDTH} --style=${HIGHLIGHT_STYLE} ${HIGHLIGHT_OPTIONS:-}"
PYGMENTIZE_STYLE=${PYGMENTIZE_STYLE:-autumn}
OPENSCAD_IMGSIZE=${RNGR_OPENSCAD_IMGSIZE:-1000,1000}
OPENSCAD_COLORSCHEME=${RNGR_OPENSCAD_COLORSCHEME:-Tomorrow Night}
handle_extension() {
case "${FILE_EXTENSION_LOWER}" in
## Archive
a|ace|alz|arc|arj|bz|bz2|cab|cpio|deb|gz|jar|lha|lz|lzh|lzma|lzo|\
rpm|rz|t7z|tar|tbz|tbz2|tgz|tlz|txz|tZ|tzo|war|xpi|xz|Z|zip)
atool --list -- "${FILE_PATH}" && exit 5
bsdtar --list --file "${FILE_PATH}" && exit 5
exit 1;;
rar)
## Avoid password prompt by providing empty password
unrar lt -p- -- "${FILE_PATH}" && exit 5
exit 1;;
7z)
## Avoid password prompt by providing empty password
7z l -p -- "${FILE_PATH}" && exit 5
exit 1;;
## PDF
pdf)
## Preview as text conversion
pdftotext -l 10 -nopgbrk -q -- "${FILE_PATH}" - | \
fmt -w "${PV_WIDTH}" && exit 5
mutool draw -F txt -i -- "${FILE_PATH}" 1-10 | \
fmt -w "${PV_WIDTH}" && exit 5
exiftool "${FILE_PATH}" && exit 5
exit 1;;
## BitTorrent
torrent)
transmission-show -- "${FILE_PATH}" && exit 5
exit 1;;
## OpenDocument
odt|ods|odp|sxw)
## Preview as text conversion
odt2txt "${FILE_PATH}" && exit 5
## Preview as markdown conversion
pandoc -s -t markdown -- "${FILE_PATH}" && exit 5
exit 1;;
## XLSX
xlsx)
## Preview as csv conversion
## Uses: https://github.com/dilshod/xlsx2csv
xlsx2csv -- "${FILE_PATH}" && exit 5
exit 1;;
## HTML
htm|html|xhtml)
## Preview as text conversion
w3m -dump "${FILE_PATH}" && exit 5
lynx -dump -- "${FILE_PATH}" && exit 5
elinks -dump "${FILE_PATH}" && exit 5
pandoc -s -t markdown -- "${FILE_PATH}" && exit 5
;;
## JSON
json)
jq --color-output . "${FILE_PATH}" && exit 5
python -m json.tool -- "${FILE_PATH}" && exit 5
;;
## Direct Stream Digital/Transfer (DSDIFF) and wavpack aren't detected
## by file(1).
dff|dsf|wv|wvc)
mediainfo "${FILE_PATH}" && exit 5
exiftool "${FILE_PATH}" && exit 5
;; # Continue with next handler on failure
esac
}
handle_image() {
## Size of the preview if there are multiple options or it has to be
## rendered from vector graphics. If the conversion program allows
## specifying only one dimension while keeping the aspect ratio, the width
## will be used.
local DEFAULT_SIZE="1920x1080"
local mimetype="${1}"
case "${mimetype}" in
## SVG
# image/svg+xml|image/svg)
# convert -- "${FILE_PATH}" "${IMAGE_CACHE_PATH}" && exit 6
# exit 1;;
## DjVu
# image/vnd.djvu)
# ddjvu -format=tiff -quality=90 -page=1 -size="${DEFAULT_SIZE}" \
# - "${IMAGE_CACHE_PATH}" < "${FILE_PATH}" \
# && exit 6 || exit 1;;
## Image
image/*)
local orientation
orientation="$( identify -format '%[EXIF:Orientation]\n' -- "${FILE_PATH}" )"
## If orientation data is present and the image actually
## needs rotating ("1" means no rotation)...
if [[ -n "$orientation" && "$orientation" != 1 ]]; then
## ...auto-rotate the image according to the EXIF data.
convert -- "${FILE_PATH}" -auto-orient "${IMAGE_CACHE_PATH}" && exit 6
fi
## `w3mimgdisplay` will be called for all images (unless overriden
## as above), but might fail for unsupported types.
exit 7;;
## Video
# video/*)
# # Thumbnail
# ffmpegthumbnailer -i "${FILE_PATH}" -o "${IMAGE_CACHE_PATH}" -s 0 && exit 6
# exit 1;;
## PDF
# application/pdf)
# pdftoppm -f 1 -l 1 \
# -scale-to-x "${DEFAULT_SIZE%x*}" \
# -scale-to-y -1 \
# -singlefile \
# -jpeg -tiffcompression jpeg \
# -- "${FILE_PATH}" "${IMAGE_CACHE_PATH%.*}" \
# && exit 6 || exit 1;;
## ePub, MOBI, FB2 (using Calibre)
# application/epub+zip|application/x-mobipocket-ebook|\
# application/x-fictionbook+xml)
# # ePub (using https://github.com/marianosimone/epub-thumbnailer)
# epub-thumbnailer "${FILE_PATH}" "${IMAGE_CACHE_PATH}" \
# "${DEFAULT_SIZE%x*}" && exit 6
# ebook-meta --get-cover="${IMAGE_CACHE_PATH}" -- "${FILE_PATH}" \
# >/dev/null && exit 6
# exit 1;;
## Font
application/font*|application/*opentype)
preview_png="/tmp/$(basename "${IMAGE_CACHE_PATH%.*}").png"
if fontimage -o "${preview_png}" \
--pixelsize "120" \
--fontname \
--pixelsize "80" \
--text " ABCDEFGHIJKLMNOPQRSTUVWXYZ " \
--text " abcdefghijklmnopqrstuvwxyz " \
--text " 0123456789.:,;(*!?') ff fl fi ffi ffl " \
--text " The quick brown fox jumps over the lazy dog. " \
"${FILE_PATH}";
then
convert -- "${preview_png}" "${IMAGE_CACHE_PATH}" \
&& rm "${preview_png}" \
&& exit 6
else
exit 1
fi
;;
## Preview archives using the first image inside.
## (Very useful for comic book collections for example.)
# application/zip|application/x-rar|application/x-7z-compressed|\
# application/x-xz|application/x-bzip2|application/x-gzip|application/x-tar)
# local fn=""; local fe=""
# local zip=""; local rar=""; local tar=""; local bsd=""
# case "${mimetype}" in
# application/zip) zip=1 ;;
# application/x-rar) rar=1 ;;
# application/x-7z-compressed) ;;
# *) tar=1 ;;
# esac
# { [ "$tar" ] && fn=$(tar --list --file "${FILE_PATH}"); } || \
# { fn=$(bsdtar --list --file "${FILE_PATH}") && bsd=1 && tar=""; } || \
# { [ "$rar" ] && fn=$(unrar lb -p- -- "${FILE_PATH}"); } || \
# { [ "$zip" ] && fn=$(zipinfo -1 -- "${FILE_PATH}"); } || return
#
# fn=$(echo "$fn" | python -c "import sys; import mimetypes as m; \
# [ print(l, end='') for l in sys.stdin if \
# (m.guess_type(l[:-1])[0] or '').startswith('image/') ]" |\
# sort -V | head -n 1)
# [ "$fn" = "" ] && return
# [ "$bsd" ] && fn=$(printf '%b' "$fn")
#
# [ "$tar" ] && tar --extract --to-stdout \
# --file "${FILE_PATH}" -- "$fn" > "${IMAGE_CACHE_PATH}" && exit 6
# fe=$(echo -n "$fn" | sed 's/[][*?\]/\\\0/g')
# [ "$bsd" ] && bsdtar --extract --to-stdout \
# --file "${FILE_PATH}" -- "$fe" > "${IMAGE_CACHE_PATH}" && exit 6
# [ "$bsd" ] || [ "$tar" ] && rm -- "${IMAGE_CACHE_PATH}"
# [ "$rar" ] && unrar p -p- -inul -- "${FILE_PATH}" "$fn" > \
# "${IMAGE_CACHE_PATH}" && exit 6
# [ "$zip" ] && unzip -pP "" -- "${FILE_PATH}" "$fe" > \
# "${IMAGE_CACHE_PATH}" && exit 6
# [ "$rar" ] || [ "$zip" ] && rm -- "${IMAGE_CACHE_PATH}"
# ;;
esac
# openscad_image() {
# TMPPNG="$(mktemp -t XXXXXX.png)"
# openscad --colorscheme="${OPENSCAD_COLORSCHEME}" \
# --imgsize="${OPENSCAD_IMGSIZE/x/,}" \
# -o "${TMPPNG}" "${1}"
# mv "${TMPPNG}" "${IMAGE_CACHE_PATH}"
# }
# case "${FILE_EXTENSION_LOWER}" in
# ## 3D models
# ## OpenSCAD only supports png image output, and ${IMAGE_CACHE_PATH}
# ## is hardcoded as jpeg. So we make a tempfile.png and just
# ## move/rename it to jpg. This works because image libraries are
# ## smart enough to handle it.
# csg|scad)
# openscad_image "${FILE_PATH}" && exit 6
# ;;
# 3mf|amf|dxf|off|stl)
# openscad_image <(echo "import(\"${FILE_PATH}\");") && exit 6
# ;;
# esac
}
handle_mime() {
local mimetype="${1}"
case "${mimetype}" in
## RTF and DOC
text/rtf|*msword)
## Preview as text conversion
## note: catdoc does not always work for .doc files
## catdoc: http://www.wagner.pp.ru/~vitus/software/catdoc/
catdoc -- "${FILE_PATH}" && exit 5
exit 1;;
## DOCX, ePub, FB2 (using markdown)
## You might want to remove "|epub" and/or "|fb2" below if you have
## uncommented other methods to preview those formats
*wordprocessingml.document|*/epub+zip|*/x-fictionbook+xml)
## Preview as markdown conversion
pandoc -s -t markdown -- "${FILE_PATH}" && exit 5
exit 1;;
## XLS
*ms-excel)
## Preview as csv conversion
## xls2csv comes with catdoc:
## http://www.wagner.pp.ru/~vitus/software/catdoc/
xls2csv -- "${FILE_PATH}" && exit 5
exit 1;;
## Text
text/* | */xml)
## Syntax highlight
if [[ "$( stat --printf='%s' -- "${FILE_PATH}" )" -gt "${HIGHLIGHT_SIZE_MAX}" ]]; then
exit 2
fi
if [[ "$( tput colors )" -ge 256 ]]; then
local pygmentize_format='terminal256'
local highlight_format='xterm256'
else
local pygmentize_format='terminal'
local highlight_format='ansi'
fi
env HIGHLIGHT_OPTIONS="${HIGHLIGHT_OPTIONS}" highlight \
--out-format="${highlight_format}" \
--force -- "${FILE_PATH}" && exit 5
env COLORTERM=8bit bat --color=always --style="plain" \
-- "${FILE_PATH}" && exit 5
pygmentize -f "${pygmentize_format}" -O "style=${PYGMENTIZE_STYLE}"\
-- "${FILE_PATH}" && exit 5
exit 2;;
## DjVu
image/vnd.djvu)
## Preview as text conversion (requires djvulibre)
djvutxt "${FILE_PATH}" | fmt -w "${PV_WIDTH}" && exit 5
exiftool "${FILE_PATH}" && exit 5
exit 1;;
## Image
image/*)
## Preview as text conversion
# img2txt --gamma=0.6 --width="${PV_WIDTH}" -- "${FILE_PATH}" && exit 4
exiftool "${FILE_PATH}" && exit 5
exit 1;;
## Video and audio
video/* | audio/*)
mediainfo "${FILE_PATH}" && exit 5
exiftool "${FILE_PATH}" && exit 5
exit 1;;
esac
}
handle_fallback() {
echo '----- File Type Classification -----' && file --dereference --brief -- "${FILE_PATH}" && exit 5
exit 1
}
MIMETYPE="$( file --dereference --brief --mime-type -- "${FILE_PATH}" )"
if [[ "${PV_IMAGE_ENABLED}" == 'True' ]]; then
handle_image "${MIMETYPE}"
fi
handle_extension
handle_mime "${MIMETYPE}"
handle_fallback
exit 1

128
.config/rofi/config.rasi Executable file
View File

@ -0,0 +1,128 @@
configuration{
modi: "run,drun,window";
show-icons: true;
terminal: "alacritty";
drun-display-format: "{icon} {name}";
location: 0;
disable-history: false;
hide-scrollbar: true;
display-drun: "  Apps ";
display-run: "  Run ";
display-window: " 﩯 Window";
display-Network: " 󰤨 Network";
sidebar-mode: true;
}
@theme "/dev/null"
* {
bg-col: #24273a;
bg-col-light: #24273a;
border-col: #8AADF4;
selected-col: #24273a;
blue: #8aadf4;
fg-col: #cad3f5;
fg-col2: #ed8796;
grey: #6e738d;
width: 600;
font: "JetBrainsMono Nerd Font 14";
}
element-text, element-icon , mode-switcher {
background-color: inherit;
text-color: inherit;
}
window {
height: 360px;
border: 2px;
border-color: @border-col;
background-color: @bg-col;
}
mainbox {
background-color: @bg-col;
}
inputbar {
children: [prompt,entry];
background-color: @bg-col;
border-radius: 5px;
padding: 2px;
}
prompt {
background-color: @blue;
padding: 6px;
text-color: @bg-col;
border-radius: 3px;
margin: 20px 0px 0px 20px;
}
textbox-prompt-colon {
expand: false;
str: ":";
}
entry {
padding: 6px;
margin: 20px 0px 0px 10px;
text-color: @fg-col;
background-color: @bg-col;
}
listview {
border: 0px 0px 0px;
padding: 6px 0px 0px;
margin: 10px 0px 0px 20px;
columns: 2;
lines: 10;
background-color: @bg-col;
}
element {
padding: 5px;
background-color: @bg-col;
text-color: @fg-col ;
}
element-icon {
size: 35px;
}
element selected {
background-color: @selected-col ;
text-color: @fg-col2 ;
}
mode-switcher {
spacing: 0;
}
button {
padding: 10px;
background-color: @bg-col-light;
text-color: @grey;
vertical-align: 0.5;
horizontal-align: 0.5;
}
button selected {
background-color: @bg-col;
text-color: @blue;
}
message {
background-color: @bg-col-light;
margin: 2px;
padding: 2px;
border-radius: 5px;
}
textbox {
padding: 6px;
margin: 20px 0px 0px 20px;
text-color: @blue;
background-color: @bg-col-light;
}

View File

@ -0,0 +1,68 @@
configuration {
display-emoji: "";
show-icons: false;
me-select-entry: "";
me-accept-entry: "MousePrimary";
}
* {
font: "Noto Sans 11";
text-color: #eff0eb;
background-color: #1917244D;
border-color: #00000000;
width: 684px;
height: 477px;
location: 0;
}
inputbar {
border: 0 0 1px 0;
children: [prompt,entry];
}
prompt {
font: "Noto Sans 18";
vertical-align: 0.5;
padding: 0px 9px 0px 9px;
border: 0 1px 0 0;
}
entry {
padding: 12px;
}
textbox {
background-color: #1917244D;
border-color: #1917244D;
padding: 13px 13px;
}
listview {
cycle: false;
scrollbar: false;
columns: 9;
cycle: false;
dynamic: false;
layout: vertical;
padding: 8px 10px 10px 10px;
}
element {
border-radius: 3px;
padding: 14px 0px 14px 0px;
}
element-text {
font: "Noto Color Emoji 27";
expand: false;
text-color: #333333;
horizontal-align: 1;
vertical-align: 0.5;
margin: 0px 0px 0px 13px;
width: 1px;
padding: 1px 0px 16px;
}
element selected {
background-color: #191724;
}

View File

View File

@ -0,0 +1,615 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
id="svg2"
width="240"
height="240"
viewBox="0 0 240 240"
sodipodi:docname="ddg.svg"
inkscape:version="0.92.4 5da689c313, 2019-01-14">
<metadata
id="metadata8">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs6" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1321"
inkscape:window-height="740"
id="namedview4"
showgrid="false"
inkscape:pagecheckerboard="true"
inkscape:zoom="0.4609375"
inkscape:cx="296.6541"
inkscape:cy="256"
inkscape:window-x="45"
inkscape:window-y="28"
inkscape:window-maximized="0"
inkscape:current-layer="svg2" />
<image
width="230.37288"
height="230.37288"
preserveAspectRatio="none"
xlink:href="data:image/png;base64,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
RU5ErkJggg==
"
id="image10"
x="4.8135605"
y="4.8135605" />
</svg>

After

Width:  |  Height:  |  Size: 43 KiB

View File

@ -0,0 +1,365 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
id="svg2"
width="240"
height="240"
viewBox="0 0 240 240"
sodipodi:docname="google.svg"
inkscape:version="0.92.4 5da689c313, 2019-01-14">
<metadata
id="metadata8">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs6" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1321"
inkscape:window-height="740"
id="namedview4"
showgrid="false"
inkscape:pagecheckerboard="true"
inkscape:zoom="0.49166667"
inkscape:cx="-87.457627"
inkscape:cy="240"
inkscape:window-x="45"
inkscape:window-y="28"
inkscape:window-maximized="0"
inkscape:current-layer="svg2" />
<image
width="200"
height="200"
preserveAspectRatio="none"
xlink:href="data:image/png;base64,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
6HBxqQyct9XIGLbXSE1RnYnaroPeGB7g3b+2p6h97XT/xid46RA5TM+2MQAAAtJJREFUCQuYHO2J
eSMn10nvH/aaKeN3GhntQ5yqtrQsLSx76bXlnfT6pfme4BNnTdqwWHUmokThwYhc48V5vTIbEbik
UgZ+sdtIH1xspAVMvgWUSoGBXp6a2s56w8qO3oaXBnfb8I/evRFSnYsoGXj0Idd6YtHA9qGGwK8b
hOeUvUbq0GIzLTfCEXJCpYmIPEKvq87XQ+sKRdO84d6y/xt84t5y1bmIVODBhuhbRc9NSMlvX3t+
vek9o8b0jdgrUzuWGwEPb4vTNjokOusN4Y5aw65cT/DzdjL4Vn7K+jkTJyKqOhuRFbCAiQ7jH3MG
dq3XfWfUIGX8fsM3pMr0d90nU1Kjkpcgf1+qiKK91tiUq4VKskRkY56naWlf1L5y9Ek7t6vORmRV
LGCiVipaNCGlfbD6+KgUxzdI34ga09+7SvralRuBVKffXtGvRWV70dSUrwX3Zonw5gw9tCxgyvd/
efLaT4SAqTofkZ2wgIniRUI8/MGIfnoURxtSG9oET58m03NEvfQU1ElfZq30+hpNr6Xfc5laWOaI
UDBTRGrSRLQsVYvu8GuRjX6J1aaMLLv0lK+3qs5I5BSWPhgQOc0/3x2cE/VovetNvXcUWreoQJeQ
4etgSOQaQsuKAukRqaWFoXlD0uNvkh5dAiIqNT0iNQEhBQA0SY/4bgW3XxjS8+3gM0UYhgYpBSBT
hBEFAE3KSECLhP0w6/zCrPVqZqUPxj5dmuUeYZZqArt0KbZnaaFN505Zx5sWEBERERERERERERER
ERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERER
ERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERER
ERERERERERERERERERERERERERERERERxeD/A07OTjCrltYIAAAAAElFTkSuQmCC
"
id="image10"
x="20"
y="20" />
</svg>

After

Width:  |  Height:  |  Size: 24 KiB

View File

@ -0,0 +1,75 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
id="Capa_1"
enable-background="new 0 0 515.556 515.556"
height="240"
viewBox="0 0 240 240"
width="240"
class=""
version="1.1"
sodipodi:docname="history.svg"
inkscape:version="0.92.4 5da689c313, 2019-01-14">
<metadata
id="metadata13">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs11" />
<sodipodi:namedview
pagecolor="#252525"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="1"
inkscape:pageshadow="2"
inkscape:window-width="1321"
inkscape:window-height="740"
id="namedview9"
showgrid="false"
inkscape:zoom="0.4609375"
inkscape:cx="-322.41898"
inkscape:cy="256"
inkscape:window-x="45"
inkscape:window-y="28"
inkscape:window-maximized="0"
inkscape:current-layer="Capa_1"
inkscape:pagecheckerboard="true" />
<g
id="g6"
style="opacity:0.8"
transform="matrix(0.3879307,0,0,0.3879307,20,20)">
<path
d="m 290,32.222 c -113.405,0 -207.262,84.222 -222.981,193.333 H 0 l 96.667,96.667 96.667,-96.667 H 132.146 C 147.118,152.111 212.202,96.666 290,96.666 c 88.832,0 161.111,72.28 161.111,161.111 0,88.831 -72.279,161.112 -161.111,161.112 -51.684,0 -100.6,-25.079 -130.84,-67.056 l -52.298,37.635 c 42.323,58.78 110.78,93.866 183.138,93.866 124.373,0 225.556,-101.198 225.556,-225.556 C 515.556,133.42 414.373,32.222 290,32.222 Z"
data-original="#000000"
class="active-path"
data-old_color="#000000"
id="path2"
style="fill:#ffffff"
inkscape:connector-curvature="0" />
<path
d="M 257.778,161.111 V 292.14 l 96.195,57.711 33.166,-55.256 -64.917,-38.956 v -94.527 z"
data-original="#000000"
class="active-path"
data-old_color="#000000"
id="path4"
style="fill:#ffffff"
inkscape:connector-curvature="0" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.5 KiB

View File

@ -0,0 +1,57 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
width="240"
height="240"
viewBox="0 0 24 24"
id="svg4"
sodipodi:docname="result.svg"
inkscape:version="0.92.4 5da689c313, 2019-01-14">
<metadata
id="metadata10">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs8" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1321"
inkscape:window-height="740"
id="namedview6"
showgrid="false"
inkscape:zoom="0.98333333"
inkscape:cx="-43.728814"
inkscape:cy="120"
inkscape:window-x="45"
inkscape:window-y="28"
inkscape:window-maximized="0"
inkscape:current-layer="svg4"
inkscape:pagecheckerboard="true" />
<path
d="m 9.428571,2 a 7.4285714,7.4285714 0 0 1 7.428572,7.4285714 c 0,1.8399996 -0.674286,3.5314286 -1.782857,4.8342856 l 0.308571,0.308572 h 0.902857 L 22,20.285714 20.285714,22 14.571429,16.285714 V 15.382857 L 14.262857,15.074286 C 12.96,16.182857 11.268571,16.857143 9.428571,16.857143 A 7.4285714,7.4285714 0 0 1 2,9.4285714 7.4285714,7.4285714 0 0 1 9.428571,2 m 0,2.2857143 c -2.8571424,0 -5.1428567,2.2857143 -5.1428567,5.1428571 0,2.8571426 2.2857143,5.1428576 5.1428567,5.1428576 2.857143,0 5.142858,-2.285715 5.142858,-5.1428576 0,-2.8571428 -2.285715,-5.1428571 -5.142858,-5.1428571 z"
id="path2"
inkscape:connector-curvature="0"
style="fill:#ffffff;stroke-width:1.14285707" />
</svg>

After

Width:  |  Height:  |  Size: 2.2 KiB

View File

@ -0,0 +1 @@
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="240" height="240" viewBox="0 0 24 24"><path fill="#ffffff" d="M9.5,3A6.5,6.5 0 0,1 16,9.5C16,11.11 15.41,12.59 14.44,13.73L14.71,14H15.5L20.5,19L19,20.5L14,15.5V14.71L13.73,14.44C12.59,15.41 11.11,16 9.5,16A6.5,6.5 0 0,1 3,9.5A6.5,6.5 0 0,1 9.5,3M9.5,5C7,5 5,7 5,9.5C5,12 7,14 9.5,14C12,14 14,12 14,9.5C14,7 12,5 9.5,5Z" /></svg>

After

Width:  |  Height:  |  Size: 569 B

View File

@ -0,0 +1,692 @@
#!/usr/bin/env bash
TMP_DIR="/tmp/rofi/${USER}/"
PREV_LOC_FILE="${TMP_DIR}rofi_fb_prevloc"
CURRENT_FILE="${TMP_DIR}rofi_fb_current_file"
MY_PATH="$(realpath "$0" | xargs dirname)"
HIST_FILE="${MY_PATH}/history.txt"
OPENER=xdg-open
TERM_EMU=wezterm
TEXT_EDITOR=$EDITOR
FILE_MANAGER=xdg-open
BLUETOOTH_SEND=blueman-sendto
CUR_DIR=$PWD
NEXT_DIR=""
FD_INSTALLED=$(command -v fd)
SHOW_HIDDEN=false
# Setup menu options
declare -a OPEN_FILE_LOCATION=(
"Open file location in ${TERM_EMU}"
"Open file location in ${FILE_MANAGER}"
)
declare -a RUN_COMMANDS=(
"Run"
"Execute in ${TERM_EMU}"
)
declare -a STANDARD_CONTROLS=(
"Move to trash"
"Delete"
"Back"
)
declare -a SHELL_NO_X_OPTIONS=(
"Edit"
"${OPEN_FILE_LOCATION[@]}"
"${STANDARD_CONTROLS[@]}"
)
declare -a SHELL_OPTIONS=(
"${RUN_COMMANDS[@]}"
"${SHELL_NO_X_OPTIONS[@]}"
)
declare -a BIN_NO_X_OPTIONS=(
"${OPEN_FILE_LOCATION[@]}"
"Back"
)
declare -a BIN_OPTIONS=(
"${RUN_COMMANDS[@]}"
"${BIN_NO_X_OPTIONS[@]}"
)
declare -a TEXT_OPTIONS=("${SHELL_NO_X_OPTIONS[@]}")
declare -a HTML_OPTIONS=(
"Open"
"Edit"
"${OPEN_FILE_LOCATION[@]}"
"${STANDARD_CONTROLS[@]}"
)
declare -a XCF_SVG_OPTIONS=(
"Open"
"${OPEN_FILE_LOCATION[@]}"
"${STANDARD_CONTROLS[@]}"
)
declare -a IMAGE_OPTIONS=(
"Open"
"Send via Bluetooth"
"${OPEN_FILE_LOCATION[@]}"
"${STANDARD_CONTROLS[@]}"
)
declare -a ALL_OPTIONS=()
# Combine all context menu
COMBINED_OPTIONS=(
"${SHELL_OPTIONS[@]}"
"${IMAGE_OPTIONS[@]}"
)
# Remove duplicates
ALL_OPTIONS=("$(printf '%s\n' "${COMBINED_OPTIONS[@]}" | sort -u)")
# Create tmp dir for rofi
[ ! -d "${TMP_DIR}" ] && mkdir -p "${TMP_DIR}";
# Create hist file if it doesn't exist
[ ! -f "${HIST_FILE}" ] && touch "${HIST_FILE}"
# Help message
if [ -n "$*" ] && [[ "$*" = ":help" ]]
then
echo -en "Rofi Spotlight
A Rofi with file and web searching functionality
Commands:
:help to print this help message
:h or :hidden to show hidden files/dirs
:sh or :show_hist to show search history
:ch or :clear_hist to clear search history
:xdg to jump to an xdg directory
Examples:
:xdg DOCUMENTS
:xdg DOWNLOADS
Also supports incomplete path:
Examples:
:xdg doc
:xdg down
For more info about XDG dirs, see:
\`man xdg-user-dir\`
File search syntaxes:
!<search_query> to search for a file and web suggestions
?<search_query> to search parent directories
Examples:
!half-life 3
?portal 3
Web search syntaxes:
!<search_query> to gets search suggestions
:web/:w <search_query> to also to gets search suggestions
:webbro/:wb <search_query> to search directly from your browser
Examples:
!how to install archlinux
:web how to install gentoo
:w how to make a nuclear fission
:webbro how to install wine in windowsxp
Back\0icon\x1fdraw-arrow-back\n"
exit
fi
# Return the icon string
function icon_file_type(){
icon_name=""
mime_type=$(file --mime-type -b "${1}")
case "${mime_type}" in
"inode/directory")
case "${1}" in
"Desktop/" )
icon_name='folder-blue-desktop'
;;
"Documents/" )
icon_name='folder-blue-documents'
;;
"Downloads/" )
icon_name='folder-blue-downloads'
;;
"Music/" )
icon_name='folder-blue-music'
;;
"Pictures/" )
icon_name='folder-blue-pictures'
;;
"Public/" )
icon_name='folder-blue-public'
;;
"Templates/" )
icon_name='folder-blue-templates'
;;
"Videos/" )
icon_name='folder-blue-videos'
;;
"root/" )
icon_name='folder-root'
;;
"home/" | "${USER}/")
icon_name='folder-home'
;;
*"$" )
icon_name='folder-blue'
;;
*)
icon_name='folder-blue'
;;
esac
;;
"inode/symlink" )
icon_name='inode-symlink'
;;
"audio/flac" | "audio/mpeg" )
icon_name='music'
;;
"video/mp4" )
icon_name='video-mp4'
;;
"video/x-matroska" )
icon_name=video-x-matroska
;;
"image/x-xcf" )
# notify-send '123'
icon_name='image-x-xcf'
;;
"image/jpeg" | "image/png" | "image/svg+xml")
icon_name="${CUR_DIR}/${1}"
;;
"image/gif" )
icon_name='gif'
;;
"image/vnd.adobe.photoshop" )
icon_name='image-vnd.adobe.photoshop'
;;
"image/webp" )
icon_name='gif'
;;
"application/x-pie-executable" )
icon_name='binary'
;;
"application/pdf" )
icon_name='pdf'
;;
"application/zip" )
icon_name='application-zip'
;;
"application/x-xz" )
icon_name='application-x-xz-compressed-tar'
;;
"application/x-7z-compressed" )
icon_name='application-x-7zip'
;;
"application/x-rar" )
icon_name='application-x-rar'
;;
"application/octet-stream" | "application/x-iso9660-image" )
icon_name='application-x-iso'
;;
"application/x-dosexec" )
icon_name='application-x-ms-dos-executable'
;;
"text/plain" )
icon_name='application-text'
;;
"text/x-shellscript" )
icon_name='application-x-shellscript'
;;
"text/html" )
icon_name='text-html'
;;
"font/sfnt" | "application/vnd.ms-opentype" )
icon_name='application-x-font-ttf'
;;
* )
case "${1}" in
*."docx" | *".doc" )
icon_name='application-msword'
;;
*."apk" )
icon_name='android-package-archive'
;;
* )
icon_name='unknown'
;;
esac
;;
esac
echo -en "$1\0icon\x1f$icon_name\n"
}
export -f icon_file_type
# Pass the argument to python script
function web_search() {
# Pass the search query to web-search script
"${MY_PATH}/web-search.py" "${1}"
exit;
}
# Handles the web search method
if [ ! -z "$@" ] && ([[ "$@" == ":webbro"* ]] || [[ "$@" == ":wb"* ]])
then
remove=''
[[ "$*" = ":webbro"* ]] && remove=":webbro" || remove=":wb"
# Search directly from your web browser
web_search "$(printf '%s\n' "${1//$remove/}")"
exit;
elif [ ! -z "$@" ] && ([[ "$@" == ":web"* ]] || [[ "$@" == ":w"* ]])
then
remove=''
[[ "$*" = ":web"* ]] && remove=":web" || remove=":w"
# Get search suggestions
web_search "!$(printf '%s\n' "${1//$remove/}")"
exit;
fi
function find_query() {
QUERY=${1}
if [[ ! "${QUERY}" =~ ( |\') ]]
then
if [ -z "$FD_INSTALLED" ];
then
find "${HOME}" -iname *"${QUERY}"* | sed "s/\/home\/$USER/\~/" |
awk -v MY_PATH="${MY_PATH}" '{print $0"\0icon\x1f"MY_PATH"/icons/result.svg\n"}'
else
fd -H ${QUERY} ${HOME} | sed "s/\/home\/$USER/\~/" |
awk -v MY_PATH="${MY_PATH}" '{print $0"\0icon\x1f"MY_PATH"/icons/result.svg\n"}'
fi
fi
}
# File and calls to the web search
if [ ! -z "$@" ] && ([[ "$@" == ?(\~)/* ]] || [[ "$@" == \?* ]] || [[ "$@" == \!* ]])
then
QUERY=$@
echo "${QUERY}" >> "${HIST_FILE}"
if [[ "$@" == ?(\~)/* ]]
then
[[ "$*" = \~* ]] && QUERY="${QUERY//"~"/"$HOME"}"
coproc ${OPENER} "${QUERY}" > /dev/null 2>&1
exec 1>&-
exit
elif [[ "$@" == \?* ]]
then
find_query ${QUERY#\?}
else
# Find the file
find_query ${QUERY#!}
# Web search
web_search "! ${QUERY#!}"
fi
exit;
fi
# Create notification if there's an error
function create_notification() {
case "${1}" in
"denied" )
notify-send -a "Global Search" "Permission denied!" \
'You have no permission to access '"${CUR_DIR}!"
;;
"deleted" )
notify-send -a "Global Search" "Success!" \
'File deleted!'
;;
"trashed" )
notify-send -a "Global Search" "Success!" \
'The file has been moved to trash!'
;;
"cleared" )
notify-send -a "Global Search" "Success!" \
'Search history has been successfully cleared!'
;;
* )
notify-send -a "Global Search" "Somethings wrong I can feel it!" \
'This incident will be reported!'
;;
esac
}
# Show the files in the current directory
function navigate_to() {
# process current dir.
if [ -n "${CUR_DIR}" ]
then
CUR_DIR=$(readlink -e "${CUR_DIR}")
if [ ! -d "${CUR_DIR}" ] || [ ! -r "${CUR_DIR}" ]
then
create_notification "denied"
CUR_DIR=$(realpath ${CUR_DIR} | xargs dirname)
echo "${CUR_DIR}" > "${PREV_LOC_FILE}"
else
echo "${CUR_DIR}/" > "${PREV_LOC_FILE}"
fi
pushd "${CUR_DIR}" >/dev/null || exit
fi
printf "..\0icon\x1fup\n"
if [[ -z "$FD_INSTALLED" ]]
then
#Group directories
if [[ ${SHOW_HIDDEN} == true ]]
then
for i in .*/
do
[[ -d "${i}" ]] && ([[ "${i}" != "./" ]] && [[ "${i}" != "../"* ]]) && icon_file_type "${i}"
done
fi
for i in */
do
[[ -d "${i}" ]] && icon_file_type "${i}"
done
#Group files
if [[ ${SHOW_HIDDEN} = true ]]
then
for i in .*
do
[[ -f "${i}" ]] && icon_file_type "${i}"
done
fi
for i in *
do
[[ -f "${i}" ]] && icon_file_type "${i}"
done
else
THREADS=$(getconf _NPROCESSORS_ONLN)
export CUR_DIR
if [[ ${SHOW_HIDDEN} == true ]]
then
fd -Ht d -d 1 -x bash -c 'icon_file_type "$1/"' _ {} \ | sort -V --parallel=$THREADS
fd -Ht f -d 1 -x bash -c 'icon_file_type "$1"' _ {} \ | sort -V --parallel=$THREADS
else
fd -t d -d 1 -x bash -c 'icon_file_type "$1/"' _ {} \ | sort -V --parallel=$THREADS
fd -t f -d 1 -x bash -c 'icon_file_type "$1"' _ {} \ | sort -V --parallel=$THREADS
fi
fi
}
# Set XDG dir
function return_xdg_dir() {
target_dir=${1^^}
if [[ "HOME" == *"${target_dir}"* ]]
then
CUR_DIR=$(xdg-user-dir)
elif [[ "DESKTOP" == *"${target_dir}"* ]]
then
CUR_DIR=$(xdg-user-dir DESKTOP)
elif [[ "DOCUMENTS" == *"${target_dir}"* ]]
then
CUR_DIR=$(xdg-user-dir DOCUMENTS)
elif [[ "DOWNLOADS" == *"${target_dir}"* ]]
then
CUR_DIR=$(xdg-user-dir DOWNLOAD)
elif [[ "MUSIC" == *"${target_dir}"* ]]
then
CUR_DIR=$(xdg-user-dir MUSIC)
elif [[ "PICTURES" == *"${target_dir}"* ]]
then
CUR_DIR=$(xdg-user-dir PICTURES)
elif [[ "PUBLICSHARE" == *"${target_dir}"* ]]
then
CUR_DIR=$(xdg-user-dir PUBLICSHARE)
elif [[ "TEMPLATES" == *"${target_dir}"* ]]
then
CUR_DIR=$(xdg-user-dir TEMPLATES)
elif [[ "VIDEOS" == *"${target_dir}"* ]]
then
CUR_DIR=$(xdg-user-dir VIDEOS)
elif [[ "ROOT" == *"${target_dir}"* ]]
then
CUR_DIR="/"
else
CUR_DIR="${HOME}"
fi
navigate_to
exit;
}
# Show and Clear History
if [ ! -z "$@" ] && ([[ "$@" == ":sh" ]] || [[ "$@" == ":show_hist" ]])
then
hist=$(tac "${HIST_FILE}")
echo -en "Back\0icon\x1fdraw-arrow-back\n"
[ -z "${hist}" ] && echo -en "No History Yet\0icon\x1ftext-plain\n"
while IFS= read -r line;
do
echo -en "${line}\0icon\x1f${MY_PATH}/icons/history.svg\n";
done <<< "${hist}"
exit;
elif [ ! -z "$@" ] && ([[ "$@" == ":ch" ]] || [[ "$@" == ":clear_hist" ]])
then
:> "${HIST_FILE}"
create_notification "cleared"
CUR_DIR="${HOME}"
navigate_to
exit;
fi
# Accepts XDG command
if [[ ! -z "$@" ]] && [[ "$@" == ":xdg"* ]]
then
NEXT_DIR=${*//":xdg "/}
[[ -n "$NEXT_DIR" ]] && return_xdg_dir "${NEXT_DIR}" || return_xdg_dir "${HOME}"
fi
# Read last location, otherwise we default to PWD.
[ -f "${PREV_LOC_FILE}" ] && CUR_DIR=$(< "${PREV_LOC_FILE}")
if [[ ! -z "$@" ]] && ([[ "$@" == ":h" ]] || [[ "$@" == ":hidden" ]])
then
SHOW_HIDDEN=true
navigate_to
exit;
fi
# Handle argument.
[ -n "$*" ] && CUR_DIR="${CUR_DIR}/$*"
# Context Menu
if [ -n "$*" ] && [[ "${ALL_OPTIONS[*]} " = *"$*"* ]]
then
case "${1}" in
"Run" )
coproc ( eval "$(< ${CURRENT_FILE})" & > /dev/null 2>&1 )
kill -9 $(pgrep rofi)
;;
"Execute in ${TERM_EMU}" )
coproc ( eval "${TERM_EMU} \"$(< ${CURRENT_FILE})\"" & > /dev/null 2>&1 )
kill -9 $(pgrep rofi)
;;
"Open" )
coproc ( eval "${OPENER} \"$(< ${CURRENT_FILE})\"" & > /dev/null 2>&1 )
kill -9 $(pgrep rofi)
;;
"Open file location in ${TERM_EMU}" )
file_path="$(< ${CURRENT_FILE})"
coproc ( ${TERM_EMU} bash -c "cd ${file_path%/*} ; ${SHELL}" & > /dev/null 2>&1 )
kill -9 $(pgrep rofi)
;;
"Open file location in ${FILE_MANAGER}" )
file_path="$(< "${CURRENT_FILE}")"
coproc ( eval "${FILE_MANAGER} "${file_path%/*}"" & > /dev/null 2>&1 )
kill -9 $(pgrep rofi)
;;
"Edit" )
coproc ( eval "${TERM_EMU} ${TEXT_EDITOR} \"$(< ${CURRENT_FILE})\"" & > /dev/null 2>&1 )
kill -9 $(pgrep rofi)
;;
"Move to trash" )
coproc( gio trash "$(< ${CURRENT_FILE})" & > /dev/null 2>&1 )
create_notification "trashed"
CUR_DIR="$(dirname "$(< ${CURRENT_FILE})")"
navigate_to
;;
"Delete" )
shred "$(< ${CURRENT_FILE})"
rm "$(< ${CURRENT_FILE})"
create_notification "deleted"
CUR_DIR="$(dirname "$(< ${CURRENT_FILE})")"
navigate_to
;;
"Send via Bluetooth" )
rfkill unblock bluetooth && bluetoothctl power on
sleep 1
blueman-sendto "$(< ${CURRENT_FILE})" & > /dev/null 2>&1
kill -9 $(pgrep rofi)
;;
"Back" )
CUR_DIR="$(< ${PREV_LOC_FILE})"
navigate_to
;;
esac
exit;
fi
function context_menu_icons() {
if [[ "${1}" == "Run" ]]
then
echo '\0icon\x1fsystem-run\n'
elif [[ "${1}" == "Execute in ${TERM_EMU}" ]]
then
echo "\0icon\x1f${TERM_EMU}\n"
elif [[ "${1}" == "Open" ]]
then
echo "\0icon\x1futilities-x-terminal\n"
elif [[ "${1}" == "Open file location in ${TERM_EMU}" ]]
then
echo "\0icon\x1f${TERM_EMU}\n"
elif [[ "${1}" == "Open file location in ${FILE_MANAGER}" ]]
then
echo "\0icon\x1fblue-folder-open\n"
elif [[ "${1}" == "Edit" ]]
then
echo "\0icon\x1faccessories-text-editor\n"
elif [[ "${1}" == "Move to trash" ]]
then
echo "\0icon\x1fapplication-x-trash\n"
elif [[ "${1}" == "Delete" ]]
then
echo "\0icon\x1findicator-trashindicator\n"
elif [[ "${1}" == "Send via Bluetooth" ]]
then
echo "\0icon\x1fbluetooth\n"
elif [[ "${1}" == "Back" ]]
then
echo "\0icon\x1fback\n"
fi
}
function print_context_menu() {
declare -a arg_arr=("${!1}")
for menu in "${arg_arr[@]}"
do
printf "$menu$(context_menu_icons "${menu}")\n"
done
}
function context_menu() {
type="$(file --mime-type -b "${CUR_DIR}")"
if [ -w "${CUR_DIR}" ] && [[ "${type}" == "text/x-shellscript" ]]
then
if [ -x "${CUR_DIR}" ];
then
print_context_menu SHELL_OPTIONS[@]
else
print_context_menu SHELL_NO_X_OPTIONS[@]
fi
elif [[ "${type}" == "application/x-executable" ]] || [[ "${type}" == "application/x-pie-executable" ]]
then
if [ -x "${CUR_DIR}" ]
then
print_context_menu BIN_OPTIONS[@]
else
print_context_menu BIN_NO_X_OPTIONS[@]
fi
elif [[ "${type}" == "text/plain" ]]
then
print_context_menu TEXT_OPTIONS[@]
elif [[ "${type}" == "text/html" ]]
then
print_context_menu HTML_OPTIONS[@]
elif [[ "${type}" == "image/jpeg" ]] || [[ "${type}" == "image/png" ]]
then
print_context_menu IMAGE_OPTIONS[@]
elif [[ "${type}" == "image/x-xcf" ]] || [[ "${type}" == "image/svg+xml" ]]
then
print_context_menu XCF_SVG_OPTIONS[@]
elif [ ! -w "${CUR_DIR}" ] && [[ "${type}" == "text/x-shellscript" ]]
then
coproc ( exec "${CUR_DIR}" & > /dev/null 2>&1 )
else
if [ ! -d "${CUR_DIR}" ] && [ ! -f "${CUR_DIR}" ]
then
QUERY="${CUR_DIR//*\/\//}"
echo "${QUERY}" >> "${HIST_FILE}"
find_query "${QUERY#!}"
web_search "!${QUERY}"
else
coproc ( ${OPENER} "${CUR_DIR}" & > /dev/null 2>&1 )
fi
fi
exit;
}
# If argument is not a directory/folder
if [ ! -d "${CUR_DIR}" ]
then
echo "${CUR_DIR}" > "${CURRENT_FILE}"
context_menu
exit;
fi
navigate_to

View File

@ -0,0 +1,162 @@
configuration {
font: "Inter Regular 10";
sidebar-mode: true;
show-icons: true;
icon-theme: "Nordzy";
fullscreen: false;
threads: 0;
matching: "fuzzy";
scroll-method: 0;
monitor: "primary";
}
* {
transparent: #00000000;
foreground: #F2F2F2EE;
background-selected: #F2F2F245;
background-active: #F2F2F230;
background-white: #F2F2F211;
background-black: #00000000;
urgent: #E91E6366;
urgent-selected: #E91E6377;
}
window {
transparency: "real";
background-color: #1917244D;
text-color: #6e6a86;
location: west;
anchor: west;
x-offset: 5px;
y-offset: -50px;
height: 70%;
width: 350px;
orientation: vertical;
}
prompt {
enabled: false;
}
button {
action: "ok";
str: " ";
font: "FantasqueSansMono Nerd Font 16";
expand: false;
text-color: #6e6a86;
background-color: @transparent;
vertical-align: 0.5;
horizontal-align: 0.5;
}
entry {
font: "Inter Regular 12";
background-color: @transparent;
text-color: #6e6a86;
expand: true;
vertical-align: 0.5;
horizontal-align: 0;
placeholder: "Global Search";
placeholder-color: @foreground;
blink: true;
}
entry-wrapper {
orientation: horizontal;
margin: 0 12px 0 12px;
spacing: 24px;
vertical-align: 0.5;
background-color: @transparent;
children: [ button, entry ];
}
inputbar {
padding: 14px;
margin: 10px 10px 14px 10px;
background-color: #26233a;
text-color: @foreground;
expand: false;
border-radius: 9px;
position: north;
children: [ entry-wrapper ];
}
listview {
background-color: @transparent;
spacing: 0;
cycle: true;
dynamic: true;
scrollbar: true;
}
mainbox {
width: 200px;
expand: true;
spacing: 12px;
padding: 5px;
background-color: @background-black;
children: [ inputbar, listview ];
}
scrollbar {
background-color: @background-white;
handle-width: 0;
margin: 0 0 5px 0;
border-radius: 9px;
}
element {
background-color: @transparent;
text-color: @foreground;
orientation: horizontal;
border: 0;
border-color: @background-white;
border-radius: 6px;
spacing: 24px;
margin: 0px 12px 0px 12px;
padding: 10px 24px 10px 24px;
}
element-icon {
size: 24px;
border: 0;
border-color: @transparent;
background-color: transparent;
}
element-text {
font: "Inter Regular 11";
expand: true;
horizontal-align: 0;
vertical-align: 0.5;
color: #6e6a86;
background-color: transparent;
}
element normal.urgent,
element alternate.urgent {
background-color: @urgent;
text-color: @foreground;
border-radius: 9px;
}
element normal.active,
element alternate.active {
background-color: @background-active;
text-color: @foreground;
}
element selected {
background-color: #403d5220;
text-color: @foreground;
}
element selected.urgent {
background-color: @urgent-selected;
text-color: @foreground;
}
element selected.active {
background-color: #403d5220;
color: @foreground-selected;
}

167
.config/rofi/global/web-search.py Executable file
View File

@ -0,0 +1,167 @@
#!/usr/bin/env python3
# MIT License
# Copyright (c) 2019 Paolo Donadeo
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
# The above copyright notice and this permission notice shall be included in all
# copies or substantial portions of the Software.
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
import json
import re
import urllib.parse
import urllib.request
import sys
import os
import datetime
import gzip
import subprocess as sp
import html
################################################################################
##### C O N F I G U R A T I O N ######
################################################################################
SEARCH_ENGINE = 'google' # or 'duckduckgo'
BROWSER = 'firefox' # or 'firefox', 'chromium', 'brave', 'lynx'
TERMINAL = ['kitty', '--'] # or ['st', '-e'] or something like that
################################################################################
CONFIG = {
'BROWSER_PATH' : {
'chrome' : ['google-chrome-stable'],
'firefox' : ['firefox'],
'chromium' : ['chromium-browser'],
'brave' : ['brave-browser'],
'lynx' : TERMINAL + ['lynx']
},
'USER_AGENT' : {
'chrome' : 'Mozilla/5.0 (X11; Fedora; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
'firefox' : 'Mozilla/5.0 (X11; Fedora; Linux x86_64; rv:69.0) Gecko/20100101 Firefox/69.0',
'chromium' : 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/76.0.3809.100 Chrome/76.0.3809.100 Safari/537.36',
'brave' : 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36',
'lynx' : 'Lynx/2.8.9rel.1 libwww-FM/2.14 SSL-MM/1.4.1 OpenSSL/1.1.1d'
},
'SEARCH_ENGINE_NAME' : {
'google' : 'Google',
'duckduckgo' : 'DuckDuckGo'
},
'SEARCH_URL' : {
'google' : 'https://www.google.com/search?q=',
'duckduckgo' : 'https://duckduckgo.com/?q='
},
'SUGGESTION_URL' : {
'google' : 'https://www.google.com/complete/search?',
'duckduckgo' : 'https://duckduckgo.com/ac/?'
}
}
def cleanhtml(txt):
return re.sub(r'<.*?>', '', txt)
def fetch_suggestions(search_string):
if SEARCH_ENGINE == 'google':
r = {
'q' : search_string,
'cp' : '11',
'client' : 'psy-ab',
'xssi' : 't',
'gs_ri' : 'gws-wiz',
'hl' : 'en-IT',
'authuser' : '0'
}
url = CONFIG['SUGGESTION_URL'][SEARCH_ENGINE] + urllib.parse.urlencode(r)
headers = {
'sec-fetch-mode' : 'cors',
'dnt' : '1',
'accept-encoding' : 'gzip',
'accept-language' : 'en-US;q=0.9,en;q=0.8',
'pragma' : 'no-cache',
'user-agent' : CONFIG['USER_AGENT'][BROWSER],
'accept' : '*/*',
'cache-control' : 'no-cache',
'authority' : 'www.google.com',
'referer' : 'https://www.google.com/',
'sec-fetch-site' : 'same-origin'
}
req = urllib.request.Request(url, headers=headers, method='GET')
reply_data = gzip.decompress(urllib.request.urlopen(req).read()).split(b'\n')[1]
reply_data = json.loads(reply_data)
return [ cleanhtml(res[0]).strip() for res in reply_data[0] ]
else: # 'duckduckgo'
if search_string.startswith('!'):
bang_search = True
search_string = search_string.lstrip('!')
else:
bang_search = False
r = {
'q' : search_string,
'callback' : 'autocompleteCallback',
'kl' : 'wt-wt',
'_' : str(int((datetime.datetime.now().timestamp())*1000))
}
url = CONFIG['SUGGESTION_URL'][SEARCH_ENGINE] + urllib.parse.urlencode(r)
if bang_search:
url = url.replace('?q=', '?q=!')
headers = {
'pragma' : 'no-cache',
'dnt' : '1',
'accept-encoding' : 'gzip',
'accept-language' : 'en-US;q=0.9,en;q=0.8',
'user-agent' : CONFIG['USER_AGENT'][BROWSER],
'sec-fetch-mode' : 'no-cors',
'accept' : '*/*',
'cache-control' : 'no-cache',
'authority' : 'duckduckgo.com',
'referer' : 'https://duckduckgo.com/',
'sec-fetch-site' : 'same-origin',
}
req = urllib.request.Request(url, headers=headers, method='GET')
reply_data = gzip.decompress(urllib.request.urlopen(req).read()).decode('utf8')
reply_data = json.loads(re.match(r'autocompleteCallback\((.*)\);', reply_data).group(1))
return [ cleanhtml(res['phrase']).strip() for res in reply_data ]
def main():
search_string = html.unescape((' '.join(sys.argv[1:])).strip())
path_str = os.path.dirname(os.path.realpath(__file__)) + '/'
icon_path_str = path_str + 'icons/'
icon_name = icon_path_str
if SEARCH_ENGINE == 'google':
icon_name += 'google.svg'
else:
icon_name += 'ddg.svg'
if search_string.startswith('!'):
search_string = search_string.rstrip('!').strip()
results = fetch_suggestions(search_string)
for r in results:
print(":wb " + html.unescape(r) + "\0icon\x1f"+icon_name+"\n")
else:
url = CONFIG['SEARCH_URL'][SEARCH_ENGINE] + urllib.parse.quote_plus(search_string)
sp.Popen(CONFIG['BROWSER_PATH'][BROWSER] + [url], stdout=sp.DEVNULL, stderr=sp.DEVNULL, shell=False)
if __name__ == "__main__":
try:
main()
except Exception as e:
if e:
sys.exit(1)

186
.config/rofi/power.rasi Executable file
View File

@ -0,0 +1,186 @@
* {
/* Default background color */
background-color: #282738;
text-color: #E5B9C6;
font: "JetBrainsMono Bold 10";
}
window {
border-color: #282738;
border: 5px;
border-radius: 10px;
background-color: #282738;
width: 300px;
}
mainbox {
spacing: 0px;
children: [message,listview];
}
message {
enabled: true;
margin: 0px 50px;
padding: 15px;
border: 0px solid;
border-radius: 15px;
border-color: inherit;
background-color: inherit;
text-color: inherit;
size: 300em;
}
textbox {
background-color: inherit;
text-color: inherit;
vertical-align: 0.5;
horizontal-align: 0.5;
placeholder-color: inherit;
blink: true;
markup: true;
size: 400em;
font: "JetBrainsMono Bold 15";
}
error-message {
padding: 12px;
border: 0px solid;
border-radius: 0px;
border-color: inherit;
background-color: inherit;
text-color: inherit;
}
element {
background: transparent;
children: [ element-icon, element-text ];
}
element,element-text,element-icon, button {
cursor: pointer;
}
listview, message {
padding: 0.5em;
border-color: #282738;
border: 5px;
border-radius: 10px;
background-color: #282738;
columns: 1;
lines: 4;
}
listview {
border: 5px 5px 5px 5px;
border-radius: 10px 10px 10px 10px;
background-color: #353446;
border-color: #282738;
font: "JetBrains Mono Medium";
scrollbar: false;
}
element {
border: 5px;
border-radius: 5px;
padding: 5px;
border-color: #353446;
}
element-text {
background-color: #353446;
text-color: #FFFFFF;
font: "JetBrains Mono Medium";
margin: 0px 50px;
}
element normal.normal {
background-color: #353446;
text-color: #E5B9C6;
}
element.normal.urgent {
background-color: #353446;
text-color: #E5B9C6;
}
element.normal.active {
background-color: #353446;
text-color: #E5B9C6;
}
element.selected.normal {
background-color: #E5B9C6;
border-color: #E5B9C6;
text-color: #E5B9C6;
}
element.selected.urgent {
background-color: #E5B9C6;
border-color: #E5B9C6;
text-color: #E5B9C6;
}
element.selected.active {
background-color: #E5B9C6;
border-color: #E5B9C6;
text-color: #E5B9C6;
}
element.alternate.normal {
background-color: #353446;
text-color: #E5B9C6;
}
element.alternate.urgent {
background-color: #353446;
text-color: #E5B9C6;
}
element.alternate.active {
background-color: #353446;
text-color: #E5B9C6;
}
element-text.selected.normal {
background-color: #E5B9C6;
border-color: #E5B9C6;
text-color: #282738;
font: "JetBrains Mono Medium";
}
element-text.selected.urgent {
background-color: #E5B9C6;
border-color: #E5B9C6;
text-color: #282738;
font: "JetBrains Mono Medium";
}
element-text.selected.active {
background-color: #E5B9C6;
border-color: #E5B9C6;
text-color: #282738;
font: "JetBrains Mono Medium";
}
button {
text-color: #E5B9C6;
border: 0px 0px 5px ;
border-color: #282738;
border-radius: 10px 10px 0 0;
background-color: #282738;
horizontal-align: 0.5;
}
button selected.normal {
text-color: #E5B9C6;
margin: 0px;
padding: 0px;
border: 5px 5px 5px 5px ;
border-color: #282738;
border-radius: 10px 10px 10px 10px;
background-color: #353446;
}
entry {
placeholder: "Search here";
placeholder-color: #282738;
border-color: #353446;
background-color: #353446;
border: 10px;
border-radius: 2px 2px 2px 2px;
text-color: #E5B9C6;
}

Some files were not shown because too many files have changed in this diff Show More