|
× [PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。 |
|
令和SECCONに参加するのでTSURUGI Linuxを入れてみました。
fluxboxに切り替えて「fbmenugen」を使ったら「Other」に「TSURUGI」メニューが全て入ってカテゴリが分からなくなってしまいました。 仕方がないのでpythonでmateからfluxboxのmenuに変換するプログラムを作成、すっきりしましたとさ。 ■変換用python import sys
from xml.dom import minidom
from os import path
from collections import OrderedDict
APP_Directory = None
DIR_Directory = None
def main():
global APP_Directory
global DIR_Directory
if len(sys.argv)!=2:
print("Using: {} mate.conf".format(sys.argv[0]))
return
fileName = sys.argv[1]
APP_Directory = path.abspath(path.dirname(fileName)+"/../applications")
DIR_Directory = path.abspath(path.dirname(fileName)+"/../desktop-directories")
print(fileName)
with open(fileName, "r", True, "UTF-8") as r:
x = "\n".join(r.readlines())
myDom = minidom.parseString(x)
recurseDict(myDom, 0, [])
def recurseDict(dic, layer, stack):
#dic = minidom.parseString("")
layer+=1
if sum(1 for x in dic.childNodes if not isinstance(x, minidom.Text)):
if dic.nodeName != "Layout":
for d in dic.childNodes:
if not isinstance(d, minidom.Text):
recurseDict(d, layer, stack)
else:
if dic.nodeName == "Directory":
lidx = 0
for lidx in range(len(stack), 0, -1):
if layer > stack[lidx-1][0]:
break
for _ in range(lidx, len(stack)):
stack.pop()
print("{}[end]".format(" "*(len(stack)*2)))
v = readFile(DIR_Directory+"/"+dic.childNodes[0].nodeValue)
print("{}[submenu] ({}) <{}>".format(" "*(len(stack)*2), v["Name"], v["Icon"]))
stack.append((layer, v))
if dic.nodeName == "Filename":
v = readFile(APP_Directory+"/"+dic.childNodes[0].nodeValue)
print("{}[exec] ({}) {{{}}} <{}>".format(" "*(len(stack)*2), v["Name"], v["Exec"], v["Icon"]))
if layer==1:
for _ in range(len(stack)):
stack.pop()
print("{}[end]".format(" "*(len(stack)*2)))
def readFile(fileName):
with open(fileName, "r", True, "UTF-8") as r:
rec=dict()
while True:
line = r.readline()
if line=="":
break
line = line[:-1]
pos = line.find("=")
if pos >=0:
key = line[0:pos]
if ["Icon", "Name", "Exec"].count(key):
rec[key] = line[pos+1:]
return rec
if __name__ == "__main__":
main()
■fbmenugenにinclude機能を追加
diff --git a/fbmenugen b/fbmenugen
index 84e268b..fa5e784 100755
--- a/fbmenugen
+++ b/fbmenugen
@@ -401,6 +401,14 @@ ITEM_WITH_ICON
ITEM
}
+sub prepare_include {
+ my $path= shift() =~ s/\)/\\)/gr;
+
+ return <<"EOF"
+ [include] ($path)
+EOF
+}
+
sub begin_category {
$with_icons
? <<"MENU_WITH_ICON"
@@ -479,6 +487,9 @@ foreach my $schema (@$SCHEMA) {
elsif (exists $schema->{item}) {
$generated_menu .= prepare_item(@{$schema->{item}});
}
+ elsif (exists $schema->{include}) {
+ $generated_menu .= prepare_include(@{$schema->{include}});
+ }
elsif (exists $schema->{sep}) {
$generated_menu .= "[separator]\n";
}
diff --git a/schema.pl b/schema.pl
index 18a824a..50ae0dd 100644
--- a/schema.pl
+++ b/schema.pl
@@ -5,6 +5,7 @@
=for comment
item: add an item inside the menu {item => ["command", "label", "icon"]},
+ include: add include another file {include => ["path"]},
cat: add a category inside the menu {cat => ["name", "label", "icon"]},
sep: horizontal line separator {sep => undef}, {sep => "label"},
raw: any valid Fluxbox menu entry {raw => q(...)},
|
|
CUPSのいつもの設定
■/etc/cups/cupsd.conf ...
# Restrict access to the admin pages...
<Location /admin>
Require user @SYSTEM
Order allow,deny
</Location>
...
■cups-pdfのインストール sudo apt install cups-pdf ■/etc/cups/cups-pdf.conf ...
### Key: Out (config)
## CUPS-PDF output directory
## special qualifiers:
## ${HOME} will be expanded to the user's home directory
## ${USER} will be expanded to the user name
## in case it is an NFS export make sure it is exported without
## root_squash!
## on Ubuntu, the cupsd AppArmor profile needs to be updated
## to match the output path as per instructions in LP:147551
### Default: /var/spool/cups-pdf/${USER}
Out${HOME}
...
### Key: GSCall (config)
## command line for calling GhostScript (!!! DO NOT USE NEWLINES !!!)
## MacOSX: for using pstopdf set this to %s %s -o %s %s
### Default: %s -q -dCompatibilityLevel=%s -dNOPAUSE -dBATCH -dSAFER -sDEVICE=pdfwrite -sOutputFile="%s" -dAutoRotatePages=/PageByPage -dAutoFilterColorImages=false -dColorImageFilter=/FlateEncode -dPDFSETTINGS=/prepress -c .setpdfwrite -f %s
GSCall /usr/local/bin/cups-pdf-common %s %s "%s" %s
...
■/usr/local/bin/cups-pdf-common #!/bin/bash
export MY_GS=$1
export MY_VER=$2
HOME=$(dirname "$3")
USER=$(basename ${HOME})
export MY_IN=$4
export MY_OUT=$(basename "$3")
execpath=~/bin/cups-pdf
if [ -f ${execpath} ]
then
${execpath}
fi
■~/bin/cups-pdf #!/bin/bash
#Ps2PDF
${MY_GS} -q -dCompatibilityLevel=${MY_VER} -dNOPAUSE -dBATCH -dSAFER -sDEVICE=pdfwrite -sOutputFile="${HOME}/PDF/$(date +%Y%m%d_%H%M%S.%N)_${MY_OUT}" -dAutoRotatePages=/PageByPage -dAutoFilterColorImages=false -dColorImageFilter=/FlateEncode -dPDFSETTINGS=/prepress -c .setpdfwrite -f ${MY_IN}
|
|
GRUB2でメニューの表示の仕方
※GRUB_HIDDEN_TIMEOUT_QUIETは関係ありません。 /etc/default/grub GRUB_DEFAULT=0 GRUB_DISABLE_SUBMENU=y GRUB_TIMEOUT_STYLE=menu GRUB_TIMEOUT=3 |
|
リカバリの仕方
# mount -t /dev/mapper/VG-LV root # mount --bind /dev root/dev # mount -t tmpfs tmpfs root/run # mount -t proc proc root/proc # mount -t sysfs sysfs root/sys # chroot root■参考文献 http://www.linuxfromscratch.org/lfs/view/stable-systemd/chapter06/kernfs.html |
|
忍者ブログ [PR] |


